{"version":3,"file":"main.46fc083c66fa6a55.js","mappings":"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B/4I,KACzE,UACC,cACD67B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwB94I,KACzE,UACC,aACD47B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwB34I,KACzE,UACC,WACDy7B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBz4I,KACzE,UACC,WACDu7B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBx4I,KACzE,UACC,YACDs7B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBppI,KACzE,UACC,iBACDksB,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBt4I,KACzE,UACC,SACDo7B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBr4I,KACzE,UACC,2BACDm7B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBr3I,KACzE,UACC,SACDm6B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBp3I,KACzE,UACC,eAiCD,IACC,qBACDk6B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBl3H,KACzE,MAlCA,IACC,aACDga,GAAmB37B,KAAK44I,yBAAyBC,wBAAwB12I,KACzE,UACC,kBACDw5B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBvrI,KACzE,UACC,0BACDquB,GAAmB37B,KAAK44I,yBAAyBC,wBAAwB1oI,KACzE,UACC,oBACDwrB,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBp1I,KACzE,UACC,mBACDk4B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBthI,KACzE,UACC,kBACDokB,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBrpI,KACzE,UACC,iBACDmsB,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBtnI,KACzE,UACC,SACDoqB,GAAmB37B,KAAK44I,yBAAyBC,wBAAwB14I,KACzE,UACC,wBAEGw7B,GADA37B,KAAK04I,+BACc14I,KAAK44I,yBAAyBC,wBAAwBjyI,KAEtD5G,KAAK44I,yBAAyBC,wBAAwBlzI,KAE7E,MAGA,IACC,iBACDg2B,GAAmB37B,KAAK44I,yBAAyBC,wBAAwBnoI,KACzE,UACC,mCACDirB,GAAmB37B,KAAK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94B,GAAU,cAAgB/nB,iBAC9B2wP,+BACA9vM,GAAU,EACN,cACA94B,GAAU,cAAgB/nB,iBAC9B2wP,kCACA9vM,GAAU,EACN,cACA94B,GAAU,cAAgB/nB,iBAC9B2wP,qCACA9vM,GAAU,EACN,cACA94B,GAAU,cAAgB/nB,iBAC9B2wP,uCACA9vM,GAAU,EACN,cACA94B,GAAU,cAAgB/nB,iBAC9B2wP,oCACA9vM,GAAU,EACN,cACA94B,GAAU,cAAgB/nB,iBAC9B2wP,iCACA9vM,GAAU,EACN,cACA94B,GAAU,cAAgB/nB,iBAC9B2wP,oCACA9vM,GAAU,EACN,kBAAYjrD,IAA0BgyE,YACtC7/C,GAAU,mBACd4oO,yCACA9vM,GAAU,EACN,WAAK,gBACL94B,GAAU,kBACVA,GAAU,2BACd4oO,qCACA9vM,GAAU,EACN,kBAAYhrD,IAAoC+xE,YAChD7/C,GAAU,mBACd4oO,mDACA9vM,GAAU,EACN,WAAK,0BACL94B,GAAU,kBACVA,GAAU,2BACd4oO,+CACA9vM,GAAU,EACN,aACA94B,GAAU,yBACd4oO,+BACA9vM,GAAU,EACN,aACA94B,GAAU,qBACVA,GAAU,8BACd4oO,2BACA9vM,GAAU,EACN,aACA94B,GAAU,uBACd4oO,iCACA9vM,GAAU,EACN,aACA94B,GAAU,wBACVA,GAAU,iCACd4oO,iCACA9vM,GAAU,EACN,aACA94B,GAAU,wBACVA,GAAU,iCACd4oO,+BACA9vM,GAAU,EACN,aACA94B,GAAU,yBACd4oO,kCACA9vM,GAAU,EACN,aACA94B,GAAU,wBACVA,GAAU,iCACd4oO,gCACA9vM,GAAU,EACN,aACA94B,GAAU,wBACVA,GAAU,iCACd4oO,gCACA9vM,GAAU,EACN,aACA94B,GAAU,yBACd4oO,iCACA9vM,GAAU,EACN,aACA94B,GAAU,wBACd4oO,iCACA9vM,GAAU,EACN,aACA94B,GAAU,yBACd4oO,gCACA9vM,GAAU,EACN,aACA94B,GAAU,wBACd4oO,oCACA9vM,GAAU,EACN,aACA94B,GAAU,wBACd4oO,kCACA9vM,GAAU,EACN,aACA94B,GAAU,uBA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GAAU,yBACd+wL,6BACAj4J,GAAU,EACN,aACA94B,GAAU,uBACd+wL,iCACAj4J,GAAU,EACN,aACA94B,GAAU,uBACd+wL,sCACAj4J,GAAU,EACN,aACA94B,GAAU,uBACd+wL,mCACAj4J,GAAU,EACN,aACA94B,GAAU,cAAgB/nB,gBAC9B84M,uCACAj4J,GAAU,EACN,aACA94B,GAAU,cAAgB/nB,gBAC9B84M,iDACAj4J,GAAU,EACN,aACA94B,GAAU,uBACd+wL,uCACAj4J,GAAU,EACN,aACA94B,GAAU,yBACd+wL,iCACAj4J,GAAU,EACN,aACA94B,GAAU,yBACd+wL,kCACAj4J,GAAU,EACN,aACA94B,GAAU,yBACd+wL,kCACAj4J,GAAU,EACN,aACA94B,GAAU,yBACd+wL,iCACAj4J,GAAU,EACN,aACA94B,GAAU,yBACd+wL,kCACAj4J,GAAU,EACN,aACA94B,GAAU,yBACd+wL,gCACAj4J,GAAU,EACN,aACA94B,GAAU,yBACd+wL,mCACAA,GAAyBj4J,GAAU,CAAG94B,GAAU,wBAChDgjH,GACAD,GACAwhF,GACA52N,GACAC,GACA0pI,GACQr/H,uBACR84M,IAuBA,aACA1oN,iBACAG,gBACAA,YAIAA,2BAAqCyP,eACrCzP,uBAAiC+V,KACjC/V,mBACAgiR,oCACAC,iCAEAjiR,qBACAA,mDACAmG,+BACA,UACAnG,oDACAqI,MAAkB,QAAM,6DAAkE,QAAGwyQ,kBAAoC,QAAS,6BAA+B,QAAI,MAC7K10Q,iDACAnG,sDAKAmyF,iBACAnyF,0BAMAkiR,kBACA,yBAEAA,mBACAliR,oBAEAmiR,cACA,SACAC,iBACAC,gBACAC,WACAC,iBAEA,wDACA,SAEA,2BACA,CAAgBD,wBAChBtiR,eACA,0BAEAo0B,eACAmmP,cACAv6Q,8CACAA,2BAGAkJ,cACAlJ,iCACAA,wBAEAwiR,mBACA,qBAIAxiR,KADAkiR,kCAAiE7G,uBACjE,mBAHAr7Q,uBAKAyiR,kBACA,iCA3FAjI,GA2FAD,EA3FAA,GACAC,UAGAD,SAGAA,sBAAkCjkP,iBAAaukP,KAE/CL,MADAC,QACAG,G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B,kDACnB+5E,QAAYmY,0IAAmJ83K,SAAa4K,2CACnL/zN,GAAU,EACN,aACA94B,GAAU,wBACVA,GAAU,iCACd2uN,gCACA71L,GAAU,EACN,WAAK,YACL94B,GAAU,uBACd2uN,iCACA71L,GAAU,EACN,WAAK,2BACL94B,GAAU,uBACd2uN,iCACA71L,GAAU,EACN,aACA94B,GAAU,qBACVA,GAAU,8BACd2uN,kCACA71L,GAAU,EACN,cACA94B,GAAU,cAAgB/nB,iBAC9B02O,0CACA71L,GAAU,EACN,iBAAW,6BACX94B,GAAU,uBACVA,GAAU,yBACd2uN,4CACAA,GAAkB71L,GAAU,CAAG94B,GAAU,2BACzC2uN,KAQAq0B,GAMC9xC,aALD8xC,gBACAA,+BACAA,qCACAA,qCACAA,2BAOA,aACAA,qBACAA,yBACAA,uBAHA,CAIClzB,aAMD,aACAkzB,kBACAA,qBAFA,CAGC9nF,aAKD,SACA7yL,cACAG,kBAMAoqC,iBACApqC,kBAOAskR,qBACA,uBAOA,oBAIAzkR,iBACA8rB,QAIA3rB,gBACAupB,sBACAvpB,qBAQAukR,YACAvkR,gBAOA,oBAIAH,eACA8rB,QACApC,uBA4BA,SAIA,gBACA,MACAkxP,KACA,gBACAA,IAGAF,YACAE,MACAF,GAbA3hC,CAjBA,KACA,OAAUloO,UAAmBymB,kBAC7B,SAEA,MACAojP,gCACAA,+CACAA,mEACA9zO,6BACA,QALA,KAKA8zO,0CACA,oCACAE,IA+BA,MAyCAhoJ,oBACA,oCACA,OAGA,wBACA,WACA,OAGA,SAzoFA,MACA,WACA,YAEA,kDACA,gBACA+nJ,GAEAA,qBAioFAn9O,KACAi9O,iBACA,wBACA,OAEA,oCAUAsC,yBAEAf,YACAgI,iBACA,gBACAv8B,UAEAu0B,oBACAv0B,SAEAA,SAKA1jC,YACA,mBACA,YAEA,cACAg3D,SACAC,qBACA,oCAGAA,GAFA,MASApzC,cACAtwM,oEACAsjP,gDAQA7nJ,YACA2nJ,8CACAA,8CASAtjJ,QACU,WAAmB9/F,8BAG7BsP,iDAFA+zO,UASA56E,YACA,sBACAg7E,gBAGA,sBACA,UA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,EAAU,EACN,aACArC,EAAU,wBACd40R,mCACAvyR,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd40R,0BACAvyR,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd40R,2BACAvyR,EAAU,EACN,aACArC,EAAU,uBACd40R,iCACAvyR,EAAU,EACN,aACArC,EAAU,uBACd40R,kCACAvyR,EAAU,EACN,aACArC,EAAU,uBACVA,EAAU,gCACd40R,oCACAvyR,EAAU,EACN,aACArC,EAAU,yBACd40R,uCACAvyR,EAAU,EACN,aACArC,EAAU,uBACd40R,mCACAvyR,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd40R,mCACAvyR,EAAU,EACN,aACArC,EAAU,uBACd40R,kCACAvyR,EAAU,EACN,aACArC,EAAU,uBACd40R,iCACAvyR,EAAU,EACN,aACArC,EAAU,wBACd40R,+BACAvyR,EAAU,EACN,aACArC,EAAU,wBACd40R,+BACAvyR,EAAU,EACN,aACArC,EAAU,wBACd40R,mCACAvyR,EAAU,EACN,aACArC,EAAU,wBACd40R,gCACAvyR,EAAU,EACN,aACArC,EAAU,wBACVA,EAAU,iCACd40R,kCACAvyR,EAAU,EACN,aACArC,EAAU,wBACd40R,gCACAvyR,EAAU,EACN,aACArC,EAAU,uBACd40R,gCACAvyR,EAAU,EACN,WAAK,YACLrC,EAAU,sBACVA,EAAU,+BACd40R,8BACAvyR,EAAU,EACN,aACArC,EAAU,wBACd40R,kCACAvyR,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd40R,6BACAvyR,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BilR,mCACAvyR,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BilR,uCACAvyR,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BilR,oCACAvyR,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BilR,4BACAvyR,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BilR,8BACAvyR,EAAU,EACN,cACArC,EAAU,cAA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A,EAAU,iCACdytE,kCACAprE,EAAU,EACN,aACArC,EAAU,wBACdytE,gCACAprE,EAAU,EACN,aACArC,EAAU,wBACdytE,kCACAprE,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdytE,6BACAprE,EAAU,EACN,aACArC,EAAU,wBACdytE,kCACAprE,EAAU,EACN,aACArC,EAAU,uBACdytE,6BACAprE,EAAU,EACN,aACArC,EAAU,uBACVA,EAAU,gCACdytE,oCACAprE,EAAU,EACN,aACArC,EAAU,uBACdytE,gCACAprE,EAAU,EACN,WAAK,YACLrC,EAAU,sBACVA,EAAU,+BACdytE,8BACAprE,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B89D,mCACAprE,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B89D,oCACAprE,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B89D,uCACAprE,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B89D,4BACAprE,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B89D,8BACAprE,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B89D,6BACAprE,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B89D,8BACAprE,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9B89D,+BACAprE,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9B89D,8BACAprE,EAAU,EACN,kBAAYy+L,IAA0BvpH,YACtCv3E,EAAU,mBACdytE,oCACAprE,EAAU,EACN,kBAAYisL,IAA2B/2G,YACvCv3E,EAAU,mBACdytE,qCACAprE,EAAU,EACN,kBAAYksL,IAAgCh3G,YAC5Cv3E,EAAU,mBACdytE,0CACAprE,EAAU,EACN,kBAAY2yR,IAA2Bz9M,YACvCv3E,EAAU,mBACdytE,qCACAprE,EAAU,EACN,kBAAY+rL,IAA4B72G,YACxCv3E,EAAU,mBACdytE,sCACAprE,EAAU,EACN,kBAAYgsL,IAA4B92G,YACxCv3E,EAAU,mBACdytE,sCACAprE,EAA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C,EAAU,sBACVA,EAAU,+BACd24R,8BACAt2R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd24R,iCACAt2R,EAAU,EACN,aACArC,EAAU,wBACd24R,gCACAt2R,EAAU,EACN,aACArC,EAAU,wBACVA,EAAU,iCACd24R,kCACAt2R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd24R,gCACAt2R,EAAU,EACN,aACArC,EAAU,wBACd24R,gCACAt2R,EAAU,EACN,aACArC,EAAU,wBACd24R,kCACAt2R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd24R,6BACAt2R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd24R,mCACAt2R,EAAU,EACN,aACArC,EAAU,uBACd24R,kCACAt2R,EAAU,EACN,aACArC,EAAU,uBACVA,EAAU,gCACd24R,oCACAt2R,EAAU,EACN,aACArC,EAAU,wBACd24R,mCACAt2R,EAAU,EACN,aACArC,EAAU,uBACd24R,iCACAt2R,EAAU,EACN,aACArC,EAAU,wBACd24R,mCACAt2R,EAAU,EACN,aACArC,EAAU,yBACd24R,uCACAt2R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BgpR,oCACAt2R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BgpR,mCACAt2R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BgpR,4BACAt2R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BgpR,8BACAt2R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BgpR,6BACAt2R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BgpR,8BACAt2R,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9BgpR,+BACAt2R,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9BgpR,8BACAt2R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BgpR,iCACAt2R,EAAU,EACN,eAAS,aAAgBs+Q,KAAMhxQ,mBAAgB4nE,YAC/Cv3E,EAAU,cAAgB2P,qBAC9BgpR,iCACAt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U,cAAgB2P,gBAC9BwqR,qCACA93R,EAAU,EACN,eAAS,WAAck1E,YACvBv3E,EAAU,cAAgB2P,eAC9BwqR,+BACA93R,EAAU,EACN,eAAS,aAAgBs+Q,KAAMhxQ,mBAAgB4nE,YAC/Cv3E,EAAU,cAAgB2P,qBAC9BwqR,iCACA93R,EAAU,EACN,eAAS,YAAek1E,YACxBv3E,EAAU,cAAgBsgQ,IAC1BtgQ,EAAU,qBAAuBsgQ,MACrC65B,8BACA93R,EAAU,EACN,eAAS,eAAkBk1E,YAC3Bv3E,EAAU,cAAgB2P,eAC9BwqR,mCACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,4BACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,8BACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,6BACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,8BACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,kCACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,oCACA93R,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9BwqR,+BACA93R,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9BwqR,8BACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,mCACA93R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwqR,oCACA93R,EAAU,EACN,aACArC,EAAU,wBACdm6R,+BACA93R,EAAU,EACN,aACArC,EAAU,wBACdm6R,mCACA93R,EAAU,EACN,aACArC,EAAU,qBACVA,EAAU,8BACdm6R,0BACA93R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdm6R,2BACA93R,EAAU,EACN,aACArC,EAAU,uBACdm6R,iCACA93R,EAAU,EACN,aACArC,EAAU,uBACdm6R,kCACA93R,EAAU,EACN,aACArC,EAAU,uBACdm6R,kCACA93R,EAAU,EACN,aACArC,EAAU,yBACdm6R,mCACA93R,EAAU,EACN,aACArC,EAAU,yBACdm6R,qCACA93R,EAAU,EACN,aACArC,EAAU,uBACdm6R,mCACA93R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdm6R,mCACA93R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdm6R,8BACA93R,EAAU,EACN,aACArC,EAAU,uBACdm6R,kCACA93R,EAAU,EACN,aACArC,EAAU,wBACdm6R,gCACA93R,EAAU,EACN,aACArC,EAAU,wBACdm6R,gCACA93R,EAAU,EACN,aACArC,EAAU,wBACdm6R,sCACA93R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdm6R,8BACA93R,EAAU,EACN,aACArC,EAAU,yBACdm6R,oCACA93R,EAAU,EACN,aACArC,EAAU,yBACdm6R,sCACA93R,EAAU,EACN,aACArC,EAAU,yBACdm6R,qCACA93R,EAAU,EACN,aACArC,EAAU,wBACdm6R,oCACA93R,EAAU,EACN,aACArC,EAAU,wBACdm6R,kCACA93R,EAAU,EACN,aACArC,EAAU,uBACdm6R,8BACA93R,EAAU,EACN,aACArC,EAAU,uBACdm6R,mCACAA,MAAkD93R,EAAU,CAAGgP,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAMk/Q,KACpGvwR,EAAU,qBAAuBoW,MAC7BwnL,GACAjuL,YACAA,aACAA,SACAA,oBACA8B,KAAmBoqQ,WAC3Bse,IAIA,UAAmC7a,YACnC+a,IAAqC/X,kCACrCgY,UACAC,QAA8B,SAAE,IAChCC,UACAC,UAIA,gBACA16R,mCACAG,oBACAA,gBACAA,oBACAA,0BACAA,cACAA,qBACAA,YACAA,qBACAA,oBAKAA,mBAIAA,oBAOAA,oBAIAA,iBAIAA,iBAMAA,uBAKAA,qBAMAA,uBAAgC,YAMhCA,oBAOAA,mBAMAA,iBAIAA,oBAIAA,sBAKAA,sBAIAA,qBAOAA,0BAIAA,iBAA2ByP,eAI3BzP,gBAA0ByP,eAM1BzP,cAAwByP,eAIxBzP,gBAA0ByP,eAM1BzP,eAAyByP,eAIzBzP,gBAA0ByP,eAI1BzP,oBAA8ByP,eAI9BzP,sBAAgCyP,eAKhCzP,qBAA+ByP,eAK/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EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdy7R,mCACAp5R,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdy7R,uCACAp5R,EAAU,EACN,aACArC,EAAU,qBACVA,EAAU,8BACdy7R,0BACAp5R,EAAU,EACN,aACArC,EAAU,qBACVA,EAAU,8BACdy7R,2BACAp5R,EAAU,EACN,aACArC,EAAU,qBACVA,EAAU,8BACdy7R,+BACAp5R,EAAU,EACN,aACArC,EAAU,uBACdy7R,iCACAp5R,EAAU,EACN,aACArC,EAAU,uBACdy7R,kCACAp5R,EAAU,EACN,aACArC,EAAU,sBACdy7R,kCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,+BACAp5R,EAAU,EACN,aACArC,EAAU,uBACdy7R,mCACAp5R,EAAU,EACN,aACArC,EAAU,uBACdy7R,kCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,gCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,gCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,sCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,oCACAp5R,EAAU,EACN,aACArC,EAAU,uBACdy7R,mCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,mCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,kCACAp5R,EAAU,EACN,aACArC,EAAU,wBACdy7R,gCACAp5R,EAAU,EACN,aACArC,EAAU,yBACdy7R,mCACAp5R,EAAU,EACN,aACArC,EAAU,yBACdy7R,qCACAp5R,EAAU,EACN,aACArC,EAAU,yBACdy7R,sCACAp5R,EAAU,EACN,aACArC,EAAU,yBACdy7R,qCACAp5R,EAAU,EACN,aACArC,EAAU,yBACdy7R,oCACAp5R,EAAU,EACN,aACArC,EAAU,uBACdy7R,iCACAp5R,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9B8rR,+BACAp5R,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9B8rR,8BACAp5R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iB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R,iCACAx5R,EAAU,EACN,aACArC,EAAU,uBACd67R,kCACAx5R,EAAU,EACN,aACArC,EAAU,sBACd67R,kCACAx5R,EAAU,EACN,aACArC,EAAU,uBACd67R,+BACAx5R,EAAU,EACN,aACArC,EAAU,mBACd67R,gCACAx5R,EAAU,EACN,aACArC,EAAU,mBACd67R,qCACAx5R,EAAU,EACN,aACArC,EAAU,wBACd67R,gCACAx5R,EAAU,EACN,aACArC,EAAU,uBACd67R,iCACAx5R,EAAU,EACN,aACArC,EAAU,uBACd67R,0BACAx5R,EAAU,EACN,aACArC,EAAU,oBACd67R,uCACAx5R,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BksR,iCAKA,iBAAuBpqR,MAiBvB,OAfAmrR,wBAA4C,OAA2B,mBAAsC,eAA0DjtR,kCAA4BitR,cAAnM,GACAA,aAA8BjtR,8BAAwB,CAAG7H,gBAA0B+0R,6EAAkFhjB,UAAalqQ,0CAClLtN,EAAU,EACN,aACArC,EAAU,uBACd48R,kCACAv6R,EAAU,EACN,aACArC,EAAU,uBACd48R,kCACAv6R,EAAU,EACN,aACArC,EAAU,uBACd48R,oCAMA,2BACA78R,eACA8rB,QACA3rB,iBAaA,OAVAqqE,yBAAmF,kBAA6C56D,8BAAyB8B,QACzJ84D,aAAgD56D,8BAAwB,CAAG7H,8VAA+Y6H,+BAAyB,CACnf,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,0CACZ46D,MAA4DloE,EAAU,CAAGrC,EAAU,qBAAuByR,QAC1G84D,IAOA,2BACAxqE,eACA8rB,QACA3rB,eAEA48R,eACA,WAGAC,yBAA6E,kBAA0CptR,8BAAyB8B,QAChJsrR,aAA6CptR,8BAAwB,CAAG7H,mQAAmS6H,+BAAyB,CACpY,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,wCAAiCggC,wCAAsF4qO,kBACnIwiB,MAAsD16R,EAAU,CAAGrC,EAAU,qBAAuByR,QACpGsrR,IAEA,MAAMC,GAAuB,CAC7BC,iBACA7lO,uBAyBA,aACAr3D,eACAG,iBAMAA,mBACAA,cAKA0C,YACA1C,i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CA2N,EAEA3N,EAKAz2P,aACAy2P,sCAKAx2P,UAmBAG,aACAqiB,2BAKApiB,cACA,MAAYm5D,iCAA0Bi9L,EACtCK,GAnBA,MACA,mCACAL,2BACA,OACAorB,iEACAzyQ,+DAcAjP,IAGA82P,IAFAL,uCACAD,yCAEA,yBACA,yBACA,sBAtEA,UACA,MAAYqkC,0BAAsB52B,EAClCxN,eACA,WACA,UAEA,kBACAE,YACA,kBACAgkC,GAEAhkC,iBACAA,GAEAD,IAyDAt5P,QAKA+C,OACAw6R,2FAKAv6R,OACA2hC,gBAKA1hC,OACAV,gBAKAsB,OACA8gC,mBAKAsyL,OACA10N,mBAKAi3N,QACA,GAAQtsN,aAASqwR,gBACjB,4FAOA,SACAjgS,sBACAG,aACAA,eACAA,aACAA,iBACAA,aACAA,eACAA,aACAA,mCAEAigS,cACA,6CACAxkC,uCACAC,oBACA17P,qCAAyD07P,MACzD17P,qCAEAkgS,iBACA,6CACA,mCAAmElgS,wBACnEA,qBACAA,sBAGAmgS,gBACA,6CACA1kC,iBACAC,6BACAD,IACAC,mBAGAqkC,aACA,iCACA75P,eAEAlmC,2CAEAogS,eACA,MAAgB5hO,yBAAsBx+D,WACtC27P,aACAC,qBACAC,cACAC,MACA,SACAE,KACA,aAAwBC,MAAWA,MAEnCD,IADA,kBACAN,OAGAA,KAGAM,sBACA,2BACAF,YACAC,OAEA,gBACAD,oBAEAA,GAEAukC,iBACA,gDAEA1kC,QADAokC,aACAtkC,EACA,WACA,2CACA2N,sBAAiDxN,QAGjD0kC,iBACA,MAAgBC,YAAWvgS,WAC3B07P,sBACA,sCAEA8kC,eACA,MAAgBD,YAAWvgS,WAC3B,uCAOA,oBACAygS,kBACA,MAAgB34P,oCAA8B9nC,WAC9C67P,sBACAC,qBACAC,4BACA/7P,wBACAw+D,MACA12B,MACAi5E,WACA/8F,SACA+7Q,gBAEA//R,+BAAwDA,yBAExD0gS,qBACA,MAAgB3/K,sBAAoB/gH,WACpC27P,sBACA,2BACAF,IACAG,yBAEA57P,+BAAwD47P,SAIxD,MAKA8mB,mBAJA,kCAIAn6D,+BAIA,uBACA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qBAEA97P,qBACAA,sBACAA,qBACAA,mCACAA,oBACgBqwD,MAAYrwD,iCAC5BA,qBACAA,iBACAA,mCACAA,sBAuBA8S,QACA9S,qCACA+gS,iCACA/gS,qCAKAwtJ,OACAxtJ,qCAEA+gS,GADA,0EACA,QACA/gS,kBACAA,qCAEAwC,WACAxC,aACAA,gCAEA2rB,iBAEAyI,gBACY,QAAU,mDACtBg1O,+BACArtC,yBAEA/7N,0CAAqD,QAAI,mBACzDA,wBAIA4S,oBACa,YAGb5S,qBACAA,YACAA,wBACAw/E,QACAr5E,oCAEAnG,mCAEAkJ,cACAlJ,oBACAA,iCAMA8hS,WACA,gCAKAC,gBACA,qBAA+B/hS,mBAAmBA,gBAAc,GAKhEmhS,mBACA/3B,iBACAA,iCAEA,+BACAppQ,qBACAA,uDAKAohS,gBACAphS,2CACA,+BACA07P,6CACA17P,yBAAoCQ,kBACpCR,eAA0BgkB,mBAC1B,2CACA43O,qCACAC,qCACAC,wFACAC,wFACAC,yHACAC,yBACAoE,iBACAC,OACA9S,wCAEAxtP,8BACAwtP,GACAyO,aAGAA,aAIAA,aAMAolC,mBACArhS,eAA0BgkB,wCAC1BhkB,0BAMA+9F,cACAg+H,MACA/7N,aACAA,qBAKAk+F,oBACAl+F,gBAKAo+F,qBACAp+F,iBAKAoxL,iBACApxL,aAj1CA,wCAi1CAkF,iBACAlF,qBACAA,aACAA,iBACAA,YACAA,yBAEAA,uBAOAshS,gBACA,KAAa,UACb,OAEA,mCACA7lC,2BACAC,qCACAC,sCACAC,oCACAC,qDACA77P,gEACA,yBACA+7P,gCACAA,iBACA/7P,YACA+7P,oGAEAA,sBACAA,sBACAA,2BACA/7P,qBACA+7P,mBAMAxjF,iBACA,oCAMAo7G,UACA,SAEA1F,eACAjuR,uCACAA,kBAGAuhS,gBACA,6FACA,2CACA7lC,WACA0N,SACAppQ,6BACAA,+BAGAA,gCACAA,iCAEAA,wBAGAyhS,WACA,OACAn0Q,uBACAo0Q,mCACAC,yBACA75P,aACA02B,aACAojO,uBACA7gL,qBACAksK,iCACA+S,yBACAh8Q,uCACAu8Q,uBACAp3L,YAGA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ACEA,sBAAgB,GAChBA,wBAAkB,mDAClBA,uBAAiB,mBAAjBA,CAAiB,4BAAqDA,4BAAsB,mEAC5FA,wBAAkB,yBAAlBA,CAAkB,yCAClBA,sBAAgB,GAChBA,wBAAkB,kBAClBA,sBAAgB,GAChBA,8BAAwBgsP,kBACxBhsP,sBAAgB,GAChBA,wBAAkB,kBAClBA,sBAAgB,GAChBA,8BAAwBgsP,mBACxBhsP,sBAAgB,GAChBA,wBAAkB,qDACnB+wQ,sBAA4B,UAA0CnwN,OAAwCgqN,kBACrHl4Q,EAAU,EACN,aACArC,EAAU,uBACd44O,mCACAv2O,EAAU,EACN,aACArC,EAAU,uBACd44O,+BACAv2O,EAAU,EACN,aACArC,EAAU,uBACd44O,gCACAv2O,EAAU,EACN,aACArC,EAAU,uBACVA,EAAU,gCACd44O,6BACAv2O,EAAU,EACN,aACArC,EAAU,wBACd44O,gCACAv2O,EAAU,EACN,aACArC,EAAU,wBACd44O,gCACAv2O,EAAU,EACN,aACArC,EAAU,uBACd44O,gCACAv2O,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd44O,8BACAv2O,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9BipO,+BACAv2O,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9BipO,8BACAv2O,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BipO,mCACAv2O,EAAU,EACN,eAAS,WAAck1E,YACvBv3E,EAAU,uBACd44O,+BACAv2O,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACd44O,iCACAv2O,EAAU,EACN,iBAAW,cACXrC,EAAU,uBACVA,EAAU,yBACd44O,6BACAv2O,EAAU,EACN,iBAAW,sBACXrC,EAAU,uBACVA,EAAU,yBACd44O,kCACAv2O,EAAU,EACN,iBAAW,sBACXrC,EAAU,uBACVA,EAAU,yBACd44O,kCACAv2O,EAAU,EACN,iBAAW,kBACXrC,EAAU,wBACd44O,mCACAv2O,EAAU,EACN,iBAAW,0BACXrC,EAAU,uBACVA,EAAU,yBACd44O,mCACAA,MAAsCv2O,EAAU,CAAGr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YAnnBA,GAmnBA,EACSy7P,GACTz7P,gBAEAgrM,WACA,oCACAywD,qBACAA,2BACAz7P,sBACAA,oBAEAkkS,kBACAlkS,cACA+gS,8CAGAoD,cACA,QACA,2BACA57C,2BACAkT,YAEAlT,2BACAkT,aAGAA,EAEA2oC,mBACA,IAAcl6P,0CAAoDlqC,gCAClE47P,KACAC,MACA,uBACA,mDACoBr9L,eAAWx+D,KAC/Bi8P,UACAoE,UACA,UACAE,KACA,yCACA,OACAp2N,eACAD,iBACAlmB,YAmBA,GAhBAi4O,SACAmN,IACA5b,MAGA8S,MAGAD,WACA+I,IACA9I,MAGA9S,OAGA8S,IACA,gCACAE,qBACAD,MACA1E,YAGArO,IACAxtP,iCACAugQ,6BACA5E,kBAGAC,uBACAC,0CACA77P,6DAEA,OACAmqC,oCACAD,iBACAlmB,UAGAqgR,iBACA,qCACA1oC,WACAC,aACA,OACA,0BACAC,MAEA77P,qBACA67P,OAEAA,GAEAyoC,aACA,yEAEAC,sBACA,kCACA,kDACA9oC,QAEAA,EAEA+oC,sBACA,QACA,wBACA,uBACA5oC,aACA,kBACAF,eAEA,CACA,kBAhvBA,KAivBA,aACAI,mBACAA,mBACAJ,gBAA2CG,SAAmBC,QAI9D,SAEA2oC,oBACA,gBACA,mBACA,WACAhpC,oCAEAA,UAhwBA,IAgwBAz7P,uBAEA0kS,iBACA,MACA,OAIAhpC,EAJA,UAttBA,UACA,OAqtBAuR,YAGAxR,kBACAz7P,yBAGAA,sCANA,GAQA07P,EAEAipC,2CACA,8BACA3kS,oBACAA,kBAEA2pR,iBACA,IAAa,kBAGb,oDACA,sQAAoG,CAGpGib,eACA,IAAY,kBAASx7B,sBACrB,kFAA8FloO,8BAG9F2jQ,gBACA,YAA0BppC,WAAsBA,KAChD,aACAE,WACA,wBACA,wBACAE,cACA,IAAoB,mBAASA,YAC7B,wHAC4CH,kBAAqBx6N,+BAEjElhC,sBAIA8kS,oBACA9kS,kBACAA,sEACAA,qBAGA+kS,oBACA,mCACA,0CACA,mEAGAn5M,YACA5rF,qBACAA,4CAEAglS,cACA,QA7uBA,uBA6uBApvK,kCACA6lI,oBACAC,mBAEA,GADA17P,qBACA07P,UACA,SA9uBA,UACA,WAAqC0N,eACrC,4DA4uBA/yI,0BACAulI,qCACA57P,8BAGAA,uBAGAilS,yBACA,yCACAvpC,2BACA,MACA,qBACAE,eACA,sBAEA,SAEAspC,4BACA,sCACA,WACAz9Q,gBAEAg0O,IAGA79C,yBAA6E,kBAA0CnuM,8BAAyB+nB,OAAqB/nB,8BAAyBA,aAAmBA,8BAAyB2gD,OAA6B3gD,8BAAyBA,YAAkBA,8BAAyBA,UAAgBA,8BAAyBA,qBAA2BA,8BAAyBA,gBACxamuM,aAA6CnuM,8BAAwB,CAAG7H,qEAGlE,GAHqM,MACnM6H,wBAAkBmC,MAClBnC,wBAAkB0C,OACpB,KACN,MACQ1C,2BAAqBisP,EAAMjsP,6BAAkBgsP,wBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,yBAC9C4kB,sCAAsF,MACrF5wQ,wBAAkB,mBAClBA,wBAAkB,2BAAlBA,CAAkB,sCACnB+5E,QAAYorM,mZAAwbnb,SAAapsH,yDAA8DkzH,2CAAgD9wQ,+BAAyB,CACnlB2gD,MACZ,CAAci4B,QAASj4B,MAAWk4B,iCAClC,CAAcD,QAAS33E,oBAAiB8tF,aAAe,gBAAU,kBACjE,CAAcnW,QAAS33E,gBAAa8tF,aAAe,gBAAU,kBAC7D,CAAcnW,QAASh4B,KAAUmuC,aAAe,gBAAU,WAC9C/uF,kCAA2BggC,kCAA6C,OAU9E25N,EASN,OAVA02B,uLAUA12B,sLACM,kpBAAiuBlsK,uBAAiE,MAChyBztF,+BAAyB,KACzBA,2BAAqB,cACrBA,sBAAgB,eAChBA,uBAAiB,oBACjBA,4BACF,MACEA,sBAAgB,GAChBA,wBAAkB,+BAClBA,uBAAiB,4BAA8BA,4BAAsB,oCACrEA,sBAAgB,GAChBA,uBAAiB,mBAAjBA,CAAiB,sBAAjBA,CAAiB,sBAAjBA,CAAiB,sBAAjBA,CAAiB,4BAAmIA,4BAAsB,mHAC1KA,wBAAkB,sBAAlBA,CAAkB,sBAAlBA,CAAkB,wBAAlBA,CAAkB,gBAAlBA,CAAkB,4BAAlBA,CAAkB,yBAClBA,sBAAgB,GAChBA,uBAAiB,qBAClB+wQ,sBAA4B,UAAkDnwN,KAAsC10B,QAAe0+O,kBAC1Il4Q,EAAU,EACN,aACArC,EAAU,uBACd89M,mCACAz7M,EAAU,EACN,aACArC,EAAU,wBACd89M,gCACAz7M,EAAU,EACN,aACArC,EAAU,wBACd89M,gCACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,6BACAz7M,EAAU,EACN,aACArC,EAAU,wBACd89M,mCACAz7M,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd89M,4BACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,2BACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,2BACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,gCACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,mCACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,4BACAz7M,EAAU,EACN,aACArC,EAAU,wBACd89M,gCACAz7M,EAAU,EACN,aACArC,EAAU,wBACd89M,uCACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,gCACAz7M,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd89M,8BACAz7M,EAAU,EACN,aACArC,EAAU,wBACd89M,2CACAz7M,EAAU,EACN,aACArC,EAAU,wBACd89M,qCACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,6BACAz7M,EAAU,EACN,aACArC,EAAU,uBACd89M,iCACAz7M,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BmuM,mCACAz7M,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9BmuM,+BACAz7M,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9BmuM,8BACAz7M,EAAU,EACN,eAAS,gBAAmBk1E,YAC5Bv3E,EAAU,cAAgB2P,eAC9BmuM,oCACAz7M,EAAU,EACN,eAAS,eAAkBk1E,YAC3Bv3E,EAAU,cAAgB2P,eAC9BmuM,mCACAz7M,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACd89M,iCACAz7M,EAAU,EACN,iBAAW,mBACX,iBAAW,0BACXrC,EAAU,uBACVA,EAAU,yBACd89M,mCACAA,MAAsDz7M,EAAU,CAAGrC,EAAU,qBAAuB03B,MAC5F/nB,YACA2gD,MACA3gD,WACAA,SACAA,oBACAA,gBACRmuM,IAKA,iBAAqCxtJ,OAarC,OAXAytJ,wBAA0D,OAAyC,mBAAoD,eAAsFpuM,kCAA4BouM,cAAzQ,GACAA,aAA4CpuM,8BAAwB,CAAG7H,gBAAwCu9R,6CAAgDxrB,UAAalqQ,0CAC5KtN,EAAU,EACN,aACArC,EAAU,uBACd+9M,iCACA17M,EAAU,EACN,aACArC,EAAU,uBACd+9M,iCAMA,2BACAh+M,eACA8rB,QACA3rB,eAEA48R,eACA,WAgBA,OAbAr/F,yBAAyG,kBAAwD9tL,8BAAyB2gD,SAC1LmtI,aAA2D9tL,8BAAwB,CAAG7H,gEAAwG6H,+BAAyB,CACvN,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,wCAAiCggC,wCAAoG4qO,kBACjJ98E,MAAkFp7L,EAAU,CAAGrC,EAAU,qBAAuBswD,SAChImtI,IAMA,aACAuiG,2BACAA,qBACAA,+BAHA,CAIClgF,aAID,SACA//M,gCACAG,aACAA,YACAA,YAGAizB,OACA,uCAGAmyQ,SACA,+BAEAC,UACA,+BAEAr3R,UACA,yDAEAnH,WACA,0BAAmC7G,sBAAsBA,gBAOzD,SACAH,uBACAG,aACAA,eACAA,mBACAA,qBAEAslS,MACA,2CAGA/jR,OACA,OACAgkR,oCACAp0M,4CAGAq0M,OACA,OACAD,kCACAp0M,0CAGAs0M,YACAzlS,mBAEA0lS,cACA1lS,qBAEA2lS,MACA3lS,mBACAA,sBAIA,gCAKA,SACAH,eACAG,aAEAwoQ,YACA,uBACAxoQ,cAGAA,gCAIAizB,OACA,uCAGAmyQ,SACA,4DAEAQ,aACA,sCAMA,MA6EA15K,sBACA,IAAUq5K,QAAO9pC,SACjB,eACA,MA/GA,OA+GAC,GACAA,gBACA,wBAKA,OAHAC,GAGAyN,WAFAA,aAEA3N,EAFA,GAOA5tI,KAAmBm1I,iCAA2B,WAC9C,IAAUuiC,QAAO9pC,SACjB,OACA,OADAC,OACA0N,EAEA1N,EAFAD,EAEA,GAKA3tI,kBACA,IAAUy3K,QAAOn8B,SACjB,OACA,OADA02B,GACArkC,EAEA,GAFA2N,EAEA,GAcAygB,wBAJA,8CAIA11J,MARA,6BAQAD,MAIA2xK,kBACA,mBACA,eACApqC,sBAEA,WAMA,aAIA57P,cACAG,cACAA,gBACAA,aACAA,2BACAA,wBACAA,mBACAA,qBACAA,kBACAA,yBAEAwyF,QAAa9sB,0DAAoEogO,wBACjF9lS,YACAA,cACAA,yBACAA,cACAA,wBACAA,gBAEA+lS,sBACA,QACA,iCACAv9B,OACA68B,SACA5pC,eAEAA,EAEAuqC,eACA,QACA,8BAGAnc,mBACArhB,OACA68B,SACA5pC,eAEAA,EAKAwqC,cACA,QACA,+BAGApc,oBACArhB,OACA68B,SACA5pC,eAEAA,EAEAyqC,iBACA,yBACAlmS,wBAEAA,yBAEAmmS,sBACA,UACAtqC,MACA,gCACAE,yBACA,uCACAyM,OACA68B,UACAzpC,MACA5tP,WACAA,WACA+sB,WAEA,CACAqrQ,aACApiR,UAGAqiR,mBACA,UACAzqC,KACA,8BACAE,mCACAC,uCACA,uCACAyM,UACA68B,UACAzpC,8BACAD,4BAEA,CACAyqC,aACApiR,UAGAsiR,oBACA,aAEA,OADAtmS,iCACA07P,gBAGAD,EAFAA,GAEA,CAEA8qC,oBACA,UACA3qC,KACA,sBACA,6BACA4M,UACA48B,WACAxpC,sBACA,qBACA,2BACA4M,wBAEA68B,UACA1pC,iBAEA,CACAyqC,aACApiR,UAGAwiR,uBACA,MAAgBxjC,8BAA4BhjQ,KAC5C,OACAymS,WApPA,eAGAr9B,EADAo8B,cACA1F,IACA12B,QACA,yBAYA,yBAmOAt9I,IACApmD,QA5QA,GAAgBs9L,iCAA2BvH,cAC3C,gBACA,MAAgB8pC,oBAAgB7pC,SAChC,oBACA,eACA,qBAEA,cACA,eACA,qBAEA,UACA,eACA,qBAEAA,cAEA,eACA,uBA0PA9wI,EAAiCo4I,8BAAjCp4I,CAA4D8wI,IAG5DgrC,yBACA,OACAD,WAjNA,gBACA,WACA,oBAEA,MAAYlB,QAAOn8B,SACnB,eACAA,QAEA,eAyMA59I,IACA9lD,QArOA,mBACA,gBACA,MAAgB6/N,mBAAgB9pC,SAChC,mBACA,eACA,YAEA,aACA,eACA,YAEAA,cAEA,eACA,eAuNAlwI,kBAGAo7K,sBACA,MAAgB3jC,gDAA6ChjQ,KAC7D,OACAymS,kBACA/gO,aAAiCs9L,gCAGjC4jC,6BACA,MAAgB5jC,UAAShjQ,KACzB,OACAymS,kBACA/gO,YAAiCs9L,iCAGjC6jC,WACAhB,yCACAr9B,eACA68B,aACArlS,oBAEA6lS,2CACAr9B,eACA68B,aACArlS,sBAEA6lS,wCACAr9B,eACA68B,aACArlS,mBAEA6lS,+CACAr9B,eACA68B,aACArlS,4BAOA,OAHA8pR,yBAA2D,mBAC3DA,cAAqCr6Q,+BAAyB,CAAGgwP,8BAA+C,2BAGhH,+BACAqnC,qBAuBA,gBACAjnS,+BACAG,eACAA,gBACAA,mBACAA,eACAA,iBACAA,uBAIAA,uBAAgC,YAIhCA,iBAIAA,iBACAA,oBAKAA,gBAKAA,2BAKAA,wBAIAA,oBAMAA,uBAIAA,gBAqBAA,iBAA2ByP,eAqB3BzP,gBAA0ByP,eAI1BzP,qBAA+ByP,eAC/BzP,mBACAA,mBACA,iBACA,WACA,SACA,WACA,iBACAyD,gBACA6J,MACAmtQ,aACAhrQ,mBAEAzP,iBACAA,qBAIAA,sBACAA,gBACAA,mCACAA,mDACAA,mCACA6N,gBAAuC7N,wBAA0B,OAGjD,QAAYA,eAC5BA,qBACAA,uBAOAA,sBACA,mCACAA,mBACA,MAAwBkqC,mCAA+BlqC,yBACvD+7P,SACA/7P,2BAOAA,qBACAA,mCACAA,gBACAA,mBACAA,kCACAA,uCAEgBqwD,MAAYrwD,iCAC5BA,qBACAA,iBACAA,sBAIAA,qBACAA,uBACQ,QAAe8jR,IACvB9jR,8BACAA,qBAEA+mS,wBACA,qBAKAC,YACA,sCAEAA,aACAhnS,6BAAsCA,qBAKtC+xH,gBACA/xH,gBAEA+xH,eACA,qBAEAvvH,WACAxC,kBACAA,yEAEAA,+BAAyC0Q,YAAS,MAMlDijR,UACA,cACA,+CAMAsT,iBACA,SAiBAn0R,SACA9S,aAGAA,iCACAA,0BAKAwtJ,QACAxtJ,YAGAA,gCAKAknS,gBACA,MAAgBh9P,iCAA+Bk/N,SAC/C1N,QAGA17P,iBACAA,sBAKAmnS,gBACA,wBACAzrC,qBACA,cAGA,OAFA17P,yBACAA,kBAGA,OACA,kBACAA,iBACA,oCACA87P,eACAF,sEAGAA,sEAEA57P,wCACAA,2BAKAo0B,eAIA,GAHAg1O,UACAppQ,mCAEAA,UAEA,YADAA,6BAGA,+BAEA,GADAA,uBACY,QAAS,YACrB,yCACA07P,sBACA17P,yBAGiB,QAAU,2CAC3B+pR,aACA/pR,qCAIAA,mDAOA+9F,cACA/9F,kCACAA,mDAMAk+F,oBACAl+F,gBAMAo+F,qBACAp+F,iBASAoxR,oBACApxR,mCACAA,gBAKA+K,YAIA,OAHA,oCAGA/K,iDAGA,0CACA,CACAonS,cACA1hO,eACA2hO,6BACArjR,mBAPA,IAWA,CAKA00P,eACA14Q,4CACAA,cAGAA,oCAEAA,0BACAA,kCAEAsnS,oBACAtnS,mBACA,6DACAA,mEACA,OACAA,uBAGAunS,kBACA,4DACA9rC,uBACAA,GACS,IAET+rC,iBACA,uBACA1B,qCACApgO,eACAs9L,mBACAykC,yCACAT,kBACS59B,GACTppQ,uBAEAkkS,sDACAlkS,cACA+gS,uCAGA2G,gBACA,iDAEAC,oBACA,gDACAlsC,2DACAA,YACAz7P,qBACAA,qBAGAiuR,cACA,sBAEAA,eACA,yCACA,uCACA7kB,EACAppQ,6BAGAA,gCAEAA,kBAGAk9R,6BACA,cACA,0BACA,IAAgB,iBAChB,4EAEA,iBAEA,gBAGAj0C,yBAA2E,kBAAyCx5O,8BAAwBq6Q,IAAkBr6Q,8BAAyBA,aAAmBA,8BAAyBA,cAAoBA,8BAAyBA,UAAgBA,8BAAyBA,YAAkBA,8BAAyBA,qBAA2BA,8BAAyB2gD,MAAG,KAC3Z64L,aAA4Cx5O,8BAAwB,CAAG7H,oEAEjE,GAFiM,KAC/L6H,wBAAkBqf,MACpB,KACN,MACQrf,2BAAqBisP,EAAMjsP,6BAAkBgsP,mBAC9C4kB,sCAAqF,KACpF5wQ,uBAAiB,qBAA6E,2BAA9FA,CAAgI,qBAA8E,4BAChN,MACEA,wBAAkB,mBAClBA,wBAAkB,yBAAlBA,CAAkB,gCAAlBA,CAAkB,0CACnB+5E,QAAYorM,mTAA8Unb,SAAaiiB,yDAA8Dnb,0CAA+C9wQ,+BAAyB,CACpfq6Q,GACA,CACArrL,SACApW,QAAyB33E,oBACzB8tF,aAA6B,gBAAU,SAEvC,CACAC,SACApW,QAAyB33E,gBACzB8tF,aAA6B,gBAAU,SAEvC,CACAnW,QAAyBh4B,KACzBmuC,aAA6B,gBAAU,WAE3B/uF,kCAA2BggC,oPAAuT,KACtVhgC,sBAAgB,eAClB,MACEA,uBAAiB,mBAAjBA,CAAiB,sBAAjBA,CAAiB,sBAAjBA,CAAiB,sBAAjBA,CAAiB,4BAAmIA,4BAAsB,iFAC1KA,wBAAkB,mBACnB+wQ,YAAenwN,MAAoCgqN,kBAC1Dl4Q,EAAU,EACN,aACArC,EAAU,uBACdmpP,mCACA9mP,EAAU,EACN,aACArC,EAAU,wBACdmpP,gCACA9mP,EAAU,EACN,aACArC,EAAU,wBACdmpP,gCACA9mP,EAAU,EACN,aACArC,EAAU,uBACdmpP,6BACA9mP,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACdmpP,iCACA9mP,EAAU,EACN,iBAAW,mBACX,iBAAW,yBACXrC,EAAU,wBACdmpP,mCACA9mP,EAAU,EACN,iBAAW,0BACXrC,EAAU,uBACVA,EAAU,yBACdmpP,uCACA9mP,EAAU,EACN,aACArC,EAAU,uBACdmpP,4BACA9mP,EAAU,EACN,aACArC,EAAU,uBACdmpP,6BACA9mP,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdmpP,2BACA9mP,EAAU,EACN,aACArC,EAAU,uBACdmpP,8BACA9mP,EAAU,EACN,aACArC,EAAU,uBACdmpP,yCACA9mP,EAAU,EACN,aACArC,EAAU,wBACdmpP,uCACA9mP,EAAU,EACN,aACArC,EAAU,wBACdmpP,mCACA9mP,EAAU,EACN,aACArC,EAAU,wBACdmpP,sCACA9mP,EAAU,EACN,aACArC,EAAU,uBACdmpP,gCACA9mP,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdmpP,8BACA9mP,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9Bw5O,+BACA9mP,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9Bw5O,8BACA9mP,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9Bw5O,mCACA9mP,EAAU,EACN,eAAS,SAAYk1E,YACrBv3E,EAAU,cAAgB2P,eAC9Bw5O,6BACA9mP,EAAU,EACN,kBAAY,oBACZrC,EAAU,wBACVA,EAAU,8BACVA,EAAU,6BACdmpP,kCACA9mP,EAAU,EACN,kBAAY,oBACZrC,EAAU,wBACVA,EAAU,8BACVA,EAAU,6BACdmpP,kCACAA,MAAoD9mP,EAAU,CAAGgP,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAOi/C,QACvGtwD,EAAU,wBACN2P,YACAA,aACAA,SACAA,WACAA,oBAAiBksQ,WACzB1yB,IAKA,SACAppP,eACAG,aACAA,cACA,cAOA,aAIAH,cACAG,6CACAA,cAEAo0B,eACAp0B,mBAEA4nS,cACA,wCACAnsC,iBACAC,GACA5zN,aACA02B,aACAwhO,qBAEA,UACA,aAAwBpkC,KAAWA,KACnCD,0BACAF,aACAE,gBACAA,mCAGAA,cACApyO,qDACAA,gEAEAvpB,cAEA6nS,kBACA,OACA,+CACA,iDAIAj4F,yBAAuE,mBACvEA,aAA0CngM,8BAAwB,CAAG7H,uEAE/D,GAFgM,KAC9L6H,wBAAkB4f,MACpB,KACN,MACQ5f,2BAAqBisP,EAAMjsP,6BAAkBgsP,oBAC9C4kB,sCAAmF,KAClF5wQ,uBAAiBgsP,mBAClBjyK,QAAYs+M,+HAA4InuB,UAAalqQ,kCAA2BqyQ,MA1rKvM,wBA0rKuMryO,wUAAga,MAC/lBhgC,uBAAiB,iBACjBA,uBAAiB,8BAA+EA,qCAClG,KACEA,uBAAiB,oBAClB+wQ,YAAe7kP,MAAgBA,MAAgBA,MAAiBA,MAAqBA,OAAuB0+O,kBACnHl4Q,EAAU,EACN,iBAAW,SACXrC,EAAU,uBACd8vM,sCACAztM,EAAU,EACN,aACArC,EAAU,yBACd8vM,iCACAztM,EAAU,EACN,aACArC,EAAU,wBACd8vM,gCACAztM,EAAU,EACN,aACArC,EAAU,uBACd8vM,4BACAztM,EAAU,EACN,aACArC,EAAU,uBACd8vM,iCACAztM,EAAU,EACN,aACArC,EAAU,uBACd8vM,2BACAztM,EAAU,EACN,aACArC,EAAU,uBACd8vM,2BACAztM,EAAU,EACN,aACArC,EAAU,cAAgB2P,gBAC9BmgM,qCACAztM,EAAU,EACN,kBAAY,eACZrC,EAAU,cAAgB2P,cAC9BmgM,oCAKA,eAEAF,yBAAqE,mBACrEA,aAAyCjgM,6BAAuB,CAAG7H,UACnE8nM,aAAyCjgM,6BAAuB,CAAG65H,UAAW3tG,MAAc00B,KAAiBA,KAAcA,MAAqBA,KACxIA,KACAA,QAKR,iBAA6BD,OAiB7B,OAfA0/I,wBAAkD,OAAiC,mBAA4C,eAAsErgM,kCAA4BqgM,cAAjO,GACAA,aAAoCrgM,8BAAwB,CAAG7H,gBAAgCu9R,qEAA0ExrB,UAAalqQ,0CACtLtN,EAAU,EACN,aACArC,EAAU,uBACdgwM,iCACA3tM,EAAU,EACN,aACArC,EAAU,uBACdgwM,iCACA3tM,EAAU,EACN,aACArC,EAAU,uBACdgwM,kCAMA,2BACAjwM,eACA8rB,QACA3rB,iBAaA,OAVA0sM,yBAA+F,kBAAmDj9L,8BAAyB2gD,SAC3Ks8I,aAAsDj9L,8BAAwB,CAAG7H,qEAA0G6H,+BAAyB,CACpN,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,0CACZi9L,MAAwEvqM,EAAU,CAAGrC,EAAU,qBAAuBswD,SACtHs8I,IAMA,2BACA7sM,eACA8rB,QACA3rB,eAEA48R,eACA,WAGAj8F,yBAAyF,kBAAgDlxL,8BAAyB2gD,SAClKuwI,aAAmDlxL,8BAAwB,CAAG7H,wDAAwF6H,+BAAyB,CAC/L,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,wCAAiCggC,wCAA4F4qO,kBACzI15E,MAAkEx+L,EAAU,CAAGrC,EAAU,qBAAuBswD,SAChHuwI,IAkCA,cAEA8B,wBAAuD,kBACvDA,YAAkChzL,6BAAuB,CAAG7H,SAC5D66L,YAAkChzL,6BAAuB,CAAG65H,UAAW3tG,MAAY+zK,OAKnF,iBAAkCt/I,OAalC,OAXAk8I,wBAAuD,OAAsC,mBAAiD,eAAgF78L,kCAA4B68L,cAA1P,GACAA,aAAyC78L,8BAAwB,CAAG7H,gBAAqCmgS,iEAAoEpuB,UAAalqQ,0CAC1LtN,EAAU,EACN,aACArC,EAAU,uBACdwsM,uCACAnqM,EAAU,EACN,aACArC,EAAU,uBACdwsM,qCAMA,2BACAzsM,eACA8rB,QACA3rB,iBAaA,OAVAihM,yBAAyG,kBAAwDxxL,8BAAyB2gD,SAC1L6wI,aAA2DxxL,8BAAwB,CAAG7H,qEAA+G6H,+BAAyB,CAC9N,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,0CACZwxL,MAAkF9+L,EAAU,CAAGrC,EAAU,qBAAuBswD,SAChI6wI,IAMA,2BACAphM,eACA8rB,QACA3rB,eAEA48R,eACA,WAGA1S,yBAAmG,kBAAqDz6Q,8BAAyB2gD,SACjL85N,aAAwDz6Q,8BAAwB,CAAG7H,6DAAkG6H,+BAAyB,CAC9M,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,wCAAiCggC,wCAAiG4qO,kBAC9I6P,MAA4E/nR,EAAU,CAAGrC,EAAU,qBAAuBswD,SAC1H85N,IAkCA,eAEA5lF,yBAAiE,mBACjEA,aAAuC70L,6BAAuB,CAAG7H,UACjE08L,aAAuC70L,6BAAuB,CAAG65H,UAAW3tG,MAAY+zK,OAKxF,iBAAuBt/I,OAavB,OAXA84L,wBAA4C,OAA2B,mBAAsC,eAA0Dz5O,kCAA4By5O,cAAnM,GACAA,aAA8Bz5O,8BAAwB,CAAG7H,gBAA0BogS,mBAAsBruB,UAAalqQ,0CACtHtN,EAAU,EACN,aACArC,EAAU,uBACdopP,0BACA/mP,EAAU,EACN,aACArC,EAAU,uBACdopP,2BAMA,2BACArpP,eACA8rB,QACA3rB,iBAaA,OAVAoqR,yBAA+F,kBAAmD36Q,8BAAyB2gD,SAC3Kg6N,aAAsD36Q,8BAAwB,CAAG7H,qEAA0G6H,+BAAyB,CACpN,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,0CACZ26Q,MAAwEjoR,EAAU,CAAGrC,EAAU,qBAAuBswD,SACtHg6N,IAMA,2BACAvqR,eACA8rB,QACA3rB,eAEA48R,eACA,WAGAh3E,yBAAyF,kBAAgDn2M,8BAAyB2gD,SAClKw1J,aAAmDn2M,8BAAwB,CAAG7H,wDAAwF6H,+BAAyB,CAC/L,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,wCAAiCggC,wCAA4F4qO,kBACzIz0D,MAAkEzjN,EAAU,CAAGrC,EAAU,qBAAuBswD,SAChHw1J,IAiCA,eAMA,OAJAI,yBAAuD,mBACvDA,aAAkCv2M,6BAAuB,CAAG7H,UAC5Do+M,aAAkCv2M,6BAAuB,CAAG65H,UAAW3tG,MAAc00B,KAAcA,SAMnG,2BACAxwD,eACA8rB,QACA3rB,iBAGA2mN,yBAA+G,kBAA2Dl3M,8BAAyB2gD,SACnMu2J,aAA8Dl3M,8BAAwB,CAAG7H,6EAA0H6H,+BAAyB,CAC5O,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,0CACZk3M,MAAwFxkN,EAAU,CAAGrC,EAAU,qBAAuBswD,SACtIu2J,IAiCA,eAEAwD,yBAAuE,mBACvEA,aAA0C16M,6BAAuB,CAAG7H,UACpEuiN,aAA0C16M,6BAAuB,CAAG65H,UAAW3tG,MAAc00B,SAiC7F,eAEA81J,yBAAqE,mBACrEA,aAAyC12M,6BAAuB,CAAG7H,UACnEu+M,aAAyC12M,6BAAuB,CAAG65H,UAAW3tG,MAAc00B,SAsC5F,aACAxwD,eACAG,qBAGAwqN,yBAA2F,kBAAiD/6M,8BAAyBA,cAAkB,KACvL+6M,aAAoD/6M,8BAAwB,CAAG7H,2DAC/E4iN,GAAiCroN,EAAU,CAAGgP,EAAO,GAAI,iBACrDrR,EAAU,qBAAuB2P,iBACrC+6M,IAmBA,aACA3qN,eACAG,qBASA,OANAioS,yBAA2F,kBAAiDx4R,8BAAyBA,cAAkB,KACvLw4R,aAAoDx4R,8BAAwB,CAAG7H,2DAC/EqgS,GAAiC9lS,EAAU,CAAGgP,EAAO,GAAI,iBACrDrR,EAAU,qBAAuB2P,iBACrCw4R,IAGA,2BACA,gBACApoS,4BACAG,2BACAA,cACAA,sBACAA,iBACAA,iBACAA,oBAIAA,uBAAgC,YAIhCA,cAMAA,iBAMAA,iBAMAA,gBAIAA,gBAMAA,sBAYAA,wBAYAA,sBAMAA,oBASAA,qBAA+ByP,eAI/BzP,oBAA8ByP,eAI9BzP,mBAA6ByP,eAqB7BzP,iBAA2ByP,eAqB3BzP,gBAA0ByP,eAC1BzP,kBACAA,mBACAA,qCAIAA,2BACAA,gBACAA,gCACAA,qBACA6N,gBAA2C7N,sBAGvB,QAAYA,gBAChCA,gBACAA,qBACAA,wBAIoB,QAAYA,oBAChCA,gGACAA,qBACAA,yBAIAA,qBACAA,sBAOAA,0BACAA,uCACgBqwD,MAAYrwD,oCAC5BA,qBACAA,iBACAA,yBAOAA,sBACA,OA7PA,MACW,SAAoB8/R,aACtB,SAAcA,KAA6B,kBAAd,SAAcA,YA2PpD11E,uBApPA,KAEA,mIAkPAC,0CACArqN,sBAEAA,qBACAA,uBACQ,QAAe8jR,IACvB9jR,iCAKA+xH,gBACA/xH,gBAEA+xH,eACA,qBAEAglK,oBACA,qBAEAv0R,WACAxC,+BAAyC0Q,YAAS,MAClD1Q,wBACAA,gEAA2EitR,UAC3EjtR,+BAGA4S,kBACA,uCACA,SACA8oP,KACA17P,mCAEAA,6DACAA,gBACAA,qBACAA,oBACAA,uBAIAA,+DACAA,iBAGA07P,GACA+nB,8DAEAzjR,kBAEA07P,OAGAD,6BACAz7P,sBAIAA,gEACAy7P,QAEAz7P,gEACAy7P,QAEAz7P,6DAEA07P,EADAC,aAAqCtrM,QAIrC,MAKAj8B,gBACAg1O,kCACAppQ,wBAGAkJ,cACAlJ,oBACAA,iCAkBA8S,SACA9S,aAGAA,qCACAA,kBACAA,iCACAA,sCAKAwtJ,OACAxtJ,qCACA,+DACAopQ,GACAA,SAEAppQ,kBACAA,qCAKAixR,aACA,6CAKAiX,mBACAloS,sBACAA,gBACAA,eACAA,oBACAA,WAKAwqR,cACAphB,GACAA,mBAEAppQ,2BACAA,kCACAA,iCACAA,qBACAA,wBACAA,2BAKA+9F,cACA/9F,aACAA,wBAKAk+F,oBACAl+F,gBAKAo+F,qBACAp+F,iBASAoxR,oBACApxR,mCACAA,gBAKAmoS,oBACA,iBACA,SAEA,MAAgBj9O,6BAA0BlrD,aAC1C,iBAKAooS,qBACA,iBACA,SAEA,MAAgB3qC,2BAAwBz9P,aACxC,iBAKAqoS,yBACA,wBACA,kBAAgCroS,mBAChC,0CAKAsoS,uBACA,sBACA,gBAA8BtoS,iBAC9B,kCAKAuoS,yBACA,4BACAvoS,qBACA,0BAKAyhB,gBACA,qCACAzhB,yBACAA,mBAKAwoS,mBACA,uCACAxoS,0BACAA,qBAEAkkS,kBACAlkS,gBACA+gS,uCAGAn1M,YACA5rF,YACAA,uCAGA04Q,eACAt1O,kBACApjC,qBACAA,aACAA,iBACAA,yBACAA,wBACAA,qCAIAytR,gBACA,uBAEAA,iBACA,0CACA,uCACArkB,kBACAppQ,6BAGAA,gCAEAA,mBAGAqrR,aACArrR,qBACAA,mCACAA,mBAEAA,sBAIAyoS,yBAA+D,kBAAmCh5R,8BAAyB2gD,OAA6B3gD,8BAAyBA,UAAgBA,8BAAyBA,qBAA2BA,8BAAyBA,aAAmBA,8BAAyBA,YAAkBA,8BAAyBA,gBACrWg5R,aAAsCh5R,8BAAwB,CAAG7H,qEAG3D,GAHiM,MAC/L6H,2BAAqBisP,QACrBjsP,2BAAqBisP,SACvB,KACN,OACQjsP,2BAAqBksP,GAAMlsP,6BAAkBgsP,2BAC7ChsP,2BAAqBksP,GAAMlsP,6BAAkBgsP,6BAC9CzrK,wBAED,GAFyD,KACvDvgF,wBAAkBqf,MACpB,KACN,MACQrf,2BAAqBisP,EAAMjsP,6BAAkBgsP,mBAC9C4kB,sCAA+E,MAC9E5wQ,wBAAkB,mBAClBA,wBAAkB,wBAAlBA,CAAkB,sCACnB+5E,QAAYorM,iYAAganb,SAAapsH,uGAAgHkzH,oCAAyC9wQ,+BAAyB,CACtmB2gD,MACZ,CAAci4B,QAASj4B,MAAWk4B,0BAClC,CACAD,QAAyB33E,oBACzB8tF,aAA6B,gBAAU,QACvCC,UAEA,CAAcpW,QAASh4B,KAAUmuC,aAAe,gBAAU,WAC9C/uF,kCAA2BggC,mCAA8C,OASrF,gKACM,yeAAyiBytD,uBAA0D,MACjmBztF,+BAAyB,KACzBA,2BAAqB,YACrBA,uBAAiB,iBACjBA,2BACAA,sBAAgB,eAChBA,2BAAqB,YACrBA,uBAAiB,mBACjBA,uBAAiB,mBACjBA,uBAAiB,mBACjBA,uBAAiB,iBACjBA,4BACF,MACEA,sBAAgB,GAChBA,uBAAiB,yBACjBA,sBAAgB,GAChBA,uBAAiB,mBAAjBA,CAAiB,sBAAjBA,CAAiB,sBAAjBA,CAAiB,gBAAjBA,CAAiB,4BAA6HA,4BAAsB,2DACpKA,wBAAkB,wCAAlBA,CAAkB,4BAAlBA,CAAkB,gBAAlBA,CAAkB,yBAClBA,sBAAgB,GAChBA,uBAAiB,oBACjBA,sBAAgB,GAChBA,uBAAiB,uBACjBA,sBAAgB,GAChBA,uBAAiB,0BACjBA,sBAAgB,GAChBA,uBAAiB,2BAClB+wQ,sBAA4B,UAA2C7kP,MAAaA,MAAyB00B,KAAsC10B,QAAkB0+O,kBAC5Kl4Q,EAAU,EACN,aACArC,EAAU,uBACd2oS,mCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,6BACAtmS,EAAU,EACN,aACArC,EAAU,wBACd2oS,gCACAtmS,EAAU,EACN,aACArC,EAAU,wBACd2oS,gCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,gCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,6BACAtmS,EAAU,EACN,aACArC,EAAU,wBACd2oS,qCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,uCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,qCACAtmS,EAAU,EACN,aACArC,EAAU,wBACd2oS,mCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,mCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,iCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,uCACAtmS,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACd2oS,8BACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,mCACAtmS,EAAU,EACN,aACArC,EAAU,uBACd2oS,iCACAtmS,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9Bg5R,mCACAtmS,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9Bg5R,kCACAtmS,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9Bg5R,iCACAtmS,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9Bg5R,+BACAtmS,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9Bg5R,8BACAtmS,EAAU,EACN,eAAS,SAAYk1E,YACrBv3E,EAAU,cAAgB2P,eAC9Bg5R,6BACAtmS,EAAU,EACN,kBAAYqoN,IAAmCnzI,YAC/Cv3E,EAAU,mBACd2oS,sCACAtmS,EAAU,EACN,kBAAY8lS,IAAmC5wN,YAC/Cv3E,EAAU,mBACd2oS,sCACAtmS,EAAU,EACN,iBAAW,0BACXrC,EAAU,uBACVA,EAAU,yBACd2oS,mCACAtmS,EAAU,EACN,iBAAW,mBACXrC,EAAU,wBACd2oS,iCACAtmS,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACd2oS,iCACAA,MAAwCtmS,EAAU,CAAGrC,EAAU,qBAAuBswD,MAC9E3gD,SACAA,oBACAA,YACAA,WACAA,gBACRg5R,IAKA,iBAA8Br4O,OAS9B,OAPAygE,wBAAmD,OAAkC,mBAA6C,eAAwEphH,kCAA4BohH,cAAtO,GACAA,aAAqCphH,8BAAwB,CAAG7H,gBAAiC6oF,eAAgBkpL,UAAalqQ,0CAC9HtN,EAAU,EACN,aACArC,EAAU,uBACd+wH,6BAMA,2BACAhxH,eACA8rB,QACA3rB,eAEA48R,eACA,WAaA,OAVAl4F,yBAA2F,kBAAiDj1L,8BAAyB2gD,SACrKs0I,aAAoDj1L,8BAAwB,CAAG7H,yDAA0F6H,+BAAyB,CAClM,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,wCAAiCggC,wCAA6F4qO,kBAC1I31E,MAAoEviM,EAAU,CAAGrC,EAAU,qBAAuBswD,SAClHs0I,IAMA,2BACA7kM,eACA8rB,QACA3rB,iBAGA0oS,yBAAiG,kBAAoDj5R,8BAAyB2gD,SAC9Ks4O,aAAuDj5R,8BAAwB,CAAG7H,sEAA4G6H,+BAAyB,CACvN,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,0CACZi5R,MAA0EvmS,EAAU,CAAGrC,EAAU,qBAAuBswD,SACxHs4O,IAoBA,aAmBA7oS,cACAG,oBAGA2oS,yBAA6E,mBAC7EA,aAA6Cl5R,8BAAwB,CAAG7H,gHAAwL,KACxP6H,wBAAkB,kCACnBggC,wCAAqF4qO,kBAC5Fl4Q,EAAU,EACN,iBAAW,2BACXrC,EAAU,wBACd6oS,iCAYA,eAEApe,yBAAuD,mBACvDA,aAAkC96Q,6BAAuB,CAAG7H,UAC5D2iR,aAAkC96Q,6BAAuB,IAiCzD,eAEA+0L,yBAAyD,mBACzDA,aAAmC/0L,6BAAuB,CAAG7H,UAC7D48L,aAAmC/0L,6BAAuB,CAAG65H,UAAW3tG,MAAc00B,KAAYk6N,IAAiBl6N,QAKnH,SACAxwD,4BACAG,2BACAA,cACAA,sBACAA,iBACAA,iBACAA,oBAIAA,cAMAA,iBAMAA,iBAIAA,gBAMAA,sBAKAA,oBAA8ByP,eAK9BzP,mBAA6ByP,eAC7BzP,uBAAiCuX,IACjCvX,mBACAA,qCAIAA,0BACAA,uCACgBqwD,MAAYrwD,oCAC5BA,qBACAA,iBACAA,yBAIAA,qBACAA,sBAEA+2R,oBACA,qBAEA7tR,cACAlJ,iCASAoxR,oBACApxR,mCACAA,iBA2DA,OAxDAiuM,yBAA2Dx+L,gCAC3Dw+L,aAAoCx+L,8BAAwB,CAAG7H,gCAEzD,GAFmI,KACjI6H,wBAAkBqf,MACpB,KACN,MACQrf,2BAAqBisP,EAAMjsP,6BAAkBgsP,mBAC9C4kB,sCAA6E,MAC5E5wQ,wBAAkB,mBAClBA,wBAAkB,sCACnB+5E,QAAYjf,6HAAwIkvM,SAAamvB,iDACxKzmS,EAAU,EACN,aACArC,EAAU,uBACdmuM,6BACA9rM,EAAU,EACN,aACArC,EAAU,wBACdmuM,gCACA9rM,EAAU,EACN,aACArC,EAAU,wBACdmuM,gCACA9rM,EAAU,EACN,aACArC,EAAU,uBACdmuM,6BACA9rM,EAAU,EACN,aACArC,EAAU,wBACdmuM,qCACA9rM,EAAU,EACN,aACArC,EAAU,uBACdmuM,mCACA9rM,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9Bw+L,kCACA9rM,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9Bw+L,iCACA9rM,EAAU,EACN,eAAS,SAAYk1E,YACrBv3E,EAAU,cAAgB2P,eAC9Bw+L,6BACA9rM,EAAU,EACN,iBAAW,0BACXrC,EAAU,uBACVA,EAAU,yBACdmuM,mCACA9rM,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACdmuM,iCAGA,UACAsyF,6BACAvO,iCACA6W,qBACAC,qBACAC,sBAEAC,mBAIA,2BACAnpS,4BACA8rB,sBACA3rB,2BACAA,cACAA,sBACAA,iBACAA,iBACAA,oBAIAA,uBAAgC,YAChCA,kBASAA,qBAIAA,gBAYAA,0BAqBAA,iBAA2ByP,eAqB3BzP,gBAA0ByP,eAM1BzP,qBAA+ByP,eAI/BzP,sBACA,uBACAA,qBACAA,eAKAA,2BACAA,gBACAA,gCACAA,qBACA6N,gBAA2C7N,sBAGvB,QAAYA,gBAChCA,gBACAA,qBACAA,wBAIoB,QAAYA,mBAChCA,mCACAA,qBACAA,0BAIAA,qBACAA,uBAIQ,QAAe8jR,IACvB9jR,iCAEAipS,cACA,6BAEAC,cACA,+BAKAn3K,gBACA/xH,gBAEA+xH,eACA,qBAEAn/G,kBACA,uCACA,SACA8oP,KACA17P,mCAEAA,6DACAA,gBACAA,qBACAA,oBACAA,uBAIAA,+DACAA,iBAGA07P,GACA+nB,8DAEAzjR,kBAEA07P,MAGAD,GACAz7P,sBAIAA,gEACAy7P,QAEAz7P,gEACAy7P,QAEAz7P,6DAEA07P,EADAC,aAAqCtrM,QAIrC,MAKA7tD,WACAxC,+BAAyC0Q,YAAS,OACtC,WAAmB,0BAC/B1Q,yBAAsC,OAASu7C,iBAC/ClzC,MAAuB,QAAY,KACnClC,8BAEAnG,kBACAA,yEAEAA,gEAA2EitR,UAC3EjtR,+BAGAo0B,eACA,uCACAsnO,2BACA0N,cACA,wBACAppQ,mCAGAA,8CACAA,0CACA07P,kBAA0C17P,yBAG1CopQ,SACA1lO,wBACA1jC,yCAGAA,sCAIAg/F,qBACAh/F,cAKA+9F,cACA/9F,aAKAk+F,oBACAl+F,gBAKAo+F,qBACAp+F,iBAEA04Q,eACAt1O,kBACApjC,qBACAA,aACAA,iBACAA,yBACAA,qCAIAkJ,cACAyiB,oBACA3rB,yBACAA,sCAMAmpS,qBACA,0BAiBAr2R,SACA9S,aAGAA,qCACAA,kBACAA,iCACAA,sCAKAwtJ,OACAxtJ,qCACA,+DACAopQ,GACAA,SAEAppQ,kBACAA,qCAEA40D,SACA,2BACA,OAEA,iCACA50D,gDACAA,qCAAqDA,wBACrD,uBACAy7P,uBACA2N,kBAAsC3N,OAGtCgyB,gBACA,uBAEAA,iBACA,0CACA,uCACArkB,kBACAppQ,6BAGAA,gCAEAA,mBAGAqrR,aACArrR,qBACAA,mCACAA,mBAEAA,oBAGAkkS,kBACAlkS,gBACA+gS,uCAGAn1M,YACA5rF,YACAA,yCAIAspP,yBAAiE,kBAAoC75O,8BAAyB2gD,OAA6B3gD,8BAAyBA,UAAgBA,8BAAyBA,qBAA2BA,8BAAyBA,aAAmBA,8BAAyBA,YAAkBA,8BAAyBA,gBACxW65O,aAAuC75O,8BAAwB,CAAG7H,6EAAwI,KAClM6H,wBAAkB,yBAAlBA,CAAkB,uBAAlBA,CAAkB,yBACnB+5E,QAAYorM,mJAAkKnb,SAAaiiB,yDAA8Dnb,qCAA0C9wQ,+BAAyB,CACvT2gD,MACZ,CAAci4B,QAASj4B,MAAWk4B,2BAClC,CACAD,QAAyB33E,oBACzB8tF,aAA6B,gBAAU,QACvCC,UAEA,CAAcpW,QAASh4B,KAAUmuC,aAAe,gBAAU,WAC9C/uF,uCAAmCA,kCAA2BswE,mBAl5N1E,0BAk5N0EtwC,sJAAqO,MACvShgC,4BAAsBmyB,IACtBnyB,2BAAqB,kBACrBA,mBAAa,kBACbA,2BACAA,yBAAmB,IACrB,MACEA,uBAAiB,2BAAjBA,CAAiB,mBAAjBA,CAAiB,gBAAjBA,CAAiB,sBAAjBA,CAAiB,sBAAjBA,CAAiB,4BAA4JA,4BAAsB,2DACnMA,wBAAkB,oBAAlBA,CAAkB,qCAAlBA,CAAkB,qCAAlBA,CAAkB,4BAAlBA,CAAkB,cAAlBA,CAAkB,cAAlBA,CAAkB,sBAAlBA,CAAkB,gBAAlBA,CAAkB,2BACnB+wQ,YAAe7kP,MAAgB00B,MAAoCgqN,kBAC1El4Q,EAAU,EACN,aACArC,EAAU,uBACdwpP,mCACAnnP,EAAU,EACN,iBAAW,oBACXrC,EAAU,wBACdwpP,iCACAnnP,EAAU,EACN,iBAAW,oBACXrC,EAAU,uBACVA,EAAU,yBACdwpP,6BACAnnP,EAAU,EACN,iBAAW,oBACXrC,EAAU,uBACVA,EAAU,yBACdwpP,6BACAnnP,EAAU,EACN,aACArC,EAAU,uBACdwpP,4BACAnnP,EAAU,EACN,aACArC,EAAU,uBACdwpP,4BACAnnP,EAAU,EACN,aACArC,EAAU,uBACdwpP,4BACAnnP,EAAU,EACN,aACArC,EAAU,uBACdwpP,iCACAnnP,EAAU,EACN,aACArC,EAAU,uBACdwpP,gCACAnnP,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdwpP,8BACAnnP,EAAU,EACN,aACArC,EAAU,uBACdwpP,iCACAnnP,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9B65O,+BACAnnP,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9B65O,8BACAnnP,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B65O,mCACAA,MAA0CnnP,EAAU,CAAGrC,EAAU,qBAAuBswD,MAChF3gD,SACAA,oBACAA,YACAA,WACAA,gBACR65O,IAmBA,aAkBAzpP,cACAG,oBAGA6rP,yBAA6E,mBAC7EA,aAA6Cp8O,8BAAwB,CAAG7H,oFAA2J,KAC3N6H,wBAAkB,kCACnB8wQ,6FAAiJ,MAChJ9wQ,8BACAA,yBAAmB,KACpB4qQ,kBACPl4Q,EAAU,EACN,iBAAW,2BACXrC,EAAU,wBACd+rP,iCAiCA,eAEAu9C,yBAA2D,mBAC3DA,aAAoC35R,6BAAuB,CAAG7H,UAC9DwhS,aAAoC35R,6BAAuB,CAAG65H,UAAW3tG,MAAc00B,KAAYk6N,IAAiBl6N,QAKpH,SACAxwD,cACAG,kBAMAoqC,iBACApqC,kBAOAskR,qBACA,uBAkCA,SAKAzkR,eACAG,aACAA,sBAKAqpS,cACArpS,sBAOAspS,kBACA,2BASA,uBAEA,SADA,qBACAl4R,WACA,oDAA4Dg4P,0DAE5D,WACA,OAEA,cACA,OAoEA,kBAEA,GADA02B,2BACAp8P,GAAkBrL,KAAWynQ,KAC7B,WAEQ,SAAUA,QAClBA,IAAgB,SAAUA,eAE1B,oBAA4BznQ,MAAWr1B,QAAcq1B,KAAWqjO,SAChE,UACA,sCAA8CokC,+DAAkEA,8EAEhH,SAhFApV,OAEA,UAAwB,SAAUoV,aAClC,cAGA,yCAHA,CAGA,EAmBAyJ,eACA,SAAmB,SAAUzJ,MAC7B,aAGArkC,YAFA,IASA+tC,QACA,yBACA/tC,eACAC,eACAC,gBACA,OAAW97K,aAAaupL,uBAOxBre,OACAy+C,IAA6BjpS,mBAqC7B,kBACA,uBACAm7P,iBACAC,kBACAC,gBACAC,iBACAC,iBACAC,iBACA,OACA55P,6BACA/B,6BACAm6Q,gCAQAkvB,QACA,uCACA,gBACA,OACAhuC,QACAh0O,+BAEA,wCAkBAiiR,WAXA,UACAjiR,eAEA,MADAA,eAEA,KAQAskO,uBAA4F5pP,oBAO5FwnS,IACAC,OACAC,qJACAj6Q,YAEAk6Q,QACAD,weACAj6Q,YAEAm6Q,MACAF,weACAj6Q,YAEAo6Q,QACAH,weACAj6Q,YAEAq6Q,SACAJ,weACAj6Q,YAEAs6Q,YACAL,weACAj6Q,YAEAu6Q,OACAN,weACAj6Q,YAEAw6Q,MACAP,weACAj6Q,YAEAy6Q,WACAR,weACAj6Q,YAEA06Q,MACAT,weACAj6Q,YAEA26Q,OACAV,weACAj6Q,YAEA46Q,YACAX,wGACAj6Q,YAEA66Q,YACAZ,2LACAj6Q,aAOA,qBAAkFwgC,MAClFvwD,mBACA8rB,eAGA2gO,yBAA2F,kBAAiD78O,qBAAgB2gD,OAAc3gD,qBAAgB2gD,MAAqB,GAAM3gD,qBAAgB2gD,MAAG,KACxOk8L,cAAqD78O,+BAAyB,CAAGgwP,8BAA+D,2BAChJnT,GAAiCnqP,EAAU,CACvCgP,EAAO,GAAI,YAAOi/C,QAClBj/C,EAAO,GAAI,iBACXA,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAOi/C,QAC1CtwD,EAAU,4BAA+BswD,MAAcurN,WAC3DrvB,IAKA,qBAAsFl8L,MACtFvwD,sBACA8rB,aACA3rB,gCAEAa,OACA,oCACAb,oCAEA2rB,eAGA++Q,yBAA+F,kBAAmDj7R,qBAAgB2gD,OAAc3gD,qBAAgB2gD,MAAqB,GAAM3gD,qBAAgB2gD,MAAG,GAAM3gD,qBAAe68O,QACnQo+C,cAAuDj7R,+BAAyB,CAAGgwP,8BAAiE,2BACpJirC,GAAmCvoS,EAAU,CACzCgP,EAAO,GAAI,YAAOi/C,QAClBj/C,EAAO,GAAI,iBACXA,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAOi/C,QAC1Cj/C,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAMm7O,KACzCxsP,EAAU,4BAA+BswD,MAAcurN,cAC3D+uB,IAKA,aACA7qS,mBACAG,oBACAA,YACAA,gBAIAA,gBAIAA,iBAIAA,iBAIAA,qBAA+ByP,eAC/BzP,wBAIAA,aACAA,uBAAiCuX,IAKjCk2Q,gBACA,OAAcp9N,UAAmB3sB,cACjC,SAEA,+BACA,2CAKAinQ,qBACA,yDAEA/3R,kBACA5S,qBAEAkJ,cACAlJ,oBACAA,iCAGAo0B,eACAsP,+BACA1jC,8BACAA,yBACAA,iDAGAu/R,wBACA,QAlPA,MACA,uBACA9jC,iBACAC,iBACAC,gBACA,OAAW97K,eAAeupL,uBA6O1BurB,aACA30R,sCAGAA,aACAA,yBACAA,qBACAA,0BAEAo/R,wBACAp/R,WACA,sBACA0jC,wBAGA1jC,aACAA,gBACAA,0BAEAs/R,sBACAt/R,sBACAA,0BAGAm/R,qBACAn/R,8BAEA8hS,WACA,gCAEA8I,mBACA5qS,qDAEA6qS,iBACA7qS,WAGAA,0HAGAulM,yBAAqE,kBAAsC91L,8BAAyB2gD,OAA6B3gD,8BAAyBA,cAAoBA,8BAAyBA,eACvO81L,aAAyC91L,8BAAwB,CAAG7H,iEAG9D,GAHqL,MACnL6H,wBAAkB20B,KAAU30B,cAC5BA,wBAAkB46B,OACpB,KACN,MACQ56B,2BAAqBisP,EAAMjsP,6BAAkBgsP,wBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,gCAC9C4kB,sCAAkF,KACjF5wQ,wBAAkB,2CAAlBA,CAAkB,+BACnB+5E,QAAYshN,iGAA0GrxB,SAAapsH,2BAA4BssH,UAAalqQ,kCAA2BggC,wzBAAu7B,MAC7nChgC,2BAAqB,UAArBA,CAAqB,gBACrBA,sBAAgB,YAChBA,6BACAA,uBAAiB,oBACjBA,uBAAiB,8BACnB,MACEA,sBAAgB,GAChBA,uBAAiB,6BACjBA,sBAAgB,GAChBA,uBAAiB,gCAClB+wQ,YAAe7kP,MAAWiiL,sBACjCz7M,EAAU,EACN,aACArC,EAAU,uBACdylM,kCACApjM,EAAU,EACN,aACArC,EAAU,uBACdylM,6BACApjM,EAAU,EACN,aACArC,EAAU,wBACdylM,+BACApjM,EAAU,EACN,aACArC,EAAU,wBACdylM,gCACApjM,EAAU,EACN,aACArC,EAAU,wBACdylM,gCACApjM,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B81L,mCACApjM,EAAU,EACN,iBAAW,iCACX,iBAAW,kBACXrC,EAAU,wBACdylM,uCACApjM,EAAU,EACN,eAAS,gBAAmBs+Q,KAAMhxQ,aAAU4nE,YAC5Cv3E,EAAU,cAAgB2P,eAC9B81L,oCACApjM,EAAU,EACN,eAAS,sBAAyBk1E,YAClCv3E,EAAU,cAAgB2P,eAC9B81L,0CACAA,GAAsBpjM,EAAU,CAAGrC,EAAU,qBAAuBswD,MAC5D3gD,aACAA,eACR81L,IAuBA,OACA,SAKAtqC,YACAp7J,yBACAG,YACAA,cACAA,gBACAA,YACAA,4BAIAA,oBAIAA,2BAAqCg7J,KAIrCh7J,gBAIAA,iBAIAA,iBAIAA,oBAMAA,aAIAA,qBAA+ByP,eAI/BzP,qBAhEA,qBAwEAA,aAUAA,YAtFA,OAuFAA,iBACAA,kBACAA,sBAAgC6d,MAChC7d,4BACAA,4BACAA,mDAA+EitR,WAC/EjtR,gCAMA+qS,wBACA,qBAKAhU,oBACA,qBAKAiU,mBACA,qBAKAC,iBACA,eAKAjnR,aACAhkB,8BAEAgkB,YACA,mBAKA61Q,gBACA,kBAEA75R,wBADA,EACAy7P,EAEAo+B,eACA,2CAKApM,gBACA,UAAc,YAAmB/pP,iBAGjC1jC,2GAFA,CAOAkrS,uBAEA,kCAGA,uBAEAC,mBACA,kEAKAC,0BACA,iEAEAx4R,kBACA5S,gBACAA,yBACAA,yBACAA,wBAEAo0B,gBACY,QAAS,6BACrBp0B,iBAEY,QAAS,aACrBA,0BACAA,yBAGAkJ,cACAlJ,+BACAA,6BACAA,0CAEAA,0BAKA8S,QACA9S,eAGAA,gCAKA+/H,QACA//H,+BACAA,gBACAA,gCAKAmhS,mBACAnhS,qDAGAA,aACAopQ,kCAKAg4B,gBACAphS,+BAGAA,wEACAA,wBAKAqhS,kBACArhS,+BAGAA,2EACAA,uCAKAqrS,oBACA,mCAGAjiC,oCACAA,mBACA,8CACAppQ,wEACA,QACA27P,KACA,kBACA,aACAD,EApPA,EAqPA,UACA,YACAA,GAvPA,EAwPA,UACA,UACAC,IA1PA,EA2PA,UACA,YACAA,GA7PA,EAiQA,qCACAE,+BACA77P,kCAAgE47P,QAChE57P,mCAAiE67P,QACjE77P,iDAMAsrS,kBACA,gCACA,OAEAtrS,8CACA,yCACA07P,kCACA17P,8CAKAurS,yBACAvrS,sCACAA,2BACAA,oDAKAw/R,2BACAx/R,kBACAA,sCAKAwrS,2BACA,0BACAxrS,iBACAA,0BACAA,iBAMA+9F,cACA/9F,aACA0jC,0BACA1jC,gBAMAk+F,oBACAl+F,uBAKAo+F,qBACAp+F,uBAKAoxR,oBACApxR,wBACAA,gBAKAyrS,+BACA,2DAKAC,mCACA,mCACA,SAAkB1rS,mEAKlB2rS,qBACA,uDAKAC,yBACA,2DAKAC,uBACA,mDAMAlY,UACA,SAEAmY,oBACA,yCACAnwC,mCACA37P,wCACAA,uCACAA,yCACAA,sCACAA,kDAAsEA,WAAeyP,QAErFs8R,WACA,KAAa,UACb,OAEA/rS,qBA7wBA,aACA,SAAmB,SAAU8/R,MAC7B,aAGArkC,UAFA,IA0wBA9zD,cAAwDpnM,iBACxD,iDACAk7P,sCACAz7P,uCACAA,qCACAA,oDACAA,+BAEA2/R,qBACA3/R,iBAGAA,aACAA,yBACAA,wBACAA,gCAEAgsS,kCACA,8CACAhsS,kCAAqDopQ,OACrDppQ,mCAAsDy7P,OAEtDwwC,4BACA,yBACA,OAEA,6CACAjsS,8EAAkGopQ,MAElG8iC,0BACA,mCACAlsS,mEAA6EA,qEAE7EmsS,oBACAnsS,mCACA,sEAp1OA,yCAq1OAojR,4CAz1OA,+CAjBA,gBA02OAH,aACAjjR,8CAGAy7P,4EACAz7P,4BAEA07P,0EACA17P,4EACAA,+BACAA,6DAGA27P,6EACA37P,gFAEA47P,8EACA57P,mFAEAA,mCAGAosS,mBACApsS,wDAAiE,QAAYA,2BAC7EA,4BAGAqsS,qBACArsS,iCACAA,gDA4SA,OAxSAi7J,yBAA2E,kBAAyCxrJ,8BAAyBA,cAAoBA,8BAAyBA,UAAgBA,8BAAyBA,aAAmBA,8BAAyBA,qBAA2BA,8BAAyB2gD,SACnU6qG,aAA4CxrJ,8BAAwB,CAAG7H,oEAKjE,GALiM,MAC/L6H,wBAAkB0+H,KAAU1+H,cAC5BA,wBAAkB4+H,MAClB5+H,wBAAkBm/H,MAClBn/H,wBAAkBotB,OACpB,KACN,MACQptB,2BAAqBisP,EAAMjsP,6BAAkBgsP,8BAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,kBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,uBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,6BAC9C4kB,sCAAqF,MACpF5wQ,wBAAkB,kBAAlBA,CAAkB,oCAAlBA,CAAkB,0BAAlBA,CAAkB,mBAClBA,wBAAkB,gCAAlBA,CAAkB,sCACnB+5E,QAAYnf,yLAA4MovM,SAAapsH,2BAA4BssH,UAAalqQ,+BAAyB,CAC9S,CACAgvF,SACApW,QAAyB33E,oBACzB8tF,aAA6B,gBAAU,SAEvC,CACAnW,QAAyBh4B,KACzBmuC,aAA6B,gBAAU,SAEvCksM,GACA,CACAriN,QAAyBj4B,MACzBouC,gBAEA,CACAnW,QAAyBj4B,MACzBk4B,kCAEY74E,kCAA2BggC,mCAA8C,OAU/E25N,EAUA3N,EAUAC,EAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GAUAoE,GAUAC,GASN,OAxHAw/B,kOAUA12B,sLAUA3N,uJAUAC,4JAUAC,yKAUAC,uKAUAC,gKAUAC,uKAUAC,oKAUAC,iKAUAC,yJAUAoE,0JAUAC,8KACM,4tDAAk8DpjK,uBAAgE,MAChgEztF,+BAAyB,KACzBA,2BAAqB,UAArBA,CAAqB,UAArBA,CAAqB,aACrBA,uBAAiB,qBAAkF,6BAAnGA,CAAuI,0BAA6F,8BAApOA,CAAyQ,yBAA2F,2BAApWA,CAAsY,0BAA2F,6BACjeA,sBAAgB,aAChBA,6BACAA,2BAAqB,SACrBA,uBAAiB,mBACjBA,2BAAqB,oBACrBA,uBAAiB,2BAAuG,oBAAxHA,CAAqJ,2BAAwG,qCAC7PA,2BACAA,uBAAiB,6BACjBA,6BACAA,2BAAqB,6BACrBA,uBAAiB,2BAA4G,uCAC7HA,2BACAA,uBAAiB,oBACnB,MACEA,sBAAgB,GAChBA,wBAAkB,gCAClBA,sBAAgB,GAChBA,wBAAkB,mCAAlBA,CAAkB,6CAClBA,sBAAgB,GAChBA,mCAA6B,2EAC7BA,sBAAgB,GAChBA,uBAAiB,sBACjBA,sBAAgB,GAChBA,uBAAiB,UAAYA,4BAAsB,qBAAnDA,CAAmD,mCAAnDA,CAAmD,sBAAnDA,CAAmD,sBAAnDA,CAAmD,iBAAnDA,CAAmD,uBAAnDA,CAAmD,cAAnDA,CAAmD,QAAnDA,CAAmD,UAAnDA,CAAmD,cAAnDA,CAAmD,eAAnDA,CAAmD,kBACnDA,sBAAgB,GAChBA,uBAAiB,qCACjBA,sBAAgB,GAChBA,uBAAiB,oBAAjBA,CAAiB,sBAAjBA,CAAiB,gBAAjBA,CAAiB,sBAAjBA,CAAiB,uBACjBA,sBAAgB,GAChBA,uBAAiB,gCAClB+wQ,sBAA4B,UAA+CnwN,KAA2B10B,MAAWkgK,GAAmBlgK,MAAc4pK,QAA4CvlH,sPACrM79E,EAAU,EACN,iBAAW,yBACXrC,EAAU,wBACdm7J,mCACA94J,EAAU,EACN,iBAAW,sBACXrC,EAAU,uBACVA,EAAU,yBACdm7J,uCACA94J,EAAU,EACN,iBAAW,0BACXrC,EAAU,uBACVA,EAAU,yBACdm7J,mCACA94J,EAAU,EACN,iBAAW,iBACXrC,EAAU,sBACVA,EAAU,yBACdm7J,kCACA94J,EAAU,EACN,iBAAW,WACXrC,EAAU,sBACVA,EAAU,yBACdm7J,gCACA94J,EAAU,EACN,aACArC,EAAU,uBACdm7J,0BACA94J,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACdm7J,iCACA94J,EAAU,EACN,aACArC,EAAU,wBACdm7J,+BACA94J,EAAU,EACN,aACArC,EAAU,wBACdm7J,gCACA94J,EAAU,EACN,aACArC,EAAU,wBACdm7J,gCACA94J,EAAU,EACN,aACArC,EAAU,wBACdm7J,mCACA94J,EAAU,EACN,aACArC,EAAU,uBACdm7J,6BACA94J,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdm7J,2BACA94J,EAAU,EACN,aACArC,EAAU,uBACdm7J,oCACA94J,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdm7J,8BACA94J,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BwrJ,mCACA94J,EAAU,EACN,aACArC,EAAU,uBACdm7J,8BACA94J,EAAU,EACN,eAAS,sBAAyBs+Q,KAAMhxQ,aAAU4nE,YAClDv3E,EAAU,cAAgB2P,eAC9BwrJ,0CACA94J,EAAU,EACN,eAAS,UAAak1E,YACtBv3E,EAAU,mBACdm7J,8BACA94J,EAAU,EACN,eAAS,eAAkBk1E,YAC3Bv3E,EAAU,mBACdm7J,mCACA94J,EAAU,EACN,eAAS,mBAAsBk1E,YAC/Bv3E,EAAU,cAAgB2P,eAC9BwrJ,uCACAA,MAAoD94J,EAAU,CAAGrC,EAAU,qBAAuB2P,aAC1FA,SACAA,YACAA,oBACA2gD,SACR6qG,IAKA,SAKA9M,YACAtuJ,sBACAG,oBACAA,WACAA,2BACAA,eAIAA,oBAIAA,kCAA4CssS,KAI5CtsS,qBAIAA,iBAIAA,iBAaAA,mBAIAA,qBAA+ByP,eAK/BzP,cAAwByP,eAKxBzP,eAAyByP,eAIzBzP,iBAA2ByP,eAI3BzP,gBAA0ByP,eAO1BzP,0BAAoCyP,eACpCzP,iBACAA,qBAAgCo/Q,YAChCp/Q,yBACAA,wBAAmC8qS,mCACnC9qS,4BACAA,6BACQ,QAAe8jR,IACvB9jR,yEAAoFitR,WACpFjtR,gCAMAgkB,aACAhkB,8BAEAgkB,YACA,mBAKAmrE,qBACAnvF,yDAEAmvF,oBACA,2BAKAo9M,uBACAvsS,6DAEAusS,sBACA,6BAKAC,wBACAxsS,+DAEAwsS,uBACA,8BAKA3S,gBACA,kBAEA75R,wBADA,EACAy7P,EAEAo+B,eACA,2CAKAjJ,aACA,yBAKA6b,iBACA,sBACAzsS,eAEAA,UACA,cAAiCA,iBADjC,CACiC,CAGjCwC,WACA,6BAvJA,SACA,aAuJAi5P,gCACAC,4BACAiuC,mBACA,EACA3pS,uBACA0sS,aACAC,4CACA/8Q,8CAGAwE,eACAg1O,2CACAppQ,qBAEA,wDACAA,mBACAA,uCAGAkJ,cACAlJ,kBACAA,6BACAA,0CAMA4sS,qBACA5sS,oCACAA,aAKAy/R,yBACAz/R,aACA,2BACAA,gCACAopQ,mCACAppQ,0BAMA8S,QACA9S,eAGAA,mCAKA6sS,qBACAnpQ,kBACA1jC,oCAEAA,iBAGAA,kBACAA,qBAKAwtJ,OACAxtJ,kCAKA8sS,oBACA9sS,cAGAA,kBACAA,mBACAA,wBAKA+/H,SACAr8F,iBAGA1jC,mBACAA,8BAQAo9F,UACAp9F,+BAGAA,mBACAopQ,yBAEAppQ,kBAMA2/R,uBACA,0BACAhkC,kBACAF,IACAz7P,0BACAA,cAEA27P,KACA37P,aACAA,yBACAA,yBAMA0/R,mBACA,6DACAhkC,gDACA17P,uBAGAA,kBACAA,mBACAA,uBACAA,2BAKA+9F,cACA/9F,aAKAk+F,oBACAl+F,uBAKAo+F,qBACAp+F,uBAKAoxR,oBACApxR,wBACAA,gBAKA+sS,yBACA3jC,YAA8B/4M,gBAAc+4M,YAAsB/4M,cAClE+4M,mBACAppQ,2BAMA4/R,sBAKA,GAJAx2B,YAA8B/4M,cAC9BrwD,0BACAA,oCAEAopQ,YAA8B/4M,SAAQ,CACtC,0GACAqrM,0CACA17P,+EACA,eACA,gBAGA,OAFAopQ,wBACA1N,eACA,GAIA0N,aAGA,OAFAA,wBACA3N,SACA,EASAk4B,UACA,SAEAqZ,oBACA,wBACA,mCACA,OAEA,eACA5jC,uCACA1N,wBACA17P,eAEAopQ,GACAppQ,mCACA6N,gBACA7N,oBACAA,gEAMAq4R,YACA,8CACA58B,GAAiCu2B,gCACjCt2B,GAAgCs2B,6BAChChyR,sCACAiyR,oBACA7S,mCACAsR,qCACA2B,aACAC,cACAH,iCACAD,2BACAE,0BAEApyR,sDACAA,0BACAA,aACAA,kCACAitS,qBAKA7U,cACAp4R,cAGAA,sBACAA,mBACAA,qBAGAmuJ,yBAAuE,kBAAuC1+I,8BAAyB+6E,OAAsB/6E,8BAAyBA,qBAA2BA,8BAAyB2gD,OAA6B3gD,8BAAyBA,YAChS0+I,aAA0C1+I,8BAAwB,CAAG7H,kEAM/D,GANyL,MACvL6H,wBAAkBmrK,KAAUnrK,cAC5BA,wBAAkByqI,KAAUzqI,oBAC5BA,wBAAkBk/B,MAClBl/B,wBAAkB0qI,MAClB1qI,wBAAkBytB,OACpB,KACN,MACQztB,2BAAqBisP,EAAMjsP,6BAAkBgsP,mBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,qBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,mBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,yBAC7ChsP,2BAAqBisP,EAAMjsP,6BAAkBgsP,2BAC9C4kB,sCAAmF,MAClF5wQ,wBAAkB,mBAClBA,wBAAkB,yBAAlBA,CAAkB,iCACnB+5E,QAAYorM,uQAA8Rnb,SAAapsH,uHAAkIssH,UAAalqQ,+BAAyB,EACtegvF,SACApW,QAAyB33E,oBACzB8tF,aAA6B,gBAAU,SAC1B,CACbnW,QAAyBh4B,KACzBmuC,aAA6B,gBAAU,SAEvC8tJ,GACA,CACAjkK,QAAyBj4B,MACzBouC,gBAEA,CACAnW,QAAyBj4B,MACzBk4B,gCAEY74E,kCAA2BggC,mCAA8C,OAU/E25N,EAUA3N,EAUAC,EAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GASN,OAhFA+jC,qLAUA12B,oJAUA3N,0JAUAC,sKAUAC,mKAUAC,+JAUAC,oKAUAC,kKAUAC,+JACM,gxCAAu8C7+J,uBAA8D,MACngDztF,+BAAyB,KACzBA,2BAAqB,cACrBA,uBAAiB,mBAA2E,+BAA5FA,CAA8H,kBAA0E,8BAAxMA,CAAyO,yBAA0F,4BAAnUA,CAAoW,uBAAsF,oCAC1bA,uBAAiB,mBACjBA,uBAAiB,mBACjBA,2BAAqB,YACrBA,uBAAiB,mBAA2E,gCAC5FA,sBAAgB,YAChBA,6BACAA,uBAAiB,8BAA+EA,oCAChGA,+BAAyB,WAC3B,MACEA,sBAAgB,GAChBA,uBAAiB,UAAYA,4BAAsB,6BAAnDA,CAAmD,oBACnDA,wBAAkB,yBAAlBA,CAAkB,2BAAlBA,CAAkB,2BAAlBA,CAAkB,qBAAlBA,CAAkB,uBAClBA,sBAAgB,GAChBA,uBAAiB,sBACjBA,sBAAgB,GAChBA,uBAAiB,uBAClB+wQ,sBAA4B,UAA+C7kP,MAAgBA,MAAWs/H,WAA6Eo/G,kBAC1Ll4Q,EAAU,EACN,iBAAW,mBACX,iBAAW,uBACXrC,EAAU,wBACdquJ,mCACAhsJ,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACdquJ,iCACAhsJ,EAAU,EACN,aACArC,EAAU,uBACdquJ,mCACAhsJ,EAAU,EACN,aACArC,EAAU,uBACdquJ,4BACAhsJ,EAAU,EACN,aACArC,EAAU,wBACdquJ,gCACAhsJ,EAAU,EACN,aACArC,EAAU,wBACdquJ,gCACAhsJ,EAAU,EACN,aACArC,EAAU,uBACdquJ,8BACAhsJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdquJ,2BACAhsJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdquJ,mCACAhsJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdquJ,qCACAhsJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdquJ,sCACAhsJ,EAAU,EACN,aACArC,EAAU,uBACdquJ,4BACAhsJ,EAAU,EACN,aACArC,EAAU,uBACdquJ,iCACAhsJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdquJ,8BACAhsJ,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B0+I,mCACAhsJ,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B0+I,4BACAhsJ,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B0+I,6BACAhsJ,EAAU,EACN,YAAM,SACNrC,EAAU,cAAgB2P,iBAC9B0+I,+BACAhsJ,EAAU,EACN,YAAM,QACNrC,EAAU,cAAgB2P,iBAC9B0+I,8BACAhsJ,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9B0+I,wCACAhsJ,EAAU,EACN,eAAS,aAAgBs+Q,KAAMhxQ,mBAAgB4nE,YAC/Cv3E,EAAU,cAAgB2P,qBAC9B0+I,iCACAhsJ,EAAU,EACN,eAAS,WAAck1E,YACvBv3E,EAAU,cAAgB2P,eAC9B0+I,+BACAhsJ,EAAU,EACN,eAAS,iBAAoBk1E,YAC7Bv3E,EAAU,cAAgB2P,gBAC9B0+I,qCACAhsJ,EAAU,EACN,eAAS,WAAcs+Q,KAAMhxQ,aAAU4nE,YACvCv3E,EAAU,cAAgB2P,eAC9B0+I,+BACAhsJ,EAAU,EACN,eAAS,iBAAoBk1E,YAC7Bv3E,EAAU,mBACdquJ,qCACAA,MAAgDhsJ,EAAU,CAAGrC,EAAU,qBAAuB0qF,MACtF/6E,oBACA2gD,MACA3gD,YACR0+I,IAKA,aAIAtuJ,cACAG,kBAEAktS,oBAEA,GADAltS,kBACA0jC,gBAGA,eACA,YAA4Bg4N,WAAwBA,MACpD,wBACA17P,0BAGAmtS,oBACA,SAGA,YAA0B1xC,wBAA6BA,IACvD,YAA8BC,2BAAkCA,IAChE,4BACA,OAA6BnlM,aAK7B62O,cACA,oCAGA,oCAEAC,mBACA,kCACA,OAAqB92O,aAErB,0DAEA,OAAiBA,WADjBv2D,qDACiB,CAEjBivR,gBAEA,WACA,EAEA7lB,IACA3N,EAEA2N,IAGAh7G,yBAAqE,mBACrEA,cAA0C3+I,+BAAyB,CAAGgwP,8BAAoD,2BAK1H,qBAAoFrvM,MACpFvwD,sBACA8rB,aACA3rB,gCAEAa,OACA,oCACAb,oCAEA2rB,eAaA,OAVA6jI,yBAA6F,kBAAkD//I,qBAAgB2gD,OAAc3gD,qBAAgB2gD,MAAqB,GAAM3gD,qBAAgB2gD,MAAG,GAAM3gD,qBAAe68O,QAChQ98F,cAAsD//I,+BAAyB,CAAGgwP,8BAAgE,2BAClJjwG,GAAkCrtJ,EAAU,CACxCgP,EAAO,GAAI,YAAOi/C,QAClBj/C,EAAO,GAAI,iBACXA,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAOi/C,QAC1Cj/C,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAMm7O,KACzCxsP,EAAU,4BAA+BswD,MAAcurN,cAC3DnsH,IAOA,SAKAM,YACAjwJ,yBACAG,YACAA,eACAA,WACAA,iBACAA,4BAIAA,0BAAoC6vJ,KAWpC7vJ,kBAIAA,iBAIAA,iBAQAA,eAA0B2V,MA9C1B,GA8C0BzB,OA9C1B,IAkDAlU,yBAAmCyP,eAInCzP,qBAA+ByP,eAM/BzP,uBAAiCyP,eAIjCzP,oBACAA,iBACAA,4BACAA,4BACAA,mDAA+EitR,WAC/EjtR,gCAMAstS,gBACA,eAKAtpR,aACAhkB,8BAEAgkB,YACA,mBAMA4L,eAEA5vB,sBAEA4vB,cACA,qBAUA88Q,eACAhpQ,QACA0lO,EA1GA,UA4GA,gCACAppQ,yCACAopQ,gBAEA,0CACAppQ,6CAEA0sS,cACA,qBAKA7S,gBACA,kBAEA75R,wBADA,EACAy7P,EAEAo+B,eACA,2CAKA0T,iBACA,qCACAvtS,cAEA,CAAiB2V,0CAKjB63R,gBACA,8BAKAxC,mBAAyB,qBAIzBjU,oBAA0B,qBAI1BgU,wBAA8B,qBAC9BvoS,WACA,8BACA,6BA9JA,SACA,aA8JAxC,6BACAA,eACAA,4DAGA4S,kBACA5S,+BAEAkJ,cACAlJ,6BACAA,0CAGAo0B,gBACAg1O,uBACAppQ,gBAEAopQ,iCACAppQ,2DACAA,gCAMAorR,iBACA,+BACA,uBACiB/6N,eACjBrwD,+BACA,WACiBqwD,aACjBrwD,gCACA,WACiBqwD,gBACjBrwD,oCACA,WACiBqwD,eACjBrwD,oCACA,WACiBqwD,WACjBrwD,mBACA,cACA,OAEAopQ,mBAKAqkC,iBACAztS,uBACAA,6BAKA6/R,yBACA,iBACA,OAEA7/R,oBACAA,mCACAA,yBACA,6BACAA,2BACAA,iBACAA,aACAA,yBACAA,wBACAA,gCAEAA,qBACAA,iBACAA,8BAEAy7P,IACAz7P,qBAAmCA,yBAAyBA,yBAM5D+9F,cACA/9F,aACAA,2DAKAk+F,oBACAl+F,uBAKAo+F,qBACAp+F,uBAKAoxR,oBACApxR,wBACAA,gBAMA2zR,UACA,SAKA5zJ,QACA//H,sBACA0jC,iBACA1jC,mBACAA,8BAGA0tS,wBACA1tS,yBACAA,mCAEA2tS,WACAjqQ,mBAGA1jC,2BAnSA,GAoSAA,wDAEA4tS,0BACA5tS,gBAGAA,gEACAA,0BAEAksS,0BACA,mCACAlsS,mEAA6EA,oEAE7Ew+Q,cACA,yBACA,OAEA,kDACAx+Q,+CAGA8vJ,yBAAyE,kBAAwCrgJ,8BAAyBA,cAAoBA,8BAAwB2+I,IAAuB3+I,8BAAyBA,qBAA2BA,8BAAyBA,aAAmBA,8BAAyB2gD,SACtU0/F,aAA2CrgJ,8BAAwB,CAAG7H,iFAAoJ,KAClN6H,uBAAiB,uBAAgF,4BAAjGA,CAAoI,kBAAqE,4BAC3M,MACEA,wBAAkB,kBAAlBA,CAAkB,iBAAlBA,CAAkB,0BAAlBA,CAAkB,gCAAlBA,CAAkB,qCAClBA,wBAAkB,+BAAlBA,CAAkB,sCACnB+5E,QAAYnf,2JAA4KovM,SAAap/D,2FAAgGs/D,UAAalqQ,+BAAyB,CAClV,CACAgvF,SACApW,QAAyB33E,oBACzB8tF,aAA6B,gBAAU,SAC1B,CACbnW,QAAyBh4B,KACzBmuC,aAA6B,gBAAU,SAEvC4vD,GACAoB,GACA,CACAnnE,QAAyBj4B,MACzBouC,gBAEA,CACAnW,QAAyBj4B,MACzBk4B,iCAEY74E,kCAA2BggC,iCAA4C,OASnF,qOACM,uXAAuaytD,uBAA+D,MACpeztF,+BAAyB,KACzBA,2BAAqB,UAArBA,CAAqB,YAArBA,CAAqB,WACrBA,uBAAiB,iBACjBA,gCACF,MACEA,sBAAgB,GAChBA,wBAAkB,wCAClBA,sBAAgB,GAChBA,uBAAiB,yBAClB+wQ,sBAA4B,UAA+C7kP,MAAgBA,QAAkB0+O,kBACpHl4Q,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACdgwJ,iCACA3tJ,EAAU,EACN,iBAAW,WACXrC,EAAU,sBACVA,EAAU,yBACdgwJ,+BACA3tJ,EAAU,EACN,aACArC,EAAU,uBACdgwJ,0BACA3tJ,EAAU,EACN,aACArC,EAAU,uBACdgwJ,8BACA3tJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdgwJ,2BACA3tJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdgwJ,6BACA3tJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdgwJ,6BACA3tJ,EAAU,EACN,aACArC,EAAU,sBACVA,EAAU,+BACdgwJ,8BACA3tJ,EAAU,EACN,aACArC,EAAU,wBACdgwJ,gCACA3tJ,EAAU,EACN,aACArC,EAAU,wBACdgwJ,gCACA3tJ,EAAU,EACN,aACArC,EAAU,uBACdgwJ,gCACA3tJ,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BqgJ,uCACA3tJ,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BqgJ,mCACA3tJ,EAAU,EACN,cACArC,EAAU,cAAgB2P,iBAC9BqgJ,qCACA3tJ,EAAU,EACN,iBAAW,iBACXrC,EAAU,sBACVA,EAAU,yBACdgwJ,kCACA3tJ,EAAU,EACN,iBAAW,wBACXrC,EAAU,wBACdgwJ,mCACA3tJ,EAAU,EACN,iBAAW,uBACX,iBAAW,0BACXrC,EAAU,uBACVA,EAAU,yBACdgwJ,mCACA3tJ,EAAU,EACN,iBAAW,sBACXrC,EAAU,uBACVA,EAAU,yBACdgwJ,uCACA3tJ,EAAU,EACN,kBAAY,sBACZrC,EAAU,wBACVA,EAAU,8BACVA,EAAU,6BACdgwJ,mCACA3tJ,EAAU,EACN,kBAAY,QACZrC,EAAU,wBACVA,EAAU,wBACVA,EAAU,6BACdgwJ,oCACAA,MAAkD3tJ,EAAU,CAAGrC,EAAU,qBAAuB2P,aAChG2+I,GACQ3+I,oBACAA,YACA2gD,SACR0/F,IAKA,iBAAkC1/F,OA6DlC,OA3DA2/F,wBAAuD,OAAsC,mBAAiD,eAAgFtgJ,kCAA4BsgJ,cAA1P,GACAA,aAAyCtgJ,8BAAwB,CAAG7H,gBAAqCimS,yhBAAojBl0B,UAAalqQ,0CAC1qBtN,EAAU,EACN,aACArC,EAAU,uBACdiwJ,2CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,4CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,2CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,mCACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,uCACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,2CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,2CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,2CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,6CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,4CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,6CACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,oCACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,oCACA5tJ,EAAU,EACN,aACArC,EAAU,uBACdiwJ,qCAMA,2BACAlwJ,eACA8rB,QACA3rB,eAEA48R,eACA,WAaA,OAVA3sI,yBAAmG,kBAAqDxgJ,8BAAyB2gD,SACjL6/F,aAAwDxgJ,8BAAwB,CAAG7H,8HAAqK6H,+BAAyB,CACjR,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,wCAAiCggC,wCAAiG4qO,kBAC9IpqH,MAA4E9tJ,EAAU,CAAGrC,EAAU,qBAAuBswD,SAC1H6/F,IAMA,2BACApwJ,eACA8rB,QACA3rB,iBAGAm2Q,yBAAyG,kBAAwD1mQ,8BAAyB2gD,SAC1L+lN,aAA2D1mQ,8BAAwB,CAAG7H,qKAAqN6H,+BAAyB,CACpU,CACA44E,WACAmW,aAA6B,gBAAU,WAE3B/uF,0CACZ0mQ,MAAkFh0Q,EAAU,CAAGrC,EAAU,qBAAuBswD,SAChI+lN,IAKA,aACAt2Q,iBACAG,YACAA,cAEA2lR,qBACA3lR,uBAEA8tS,kBACA9tS,qFAGAs2Q,yBAA+E,kBAA2C7mQ,8BAAyBA,cAAoBA,8BAAyBA,YAChM6mQ,aAA8C7mQ,8BAAwB,CAAG7H,qDACzE0uQ,GAA2Bn0Q,EAAU,CAAGrC,EAAU,qBAAuB2P,aACjEA,YACR6mQ,IAKA,aACAz2Q,eACAG,oBAEA+tS,kBACA,6CAEAC,kBACA,6CAEAC,mBACA,SAAkBjuS,cAAcA,0BAGhCkuS,yBAAqF,kBAA8Cz+R,8BAAyB2gD,SAC5J89O,aAAiDz+R,8BAAwB,CAAG7H,8DAA+FA,uCAA4Ck6Q,MAr7SvN,+BAq7SuNryO,2SAAgY,MAC/kBhgC,2BAAqB,UACrBA,mBAAa,GACbA,2BACAA,uBAAiB,mBACjBA,uBAAiB,oBACnB,MACEA,sBAAgB,GAChBA,8BAAwBgsP,gBACxBhsP,sBAAgB,GAChBA,uBAAiB,eACjBA,sBAAgB,GAChBA,uBAAiB,kBAClB+wQ,YAAe7kP,OAAW0+O,kBACjCl4Q,EAAU,EACN,aACArC,EAAU,uBACdouS,4BACA/rS,EAAU,EACN,aACArC,EAAU,uBACdouS,6BACA/rS,EAAU,EACN,aACArC,EAAU,wBACdouS,4BACAA,GAA8B/rS,EAAU,CAAGrC,EAAU,qBAAuBswD,SAC5E89O,IAKA,aACAruS,eACAG,oBACAA,aAtlEA,IAulEAA,cA3lEA,CA2lEA,CAEAmuS,oBACA,qCAEAC,2BACA,8CAEAC,2BACA,wCAEAC,4BACA,yCAEAC,oBAEA,OADA7E,oCAIA9hG,yBAAiE,kBAAoCn4L,8BAAyB2gD,SAC9Hw3I,aAAuCn4L,8BAAwB,CAAG7H,wDAA+Eoc,6BAAgC89P,MAx9SjL,yBAw9SiLryO,6fAA8lB,MACvwBhgC,2BAAqB,UAArBA,CAAqB,YACrBA,mBAAa,GACbA,2BACAA,uBAAiB,mBACjBA,uBAAiB,mBACjBA,2BACAA,sBAAgB,UAAhBA,CAAgB,YAClB,MACEA,sBAAgB,GAChBA,+BAAyB,mDACzBA,sBAAgB,GAChBA,uBAAiB,+BACjBA,sBAAgB,GAChBA,uBAAiB,gCACjBA,sBAAgB,GAChBA,uBAAiB,mBAAjBA,CAAiB,+BACjBA,sBAAgB,GAChBA,uBAAiB,mBAAjBA,CAAiB,kCAClB+wQ,YAAe7kP,MAAWuyQ,sBACjC/rS,EAAU,EACN,aACArC,EAAU,uBACd8nM,6BACAzlM,EAAU,EACN,aACArC,EAAU,uBACd8nM,6BACAA,GAAoBzlM,EAAU,CAAGrC,EAAU,qBAAuBswD,SAClEw3I,IAmBA,eAEA4mG,yBAAiE,mBACjEA,aAAuC/+R,6BAAuB,CAAG7H,UACjE4mS,aAAuC/+R,6BAAuB,CAAG65H,UACjEm5D,EACA0nB,GACYxuL,MACA6uD,MACAn6B,SAYZ,aAUAxwD,cACAG,qBAGAyuS,yBAAiE,mBACjEA,aAAuCh/R,8BAAwB,CAAG7H,uFAAoJ,KAC9M6H,wBAAkB,8BAE1BtN,EAAU,EACN,iBAAW,oBACXrC,EAAU,wBACd2uS,kCAiCA,eAEAC,yBAA2D,mBAC3DA,aAAoCj/R,6BAAuB,CAAG7H,UAC9D8mS,aAAoCj/R,6BAAuB,CAAG65H,UAAW3tG,UAWzE,aAUA97B,cACAG,qBAGA2uS,yBAAuE,mBACvEA,aAA0Cl/R,8BAAwB,CAAG7H,0FAA6J,KAC1N6H,wBAAkB,2BAE1BtN,EAAU,EACN,iBAAW,iBACXrC,EAAU,wBACd6uS,kCAiCA,eAEArV,yBAAiE,mBACjEA,aAAuC7pR,6BAAuB,CAAG7H,UACjE0xR,aAAuC7pR,6BAAuB,CAAG65H,UAAW3tG,UAE5E,SAKA05O,SAKAx1Q,cACAG,kBAQAA,mBAIAA,uBAAiC4uS,KACjC5uS,2BAEA6uS,iBACA,2BAEAC,eACA,yBAEAC,kBACA,iBAGA15B,yBAA2D,mBAC3DA,aAAoC5lQ,8BAAwB,CAAG7H,8EAAmI,MAC1L6H,wBAAkB,uBAAlBA,CAAkB,oBAClBA,wBAAkB,2BAAlBA,CAAkB,4BAAlBA,CAAkB,2BACnB+5E,QAAYwlN,eAAgBjvN,4DAAqG,MAChItwE,8BACAA,yBAAmB,KACpB4qQ,kBACPl4Q,EAAU,EACN,iBAAW,sBACXrC,EAAU,wBACdu1Q,iCACAlzQ,EAAU,EACN,aACArC,EAAU,uBACdu1Q,6BACAlzQ,EAAU,EACN,iBAAW,aACXrC,EAAU,uBACdu1Q,qCACAlzQ,EAAU,EACN,iBAAW,sBACXrC,EAAU,uBACVA,EAAU,yBACdu1Q,gCACAlzQ,EAAU,EACN,iBAAW,oBACXrC,EAAU,uBACVA,EAAU,yBACdu1Q,8BACAlzQ,EAAU,EACN,iBAAW,WACXrC,EAAU,sBACVA,EAAU,yBACdu1Q,iCAEA,SAIAjrE,SAIAvqM,cAQAG,mBAIAA,sBAAgCyoM,KAChCzoM,kBAEA6uS,iBACA,2BAEAC,eACA,yBAEAC,kBACA,iBAGA3kG,yBAAyD,mBACzDA,aAAmC36L,8BAAwB,CAAG7H,6EAAgI,MACtL6H,wBAAkB,oBAClBA,wBAAkB,0BAAlBA,CAAkB,4BAAlBA,CAAkB,2BACnB+5E,QAAYwlN,eAAgBjvN,4DAAoG,MAC/HtwE,8BACAA,yBAAmB,KACpB4qQ,kBACPl4Q,EAAU,EACN,aACArC,EAAU,uBACdsqM,6BACAjoM,EAAU,EACN,iBAAW,qBACXrC,EAAU,wBACdsqM,iCACAjoM,EAAU,EACN,iBAAW,sBACXrC,EAAU,uBACVA,EAAU,yBACdsqM,gCACAjoM,EAAU,EACN,iBAAW,oBACXrC,EAAU,uBACVA,EAAU,yBACdsqM,8BACAjoM,EAAU,EACN,iBAAW,WACXrC,EAAU,sBACVA,EAAU,yBACdsqM,iCAMA,aACAvqM,mBACAG,gBACAA,2BACAA,mBACAA,kBAYAA,yBASAA,4BAWAA,0BACAA,uBAAiCuX,IACjCvX,aACQ,QAAe8jR,IACvB9jR,oEAA6EitR,WAC7EjtR,YACAA,uCAGAivS,iBACA,uBAGAjvS,iEAFA,CAIA+2R,oBAKA,SAJA/2R,cAIAA,qCAGAA,wBACAA,wBACAA,2BAEAi1G,oBACAj1G,4BACAA,qBAKAgyR,iBACA,sCAKAkd,eACA,yDAKAztR,gBACA,2DAEA7O,kBACA5S,sBAEAkJ,cACAlJ,iCAEAmvS,qBACA,iDAEAC,kBACA,6BAEAC,kBAEA,YADAC,6BACA5mK,mDAEA6mK,uBACA,IAAY,kBAAS,sCACrB,sOAKAC,kBACA,aACA,SAEA,qBACA,gEAEAC,kBACA,kCAAgD/+R,4BAEhDg/R,oBACA,oCACAtmC,GAGAA,cACA,4DACA,uCACAppQ,sDAIA2vS,sBACA,2BAIA,sDAA8D,UAC9D,kDAAqE3vS,gCAErEA,gDAEA4vS,0BACA,gBACA,2CAEAxmC,EADAx/N,4CACArhC,aACAozP,yDAGAF,YAGAz7P,8BACAy7P,cAEAz7P,+BACAy7P,cAEA7lP,wBAEAi6R,mBACA,iBACA,SAEA,MAAgBpyC,gCAA6Bz9P,aAC7C,eAEAmoS,oBACA,iBACA,SAEA,MAAgBj9O,6BAA0BlrD,aAC1C,iBAEA8vS,iBACA9vS,yBACAA,2FACAA,4FAGAs1Q,yBAAmE,kBAAqC7lQ,8BAAyBA,aAAmBA,8BAAyB2gD,OAA6B3gD,8BAAyBA,gBACnO6lQ,aAAwC7lQ,8BAAwB,CAAG7H,uEAM7D,GANyM,MACvM6H,2BAAqBisP,EAAWrrM,KAAU,GAC1C5gD,2BAAqBisP,EAAWhrP,YAAS,GACzCjB,2BAAqBisP,EAAWhrP,YAAS,EAAKjB,cAC9CA,2BAAqBisP,QACrBjsP,2BAAqBisP,SACvB,KACN,OACQjsP,2BAAqBksP,GAAMlsP,6BAAkBgsP,uBAC7ChsP,2BAAqBksP,GAAMlsP,6BAAkBgsP,mBAC7ChsP,2BAAqBksP,GAAMlsP,6BAAkBgsP,yBAC7ChsP,2BAAqBksP,GAAMlsP,6BAAkBgsP,oBAC7ChsP,2BAAqBksP,GAAMlsP,6BAAkBgsP,qBAC9C4kB,sCAAiF,MAChF5wQ,wBAAkB,mBAClBA,wBAAkB,2BAAlBA,CAAkB,kCAAlBA,CAAkB,2CACnB+5E,QAAYumN,yEAA8Ep2B,UAAalqQ,+BAAyB,CAC3H2gD,MACZ,CACAi4B,QAAyBj4B,MACzBk4B,+BAEAvI,mBA59TA,8DA49TAtwC,0DAA4I,MACpIhgC,4BAAsB4uB,IACtB5uB,yBAAmB,GACnBA,2BAAqB,SACrBA,yBAAmB,KACnBA,uBAAiB,yBACjBA,uBAAiB,yBACjBA,4BACF,MACEA,sBAAgB,GAChBA,wBAAkB,kCAClBA,sBAAgB,GAChBA,uBAAiB,mBACjBA,sBAAgB,GAChBA,uBAAiB,sBAClB+wQ,YAAe7kP,OAAW0+O,kBACjCl4Q,EAAU,EACN,iBAAW,sBACXrC,EAAU,wBACdw1Q,iCACAnzQ,EAAU,EACN,iBAAW,YACXrC,EAAU,uBACdw1Q,iCACAnzQ,EAAU,EACN,iBAAW,4BACXrC,EAAU,uBACVA,EAAU,yBACdw1Q,gCACAnzQ,EAAU,EACN,iBAAW,+BACXrC,EAAU,uBACVA,EAAU,yBACdw1Q,mCACAnzQ,EAAU,EACN,qBAAgBuO,YAAS,CAAIs/R,iBAC7BlwS,EAAU,cAAgB2P,aAC1B3P,EAAU,qBAAuB2P,eACrC6lQ,kCACAnzQ,EAAU,EACN,qBAAgBuO,YAAS,CAAI+vQ,KAAMhxQ,aAAUugS,iBAC7ClwS,EAAU,cAAgB2P,cAC9B6lQ,0CACAnzQ,EAAU,EACN,kBAAakuD,KAAU,CAAIgnB,YAC3Bv3E,EAAU,uBACdw1Q,kCACAnzQ,EAAU,EACN,qBAAekzQ,IAAmB26B,iBAClClwS,EAAU,cAAgB2P,cAC9B6lQ,qCACAnzQ,EAAU,EACN,qBAAeioM,IAAkB4lG,iBACjClwS,EAAU,cAAgB2P,cAC9B6lQ,oCACAnzQ,EAAU,EACN,aACArC,EAAU,uBACdw1Q,iCACAnzQ,EAAU,EACN,aACArC,EAAU,uBACdw1Q,mCACAnzQ,EAAU,EACN,aACArC,EAAU,uBACdw1Q,kCACAA,GAAqBnzQ,EAAU,CAAGrC,EAAU,qBAAuB2P,YAC3D2gD,MACA3gD,gBACR6lQ,IAiCA,eAEA26B,yBAA6D,mBAC7DA,aAAqCxgS,6BAAuB,CAAG7H,UAC/DqoS,aAAqCxgS,6BAAuB,CAAG65H,UAAW3tG,UAkC1E,eAEAyxN,yBAAuD,mBACvDA,aAAkC39O,6BAAuB,CAAG7H,UAC5DwlP,aAAkC39O,6BAAuB,CAAG65H,UAAW3tG,OAAYytQ,iGC1+U5E,wBACP,6FACA,uGACA,uBAA6Cz6P,MAAQA,qEACrD,oDAOO,kBACP,mICnDA,SACAic,oCACAkwN,mCACAC,kDACAC,uBACAC,WACAC,gLAGApqQ,6FAIAS,GACA2+R,wBAA+Bp/R,oBAC/Bq/R,+BAAsCr/R,4BACtCs/R,8BAAqCt/R,2BACrCu/R,8BAAqCv/R,4BACrCw/R,wBAA+Bx/R,qBAC/By/R,uBAA8Bz/R,oBAC9B0/R,sBAA6B1/R,kBAC7B2/R,6BAAoC3/R,0BACpC4/R,wBAA+B5/R,sBAG/B,gBACA,oBACAq9B,uDACA,aAA8BC,MAAWD,KAAcC,GAEvD,gBACA,uBACA,IACA,wBAIA,CAJA,MAEAD,IACA,wBACAA,KAOA,YAAqC52B,MAIrCxB,MAAmCwB,MAInCvB,MAA8BuB,MAI9BtB,MAA4BsB,MAI5BrB,MAAgCqB,MAIhCpB,MAAkCoB,MAQlCiR,IAJA3K,GAA0BtG,MAI1BsG,GAAmCtG,OAInC64C,MAA+B74C,MAI/B84C,KAAiC94C,MAIjC+4C,MAAqC/4C,MAIrCg5C,MAA8Bh5C,MAI9BigB,MAAkCjgB,MAuBlCuoE,QAIA,gBACA,kBAOA,aAIAjgF,cAIAG,iBAA2ByP,gBACnB,OAAeD,GAKvB2rQ,SACAn7Q,sBAGAq4B,0BAAqD,oBACrDA,cAAkC5oB,+BAAyB,CAAGgwP,8BAA+D,YAAc,OAC3ItxN,GAD2IC,GAC3I,OAGAyxC,GAA+BpwE,qBAAgBA,cACzC0+B,IAAWu6G,oBACjBrwH,oBAA8B,kCAAkB,CAAGh2B,mBAA0C,WAA0B,wBAASoN,eAAcgwP,6BAC9IpnO,GAAcl2B,EAAU,CAAGrC,EAAU,yBACrCu4B,IAKA,wBASAx4B,gBACA8rB,QACA3rB,iBAKA2wS,eACA,mBAEAA,iBAIA,4BACAxiQ,mBACAnuC,eACAA,eAWA8G,iBACA,+BAUAD,mBACA,mCAWA+pS,qBACA,mCAUAC,oBACA,mCAUAC,sBACA,kCAUAC,uBACA,mCAoCAC,qBACA,gCAgBAC,uBACA,gCASAC,uBACA,gCAQAC,kBACA,6BAQAC,aACA,6BAQAC,iBACA,+BAGAx2Q,0BAA6D,mBAAkCprB,qBAAgBA,eAC/GorB,cAAsCprB,+BAAyB,CAAGgwP,8BAAgD,2BAClH5kO,GAAkB14B,EAAU,CD/SrB,kBACP,uBAAoCisC,cC8SLj9B,CAAO,GAAI,YAAO1B,cAC7C3P,EAAU,+BACd+6B,IAiBA,aAIAh7B,gBACAG,oBAWAkd,uBAEA,OADAkxB,wBAEApuC,sCAIAsxS,cACA,+BACAljQ,kCAEAA,KA1CAH,GA0CAG,IA1CAzT,4BA2CAyT,6BAEAA,GA7CA,MA6CA,GAGA38B,0BAA+C,mBAA2BhC,8BAAwB4oB,SAClG5mB,cAA+BhC,yBAAmB,CAAGm7C,mCACrDn5C,GAAWtP,EAAU,CAAGrC,EAAU,2BAClC2R,IAeA,aAIA5R,gBACAG,oBAYAkd,oBAIA,MAHA,sBACAkxB,qCAEA,SACApuC,wCAEAouC,KAGAN,0BAAmD,mBAA6Br+B,8BAAwB4oB,SACxGyV,cAAiCr+B,yBAAmB,CAAGm7C,qCACvD9c,GAAa3rC,EAAU,CAAGrC,EAAU,2BACpCguC,IAUA,eAEAE,0BAAmD,oBACnDA,aAAgCv+B,6BAAuB,CAAG7H,UAC1DomC,aAAgCv+B,6BAAuB,+FCjahD,kBACP,uBAAoCwG,wEC5CpC,YAOApW,cAIAG,iBAA2B0Q,IAAe,CAAGu8Q,aAO7C9R,WACAn7Q,mBAA4BitR,SAQ5BpsR,WAIA0Q,yBAA2D,mBAC3DA,aAAqC9B,+BAAyB,CAAGgwP,6BAA+C,0BAQhH,SACAm9B,eACA,SAEAxoQ,gBACAp0B,kBACAupB,mDACAvpB,6BAGAwC,WACAxC,6CAAsD,OAAI,uCAE1DuxS,aACAhoR,gBACAhhB,8DAEAW,cACAlJ,mBACAA,iCAIAwR,0BAAiE,oBACjEA,aAAuC/B,8BAAwB,CAAG7H,kBAAoC6H,oCAWtG,aAAgBA,iBAAc,gCAQ9BqG,OAAwBrG,iBAAc,2BAOtC,aACA5P,sBACAG,eACAA,uBACAA,aACAA,iBAA2B0Q,IAAe,CAAGu8Q,gBAC7CjtR,mBACAkW,KACAlW,6BACAqI,MAAsB,OAAG,EAAI4kR,eAAK,sBAA2C,OAAG98N,mBAChFhqD,eACAnG,mBACAA,mBAAoCitR,YAIpCA,UACA,iBAEA/jR,cACAlJ,mBACAA,gCAGAa,QACA,sBACA,2BAEA0wS,sBACA,sBACA,UACA,QACA,sCACA,OAEA/oR,4BAEAxoB,uBAEAwxS,gBACAxxS,mBAA4BitR,eAE5B32P,QACA,0BAEAm7Q,oBACA,wBACA,UAEA,qCACA,2BAGA17R,0BAAqE,mBAAsCtG,qBAAeqG,IAAerG,qBAAe8B,KAAqB9B,qBAAeoO,QAC5L9H,cAA0CtG,+BAAyB,CAAGgwP,8BAAoD,2BAC1H1pP,GD7GO,wBACP,6FACA,uGACA,sBAA6Cs6C,KAAQA,mEACrD,oDCyGsBluD,CAAU,CAAGgP,EAAO,GAAI,YAAM2E,KAChD3E,EAAO,GAAI,iBACXA,EAAO,GAAI,iBAAaA,EAAO,GAAI,YAAM0M,KDpGtC,kBACP,gGCoGI/d,CAAU,yCACdiW,sFCjHO,wBACP,6FACA,uGACA,uBAA6C2xB,MAAQA,qEACrD,oDAOO,kBACP,4VCpDA,SAAgBzxB,cAAe,GAoB/B,gBACA,sCAGA,8BACA,kCAEA,UAEA2kB,MACAA,YAKA,SADA,6BACA4vD,kBAEA,iBAAuBr6B,KACvBtwD,sBACA8rB,4BACA3rB,iBAEA0xS,OAIA,qBAEAC,UAEA,sBAyBA,mBACApoR,qCACAua,sBAIA,+DAgBC8oK,mBAfDglG,QACA,gBAAwC,uBAExC9tQ,yBACA,gBAAwC,qCAExCA,sBACA,gBAAwC,kCAExCA,qBACA,gBAAwC,iCAExC,aACA,iEAIA,mBACA,cACA,sBAKA,8DACA,6BACA,UAEAA,kBAMA,oBACA,UAMA,gBACA,wBACA,mBACA,2BACA4D,aACA,aACA9C,mBAgBA,IAdA,6BACAF,sCACkB,yDAIlBA,yBACAA,2BACA,iCACAA,mBAEAA,sBACAA,yBAEAG,iBAAwCA,GAAGA,kBAC3CH,uBAGA,WAIA,aACA,yBACA,0BACAgD,wBACAC,6CAEA,yBAA8C1B,GAAGA,kBACjD0B,uBAEA,UARA,CASaxD,IAGbQ,iCACAA,WACAm7C,oDACAj7C,4CAMA,gEACA,oFACAA,yBACAA,2BACA,iCACAA,uBAEAA,0BACAA,8BAGAH,IAtEA,CAyEC,+DAYD,mBACAR,KACAA,OAEA,QAAkB,UAElB,OACA,yCAGA,8CACA,oMAGI1yB,MA8vBJ,gBACA,WACAsyB,aAGA,QADAI,MACAC,KAAoBA,2BAA4BA,GAChDO,uBAEA,UACA,gBACA,OACA,YACA,IACAiD,cACc,CADd,MACc1B,KACd0B,IACA/C,WAIA,gBACA,0BACA,MACA,qCACA,cACA,WACAsB,YAEAA,IACa,IAIb,sBACA,kBAGA,mBACA,aAAwBD,eAAkBA,IAC1C,cACA,qBACA,EACAvB,kBACA,WACA,EACA,gBACA0B,4BACAa,oDACAniC,iCACAoiC,UACAA,aACArC,wBAKA,4BAGA,oBACA,2CACAsB,6CAGAwB,wBACAvB,uCACAH,KACAG,aAEAF,KACAE,eAEAlC,aAt0BkBtyB,oBAElB,OA1BA,gBACA,0BACA,CAAiBpR,WAEjBoV,kBACA,CAAiBpV,iBAEjB,CAAaA,eAmBbguC,cAEA,gBACA,WAAwBhmB,KAGxByd,8BACA,cACAvB,KACA,EACA,EACAA,MACAuB,cACAA,cAGArL,eACAA,WAA2BlqB,WAC3BkqB,qBACAglE,WACAiyM,WAGA,kBACAj3Q,mBAEAA,6BA7LA,mBACAkJ,aACAA,qBAEAA,qBA4LAiK,oBACAtW,UAzLA,mBACAqM,aACAA,wBAEAA,8DACA,eACAK,YAEAA,IACS,cAiLT6J,oBAEArG,GA6cA,OA1cA1Y,kBACA,6BACA0Y,0CACA1B,GAA2Bz0B,KAAmB,eAC9C,sBAGAm2B,eAEAT,oBAEAhB,uBACAC,uBACAC,wBACAa,eACA,WACAb,KACAA,IAA2BygP,gCAM3B3gP,KAA8BA,UAC9BC,KAA8BA,UAC9BC,cACAA,eACAA,aACAA,gBAEA,WAA4B5d,KAAK,CACjCspR,KACAC,aACA7rL,iCACA8rL,qBAyEA,kCACA,OAxBA,gBACA,YAIA,MAHA,sBACAtqQ,GChWe,cACf,oDD+V2BxxB,CAAewxB,8BAE1C,sBACA,aACA,cACA,4BACA,qCACAxB,gBACAD,wBAEA,WAIA,WACA,yBAMArB,cACAsC,oBACA5kC,KACAC,6BACAwC,0CACAC,KAqEA,eACA,cACAG,OAGA,CACA,YACA5C,kCACAi3N,mBAGA10N,IACAxC,0BACA,aACAs9F,WACAqyM,aACAC,sBAEAhlE,IACA1T,qBAKAvqM,kBAAqD24G,wBAGrD,gBACA,mEACA,SAGA,kBACA,wDAIA4xF,qCACA,4GAGA,gBAIA,GAHA,qBACAvrL,OAAkCkkQ,uBAElCjtS,OAGA,eACAgoO,uCACAiyC,4CACA/e,MACAp7P,UAEA,QADAujN,MACAm6D,iBAA8CA,GAAIA,kBAClD,mBAEA,GADAn6D,MACAn6K,WACA/oC,OACA,SAEA,QAEAF,OACA,SAEA,wDACA,SAEA,cACA,OAIA47R,IAIA77R,OANAG,OAaAF,YAGA,qBACAK,UACA+iN,OAGAvjN,OAGA,gBACA,sCACA,WACA,SAEA,wBACA,mBACA,eACA,SAEA,kBAEA,0BAGA,SAGA,gBACA,mCACA,yBAEA,mBAEAkoO,IADAnR,oBACAA,6BACA90L,mBACAk4O,kCAOA/e,sBACAA,yCACA73C,wCAGA,YACAw4E,oBACAA,sBACAA,oBACAre,qCACAngR,kCACA6D,kBACA21N,KACAA,kBACA90L,sBACA80L,gDAEAmR,IACAnR,iDAGA90L,uBACAm5N,qBACAgyC,6CAIA,cACA,0CACA,cACAnuR,gBACAouR,wBACA18R,wBACAwxH,qBACA/gG,eACAA,gBACAA,aAGAjyB,oBAGAD,yBACAuqE,mCACAgS,eAeAxpD,uBACAuyL,+BAEAl3N,WACAk3N,GAGA,gBACA,kCACA,+BAEA,SAEA,sCACA2lD,SACA,sBACApjD,eACAA,kBACA,EAGA,mBACA,sBAIA,uBACAojD,oBACAA,0BACA,cACA,MAIA,WACA,SAIA95Q,GAFA02N,GAEAvC,cAEAA,YAIA,sBAEA,OADA2lD,iBACA8D,eACAG,GAEA79Q,OACAw7R,mBAEAA,mBARA,CAUiB,aAEjB,6BAEA17R,sBACkB,CAGlBkjN,8BAEA,YACA42D,sBACAuD,qCACAngR,kCACA6D,kBAIAZ,SAGA,gBAIA,mBACAu2N,KACAA,uCACA31N,mBA9UA05E,sDACA05I,gCAKA15I,mDACAA,wCACAi8I,4CAIA9tL,OACAhqB,gBACA9P,oBACAk+R,wBACAxrB,gBACAzyQ,iBAGA8xB,KAIA+H,OACAt4B,cACA28R,yBACAC,6BAoBAtkQ,OAA2BwwC,qBAG3B92C,kCACA5iC,mBAIAkiC,mBACA5X,mBACA4X,4BAGA5X,WAkRA,CAhaAwV,CACA,aACA,gBACA,eACA,cACA,uBACA,wBACA//B,cACAo/B,aACAsuQ,QACAP,aACAC,2BACA70R,kBACA/a,QAGAA,EAIA4kC,kDAHAr5B,oBAMAq5B,kDACA/C,eApBA,EAoBA,MAIA+C,8BACApiC,oBAEAoiC,kDACA/C,gBAGAL,GACA4D,GACAxB,4BACAC,4BACAC,GACAlC,SAGAC,qBA0XAA,GAyBA,kBACA,2DAEAD,kBACAC,mBACAO,0CACAC,sCACAC,YACAC,WACA6C,WACAC,UACA1B,cACAC,cAEAC,MAAmBC,MAEnB,gBACA,IA4GAlhC,GA5GAgiC,MACA,GAAY/0B,GAAcg0B,OAC1B,cAQA,iBANA,aACA,mBACAhhC,KACAL,4BAIAxC,GACA,mBACA,MACA,kCACA8C,MAIA,cACA,IACAA,MADAD,IAAwB,SAAgBL,OAExC,OACA,OACA,yBACA,2BACA,mBACA,kCACAK,eACAC,aACAC,WAEA,CAAyBisF,gCA8EzB,kBACApsF,GA3EA,gBACA,OACAG,MACAE,MACAC,MAEA,WAqBA,GAlBA,MADAJ,aAEAA,WAEAA,IACAA,GA8lBA,gBACA,sBACA,oBACA,sBAEA,mBACA,UAEA,oBACA,oBAEA,mBACA,sBA1mBA2kC,KACAxnC,SAIA,OADA8C,WAEAA,UACsBA,oBACtBG,OAEAF,UACA/C,QAGA,sCACA,wBACAiD,MACA,SACAH,UACsB,aACtBA,YAEA,SACAC,SACsB,aACtBA,aAEA/C,OAIA,mBACA,YACA,OACA,MAEAgD,YACAhD,OAGA,OACAqF,cACA6qS,SACA5hL,iCACA6hL,SACA3xL,aAiBA/7G,MAEAE,aACAA,GAfA,cACA,WACA,cACA,0CACA3C,OACA,CAAyBqF,oBAUzB3C,IAGAkhC,YAAwCv+B,aAGxC,oBACA,OAAYuK,GAAci0B,OAC1BA,OAEAA,uBA7IA,GAiJAvwB,cACA,UACA,uBACAsuB,KACAA,eAGA,aAEA,GAAYhyB,GAAc2xB,OAC1B,cAGA,IAIAmC,GAJAtB,MACAC,UACA8C,KACAC,MAGA,gBACA,iCAGA,gBACA,mCAGA,oBACAA,qBACAD,KACA7C,OAEA8C,qBACAD,KACA7C,OAEA8C,mBACAA,SACA9C,MAEA,sBAGA,qBAFAA,MAKA,oBAIA,oBAHA8C,MACA9C,MAMAqB,SACAyB,iBACAhD,iCACAC,oBAEAC,kBAGAA,KAGA,cACAF,iCAEAb,WApEA,GAwEA8K,gBACA,oBAIA,IAEAlK,GAFAP,UACAA,MAEAO,0EAEcA,kDACdP,iBAGA,WAdA,CAgBC5a,qBAED5X,gBACA,oBACA,cACA,kBACAwyB,WAAmC,QAAW,QAAWwuQ,UAAYz+R,QAErEiwB,IANA,CAQC5a,qBA+ED,YAAuBua,OACvB,mDAoBA,mBACA,UAEA,IADAA,kBACAK,KAAiBhyB,GAAcgyB,QAC/BA,6BAEAA,KACAA,aAEAA,mCAGA,mBAEAvJ,GADAkJ,mBACA,cAGA,sBACA,aAAoBY,cAAa,CACjC,gBACAE,sBACAjK,UACAuJ,WAEAA,YACAQ,KAKA,gBACA,8BACAR,IACAgkB,uBAEA,kCACA/jB,IACA+jB,uBAIA,kBACA,QAAgB,SAAgBpkB,OAChC,YACAK,cACAD,GACAC,kBACU,WACVA,UAGAA,GAGA,mBACA,SACAO,MAgBA,eACAA,cACAR,KACAQ,OAlBAZ,wBAEA,QADAe,8BACA6C,KAAwBA,eAAmBA,IAC3C,cACAC,cACAxD,KACAwD,4BAKAxD,IACAQ,IAMA,CAKA,kBACA,UACA,gBACA9J,SACAA,UACAsJ,aAIAL,2BACA,2BACAY,WAEAiK,GACA5N,GACA+F,4BAEAv+B,qBACA,gBACAm8B,aAIAgD,aACAo4C,8BAIA,iBACA,gBACAn7C,OAKAtV,UAGA,QACAuV,KAEAT,wBACA,+BACA,qBACAuD,4BAEAA,UACAA,YACA9C,MAEA8C,aACAA,sBACA7M,YACA+J,SAMA,gBACA,UACA,GACA,aACAV,iCACAJ,2BACMA,MACN,UAGA,uBACAlJ,sBACAkJ,2BACA87D,WACA7sE,UAEA,gCACA,mBACA,sCACA2R,sCACA,aACA9J,UACA,kBACA,sCACA,aACAA,2CAwCA,gBACA,gBAA0B,iBAC1B,4BACA,0BACA,uBACAsJ,gBACA,UAvCApD,OACAlG,qBACAglE,WACAiyM,WAKA,cACAj3Q,6BAGA,gBACA,sBACA,2BACAA,YACAA,YAAgCrjB,cAAkBqjB,gBAElDA,gBAyBA,mBACA,4CAGA,sBACA,+BAYA,OAXA,qBACA4vD,UACA9lD,sCACU8lD,WACV9lD,mCACU8lD,SACV9lD,iCACUjzB,KACVizB,oCAGAkuQ,wCACAzuQ,GAEAO,GAIA,yBACAZ,yBACA0mD,UACA1mD,oCACM0mD,WACN1mD,iCACM0mD,SACN1mD,+BACMryB,KACNqyB,gCAIAA,GAHAI,sDACA,8BAEAC,IAIA,mBACA,uBACA,CACAxuB,qCACAod,yBACAu+D,gCAIA,mBACA,wBACA5sD,QACA,2BACAA,GAGA,mBACA,mEACA,qBACAP,eAEAkqG,IAA4B7tI,kBAG5B,gBACA,kCACA,qCACA0jC,wBACA,CAGA,sBACA,mBACA,2BACAQ,UACAC,4CACAC,8CACAC,+CACA6C,8CAEA,sBACA/C,gBAEA,CACAvwB,cACAC,kBACAw+R,oBACAhsB,gBACAlxQ,6BACAzB,+BAqBA,gBACA,0BAmBA,mBACA,cAAYxD,IAAUwzB,qCACtBJ,iBACAI,GAGA,mBACAJ,YAGA,yBAEA,QADAa,OAAqBn1B,IAAO,+BAC5Bo1B,cACAd,uCAIA,gBACA,2BACAA,aAEAA,GAGA,4BAKA,4CACA4D,wCACAzB,wCACAE,wCAEAc,YACAnD,iBACAA,kBACAA,iBACAA,mBAGA,cACAc,OAAmBC,OACnB6C,OAAmBC,OACnB1B,OAAmBC,OACnBC,OAAmBC,QAGnB,CACA0sQ,IAActyS,WACduyS,IAAcvyS,WACdwyS,IAAcxyS,WACdyyS,IAAczyS,YAId,sBACA,cAEAmkC,qBACAC,sBACAC,wBACA6C,yBAEA,iCACA,oBACAzB,kBACAC,mBACAC,iBAKA,GAJAxB,eAA2BA,eAC3BC,eAA2BA,eAC3B8C,eAA2BA,eAC3B7C,eAA2BA,eAC3B,eACA,wCACAoC,sCACAniC,uCACAoiC,qCACAvC,SAAyBA,SACzBC,SAAyBA,SACzB8C,SAAyBA,SACzB7C,SAAyBA,UAIzB,4BACAF,SAAuBA,SACvBC,SAAuBA,SACvB8C,SAAuBA,SACvB7C,SAAuBA,UAGvBuI,mBAOA,4BACA,0BACAvI,SACA6C,SACAC,SACA1B,SACAC,OAAmBkqB,KAAI,CAAGswL,wBAC1B,sCACA77M,MACAspG,gCACA+kK,gBACAC,aACAC,aACAC,eAGAntQ,gCACAwB,MACAymG,iCACA+kK,eACAC,WACAC,aACAC,eAGAntQ,mCACAyB,MACAwmG,oCACA+kK,aACAC,YACAC,aACAC,eAGAntQ,kCACAD,MACAkoG,mCACA+kK,cACAC,aACAC,aACAC,eAGAntQ,WAGA,mBACA,8BACA,eACA,uBACA,qBACA/B,WAEAA,OACA,cACA,OAAe,QAAaL,sBAC5B,cACA,OAAe,QAAaA,sBAC5B,kBACA,cACA,oBACA,kBACA,cACA,sCAEA,WAIA,mBACA,sBACA,WAGA6D,2CAlhBA,gBACA,gBAEA,IADA7D,kBACAK,IACYhyB,GAAcgyB,QAC1BD,gBAEAC,6BAEA,oBA0gBA/xB,sBACA,mBACS2oB,UALT8zG,GArhBA,gBACA,OACAj0G,GADAkJ,kBACA,CAmhBAhyB,YAOA,IACA8yB,GADAF,iBACAC,MACA,+BACA,QACAC,oCACAD,0CAAoD,gBACpD,gDAGAC,yCACA8C,aACA/C,2BAEAC,0CACA8C,aACA/C,iCAEAC,qCACAD,oCAGAA,cAGAA,YAGA,eACA,cACA,kBAMA,QADAT,MACAC,KAAoBA,eAAkBA,GACtCD,mCAEA,sBAGA,mBACA,kBAEA,YADAg2G,UAGA,UACA,mBACA,+BAEA,GADAprH,OACA4Y,+CACA,0CACAC,uBACAA,yBACA7D,uBACAK,aAKA,GAFAO,4BACAA,kBACAP,aACA,oBACAL,gDACAo2G,UACAp2G,gBACAK,wBAAmCL,0BAEnCo2G,UAIA,mBACA,cAEAx1G,gBACAC,kBACAC,mBACAC,iBAEA6C,qBACAC,sBACA1B,wBACAC,yBAEAC,sBAEAC,6BACAA,SAEA,IAmBArhC,MAnBAkiC,iCACAniC,kCACAoiC,oCACA5kC,iCACAC,gCAgBAkP,KAEA,aADA1M,sBAEAC,yBACA8+B,+BAIA0mD,yBAKAtjD,2CAGA,2DAKA,WACA,qBACAi4O,mCACA,OACA,6BACA52D,iDACAm6D,oDACAqe,oDACA9d,mDACAG,OAA0B56P,KAC1Bi7P,QAA+BrzN,MAC/BkjP,cACAC,cACAA,cACAA,cACA1wS,QACA8rI,UACAzqG,cACAA,MACA5T,QAnBA,GAuBA,aACAjrB,oBAEA,mBAKA,IADAH,MACAC,oBAA8CA,eAAkBA,GAChED,6CAIA,IADAA,wBACA1B,SAKA0B,iCASA,IAFAA,GA+DA,gBACA,6BACA,gBACA,mDACA,iCACAqjN,4BAEA,kBACA,UAEA,0CAEA06D,GADA9D,4BACAq0B,wBACA,oCACA,+BACA,OACA3sB,gBACAzyQ,cACAC,kBACAw+R,oBACA3+R,iBACAyB,mBAMA,UA1FArQ,KAEAH,KAAgBA,eAAkBA,GAClC42N,kCAMA,sEACAnhM,yCACA,gCACAsyM,0BACAptJ,6CACA,aAA8Bt3D,KAC9B43O,aACAz1O,YACAvW,WACAC,eACAw+R,iBACAhsB,cAEA3iP,gBAKA,0EAmVA,cACA,gCACA,cACA,OAEA,oCAEA,gBACArD,iBACAiD,6BACA,0CACAi9P,6BACAA,gCACA,eACAA,qBACAA,uBACAA,4BAEAA,oBAEAre,OACA5+O,kCACArM,UACAqM,qBAIA,gBACA,8BACAm/O,wCACA,YACA,0BAEA,aAA4BG,eAAcA,GAC1C,eACA,wBAKA,eACA,aACA,WACA,SACAhjB,gBACAsiB,sBACAA,yBAEA,UAEA,cACA,uBACAtiB,gBACA73C,kBACAw4E,GACA,oCACAA,WAEAre,wBAGA,UAEA,kBACA,cACAtiB,gBACA73C,gBACAw4E,IAA0B,QAAaA,MACvC,oBACAA,qBAEAre,wBAGA,UAEA,kBACA,kBACA,kBACA,cACAtiB,gBACA73C,gBACAw4E,UACA,qBACAA,qBAEAre,wBAGA,CA3aAlpD,SA+zBA,gBACA,sDAlzBAj/E,MAEU,iDAEA,mDAEA,oDAdV,cACA,2BACA6lH,OAA0B53O,KAC1BmmH,UACAzqG,cACAA,MACA5T,OASA48M,IAqsBA,mBACA,OAEA,yBACA/oM,mCACMoX,+EACN,4DACA7W,4CAEAP,GADAO,mBACAA,qBAEAA,mBAKA,OACA,SAGA,WAAmBlc,KACnBmc,qBAEA,kCACA,oBAAmB7zB,MAAaynQ,2BAEhCr0O,eAEA,EA7tBAhH,UAguBA,mBACA,6BAEA,OACA,SAGA,kCACA,sBAEA,kBACA,qBACAgH,cAAyBqsB,KAAI,IAAKh5C,IAAQ,CAC1CmtB,YACAA,sBACA,mCACM,CACN,qBACAG,IACAH,YACAA,yBAEAgD,OAA2BlQ,KAAM,IAAKjmB,IAAUszB,QAChD,cACA6C,iBAEAA,yBAEAxD,cAGA,SA/vBAk2G,SACAhjH,UAGA3lB,qBACAqyB,0BAGAI,GA8CA,qCACA,aAIA,cAA6B1b,KAC7BuU,UACAmH,cAEAmqG,OACAA,OAGAo1I,OAAmBrzN,KAAI,CACvBswL,MAAoBpvJ,UACpBmiN,cAEA3vB,cACAL,sCACA8vB,wCACAA,gCACAA,6BACA1wS,QAEAk+R,MACA56C,4BAGA88B,MACA98B,6BA3BA,CAgCA,sBACA,4BAIAutD,IACAlzS,UACAL,WAGAg4O,OAA2B/nL,KAAI,CAC/BswL,MAAwBpvJ,UACxBmiN,cACaH,YAEbv2Q,UAEAoxG,cACA+kK,eACAC,iBACAC,aACAC,eAGAK,gBACAv7D,oDACAhqG,cACA+kK,mBACAC,aACAC,aACAC,aACAM,oBAGAD,OACAv7D,mBACAo7D,aAGAp7D,mBACAo7D,eAGAzvB,uBAkCA,kCACA,kBAIA,mBACA,kBACAV,6BACAK,4CACAK,cAAqCzzN,IAAK+vM,sBAGhC,kBAGV,OAFAqjB,4BAmXA,gBACA,uBACA,iCAEA,oBACA,SAGA,uCACA,kBACA,MACA7+O,KACA,UACA,OACAA,cACA,UACA,SACAA,WACA,UACA,QACAA,aACA,UACA,0BACAA,sBACA,UACA,4BACAA,qBACA,UACA,gCACAA,6BACA,UACA,kCACAA,6BAIAd,aACAc,cAIAA,eACA,IACAA,eAUA,2DAkCA8C,iCACAC,gCACAzB,6BACAC,WACAC,WAIAxB,gCACAuB,OACAC,QAIA,eACAc,gCACA,kBACAjiC,GACAA,sBACkBF,UAClBE,4BACkB,OAClBA,KACkBD,wBAClBC,MAEA,QACAqsF,2BACAsiN,WAEA,iBACA9uS,MAEAmiC,2BACA9hC,QACAyuS,mDAEA3sQ,OAEAA,SAAoC4/O,kBAEpC3hR,KAGA5C,gBACAC,iBAGA2hC,UACgBksB,cAAajsB,IAC7BsvQ,aACA/yD,SAA8BpwL,KAAc,CAC5CznB,QACAC,OACA4pQ,SACAmB,iBAGA,UACA,SAEAt4P,oCACAA,8EAEA,EA1gBA4+F,KAEA,CAGA,4BACA,gBAGAg+F,MAQA,GAPA,mBACAA,8BACAA,0BACc,oBACdA,gCAGA,kCACA,iBACAu7D,wBACAv7D,cACAzP,OACA4e,eAEA,YACAosD,wBACAv7D,cACAzP,OACA4e,WAEA,CACA,wBAGA5e,GADA,iBACAyP,+BAEAhzM,kBAIAmiN,GADA,4BACA5e,MACsB,iBACtByP,gCAEAhzM,kBAKA,kBAUA,eACA,uBAAgD,UAChD,iBAA6C,UAC7C,kBAA6C,UAC7C,sBAAgD,UAChD,sBAIA,IADAwzM,oBACAn1O,SACAm1O,aAGA,iBACAA,0CAEAA,wBAEA,iBACAA,2CAEAA,wBAGA,WAA2BphO,IAAQ,sCAMnC,cACA,0BACAkhO,gBAIA,cACA,yBACAA,gBAIA,cACA,2BACA/lD,kBACA+lD,gBAIA,mBACA/lD,kBAEA,eACAkmD,KACAC,aAEA,eAEA,IADAH,KACAD,uBACA/lD,kBACA+lD,wBAGA,cACAG,KACAF,KAEA,QADAjmH,qBACAgmH,uBACAA,iBACAI,KACAJ,kBAoGA,sBACA,iCAjRA,gBACA,WAA6BjwN,KAI7B,GAHAmmH,0BACAzqG,cAEAkC,IACA,WAA2BgqB,KAAI,CAC/BswL,MAAwBpvJ,sBACxBmiN,cAEArzC,0BACAmzC,wBACAA,2BACAA,0BACA1wS,QACAs8Q,cAGA,uBAA6C52D,OAC7CniN,GACA+4Q,MACAl4O,OACAniC,iBACAoiC,iBACA5kC,eACAC,kBA4PAiD,KAEA,kDACAk9Q,8CAeA,2DAMA,+DAGAh+O,4DAEA6jL,QAEA2kB,qBAGA,4BAMA,OALA6zD,mBACAzvM,eACA37E,qBAEAuuB,aACA,CAOA,2CAGAQ,+CA6CA,OA3CAA,YACAR,UACA,IAA4BksB,KAAI,CAChCqjP,QAAsC99R,iCAEtC29R,kCACAC,oCAKA3uQ,YACAV,UACA,IAA4BksB,KAAI,CAChCqjP,QAAsC99R,iCAEtC29R,qCACAC,uCAKAhrF,IACArkL,UACA,IAA4BksB,KAAI,CAChCqjP,QAAsC99R,iCAEtC29R,kCACAC,2CAKA7wB,IACAx+O,UACA,IAA4BksB,KAAI,CAChCqjP,QAAsC99R,iCAEtC29R,mCACAC,wCASA,0BACAnwB,SACAK,SACAK,SACA39B,SAGA5gP,YACA2nO,oCACAk2C,MACA,0BAGA79Q,YACA2nO,oCACA42C,MACA,gCAQAv+Q,YACA2nO,qCACAxE,cACA,8BAGAnjO,YACA2nO,qCACAxE,cACA,2BAlHA,CAtBA,CA0HA,gBACA,OAAqBloO,eAarB,EAiOA,sBACA,cACAmkC,OAAmBptB,IAAQ,uCAC3BqtB,OAAoByrB,IAAKnsB,OACzByqG,2BACAxqG,cAGA,mBACA,cACAO,UACAC,gCACAC,gCACAC,qBACA6C,qBACA,4BACA,uDACA,EAEA,cACA,EAEA,aACA,EAEA,EAEA/M,UACA,mBAEAA,UACA,mBAEAwK,8BAoEA,mBACA,gCACA,wDACA,OAzDA,mBACA,IACAT,MADAoC,OACA,SACAnC,8BACA,qBACAT,UACYksB,cACZ,IAAoB74C,IAAQ,qBAC5B,2BACAk8R,cAEA3vQ,YAUAI,WACA,IAAoBksB,MACpBqjP,eACAH,4BACA3uQ,sBACA4uQ,4BACA5uQ,sBACA4uQ,4BACA5uQ,wBAIAT,UACA,IAAgB1M,KAChB,IAAoBjmB,IAAU,EAC9BozB,qBACAA,qBACAld,qCACAgsR,cAEA3vQ,YACAI,UACA,IAAoB1M,KACpB,IAAwBjmB,IAAU,EAClCozB,qBACAA,qBACAld,qCACAi5N,wBASA1kG,QAEA,IAGAn3G,GAHAH,iBACAC,oBACAC,wBASA,GAPAA,2BACA,cACAA,4BAEA,gCACAA,0BAEA,aACA,eACA,aAA4B8C,uBAA4BA,IACxD7C,yBACA9R,oCACA8R,yBACAA,0CACAD,wBAGAC,GAvFA,gBACA,uDACAf,sBAEAA,6BAmFA02G,KACA31G,KACAD,oCAIAA,wBAEAF,uBACAE,4BACAA,0BAIAd,wBAEA1M,UACA0M,oBACAY,mBAmBA,mBAMA,OALA9J,mCAGAA,8BAEAkJ,8BACA,MACAu2G,iBACA,UAEA,MACA,OA5BA,gBACA,kCACA,gCAEA,wEAEA,cADA9+F,sDACAu4P,gBACAlvQ,UACAD,kCACAA,oCACAR,4BAGA,UAeA83G,KAEA5B,MADA,8BAAmD,QAAYp0G,MAC/D/B,IACA,UAEA,SACA,IACAm2G,mCACU,CADV,MACUl0G,KAGV,UAEA,eACA,YACA,SACAyB,UACA,cAIA,QADAzD,kBACAS,iBAAyCA,GAAGA,kBAC5C,yBACA,EACA,oBACAzN,aAEA,WACA,EACA,cACAuQ,kBAEA,UADA3G,kBAEA4D,YAEA,WACAD,YAEAP,aAMQ,QAASA,4BAA6C1M,aACtD,QAASiN,4BAA2CjN,aACpD,QAASkN,4BAA+ClN,aAIhE,sBACA,IArhDA,cACA,mBACA,kBAGAqM,GACA,qCADA,EACA,CA+gDAvT,IAGA,cAEA,6CAOA,eACAqU,KACAC,yBAEA,OAIA,0BACA8C,wBAGA1B,IACAlF,oBACAA,sBACAA,qBACA2G,GACA3G,sBACAhG,UAKA,GAHA2M,kBACAC,kBAEA,oBAIA,sBACAxB,kCAEAc,cADAlG,oBAEAj8B,2BACAoiC,wBACA5kC,0BAKAC,yCACA,SACAA,QAKA,YAEAyC,gBACAC,sBACAC,eACAC,0BAOA,IALAH,IACAI,GAyQA,gBACA,aACA+5Q,aAEAA,IADA,SACAh6Q,GAEA+nO,GAEA1nO,mBA7QAF,OAMA,aAJAL,SACAG,GA4PA,gBACA,aACAI,qCACAA,sBAnSA,CAnBA,CARA,CARA,CA4EA,gBACA2gC,kBACA,gCAEA/gC,uBACA22N,IAGA,gBAGA,6BAeA,QANAmR,2BACA94N,QACAC,WACAw+R,YACAhsB,UACazmB,MACb73C,KAA4BA,eAAuBA,IACnD,cACAm6D,8BAGAvD,kCACAA,+BACAA,qCACAA,wCACA/e,OAEA,WAGA+e,0BACAA,2BACAA,IAJApjD,2BAMA,kCAOA,cACA,IACAmR,GADAnR,MACAojD,8BAEA,GADAv6O,OACAu6O,aACA,SAKAh5O,mBACAA,mBACA+mM,UAGA,UACA,gBACAiyC,gCACA,GAGAh5O,oBACA,cACAoiL,uBACA2kB,MACAkzB,MACAx7N,QAKA,QAkCA,IAjBAu6O,yBACAh5O,iBACA,cACA,mCACAs9O,mBACkBn8B,oBAClBpa,MACAiZ,MACAs9B,mBAEAt9B,IAGAA,GAbA,CAeavhN,4BAEbA,GAGA,SAKA,GAHAA,MAGA,KADAu6O,iCAEA,SAEAA,OAEAh5O,gCACA+mM,WAOAz7N,KACAy7N,2BAGA,qBACA,mCAEA,GAEA,eAOA,SACA,UAAkCiyC,oBAAyBA,IAC3D,yBACA,MAGA4hB,WACkB,eAElBA,KAGAA,KAMA,+BACA,wCACAre,6CA7BAA,0BAiCAtiB,KACAr7P,cAKA,mBAMA,mBACA,cACAq7P,2BACAlzB,IACA94N,OACAC,eACAw+R,aACAhsB,aACA3yQ,UACAyB,wBAYA,cACA,YACAomN,oBACA,UACA,YACAA,oBACA,UACA,aACAA,kDAIA,cACAA,OAAqBxkN,IAAQ,iBAC7B,sBACA,CACAo7R,QACAjyD,MAAwBpvJ,YAGxBntD,cAlDA5+B,QAqDA,yBACA,OACA,WAA2B6qD,KAAI,CAAGqjP,QAClC99R,SACA27E,YAGA8uK,OACA73C,sBACAgrF,oBACApvQ,eAkBA,CAiDA,mBACA,cAIA,GAFArV,QAEA,oEAIA,kBAIA,qCACA6V,uBACAC,oBAEA,oCAIA,KACA8C,GADA7C,GA3zDA,gBACA,0BACA,cACA,YAEA,gDACA,OACA,iCACA,MAEA,CACAkvQ,OAHA5vQ,2CAIA6vQ,OAHAtvQ,oCAGA,EA+yDAN,KAGAuD,qBACA9C,wBACA8C,MAEAD,GAzEA,sBACA,OACA,YAEAhD,6BACAP,oBAMAO,MACAP,MAGA,QADAQ,eACAC,KAAoBA,gBACpB,mDADkCA,IAMlC,WAAkBpc,KAIlB,GAHAkc,iBACAG,kBAEAH,SAOA9J,aACA,2BACA+M,iCACAgnG,MAA6Bv+E,cAAazoB,KAO1C,UA+BAzQ,UAYAwN,MACAgD,4BAGAvX,aAEA0U,GAIAhE,iBAEAU,4CAGAA,6CAKA,6BAEAA,+CAKA,kCACA2E,wBACAC,uBACAC,qBACAA,oBACAA,0BACAA,aAEAxL,uCAEAggJ,YA9BAA,UAkCAxqJ,OAsBA,mBACA,0DACAuX,oCACA,OACAxD,wBACAQ,wBACAE,YAJAX,MAIAW,YAJAX,MAIA,yCE3vGA,MACA7G,IACAutB,0CACAkwN,mCACAC,kDACAC,uBACAC,WACAC,gLAGA,aACAr7Q,gBACAG,sBAGAs9B,0BAAmF,mBAA6C7tB,8BAAyBA,cAAkB,KAC3K6tB,aAAgD7tB,8BAAwB,CAAG7H,iDAC3E01B,GAA6Bn7B,EAAU,CH2BhC,kBACP,uBAAoC+hC,cG5BM/yB,CAAO,GAAI,iBACjDrR,EAAU,qBAAuB2P,iBACrC6tB,IAEA,yCAIA,aAIA6kP,cACA,YACA,aAA0Bh+O,aAAqBA,MAC/C,gBACAQ,iBACA,SACAT,WAGA,YAGA5B,0BAA+E,oBAC/EA,aAA8C7yB,8BAAwB,CAAG7H,wDAAoFi/Q,qDAA4Dp3O,0CAAsF4qO,kBAC/Sl4Q,EAAU,EACN,aACArC,EAAU,uBACdwiC,4BACAngC,EAAU,EACN,aACArC,EAAU,uBACdwiC,2BACAngC,EAAU,EACN,aACArC,EAAU,uBACdwiC,6BACAngC,EAAU,EACN,aACArC,EAAU,uBACdwiC,8BA+CA,aACAziC,gBACAG,gBAKAA,sCAKAA,4BACQ,QAAeq9B,IAEvB42Q,iBACA,8BACA,mBACA,YACA9vQ,wBAA+CD,aAE/CC,GAMAy9E,yBACA5hH,yCAOAy3G,SACA,sDAEAvqG,YACAlN,uBACA03G,iDACAA,qDAEAw8L,kBACA,iDACAxvQ,2BACA,sBACAP,GAEAgwQ,UACAn0S,oBACAA,mCACAA,mBAGAo0S,cACA,oCACAp0S,kBAnGA,MACA,YACA,iCACA,cACAupB,qBACA4a,mBACA,wCACA,iCACAS,mCAEAA,IAEA,uBACAT,aACAA,SAEAO,IAmFAhB,0CAEA,CACA2wQ,2BACAC,mCACAC,+BACApuL,uBACAD,yBACAI,yBACAkuL,iCACAh9L,iBACAta,4BAGAu3M,aACA,OACAC,yBACAC,mBACAC,qBACAxrM,eACAyrM,4BACAC,uBACAxuL,yBACAH,uBACA4rL,aACA7rL,yBACA6uL,uBACAz7R,qBACAixD,kBAGAyqO,cACA,OACAC,2BACAC,yBACAC,6BACAC,wBAGAC,mBACA,OAAe5mQ,GAAOvK,OAEtBoxQ,mBACA,OAAe,SAASpxQ,OAExBqxQ,uBACQ,QAAMrxQ,YAGdd,0BAAmE,mBAAqC3zB,8BAAyBA,gBACjI2zB,aAAwC3zB,8BAAwB,CAAG7H,2EAG7D,GAH0M,OACxM6H,2BAAqBi1B,SACrBj1B,2BAAqBi1B,UACvB,MACN,OACQj1B,2BAAqBk1B,GAAMl1B,6BAAkB00B,mCAC7C10B,2BAAqBk1B,GAAMl1B,6BAAkB00B,+BAC9CqlD,QAAYorN,2dAAsgB70N,mBA3NzhB,MA2NyhBtwC,wCAAwG,OACznBhgC,8BACAA,2BAAqB,SACrBA,yBAAmB,GACnBA,6BACD4qQ,kBACPl4Q,EAAU,EACN,aACArC,EAAU,wBACdsjC,iCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,8BACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,kCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,sCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,oCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,+BACAjhC,EAAU,EACN,aACArC,EAAU,qBACdsjC,4BACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,uCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,gCACAjhC,EAAU,EACN,aACArC,EAAU,wBACdsjC,kCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,gCACAjhC,EAAU,EACN,aACArC,EAAU,wBACdsjC,iCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,8BACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,iCACAjhC,EAAU,EACN,aACArC,EAAU,wBACdsjC,qCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,6BACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,iCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,gCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,mCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,gCACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,+BACAjhC,EAAU,EACN,aACArC,EAAU,uBACdsjC,6BACAjhC,EAAU,EACN,kBAAYm7B,IAA+B+5C,YAC3Cv3E,EAAU,mBACdsjC,6CACAjhC,EAAU,EACN,kBAAYmgC,IAA6B+0C,YACzCv3E,EAAU,mBACdsjC,uCACAA,GAAqBjhC,EAAU,CAAGrC,EAAU,qBAAuB2P,gBACnE2zB,IAUA,eAEAS,0BAA6D,oBAC7DA,aAAqCp0B,6BAAuB,CAAG7H,UAC/Di8B,aAAqCp0B,6BAAuB,4EC3SrD,uBACP,2FACA,sGACA,uBAA6CtK,MAAQA,mEACrD,mDAGO,iBACP,uBAAoC7C,aAG7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AC/C/B,+BAEAA,WAEA/L,wDCrBe,iGCMf,gBAAoB9C,IACpBd,eAGA,GAFA8rB,QAEA,sBACA,kBACAxrB,uBAEA,YAA8BC,WAAsBA,KACpD,gBACAE,eACAC,YAEA,MACA,aACAP,YACAA,YACAA,mBAIAA,oBACAA,oBACAA,oBAGAA,kCACAA,kCACAA,kCAGAs7S,QACA,sBACAp7S,sBACAC,sBACAC,sBAEA,yBAGAm7S,gBACA,iBAEA,0BACAr7S,iBAGAA,qBACAA,kBACAA,sBAEAA,EAGAs7S,iBACA,qBACA,EAGAz7S,YAGA07S,YACA,4BAGAC,cACA,mBAEA,8CACA17S,uCACAA,uCAEAA,KAGA27S,iBACA,2EAGAC,SACA,6BAnFA,GAmFA,kBAGA77S,SACA,WAAmB6G,KAAK7G,kCAGxBA,SACA,WAAmB6G,KAAG7G,kCAGtBA,SACA,WAAmB6G,KAAG7G,kCAGtBA,SACA,WAAmB6G,KAAG7G,oBAItBoC,YACA0/O,kDACAktC,oBACA,OACA9hR,yDAGC,CACD40O,6BACAktC,oBACA,OACA9hR,yDAGC,CACD40O,6BACAktC,oBACA,OACA9hR,uBACAA,uBACAA,2BAKA9K,cAAoBC,IAEpB,QAAeD,oDClFf,QApDA,CACA05S,uDACAC,kDACAC,uDACAC,iDACAC,0DACAC,0DACAC,iDACAC,2DACAC,uDACAC,gEACAC,yDACAC,iEACAC,qEACAC,2DACAC,sDACAC,6DACAC,wDACAC,+CACAC,kDACAC,sDACAC,8CACAC,4DACAC,6DACAC,oEACAC,0DACAC,kEACAC,wEACAC,sDACAC,gDACAC,oEACAC,uEACAC,6EACAC,4DACAC,qDACAC,mDACAC,mDACAC,iEACAC,8DACAC,0CACAC,iDACAC,2DACAC,sDACAC,kDACAC,uDACAC,sDACAC,8CACAC,oDACAC,8CACAC,sLC7CA,QAAgBz8S,YAEhB,UACA,oBAAmCwE,KACnCpF,sBAEA,oDACA,sBAEAC,WAGA,gBAAwBd,IACxBd,cAAoB8rB,QACpBmzR,QAAc,YAEdC,QAAc,YAEdzD,SAAqB,+BAErB0D,UAAgB,YAEhBC,SAAqB,wBA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BAEAN,2BACA,GACKhP,SAwBL,eACA,mBAtBA,eACA,yBACAgP,6BAEA,aAAsBhN,aAAmBA,KACzCgN,yBAGA,UAeAjqC,KAZA,eACA,mCAEA,aAAsBiqC,aAAmBA,KACzCM,cAGA,UAQAtqC,eCrTA,WAAuBqkC,OACvB,mDAGA,eACA,4CAAiD,eAAenR,gBAIhE,QACApzB,gBACAG,YACAA,8BACAA,+BACAA,gCACAA,kCACAA,+BAGA,QADA+pC,kBACAhN,KAAwBA,qBAAqBA,IAC7C,QACAk6P,qBACAivB,uBACAtS,qBACApwS,sBAEAumC,eAIAo8Q,iBACA,uBACA,OACA,uDAEA,yCAGA3oN,WACA,8BAEAzgE,iDACA4xG,SACAR,qCACAE,YAEAO,GAAkBv8H,IAClBu8H,8BACAA,kBACAA,kBACAA,kBACAA,kBAEA,aACAxhG,kBACAyhG,QACAC,GAAwBz8H,IAExB,gBACA,GAAgBlS,EAAckqC,OAC9B,aAaA,IAXAukG,kBACAA,gCACAA,iBACAA,wBAEAE,aACA,YACAD,OAEAzhG,cAEAA,MACA0hG,gBACA1hG,KAKAwhG,mBACA,IACAuL,cADAn6I,wBAGA,uBACA4uI,iBACAA,SAGAs3K,aACA77Q,GAAeh4B,EAAYg4B,IAE3B,QADAN,MACAM,UACAN,kBAEA,sBAIA,QACAlqC,mBACAG,mBACAA,sBACAA,sBACAA,aACAA,oBACAA,mBAGAomT,MACA,mDAGAjlR,UAGA,kBACAA,UACAkJ,uBACArqC,2BACAA,4BACAA,sCACAA,+BACAA,0BACAA,+BACAA,wBACAA,yBAEAA,0BACAA,0BACAA,0BACAA,0BAEAA,6BACAA,kCACAA,uCACAA,sCACAA,qCAGAw9F,WACA,OAAkBnrF,IAClB,kCACA03B,4BACAA,gBACAA,+BACAA,0BACAA,+BACAA,uBACAA,wBACAA,0BACAA,0BACAA,0BACAA,0BACAA,6BACAA,kCACAA,uCACAA,mBACAA,qCACAA,UAIA,kBACA5I,UACAkJ,uBACA,uCAEArqC,aADA,OACAqqC,kCACA,0BAGAA,oCAIAg8Q,aACA,wBAGAC,aACA,2CAGA9oN,WAGA,QAFAzzD,GAAkB13B,IAClB0qB,yBACA4xG,KAAwBA,eAAoBA,GAC5C5xG,GACAgN,qBAEAA,wBAGA,OACAjjC,cACAs0C,iBAKA,kBACAja,UACAkJ,uBAEArqC,2BACAA,4BACAA,6BACAA,6BACAA,oCACAA,wCACAA,yCACAA,gCACAA,oCACAA,mCACAA,iCAEAqqC,WAEArqC,sCACAA,wCAGAw9F,WACA,OAAkBnrF,IAClB,kCACA03B,4BACAA,6BACAA,6BACAA,oCACAA,wCACAA,yCACAA,gCACAA,oCACAA,mCACAA,iCAEAA,4BAEAA,sCACAA,yBACAA,UAIA,kBACA5I,UACAkJ,uBACArqC,2BACAA,8BACAA,8BACAA,gCACAA,uCACAA,yCACAA,6BACAA,sCACAA,+BACAA,oCACAA,uCACAA,qCACAA,0CACAA,yCACAA,sCAGAw9F,WACA,OAAkBnrF,IAClB,kCACA03B,yBACAA,8BACAA,gCACAA,uCACAA,yCACAA,6BACAA,sCACAA,+BACAA,oCACAA,uCACAA,qCACAA,0CACAA,yCACAA,sCACAA,UAIA,kBACA5I,UACAkJ,uBACA,4BACArqC,wDACA,OACAumT,uBACAC,uBAGA,qDACAxmT,iDAGAymT,aACA,oBACA1pR,aACA,aACAgN,OAEA,CACAw8Q,yBACAC,kCAIAhpN,WAEA,QADAzzD,GAAkB13B,IAClB0qB,KAAwBA,eAAqBA,IAC7C,6BACAgN,0BACAA,uBAEA,iBAIA,iBACA,SACA28Q,eACA,SAGA7mT,gBACAG,YAGAw9F,SACA,uBAWA,SACAkpN,eACA,SAGA7mT,gBACAG,YAGA,QAFAotC,oBACAyhG,uBACA,CACA,sBAIA,GAHAA,qBACAzhG,0BAjBA,GAmBA0hG,IACA,MAGAjyG,QAzBA,EAyBAiyG,QArBA,IAuBAA,GACAjyG,WAzBA,GA0BkBiyG,GAClBjyG,WA7BA,EA8BkBiyG,IAClBjyG,YAKA2gE,WAEA,QADApwD,GAAsB/6B,EAAYrS,gBAClC6uI,KAA4BA,0BAA0BA,IACtD,yBACAzhG,8BACAA,sBAEA,iBAIA,uBACAjM,QACAnhC,cAGA2mT,aACA,kBACA,GAAgBxmT,EAAc08B,OAC9B,cAGA,sBACAgyG,mBAEA,UACA,mBAGA,oBACAmT,8BACA44B,GAAsBvoK,EAAYy8H,gBAElCoL,mBACAC,mBACAj9G,mBACAk9G,mBACAC,mBAEAC,qCAEA,8BACAA,WACAA,WACAA,WACAA,WAEAA,GAGA98C,iBAEA,QADAqxC,GAAsBx8H,IAAYy8H,MAClCkT,IAA4BA,cAAmBA,GAC/C,IACA9H,MADAr9G,OAEAgyG,eACAA,gBAEAC,qBACAoL,IACArL,wBAGA,sBACAA,gBAEAC,qBACA,CACA1zF,eACAwrQ,cAzHA,GA+HAnjT,aACA,SACA5D,mBACAG,aACAA,sBACAA,8BACAA,8CACAA,8BACAA,uBAIA,uBACAmhC,UACAkJ,uBACAA,eAcA,QAbAN,kBACAhN,8BACA4xG,0BACA,OACAk4K,0BACAC,kCACAC,0BACAC,sBACAxjT,sBACAowS,4BAGAzlK,mBACAE,KAA4BA,eAAwBA,IACpD,cACAhkG,qBACA,gCACA8jG,gBACAA,kBAEAA,kCAEAnuI,8BACAA,0EAGAw9F,WACA,oBACAzgE,KACA,iBACoB58B,EAAc4pC,SAClChN,mBAGA,OAAsB1qB,IACtBg8H,GAA2Bh8H,IAM3B,UAJA87H,iBACAA,kBACAA,uBAEApkG,GACA,GAAoB5pC,EAAc4pC,OAIlC,QAHA6kG,UACA,iCACA7kG,OACAlN,KAAoCA,eAAiBA,IACrD,cACAsxG,6BACAA,qCACAA,6BACAA,yBACAA,yBACAA,2BAEAE,wBAKA,0BAEAF,WA9EA,GAmFAxoI,aACA,i1DAEA,uBACAw7B,UAaA,OAEA,OAdAkJ,uBAEArqC,0BACAA,iCACAA,uCACAA,wCACAA,gCACAA,gCACAA,gCACAA,+BACAA,+BAIAA,kBACA,WACA,OACA,WAEA,OACA+pC,kBACA/pC,8CACAA,cAEA,QADA+8B,2BACAsN,gBACArqC,8CAEA,WAEA,OACA+pC,kBACA/pC,yBACA,WAEA,OACAA,yDACA,CAIA2mT,aACA,yBACA,MACA,8BAEA,OACA,+BACA,oBACAviR,OAEApkC,yCAEA,YAEA,OACA,qBAEA,OACA,4BAIAw9F,WACA,uBACA,kBAIA,OAAsBnrF,EAAYrS,oCAClC+pC,qBACAA,cAKA,QAHAhN,MACA4xG,MAEAR,KAA4BA,eAAoBA,IAChD,cACAS,qBACA/xG,kBACAA,MACAE,aAEAA,6BACA4xG,aAMA,IAFA5kG,yBAEAokG,KAAwBA,eAAoBA,GAC5CpkG,sBAGA,SAAwBokG,eAAoBA,GAC5CpkG,4BACAA,uBAGA,kBAvGA,GA4GAz6B,aACA,SACAzP,sBACA,YACAwuI,6BACAA,qCACAA,2BAEAtxG,4BACA,OAIA,OAHAA,qBACAsxG,yBAEAA,gBACA,EACAA,yBACAA,2BACA,aAAoCxxG,SAASA,GAC7CsxG,qBAEA,WAEA,EACAE,yBACAA,2BACA,wBAEAtxG,WACA,iCACAA,WACA,iCACAilH,6BACA44B,6BAEA1gC,uCACAC,6BAEA,SAAgCt9G,QAAcA,IAC9C,wBACA,UAA2C+xG,SAAaA,IACxD,OACA,cACAyL,iBAsBA,KADAA,MADAugC,2BACA,KAEAvgC,WAGAlM,iBAGA,WAEA,EACAE,yBACAA,2BACAO,kBAEA,QADA2L,kBACAA,SACApM,wBAEA,WAEA,GACApxG,eACAsxG,wBACAA,0BAEA,QADAmM,iBACAA,UACA5L,iBAGA,QAFAoN,iBACAp0G,iBACAgnG,QACAT,cAGA,cAGA5yF,gBACAA,8DA4FA,uBACApa,UACA,YACAwtG,aACA5kG,cACAhN,cACAA,0BACA,sBACAA,iCACA,gDAIAgN,OACA,OAAsB13B,IACtB,wBACAs8H,iBACAA,SAtGA,mBACA,aACAR,MACAE,MACAO,QACA/xG,QAEA,gBACA,kBAGA,aAAwBgyG,eAAkBA,IAC1C,cAEA+rC,GADAxtI,OACA0hG,IACA,qBACAF,IACAP,YAEAF,YACAtxG,OAEA+xG,MAGAA,IACAP,YAEAA,eACAF,eAEA,iBACAgM,QACAj9G,mDACAk9G,2BACAC,SAEAC,MACAC,MACAC,MAEA,SAAoB3L,QAAcA,IAClC,cACAjnG,UACA,cACA0yG,WACAC,WACA,MAEA,cACA,iBACAD,WACAC,6BACA,cAAwCnjH,SAAcA,GACtDojH,qBAGAF,eACAC,WAIA,OAAkBloI,IAElB,wBACA8kB,iBACAA,iBACAA,iBACAA,mCACAA,iBACAA,kBACAA,kBACAA,kBACAA,kBAEAk3G,0BACAl3G,iBACAg3G,0BACAmM,2BACAC,0BACAC,0BAEArjH,SAoBAkT,SACAskG,WAlNA,GAwNA,kBACAxtG,UACAkJ,uBACArqC,4BACAA,sCACAA,gCACAA,+BACAA,yBACAA,qCACAA,qCACAA,uCACAA,uCACAA,uCACAA,uCACAA,yCACAA,yCACAA,oCACAA,wCACAA,iCAEAA,qCACAA,uCAEAA,+BACAA,8BACAA,mCACAA,kCAEAA,iBACAA,4BACAA,6BACAA,6BACAA,8BACAA,+BACAA,2CAEAA,iBACAA,4BACAA,8BACAA,gCACAA,8BACAA,iCAKAw9F,SACA,mBAIA,UAWA,QACA39F,gBACAG,aACAA,eACAA,iBACAA,gBAA2B,KAC3BA,gBAA2B,KAC3BA,kBACAA,2BACAA,eACAA,YAnBA,aAEA,QADAokC,mBACA2F,KAAoBA,eAAcA,GAClC3F,iDAEA,UACAA,GAaA30B,wBAGAm3I,QACA,YACA,uBACA,ODnrBA,eAMA,QAFAjY,GACAR,GAJA9jG,MACAN,KACAhN,aAGAgN,QACA4kG,yBACA,wBAGA,eADAR,yBAEA9jG,0CAIAA,YACAN,MAGAM,YAGA,UC4pBmBloC,CAAUkoC,2BAC7B,2CACa,IAEb,uBACA,QACAtN,aACAgN,iBACAA,mBAIA,gCACA,QACAA,oBACA,yBACA,oBACAA,oBACAA,qBAIA,UAGAk9Q,eACA,oBAGAC,WACA,yBAGAC,iBACAp9Q,KACAA,OAEA,aAAwBhN,eAAqBA,IAC7C,cACA,YACA,0CACAoxG,iBACAnuI,gCAIA,UAGAw9F,SACA,uCAGA,iBACA,GAAgBr9F,EAAckqC,SAC9BN,mBACA,2BACA,sBACA/pC,sBACAA,sBAOA,IACAmuI,GADA/tI,kBACA6yB,iBACA,2BACSjzB,MAETquI,aACAO,wCACA/xG,8BAEA78B,0BAEA,QACAonT,6CACAC,cACAC,cACAC,wBACAC,wBACAC,wBACA/mT,wBACAkqD,iCACA88P,+BACA,wBAGA,sCAGAC,cAEA,QADAt9Q,GAAkBh4B,IAAY03B,KAC9BhN,kBAAuCA,eAAiBA,IACxD,YACAsN,iBACAN,KAEA,0BACA,OACA,0BACAM,uBAEAA,iBAEAN,KAEA,iBAIA,QACAlqC,mBACA,YACA8uI,eAAmCt8H,EAAYg4B,IAC/C,6BACA,OACA,oBACAskG,cACA5xG,YAEA,OACA,qDAEA4xG,cAEA,QADAN,iBACAO,KAA4BA,QAAcA,GAG1C,GAFAT,iBACAQ,qBACA5xG,cACA,OAGA,uDAEA4xG,aACA5xG,WAIAoE,QACA,2CAEAnhC,iCACAA,iCACAA,iCACAA,iCACAA,iCACAA,iCACAA,iCACAA,iCACAA,iCACAA,gCAEAA,qCACAA,8CACAA,iDACAA,iDACAA,oCAGA4nT,iBACA,iDAGAC,aACA,oBC9lCO,iBAAgB7iT,+BCUvB,SAAgBrE,YAChBoV,QAEA,SAEA,UACA+xS,qBACAC,qBACAC,qBACAC,oBACAC,mBACAC,mBACAC,mBACAC,mBACAC,kBACAC,kBACAC,kBACAC,qBACAC,qBACAC,qBACAC,qBACAC,oBACAC,kBACAC,kBACAC,mBACAC,mBACAC,mBACAC,mBACAC,qBACAC,qBACAC,qBACAC,oBACAC,mBACAC,mBACAC,mBACAC,mBACAC,mBACAC,mBACAC,mBACAC,uBACAC,gBACAC,iBACAC,iBACAC,oBAGA,cACA,YAAkC93S,IAClC,cACA,aAAwB0qB,sBAAsBA,IAC9C,qBACA,eACA,kDAEA,oBACA4xG,oBACAA,sBAEAn/F,OACA1B,kBAEAr8B,OACAs8B,kBAEA,qBACA,aACA,4CAGA,qBACAogG,qBACAA,4BAEA,WACAA,QAEA9jG,uBAEA,iCACAA,2BAEA,0BACAA,mBAEA,sBACAskG,GAGA5kG,eAFAM,yBAOA,iCACAA,cAEAN,6BACA3F,GACArH,SACAqH,IAEA2F,qBACAA,wBACAA,0BAEAA,qBACA,oBAEAA,uBACA,+BAEAA,kBACA,iBAEAA,qBACA,WAEAA,GAsBA,gBACA,0BACA,UACA3F,mBACA,2BAGA,6BACA,OACA,SAEA,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qBACA,OAAsBtZ,IACtBs8H,aACAtkG,MAEArqC,aACAA,kBACAA,iBAGAw9F,WACA,qCACAx9F,gBACA+8B,UAEcA,6BACdA,uBAFAA,aAIAA,qCACAgN,GAAmBj5B,EAAOi5B,KAE1BhN,oBACAsN,4BACAA,iBACAA,oBAMA,oBACAxqC,cACA8rB,OACA/iB,qBAIA8iT,aACA1rT,qBAMA,oBACAH,cACA8rB,OACA/iB,iBACA+iT,QACA91D,UAIAtuJ,YACAvnG,yBACAA,oBAQA,6DAEA,SACAH,gBAMA,gBAEA,GAHAwqC,aAGA,OADAA,eAGA,sCAEA,iBAEA,QADAA,cAEA,sCAEA,qBACA+C,kBACA,sBAEA+gG,iBACApxG,kBACAgN,kBACA4kG,iBACA,MAEAtkG,cAGA,YACA,sCAGA,QACAzhC,mBACAgjT,oBACA7oN,SACA8oN,UACAC,oBACAC,wBAGA,gBACA,EACAl9K,+BACA,WACA,EACAA,8BACA,WACA,EACAA,+BACAA,4BAIA7uI,yBACAqqC,aACA,qBACA,sCACAykG,KAOA,SACAjvI,yBACAG,2BACA,kBACA4I,mBACAgjT,oBACA7oN,SACA8oN,UACAC,mBACAE,8BACa,GACbp9K,cACAhmI,mBACAgjT,oBACA7oN,SACA8oN,UACAC,mBACAE,2BACAC,sBACa,GACb,sCACAr9K,KAOA,oBACA/uI,gBACA8rB,OACA/iB,gBACAgjT,oBACAM,kBAGAlsT,iCAGAinT,eACA,2BAMA,oBACApnT,sBACA8rB,WAEAoR,eACAn0B,gBACAm0B,uBACAA,6BAEA/8B,aACAA,cACAA,0BACAA,iCAEA,eAEAA,oBACA,2BACAA,WACA2uI,WACAA,WACAA,WACAA,YAGA3uI,qCACAA,yBACAA,2BACAA,2BACAA,6CACAA,+BACAA,aAEAA,4CACAA,sDACAA,mCAEAA,uCACAA,mBACAA,oBACA,2BACA,GAGAinT,eACA,gDAGAkF,oBAEA,QADApvR,gCACAoxG,KAA4BA,eAAiBA,IAC7C,6BACApxG,mCAEA,iBAGAyuR,eACA,YACAzhR,WAGAhN,eACA4xG,UAA2Ct8H,EAAY0qB,KACvDqvR,oBACa,GAEbj+K,0BACAvlI,0BACAyjT,4BACAC,iBACAC,eACAC,eACAC,2BACAC,iBACAC,mBACAC,uBACAC,mBACAC,gCAGAz+K,gBACAO,gBACA/xG,eACAuQ,OACA,mBACA,WACA,cACA,SACA8sG,UAEAh9G,IACAkQ,kBAEAlQ,mCACAg9G,cAVA,CAaatL,IAQb,eACAhmI,gBACAgjT,2BACAM,4BACAa,sBACAC,yBACAC,4BACAC,eAEAC,kBACAC,aACAC,YACAC,wCACA99S,KACA+9S,oDAGAz+K,YACAA,+BACAA,wCAIA,8BACA8rC,wBACAA,WACA9rC,gCAGA0+K,mBACA,cAAiCn7S,EAAYrS,mCAI7C,oBACAH,sBACA8rB,QACA3rB,kBACAA,iBACAA,YAGAw9F,WACAnzD,kDACAA,2BACAA,uBACAA,+BACAA,iCACAA,+BACAA,6BACAA,oBACAA,+CACAA,6BACAA,mCACAA,4BACAA,+BAEA,YACAA,qDACAA,yBACA,wBAA4CtN,kBAAuBA,IACnE,IACAoxG,GAA0Bh9H,EAAU,CADpC44B,aAEAM,6CACA,aAAgCgkG,eAAgBA,GAChDhkG,yCAEAA,WAGAA,uBAEAA,qBACAA,2DACAA,iBACAA,kBAMA,eACA,2BACA,oBACA,wDACAA,KACKtP,UAGL,kCACA,8BACA8B,6BACA,YACAA,+CACA4wR,eACAC,aACAhzQ,oBACAh5C,IACAisT,cACAC,kBAGA/wR,GAGA,qBACA,kBACA8xG,6BACA,YACAA,+CACA8+K,eACAC,aACAhzQ,YACAh5C,IACAisT,QACAC,YAGAj/K,GAuJA,sBACA,yBACAA,GAtJA,mBACA,IAKAC,eALA7kG,MACAhN,MACA4xG,MACAR,MACAE,MAEA,SAAgBO,eAAkBA,GAClC/xG,YACAuQ,UACAyhG,YACAC,YACAH,WACAvqG,GACAyqG,eACAC,kBAEAD,kBACA9kG,OAEAokG,mBACAE,aAEA,MACA,SAAoBO,eAAkBA,GACtC/xG,YACAuQ,UACAyhG,YACAC,YACA/xG,UACAqH,eAIA,gBACA,CACAypR,YACAhkB,aACAikB,yBAEA,eACA,oBACAlzI,MAEA,CACA6yI,eACAM,aACAL,aACAM,UACAC,YAqGA/+R,cACAi/G,OACA9jG,iCACAA,4BACA,CACAA,sBACAA,mBAEAgkG,GAxGA,+BACA,UAIA,QACA,uBACAtkG,wBACAlN,sDAEA+xG,SACAP,mBAEA,YACAA,WACAzlI,mBACAslT,mBACAlC,2BACAmC,UACAT,aACAU,YACAC,iBAEAjqR,cACAiqG,2BACAO,KACAxqG,qBAGAiqG,GA2EAl+G,CACAiU,8CAEAwqG,eA3EA,+BACA,UAIA,QACA,uBACA7kG,wBACAlN,gCAEA+xG,SACAP,mBAEA,YACAA,WACAzlI,qBACA0lT,OACAC,KACAh0K,KACA0xK,OACArjT,gBACAtI,mBACAwQ,oCACAlI,mBACAgjT,mBACA4C,WACAC,SACAtgL,kDACA,UACApmG,OACAn/B,iBACAtI,qBACAouT,oBACAh+S,MAEAi+S,WACAC,WACA9G,IAAkCyG,YAElCM,SACAC,IACA9C,4BACAmC,UACAT,aACAQ,mBACAE,YACAC,wBAOAjqR,cACAiqG,2BACAO,KACAxqG,qBAGAiqG,GAgBAj+G,CACAgU,iDACA,KACA,OACAypR,qBACAkB,WACAjkB,YAMA,oBACAjrS,mBACA8rB,UAEA3rB,aACAA,eACAA,kBACAA,uBACAA,qBACAA,oBACAA,sBACAA,qBACAA,gBACAA,2BACAA,qBAEAA,gBACAA,oBAEAA,uBAEA+pC,eACAnhC,gBACAmhC,YACAl0B,UACAA,WACAA,aACAA,aACAA,cAEAk0B,qBACAilR,iCACAJ,oCACAK,iCACAC,mCACAL,oCAEA9kR,4BAGAolR,OACAnvT,yCAGAkd,8BAwcA,gBACA,yEAxcA0kB,cACA5hC,aA4bA,mBACA,0DACA68B,qDACA,OACAkN,wBACA4kG,wBACAN,8BAlcA5sG,yBACAzhC,uDAGAA,eAIAu4Q,iBACAv4Q,8BAGAw3G,aACAx3G,8BAGAsgT,WACA,oCACAtgT,iCAGAovT,YACApvT,kBACAA,mBAGAqvT,UACArvT,kBACAA,mBAGAsvT,mBACA,mBACA,mEAIAC,eACA,eACA,+DAIAC,eACAxvT,wBACA,SACAqqC,cACUA,mBACVA,0BAEA,WACAN,mBAEA/pC,yCACAA,cACAA,kBACAA,4CAGAyvT,mBACAzvT,wBACAA,uBAGA0vT,yBACA1vT,wBACAA,uBAGA2vT,gBAEA,GADA3vT,oBACAqqC,2CACA,IACAskG,MADA3uI,2CACA,IACAA,qBAEAA,8CAGA4vT,eACA5vT,oBACAA,6CAGA6vT,eACA,qBAAgCrvT,wBAChCmuI,iBAAgCnuI,sBAChCR,+BACA4I,iBACAgjT,mBACAkE,2BACAC,eACAtsT,UACAmF,kBACAtI,YACA0vT,oBAKAC,yBACAjwT,qCAGAkwT,eACAlwT,wBACAA,0BACAA,kBAGAmwT,qBACA,SACA,mDACAnwT,uCACAA,sCAIAowT,uBACApwT,qCAGAqwT,mBACA,SACA,mDACArwT,uCACAA,sCAIAswT,gBACAtwT,YACAA,6CACAA,YACAqqC,cACArqC,sDAEA,IACAmuI,GADApxG,uBACA4xG,4BACA3uI,iCACA+8B,cACAoxG,4BACAnuI,iCACAA,0BAEAA,2BACAA,eAGAuwT,sBACAvwT,6BAGAwwT,iBACAxwT,sBAGAywT,eACAzwT,sBAGA0wT,gBACA1wT,sBAGA2wT,mBACA3wT,sBAGAkN,OACAlN,yCACAA,kBAGA4wT,UACA5wT,kBACAA,wCAKAszS,cACAtzS,6BAGAuzS,cACAvzS,6BAGA6wT,0BACA7wT,yDAGA8wT,qBACA9wT,2CAGA+wT,qBACA/wT,2CAGA6C,QACA7C,kBAGA0xS,kBACA1xS,4CAGAgxT,qBACA,gBAAyB,aACzB,gBAAyB,aAIzB,yBAEAhxT,0BACAA,YACAmuI,iBACAA,iBACAA,cAEAnuI,YACAmuI,kBACAA,kBACAA,eAEAnuI,YACAmuI,mBACAA,mBACAA,eAEAnuI,YACAmuI,kBACAA,kBACAA,cAIA8iL,iBACAjxT,0BAGAyzS,SACAzzS,kBAGAkxT,MACAlxT,kBAGAmxT,OACAnxT,oBAGAoxT,aACApxT,oBAGAqxT,cACArxT,kBAGA0gP,OACA1gP,kBAGAsxT,aACAtxT,kBAGAuxT,cACA,8BACAxnR,KACA/pC,sCACAA,sCAIA6X,YACA,YA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IADAA,UACAviF,IACAva,SACA1I,sCACA0I,QAjLA,GAkLA,QA2BA,GAFAs9F,KACA53K,MACA,QAEA,GADA43K,UACAR,OACA4tB,OACA,GACAnxH,0BACoBujG,IACpBQ,SACA53K,eAGA+0F,OAGA,GAFA6iF,cACAR,QACA4tB,IACAA,OACA,GACAnxH,0BACoBujG,IAEpB,GADAQ,KACA7iF,OAEAiwG,IADA5tB,MAEA,GACAvjG,0BACsBujG,IACtBQ,SACA53K,gBAKA43K,UACAR,OACA4tB,OACA,GACAnxH,0BACoBujG,IACpBQ,SACA53K,MAGA,WACA6zE,kBACAA,kBACAA,kBACAmxH,MAEAA,KACAnxH,kBACAmxH,OACAnxH,wBAIA,CACA+jG,SACA,GACA/jG,kBACAA,kBACAA,kBACAmxH,YACgBA,MAChBA,KACAnxH,kBACAmxH,OACAnxH,oBAeA,MAeA,CAGA,aAEIzD,cAIJA,IADA40H,SAGA3vG,SADAS,YACA,EAGAlkB,aACAA,cACAA,mCACAA,wCACA0I,WACAA,WAMA,IASA58J,IACA,yCACA,kDAGAC,IACA,gDACA,8CAGAC,IACA,2CACA,8CACA,4BAGAC,IACA,gDACA,8BACA,mBAGA,oCACA,IAYA87K,GACAy9E,GACA4tB,GACAC,GACArtB,GAIA/jG,GAMA6lF,SA1BAp+D,WAGAi+D,KACA1kE,KACAE,UACAM,KACAS,KACAwD,KACAhE,KACAiE,KACAC,KAMAx5F,QACAkwE,KAGAg1H,UACArtB,UACAC,QACAqtB,KAoCA,SAAgB5rC,IA5FhB,GA4FgCA,KAChC2rC,SAEA,SAAgBrwG,MAAaA,KAC7BqwG,gBAKA,IADA7vG,MACAF,GArGA,GAqGsBA,OACtB,WADgCA,MAMhC,GAHAE,QACAA,OAEA,OAIA,yBAMAuvG,kBAEAvsE,UACA,EAEA,SAAgBtjC,OAChB,WAD2BA,MAS3B,IANAM,QACAA,OAIAC,KACAikE,KAAgBA,IAnIhB,GAmIgCA,KAGhC,GAFAjkE,QACAA,YACA,EACA,SAGA,UArIA,IAqIA1jB,WACA,SAKA,IADAimG,QACAte,KAAgBA,GAhJhB,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EA,8BACA,iCAEAI,YACAC,KACAC,4BACA,wCACA,2CACAC,cAEAC,KACAF,mBACA,+BACA,kCACAC,gBACA,8BAEAE,KACAH,wBACA,oCACA,uCACAC,WACA,0BAGAG,qBACAC,YACAZ,UACA,KACA,QAEAC,WACA,KAIAY,UACAC,mBACAC,oBACAf,UACArnT,UACAhB,oBACAqpT,UACA7zT,WACAxF,UACAs5T,WACAnqT,8BACAlP,iBACA0Q,oBACA1O,WACA2sB,cACAnoB,kCACA7G,oCAEA25T,iBACAC,oBACAC,oBACAC,kBACAC,iBACAC,kBACAC,SACAC,aACAC,iBACA/oT,MACAI,QACA4oT,gBACAC,oBACAx+B,SACAy+B,eACAC,cACAC,mBACAC,kBACAC,SACAC,gBACAC,oBACAC,wBACAr6T,QACAgX,OACAw7Q,YACA8nC,WACAC,gBACAC,eACAC,mBACAC,kBACAC,eACAC,cACAx1T,MACAy1T,SACAC,aACAC,UACAC,aACAC,iBACAC,eACA,uCACA,yCACAlgC,WACAp7R,MACAu7T,SACAC,YACAC,gBACAC,aACAC,iBACAC,qBACAC,eACAC,aACAC,eACA,iCACA,qCAGAC,aACAxC,sBACAC,mBACAC,mBACAC,gBAEAsC,aACAzC,uBACAC,iBACAC,kBACAC,gBAEAzuK,MACAvkJ,QACAu1T,aACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEAC,QACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEAxC,OACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEAyC,MACA,SACA,SACA,UACA,YACA,WACA,SACA,aAGA,eACAF,aACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEAC,QACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEAxC,OACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEAyC,MACA,SACA,SACA,UACA,YACA,WACA,SACA,cAIA/yK,QACA1iJ,QACAu1T,aACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEAC,QACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEAC,MACA,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGA,eACAF,aACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEAC,QACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEAC,MACA,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIAC,UACA11T,QACAu1T,aACA,KACA,KACA,KACA,MAEAC,QACA,IACA,IACA,IACA,KAEAC,MACA,cACA,cACA,cACA,gBAGA,eACAF,aACA,KACA,KACA,KACA,MAEAC,QACA,IACA,IACA,IACA,KAEAC,MACA,cACA,cACA,cACA,iBAIAE,YACA31T,QACAu1T,aACAK,oBACAC,QACA,sBACAC,YACA/pC,QACA,sBACAgqC,0BACAC,8BACAC,0BACAC,mBAEAV,QACAI,cACAC,OACA,sBACAC,SACA/pC,OACA,sBACAgqC,0BACAC,8BACAC,0BACAC,mBAEAT,MACAG,oBACAC,QACA,sBACAC,YACA/pC,QACA,sBACAgqC,0BACAC,8BACAC,0BACAC,oBAGA,eACAX,aACAK,oBACAC,QACA,sBACAC,YACA/pC,QACA,sBACAgqC,mBACAC,uBACAC,mBACAC,gBAEAV,QACAI,oBACAC,QACA,sBACAC,YACA/pC,QACA,sBACAgqC,mBACAC,uBACAC,mBACAC,gBAEAT,MACAG,oBACAC,QACA,sBACAC,YACA/pC,QACA,sBACAgqC,mBACAC,uBACAC,mBACAC,kBAIAC,MACAn2T,QACAy1T,MACA,kBACA,gBACA,oCACA,8BAEAF,aACA,OACA,OACA,sBACA,sBAEAC,QACA,MACA,MACA,sBACA,wBAIAY,YACAC,KACAZ,YAEAv2S,MACAu2S,YACAzC,YACAwC,cAEAc,SACAb,eACAzC,aACAwC,eAEA30K,OACA40K,aACAzC,YACAwC,cAEAe,MACAd,YACAzC,YACAwC,cAEAz0K,KA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jC,GACAwjC,oBACA9oP,EACA,UACA,UACAslN,mBAGA,iBACA59M,aACA63T,WACAc,YACAP,eAEAz4S,eAiFAjnB,KACAukF,SACA27O,eACAD,YACAP,eAEA91G,GA/IA,iBACA,2HACA+B,wFACAjG,KACAS,mBACAra,SAGA4Z,GADA,YADA5hB,GAEA8lF,cAIApkE,wBACA5lN,GAIA,YAIAgqN,QACA,OAJAD,MAIAC,KACAlE,WAEAA,UACAp+M,aACA63T,WACAc,YACAP,gBAEA9/T,EAgHAG,KACAwkF,SACA6uN,UACA+sB,mBACAF,YACAP,aACAU,qBAEA,OAAiB77O,8BAEjBr+E,oBAA+B,sBAC/BA,oBAA+B,mBAC/BusB,iBAAgC,OAChC8xD,eACA6uN,iBACAitB,aACAC,mCACAC,mDAEAvuT,qBACA,yCACA,cACA25M,8DAEA/B,KAEAlE,MACAS,MACA,kCACA,wBACAA,YACA,yBACA0D,MACApuM,YACAvV,oBACA,kBACA0jN,iBACA,oBACA,oBACA,YACAI,cAEAJ,eACAzD,aACA,KAGAT,SACA3vJ,yBAIA2vJ,GAEA,iBACA,0KACAF,SACA4G,YACAo0G,gBACAhB,YACAC,YAEA/5G,SACA0G,YACA0zG,gBACAG,YACAQ,eACAC,aACAC,aAEAx6G,gEACA,2BACA,aACAvoL,UACAwuL,iBACAo0G,gBACAhB,YACAC,UACAmB,iBACAC,eASA,mBACA,+CAAiG,oBACjGtgI,MACAr6L,oBAA4C,qBAC5CA,oBACA,gDAEA,mBACAmvT,UAGAhlM,GAGA,OACA4uM,MAtBAz5G,oBACA,oCACA,+CACA,YAAkCn1F,IAAaznB,YAE/C,YAA8B0sN,IAAUwL,gBAkBxCl4N,aACAhrE,kCACA,IACAyyF,OADAglM,mDAEA,YAAkCC,IAAWjvC,gCAuI7C,oBACA,8BACA,cACA4uC,oBACA,oBAGAhzH,aAGAxB,gBAMO,iBACP,kIACAkK,KACAA,OAEA,kHACAgf,oCACAhE,wCACAiE,MACAC,SACAjsL,8BAAiD,mBACjDmjS,eACAC,eAEAh3G,MACAh4M,qBACA,+CAEAygB,iBACA,gBACA49F,cACAkwE,SACA2D,SACAqxH,SAtdA,GAudArtB,KACAD,QACAC,eAEAA,OACA,IAEAne,MADA7lF,SADA3D,UAGA+0H,OAIAvrC,OAHAA,MAQA,QAFAt8E,WADAy6F,OAEAtjG,KACA6I,qBAAyE,uBACzE7I,OAEA,QACArgH,SACA7wE,UACAyB,SACAvB,OACAyyQ,QACA46C,mBACAC,iBAEA,mBACAC,KAEA15B,2CAA0E,2BAM1E,OACA7pQ,UACAzoB,SACAisT,aARAngU,MACA28B,8BAAiD,mBACjDmjS,mBACAC,mBAMAK,QACAzjS,UACAyK,SACAC,SAIO,iBAQP,QAPAwjK,0DACA49E,oHACAlkE,MACAE,oCACAS,wCACAwD,GA9gBA,GA8gBAhf,GACAgb,UACAiE,KAAoBA,GAjhBpB,GAihBsCA,MAEtC,QADAC,MACAG,KAAwBA,MAAkBA,MAC1C,2BACAy9E,eACA59E,SACAjhH,QACA04N,iBAIAz3G,aACArE,SAAyBs7G,cAGzB,WAGA,aACA3gI,sCACAA,gEACAA,2HACAA,qHACAA,mEALA,CAMCnxL,6GC5jBD,YAAgBmxL,MAIhB,OAFAA,GATA,kBACA,wBACA,WAGAA,GAIAxqL,OAEA,sBACA,WAGA,QAFAg1L,aAEAlK,sCAA4EipF,MAAaA,KACzFurC,cAGA,2BAIA90H,cACA,UACM,WACN,UAIA,gFAAqG,kBAAqB,aAAmB,kFAQ7IvwI,gBACA,yIAGA,iBAEA,GADAqyI,YACAryI,MAAgC,SAChC,aAAiBk8I,aAAmBA,KACpC,cACA,UAGA,SAGA,kBACA,mBAGA,kBAEA,aAAiBA,YAAgBA,KACjCh8I,cACcqwI,eAGd,SAGA,gBAIA,QAHA8B,YAEA6J,4BACAnB,SAA0BmB,eAE1B,OACA/7I,MADA+7I,cACA,CAGA,gBAIA,QAHA7J,YAEA6J,4BACAnB,SAA0BmB,eAE1B,yCAEA,gBAEA,cACcrL,2BACdA,IACK,IAGL,kBACA,uBACA,IACA,iCAEA,CAFA,MACSqL,IACT,SAKA,eACA,iDAEA,UAyGA,gBACA,eACA,OAvBA,cACA,QACAl4L,KAAe4P,uBACf6iQ,MAAgB7iQ,uBAChB3P,OAAiB2P,uCACjB6uR,QAAkB7uR,wCAClBrO,OAAiBqO,uCACjB9P,QAAkB8P,wCAClBxjB,GAAawjB,uBACb7jB,GAAa6jB,wBAGb,iBACA,wBAA+B28K,IAE/B,SACA,qCACA8B,EAMA5iH,GAEA,IACA,iCACA,sBACA4iH,WACAA,WAEAA,CAEA,CAFA,MACU6J,IACV,gEAUA,IAGA7J,EAHA7nK,UACA,kCAEA6nK,eADA7nK,GAEA,gBACA,8BACA,uDAEA6nK,mBACA,aACA,6BARA,IASA0I,IACA5hL,+BAIA,YACA03K,mBAEAA,KAIArmK,iBAGA,UAEAnpB,6MA4FA,kBACAgxL,QAEA,QADA6J,UACAnB,KAAoBA,aAA4BA,UAChD,gBAA0DmB,sBAG1D,UAGA,kBACAzzK,uBACA8nK,cACAA,0BAGA,iCAEAvyJ,cAEA,8BACA,oBAGA,yBAA6CuyJ,sCAA8CA,GAC3FplJ,oEAGA,kCACA,SAEAA,0CACA,4BACAk6Q,wBACAvrC,gCAAyD,kBAA+BurC,IAExF,gBAEAvrC,IAIA,iDAxBA,GA2BA/7O,cAEA,8BACA,oBAGA,yBAA6CwyJ,qCAA6CA,GAC1FplJ,gHAGA,qCACAA,yCACAA,0BAIAA,yCAhBA,GAmBA,uBACA,cAEA,YACA4vJ,WAEA,8BACA,oBAEAnrM,aACA6mR,QACAxyQ,SACAD,OACAy+R,gBAGA7yS,qBAIAA,+CAEA,UACAskM,GA3UA,kBAcA,OAAsBn0I,IAFtBsyI,SAE6Bs/H,gBAQ7B,oBAOA,GALA9gI,oBACAN,sDACAA,gBACAA,gBAEA2L,OAOA,qBACA3L,iCACAA,iCACAA,mCACAA,mCACAA,uCACAA,2CACU,CAOV,uCACA,oDACAupF,sBACA5lF,WAEA3D,wGACAA,yGAEAA,kBACAA,kBAQAA,gBACAA,gBAEAA,sBACAA,sBAGAA,gBACAA,kBAgQA7gH,KACAopK,GAlLA,gBAEA,OACA84E,UACAC,UACAn8C,UACAixC,UACA1iD,WACAC,YACA2iD,UACAiL,WACAC,SACAh5N,UACAi5N,mBACAxE,aAOA,gBACA,aAAwB1zC,aAA4BA,KACpDznF,qBA6DA,YAnEA,QACA9B,oCAkEA,CACAm5E,QANA,cACAn5E,IAAuBA,0CACvB8B,QAKA4/H,SA1DA/8O,WACA,mBACA,4CAGA,iBAEA4kM,sBAEU,wCACV,mBACA,gBACAE,uCAEA,yCACA,EACA7uO,OACA,EACA4wK,WACAA,WACAA,WACAA,WACAA,WACAA,UACAA,YACAA,WACAA,UACAA,kBAIAn+K,UAEAk8O,sBAEU,8CACV,mBACA,oCACAE,YACA,iBACAj+D,cAIA,iBAEA+9D,2BAXU,EAuBV,CA4FAp8O,GACAq+K,MAEA5wK,2CACAA,2CAEA5gB,oBACAwwK,eAGA,sBACAA,IACA07E,QACAxyQ,SACAD,OACAy+R,YAIA7yS,gBAAsBmwD,GAAOsyI,cAC7BziM,cAAoBmwD,GAAOsyI,eAE3BziM,0BACAu7C,8CACAA,8CACAA,8CACAA,+CACAA,4CACAA,6CACAA,8CACAA,+CAEAA,8CACAA,8CAEAA,2CACAolJ,MACA+D,IACAyhB,MAIAnmN,oBAEA,QADA0kM,0BACAqxH,2BAEA,wCACA/1T,MAGAA,uBAEA,QADA0kM,0BACAqxH,2BAEA,yCAGA,OAMArxH,GANA0lF,QAEA,wDACAzpF,SAGA+D,GASK/D,GARLA,MACA+D,wBACAqxH,YACA3rC,UAEA99E,aAKA/iL,8BACA+4S,MACAzhU,eAA6B,YAE7B0hU,UACA1hU,eAA6B,YAE7B2hU,OACA3hU,eAA6B,YAE7B4hU,WACA5hU,eAA6B,cAI7B,eAsBA,gBAEA,aAAqBk1T,aAAmBA,KACxC,uBACA90H,MACA,MAIAA,IACA7yJ,cAAsC,eAItC,cACA+9K,MAGA,cACAA,MACAhG,KAEA,cACAh4K,OACAA,OAEA,cACAg+K,MAyBA,cAGA,QAFAznB,QAEAqxH,KAAqBA,aAAmBA,KACxCtnR,gBACAi2J,WAIA,UAIA,gBAEA,qBAEAA,cAEA,mCAEAkhB,iBACAtZ,uBACAsZ,UAIAmwG,uBAEAA,SAEAA,GArDA,gBACA,OACA,YAOA,GAJAnwG,SAIAt1J,UACA,UAGA,uBACA,aACA,UAIA,YAkCA+5J,KAEA0rG,KACAA,UAKAA,cACAnwG,OAGAwkE,KACAj8O,OACAu3K,WAIAE,KAIAz3K,OACA63K,YAGA,cACAyiF,OAEAt6P,OACAu3K,UAGA,eAEAE,KAIA6iF,OAEAt6P,OACA63K,WAKA,gBACA,oBAGA0iF,GADAxe,4BACAziQ,WACAA,+DAESyiQ,8BACTziQ,UACAA,iEAGA,EAIAkhR,GADAze,0BACAziQ,WACAA,4DAESyiQ,gCACTziQ,UACAA,oEAGA,EAGA6kL,eAOA48C,gBACA2tE,kBACAC,kBACAhxC,gBACAixC,kBAIAlpT,sBAEA86R,IAWA,mBACAjkG,YACAnpJ,kDAEAmpJ,iBAdA7zE,QAGA63K,IAeA,mBACAhkG,YACAnpJ,kDAEAmpJ,kBAlBA3D,UAvMAxlJ,2CACAA,4CACAA,yCACAA,0CAQAA,2CAEAA,2CACAA,2CAEAA,4CAEAA,uCAuMA,CAUA,qBACA,UAGAolJ,6BACAA,4BAxhBA,kBACA,aACA,gEAmhBA9lK,OAYA,SAlBA,kBACA,oIChvBA,SACAh7B,kBACAG,iBACAA,eAEAkqB,WACA,2DAGA,iBAA8B3X,KAC9B1S,qBACA8rB,SACA3rB,kBACAA,eACAA,aACAA,aAEAgqR,SACAhqR,eACAA,sBAGAA,aAGA0iU,iBACA,OACA,IACAp2H,6CAIA,CAJA,MAEAnB,IAEA,YADAnrM,0BACA,CAEAssM,IACAtsM,aAGA2iU,YACA3iU,kCACAA,wDCjCA,QACAH,cACAG,qBAA+B6d,OAG/BoR,wBAA6D,kBAC7DA,aAAsC1d,+BAAyB,CAAGkuP,gDAClExwO,mBAAqD,sBAAgB,CAAG5sB,mBAA8C,cAA+Bo9P,4BAoBrJ,SAKA5/P,eACAG,kBAKAA,4BAOAA,sBAAiCyrI,wBAkCjC,qBACA6gE,IACAA,GACAnjL,WACA5gB,QAIA4iM,qCASA,qBACAmB,IACAA,GACAnjL,WACA5gB,QAIA4iM,wCAxDAj8K,yBAAiG,kBAAoD3d,8BAAyBA,gBAC9K2d,aAAuD3d,8BAAwB,CAAG3J,kEAAyGg7T,+EAE3L1zS,uBACA,CAAMtnB,KAAM2J,eAEZ2d,mBACA0zS,sBAA4Bh7T,KAAM2J,UAClCsxT,kBAAwBj7T,KAAM2J,WAwD9B,SAWA1R,iCACAG,eACAA,iBACAA,wBACAA,aACAA,YACAA,wBACAA,iBAIAA,eAA0BQ,WAI1BR,qBAIAA,yBAIAA,yCAIAA,mBAIAA,iBACAmmH,WAKAnmH,yBAAmCuR,eAMnCvR,mBAA6BuR,eAI7BvR,6BAAuCuR,eAIvCvR,kBAA4BuR,eAI5BvR,iBAA2BuR,eAI3BvR,sBAAgC6d,MAIhC7d,sBAAgC6d,MAIhC7d,oBAA8B6d,MAC9B7d,mCACAA,kBAA4B6d,MAC5B7d,oBAA+B8iU,yBAK/BtgU,WACAxC,2BAEA,gCAAuD,QAGvD,qBAAgC,SAIhCssM,KAGAA,iDACAA,2BAIA,8CACAtsM,iDACAA,mPAQAgtG,sBAGA,KACAhtG,qCAGA,kCAEAy1T,OAA+C3/S,KAI/C8vM,KAEA,8BACA5lN,8CACA,SACA,wCAIAkmN,mBACa79M,MAAQ,QAAS44L,KAAuB,QAGrD,+BAEAipF,OAAqCrsQ,MAErCymL,OAAoCvuL,KACpC/V,cAGA,KACAA,2BAA4CQ,YAG5C,UAAkC,QAAKR,0DAAsE,WAE7GmsN,IAAgC,SAAa,CAC7CnsN,kBACAy1T,KACAptT,MAAoB,QAIpB,YACA,CACA06T,gBACAC,iCACAC,iCACAn9C,mBACAixC,mBACAmM,mBACAnxK,iBACA9nH,2BAEiB,QAIjB27K,KACA5lN,sBACA4lN,cACAn+L,8CACAznB,qBAEAA,sBACA4lN,cACAn+L,8CACAznB,qBAEA4lN,MACiB,QAIjBA,KACA5lN,kBACA4lN,iBAEA5lN,kBACA4lN,iBAEAA,MACiB,QAIjBA,KAEA,+BAEAM,uBACA,wBAAuCN,IAAcplN,2CACpC,QAIjB,EAAeA,0CAA8BR,mBAC7CA,mBACAQ,KACAL,KACA+c,WAAiC1c,eACX,QAAS0oP,KAAiB,WAEhDkhC,YAAkD,QAAI,IAAK,WAE3D1kE,YAAgD,QAAQ,IAAK,WAC7D,oBAIA,EAAeogE,oCAkBf,GAjBA9lR,cAGA,KACAA,qBAA0CmjU,mBAE1CnjU,cAAgC0uC,GAAU,CAC1C1uC,qBACAA,8CACAA,2BACAupB,iBAAmCvpB,iBAGnCojU,gBACA,KAEAjzS,oDACAnwB,uBAEA,4DAEAmmN,GAAiDnmN,yCAuBjD,GAtBAA,uCACAA,yEAEAA,0BACAA,0CAGuCA,8FAEvCA,qBACAA,gDACAA,0BACAmU,iBACAC,OAAgC+1M,WAChC08D,QAAiC18D,YACjCx0M,SAAkCw0M,aAClCj2M,UAAmCi2M,cACnCk5G,uBACAl9M,WACAm9M,uBACAC,uBAEAvjU,2BAEA,gEACAmmN,gBACAiE,aACA1jN,OAIA2jN,wBACA9hN,QAIA8hN,KACAlE,qBAEAT,aAGA,KACA1lN,wCAGAA,cAGA,KACAA,+BACA8lR,cACAixC,cACAn3N,eAGA8lH,aAGA,KACuCS,iCACvCnmN,uBACAA,qEAGAA,4CAEA0lN,GACAr9M,MAAsB,SAItBu9M,KAEA,iBD/bO,gBACP,+BC8bsDl0L,IAAS,QAAI,IAAK,QAIxEw0L,qBAAkDN,IAAiB49G,uBACnE,qBACAx9G,MAEA7/M,UAIA,EAAe3F,+BACfR,wBACAA,cAGA,KACAA,mBAAwCQ,+BAExC4vB,oDACA85P,iBAEY,QAAKhhC,OACjB7gP,MAAsB,QAAI,IAC1BlC,UAGA,KACA6mG,sBAGA,KACAhtG,uCAGAmsN,MACa,YACL,QAAK1pB,QAAsB,QAAI,IAAK,QAI5C6J,oBAAsD,WACtDjkM,MAAkB,QAIlB,YACAikM,KAGAA,4BACa,QAIb,gBACAnmM,UAIA,EAAW3F,0FACXR,cAGA,KACAA,oBAAqCQ,cAErCwsG,sBAGA,KACA,sBAEA,wBAAqDs3F,SAAiB4kD,aACtElpP,yCACAkd,aACA,uBACA,mBACA,oBACA,uBAIA+jL,SACA6kF,WACAixC,WACA0M,uBACAx5R,cAQA7V,eACAquK,YACAziM,2BAMAkJ,cACAlJ,iCACAA,6BACAA,6BACAA,2BACAA,qBAMA0jU,sBAEA,uBAEAp3H,yDACA7J,OACAziM,4BAGA,KACAA,sGAIAmrM,KACAnrM,uBAEAA,kFAIAmrM,KACAnrM,qBAEAA,wGAIAmrM,KACAnrM,wBAEAA,oFAIAmrM,KACAnrM,sBAEAA,0FAIAmrM,KACAnrM,sBAEAA,wGAGA,KACAA,sBAEAA,wGAGA,KACAA,yBAIAyiM,OACAziM,iCAQA41R,eACA,eACA51R,4CACAA,sFAIAssM,KACAtsM,wBACA+kF,SACA+gM,mBACAixC,wBAIA/2T,wBACA+kF,QACA+gM,kBACAixC,qBASA4M,aACA,eACA3jU,4CACAA,mDACAA,2CAEAA,sBACA+kF,QACA+gM,kBACAixC,qBASA6M,gBAEA,OAEAz4H,GAEAlK,GAQA,IAPAjhM,gEACAA,4BACAA,yCACAmrM,MACAlK,uBACAqL,8BAEAtsM,2CAEA,UAAwC,QAASA,uCAIjDskM,KACAA,sBAGA4lF,IAAsC,QAASlqR,2BAC/C6jU,aACa19T,UAIbm+L,MACAtkM,gEACAA,4BACAmrM,IACAlK,KACAkK,qCAEAnrM,uBACAA,4CACAA,2BACAihM,IACAkK,MACA7G,oBACAtkM,wBACA+kF,SACA+gM,oCACAixC,yCAIA/2T,0CAGA,KACAy1T,iBACAvrC,kBAGAlqR,wBACA+kF,QACA+gM,6BACAixC,+BAQA+M,cACA9jU,4CACAA,mDACAA,2CACAA,gEACAA,2BACAA,qBAGAA,sBACA+kF,QACA+gM,oCACAixC,sCAOAgN,eACA/jU,gCAMAgkU,eACAhkU,mBAMAikU,UACA,wCAOAC,aACAlkU,2CACAA,8DAOAmkU,4BACA56S,qDAIAk5K,IAC4BziM,4CACOA,qCASnCokU,uBACA76S,wBAIA4hL,KACAnrM,sCAOAqkU,mBACA,4BACArkU,8CAGAA,mBAOAskU,oBACA,4BACA,CACAlwT,4DACAyyQ,+DAIA,CACAzyQ,gEACAyyQ,mEAWA09C,yBAEA,kCAEA9O,OACAhuS,wBADAguS,QAEAhuS,0BAOAyhO,GAJAzhO,oEAEAA,mEAIA0kM,4BACAnsN,yBAEA,CACAwkU,iDACAvtN,qDAUA,OARAiyI,aACAusE,UACAA,aACAz1T,0CAEAA,uCAGAA,KADAykU,sDACAt4G,WACAnsN,sBACA,EAEA,CAMA0kU,eACA1kU,sBACAA,oFAEAA,yDAMA2kU,gBAEA3kU,sBACAA,0FAEAA,+DAMA6vR,eAEA,gCAEAvjF,+BAEAnB,iCACA,eA0FA,qBACA,oBACAxK,cACA8B,WACAA,aA3FAnyK,yBAAmE,kBA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AEAsqH,GACA,iCACAx0H,wCACAkK,SACA26E,mBACAixC,mBACAhyO,aAGAtjD,KACAg0R,yCACAtqH,SACA26E,8BACAixC,8BACAhyO,gBAKA,KACAk8G,KACAx/J,IACmCg0R,QAG1BptT,MAAO,WAChBrI,qBAA+B8V,KAAUq1L,KAEzC,OAEAsqH,GACA,iCACAx0H,wCACAkK,SACA26E,mBACAixC,mBACAhyO,aAGAtjD,KACAg0R,wCACAtqH,SACA26E,oCACAixC,oCACAhyO,gBAKA,KACAk8G,KACAx/J,IACmCg0R,QAG1BptT,MAAO,WAChBrI,mBAA6B8V,KAAUq1L,KAEvC,OAEAsqH,GAEAvrC,GACA,iCACAjpF,sCACAkK,SACA26E,mBACAixC,mBACAhyO,aAGAtjD,KACAg0R,uCACAtqH,SACA26E,qCACAixC,qCACAhyO,aAGAmlM,0CACA/+E,SACA26E,qCACAixC,qCACAhyO,gBAKA,KACAk8G,KACAx/J,KACmCg0R,KACAvrC,SAG1B7hR,MAAO,YAwBhB,SAOAxI,wBACAG,gBACAA,gBACAA,aACAA,2BAIAA,oBACAA,uBACAA,kBAA4B6d,MAK5Brb,WACAxC,iCACAA,gDACAA,0CAEAA,8CACAA,sCAEAyhC,KACAzhC,iDACAA,iEAEgB,QAAKA,oFACrBA,6EAQAkJ,cACAlJ,qBACAA,iCASAsnU,qBACA7kI,mBACAziM,gCACAA,+FACAA,gFAGAA,gCACAA,+FACAA,8CAGAA,+BACA8lR,WACAixC,WACAiP,yBASAuB,gBACAvnU,iCACAA,6BACA8lR,UACAixC,WACAiP,yBAQAwB,gBACA,wDASAC,qBACAznU,+BACA8lR,WACAixC,WACAiP,uBACAjhP,UAOAo/O,4BACA56S,6CAC4BvpB,gCAC5BA,yBASA0nU,mBACA,OAAe,QAAS1nU,oCAA6C,QAASA,iBAG9Ek9B,yBAAyE,kBAAwC3rB,8BAAyBA,aAAmBA,8BAAyBA,cAAoBA,8BAAyBA,UAAgBA,8BAAwB2oI,QAC3Qh9G,aAA2C3rB,8BAAwB,CAAG3J,sDAAiF8+T,qEAEvJxpS,uBACA,CAAMt1B,KAAM2J,aACZ,CAA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,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC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E,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKsyL,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGi5D,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAInkP,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK/H,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,YAAWpN,GAAEzB,IAAG,QAAQ0R,GAAE,EAAElQ,GAAE,EAAEjC,GAAE,IAAI0V,MAAMuzP,GAAE,EAAEA,IAAG,GAAGA,KAAI,CAAC,QAAQ15P,GAAE,EAAEA,IAAGrN,GAAE+mQ,IAAG15P,KAAIvP,GAAES,GAAEwB,KAAI,GAAGjC,GAAES,GAAEwB,KAAI,GAAGkQ,GAAEnS,GAAES,GAAEwB,KAAI,GAAGgnQ,GAAEhnQ,KAAIkQ,KAAIA,IAAG,EAAE,OAAOnS,GAAE,YAAWkC,IAAG,QAAQzB,GAAEyB,GAAE,GAAGiQ,GAAEjQ,GAAE,GAAG,EAAE,GAAGiQ,IAAG1R,GAAE,GAAG0R,KAAI/E,IAAG,GAAG87P,GAAG/2P,OAAM+2P,EAAE,IAAI,KAAK97P,IAAGwD,GAAE,KAAKA,GAAE,IAAIA,GAAExD,IAAG87P,EAAE,EAAE97P,GAAE,GAAG,YAAWlL,IAAGsO,GAAEvN,KAAKf,IAAG,YAAWA,IAAG0O,GAAE1O,IAAG,EAAE,KAAK0O,GAAE,IAAI1O,IAAG,YAAWA,GAAEzB,GAAE0R,GAAElQ,GAAEjC,IAAG,QAAQipQ,GAAE15P,GAAEvP,GAAE,GAAG0G,GAAE1G,GAAE,KAAKJ,GAAE,SAASsC,GAAEzB,IAAG,IAAI0R,GAAElQ,GAAEjC,GAAEipQ,GAAE15P,GAAE7I,GAAE9G,EAAES,GAAER,GAAE0kT,GAAE8qB,GAAE,EAAE,IAAIxvU,GAAE,EAAEA,GAAE,IAAIA,GAAE,CAACsS,GAAEjQ,GAAEmtU,IAAGptU,GAAEC,GAAEmtU,GAAE,GAAGrvU,GAAEkC,GAAEmtU,GAAE,GAAGpmE,GAAE/mQ,GAAEmtU,GAAE,GAAG9/T,GAAErN,GAAEmtU,GAAE,GAAG3oU,GAAExE,GAAEmtU,GAAE,GAAGzvU,EAAEsC,GAAEmtU,GAAE,GAAG,IAAID,GAAEj9T,IAAG9R,GAAE6B,GAAEmtU,GAAE,IAAIp+T,GAAEkB,GAAE9R,GAAEH,GAAE+B,GAAErC,EAAE05T,GAAEr3T,GAAErC,EAAEK,GAAED,GAAE0G,GAAEvG,GAAEH,GAAE0G,GAAE4oU,GAAErmE,GAAE15P,GAAE8qQ,GAAEpR,GAAE15P,GAAEjP,GAAE8uU,GAAEE,GAAE9tU,GAAE4tU,GAAEE,GAAE/0D,GAAEr6Q,GAAED,GAAEsD,GAAErD,GAAED,GAAEiC,GAAEmtU,IAAG/uU,GAAEi6Q,GAAEr4Q,GAAEmtU,GAAE,GAAG/uU,GAAEi6Q,GAAE,IAAIn6Q,GAAE,YAAYmD,GAAE/B,IAAGU,GAAEmtU,GAAE,GAAG7tU,GAAEpB,GAAE8B,GAAEmtU,GAAE,GAAG7tU,GAAEpB,GAAE,IAAI+uU,GAAE,aAAa7uU,GAAE+5Q,GAAEl6Q,KAAIoD,GAAE+1T,GAAEroT,KAAI7B,GAAE,SAAS9O,GAAE6uU,GAAE7tU,GAAE,YAAYiC,GAAE4rU,GAAEnQ,GAAE,YAAYzkD,GAAEp6Q,GAAEm5T,IAAG9oT,GAAES,GAAE+tT,GAAE5xT,GAAE6D,GAAE+tT,GAAE98T,GAAEmtU,GAAE,GAAGjiU,GAAEgC,GAAElN,GAAEmtU,GAAE,GAAGjiU,GAAEgC,GAAElN,GAAEmtU,GAAE,GAAG7+T,GAAElP,GAAEY,GAAEmtU,GAAE,GAAG7+T,GAAElP,GAAE+tU,IAAG,EAAE,IAAIxvU,GAAEwvU,GAAE,EAAExvU,GAAE,IAAIA,GAAE,CAACsS,GAAEjQ,GAAEmtU,IAAGptU,GAAEC,GAAEmtU,GAAE,GAAGrvU,GAAEkC,GAAEmtU,GAAE,IAAIpmE,GAAE/mQ,GAAEmtU,GAAE,IAAI9/T,GAAErN,GAAEmtU,GAAE,IAAI3oU,GAAExE,GAAEmtU,GAAE,IAAIzvU,EAAEsC,GAAEmtU,GAAE,IAAI,IAAInmE,GAAE/2P,IAAG9R,GAAE6B,GAAEmtU,GAAE,KAAKztF,GAAEzvO,GAAE9R,GAAEgR,GAAEpP,GAAErC,EAAE6F,GAAExD,GAAErC,EAAE2vU,GAAEvvU,GAAE0G,GAAEo7I,GAAE9hJ,GAAE0G,GAAEmoB,GAAEo6O,GAAE15P,GAAEhO,GAAE0nQ,GAAE15P,GAAEU,GAAEi5P,GAAEr6O,GAAE0zK,GAAE2mE,GAAEr6O,GAAE2sO,GAAEnqP,GAAEk+T,GAAEl4T,GAAEhG,GAAEk+T,GAAErtU,GAAEmtU,IAAGp/T,GAAEurP,GAAEt5P,GAAEmtU,GAAE,IAAIp/T,GAAEurP,GAAE,IAAIlsP,GAAE,YAAY+H,GAAEkrL,IAAGrgM,GAAEmtU,GAAE,IAAI9sI,GAAEjzL,GAAEpN,GAAEmtU,GAAE,IAAI9sI,GAAEjzL,GAAE,IAAIisP,GAAE,aAAatrP,GAAE1O,GAAEugJ,KAAIzqI,GAAE5R,GAAEm8O,KAAIhxO,GAAE,SAASX,GAAEsrP,GAAEg+D,GAAE,YAAYliT,GAAEkkP,GAAEprM,GAAE,YAAYqrM,GAAE15G,GAAEr8I,IAAGgc,GAAEmgO,GAAEzxL,GAAEphC,GAAE6yN,GAAEzxL,GAAEjuD,GAAEmtU,GAAE,IAAItgT,GAAEne,GAAE1O,GAAEmtU,GAAE,IAAItgT,GAAEne,GAAE1O,GAAEmtU,GAAE,GAAG5tT,GAAE83S,GAAEr3T,GAAEmtU,GAAE,IAAI5tT,GAAE83S,GAAE8V,KAAI,IAAIxvU,GAAE,EAAEA,GAAE,KAAKA,GAAE0kT,GAAEriT,GAAErC,IAAGY,GAAEZ,IAAGuC,GAAEvC,IAAG,EAAE0kT,GAAEA,GAAE,GAAG,EAAEA,GAAE,GAAG,EAAE,OAAOniT,GAAt2B,CAAy2BF,GAAEzB,IAAGJ,GAAE,EAAEA,GAAE,KAAKA,GAAEivU,GAAEj1D,GAAEh6Q,KAAIT,GAAES,IAAG,IAAIR,GAAEyvU,GAAE,GAAGn9T,GAAEA,GAAEm9T,GAAE,GAAG,MAAK/zE,GAAEt5P,GAAE,KAAKs5P,GAAEt5P,GAAE9B,GAAE8oQ,GAAE,MAAMppQ,MAAK07P,GAAEt7P,GAAEgpQ,MAAK,QAAQs7C,GAAE,GAAG,EAAEA,IAAG,MAAKA,IAAGA,MAAK,GAAG,MAAK,OAAOhpD,GAAEhsP,IAAG4C,GAAE,QAAQk9T,GAAED,GAAE,EAAEA,IAAG7qB,IAAG,CAAC,QAAQtzS,GAAEm+T,GAAE,MAAKA,KAAIA,IAAG7qB,KAAI6qB,IAAG,IAAIlvU,GAAEkvU,GAAEn+T,GAAE,GAAG,IAAI/Q,GAAE,CAACmvU,GAAEnvU,IAAG,EAAE,QAAQo5T,GAAE,EAAEA,IAAG+V,KAAI/V,GAAE/9D,GAAE70P,IAAGxG,IAAG,GAAG+oQ,GAAE,MAAMqmE,GAAEF,IAAG7zE,GAAEv7P,IAAGE,IAAG,GAAGC,GAAE8oQ,MAAK1N,GAAEt7P,GAAEgpQ,KAAImmE,KAAI,OAAO,QAAO7zE,GAAEhsP,IAAG4C,GAAE,YAAWjQ,IAAMA,IAAG,IAAIA,GAAE,GAAG,IAAIA,KAAIA,GAAE,KAAKzB,IAAGyB,KAAI,SAASA,IAAG,QAAQzB,GAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI0R,GAAE,EAAEA,GAAE,GAAGA,KAAI,CAAC,IAAIlQ,GAAEsiT,IAAG9jT,GAAE0R,IAAGjQ,GAAE,IAAI,KAAKD,GAAE,EAAEA,GAAE,EAAE,IAAIA,KAAIA,GAAE,KAAKktU,GAAE90D,GAAEloQ,KAAIlQ,GAAE,QAAQjC,GAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIipQ,GAAE,EAAEA,GAAE,GAAGA,KAAI,CAAC,IAAI15P,GAAEg1S,IAAGvkT,GAAEipQ,IAAG/mQ,GAAE,IAAI,KAAKqN,GAAE,EAAEA,GAAE,EAAE,IAAIA,KAAIA,GAAE,KAAKH,GAAEirQ,GAAEpR,KAAI15P,GAAE,QAAQ7I,GAAE,CAAC,EAAE,YAAY,YAAY,YAAY,EAAE,WAAW,SAAS,YAAY9G,GAAE,EAAES,GAAE,EAAEA,GAAE,EAAEA,KAAI,QAAQR,GAAE,EAAEA,GAAE,EAAEA,KAAIyB,GAAE1B,IAAG,GAAGuvU,GAAE90D,GAAEz6Q,KAAI8G,GAAErG,IAAGqG,GAAE7G,IAAG,GAAGm/T,GAAEp/T,IAAG,GAAGwP,GAAEirQ,GAAEz6Q,KAAI8G,GAAErG,IAAGqG,GAAE7G,IAAG,GAAGD,KAAhvB,CAAsvBsC,GAAE,GAAGqlB,KAAKsd,MAAM,IAAI3iC,IAAGqlB,KAAKsd,MAAM,IAAI,EAAE3iC,KAAIzB,GAAEyB,IAAGpC,KAAK6kT,OAAO,SAASziT,GAAEzB,IAAG,IAAI0R,GAAElQ,IAAG,IAAIsD,MAAMkiB,UAAUhnB,IAAGghB,GAAEhhB,IAAG+P,GAAE,IAAIkF,MAAMtI,GAAE,EAAE87P,EAAE,EAAEqwD,GAAE,OAAOA,GAAE,OAAOA,GAAE,IAAI3oT,GAAE,IAAIA,GAAE,IAAIA,GAAE,IAAIA,GAAE,IAAIA,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAG2oT,GAAE,GAAGA,GAAE,GAAG3oT,GAAE,GAAGA,GAAE,GAAG,WAAW2oT,GAAE,OAAOA,GAAE,KAAK3oT,GAAE,GAAG,QAAQ1O,GAAE,EAAEA,GAAE,GAAGA,KAAI0O,GAAEu+T,GAAEjtU,KAAI0O,GAAE,GAAG,QAAQnQ,GAAE,EAAEA,GAAE,GAAGA,KAAImQ,GAAExB,GAAE3O,KAA3F,GAAkG0R,GAAEjQ,GAAEuT,MAAMxT,GAAEC,GAAE8R,OAAOulT,GAAE,OAAOA,GAAE,IAAI3oT,GAAE,GAAG2oT,GAAEt3T,IAAGs3T,GAAEpnT,IAAGvB,GAAE,GAAGA,GAAE,GAAGA,GAAE,IAAIA,GAAE,GAAGA,GAAE,GAAGA,GAAE,IAAIA,GAAE,GAAGA,GAAE,GAAGA,GAAE,IAAIA,GAAE,GAAG,WAAW2oT,GAAE,OAAOA,GAAE,KAAK3oT,GAAE,GAAG,QAAQ1O,GAAE,EAAEA,GAAE,GAAGA,KAAI0O,GAAEkxI,GAAE5/I,GAAE,IAAI,QAAQzB,GAAE,EAAEA,IAAG,GAAGA,KAAImQ,GAAEie,GAAEpuB,KAAImQ,GAAE,IAAI,QAAQuB,GAAE,EAAEA,GAAE,GAAGA,KAAIvB,GAAErP,GAAE4Q,GAAE,IAAI,QAAQlQ,EAAE,EAAEA,GAAG,IAAIA,IAAI2O,GAAEX,GAAEhO,IAAI2O,GAAE,GAAG,QAAQ5Q,GAAE,EAAEA,GAAE,GAAGA,KAAI4Q,GAAE2xL,GAAEviM,GAAE,IAAI,QAAQipQ,GAAE,EAAEA,IAAG,GAAGA,KAAIr4P,GAAE4qP,GAAEyN,KAAIr4P,GAAE,IAAI,QAAQrB,GAAE,EAAEA,GAAE,GAAGA,KAAIqB,GAAEyG,GAAE9H,GAAE,IAAI,QAAQ7I,GAAE,EAAEA,IAAG,IAAIA,KAAIkK,GAAEtB,GAAE5I,KAAnS,GAA0S6yT,GAAE,OAAOA,GAAE,IAAI3oT,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,IAAIA,GAAE,GAAGA,GAAE,IAAIA,GAAE,GAAGA,GAAE,IAAIA,GAAE,GAAG,IAAI5Q,GAAE,EAAEipQ,GAAE,EAAE15P,GAAE,EAAEnC,GAAE,EAAE87P,EAAE,EAAEppQ,KAAK6kT,OAAOkU,YAAY,WAAW,QAAQnyT,GAAE9G,GAAES,GAAER,GAAE0kT,GAAE8qB,GAAED,GAAEn+T,GAAE/Q,GAAEo5T,GAAEp3T,GAAEM,KAAKvC,GAAEiC,GAAEuT,MAAMtV,GAAE+B,GAAE8R,OAAOs7T,GAAE,EAAErvU,GAAEo6Q,GAAE,EAAEA,GAAEl6Q,IAAG,CAAC,IAAIuG,GAAE,EAAEA,GAAE4oU,IAAG,CAAC,IAAID,GAAE9qB,GAAE+qB,GAAEj1D,GAAE3zQ,GAAE0oU,IAAE,EAAGlvU,GAAE+Q,GAAE,EAAE/Q,GAAE,GAAGA,KAAImvU,GAAE9qB,IAAGtzS,GAAE/Q,IAAG,GAAGovU,IAAGF,GAAE,GAAG,EAAElvU,KAAIC,IAAGk6Q,GAAEppQ,KAAIo+T,IAAGC,IAAGj1D,GAAE,EAAEppQ,GAAE9Q,KAAImvU,IAAG5oU,GAAE0oU,KAAIC,IAAG3oU,GAAE0oU,GAAEE,GAAE,GAAG1vU,GAAE05T,GAAE+V,MAAKhvU,GAAEi5T,GAAE+V,MAAKxvU,GAAEy5T,GAAE+V,MAAKztF,GAAE1hP,KAAIqvU,GAAE3vU,IAAG2vU,GAAElvU,GAAE,KAAK,GAAGkvU,GAAE1vU,GAAE,KAAK,IAAI,IAAI,IAAIwR,GAAEnR,KAAIqvU,GAAE3vU,GAAE,KAAK,GAAG2vU,GAAElvU,GAAE,MAAM,GAAGkvU,GAAE1vU,GAAE,MAAM,IAAI,IAAI,IAAI4F,GAAEvF,KAAIqvU,GAAE3vU,GAAE,MAAM,GAAG2vU,GAAElvU,GAAE,MAAM,GAAGkvU,GAAE1vU,GAAE,MAAM,IAAI,IAAI,IAAIG,GAAEmwD,GAAEyxL,GAAEtgP,GAAEtB,GAAEwB,GAAE+B,IAAG0lQ,GAAE94M,GAAE9+C,GAAE2tT,GAAE/1D,GAAEsR,GAAEn6Q,IAAGmP,GAAE4gD,GAAE1qD,GAAEu5T,GAAEzvT,GAAEgrQ,GAAEn6Q,IAAGsG,IAAG,GAAG2zQ,IAAG,EAAE,GAAG,GAAGnR,EAAE,CAAC,IAAI5oQ,GAAE,GAAGA,GAAE,GAAG4oQ,EAAE,EAAE5oQ,GAAE,IAAI,GAAG4oQ,EAAE,GAAG,EAAE3N,GAAEj7P,IAAG,OAAOi5T,GAAE,OAAO,IAAI9xQ,WAAWj3C,MAAgB,IAAIjL,MAAMkiB,UAAUvlB,KAAIA,GAAE,IAAI,WAAW,QAAQA,GAAE2pC,OAAOC,aAAarrC,GAAE,EAAEA,GAAE,IAAIA,KAAI0R,GAAE1R,IAAGyB,GAAEzB,IAA9D,GAAoEe,GAAES,GAAE6/I,GAAEjzH,IAAG0rP,GAAEt4Q,GAAEsgM,GAAEi5D,IAAGj4P,GAAEtB,GAAEV,GAAE0O,IAAG7P,GAAE6B,GAAEoV,GAAE/H,IAAG,WAAW,QAAQpN,GAAE,EAAEzB,GAAE,EAAE0R,GAAE,EAAEA,IAAG,GAAGA,KAAI,CAAC,QAAQlQ,GAAEC,GAAED,GAAExB,GAAEwB,KAAI9B,GAAE,MAAM8B,IAAGkQ,GAAElS,GAAE,MAAMgC,IAAG,GAAGhC,GAAE,MAAMgC,IAAG,GAAGkQ,GAAElS,GAAE,MAAMgC,IAAG,GAAGA,GAAE,QAAQjC,KAAIS,GAAE,GAAGT,KAAIkC,GAAElC,KAAIG,GAAE,MAAMH,IAAGmS,GAAElS,GAAE,MAAMD,IAAG,GAAGC,GAAE,MAAMD,IAAG,GAAGmS,GAAElS,GAAE,MAAMD,IAAG,GAAGS,GAAE,EAAET,GAAEkC,KAAI,EAAEzB,KAAI,GAA7N,GAAmO,WAAW,QAAQyB,GAAE,EAAEA,GAAE,IAAIA,KAAIqtU,GAAErtU,IAAG,MAAMA,GAAEqtU,GAAErtU,GAAE,KAAK,GAAG,MAAMA,GAAEqtU,GAAErtU,GAAE,KAAK,GAAG,KAAKA,GAAE,MAAMqtU,GAAErtU,GAAE,KAAK,IAAG,MAAOA,GAAEqtU,GAAErtU,GAAE,MAAM,IAAG,MAAOA,GAAEqtU,GAAErtU,GAAE,MAAM,GAAG,MAAMA,GAAE,QAAQqtU,GAAErtU,GAAE,MAAM,IAAG,MAAOA,GAAEqtU,GAAErtU,GAAE,MAAM,IAAG,KAAMA,GAA5M,GAAiNuf,GAAEvf,KAAI,IAAIqD,MAAMkiB,UAAa,YAAYvlB,GAAEzB,IAAG,GAAGX,KAAKshW,IAAI,EAAEthW,KAAKyxV,OAAOrvV,GAAEpC,KAAKuhW,MAAM,IAAItC,SAAS78V,GAAEqvV,QAAQzxV,KAAKwhW,gBAAgB7gW,GAAEX,KAAKyhW,WAAU,EAAGzhW,KAAK0hW,KAAK31T,OAAOC,aAAahsC,KAAKyxV,OAAO,IAAI1lT,OAAOC,aAAahsC,KAAKyxV,OAAO,IAAIzxV,KAAKshW,KAAK,GAAE,KAAM,KAAK,KAAK,KAAK,KAAK,KAAK,MAAMlwV,QAAQpR,KAAK0hW,MAAM,MAAM,IAAIxhH,MAAM,oBAAoBlgP,KAAK2hW,cAAc3hW,KAAK4hW,WAAWrmT,OAAOulS,IAAIh9D,GAAG71O,GAAG0lS,IAAIsZ,WAAWtxT,GAAG,mBAAmB41S,aAAa,mBAAmB5pR,WAAW7xC,GAAG,KAAKqnB,GAAG,WAAW,IAAIxB,GAAG,OAAO,WAAW,OAAM,GAAI,IAAI,IAAIv5B,GAAE,GAAG,mBAAmBA,GAAEy/V,SAAS/rV,GAAG1T,GAAEy/V,OAAQ,CAARA,MAAcz/V,IAAN,CAAU,OAAO,SAASA,IAAG,OAAOA,cAAamvU,aAAa,WAAWnvU,cAAa0T,IAA5L,GAAmMnE,GAAG,UAAU,SAASvP,IAAG,OAAO,IAAI0T,GAAG1T,GAAE,QAAQyE,SAAS,WAAW,SAASzE,IAAG,OAAOwqC,SAASC,mBAAmBzqC,MAAK4T,GAAG,SAAS5T,GAAEzB,IAAG,QAAQ0R,GAAE,MAAMjQ,GAAED,GAAEC,KAAI,GAAGlC,GAAE,EAAEipQ,GAAExoQ,GAAE6C,OAAOtD,GAAEipQ,GAAEjpQ,KAAsCiC,IAAGA,IAArCkQ,IAAGA,IAAG,IAAI1R,GAAEirC,WAAW1rC,MAAK,QAAc,MAAM,OAAOiC,IAAG,GAAGkQ,MAAK,GAAG8zM,EAAG,SAAS/jN,GAAEzB,IAAG,QAAQ0R,GAAE,MAAMjQ,GAAED,GAAEC,KAAI,GAAGlC,GAAE,EAAEipQ,GAAExoQ,GAAE6C,OAAOtD,GAAEipQ,GAAEjpQ,KAAqBiC,IAAGA,IAApBkQ,IAAGA,GAAE1R,GAAET,KAAI,QAAc,MAAM,OAAOiC,IAAG,GAAGkQ,MAAK,GAAGtN,GAAIq/B,GAAG,IAAI09T,WAAWjiR,IAAI5pE,GAAG,SAAS7T,IAAG,KAAKpC,gBAAgBiW,IAAI,MAAM,IAAI24T,UAAU,+CAA+C,IAAIt2P,SAASl2E,GAAE,SAAQ,GAAGA,IAAG,MAAM,IAAI89O,MAAM,gDAAgDlgP,KAAKkmT,SAAS9jT,KAAI,IAAI6nB,UAAU,IAAIpqB,YAAYoW,IAAIwzB,OAAO22N,GAAG,SAASh+P,IAAG,KAAKpC,gBAAgBiW,IAAI,MAAM,IAAI24T,UAAU,+CAA+C,GAAG,SAAQ,MAAM,IAAI1uF,MAAM,wCAAwClgP,KAAKkmT,SAASlwS,GAAG,EAAE5T,GAAEyE,cAAcojB,UAAU41D,GAAGugL,IAAInqP,GAAG8rV,WAAWx5I,GAAG,SAASnmN,IAAG,KAAKpC,gBAAgBiW,IAAI,MAAM,IAAI24T,UAAU,+CAA+C,GAAG,SAAQ,MAAM,IAAI1uF,MAAM,wCAAwC,IAAIv/O,GAAEgR,GAAGvP,GAAEyE,YAAY7G,KAAKkmT,SAASlwS,GAAG,EAAErV,MAAKspB,UAAU41D,GAAG0oI,IAAI5sL,KAAK1lB,GAAG+rV,aAAa5zM,GAAG,SAAShsJ,IAAG,KAAKpC,gBAAgBiW,IAAI,MAAM,IAAI24T,UAAU,+CAA+C,IAAIzxS,GAAG/6B,IAAG,MAAM,IAAI89O,MAAM,2CAA2C,IAAIv/O,GAAE,IAAIgnD,WAAWvlD,IAAG,OAAOpC,KAAKkmT,SAAS//F,EAAG,EAAExlN,MAAKspB,UAAU41D,GAAGuuE,KAAKvuE,GAAG2S,OAAO,SAASpwF,IAAG,GAAG,SAAQ,MAAM,IAAI89O,MAAM,wCAAwC,OAAO99O,GAAEA,GAAEyE,WAAW7G,KAAKkmT,SAASlwS,GAAGhW,KAAKkmT,SAAS9jT,KAAIy9E,GAAGoiR,WAAW,SAAS7/V,IAAG,GAAG,SAAQ,MAAM,IAAI89O,MAAM,wCAAwC,IAAIv/O,GAAEgR,GAAGvP,GAAEyE,YAAY,OAAO7G,KAAKkmT,SAASlwS,GAAGhW,KAAKkmT,SAASvlT,KAAIg7B,KAAKkkD,GAAGqiR,aAAa,SAAS9/V,IAAG,IAAI+6B,GAAG/6B,IAAG,MAAM,IAAI89O,MAAM,2CAA2C,IAAIv/O,GAAE,IAAIgnD,WAAWvlD,IAAG,OAAOpC,KAAKkmT,SAAS//F,EAAGnmN,KAAKkmT,SAASvlT,MAAKk/E,GAAGwqE,MAAM,WAAW,OAAO,IAAItlJ,EAAG/E,KAAKkmT,WAAWjwS,IAAImuB,GAAGqF,KAAK,SAASrnC,IAAG,GAAG,SAAQ,MAAM,IAAI89O,MAAM,wCAAwC,OAAOlqO,GAAG,EAAE5T,GAAEyE,aAAau9B,GAAG29T,SAAS,SAAS3/V,IAAG,GAAG,SAAQ,MAAM,IAAI89O,MAAM,wCAAwC,IAAIv/O,GAAEgR,GAAGvP,GAAEyE,YAAY,OAAOmP,GAAG,EAAErV,KAAIg7B,KAAKyI,GAAG49T,WAAW,SAAS5/V,IAAG,IAAI+6B,GAAG/6B,IAAG,MAAM,IAAI89O,MAAM,0CAA0C,IAAIv/O,GAAE,IAAIgnD,WAAWvlD,IAAG,OAAO+jN,EAAG,EAAExlN,MAAKyjC,IAAI,SAAShiC,IAAGA,GAAE+/V,eAAe//V,GAAE6nB,UAAUk4U,eAAe,SAAS//V,IAAG,IAAI+O,GAAE/Q,GAAEqkT,GAAE8qB,GAAErvU,GAAEipQ,GAAE15P,GAAE7I,GAAEjG,GAAE64T,GAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAIr5T,GAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAIE,GAAE,CAACo6Q,EAAE,EAAEh5Q,EAAE,EAAE2gW,GAAG,EAAEC,GAAG,EAAE3gW,EAAE,EAAE0nQ,EAAE,EAAE9oQ,EAAE,GAAGR,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAGS,GAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAI,OAAI,OAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,SAAI,UAAKR,EAAE,IAAIk8B,OAAO,qGAAqGuzS,IAAE,EAAGj1D,GAAE,EAAEv6Q,KAAKmiW,eAAe,GAAG,IAAI3hW,GAAE,SAAS4B,IAAG,IAAIzB,GAAEyB,GAAEwpC,aAAav5B,GAAE1R,IAAG,EAAEwB,GAAErC,GAAEuS,IAAG,YAAO,OAAWzL,GAAE,IAAIzE,IAAG,IAAIxB,KAAI,UAAS,SAAQ,KAAKZ,EAAE0qC,KAAKp4B,IAAG,IAAI,OAAM,IAAI,KAAKi9T,GAAE,SAASltU,IAAG,QAAQzB,GAAE0R,GAAE,EAAEA,GAAEjQ,GAAEoB,OAAO6O,KAAI,CAAC,GAAG,OAAO1R,GAAEH,GAAE4B,GAAE+xC,OAAO9hC,MAAK,OAAM,EAAG,GAAG,SAAQ,OAAM,EAAG,OAAM,GAAI3Q,GAAE,SAASU,GAAEzB,GAAE0R,GAAElQ,IAAG,IAAIjC,GAAEipQ,GAAE15P,GAAE7I,GAAE9G,GAAEa,GAAEwB,IAAG,OAAOrC,QAAO,QAAQ,IAAksB,IAAU,UAAU,UAAU,UAAU,UAAU,MAAM0vU,IAAE,EAAG,MAAtvB,IAAU,QAAQ,KAAK,UAAU,KAAKA,KAAI1vU,GAAE,MAAM,UAAU,KAAK0vU,IAAE,EAAG1vU,GAAE,IAAI,UAAU,KAAgqB,IAAU,KAAKA,GAAE,UAAtqB,IAAU,KAAKqC,GAAE,GAAGA,GAAE,GAAGxB,GAAE6C,QAAQ,QAAQtD,GAAEmS,GAAElQ,GAAE,KAAK,WAAU,QAAQgnQ,GAAExoQ,GAAEwB,GAAE,KAAK,UAASrC,GAAE,IAAI0vU,KAAIrmE,GAAE,MAAMrpQ,GAAEqpQ,KAAIjpQ,GAAEipQ,GAAE,IAAI,UAAU,KAAKrpQ,GAAE,QAAQI,GAAE,EAAEiC,GAAEkQ,GAAElQ,GAAE,GAAG,MAAMA,GAAE,EAAExB,GAAE6C,QAAQ,UAASrB,GAAE,GAAG,KAAK,IAAI,UAAU,KAAK,GAAG,EAAEA,IAAG,UAASA,GAAE,GAAG,CAACrC,GAAE,KAAK,MAAM,GAAG0vU,GAAE,CAAC1vU,GAAE,IAAI,MAAM,IAAI2P,GAAEtN,GAAE,EAAEyE,GAAEjG,GAAE6C,OAAOiM,GAAE7I,IAAG,UAAS6I,KAAIA,KAAI3P,GAAE2P,GAAE7I,IAAG,UAAS6I,IAAG,KAAK,IAAI,UAAU,MAAM,GAAGg1S,KAAI8qB,GAAE,CAAC,IAAI3oU,GAAEjG,GAAE6C,OAAOiM,GAAEtN,GAAE,EAAEsN,GAAE7I,IAAG,WAAU6I,KAAIA,KAAI,GAAGA,GAAE7I,GAAE,CAAC,IAAIrG,GAAE6B,GAAED,IAAGpC,GAAE,MAAMQ,IAAGA,IAAG,MAAM,WAAU,GAAGL,GAAES,GAAE8O,IAAG1P,KAAI,MAAMG,IAAG,WAAU,CAACJ,GAAE,IAAI,QAAQA,GAAEqC,GAAE,GAAG,OAAOjC,GAAES,GAAEwB,GAAE,IAAI,IAAIkQ,GAAElQ,GAAE,GAAG,UAAU,IAAIgP,KAAIq+T,IAAE,GAAI1vU,GAAEy6Q,GAAE,UAAU,IAAIn6Q,IAAE,EAAGN,GAAE,IAAsF,OAAOA,IAAG26Q,GAAE,SAASr4Q,GAAEzB,GAAE0R,IAAG,IAAIlQ,GAAEC,GAAE+mB,MAAM,IAAI,OAAO9W,IAAG5O,GAAEtB,GAAEkQ,GAAE,CAACiwV,QAAQ/nF,KAAIp4Q,GAAE4+G,UAAUpgH,IAAGA,GAAEogH,UAAU5+G,GAAE44B,KAAK,KAAKt3B,GAAE,SAASrB,GAAEzB,GAAE0R,IAAG,IAAIlQ,GAAEjC,GAAEipQ,GAAE15P,GAAE7I,GAAE9G,IAAE,EAAGS,GAAE6B,GAAEoB,OAAOzD,GAAE,EAAE0kT,GAAE,GAAG8qB,GAAEh1D,GAAEp6Q,GAAEq5T,GAAE8V,GAAE,GAAG,IAAIlvU,GAAE+Q,GAAEq+T,IAAE,EAAGtvU,GAAE,EAAEA,GAAEK,GAAEL,KAAIovU,GAAEpvU,IAAGM,GAAE4B,GAAElC,KAAI,IAAIipQ,GAAE,EAAEA,GAAE5oQ,GAAE4oQ,KAAI,CAAC,GAAGviQ,GAAE7G,GAAE0kT,GAAEt7C,IAAGznQ,GAAEU,GAAEktU,GAAE7qB,GAAEt7C,IAAGhnQ,GAAE,KAAKpC,GAAEwvU,GAAE3oU,IAAGvG,GAAEokT,GAAEt7C,OAAMppQ,IAAG,GAAGY,GAAEwoQ,IAAG15P,GAAE8/T,GAAExvU,IAAG,GAAG,EAAEoC,GAAE,GAAG,QAAO,CAAC,IAAIjC,GAAEJ,GAAEI,GAAEipQ,GAAEjpQ,KAAIS,GAAET,IAAG,EAAEJ,IAAE,OAAQA,IAAE,EAAG,GAAGyvU,GAAExvU,IAAG,IAAG,IAAKD,KAAIA,GAAEqpQ,aAAW,EAAGrpQ,GAAE,CAAC,IAAII,GAAEJ,GAAEI,GAAEipQ,GAAEjpQ,KAAIS,GAAET,IAAGuP,GAAE3P,IAAE,EAAG,MAAMwvU,GAAEnmE,MAAKxoQ,GAAEwoQ,IAAG,GAAG92P,GAAEiwV,SAAS7yV,GAAErP,IAAG,SAASgC,GAAEzB,GAAE0R,IAAG,QAAQlQ,GAAE,EAAEA,GAAEkQ,GAAElQ,KAAI,GAAG,SAAQA,IAAG,CAACxB,GAAEwB,IAAGo4Q,GAAE,QAAQr6Q,GAAEiC,GAAE,EAAE,GAAGjC,IAAG,UAASA,IAAGA,KAAIS,GAAET,IAAGq6Q,IAAnG,CAAuG+0D,GAAE3uU,GAAEJ,KAAID,GAAE,SAAS8B,GAAEzB,GAAE0R,GAAElQ,GAAEjC,IAAG,KAAKA,GAAEoiW,QAAQlgW,IAAG,CAAC,GAAG,QAAO,SAAQ+O,GAAE,OAAOxQ,GAAEogH,eAAe1uG,IAAGA,GAAE0uG,WAAW,QAAQooJ,GAAE15P,GAAE7I,GAAE9G,GAAES,GAAEI,GAAE6C,OAAOzD,GAAE,EAAEA,GAAEQ,IAAG,CAAC,GAAG4B,GAAEpC,KAAIqC,GAAE,CAAC,IAAIwE,GAAE7G,GAAE,EAAE6G,GAAErG,IAAG4B,GAAEyE,KAAIxE,IAAGwE,KAAI,IAAI9G,GAAEC,GAAE0P,GAAE7I,GAAE,EAAE9G,GAAE2P,GAAE3P,KAAI2P,KAAI05P,GAAExoQ,GAAEb,IAAGa,GAAEb,IAAGa,GAAE8O,IAAG9O,GAAE8O,IAAG05P,GAAE92P,KAAI82P,GAAE92P,GAAEvS,IAAGuS,GAAEvS,IAAGuS,GAAE5C,IAAG4C,GAAE5C,IAAG05P,IAAGppQ,GAAE6G,GAAE7G,QAAOsvU,GAAE,SAASjtU,GAAEzB,GAAE0R,IAAG,IAAIlQ,GAAEC,GAAE+mB,MAAM,IAAIjpB,GAAE,CAACoiW,QAAQ/nF,IAAG,OAAOloQ,KAAIA,GAAE,IAAI5O,GAAEtB,GAAEkQ,GAAEnS,IAAG,SAASkC,GAAEzB,GAAE0R,IAAG,GAAG,OAAMiwV,SAAS7yV,GAAE,QAAQtN,GAAEjC,GAAE,EAAEA,GAAEkC,GAAEoB,OAAOtD,KAAI,IAAIS,GAAET,KAAI,IAAIiC,GAAE5B,GAAE6Q,QAAQhP,GAAElC,QAAOkC,GAAElC,IAAGK,GAAE4B,GAAE,IAA7G,CAAkHA,GAAEkQ,GAAEnS,IAAGI,GAAE,EAAE6B,GAAExB,GAAE0R,GAAEnS,IAAGI,GAAE,EAAE6B,GAAExB,GAAE0R,GAAEnS,IAAGiC,GAAE44B,KAAK,KAAK,OAAO/6B,KAAKmiW,eAAeI,cAAc,SAASngW,GAAEzB,GAAE0R,IAAG,GAAG,SAASjQ,GAAEzB,IAAG,GAAGA,GAAE,QAAQ0R,GAAE,EAAEA,GAAEjQ,GAAEoB,OAAO6O,KAAI1R,GAAE0R,IAAGA,QAAE,IAASk9T,KAAIA,GAAED,GAAEltU,UAAI,SAAa+mQ,GAAEmmE,GAAEltU,KAA3F,CAAgGA,GAAEzB,IAAG8jT,KAAIvkT,IAAGipQ,GAAE,GAAGs7C,IAAGvkT,IAAGqvU,GAAEpmE,GAAEoR,GAAEg1D,GAAE,EAAE,EAAEntU,GAAEq4Q,GAAEr4Q,GAAEzB,GAAE0R,aAAYoyS,IAAGvkT,IAAGipQ,GAAEoR,GAAEg1D,GAAE,EAAE,EAAEntU,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAGjQ,GAAEq4Q,GAAEr4Q,GAAEzB,aAAY8jT,IAAG8qB,IAAGrvU,IAAGipQ,IAAG,GAAGs7C,KAAIvkT,IAAGqvU,GAAEpmE,GAAE/mQ,GAAEq4Q,GAAEr4Q,GAAEzB,IAAGyB,GAAEmtU,IAAGh1D,GAAE,EAAE80D,GAAEjtU,GAAEzB,GAAE0R,MAAKkoQ,GAAE,EAAEn4Q,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAGooQ,GAAEr4Q,GAAEzB,aAAY8jT,IAAG8qB,KAAIrvU,IAAGipQ,GAAEoR,GAAE,EAAEn4Q,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAGjQ,GAAEq4Q,GAAEr4Q,GAAEzB,aAAY8jT,KAAIvkT,IAAGqvU,GAAEpmE,GAAE,CAAC,IAAIhnQ,GAAEsN,GAAE8/T,IAAGh1D,GAAE,EAAEn4Q,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAGkoQ,GAAE,EAAE9qQ,IAAE,EAAGrN,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAG5C,GAAEtN,KAAIo4Q,GAAE,EAAEn4Q,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAGjQ,GAAEq4Q,GAAEr4Q,GAAEzB,IAAG8O,KAAI8qQ,GAAE,GAAGn4Q,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAG5C,GAAEtN,GAAEC,GAAEq4Q,GAAEr4Q,GAAEzB,WAAU45Q,GAAE,EAAEn4Q,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,SAAQkoQ,GAAEg1D,GAAE,EAAE,EAAEntU,GAAEitU,GAAEjtU,GAAEzB,GAAE0R,IAAG,OAAOjQ,IAAGpC,KAAKmiW,eAAerkB,WAAW,SAAS17U,IAAGA,KAAIqiT,GAAEriT,GAAEogW,cAActiW,GAAEkC,GAAEqgW,eAAelzB,GAAEntU,GAAEsgW,WAAWv5F,GAAE/mQ,GAAEugW,YAAYlzV,GAAErN,GAAEwgW,sBAAsB5iW,KAAKmiW,eAAerkB,WAAW17U,IAAGpC,KAAKmiW,gBAAgB,IAAIxhW,GAAE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAA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AAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,cAAc,IAAI2uU,GAAEtvU,KAAK,YAAWoC,GAAEzB,IAAG,QAAQ0R,EAAE,EAAEA,GAAG,EAAEjQ,GAAEA,MAAK,EAAEiQ,IAAI,EAAE,IAAI1R,KAAI,OAAO0R,IAAI,EAAEi9T,GAAE40B,WAAW,SAAS9hW,IAAG,IAAIzB,GAAE0R,EAAElQ,GAAEjC,GAAEovU,GAAE60B,SAASh7F,GAAEmmE,GAAE80B,UAAUC,YAAY50V,GAAE6/T,GAAE80B,UAAUE,MAAM19V,IAAE,EAAG,IAAIxE,GAAEmiW,SAAS,EAAEniW,GAAEoiW,SAASpkW,GAAEO,GAAE,EAAEA,GAAE8O,GAAE9O,KAAI,IAAIT,GAAE,EAAES,KAAIyB,GAAEqiW,OAAOriW,GAAEmiW,UAAU39V,GAAEjG,GAAEyB,GAAEsiW,MAAM/jW,IAAG,GAAGT,GAAE,EAAES,GAAE,GAAG,EAAE,KAAKyB,GAAEmiW,SAAS,GAAGrkW,GAAE,GAAGiC,GAAEC,GAAEqiW,OAAOriW,GAAEmiW,UAAU39V,GAAE,IAAIA,GAAE,IAAI,EAAExE,GAAEsiW,MAAMviW,IAAG,EAAEC,GAAEuiW,UAAUx7F,KAAI/mQ,GAAEwiW,YAAYz7F,GAAE,EAAEhnQ,GAAE,IAAI,IAAImtU,GAAEu1B,SAASj+V,GAAEjG,GAAE8mB,KAAKsd,MAAM3iC,GAAEmiW,SAAS,GAAG,GAAG5jW,GAAEA,KAAIyB,GAAE0iW,WAAW5kW,GAAES,IAAG,IAAIwB,GAAEsN,GAAE9O,GAAEyB,GAAEqiW,KAAK,GAAGriW,GAAEqiW,KAAK,GAAGriW,GAAEqiW,KAAKriW,GAAEmiW,YAAYniW,GAAE0iW,WAAW5kW,GAAE,GAAGmS,EAAEjQ,GAAEqiW,KAAK,GAAGriW,GAAEqiW,OAAOriW,GAAEoiW,UAAU7jW,GAAEyB,GAAEqiW,OAAOriW,GAAEoiW,UAAUnyV,EAAEnS,GAAE,EAAEiC,IAAGjC,GAAE,EAAES,IAAGT,GAAE,EAAEmS,GAAGjQ,GAAEsiW,MAAMviW,IAAGslB,KAAKqgB,IAAI1lC,GAAEsiW,MAAM/jW,IAAGyB,GAAEsiW,MAAMryV,IAAI,EAAEnS,GAAE,EAAES,GAAE,GAAGT,GAAE,EAAEmS,EAAE,GAAGlQ,GAAEC,GAAEqiW,KAAK,GAAGtiW,KAAIC,GAAE0iW,WAAW5kW,GAAE,GAAG,GAAGkC,GAAEmiW,WAAWniW,GAAEqiW,OAAOriW,GAAEoiW,UAAUpiW,GAAEqiW,KAAK,GAAG,SAASriW,IAAG,IAAIzB,GAAE0R,GAAElQ,GAAEjC,GAAEipQ,GAAE15P,GAAE7I,GAAE0oU,GAAE60B,SAASrkW,GAAEwvU,GAAE80B,UAAUC,YAAY9jW,GAAE+uU,GAAE80B,UAAUW,WAAWhlW,GAAEuvU,GAAE80B,UAAUY,WAAWvgD,GAAE6qB,GAAE80B,UAAUa,WAAW11B,GAAE,EAAE,IAAIrvU,GAAE,EAAEA,IAAGiR,GAAEjR,KAAIkC,GAAE8iW,SAAShlW,IAAG,EAAE,IAAI0G,GAAE,EAAExE,GAAEqiW,KAAKriW,GAAEoiW,UAAU,GAAG,EAAE7jW,GAAEyB,GAAEoiW,SAAS,EAAE7jW,GAAEP,GAAEO,KAAI8jT,IAAGvkT,GAAE0G,GAAE,EAAEA,GAAE,GAAGyL,GAAEjQ,GAAEqiW,KAAK9jW,KAAI,GAAG,GAAG,KAAKT,GAAEukT,GAAE8qB,MAAK3oU,GAAE,EAAEyL,GAAE,GAAGnS,GAAEmS,GAAEi9T,GAAEu1B,WAAWziW,GAAE8iW,SAAShlW,MAAKipQ,GAAE,EAAEppQ,IAAGsS,KAAI82P,GAAE5oQ,GAAE8R,GAAEtS,KAAI0P,GAAE7I,GAAE,EAAEyL,IAAGjQ,GAAEuiW,SAASl1V,IAAGvP,GAAEipQ,IAAGrpQ,KAAIsC,GAAEwiW,YAAYn1V,IAAG3P,GAAE,EAAEuS,GAAE,GAAG82P,MAAK,GAAG,OAAM,CAAC,EAAE,CAAC,IAAIjpQ,GAAEukT,GAAE,EAAE,OAAMygD,SAAShlW,KAAIA,KAAIkC,GAAE8iW,SAAShlW,MAAKkC,GAAE8iW,SAAShlW,GAAE,IAAI,EAAEkC,GAAE8iW,SAASzgD,MAAK8qB,IAAG,QAAQ,EAAEA,IAAG,IAAIrvU,GAAEukT,GAAE,OAAMvkT,KAAI,IAAImS,GAAEjQ,GAAE8iW,SAAShlW,IAAG,SAAQiC,GAAEC,GAAEqiW,OAAO9jW,KAAI2uU,GAAEu1B,WAAWj+V,GAAE,EAAEzE,GAAE,IAAIjC,KAAIkC,GAAEuiW,UAAUzkW,GAAE0G,GAAE,EAAEzE,GAAE,IAAIyE,GAAE,EAAEzE,IAAGyE,GAAE,EAAEzE,GAAE,GAAGjC,IAAGmS,OAA3oB,CAAkpBjQ,IAAG,SAASA,GAAEzB,GAAE0R,IAAG,IAAIlQ,GAAEjC,GAAEipQ,GAAE15P,GAAE,GAAG7I,GAAE,EAAE,IAAIzE,GAAE,EAAEA,IAAGgP,GAAEhP,KAAIsN,GAAEtN,IAAGyE,GAAEA,GAAEyL,GAAElQ,GAAE,IAAI,EAAE,IAAIjC,GAAE,EAAEA,IAAGS,GAAET,KAAI,KAAKipQ,GAAE/mQ,GAAE,EAAElC,GAAE,MAAMkC,GAAE,EAAElC,IAAGJ,GAAE2P,GAAE05P,MAAKA,KAA3H,CAAgIjpQ,GAAEovU,GAAEu1B,SAASziW,GAAE8iW,WAAW,YAAY9iW,GAAEzB,GAAE0R,GAAElQ,GAAEjC,GAAGF,KAAKqkW,YAAYjiW,GAAEpC,KAAK+kW,WAAWpkW,GAAEX,KAAKglW,WAAW3yV,GAAErS,KAAKskW,MAAMniW,GAAEnC,KAAKilW,WAAW/kW,EAAgvG,YAAWkC,GAAEzB,GAAE0R,GAAElQ,GAAEjC,GAAGF,KAAKmlW,YAAY/iW,GAAEpC,KAAKolW,SAASzkW,GAAEX,KAAKqlW,YAAYhzV,GAAErS,KAAKslW,UAAUnjW,GAAEnC,KAAKulW,KAAKrlW,EAAr1GkuJ,GAAGo3M,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIp3M,GAAGq3M,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAGr3M,GAAGs3M,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,OAAOt3M,GAAGu3M,OAAO,SAASvjW,IAAG,OAAOA,GAAE,IAAIzB,GAAEyB,IAAGzB,GAAE,KAAKyB,KAAI,KAAKgsJ,GAAGw3M,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGx3M,GAAGy3M,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIz3M,GAAG03M,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG13M,GAAG23M,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI9vV,GAAG+vV,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI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CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,SAASp7E,GAAE,CAAC,IAAIo7E,YAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO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CAE,8CACAkqP,uBACAC,iBACA,uBAEAC,yBACA,YACApyY,YAEAA,aAGAqyY,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,yBACAC,0BACAC,wBACAC,yBACAC,+BACAC,cAEAC,cACAC,gBACAC,iBACA1uY,qBACA2uY,iBACA/7E,cACAppC,eACA7vR,WACAi1Y,YACArkY,WACAw9R,YACAhpS,aACA8vY,eACAt1Y,YACAu1Y,cAEAC,yCACAC,oBACA,OACAhvY,GACA,iCAGAy2T,MACAw4E,MACAC,QAIA,CAzEuC1zY,CAAW+mQ,EAAQ,OAyE1D;;;;;;;;CClEC,YAA4B;kCAI7B;IAAA/mQ,cACA,aACA,EACA,MACA,EACA,MACA,EACAtC,oBACA,EACAA,UACA,EACA,GAEA8G,GACAA,GACA,iEACA,gEACA,4FACA,8BACA,oCACA,qCAEA4yT,GACA,iEACA,gEACA,4FACA,oCACA,oCACA,qCAEAj5T,GACA,2DACA,0DACA,gFACA,oCACA,8BACA,+BAEA4Q,GACA,qDACA,8CACA,oEACA,8BACA,oCACA,yBAEAxL,GACA,qDACA,8CACA,oEACA,8BACA,8BACA,yBAEAxF,GACA,qDACA,8CACA,oEACA,oCACA,oCACA,0BAGAkS,cACA,yBACA,WACA/R,aACA,eACAA,YAEAA,qBAGA6B,GACA,iCACA,iCACA,2BACA,iCACA,qBACA,2BACA,uCACA,qBACA,uCACA,uCACA,uCACA,wCAGAxB,wBACA6oJ,SACAE,cACAK,2SACAE,4NACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,yBACAk6H,iBACAC,wBACAC,+BAEAR,8BACAC,iBACA,oBAEAC,yBACA,YACA,SAEA,UAGAl7E,UACAy7E,sGACAC,gGACAC,6EACAC,0FACAC,6EACAC,cAEAC,cACAC,+BACAC,6BACA1uY,SACA2uY,UACA/7E,SACAppC,UACA7vR,SACAi1Y,UACArkY,SACAw9R,UACAhpS,SACA8vY,UACAt1Y,SACAu1Y,WAEAM,uBACA,iCAEA34E,MACAw4E,MACAC,QAIA,CA1JuC1zY,CAAW+mQ,EAAQ,OA0J1D;;;;CC3JC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,uXACA,KAEAE,YACA,gXACA,KAEAK,2SACAE,4NACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,sGACAC,0FACAC,6EACAC,0FACAC,6EACAC,cAEAC,cACAC,yBACAC,6BACA1uY,6BACA2uY,uCACA/7E,mCACAppC,uCACA7vR,6BACAi1Y,uCACArkY,uBACAw9R,iCACAhpS,uBACA8vY,iCACAt1Y,uBACAu1Y,wCAEAr4E,MACAw4E,MACAC,SAIA,CAzDuC1zY,CAAW+mQ,EAAQ,OAyD1D;;;;CCtDC,YAA4B;kCAI7B;IAAA/mQ,GACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEAwE,cACA,aACA,EACA,MACA,EACA,MACA,EACA7G,oBACA,EACAA,UACA,EACA,GAEAsS,GACAzL,GACA,iEACA,gEACA,4FACA,8BACA,oCACA,qCAEA4yT,GACA,iEACA,gEACA,4FACA,oCACA,oCACA,qCAEAj5T,GACA,2DACA,0DACA,gFACA,oCACA,8BACA,+BAEA4Q,GACA,qDACA,8CACA,oEACA,8BACA,oCACA,yBAEAxL,GACA,qDACA,8CACA,oEACA,8BACA,8BACA,yBAEAxF,GACA,qDACA,8CACA,oEACA,oCACA,oCACA,0BAGAgC,cACA,yBACA,WACA5B,aACA,eACAA,YAEAA,qBAGA4Q,GACA,iCACA,uCACA,2BACA,iCACA,2BACA,iCACA,iCACA,iCACA,uCACA,uCACA,uCACA,wCAGAxQ,wBACA6oJ,SACAE,cACAK,2SACAE,4NACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,yBACAk6H,iBACAC,wBACAC,+BAEAR,8BACAC,iBACA,oBAEAC,yBACA,YACA,SAEA,UAGAl7E,UACAy7E,sGACAC,gGACAC,6EACAC,0FACAC,6EACAC,cAEAC,cACAC,+BACAC,6BACA1uY,SACA2uY,UACA/7E,SACAppC,UACA7vR,SACAi1Y,UACArkY,SACAw9R,UACAhpS,SACA8vY,UACAt1Y,SACAu1Y,WAEAO,qBACA,iCAEAD,uBACA,SACA95W,0BACA,cAEAA,wBAEAmhS,MACAw4E,MACAC,SAIA,CA7KuC1zY,CAAW+mQ,EAAQ,OA6K1D;;;;;CCzKC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,uXACA,KAEAE,YACA,gXACA,KAEAK,2SACAE,4NACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,sGACAC,0FACAC,6EACAC,0FACAC,6EACAC,cAEAC,cACAC,yBACAC,6BACA1uY,6BACA2uY,uCACA/7E,mCACAppC,uCACA7vR,6BACAi1Y,uCACArkY,uBACAw9R,iCACAhpS,uBACA8vY,iCACAt1Y,uBACAu1Y,wCAEAr4E,MACAw4E,MACAC,QAIA,CAzDuC1zY,CAAW+mQ,EAAQ,OAyD1D;;;;CCvDC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,wBACA6oJ,qZACA,KAEAE,YACA,8YACA,KAEAK,2SACAE,4NACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAR,8BACAC,iBACA,oBAEAC,yBACA,YACA,SAEA,UAGAl7E,UACAy7E,sGACAC,0FACAC,6EACAC,0FACAC,6EACAC,cAEAC,cACAC,yBACAC,6BACA1uY,6BACA2uY,uCACA/7E,mCACAppC,uCACA7vR,6BACAi1Y,uCACArkY,uBACAw9R,iCACAhpS,uBACA8vY,iCACAt1Y,uBACAu1Y,wCAEAO,qBACA,SACA/5W,sFACA,cAEAA,wBAEA85W,uBACA,SACA95W,0BACA,cAEAA,wBAEAmhS,MACAw4E,MACAC,QAIA,CA3GuC1zY,CAAW+mQ,EAAQ,OA2G1D;;;;CCxGC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,6XACA,KAEAE,YACA,sXACA,KAEAK,2SACAE,4NACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,sGACAC,0FACAC,6EACAC,0FACAC,6EACAC,cAEAC,cACAC,yBACAC,6BACA1uY,6BACA2uY,uCACA/7E,mCACAppC,uCACA7vR,6BACAi1Y,uCACArkY,uBACAw9R,iCACAhpS,uBACA8vY,iCACAt1Y,uBACAu1Y,wCAEAr4E,MACAw4E,MACAC,QAIA,CAzDuC1zY,CAAW+mQ,EAAQ,OAyD1D;;;;;;CCpDC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAEAyL,cACA,aACA,EACA,MACA,EACA,MACA,EACAnS,oBACA,EACAA,UACA,EACA,GAEAiC,GACAyE,GACA,iEACA,gEACA,4FACA,8BACA,oCACA,qCAEA4yT,GACA,iEACA,gEACA,4FACA,oCACA,oCACA,qCAEAj5T,GACA,2DACA,0DACA,gFACA,oCACA,8BACA,+BAEA4Q,GACA,qDACA,8CACA,oEACA,8BACA,oCACA,yBAEAxL,GACA,qDACA,8CACA,oEACA,8BACA,8BACA,yBAEAxF,GACA,qDACA,8CACA,oEACA,oCACA,oCACA,0BAGAgR,cACA,yBACA,WACA3Q,aACA,eACAA,YAEAA,qBAGAV,GACA,iCACA,uCACA,2BACA,iCACA,2BACA,iCACA,iCACA,iCACA,uCACA,uCACA,uCACA,wCAGAa,qBACA6oJ,SACAE,cACAK,2SACAE,4NACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,yBACAk6H,iBACAC,wBACAC,+BAEAR,8BACAC,iBACA,oBAEAC,yBACA,YACA,SAEA,UAGAl7E,UACAy7E,sGACAC,gGACAC,6EACAC,0FACAC,6EACAC,cAEAC,cACAC,+BACAC,6BACA1uY,SACA2uY,UACA/7E,SACAppC,UACA7vR,SACAi1Y,UACArkY,SACAw9R,UACAhpS,SACA8vY,UACAt1Y,SACAu1Y,WAEAO,qBACA,SACA/5W,sFACA,cAEAA,wBAEA85W,uBACA,SACA95W,0BACA,cAEAA,wBAEAmhS,MACAw4E,MACAC,SAIA,CA7LuC1zY,CAAW+mQ,EAAQ,OA6L1D;;;;CC5LC,YAA4B;kCAI7B;IAAA/mQ,GACA,UACA,UACA,UACA,WACA,WACA,SACA,SACA,UACA,UACA,gBACA,gBACA,kBACA,cACA,UACA,WACA,WACA,qBACA,sBAGAzB,qBACA6oJ,4FACA,KAEAE,yEACAK,SACA,iLACA,KAEAE,+EACAE,sEACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,6BACAC,0BACAC,4DACAC,6BACAC,0DACAC,cAEAC,cACAC,kBACAC,0BACA1uY,iCACA2uY,oBACA/7E,yBACAppC,yBACA7vR,aACAi1Y,aACArkY,eACAw9R,eACAhpS,WACA8vY,WACAt1Y,WACAu1Y,YAEArB,kEACAC,iBACA,6CAEAC,yBACA,WACA,YACcliY,KACd,kBACcA,KACd,eAEA,cAGAsjY,oFACAC,oBACA,SAEA,2BAEA,WACAzkY,UACArR,kBACA,6BAEAu9T,MACAw4E,MACAC,QAIA,CAxGuC1zY,CAAW+mQ,EAAQ,OAwG1D;;;;;;CCnGC,YAA4B;kCAI7B;SAAA/mQ,OACA,mBACA,0BACAtC,KACAqR,wCACArR,KACAA,KAEA,kBASA,cACAqR,4FACU,QACVA,4FAEAhP,QAbA,CACAozY,+PACAnlH,+PACAolH,+PACA7mG,gFACA8mG,oHACAC,iFAOA51Y,OAIAa,qBACA6oJ,QACA1iJ,ijBACA,KAEAovY,WACA,8hBACA,MAGAxsP,YACA,iSACAK,UACAjjJ,4TACA,KAEAovY,WACA,qTACA,KAEAC,uJAEAlsP,sHACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,yBACAC,iCACAC,yCAEAx7E,UACAy7E,qDACAC,2DACAE,qDACAD,oBACA,mCAEAE,oBACA,wBACA,OACA,OACA,OACA,EACA,kFACA,OACA,OACA,EACA,yEAGAC,cAEAC,cACAC,qCACAC,mCACA1uY,0FACA4yT,IACAppC,KACA7vR,IACAi1Y,KACArkY,mCACAw9R,KACAhpS,mCACA8vY,KACAt1Y,uBACAu1Y,MAEArB,sIACAC,iBACA,6EAEAC,yBACA,WACA,2BACcpyY,KACd,uCACcA,KACd,qBAEA,wCAGAwzY,8DACAC,sBACA,cACA,QACA,QACA,UACA,QACA,IACA,yBACAzzY,WACAA,UAEAA,YADAA,YACA,IACA,IACA,iCAEA,WAGAk7T,MACAw4E,MACAC,QAIA,CA9IuC1zY,CAAW+mQ,EAAQ,OA8I1D;;;;CC7IC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,+bACA,KAEAE,6PACAK,wTACA,KAEAE,gKACAE,oHACAqqP,gBACAC,UACAC,cACAj6H,cACAk6H,iBACAC,uBACAC,+BAEAx7E,UACAy7E,+CACAC,+CACAC,4BACAC,qDACAC,oBACA,wBACA,OACA,OACA,EACA,iFACA,OACA,OACA,OACA,EACA,wEAGAC,cAEAC,cACAC,qCACAC,yCACA1uY,0FACA2uY,mDACA/7E,yCACAppC,6CACA7vR,uBACAi1Y,iCACArkY,uBACAw9R,iCACA6gC,+CACA4mE,mDACAzwY,mCACA8vY,6CACAt1Y,yCACAu1Y,8CAEAC,iHACAC,oBACA,WACAzzY,QACA,aACAyE,kBACc,MACdA,kBACczE,WACdyE,kBACc,MACdA,kBACc,MACdA,kBACc,aACdA,kBAEAA,mBAGAy2T,MACAw4E,MACAC,QAIA,CAzFuC1zY,CAAW+mQ,EAAQ,OAyF1D;;;;CCtFC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,oLACA,KAEAE,uFACAK,6EACAE,4DACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,8BACAC,sDACAC,6DAEAx7E,UACAy7E,iCACAC,mCACAC,wCACAC,mCACAC,sDACAC,cAEAC,cACAC,2BACAC,4BACA1uY,oBACA2uY,gBACA/7E,iBACAppC,eACA7vR,yBACAi1Y,uBACArkY,eACAw9R,aACAhpS,eACA8vY,aACAt1Y,cACAu1Y,aAEAr4E,MACAw4E,MACAC,QAIA,CArDuC1zY,CAAW+mQ,EAAQ,OAqD1D;;;;CClDC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,wBACA6oJ,meACA,KAEAE,YACA,kVACA,KAEAK,0UACA,KAEAE,sNACAE,sLACAqqP,gBACAC,+BACAC,mCACAj6H,eACAk6H,iBACAC,6CACAC,qDAEAx7E,UACAy7E,4BACAC,gEACAC,oBACAC,8CACAC,mCACAC,cAEAC,cACAC,+BACAC,6BACA1uY,wEACA2uY,mDACA/7E,gDACAppC,uCACA7vR,gDACAi1Y,uCACArkY,oCACAw9R,2BACAhpS,oCACA8vY,2BACAt1Y,oCACAu1Y,4BAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAIA3B,2MACAgC,2BAIA,OAHA,SACAl0Y,KAEA,yBACAA,WACc,0BAEA,+BADdA,EAGc,qCACdA,YACc,sCAEA,iDADdA,UACc,CACd,EAIAoyY,yBACA,WACA,qBACcpyY,IACd,qBACcA,KACd,2BACcA,KACd,iCACcA,KACd,iCACcA,KACd,6CAEA,sBAGAk7T,MACAw4E,MACAC,QAIA,CAnIuC1zY,CAAW+mQ,EAAQ,OAmI1D;;;;CChIC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,meACA,KAEAE,YACA,kVACA,KAEAK,0UACA,KAEAE,sNACAE,sLACAqqP,gBACAC,+BACAC,mCACAj6H,eACAk6H,iBACAC,6CACAC,qDAEAx7E,UACAy7E,4BACAC,gEACAC,oBACAC,8CACAC,mCACAC,cAEAC,cACAC,+BACAC,6BACA1uY,wEACA2uY,mDACA/7E,gDACAppC,uCACA7vR,gDACAi1Y,uCACArkY,oCACAw9R,2BACAhpS,oCACA8vY,2BACAt1Y,oCACAu1Y,4BAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAGA3B,6IACAgC,2BAIA,OAHA,SACAl0Y,KAGA,gCACA,2CACA,qCAEAA,KAEAA,GAGAoyY,yBACA,WACA,qBACcpyY,KACd,2BACcA,KACd,iCACcA,KACd,iCAEA,sBAGAk7T,MACAw4E,MACAC,QAIA,CAzHuC1zY,CAAW+mQ,EAAQ,OAyH1D;;;;CCtHC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,q0BACA,KAEAE,YACA,2PACA,KAEA4sP,gDACAC,oBACAxsP,SACA,ybACA,KAEAE,+RACA,KAEAE,wJACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,0BACAC,kCAEAx7E,UACAy7E,oDACAC,oDACAC,4GACAC,wCACAC,2GACAC,cAEAC,cACAC,yBACAC,yCACA1uY,mCACA2uY,6CACA/7E,iEACAppC,uCACA7vR,uEACAi1Y,6CACArkY,qDACAw9R,iCACAhpS,2DACA8vY,iCACAt1Y,+CACAu1Y,sBAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAGA3B,2NACAgC,2BAIA,OAHA,SACAl0Y,KAGA,kDACA,uDACA,iDAEAA,KAEAA,GAGAoyY,yBACA,WACA,uCACcpyY,KACd,6CACcA,KACd,6CACcA,KACd,6CAEA,wCAGAk7T,MACAw4E,MACAC,QAIA,CA9HuC1zY,CAAW+mQ,EAAQ,OA8H1D;;;;CC3HC,YAA4B;kCAI7B;SAAA/mQ,SAMA,eALA,CACAguR,cACAqlH,SACA9mG,aAEAltS,MAEA,cACA,kBACA,OACA,OACA,OACA,OACA,EACA,0BAEA,mBAGA,cACA,WACA4Q,QAEA7R,EAEA,gBACA,aACA2Q,KAEA3Q,EAEA,cACA,OACAg5T,MACAj/C,MACAppQ,OAEA,+BACA3Q,EAEAgB,8BAGA,OACA,QACA,mBACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEAzB,EACA,uJACAG,EACA,6FACAC,EACA,gEACAC,GACA,QACA,QACA,WACA,sBACA,SACA,WACA,YAEAC,GACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEAC,GACA,OACA,OACA,eACA,QACA,OACA,OACA,QAGAK,qBACA6oJ,kGACA,KAEAE,+EACAK,sEACAE,uDACAE,+CACAqsP,gBACAC,oBACAC,qBACAC,mBAEAC,cACAN,mBACAO,oBACAC,yBACAC,cACAC,kBACAC,mBAEAzC,gBACAC,WACAC,eACAj6H,eACAk6H,yBACAC,gCACAC,wCAEAx7E,UACAy7E,wBACAC,kCACAC,wBACAC,6BACAC,8BACAC,cAEAC,cACAC,mBACAC,mBACA1uY,6BACA2uY,eACA/7E,gBACAppC,KACA7vR,WACAi1Y,YACArkY,cACAw9R,KACAhpS,WACA8vY,KACAt1Y,aACAu1Y,MAEAC,4CACAC,oBAEA,UADA,oBACA,EAEAv4E,MACAw4E,MACAC,OAEAzB,0BACAC,iBACA,kBAEAC,yBACA,4BAIA,CA1KuCnyY,CAAW+mQ,EAAQ,OA0K1D;;;;;CCtKC,YAA4B;kCAI7B;SAAA/mQ,SACA,YACA,cACA,KACA,OACAtC,GADA,MACA,UACkB,oBAClB,UAEA,UAEA,IACA,IACA,2CACA,KACA,OACAA,GADA,MACA,SACkB,oBAClB,SAEA,SAEA,IACA,IACA,uCACA,KACA,OACAA,GADA,MACA,MACkB,oBAClB,OAEA,OAEA,IACA,KACA,OACAA,GADA,MACA,MAEA,OAEA,IACA,KACA,OACAA,GADA,MACA,SACkB,oBAClB,UAEA,UAEA,IACA,KACA,OACAA,GADA,MACA,SACkB,oBAClB,SAEA,SAEA,CAIAa,qBACA6oJ,kGACA,KAEAE,YACA,oEACA,KAEA6sP,oBACAxsP,gFACA,KAEAE,mEACAE,mDACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,kBACAC,wBACAC,gCAEAx7E,UACAy7E,uBACAC,uBACAC,oBACA,wBACA,EACA,mCACA,EACA,kCACA,EACA,iCACA,OACA,OACA,OACA,EACA,0BAGAC,4BACAC,oBACA,wBACA,OACA,EACA,uCACA,EACA,2CACA,OACA,OACA,OACA,EACA,oCAGAC,cAEAC,cACAC,eACAC,gBACA1uY,gBACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,QACAw9R,KACAhpS,WACA8vY,KACAt1Y,WACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAvJuC1zY,CAAW+mQ,EAAQ,OAuJ1D;;;;CCrJC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,QACA0sP,WACA,6FACA,KAEApvY,qIACA,KAEAqvY,4BAEAzsP,YACA,uEACA,KAEA6sP,oBACAxsP,SACA,oEACA,KAEAE,uDACAE,8CACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,sBACAuC,gBACAtC,oCACAuC,uBACAtC,0CACAuC,6BAEA/9E,UACAy7E,mBACA,uDAEAC,mBACA,0DAEAC,oBACA,uDAEAC,mBACA,uDAEAC,oBACA,MACA,wBACA,6BACA,QAGAC,cAEAC,cACAC,sBACAC,aACA1uY,eACA2uY,eACA/7E,aACAppC,eACA7vR,aACAi1Y,cACArkY,WACAw9R,aACAhpS,WACA8vY,cACAt1Y,WACAu1Y,cAEAC,+CACAC,sBACA,MACA,MACA,IACA,MACA,IACA,MACA,IACA,MACA,IACA,OACA,2BACAzzY,OAEAyE,KAEAy2T,MACAw4E,MACAC,QAIA,CAtGuC1zY,CAAW+mQ,EAAQ,OAsG1D;;;;CCnGC,YAA4B;kCAI7B;IAAA/mQ,GACA0E,2IACA,KAEAovY,WACA,sIACA,MAGAtvY,sGACAyL,GACA,QACA,WACA,aACA,QACA,aACA,wCACA,2CACA,QACA,gBACA,gBACA,QACA,SAIAlQ,EACA,mPAEA,cACA,6BAEA,oBACA,YACA,cACA,IACA,mDACA,KACA,YACA7B,4BAEAA,kBAEA,IACA,2CACA,KACA,YACAA,0BAEAA,iBAEA,IACA,2CACA,KACA,YACAA,0BAEAA,iBAEA,IACA,6BACA,KACA,YACAA,wBAEAA,YAEA,IACA,kDACA,KACA,YACAA,gDAEAA,uBAEA,IACA,8BACA,KACA,YACAA,sBAEAA,UAKAK,qBACA6oJ,SACAE,cACAktP,cACAN,mBAGAO,kBACA,gPACAC,uBACA,6FACAC,cACAC,kBACAC,mBACAltP,uGACAE,2DACAE,yDACAqqP,gBACAC,UACAC,cACAj6H,eACAk6H,kBACAC,wBACAC,8BACA/0Y,gBAEAu5T,UACAy7E,sBACAC,0BACAC,oBACA,wBACA,EACA,kCACA,OACA,EACA,6BACA,EACA,mCACA,EACA,oCACA,EACA,+BACA,EACA,0BAGAC,4BACAC,oBACA,wBACA,EACA,wCACA,OACA,EACA,qCACA,EACA,wCACA,OACA,EACA,qCACA,EACA,gCAGAC,cAEAC,cACAC,eACAC,oBACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAtLuC1zY,CAAW+mQ,EAAQ,OAsL1D;;;;CCnLC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,uUACA,KAEAE,6PACAK,SACA,iXACA,KAEAE,0JACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,oHACAC,4HACAC,oIAEAx7E,UACAy7E,qFACAC,qFACAE,qFACAD,iGACAE,iGACAC,cAEAC,cACAC,mBAMA,UALA,2CACA,qBACA,+BACA,qBACA,qBACA,EAEAC,+CACA1uY,+EACA2uY,mDACA/7E,sDACAppC,uCACA7vR,sDACAi1Y,uCACArkY,0CACAw9R,2BACAhpS,gDACA8vY,iCACAt1Y,0CACAu1Y,4BAEAC,oDACAC,gCACAv4E,MACAw4E,MACAC,QAIA,CAjEuC1zY,CAAW+mQ,EAAQ,OAiE1D;;;;;CC7DC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,sGACA,KAEAE,uEACA,KAEAK,SACA,qFACA,KAEAE,wDACAE,8CACA4rP,sBAEAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACA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,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,yBACAC,iCAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAtEuC1zY,CAAW+mQ,EAAQ,OAsE1D;;;;CCnEC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,kBACAC,0BACAC,kCAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,GAIA,CAlEuCxzY,CAAW+mQ,EAAQ,OAkE1D;;;;CC/DC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAtEuC1zY,CAAW+mQ,EAAQ,OAsE1D;;;;CCnEC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAtEuC1zY,CAAW+mQ,EAAQ,OAsE1D;;;;CCnEC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,GAIA,CAlEuCxzY,CAAW+mQ,EAAQ,OAkE1D;;;;CC/DC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,yBACAC,iCAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAtEuC1zY,CAAW+mQ,EAAQ,OAsE1D;;;;CCnEC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,yBACAC,iCAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAtEuC1zY,CAAW+mQ,EAAQ,OAsE1D;;;;CCnEC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,qGACA,KAEAE,yEACAK,0EACA,KAEAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAEAC,cACAC,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACAhpS,YACA8vY,eACAt1Y,WACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAtEuC1zY,CAAW+mQ,EAAQ,OAsE1D;;;;;;;CChEC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,+GACA,KAEAE,gFACAK,wFACAE,mEACAE,mDACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,+BACAC,sCACAC,gDACAuC,4CAEA/C,4BACAC,iBACA,uCAEAC,yBACA,YACApyY,oBAEAA,qBAGAk3T,UACAy7E,8BACAC,8BACAC,yBACAC,8BACAC,oCACAC,cAEAC,cACAC,iBACAC,qBACA1uY,oBACA2uY,iBACA/7E,eACAppC,gBACA7vR,aACAi1Y,cACArkY,aACAw9R,cACAhpS,eACA8vY,gBACAt1Y,aACAu1Y,eAEAC,kCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAnEuC1zY,CAAW+mQ,EAAQ,OAmE1D;;;CCpEC,YAA4B;kCAI7B;IAAA/mQ,EACA,oEACA,KAEAwE,+DACAyL,GACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEAlQ,EACA,mLAEAxB,wBACA6oJ,wGACA,KAEAE,0BACA,SAEc,gBACd9iJ,aAEAxE,aAJAA,GAOAw0Y,cACAN,mBACAO,kBACA,+FACAC,uBACA,0FACAC,cACAC,kBACAC,mBACAltP,iFACAE,oEACAE,iDACA4rP,sBACAvB,gBACAC,YACAC,gBACAj6H,eACAk6H,2BACAC,mCACAC,2CAEAx7E,UACAy7E,mBACA,oDAEAC,mBACA,0DAEAC,oBACA,qDAEAC,mBACA,qDAEAC,oBACA,MACA,0BACA,yBACA,QAGAC,cAEAC,cACAC,eACAC,eACA1uY,kBACA2uY,iBACA/7E,cACAppC,gBACA7vR,aACAi1Y,cACArkY,cACAw9R,gBACA6gC,eACA4mE,gBACAzwY,WACA8vY,cACAt1Y,cACAu1Y,iBAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,QAIA,CA/GuC1zY,CAAW+mQ,EAAQ,OA+G1D;;;;CC3GC,YAA4B;kCAI7B;IAAA/mQ,EACA,oEACA,KAEAwE,+DACAyL,GACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEAlQ,EACA,mLAEAxB,wBACA6oJ,wGACA,KAEAE,0BACA,SAEc,gBACd9iJ,aAEAxE,aAJAA,GAOAw0Y,cACAN,mBACAO,kBACA,+FACAC,uBACA,0FACAC,cACAC,kBACAC,mBACAltP,iFACAE,oEACAE,iDACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,2BACAC,iCACAC,yCAEAx7E,UACAy7E,mBACA,oDAEAC,mBACA,0DAEAC,oBACA,qDAEAC,mBACA,qDAEAC,oBACA,MACA,0BACA,yBACA,QAGAC,cAEAC,cACAC,eACAC,eACA1uY,kBACA2uY,iBACA/7E,cACAppC,gBACA7vR,aACAi1Y,cACArkY,cACAw9R,gBACA6gC,eACA4mE,gBACAzwY,WACA8vY,cACAt1Y,cACAu1Y,iBAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,OAEAnpP,iCAGA,CAhHuCvqJ,CAAW+mQ,EAAQ,OAgH1D;;;;;CC5GC,YAA4B;kCAI7B;IAAA/mQ,EACA,oEACA,KAEAwE,+DACAyL,GACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEAlQ,EACA,mLAEAxB,wBACA6oJ,wGACA,KAEAE,0BACA,SAEc,gBACd9iJ,aAEAxE,aAJAA,GAOAw0Y,cACAN,mBACAO,kBACA,+FACAC,uBACA,0FACAC,cACAC,kBACAC,mBACAltP,iFACAE,oEACAE,iDACA4rP,sBACAvB,gBACAC,YACAC,gBACAj6H,eACAk6H,2BACAC,mCACAC,2CAEAx7E,UACAy7E,mBACA,oDAEAC,mBACA,0DAEAC,oBACA,qDAEAC,mBACA,qDAEAC,oBACA,MACA,0BACA,yBACA,QAGAC,cAEAC,cACAC,eACAC,eACA1uY,kBACA2uY,iBACA/7E,cACAppC,gBACA7vR,aACAi1Y,cACArkY,cACAw9R,gBACA6gC,eACA4mE,gBACAzwY,WACA8vY,cACAt1Y,cACAu1Y,iBAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,QAIA,CA/GuC1zY,CAAW+mQ,EAAQ,OA+G1D;;;;CC7GC,YAA4B;kCAI7B;IAAA/mQ,EACA,oEACA,KAEAwE,+DACAyL,GACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEAlQ,EACA,mLAEAxB,qBACA6oJ,wGACA,KAEAE,0BACA,SAEc,gBACd9iJ,aAEAxE,aAJAA,GAOAw0Y,cACAN,mBACAO,kBACA,+FACAC,uBACA,0FACAC,cACAC,kBACAC,mBACAltP,iFACAE,oEACAE,iDACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,2BACAC,iCACAC,yCAEAx7E,UACAy7E,mBACA,oDAEAC,mBACA,0DAEAC,oBACA,qDAEAC,mBACA,qDAEAC,oBACA,MACA,0BACA,yBACA,QAGAC,cAEAC,cACAC,eACAC,eACA1uY,kBACA2uY,iBACA/7E,cACAppC,gBACA7vR,aACAi1Y,cACArkY,cACAw9R,gBACA6gC,eACA4mE,gBACAzwY,WACA8vY,cACAt1Y,cACAu1Y,iBAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,OAEAnpP,iCAGA,CAhHuCvqJ,CAAW+mQ,EAAQ,OAgH1D;;;;;CC5GC,YAA4B;kCAI7B;SAAA/mQ,WACA,OACAwE,uDACA2uY,8BACA/7E,mCACAppC,8BACA7vR,6CACAi1Y,2BACArkY,uCACAxL,sCACA8vY,wBACAt1Y,0CACAu1Y,6BAEA,SACA31Y,wBAEAD,kBAGAa,qBACA6oJ,6GACA,KAEAE,YACA,2EACAK,SACA,4FACA,KAEAE,yCACAE,uCACAqqP,gBACAC,UACAC,cACAj6H,eACAk6H,kBACAC,wBACAC,gCAEAx7E,UACAy7E,wBACAC,sBACAC,iCACAC,qBACAC,6BACAC,cAEAC,cACAC,sBACAC,iBACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,iBACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA/EuC1zY,CAAW+mQ,EAAQ,OA+E1D;;;;CC7EC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,4GACA,KAEAE,YACA,oEACA,KAEA6sP,oBACAxsP,SACA,4EACA,KAEAE,uDACAE,8CACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,6BACAC,oCACAC,2CACA/0Y,aACAo3Y,uBACAC,8BACAC,qCAEA/9E,UACAy7E,0BACAC,2BACAC,yBACAC,0BACAC,mCACAC,cAEAC,cACAC,kBACAC,gBACA1uY,mBACA2uY,gBACA/7E,eACAppC,eACA7vR,aACAi1Y,aACArkY,aACAw9R,aACAhpS,iBACA8vY,iBACAt1Y,aACAu1Y,cAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAnEuC1zY,CAAW+mQ,EAAQ,OAmE1D;;;;CChEC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,uXACA,KAEAE,YACA,gXACA,KAEAK,SACA,uRACA,KAEAE,cACA,uRACA,KAEAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAR,sHACAC,iBACA,oEAEAC,yBACA,YACA,qDAEA,sDAGAl7E,UACAy7E,uEACAC,iEACAC,8CACAC,uEACAC,mEACAC,cAEAC,cACAC,yBACAC,6BACA1uY,sDACA2uY,uCACA/7E,gDACAppC,uCACA7vR,0CACAi1Y,iCACArkY,oCACAw9R,2BACAhpS,oCACA8vY,2BACAt1Y,oCACAu1Y,4BAEAO,qBACA,SACA/5W,uCACA,cAEAA,wBAEA85W,uBACA,SACA95W,0BACA,cAEAA,wBAEAy5W,uCACAC,mBACAv4E,MACAw4E,MACAC,SAIA,CAnHuC1zY,CAAW+mQ,EAAQ,OAmH1D;;;;CChHC,YAA4B;kCAI7B;IAAA/mQ,EACA,uFACA,KAEAwE,GACA,QACA,QACA,SACA,SACA,YACA,SACA,SACAxE,KACAA,KACAA,MAEA,oBACA,SACA,cACA,IACA,mDACA,KACAhC,0BACA,UACA,IACA,mCACA,KACAA,2BACA,UACA,IACA,8BACA,KACAA,sBACA,UACA,IACA,0CACA,KACAA,qCACA,UACA,IACA,oCACA,KACAA,4BACA,UACA,IACA,8BACA,KACAA,sBAGA,qBACA,CAEA,gBACA,YACAL,EACA6G,KACAxE,KACAtC,EAGAa,qBACA6oJ,8HACA,KAEAE,YACA,mFACA,KAEAK,SACA,2EACA,KAEAE,gDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,sBACAC,oCACAC,2CACA/0Y,aACAo3Y,iBACAC,+BACAC,sCAEA/9E,UACAy7E,qCACAC,8BACAC,yBACAC,2BACAC,qCACAC,cAEAC,cACAC,4BACAC,iBACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA9HuC1zY,CAAW+mQ,EAAQ,OA8H1D;;;;;CC1HC,YAA4B;kCAI7BxoQ;EAAAyzY,oBACA5qP,uGACA,KAEAE,yEACAK,wEACA,KAEAE,uDACAE,+CACAqqP,gBACAC,WACAC,eACAj6H,cACAk6H,kBACAC,yBACAC,kCAEAx7E,UACAy7E,4BACAC,wBACAC,mCACAC,uBACAC,qCACAC,cAEAC,cACAC,uBACAC,wBACA1uY,kBACA2uY,gBACA/7E,iBACAppC,eACA7vR,eACAi1Y,aACArkY,eACAw9R,aACAhpS,gBACA8vY,cACAt1Y,eACAu1Y,cAEAC,iCACAC,oBACA,UAEAv4E,MACAw4E,MACAC,QAIA,CA3DuC1zY,CAAW+mQ,EAAQ,OA2D1D;;;;;CCxDC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,qGACA,KAEAE,yEACAK,SACA,8FACA,KAEAE,mEACAE,uDACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,iCAEAx7E,UACAy7E,4BACAC,+BACAC,yBACAC,gCACAC,uCACAC,cAEAC,cACAC,eACAC,uBACA1uY,iBACA2uY,iBACA/7E,iBACAppC,iBACA7vR,gBACAi1Y,iBACArkY,cACAw9R,cACAhpS,sBACA8vY,sBACAt1Y,eACAu1Y,eAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA1DuC1zY,CAAW+mQ,EAAQ,OA0D1D;;;;CCxDC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,6GACA,KAEAE,YACA,gFACA,KAEA6sP,oBACAxsP,0EACAE,8DACAE,8CACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,qCACAC,2BACAC,0BACAC,yBACAC,kCACAC,cAEAC,cACAC,iBACAC,iBACA1uY,sBACA2uY,iBACA/7E,eACAppC,gBACA7vR,cACAi1Y,eACArkY,YACAw9R,cACAhpS,YACA8vY,aACAt1Y,UACAu1Y,aAEAC,uCACAC,sBACA,sBAGA,QACA,QACA,QACA,UACA,IACA,8BAGA,QACA,IACA,6BAKA,CAxEuCxzY,CAAW+mQ,EAAQ,OAwE1D;;;;CCrEC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,6GACA,KAEAE,YACA,gFACA,KAEA6sP,oBACAxsP,0EACAE,8DACAE,8CACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,qCACAC,2BACAC,0BACAC,yBACAC,kCACAC,cAEAC,cACAC,iBACAC,iBACA1uY,sBACA2uY,iBACA/7E,eACAppC,gBACA7vR,cACAi1Y,eACArkY,YACAw9R,cACAhpS,YACA8vY,aACAt1Y,UACAu1Y,aAEAC,uCACAC,sBACA,sBAGA,QACA,QACA,QACA,UACA,IACA,8BAGA,QACA,IACA,4BAGAv4E,MACAw4E,MACAC,QAIA,CA5EuC1zY,CAAW+mQ,EAAQ,OA4E1D;;;;CCzEC,YAA4B;kCAI7B;IAAA/mQ,EACA,oGACAwE,EACA,6FACAyL,EACA,2LACAlQ,GACA,SACA,YACA,SACA,QACA,QACA,SACA,SACA,YACA,SACA,QACA,QACA,YAGAxB,qBACA6oJ,6GACA,KAEAE,YACA,gFACA,KAEAktP,cACAN,mBACAO,oBACAC,yBACAC,cACAC,kBACAC,mBACAltP,0EACAE,8DACAE,8CACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,qCACAC,2BACAC,0BACAC,yBACAC,kCACAC,cAEAC,cACAC,iBACAC,iBACA1uY,sBACA2uY,iBACA/7E,eACAppC,gBACA7vR,cACAi1Y,eACArkY,YACAw9R,cACA6gC,gBACA4mE,iBACAzwY,YACA8vY,aACAt1Y,UACAu1Y,aAEAC,sCACAC,sBACA,cAIA,IACA,qCAIA,QACA,QACA,UACA,IACA,8BAGA,QACA,IACA,4BAGAv4E,MACAw4E,MACAC,QAIA,CA9GuC1zY,CAAW+mQ,EAAQ,OA8G1D;;;;CC3GC,YAA4B;kCAI7B;IAAA/mQ,EACA,wEACAwE,EACA,6DAEAjG,qBACA6oJ,8GACA,KAEAE,0BACA,SAEc,gBACd9iJ,aAEAxE,aAJAA,GAOAm0Y,oBACAxsP,uEACA,KAEAE,uDACAE,8CACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,wBACAC,wBACAC,wBACAC,yBACAC,uCACAC,cAEAC,cACAC,gBACAC,cACA1uY,qBACA2uY,iBACA/7E,iBACAppC,gBACA7vR,aACAi1Y,cACArkY,YACAw9R,cACAhpS,eACA8vY,gBACAt1Y,aACAu1Y,iBAEAC,yCACAC,oBACA,OACAzzY,GACA,iCAGAk7T,MACAw4E,MACAC,QAIA,CA7EuC1zY,CAAW+mQ,EAAQ,OA6E1D;;;;CC1EC,YAA4B;kCAI7B;IAAA/mQ,GACA,YACA,UACA,WACA,aACA,YACA,YACA,UACA,YACA,qBACA,sBACA,UACA,WAEAwE,GACA,MACA,QACA,UACA,MACA,OACA,QACA,UACA,SACA,OACA,OACA,OACA,QAEAyL,GACA,kBACA,cACA,iBACA,oBACA,eACA,eACA,kBAEAlQ,gEACAgP,+CAEAxQ,qBACA6oJ,SACAE,cACA6sP,oBACAxsP,WACAE,gBACAE,cACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,wBACAC,6BACAC,wBACAC,0BACAC,oCACAC,cAEAC,cACAC,cACAC,oBACA1uY,qBACA2uY,gBACA/7E,kBACAppC,sBACA7vR,mBACAi1Y,uBACArkY,UACAw9R,cACAhpS,UACA8vY,kBACAt1Y,WACAu1Y,gBAEAC,0CACAC,oBAEA,UADA,4BACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAjGuC1zY,CAAW+mQ,EAAQ,OAiG1D;;;;CC9FC,YAA4B;kCAI7B;IAAA/mQ,GACA,gBACA,aACA,aACA,aACA,gBACA,kBACA,cACA,iBACA,eACA,gBACA,eACA,mBAEAwE,GACA,OACA,OACA,UACA,OACA,UACA,UACA,OACA,SACA,OACA,UACA,OACA,WAEAyL,GACA,iBACA,UACA,aACA,YACA,YACA,WACA,eAEAlQ,8CACAgP,6CAEAxQ,qBACA6oJ,SACAE,cACA6sP,oBACAxsP,WACAE,gBACAE,cACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,4BACAC,iCACAC,yBACAC,4BACAC,sCACAC,cAEAC,cACAC,mBACAC,qBACA1uY,kBACA2uY,eACA/7E,YACAppC,mBACA7vR,SACAi1Y,gBACArkY,UACAw9R,cACAhpS,YACA8vY,kBACAt1Y,aACAu1Y,kBAEAC,0CACAC,oBAEA,UADA,4BACA,EAEAv4E,MACAw4E,MACAC,QAIA,CAjGuC1zY,CAAW+mQ,EAAQ,OAiG1D;;;;CC9FC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,yGACA,KAEAE,YACA,uEACA,KAEA6sP,oBACAxsP,6EACAE,oEACAE,oDACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,2BACAC,iCACAC,yCAEAx7E,UACAy7E,mBACA,yDAEAC,mBACA,+DAEAC,oBACA,sDAEAC,mBACA,qDAEAC,oBACA,MACA,2DAGAC,cAEAC,cACAC,mBACA,2BACA,MAEA,SAEAC,cACA1uY,iBACA2uY,iBACA/7E,cACAppC,gBACA7vR,cACAi1Y,cACArkY,cACAw9R,gBACAhpS,WACA8vY,cACAt1Y,WACAu1Y,cAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,QAIA,CA7EuC1zY,CAAW+mQ,EAAQ,OA6E1D;;;;CC1EC,YAA4B;kCAI7B;SAAA/mQ,WACA,OACAwE,sJACA2uY,qGACA/7E,4GACAppC,qGACA7vR,8EACAi1Y,6EACArkY,0FACAw9R,6EACAhpS,oIACA8vY,iHACAt1Y,sGACAu1Y,sGAEA,yBAGA/0Y,2BACA6oJ,QACA0sP,WACA,gdACA,KAEApvY,yzBACA,KAEAqvY,4BAEAzsP,YACA,2VACA,KAEA6sP,oBACAxsP,qSACAE,iNACAE,0HACA4rP,sBACAvB,gBACAC,mDACAC,uDACAj6H,eACAk6H,iBACAC,gEACAC,0EACAuC,uEAEA/9E,UACAy7E,kCACAC,0DACAC,uDACAC,kCACAC,uDACAC,cAEAC,cACAC,YACAC,mCACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,qDACAC,sBACA,MAEA,MAFAzzY,EAGAkQ,uBAQAA,GAGAgrT,MACAw4E,MACAC,OAEAzB,wJACAgC,2BAIA,OAHA,SACAhkY,KAEA,+BACAA,WACc,2CACdA,EACc,iDACdA,YACc,qCACdA,UADc,CACd,EAGAkiY,yBACA,WACA,2BACcliY,KACd,uCACcA,KACd,6CACcA,KACd,iCAEA,6BAKA,CAhIuCjQ,CAAW+mQ,EAAQ,OAgI1D;;;;CC7HC,YAA4B;kCAI7B;SAAA/mQ,WACA,OACAwE,yCACA2uY,iCACA/7E,4BACAppC,+BACA7vR,yBACAi1Y,6BACArkY,yBACAw9R,2BACAhpS,+BACA8vY,iCACAt1Y,4BACAu1Y,gCAEA,yBAGA/0Y,2BACA6oJ,QACA0sP,WACA,kFACA,KAEApvY,qJACA,KAEAqvY,4BAEAzsP,YACA,uEACA6sP,oBACAxsP,2EACAE,8DACAE,8CACA4rP,sBACAvB,gBACAC,oBACAC,wBACAj6H,eACAk6H,iBACAC,iCACAC,2CACAuC,wCAEA/9E,UACAy7E,mBACAC,sBACAC,+BACAC,mBACAC,+BACAC,cAEAC,cACAC,YACAC,eACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,qCACAC,sBACA,MAEA,MAFAzzY,EAGAkQ,OAQAA,GAGAgrT,MACAw4E,MACAC,OAEAzB,6CACAgC,2BAIA,OAHA,SACAhkY,KAEA,WACAA,WACc,eACdA,EACc,eACdA,YACc,YACdA,UADc,CACd,EAGAkiY,yBACA,WACA,OACcliY,KACd,WACcA,KACd,WACcA,KACd,QAEA,SAKA,CA9HuCjQ,CAAW+mQ,EAAQ,OA8H1D;;;;CC3HC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,6dACA,KAEAE,YACA,yUACA,KAEA6sP,oBACAxsP,kTACA,KAEAE,8LACAE,wGACAqqP,gBACAC,iDACAC,qDACAj6H,eACAk6H,iBACAC,+DACAC,uEAEAx7E,UACAy7E,4BACAC,wCACAC,oBACAC,oDACAC,qDACAC,cAEAC,cACAC,yBACAC,yCACA1uY,gDACA2uY,uCACA/7E,gDACAppC,uCACA7vR,0CACAi1Y,iCACArkY,0CACAw9R,iCACAhpS,gDACA8vY,uCACAt1Y,0CACAu1Y,kCAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAKA3B,8GACAgC,2BAIA,OAHA,SACAl0Y,KAEA,yBACAA,WACc,+BACdA,EACc,+BACdA,aACc,+BACdA,UADc,CACd,EAGAoyY,yBACA,WACA,qBACcpyY,KACd,2BACcA,KACd,2BACcA,KACd,2BAEA,sBAGAk7T,MACAw4E,MACAC,QAIA,CA5HuC1zY,CAAW+mQ,EAAQ,OA4H1D;;;;;;CCvHC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,mYACA,KAEAE,YACA,6SACAK,iNACAE,sHACAE,0EACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,yBACAC,gCACAC,uCACA/0Y,aACAo3Y,gBACAC,uBACAC,8BAEA/9E,UACAy7E,oDACAC,8CACAC,8CACAC,0DACAC,8GACAC,cAEAC,cACAC,qCACAC,mCACA1uY,4DACA2uY,uCACA/7E,uBACAppC,iCACA7vR,uBACAi1Y,eACA,aACA,uCAEA5uY,+BAEAuK,uBACAw9R,eACA,aACA,uCAEA/nS,+BAEAjB,6BACA8vY,eACA,aACA,6CAEA7uY,2CAEAzG,uBACAu1Y,eACA,aACA,uCACkB9uY,gBAClBA,wBAEAA,gCAGAytY,cACA,qTACAC,iBACA,4IAEAC,yBACA,WACA,0DACc3tY,KACd,iCACcA,KACdzE,0GACcyE,KACdzE,oGAEA,6BAKA,CA9FuCC,CAAW+mQ,EAAQ,OA8F1D;;;;CC7FC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAEAyL,GACA,iBACA,oCACA,mCACA,mCACA,iBACA,uBACA,uBACA,iBACA,gDACA,mCACA,oCACA,iDAEAlQ,GACA,iBACA,uBACA,mCACA,mCACA,iBACA,uBACA,uBACA,iBACA,uBACA,mCACA,iBACA,wBAGAxB,qBACA6oJ,QACA1iJ,2ZACA,KAEAovY,WACA,4XACA,MAGAxsP,YACA,sQACAK,iTACAE,wLACAE,wGACAqqP,gBACAC,+BACAC,mCACAj6H,eACAk6H,iBACAC,6CACAC,qDAGAkC,cACAC,kBACAC,mBAEAL,YACA,yuBAEAN,iBACA,yuBAEAO,kBACA,6lBAEAC,uBACA,oRAEAz9E,UACAy7E,4BACAC,4BACAC,oBACAC,4BACAC,qDACAC,cAEAC,cACAC,+BACAC,mCACA1uY,6DACA2uY,uCACA/7E,0CACAppC,iCACA7vR,0CACAi1Y,iCACArkY,oCACAw9R,2BACAhpS,gDACA8vY,uCACAt1Y,0CACAu1Y,kCAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAKA3B,8GACAgC,2BAIA,OAHA,SACAv2Y,KAEA,yBACAA,WACc,+BACdA,EACc,qCACdA,aACc,yBACdA,UADc,CACd,EAGAy0Y,yBACA,WACA,qBACcz0Y,KACd,2BACcA,KACd,iCACcA,KACd,qBAEA,sBAGAu9T,MACAw4E,MACAC,QAIA,CA1KuC1zY,CAAW+mQ,EAAQ,OA0K1D;;;;CCvKC,YAA4B;kCAI7B;SAAA/mQ,SACA,YACA,cACA,KACA,OACAtC,GADA,MACA,UACkB,oBAClB,UAEA,UAEA,IACA,IACA,2CACA,KACA,OACAA,GADA,MACA,SACkB,oBAClB,SAEA,SAEA,IACA,IACA,uCACA,KACA,OACAA,GADA,MACA,MACkB,oBAClB,OAEA,OAEA,IACA,KACA,OACAA,GADA,MACA,MAEA,OAEA,IACA,KACA,OACAA,GADA,MACA,SACkB,oBAClB,UAEA,UAEA,IACA,KACA,OACAA,GADA,MACA,SACkB,oBAClB,SAEA,SAEA,CAIAa,qBACA6oJ,QACA1iJ,gIACA,KAEAovY,WACA,qHACA,MAGAxsP,YACA,0EACA,KAEA6sP,oBACAxsP,gFACA,KAEAE,mEACAE,mDACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,kBACAC,wBACAC,gCAEAx7E,UACAy7E,uBACAC,uBACAC,oBACA,wBACA,EACA,mCACA,EACA,kCACA,EACA,iCACA,OACA,OACA,OACA,EACA,0BAGAC,4BACAC,oBACA,wBACA,EACA,6CACA,EACA,4CACA,EACA,2CACA,OACA,OACA,OACA,EACA,oCAGAC,cAEAC,cACAC,eACAC,gBACA1uY,gBACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,QACAw9R,KACAhpS,WACA8vY,KACAt1Y,WACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA9JuC1zY,CAAW+mQ,EAAQ,OA8J1D;;;;;CC1JC,YAA4B;kCAI7B;IAAA/mQ,EACA,wGACA,oBACA,QACA,cACA,IACA,YACA,4BACA,iCACA,KACA,gBACA,gBACA,qBACA,IACA,wCACA,KACA,qCACA,IACA,gDACA,KACA,6CACA,IACA,uCACA,KACA,oCACA,IACA,iDACA,KACA,8CACA,IACA,0CACA,KACA,mCAEA,SAEA,cACA,OACA+O,mBACA,IACA/O,cACA,aAIAzB,qBACA6oJ,yIACA,KAEAE,YACA,sFACA,KAEA6sP,oBACAxsP,iGACAE,kEACAE,4CACAqqP,gBACAC,UACAC,cACAj6H,gBACAk6H,mBACAC,yBACAC,iCAEAR,uBACAC,iBACA,uCAEAC,yBACA,aACA,iBAEA,iBAGAl7E,UACAy7E,wBACAC,4BACAC,oBACA,wBAEAC,4BACAC,oBACA,wBAEAC,cAEAC,cACAC,qBACAC,UACA1uY,EACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAvHuC1zY,CAAW+mQ,EAAQ,OAuH1D;;;;CCrHC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,QACA1iJ,+kBACA,KAEAovY,WACA,ggBACA,MAGAxsP,6PACAK,SACA,yVACA,KAEAE,sKACAE,oKACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,yBACAC,iCACAC,yCAEAx7E,UACAy7E,8CACAC,wCACAE,wCACAD,oBACA,+DAEAE,oBACA,gGAEAC,cAEAC,cACAC,qCACAC,mCACA1uY,2FACA2uY,yDACA/7E,6BACAppC,iCACA7vR,uBACAi1Y,2BACArkY,iBACAw9R,qBACAhpS,6BACA8vY,iCACAt1Y,6BACAu1Y,kCAEArB,wMACAC,iBACA,iHAEAC,qBACA,WACA,6CACc3tY,KACd,mDACcA,KACd,6CAEA,oDAGA+uY,qEACAC,sBACA,cACA,UACA,QACA,QACA,OACA,aACAhvY,kBAEAA,0BAEA,WAGAy2T,MACAw4E,MACAC,QAIA,CAhGuC1zY,CAAW+mQ,EAAQ,OAgG1D;;;;;CC5FC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,sGACA,KAEAE,yEACAK,iEACAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,gCACAC,wCAEAR,sCACAgC,2BAIA,OAHA,SACAzvY,KAEA,WACAA,EACc,YACdA,aACc,wBACdA,UADc,CACd,EAGA2tY,yBACA,YACA,OACc3tY,KACd,QACcA,KACd,OAEA,SAGAyyT,UACAy7E,8BACAC,2BACAC,2BACAC,6BACAC,gCACAC,cAEAC,cACAC,kBACAC,oBACA1uY,mBACA2uY,cACA/7E,YACAppC,cACA7vR,UACAi1Y,YACArkY,WACAw9R,aACAhpS,YACA8vY,cACAt1Y,YACAu1Y,eAEAr4E,MACAw4E,MACAC,QAIA,CA7EuC1zY,CAAW+mQ,EAAQ,OA6E1D;;;;CC3EC,YAA4B;kCAI7B;SAAA/mQ,KACA,kBAEUD,QAKV,oBACA,YACA,cACA,IACA,YACA,sBACA,0BACA,KACA,YAEAjC,GACAiR,kCAGAjR,mBACA,IACA,2CACA,KACA,YAEAA,yCAEkBiR,EAClBjR,iBAEAA,qBACA,KACA,YAEAA,GACAiR,KACA,gBACA,iBAGAjR,oBACA,IACA,SACA,QAEAH,mBACA,KACA,YACAoR,EACAjR,UAEAA,wBACkBiR,EAClBjR,UAEAA,uBACA,IACA,SACA,gBAEAH,mCACA,KACA,YACAoR,EACAjR,kBAEAA,qCACkBiR,EAClBjR,kBAEAA,uCACA,IACA,iCACA,KACA,YACAA,2BAEAA,2BAIAS,qBACA6oJ,qIACA,KAEAE,2FACAK,SACA,wGACA,KAEAE,mEACAE,uDACAqqP,gBACAC,UACAC,cACAj6H,eACAk6H,kBACAC,8BACAC,sCAEAx7E,UACAy7E,4BACAC,+BACAC,yBACAC,+BACAC,yCACAC,cAEAC,cACAC,kBACAC,4BACA1uY,EACA2uY,KACA/7E,IACAppC,KACA7vR,gBACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA9IuC1zY,CAAW+mQ,EAAQ,OA8I1D;;;;CC3IC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,6GACA,KAEAE,yEACAK,yFACA,KAEAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,yBACAC,2BACAC,0BACAC,yBACAC,oBACA,OACA,IADAl1Y,WAEA,6BAEA,8BAGAm1Y,cAEAC,cACAC,mBACA,8CAEAC,aACA1uY,mBACA2uY,gBACA/7E,cACAppC,eACA7vR,WACAi1Y,YACArkY,cACAw9R,eACAhpS,YACA8vY,aACAt1Y,YACAu1Y,cAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,QAIA,CAlEuC1zY,CAAW+mQ,EAAQ,OAkE1D;;;;;;CC7DC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,6GACA,KAEAE,yEACAK,yFACA,KAEAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,mBACA,MACA,WACA90Y,kDACA,OAGA+0Y,mBACA,MACA,aACA/0Y,kDACA,OAGAg1Y,oBACA,MACA,WACAh1Y,kDACA,OAGAi1Y,mBACA,MACA,WACAj1Y,kDACA,OAGAk1Y,oBACA,OACA,IADAl1Y,WAGA,uBACAA,eACA,OACA,iBACA,IACA,OACA,MAIA,uBACAA,eACA,OACA,iBACA,IACA,OACA,OAIAm1Y,cAEAC,cACAC,gBACAC,aACA1uY,mBACA2uY,gBACA/7E,cACAppC,eACA7vR,WACAi1Y,YACArkY,cACAw9R,eACA6gC,kBACA4mE,kBACAzwY,YACA8vY,aACAt1Y,YACAu1Y,cAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,QAIA,CA1GuC1zY,CAAW+mQ,EAAQ,OA0G1D;;;;CCzGC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACAn3E,MACA,CACAu6E,mBACA5jG,SACAhpP,oBACA0xQ,gBACAm7E,UAEA,CACAD,mBACAE,mBACA9jG,SACAhpP,oBACA0xQ,gBACAm7E,UAEA,CACAD,mBACAE,mBACA9jG,SACAhpP,oBACA0xQ,gBACAm7E,UAEA,CACAD,mBACAE,mBACA9jG,SACAhpP,oBACA0xQ,gBACAm7E,UAEA,CACAD,mBACAE,mBACA9jG,SACAhpP,oBACA0xQ,gBACAm7E,UAEA,CACAD,mBACAE,mBACA9jG,SACAhpP,oBACA0xQ,YACAm7E,WAEA,CACAD,mBACAE,WACA9jG,SACAhpP,0BACA0xQ,YACAm7E,YAGAE,yCACAC,kCACA,8CAEApuP,uHACAE,uHACA,KAEAK,2JACAE,4EACAE,0EACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,8BACAC,qCACAC,2CACA/0Y,eACAo3Y,8BACAC,qCACAC,4CAEA/C,2CACAC,iBACA,0BAEAC,yBACA,YACA,eAEA,gBAGAl7E,UACAy7E,4BACAC,4BACAC,qBACA,8BACA,wBAEA,WAGAC,4BACAC,qBACA,8BACA,wBAEA,WAGAC,cAEAQ,uCACAC,sBACA,cACA,IACA,2CACA,QACA,QACA,MACA,0BAEA,WAGAR,cACAC,kBACAC,gBACA1uY,iBACA2uY,cACA/7E,YACAppC,cACA7vR,kBACAi1Y,oBACArkY,YACAw9R,cACAhpS,kBACA8vY,oBACAt1Y,YACAu1Y,gBAIA,CAtJuCtzY,CAAW+mQ,EAAQ,OAsJ1D;;;;;CClJC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,sGACA,KAEAE,yEACAK,mEACAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,gCACAC,wCAEAR,2CACAgC,2BAIA,OAHA,SACAzvY,KAEA,aACAA,EACc,aACdA,aACc,0BACdA,UADc,CACd,EAGA2tY,yBACA,YACA,SACc3tY,KACd,SACcA,KACd,SAEA,SAGAyyT,UACAy7E,mCACAC,8BACAC,2BACAC,gCACAC,qCACAC,cAEAC,cACAC,uBACAC,4BACA1uY,oBACA2uY,cACA/7E,oBACAppC,cACA7vR,kBACAi1Y,YACArkY,aACAw9R,eACAhpS,YACA8vY,cACAt1Y,WACAu1Y,cAEAr4E,MACAw4E,MACAC,QAIA,CA7EuC1zY,CAAW+mQ,EAAQ,OA6E1D;;;;CC3EC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,qiBACA,KAEAE,6PACAK,UACAmsP,WACA,yVACA,KAEApvY,sWACA,KAEAqvY,4EAEAlsP,gKACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,uDACAC,uDACAE,6DACAD,yEACAE,2DACAC,cAEAC,cACAC,mBACA,iBACA,+HACA,gBACA,0DAIAC,iBACA,yIACA1uY,gEAEA,mCACAA,qFAEAA,GAEAA,oFACA2uY,iCACA/7E,6BACAppC,iCACA7vR,mCACAi1Y,uCACArkY,uBACAw9R,2BACAhpS,uBACA8vY,2BACAt1Y,6BACAu1Y,kCAEAC,8EACAC,oBACA,aACAhvY,EAEA,MACAA,kBAGAA,MACAA,iBACAA,SAEA,kBAEAA,aAEAy2T,MACAw4E,MACAC,QAIA,CA9FuC1zY,CAAW+mQ,EAAQ,OA8F1D;;;;CC3FC,YAA4B;kCAI7B;IAAA/mQ,GACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBAGAzB,qBACA6oJ,qcACA,KAEAE,6PACAK,8TACA,KAEAE,gKACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,6EACAC,6EACAC,oDACAC,uEACAC,gIACAC,cAEAC,cACAC,iDACAC,yCACA1uY,oFACA2uY,6CACA/7E,sDACAppC,uCACA7vR,sDACAi1Y,uCACArkY,0CACAw9R,2BACAhpS,oCACA8vY,qBACAt1Y,0CACAu1Y,4BAEAC,6DACAC,oBACA,WACAzkY,kBACA,6BAEAksT,MACAw4E,MACAC,QAIA,CApFuC1zY,CAAW+mQ,EAAQ,OAoF1D;;;;CCjFC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,6XACA,KAEAE,YACA,sXACA,KAEAK,6QACAE,oGACAE,kGACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAR,8EACAC,iBACA,4CAEAC,yBACA,YACA,iCAEA,kCAGAl7E,UACAy7E,mFACAC,uEACAC,8CACAC,yFACAC,6GACAC,cAEAC,cACAC,8BACAC,4BACA1uY,yFACA2uY,6CACA/7E,+CACAppC,iCACA7vR,+CACAi1Y,iCACArkY,+CACAw9R,iCACAhpS,mCACA8vY,qBACAt1Y,qDACAu1Y,wCAEAC,6CACAC,yBACAK,qBACA,+FACA,eAGAD,uBACA,mCACA,eAGA34E,MACAw4E,MACAC,QAIA,CAzGuC1zY,CAAW+mQ,EAAQ,OAyG1D;;;;CCtGC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,qfACA,KAEAE,YACA,kYACA,KAEA6sP,oBACAxsP,8TACA,KAEAE,0MACAE,0HACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,0BACAC,kCAEAx7E,UACAy7E,wCACAC,wCACAC,oBACAC,oDACAC,2DACAC,cAEAC,cACAC,qCACAC,yCACA1uY,8EACA2uY,qEACA/7E,4DACAppC,uCACA7vR,sDACAi1Y,iCACArkY,gDACAw9R,2BACAhpS,kEACA8vY,6CACAt1Y,sDACAu1Y,kCAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAGA3B,gLACAgC,2BAIA,OAHA,SACAl0Y,KAEA,2CACAA,WACc,uDACdA,EACc,uDACdA,aACc,+BACdA,UADc,CACd,EAGAoyY,yBACA,WACA,uCACcpyY,KACd,mDACcA,KACd,mDACcA,KACd,2BAEA,wCAGAwzY,qDACAC,oBACA,+BAEAv4E,MACAw4E,MACAC,QAIA,CA9HuC1zY,CAAW+mQ,EAAQ,OA8H1D;;;;;CC1HC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,uHACAE,uHACA,KAEAK,2JACAE,4EACAE,0EACAqqP,gBACAC,YACAC,gBACAj6H,gBACAk6H,6BACAC,qCACAC,2CACA/0Y,gBACAo3Y,6BACAC,qCACAC,4CAEA/9E,UACAy7E,0BACAC,0BACAC,mBACAC,0BACAC,sCACAC,cAEAC,cACAC,mBACAC,iBACA1uY,kBACA2uY,cACA/7E,YACAppC,cACA7vR,wBACAi1Y,oBACArkY,iBACAw9R,cACAhpS,kBACA8vY,cACAt1Y,kBACAu1Y,eAEAC,uDACAC,sBACA,cACA,QACA,QACA,MACA,sBACA,IACA,sBACA,QACA,IACA,0BAEA,WAGAvB,0CACAC,iBACA,0BAEAC,yBACA,4CAIA,CA5EuCnyY,CAAW+mQ,EAAQ,OA4E1D;;;;CC1EC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAEAyL,GACA,sEACA,iCACA,iCACA,iCACA,iCACA,mDACA,uCACA,qBACA,6CACA,sEACA,sEACA,uEAGA1R,qBACA6oJ,SACAE,cACAK,SACA,qZACA,KAEAE,cACA,gUACAE,0EACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAR,sGACAC,iBACA,4DAEAC,yBACA,YACA,6CAEA,8CAGAl7E,UACAy7E,+FACAC,qGACAC,gEACAC,yFACAC,gEACAC,cAEAC,cACAC,+BACAC,UACA1uY,0FACA2uY,uCACA/7E,kEACAppC,6CACA7vR,wEACAi1Y,mDACArkY,gDACAw9R,2BACAhpS,sDACA8vY,iCACAt1Y,gDACAu1Y,4BAEAO,qBACA,SACA/5W,sFACA,cAEAA,wBAEA85W,uBACA,SACA95W,0BACA,cAEAA,wBAEAmhS,MACAw4E,MACAC,SAIA,CAxHuC1zY,CAAW+mQ,EAAQ,OAwH1D;;;;CCrHC,YAA4B;kCAI7B;IAAA/mQ,GACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBAGAzB,qBACA6oJ,mbACA,KAEAE,0QACA,KAEAK,oUACA,KAEAE,gKACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,uEACAC,uEACAC,8CACAC,uEACAC,qJACAC,cAEAC,cACAC,iDACAC,yCACA1uY,oFACA2uY,6CACA/7E,sDACAppC,uCACA7vR,gDACAi1Y,iCACArkY,0CACAw9R,2BACAhpS,oCACA8vY,qBACAt1Y,0CACAu1Y,4BAEAC,uFAC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CA5qP,idACA,KAEAE,6PACAK,kTACA,KAEAE,gKACAE,qGACAqqP,gBACAC,UACAC,cACAj6H,cACAk6H,iBACAC,uBACAC,+BAEAx7E,UACAy7E,2DACAC,qDACAC,iDACAC,2DACAC,oBACA,wBACA,OACA,OACA,EACA,mGACA,OACA,OACA,OACA,EACA,gGAGAC,cAEAC,cACAC,yBACAC,mCACA1uY,0FACA2uY,mDACA/7E,kEACAppC,6CACA7vR,gDACAi1Y,iCACArkY,gDACAw9R,iCACAhpS,4DACA8vY,6CACAt1Y,kEACAu1Y,8CAEAC,iHACAC,oBACA,WACAzzY,QACA,aACAyE,kBACc,MACdA,kBACczE,WACdyE,kBACc,MACdA,kBACc,MACdA,kBACc,aACdA,kBAEAA,mBAGAy2T,MACAw4E,MACAC,QAIA,CAvFuC1zY,CAAW+mQ,EAAQ,OAuF1D;;;;CCrFC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,6dACA,KAEAE,YACA,oUACA,KAEA6sP,oBACAxsP,SACA,yYACA,KAEAE,8OACAE,0HACAqqP,gBACAC,0BACAC,8BACAj6H,eACAk6H,iBACAC,wCACAC,gDAEAx7E,UACAy7E,8CACAC,wCACAC,oBACAC,oDACAC,2DACAC,cAEAC,cACAC,uDACAC,yCACA1uY,8EACA2uY,yDACA/7E,wEACAppC,yDACA7vR,wEACAi1Y,yDACArkY,sDACAw9R,uCACAhpS,gDACA8vY,iCACAt1Y,gDACAu1Y,kCAEArB,iQACAgC,2BAIA,OAHA,SACAzvY,KAGA,kDACA,2EACA,mEAEAA,KAEAA,GAGA2tY,yBACA,WACA,uCACc3tY,KACd,uCACcA,KACd,sEACcA,KACd,+DAEA,yCAKA,CApFuCxE,CAAW+mQ,EAAQ,OAoF1D;;;;CCjFC,YAA4B;kCAI7B;SAAA/mQ,WACA,cACA,IACA,iLACA,KACA,6GACA,QACA,KACA,iGACA,QACA,KACA,+EACA,QACA,KACA,qFACA,QACA,KACA,yEACA,QACA,KACA,mFAEA,UAIAzB,qBACA6oJ,2/BACA,KAEAE,YACA,uQACA,KAEA6sP,oBACAxsP,qPACAE,gKACAE,oHACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,gDACAC,uDACAC,+DAEAR,2CACAC,iBACA,0BAEAC,yBACA,YACA,eAEA,gBAGAl7E,UACAy7E,0DACAC,0DACAC,8CACAC,0DACAC,sEACAC,cAEAC,cACAC,2CACAC,mCACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,0DACAC,sBACA,cACA,QACA,QACA,MACA,6CAEA,YAKA,CAtGuCxzY,CAAW+mQ,EAAQ,OAsG1D;;;;;CClGC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGA,oBACA,SACA,KACA,cACA,IACAzG,4DACA,UACA,KACAA,sCACA,UACA,IACAA,gDACA,UACA,KACAA,4CACA,UACA,IACAA,oCACA,UACA,KACAA,0BACA,UACA,IACAA,0CACA,UACA,KACAA,gCACA,UACA,IACAA,gDACA,UACA,KACAA,sCACA,UACA,IACAA,0CACA,UACA,KACAA,2CAIA,cACA,IACAA,wEACA,UACA,KACAA,kDACA,UACA,IACAA,4DACA,UACA,KACAA,kDACA,UACA,IACAA,gDACA,UACA,KACAA,sCACA,UACA,IACAA,sDACA,UACA,KACAA,4CACA,UACA,IACAA,kEACA,UACA,KACAA,wDACA,UACA,IACAA,sDACA,UACA,KACAA,4CAIA,0BAGAQ,qBACA6oJ,udACA,KAEAE,YACA,oWACA,KAEA6sP,oBACAxsP,iTACAE,wLACAE,wGACAqqP,gBACAC,2CACAC,+CACAj6H,eACAk6H,iBACAC,yDACAC,iEAEAx7E,UACAy7E,4BACAC,8CACAC,oBACAC,kCACAC,qDACAC,cAEAC,cACAC,0CACAC,8CACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAGA3B,yMACAgC,2BAIA,OAHA,SACAllY,KAEA,2EACAA,EAEA,4CACA,wDACA,2CAEAA,kBALc,CAKd,EAGAojY,yBACA,iBACA,iCACcpjY,KACd,iCACcA,KACd,uCACcA,KACd,mDAEA,wCAGAksT,MACAw4E,MACAC,QAIA,CA5MuC1zY,CAAW+mQ,EAAQ,OA4M1D;;;;;CCzMC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,iGACA,KAEAE,yEACAK,iEACAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,gCACAC,wCAEAR,4CACAgC,2BAIA,OAHA,SACAzvY,KAEA,WACAA,EACc,gBACdA,aACc,0BACdA,UADc,CACd,EAGA2tY,yBACA,YACA,OACc3tY,KACd,YACcA,KACd,SAEA,SAGAyyT,UACAy7E,8BACAC,0BACAC,2BACAC,8BACAC,iCACAC,cAEAC,cACAC,kBACAC,qBACA1uY,kBACA2uY,aACA/7E,YACAppC,cACA7vR,UACAi1Y,YACArkY,WACAw9R,aACAhpS,YACA8vY,cACAt1Y,YACAu1Y,eAEAr4E,MACAw4E,MACAC,QAIA,CA7EuC1zY,CAAW+mQ,EAAQ,OA6E1D;;;;CC3EC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,iGACA,KAEAE,yEACAK,iEACAE,uDACAE,8CACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,gCACAC,wCAEAR,4CACAgC,2BAIA,OAHA,SACAzvY,KAEA,WACAA,EACc,gBACdA,aACc,0BACdA,UADc,CACd,EAGA2tY,yBACA,YACA,OACc3tY,KACd,YACcA,KACd,SAEA,SAGAyyT,UACAy7E,8BACAC,0BACAC,2BACAC,8BACAC,iCACAC,cAEAC,cACAC,kBACAC,qBACA1uY,kBACA2uY,aACA/7E,YACAppC,cACA7vR,UACAi1Y,YACArkY,WACAw9R,aACAhpS,YACA8vY,cACAt1Y,YACAu1Y,eAEAr4E,MACAw4E,MACAC,QAIA,CA7EuC1zY,CAAW+mQ,EAAQ,OA6E1D;;;;CC1EC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,+GACA,KAEAE,mFACAK,SACA,gGACA,KAEAE,sEACAE,6DACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,yBACAC,8BACAC,yBACAC,kCACAC,0CACAC,cAEAC,cACAC,oBACAC,cACA1uY,iBACA2uY,gBACA/7E,WACAppC,eACA7vR,gBACAi1Y,qBACArkY,iBACAw9R,oBACAhpS,UACA8vY,aACAt1Y,SACAu1Y,aAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,QAIA,CA1DuC1zY,CAAW+mQ,EAAQ,OA0D1D;;;;;;CCrDC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,yeACA,KAEAE,mQACAK,kTACA,KAEAE,8IACAE,4IAEAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,wDACAC,qFACAC,wCACAC,8DACAC,uGACAC,cAEAC,cACAC,oEACAC,8EACA1uY,0FACA2uY,mDACA/7E,qDACAppC,uCACA7vR,+CACAi1Y,iCACArkY,yCACAw9R,2BACAhpS,6BACA8vY,eACAt1Y,+CACAu1Y,kCAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAGA34E,MACAw4E,MACAC,QAIA,CA3FuC1zY,CAAW+mQ,EAAQ,OA2F1D;;;;;;CCxFC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,kGACA,KAEAE,YACA,wEACA6sP,oBACAxsP,+EACAE,6DACAE,oDACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,kBACAC,+BACAC,sCAEAx7E,UACAy7E,yBACAC,4BACAC,yBACAC,4BACAC,mCACAC,cAEAC,cACAC,eACAC,gBACA1uY,kBACA2uY,iBACA/7E,eACAppC,iBACA7vR,YACAi1Y,cACArkY,WACAw9R,cACA6gC,WACA4mE,aACAzwY,gBACA8vY,mBACAt1Y,cACAu1Y,eAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA5DuC1zY,CAAW+mQ,EAAQ,OA4D1D;;;;CC3DC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,idACA,KAEAE,YACA,6TACA,KAEA6sP,oBACAxsP,kTACA,KAEAE,qMACAE,+GACA4rP,sBACAvB,gBACAC,2CACAC,+CACAj6H,eACAk6H,iBACAC,yDACAC,iEAEAoB,qBACA,+FACA,eAGAD,uBACA,mCACA,eAGA3B,sIACAgC,2BAIA,OAHA,SACAl0Y,KAEA,+BACAA,WACc,qCACdA,EACc,2CACdA,aACc,+BACdA,UADc,CACd,EAGAoyY,yBACA,WACA,2BACcpyY,KACd,iCACcA,KACd,uCACcA,KACd,2BAEA,4BAGAk3T,UACAy7E,4BACAC,wCACAC,uDACAC,wCACAC,iDACAC,cAEAC,cACAC,wBACAC,yCACA1uY,sDACA2uY,mDACA/7E,gDACAppC,uCACA7vR,gDACAi1Y,uCACArkY,oCACAw9R,2BACAhpS,gDACA8vY,uCACAt1Y,0CACAu1Y,kCAEAr4E,MACAw4E,MACAC,QAIA,CA3HuC1zY,CAAW+mQ,EAAQ,OA2H1D;;;;;CCvHC,YAA4B;kCAI7B;IAAA/mQ,EACA,wEACAwE,EACA,6DACAyL,GACA,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEAlQ,EACA,qKAEAxB,wBACA6oJ,uGACA,KAEAE,0BACA,SAEc,gBACd9iJ,aAEAxE,aAJAA,GAQAw0Y,cACAN,mBACAO,kBACA,4FACAC,uBACA,mFAEAC,cACAC,kBACAC,mBAEAltP,SACA,wEACAE,uDACAE,8CACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,0BACAC,yBACAC,wBACAC,2BACAC,oCACAC,cAEAC,cACAC,iBACAC,kBACA1uY,sBACA2uY,iBACA/7E,qBACAppC,gBACA7vR,kBACAi1Y,YACArkY,kBACAw9R,cACAhpS,oBACA8vY,gBACAt1Y,mBACAu1Y,cAEAC,yCACAC,oBACA,OACA91Y,GACA,iCAGAu9T,MACAw4E,MACAC,QAIA,CAvGuC1zY,CAAW+mQ,EAAQ,OAuG1D;;;;;CCpGC,YAA4B;kCAI7B;IAAA/mQ,EACA,wEACAwE,EACA,6DACAyL,GACA,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEAlQ,EACA,qKAEAxB,qBACA6oJ,uGACA,KAEAE,0BACA,SAEc,gBACd9iJ,aAEAxE,aAJAA,GAQAw0Y,cACAN,mBACAO,kBACA,4FACAC,uBACA,mFAEAC,cACAC,kBACAC,mBAEAltP,SACA,wEACAE,uDACAE,8CACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,0BACAC,yBACAC,wBACAC,2BACAC,oCACAC,cAEAC,cACAC,iBACAC,kBACA1uY,sBACA2uY,iBACA/7E,qBACAppC,gBACA7vR,kBACAi1Y,YACArkY,kBACAw9R,cACA6gC,mBACA4mE,cACAzwY,oBACA8vY,gBACAt1Y,mBACAu1Y,cAEAC,yCACAC,oBACA,OACA91Y,GACA,iCAGAu9T,MACAw4E,MACAC,QAIA,CAzGuC1zY,CAAW+mQ,EAAQ,OAyG1D;;;;;CCtGC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,kGACA,KAEAE,YACA,wEACA6sP,oBACAxsP,4EACAE,2DACAE,iDACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,kBACAC,8BACAC,sCAEAx7E,UACAy7E,4BACAC,+BACAC,4BACAC,+BACAC,+CACAC,cAEAC,cACAC,eACAC,gBACA1uY,iBACA2uY,eACA/7E,eACAppC,eACA7vR,aACAi1Y,cACArkY,YACAw9R,cACA6gC,YACA4mE,cACAzwY,iBACA8vY,mBACAt1Y,cACAu1Y,eAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA5DuC1zY,CAAW+mQ,EAAQ,OA4D1D;;;;CC1DC,YAA4B;kCAI7BxoQ;EAAAyzY,uBACA5qP,QACA0sP,WACA,uGACA,KAEApvY,+IACA,KAEAqvY,4BAEAzsP,YACA,wEACA,KAEA6sP,oBACAxsP,gFACA,KAEAE,uDACAE,8CACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,sBACAuC,gBACAtC,gCACAuC,uBACAtC,sCACAuC,6BAEA/9E,UACAy7E,wBACAC,uBACAC,uBACAC,wBACAC,8BACAC,cAEAC,cACAC,sBACAC,aACA1uY,kBACA2uY,iBACA/7E,eACAppC,gBACA7vR,YACAi1Y,aACArkY,YACAw9R,cACAhpS,WACA8vY,cACAt1Y,UACAu1Y,aAEAC,+CACAC,sBACA,MACA,MACA,IACA,MACA,IACA,MACA,IACA,MACA,IACA,OACA,2BACAzzY,OAEAyE,KAEAy2T,MACAw4E,MACAC,QAIA,CAvFuC1zY,CAAW+mQ,EAAQ,OAuF1D;;;;CCpFC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,wBAEA6oJ,2WACA,KAEAE,YACA,oWACA,KAEAK,wTACA,KAEAE,kLACAE,gLACAqqP,gBACAC,+BACAC,mCACAj6H,eACAk6H,iBACAC,6CACAC,qDAEAx7E,UACAy7E,4BACAC,4BACAC,+CACAC,4BACAC,qDACAC,cAEAC,cACAC,qCACAC,yCACA1uY,sDACA2uY,uCACA/7E,0CACAppC,iCACA7vR,gDACAi1Y,iCACArkY,0CACAw9R,2BACAhpS,sDACA8vY,uCACAt1Y,0CACAu1Y,4BAEAO,qBACA,+FACA,eAGAD,uBACA,mCACA,eAKA3B,0HACAgC,2BAIA,OAHA,SACAl0Y,KAEA,yBACAA,WACc,+BACdA,EACc,2CACdA,aACc,+BACdA,UADc,CACd,EAGAoyY,yBACA,WACA,qBACcpyY,KACd,2BACcA,KACd,uCACcA,KACd,2BAEA,sBAGAk7T,MACAw4E,MACAC,QAIA,CA5HuC1zY,CAAW+mQ,EAAQ,OA4H1D;;;;CCzHC,YAA4B;kCAI7B;IAAA/mQ,EACA,uIACA,KAEAwE,EACA,qHACA,KAEAyL,GACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,aACA,QACA,SAEA,cACA,sCAEA,kBACA,YACA,cACA,KACA,uCACA,IACA,oCACA,KACA,qCACA,IACA,sCACA,KACA,uCACA,KACA,yCACA,KACA,oDACA,KACA,8BAIA1R,qBACA6oJ,qBACA,SAEc,iBACd5iJ,aAEAxE,aAJAA,GAOAsnJ,8EACAqtP,cACAC,kBACAC,mBACAltP,SACA,uFACAE,yDACAE,mDACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,2BACAC,uBACAC,oBACA,wBACA,EACA,qCAEA,EACA,8BAEA,EACA,sCAEA,EACA,qCAGA,0BAGAC,yBACAC,oBACA,wBACA,EACA,sDACA,EACA,uDACA,EACA,sDAEA,sCAGAC,cAEAC,cACAC,eACAC,eACA1uY,iBACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,iBACAw9R,YACA6gC,iBACA4mE,KACAzwY,iBACA8vY,KACAt1Y,QACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA9IuC1zY,CAAW+mQ,EAAQ,OA8I1D;;;;CC3IC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,2GACA,KAEAE,yEACAK,SACA,6FACA,KAEAE,0DACAE,gEACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,2BACAC,0CACAC,kDAEAx7E,UACAy7E,0BACAC,+BACAC,2BACAC,2BACAC,oBACA,sCACA,8BACA,+BAEAC,cAEAC,cACAC,eACAC,gBACA1uY,oBACA2uY,iBACA/7E,cACAppC,gBACA7vR,aACAi1Y,cACArkY,WACAw9R,aACAhpS,cACA8vY,cACAt1Y,WACAu1Y,cAEAC,qCACAC,iBACAjpP,gCAGA,CA5DuCvqJ,CAAW+mQ,EAAQ,OA4D1D;;;;CCzDC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,2GACA,KAEAE,yEACAK,SACA,6FACA,KAEAE,0DACAE,gEACA4rP,sBACAvB,gBACAC,WACAC,eACAj6H,eACAk6H,2BACAC,kCACAC,0CAEAx7E,UACAy7E,0BACAC,+BACAC,2BACAC,2BACAC,oBACA,sCACA,8BACA,+BAEAC,cAEAC,cACAC,eACAC,gBACA1uY,aACA2uY,iBACA/7E,cACAppC,gBACA7vR,aACAi1Y,cACArkY,WACAw9R,aACA6gC,eACA4mE,gBACAzwY,cACA8vY,cACAt1Y,WACAu1Y,cAEAC,qCACAC,iBACAv4E,MACAw4E,MACAC,QAIA,CAjEuC1zY,CAAW+mQ,EAAQ,OAiE1D;;;;;;CC5DC,YAA4B;kCAI7B;SAAA/mQ,SACA,IASArC,MACA,sCACAA,UAEAsS,IAbA,CACAkjY,aACAnlH,YACAolH,SACA7mG,UACAynG,4BACAX,UACAC,UAMAvkY,GAGAxQ,qBACA6oJ,iHACA,KAEAE,YACA,qEACA,KAEA6sP,oBACAxsP,6FACAE,0DACAE,iDACAqqP,gBACAC,UACAC,cACAj6H,eACAk6H,iBACAC,uBACAC,+BAEAx7E,UACAy7E,sBACAC,2BACAC,wBACAC,uBACAC,gCACAC,cAEAC,cACAC,kBACAC,0BACA1uY,sBACA2uY,KACA/7E,aACAppC,KACA7vR,eACAi1Y,KACArkY,SACAw9R,KACA6gC,kCACA4mE,KACAzwY,gBACA8vY,KACAt1Y,UACAu1Y,MAEAr4E,MACAw4E,MACAC,QAIA,CA5EuC1zY,CAAW+mQ,EAAQ,OA4E1D;;;;;;CCzEC,YAA4B;kCAI7B;SAAA/mQ,OACA,mBACA,0BACArC,KACAD,wCACAC,KACAA,KAEA,kBAUA,cACAD,gFAEAqR,QAZA,CACAokY,+PACAnlH,2NACAolH,gFACA7mG,0EACAynG,oHACAX,oHACAC,qEAKA31Y,OAGA,OACA,uBACA,uBACA,uBACA,uBACA,+BACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBAMAY,qBACA6oJ,QACA1iJ,+bACA,KAEAovY,WACA,4aACA,MAGAxsP,aAEA5iJ,0RACA,KAEAovY,WACA,wRACA,MAGAnsP,UACAmsP,WACA,yVACA,KAEApvY,gWACA,KAEAqvY,mKAEAlsP,sHACAE,oHACA4sP,cACAC,kBACAC,mBAGAL,YACA,+wBAGAN,iBACA,+wBAGAO,kBACA,wgBAGAC,uBACA,8TACAtC,gBACAC,UACAC,cACAj6H,eACAk6H,yBACAC,gCACAC,wCAEAx7E,UACAy7E,kEACAC,4DACAE,sDACAD,qBACA,0BAcA,sBACA,mCAEA,6BAhBA,wBACA,EACA,+FACA,OACA,OACA,EACA,+FACA,OACA,OACA,EACA,0FAMA,EAIAE,qBACA,0BAcA,sBACA,mCAEA,6BAhBA,wBACA,EACA,mFACA,OACA,OACA,EACA,mFACA,OACA,OACA,EACA,8EAMA,EAIAC,cAEAC,cACAC,2CACAC,yCACA1uY,gGACA2uY,KACA/7E,IACAppC,KACA7vR,uBACAi1Y,KACArkY,6BACAw9R,KACA6gC,yCACA4mE,KACAzwY,mCACA8vY,KACAt1Y,uBACAu1Y,MAEArB,2HACAC,iBACA,6EAEAC,yBACA,WACA,2BACcpjY,KACd,2BACcA,KACd,qBAEA,wCAGAwkY,8DACAC,sBACA,cACA,QACA,QACA,MACA,uBACA,IACA,6BACA,QACA,IACA,2BAEA,WAGAv4E,MACAw4E,MACAC,QAIA,CArNuC1zY,CAAW+mQ,EAAQ,OAqN1D;;;;CCpNC,YAA4B;kCAI7B;IAAA/mQ,GACA,iCACA,6CACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,6CACA,uCACA,iCACA,kCAEAwE,2LAEAjG,qBACA6oJ,SACAE,cACAK,WACAE,gBACAE,cACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,qCAEAR,sDACAC,iBACA,gCAEAC,yBACA,YACA,qBAEA,sBAEAl7E,UACAy7E,4BACAC,8CACAC,oFACAC,8CACAC,4FACAC,cAEAC,cACAC,+BACAC,uBACA1uY,sDACA2uY,uCACA/7E,oCACAppC,2BACA7vR,0CACAi1Y,iCACArkY,gDACAw9R,uCACAhpS,gDACA8vY,uCACAt1Y,oCACAu1Y,4BAEAO,qBACA,iCAEAD,uBACA,iCAEA34E,MACAw4E,MACAC,QAIA,CAnFuC1zY,CAAW+mQ,EAAQ,OAmF1D;;;;CChFC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,qOACA,KAEAE,YACA,+FACAK,SACA,sGACA,KAEAE,oEACAE,uCACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,uBACAC,oCACAC,4CAEAx7E,UACAy7E,uBACAC,yBACAC,wBACAC,uBACAC,iCACAC,cAEAC,cACAC,wBACAC,qBACA1uY,qBACA2uY,kBACA/7E,iBACAppC,iBACA7vR,gBACAi1Y,gBACArkY,gBACAw9R,iBACAhpS,kBACA8vY,iBACAt1Y,eACAu1Y,eAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA3DuC1zY,CAAW+mQ,EAAQ,OA2D1D;;;;CCxDC,YAA4B;kCAK7BxoQ;EAAAyzY,mBACA5qP,mhBACA,KAEAE,4RACA,KAEAK,SACA,yVACA,KAEAE,4KACAE,wGACA4rP,sBACAvB,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,0BACAC,+DAEAx7E,UACAy7E,oCACAC,0CACAC,2BACAC,0CACAC,kEACAC,cAEAC,cACAC,oCACAC,yCACA1uY,wEACA2uY,uCACA/7E,2DACAppC,yDACA7vR,uBACAi1Y,2BACArkY,6BACAw9R,2BACAhpS,6BACA8vY,2BACAt1Y,uBACAu1Y,4BAEAC,0DACAC,oBACA,sCAEAvB,+HACAC,iBACA,yEAEAC,yBACA,YACApyY,2DAEAA,mEAKA,CAvEuCC,CAAW+mQ,EAAQ,OAuE1D;;;;;CCnEC,YAA4B;kCAI7B;IAAA/mQ,EACA,+GACA,KAEAwE,wEACA,cACA,gBAEA,oBACA,YACA,cACA,IACA,sDACA,KACA,YACAxG,+BAEAA,kBAEA,IACA,oDACA,KACA,YACAA,gCAEAA,oBAEA,IACA,2CACA,KACA,YACAA,6BAEAA,iBAEA,IACA,uCACA,KACA,YACAA,wBAEAA,mBAEA,IACA,oCACA,KACA,YACAA,8BAEAA,iBAEA,IACA,8BACA,KACA,YACAA,wBAEAA,WAKAO,qBACA6oJ,SACAE,cACAK,oFACAE,qDACAE,mDACAqqP,gBACAC,UACAC,cACAj6H,eACAk6H,kBACAC,wBACAC,+BAEAx7E,UACAy7E,sBACAC,wBACAC,oBACA,wBACA,EACA,kCACA,OACA,EACA,6BACA,EACA,6BACA,EACA,oCACA,EACA,6BACA,EACA,0BAGAC,4BACAC,oBACA,wBACA,EACA,0CACA,OACA,EAGA,KACA,OACA,EACA,gCALA,KACA,EACA,gCAGA,KACA,EACA,kCAGAC,cAEAC,cACAC,eACAC,eACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAlJuC1zY,CAAW+mQ,EAAQ,OAkJ1D;;;;CChJC,YAA4B;kCAI7B;SAAA/mQ,WACA,YACA,cACA,IACA,YACA,eACA,sBACA,KACA,OACArC,GADA,MACAoC,sBACkB,MAClBA,0BACkBkQ,IAClBlQ,0BAEA,SAEA,IACA,IACA,uCACA,KACA,OACApC,GADA,MACAoC,oBACkB,MAClBA,yBACkBkQ,IAClBlQ,yBAEAA,wBAEA,IACA,IACA,iCACA,KACA,OACApC,GADA,MACAoC,cACkB,MAClBA,mBACkBkQ,IAClBlQ,mBAEAA,kBAEA,IACA,IACA,qCACA,KACA,OACApC,GADA,MACAoC,kBACkB,MAClBA,qBAEAA,mBAEA,IACA,IACA,0CACA,KACA,OACApC,GADA,MACAoC,uBACkB,MAClBA,yBACkBkQ,IAClBlQ,uBAEAA,wBAEA,IACA,IACA,wCACA,KACA,OACApC,GADA,MACAoC,oBACkB,MAClBA,qBACkBkQ,IAClBlQ,mBAEAA,kBAEA,CAIAxB,qBACA6oJ,qGACA,KAEAE,YACA,oEACA,KAEA6sP,oBACAxsP,+EACAE,mEACAE,mDACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,iBACAk6H,kBACAC,wBACAC,gCAEAx7E,UACAy7E,wBACAC,wBAEAC,oBACA,wBACA,EACA,mCACA,EACA,iCACA,EACA,kCACA,OACA,OACA,OACA,EACA,2BAGAC,8BACAC,oBACA,wBACA,EACA,+CACA,EACA,6CACA,EACA,8CACA,OACA,OACA,OACA,EACA,uCAGAC,cAEAC,cACAC,qBACAC,eACA1uY,IACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA7KuC1zY,CAAW+mQ,EAAQ,OA6K1D;;;;;;CCxKC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,gGACA,KAEAE,4EACAK,6FACA,KAEAE,6DACAE,6CACA4rP,sBACA1B,sBACAC,iBACA,yBAEAC,yBACA,uBAEAC,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,yBACAC,8BACAC,2BACAC,yBACAC,oCACAC,cAEAC,cACAC,kBACAC,wBACA1uY,iBACA2uY,gBACA/7E,qBACAppC,eACA7vR,kBACAi1Y,eACArkY,mBACAw9R,gBACAhpS,gBACA8vY,aACAt1Y,eACAu1Y,cAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAjEuC1zY,CAAW+mQ,EAAQ,OAiE1D;;;;;CC/DC,YAA4B;kCAI7B;IAAA/mQ,GACAs2X,OAEA6c,4IACA/7E,gJACAppC,oHACA7vR,wHACAi1Y,gFACArkY,wHACAw9R,gFACAhpS,gJACA8vY,oHACAt1Y,gJACAu1Y,2HAEAmC,qCACA,OACAxlY,SACAA,UACAA,qBAEAA,kBAEAlQ,MAEAo2Q,4BACA,IACAr4Q,EADAH,aAGA,oBAEA,iFACAD,gBAGAI,gCAEA,wDACAmS,0CAGAA,WAIA1R,0BACA6oJ,ybACA,KAEAE,YACA,0PACA6sP,oBACAxsP,2SACAE,uKACAE,oHACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,gBACAk6H,mBACAC,yBACAC,iCAEAx7E,UACAy7E,qDACAC,qDACAC,oBACA,wBACA,EACA,yEACA,EACA,mEACA,EACA,yEACA,OACA,OACA,OACA,EACA,oCAGAC,+CACAC,oBAUA,MATA,CACA,4FACA,oHACA,kGACA,sFACA,8GACA,4FACA,6FAEAl1Y,aAEAm1Y,cAEAC,cACAC,yBACAC,6BACA1uY,gGACA2uY,eACA/7E,cACAppC,eACA7vR,cACAi1Y,eACArkY,cACAw9R,eACAhpS,cACA8vY,eACAt1Y,cACAu1Y,gBAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAhIuC1zY,CAAW+mQ,EAAQ,OAgI1D;;;;;CC7HC,YAA4B;kCAI7B;IAAA/mQ,GACAs2X,OAEA6c,mCACA/7E,kCACAppC,+BACA7vR,8BACAi1Y,yBACArkY,8BACAw9R,yBACAhpS,kCACA8vY,+BACAt1Y,kCACAu1Y,iCAEAmC,qCACA,OACAxlY,SACAA,UACAA,qBAEAA,kBAEAlQ,MAEAo2Q,4BACA,IACAr4Q,EADAH,aAGA,oBAEA,0BACAD,gBAGAI,gCAEA,0BACAmS,YAGAA,WAIA1R,qBACA6oJ,gGACA,KAEAE,YACA,sEACA6sP,oBACAxsP,4EACA,KAEAE,mEACAE,mDACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,gBACAk6H,mBACAC,yBACAC,iCAEAx7E,UACAy7E,uBACAC,uBACAC,oBACA,wBACA,EACA,kCACA,EACA,gCACA,EACA,iCACA,OACA,OACA,OACA,EACA,0BAGAC,2BACAC,oBAUA,MATA,CACA,iCACA,qCACA,iCACA,+BACA,wCACA,gCACA,iCAEAl1Y,aAEAm1Y,cAEAC,cACAC,eACAC,cACA1uY,qBACA2uY,eACA/7E,cACAppC,eACA7vR,cACAi1Y,eACArkY,cACAw9R,eACAhpS,cACA8vY,eACAt1Y,cACAu1Y,gBAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CAlIuC1zY,CAAW+mQ,EAAQ,OAkI1D;;;;CChIC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,gIACA,KAEAE,yEACAK,SACA,4EACA,KAEAE,uDACAE,8CACA4rP,sBACAvB,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,yBACAC,iCAEAx7E,UACAy7E,2BACAC,0BACAC,yBACAC,yBACAC,uCACAC,cAEAC,cACAC,gBACAC,sBACA1uY,uBACA2uY,iBACA/7E,WACAppC,gBACA7vR,WACAi1Y,gBACArkY,YACAw9R,iBACAhpS,YACA8vY,iBACAt1Y,YACAu1Y,kBAEArB,iDACAE,yBACA,YACA,UACc3tY,KACd,QACcA,KACd,aAEA,WAGAyvY,2BAIA,OAHA,SACAzvY,KAEA,cACAA,EACc,YACdA,aACc,gCACd,MACA,EAEAA,UAJc,CAId,EAGA+uY,iCACAC,aACAv4E,MACAw4E,MACAC,QAIA,CAtFuC1zY,CAAW+mQ,EAAQ,OAsF1D;;;;CCnFC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,qGACA,KAEAE,yEACAK,iFACAE,gEACAE,uDACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,8BACAC,oCACAsC,uBACAC,6BAEA/9E,UACAy7E,oBACAC,uBACAE,uBACAD,2BACAE,0BACAC,cAEAC,cACAC,eACAC,uBACA1uY,sBACA2uY,iBACA/7E,aACAppC,gBACA7vR,aACAi1Y,eACArkY,WACAw9R,cACAhpS,gBACA8vY,mBACAt1Y,cACAu1Y,eAEAC,0CACAC,oBACA,WAWA,UATA,gBACA,KACA,OAEA,MADA,KAIA,KAEA,EAEAv4E,MACAw4E,MACAC,QAIA,CAtEuC1zY,CAAW+mQ,EAAQ,OAsE1D;;;;CCnEC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,mGACA,KAEAE,yEACAK,SACA,oEACA,KAEAE,2DACAE,8CACA4rP,sBACAvB,gBACAC,aACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,uBACAC,yBACAC,uCACAC,oBACAC,2CACAC,cAEAC,cACAC,oBACAC,gBACA1uY,eACA2uY,gBACA/7E,gBACAppC,eACA7vR,eACAi1Y,cACArkY,cACAw9R,aACAhpS,gBACA8vY,cACAt1Y,gBACAu1Y,eAEAr4E,MACAw4E,MACAC,QAIA,CAzDuC1zY,CAAW+mQ,EAAQ,OAyD1D;;;;CCtDC,YAA4B;kCAI7B;IAAA/mQ,GACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEAwE,GACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAGAjG,qBACA6oJ,meACA,KAEAE,YACA,4dACA,KAEAK,SACA,6gBACA,KAEAE,yRACA,KAEAE,8GACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,yBACAC,iCAEAx7E,UACAy7E,8CACAC,wCACAC,oBACAC,oDACAC,oFACAC,cAEAC,cACAC,+BACAC,mCACA1uY,iGACA2uY,+DACA/7E,kEACAppC,qEACA7vR,yEACAi1Y,0DACArkY,gDACAw9R,mDACAhpS,sDACA8vY,yDACAt1Y,4DACAu1Y,0DAEAC,mDACAC,oBACA,+BAEAK,qBACA,+FACA,eAGAD,uBACA,mCACA,eAIA3B,sNACAE,yBACA,WACA,kCACcpyY,IACd,kCACcA,KACd,4BACcA,KACd,8CACcA,KACd,8CACcA,KACd,4BAEA,mCAGAk0Y,2BAIA,OAHA,SACAl0Y,KAEA,qCACAA,WACc,sEAEA,kDACdA,MAFAA,EAIAA,MAGAk7T,MACAw4E,MACAC,QAIA,CArIuC1zY,CAAW+mQ,EAAQ,OAqI1D;;;;CClIC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,udACA,KAEAE,YACA,0SACA,KAEA6sP,oBACAxsP,SACA,6UACA,KAEAE,wLACAE,wGACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,0BACAC,kCAEAx7E,UACAy7E,wCACAC,wCACAC,oBACAC,8CACAC,mCACAC,cAEAC,cACAC,yBACAC,+CACA1uY,oFACA2uY,mDACA/7E,sDACAppC,yDACA7vR,oCACAi1Y,uCACArkY,0CACAw9R,6CACAhpS,oCACA8vY,uCACAt1Y,kEACAu1Y,sEAEAC,uCACAC,mBACAvB,sLACAgC,2BAIA,OAHA,SACAzvY,KAEA,2CACAA,WACc,+BACdA,EACc,6DACdA,aACc,uDACdA,UADc,CACd,EAGA2tY,yBACA,WACA,uCACc3tY,KACd,2BACcA,KACd,yDACcA,KACd,mDAEA,wCAGAy2T,MACAw4E,MACAC,QAIA,CA1FuC1zY,CAAW+mQ,EAAQ,OA0F1D;;;;;;CCrFC,YAA4B;kCAI7BxoQ;EAAAyzY,oBACA5qP,0GACA,KAEAE,yEACAK,sEACAE,0DACAE,gDACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,wBACAC,wBACAC,yBACAC,4BACAC,wCACAC,cAEAC,cACAC,gBACAC,gBACA1uY,kBACA2uY,gBACA/7E,eACAppC,eACA7vR,aACAi1Y,aACArkY,cACAw9R,cACAhpS,cACA8vY,cACAt1Y,cACAu1Y,eAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CApEuC1zY,CAAW+mQ,EAAQ,OAoE1D;;;;CCnEC,YAA4B;kCAI7B;IAAA/mQ,GACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBAGAzB,qBACA6oJ,QACA1iJ,qcACA,KAEAovY,WACA,sXACA,MAGAxsP,6PACAK,wTACA,KAEAE,gKACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,6EACAC,6EACAE,6EACAD,gIACAE,4IACAC,cAEAC,cACAC,2CACAC,6BACA1uY,wEACA4yT,sDACAppC,6CACA7vR,0CACAi1Y,iCACArkY,oCACAw9R,2BACAhpS,oCACA8vY,2BACAt1Y,oCACAu1Y,4BAEArB,8GACAgC,2BAIA,OAHA,SACAhkY,KAEA,yBACAA,WACc,+BACdA,EACc,yBACdA,aACc,qCACdA,UADc,CACd,EAGAkiY,yBACA,WACA,qBACcliY,KACd,2BACcA,KACd,qBACcA,KACd,iCAEA,sBAGAsjY,6DACAC,oBACA,WACAzkY,kBACA,6BAEAksT,MACAw4E,MACAC,QAIA,CAvHuC1zY,CAAW+mQ,EAAQ,OAuH1D;;;;CCpHC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,+hBACA,KAEAE,YACA,8MACA,KAEA6sP,oBACAxsP,6QACAE,gQACAE,6FACA4rP,sBACAvB,gBACAC,UACAC,cACAj6H,eACAk6H,iBACAC,gDACAC,2FAEAR,0IACAC,iBACA,0EAEAC,yBACA,YACA,+DAEA,gEAGAl7E,UACAy7E,6EACAC,yFACAC,sEACAC,2GACAC,4GACAC,cAEAC,cACAC,+BACAC,oDACA1uY,6EACA2uY,6CACA/7E,+BACAppC,iCACA7vR,iDACAi1Y,mDACArkY,yBACAw9R,2BACA6gC,iDACA4mE,mDACAzwY,qCACA8vY,uCACAt1Y,mBACAu1Y,uBAIA,CAnEuCtzY,CAAW+mQ,EAAQ,OAmE1D;;;;CChEC,YAA4B;kCAI7B;IAAA/mQ,GACA,UACA,UACA,UACA,WACA,WACA,SACA,SACA,UACA,UACA,aACA,aACA,eACA,SACA,UACA,WACA,WACA,WACA,YAGAzB,qBACA6oJ,iHACA,KAEAE,wFACAK,2GACA,KAEAE,4EACAE,mEACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,8BACAC,2BACAC,oCACAC,0BACAC,sCACAC,cAEAC,cACAC,qBACAC,qBACA1uY,yBACA4yT,cACAppC,cACA7vR,cACAi1Y,cACArkY,eACAw9R,eACAhpS,cACA8vY,cACAt1Y,eACAu1Y,gBAEAE,sBACA,cACA,QACA,QACA,SACA,KACA,iBAEA,SAEA,iBAEA,WACA91Y,UACAC,kBACA,8BAGAs9T,MACAw4E,MACAC,QAIA,CA7FuC1zY,CAAW+mQ,EAAQ,OA6F1D;;;;CC1FC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,uGACA,KAEAE,yEACAK,wEACA,KAEAE,uDACAE,+CACAqqP,gBACAC,WACAC,eACAj6H,cACAk6H,kBACAC,yBACAC,kCAEAx7E,UACAy7E,4BACAC,wBACAC,mCACAC,uBACAC,qCACAC,cAEAC,cACAC,uBACAC,wBACA1uY,kBACA2uY,gBACA/7E,iBACAppC,eACA7vR,eACAi1Y,aACArkY,eACAw9R,aACAhpS,gBACA8vY,cACAt1Y,eACAu1Y,cAEAC,iCACAC,oBACA,UAEAv4E,MACAw4E,MACAC,QAIA,CA3DuC1zY,CAAW+mQ,EAAQ,OA2D1D;;;;CCxDC,YAA4B;kCAI7B;IAAA/mQ,wEAEA,cACA,QACA,UACA,qBACAlC,qBACA,qBACAA,qBACA,qBACAA,oBACAA,QACA,CAGA,cACA,QACA,UACA,qBACAA,0BACA,qBACAA,qBACA,qBACAA,oBACAA,QACA,CAGA,oBACA,WACA,cACA,KACA,oBACA,KACA,oBACA,KACA,oBACA,KACA,oBACA,KACA,oBACA,KACA,iBAIA,cACA,4BACAC,uBACAC,OACAC,KACA,aACAA,iBAEAF,MACAE,+BAEAD,MACAC,yBAEA,gBAGAM,sBACA6oJ,8SACA,KAEAE,YACA,mKACA,KAEA6sP,oBACAxsP,0EACA,KAEAE,cACA,sEACAE,YACA,sEACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,sBACAC,2BACAC,eACAC,gCACAC,eACAC,cAEAC,cACAC,SACAC,OACA1uY,YACA2uY,KACA/7E,iBACAppC,KACA7vR,iBACAi1Y,KACArkY,iBACAw9R,KACAhpS,iBACA8vY,KACAt1Y,iBACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QAIA,CA9HuC1zY,CAAW+mQ,EAAQ,OA8H1D;;;;;CC1HC,YAA4B;kCAI7B;IAAA/mQ,GACA,UACA,UACA,UACA,WACA,WACA,SACA,SACA,UACA,UACA,gBACA,gBACA,kBACA,cACA,UACA,WACA,WACA,qBACA,sBAGAzB,qBACA6oJ,sHACA,KAEAE,mFACAK,yFACA,KAEAE,0DACAE,iDACAoqP,yBACA,YACApjY,wBAEAA,mBAGAkjY,8CACAC,iBACA,gCAEAE,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,6BACAC,+BACAC,oCACAC,sBACAC,qCACAC,cAEAC,cACAC,kBACAC,kBACA1uY,qBACA2uY,eACA/7E,eACAppC,eACA7vR,aACAi1Y,aACArkY,eACAw9R,eACA6gC,cACA4mE,cACAzwY,WACA8vY,WACAt1Y,iBACAu1Y,kBAEAE,sBACA,cACA,QACA,QACA,SACA,KACA,iBAEA,SAEA,2BAEA,WACA91Y,UACAC,kBACA,8BAGAs9T,MACAw4E,MACAC,QAIA,CA3GuC1zY,CAAW+mQ,EAAQ,OA2G1D;;;;;CCxGC,YAA4B;kCAiE7B;SAAAviQ,WACA,OACAA,wCACA2uY,+BACA/7E,iCACAppC,iCACA7vR,kCACAi1Y,iCACArkY,4BACAw9R,2BACAhpS,yBACA8vY,2BACAt1Y,uBACAu1Y,wBAEA,UAEAvzY,EADApC,QAGAA,QA9EAY,sBACA6oJ,+GACA,KAEAE,4EACAK,kGACAE,yEACAE,0DACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,2BACAC,kCACAC,+CAEAR,2BACAC,iBACA,+BAEAC,yBACA,YACApjY,cAEAA,eAGAkoT,UACAy7E,yBACAC,4BACAC,0BACAC,0BACAC,6CACAC,cAEAC,cACAC,mBACAC,YACA1uY,EACA2uY,KACA/7E,IACAppC,KACA7vR,IACAi1Y,KACArkY,IACAw9R,KACAhpS,IACA8vY,KACAt1Y,IACAu1Y,MAEAC,mCACAC,cACAv4E,MACAw4E,MACAC,QA0BA,CA1FuC1zY,CAAW+mQ,EAAQ,OA0F1D;;;;CCxFC,YAA4B;kCAI7BxoQ;EAAAyzY,yBACA5qP,kJACA,KAEAE,YACA,2IACA,KAEAK,2EACAE,gFACAE,8EACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,uBACAC,sBACAC,uBACAC,wBACAC,uBACAC,cAEAC,cACAC,wBACAC,cACA1uY,SACA2uY,aACA/7E,eACAppC,mBACA7vR,cACAi1Y,sBACArkY,QACAw9R,cACAhpS,UACA8vY,eACAt1Y,UACAu1Y,gBAEAr4E,MACAw4E,MACAC,SAIA,CAxDuC1zY,CAAW+mQ,EAAQ,OAwD1D;;;;CCrDC,YAA4B;kCAI7BxoQ;EAAAyzY,oBACA5qP,mbACA,KAEAE,YACA,4aACA,KAEAK,mRACAE,wRACAE,sRACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,+BAEAx7E,UACAy7E,+CACAC,+CACAC,4BACAC,qDACAC,4BACAC,cAEAC,cACAC,+DACAC,6BACA1uY,6BACA2uY,iCACA/7E,mCACAppC,uCACA7vR,6BACAi1Y,yDACArkY,uBACAw9R,kCACAhpS,8BACA8vY,6CACAt1Y,mCACAu1Y,8CAEAr4E,MACAw4E,MACAC,SAIA,CAxDuC1zY,CAAW+mQ,EAAQ,OAwD1D;;;;CCrDC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,2cACA,KAEAE,YACA,ocACA,KAEAK,wTACA,KAEAE,sHACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,mGACAC,gHACAC,6HAEAR,qRACAgC,2BAIA,OAHA,SACAzvY,KAGA,+DACA,sCACA,0EAEAA,EACc,oGACdA,KAEAA,cAGA2tY,yBACA,cACA,aACA,0DACcpjY,MACd,iCACcA,OACd,sEACcA,OACd,qBACcA,OACd,sEAEA,sBAGAkoT,UACAy7E,6EACAC,uEACAC,iGACAC,0DACAC,uGACAC,cAEAC,cACAC,2CACAC,yCACA1uY,wEACA2uY,6CACA/7E,sDACAppC,uCACA7vR,sDACAi1Y,uCACArkY,0CACAw9R,2BACAhpS,0CACA8vY,2BACAt1Y,0CACAu1Y,4BAGAC,gHACAC,sBACA,cACA,QACA,QACA,MACA,yCACA,QACA,IACA,mDAEA,WAGAK,qBACA,iCAEAD,uBACA,iCAEA34E,MAEAw4E,MACAC,QAIA,CAjHuC1zY,CAAW+mQ,EAAQ,OAiH1D;;;;;CC7GC,YAA4B;kCAI7B;SAAA/mQ,OACA,mBACA,0BACAlC,KACAH,wCACAG,KACAA,KAEA,kBASA,cACAH,4FACU,QACVA,gFAEAD,QAbA,CACAy1Y,+PACAnlH,+PACAolH,2NACA7mG,0EACA8mG,0HACAC,iFAOAx1Y,OAGA,gBACA,OACA43Y,WACA,qTACA,KAEAC,WACA,qTACA,KAEAC,SACA,iUACA,MAKA,aACA93Y,aACA+b,WACAjO,gCAEAlO,EASAI,EALA,iDACA,aACA,8HACA,WACA,cACAJ,SARAI,aAUA,cACA,kBACA,0DAIAS,qBACA6oJ,QACA1iJ,6dACA,KAEAovY,WACA,sgBACA,MAGAxsP,kSACA,KAEAK,WACAE,sHACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,yBACAC,iCACAC,yCAEAx7E,UACAy7E,gEACAC,oDACAE,8CACAD,8BACAE,oBACA,wBACA,OACA,OACA,OACA,EACA,gFACA,OACA,OACA,EACA,mFAGAC,cAEAC,cACAC,yBACAC,mCACA1uY,0FACA2uY,KACA/7E,IACAppC,KACA7vR,yCACAi1Y,KACArkY,6BACAw9R,KACAhpS,yCACA8vY,KACAt1Y,uBACAu1Y,MAGArB,gIACAC,iBACA,6EAEAC,yBACA,WACA,2BACcz0Y,KACd,iCACcA,KACd,qBAEA,wCAGA61Y,uDACAC,sBACA,cACA,QACA,QACA,UACA,QACA,IACA,uBACA,IACA,iCAEA,WAGAv4E,MACAw4E,MACAC,QAIA,CAxKuC1zY,CAAW+mQ,EAAQ,OAwK1D;;;;;CCrKC,YAA4B;kCAI7B;IAAA/mQ,GACA,iCACA,iCACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,iCACA,uCACA,iCACA,kCAEAwE,uMAEAjG,qBACA6oJ,SACAE,cACAK,WACAE,gBACAE,cACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,qCAEAR,sDACAC,iBACA,gCAEAC,yBACA,YACA,qBAEA,sBAEAl7E,UACAy7E,qDACAC,qDACAC,8CACAC,0FACAC,+EACAC,cAEAC,cACAC,+BACAC,6BACA1uY,sDACA2uY,uCACA/7E,0CACAppC,2BACA7vR,sDACAi1Y,uCACArkY,oCACAw9R,qBACAhpS,0CACA8vY,2BACAt1Y,0CACAu1Y,4BAEAO,qBACA,iCAEAD,uBACA,iCAEA34E,MACAw4E,MACAC,QAIA,CAnFuC1zY,CAAW+mQ,EAAQ,OAmF1D;;;;CCjFC,YAA4B;kCAI7BxoQ;EAAAyzY,wBACA5qP,0FACA,KAEAE,2EACAK,SACA,qEACA,KAEAE,2DACAE,gDACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,+BACAC,2BACAC,oCACAC,+BACAC,6CACAC,cAEAC,cACAC,yBACAC,0BACA1uY,WACA2uY,eACA/7E,eACAppC,eACA7vR,aACAi1Y,aACArkY,YACAw9R,YACAhpS,WACA8vY,WACAt1Y,YACAu1Y,aAEAr4E,MACAw4E,MACAC,QAIA,CAxDuC1zY,CAAW+mQ,EAAQ,OAwD1D;;;;CCrDC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,6XACA,KAEAE,6PACAK,iTACAE,gKACAE,oHACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,sFACAC,mEACAC,sFACAC,gFACAC,uHACAC,cAEAC,cACAC,oEACAC,qFACA1uY,yCACA2uY,6CACA/7E,4DACAppC,6CACA7vR,gDACAi1Y,iCACArkY,0CACAw9R,2BACAhpS,oCACA8vY,qBACAt1Y,0CACAu1Y,4BAEAr4E,MACAw4E,MACAC,QAIA,CArDuC1zY,CAAW+mQ,EAAQ,OAqD1D;;;;;CCjDC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,sJACA,KAEAE,YACA,4FACA,KAEA6sP,oBACAxsP,kIACA,KAEAE,gDACAE,8CACA4rP,sBACA1B,uBACAC,iBACA,uBAEAC,yBACA,YACApyY,YAEAA,aAGAqyY,gBACAC,WACAC,eACAj6H,eACAk6H,4BACAC,mCACAC,0CACA/0Y,cACAo3Y,gBACAC,uBACAC,8BAEA/9E,UACAy7E,iCACAC,kCACAC,+CACAC,iCACAC,sDACAC,cAEAC,cACAC,qBACAC,0BACA1uY,mBACA2uY,gBACA/7E,qBACAppC,gBACA7vR,sBACAi1Y,iBACArkY,qBACAw9R,gBACA6gC,uBACA4mE,kBACAzwY,sBACA8vY,iBACAt1Y,sBACAu1Y,kBAEAC,iCACAC,oBACA,UAEAv4E,MACAw4E,MACAC,QAIA,CAjFuC1zY,CAAW+mQ,EAAQ,OAiF1D;;;;CC/EC,YAA4B;kCAI7BxoQ;EAAAyzY,yBACA5qP,mOACA,KAEAE,YACA,uHACA,KAEA6sP,oBACAxsP,SACA,gKACA,KAEAE,4FACAE,kEACA4rP,sBACAvB,gBACAC,WACAh6H,eACAk6H,iBACAC,wBACAC,gCAEAx7E,UACAy7E,sCACAC,0CACAC,2BACAC,iDACAC,sCACAC,cAEAC,cACAC,sBACAC,qBACA1uY,oCACA2uY,2BACA/7E,8BACAppC,8BACA7vR,0BACAi1Y,qBACArkY,oBACAw9R,oBACAhpS,uBACA8vY,uBACAt1Y,wBACAu1Y,yBAEAC,8CACAC,oBACA,WAWA,UATA,gBACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,EAEAv4E,MACAw4E,MACAC,QAIA,CA3EuC1zY,CAAW+mQ,EAAQ,OA2E1D;;;;CCxEC,YAA4B;kCAI7BxoQ;EAAAyzY,mBACA5qP,6PACA,KAEAE,2LACAK,oLACAE,2HACAE,qFACAqqP,gBACAC,YACAC,gBACAj6H,eACAk6H,iBACAC,yBACAC,iCAEAx7E,UACAy7E,kCACAC,iCACAC,gEACAC,4BACAC,oEACAC,cAEAC,cACAC,qBACAC,0BACA1uY,0CACA2uY,mBACA/7E,+BACAppC,+BACA7vR,qBACAi1Y,qBACArkY,4BACAw9R,4BACAhpS,kBACA8vY,kBACAt1Y,wBACAu1Y,yBAEAC,sDACAC,iCACAv4E,MACAw4E,MACAC,QAIA,CAvDuC1zY,CAAW+mQ,EAAQ,OAuD1D;;;;;;CClDC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,uLACA,KAEAE,uHACA,KAEAK,2JACAE,sHACAE,0EACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,8BACAC,+CACAC,oDACA/0Y,aACAo3Y,8BACAC,qCACAC,2CAEA/C,8FACAgC,2BAIA,OAHA,SACAzvY,KAEA,2DACAA,EACc,uCACdA,KAGAA,cAGA2tY,yBACA,cACA,aACA,eACcpjY,MACd,eACcA,OACd,eACcA,OACd,eACcA,OACd,eAEA,gBAGAkoT,UACAy7E,2BACAC,2BACAC,qBACA,8BACA,gBAEA,iBAGAC,2BACAC,qBACA,8BACA,gBAEA,iBAGAC,cAEAQ,uDACAC,sBACA,cACA,QACA,QACA,MACA,sBACA,IACA,sBACA,QACA,IACA,0BAEA,WAGAR,cACAC,kBACAC,gBACA1uY,iBACA2uY,eACA/7E,mBACAppC,qBACA7vR,mBACAi1Y,qBACArkY,aACAw9R,eACA6gC,aACA4mE,eACAzwY,mBACA8vY,qBACAt1Y,aACAu1Y,gBAEAr4E,MAEAw4E,MACAC,QAIA,CAxHuC1zY,CAAW+mQ,EAAQ,OAwH1D;;;;;;;CCpHC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,uLACA,KAEAE,uHACA,KAEAK,2JACAE,sHACAE,0EACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,8BACAC,qCACAC,0CACA/0Y,aACAo3Y,8BACAC,qCACAC,2CAEA/C,8FACAgC,2BAIA,OAHA,SACAzvY,KAEA,2DACAA,EACc,mBACdA,aACc,uCACdA,UADc,CACd,EAGA2tY,yBACA,cACA,aACA,eACcpjY,MACd,eACcA,OACd,eACc,SACd,eACcA,OACd,eAEA,gBAGAkoT,UACAy7E,2BACAC,2BACAC,0BACAC,2BACAC,0BACAC,cAEAQ,uDACAC,sBACA,cACA,QACA,QACA,MACA,sBACA,IACA,sBACA,QACA,IACA,0BAEA,WAGAR,cACAC,kBACAC,gBACA1uY,iBACA2uY,eACA/7E,mBACAppC,qBACA7vR,mBACAi1Y,qBACArkY,aACAw9R,eACAhpS,mBACA8vY,qBACAt1Y,aACAu1Y,iBAIA,CApGuCtzY,CAAW+mQ,EAAQ,OAoG1D;;;;;;CClGC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,uLACA,KAEAE,uHACA,KAEAK,2JACAE,sHACAE,0EACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,8BACAC,qCACAC,0CACA/0Y,aACAo3Y,8BACAC,qCACAC,2CAEA/C,8FACAgC,2BAIA,OAHA,SACAzvY,KAEA,2DACAA,EACc,mBACdA,aACc,uCACdA,UADc,CACd,EAGA2tY,yBACA,cACA,aACA,eACcpjY,MACd,eACcA,OACd,eACcA,OACd,eACcA,OACd,eAEA,gBAGAkoT,UACAy7E,4BACAC,4BACAC,2BACAC,4BACAC,2BACAC,cAEAQ,uDACAC,sBACA,cACA,QACA,QACA,MACA,sBACA,IACA,sBACA,QACA,IACA,0BAEA,WAGAR,cACAC,kBACAC,gBACA1uY,iBACA2uY,eACA/7E,mBACAppC,qBACA7vR,mBACAi1Y,qBACArkY,aACAw9R,eACAhpS,mBACA8vY,qBACAt1Y,aACAu1Y,iBAIA,CApGuCtzY,CAAW+mQ,EAAQ,OAoG1D;;;;;CClGC,YAA4B;kCAI7BxoQ;EAAAyzY,sBACA5qP,uLACA,KAEAE,uHACA,KAEAK,2JACAE,sHACAE,0EACAqqP,gBACAC,WACAC,eACAj6H,eACAk6H,8BACAC,qCACAC,0CACA/0Y,aACAo3Y,8BACAC,qCACAC,2CAEA/C,8FACAgC,2BAIA,OAHA,SACAzvY,KAEA,2DACAA,EACc,mBACdA,aACc,uCACdA,UADc,CACd,EAGA2tY,yBACA,cACA,aACA,eACcpjY,MACd,eACcA,OACd,eACcA,OACd,eACcA,OACd,eAEA,gBAGAkoT,UACAy7E,4BACAC,4BACAC,2BACAC,4BACAC,2BACAC,cAEAQ,uDACAC,sBACA,cACA,QACA,QACA,MACA,sBACA,IACA,sBACA,QACA,IACA,0BAEA,WAGAR,cACAC,kBACAC,gBACA1uY,iBACA2uY,eACA/7E,mBACAppC,qBACA7vR,mBACAi1Y,qBACArkY,aACAw9R,eACAhpS,mBACA8vY,qBACAt1Y,aACAu1Y,iBAIA,CApGuCtzY,CAAW+mQ,EAAQ,OAoG1D,yCCpGgE+3F,QAG/D,WAAsB,aAEvB,MA6HA1/V,EA3HA,aACA,+BAKA,eACAb,KAGA,eACA,OACAs3Y,qBACA,sDAIA,eAGA,OACA,UACA,uDAIA,kBACA,mDAGA,eACA,8BACA,iDAEA,OACA,aACA,YACA,SAGA,SAIA,eACA,mBAGA,eACA,MACA,qBACA,uDAIA,eACA,OACAA,oBACA,qDAIA,kBACA,IACAz8G,GADA08G,MAEAC,aACA,SAAoB38G,QAAYA,GAChC08G,uBAEA,UAGA,kBACA,iBACA/mY,WACA8mY,eAIA,0BACAA,yBAGA9mY,kBACA8mY,uBAGAA,GAGA,wBACA,gCAGA,aAEA,OACAG,SACAC,gBACAC,eACA75T,YACA85T,gBACAC,aACAC,gBACAC,kBACAC,iBACAC,mBACAC,OACAC,mBACA37E,SACAo3E,cACAwE,WACAC,oBAIA,eACA,sBACAf,YAEAA,OAsBA,eACA,sBACA,aACAC,0CACA,kBAEA18G,IACA7gQ,wBACAwzN,gBACAA,WACAA,gBACAA,kBACAA,oBACAA,qBACAA,eACAA,mBACAA,sBACAA,8BAUA,GARA8pJ,aACAz8G,GACAA,IACA,sBACA,iCACA,gBAGA,2CAGA,UAFAy8G,cAEA,CAGA,mBAGA,eACA,cACA,gBACA53Y,YAEAG,yBAGA2tP,GA7DA3sP,EADAoU,qBACAA,qBAEA,aACA,IAEA4lR,GAFArtC,gBACA+pJ,iBAGA,SAAwB18G,MAASA,KACjC,wCACA,SAIA,UAqDA,4BACA/3R,KAEA,kBACA,OACA+3R,GACA28G,GACA90C,YAiCA,GA/BAtjW,yBACAk4Y,yCAEAl4Y,WACAk4Y,aAEAl4Y,WACAk4Y,aAEAl4Y,WACAk4Y,aAEAl4Y,gBACAk4Y,uBAEAl4Y,aACAk4Y,iBAEAl4Y,eACAk4Y,qBAEAl4Y,gBACAk4Y,uBAEAl4Y,YACAk4Y,cAEAl4Y,gBACAk4Y,uBAGA50C,KACA,SAAwB60C,MAAyBA,KAGjDn4Y,EADAo4Y,MADA38G,aAGAy8G,WAKA,UAIA,eACAtyY,WACA3F,kDACAA,iBACAA,wBAIA,QACAyD,KACArB,qBACAqB,MAIA,eACA,OACAw0Y,qDAIA,gBAEA,mCACA,6BACAp/W,cAEAA,yCAIA,kBACA,UAEA,oBAIA,GAHA,4BACAz2B,8BAEA81Y,IACA,IACAC,GACA90C,GACA41C,GAHAz9G,MAIA09G,oBACA,SAA4B71C,MAAYA,MAExC,GADA80C,MACA,gCAEA,UADAA,kBACAvlG,aACAzhS,qBACAgnY,mCAGAA,uBAEAA,iBAEA38G,YAEArrR,EACA8nY,GACA,gBACAriY,wCACA,MACA,kBAEAsiY,MAEA,iCACS/pJ,IAGT,IAgFAtwO,GAhFAnN,KAEA,kBACA,4BACAtO,4BAEAsO,QACAP,MACAO,UAOA,eACA,MACA,sDACA,yDAIA,eACA,UACA,aACAS,WAEA3B,EADA2+O,WAEAnuP,YAEAA,iBAIAA,gBAIAA,gDACAA,gEACA,IACA,UAAwBi3B,QAIxB,kBACA,IACAukQ,GADA08G,QAA2BD,IAE3B,aACA9mY,WACAhP,sBACA+1Y,UACA73Y,iBACAA,kBACkB,aAClB63Y,qBAEAA,QAIA,aAEA/mY,WACAA,UACAhP,YAGA+1Y,YAAqCA,SAGrC,UAGA,gBACA,UACAl4Y,aAhEAoC,iCACAA,0BAsEAyb,GADA0L,YACAA,YAEA,aACA,OACA2uX,MACA,aACA/mY,UACA+mY,YAGA,WAIA,QACApD,wBACAC,2BACAC,wBACAC,4BACAC,+BACAC,cAGA,sBACA,mDACA,+BAGA,sBACA,uBACAgD,gBAEA,OADAF,MAEAC,eACAzwX,iDACA+zQ,GAIA,OACA,yMACAtlR,gDACAC,MACAg6C,MAMA,yBACA,UACA,sBACAgoV,cACA,oBAGAF,KACA9nV,WAEAg+L,KACAh+L,qBACA,kDAGA+nV,KACA/nV,kBACA,iCACAgoV,yBACAF,MAMA,gBACA,4BACAA,0BAEAA,qBAGA,eACA,IACAC,GACA18G,GAFArtC,gBAIA,sBAA2C+pJ,MAAYA,KACvD/nV,WACAg+L,kBAEAA,kBAIA,oBACA,IACA8qJ,GADA51C,MAEA,SAAwB41C,MAAYA,KACpC51C,cACAl1G,mBACAA,OAEA,WAKA,mBACA,qBAIAA,0BACAh4O,OACAA,cAEAA,YAPA8hY,8BAUA,mBACA,SAEA,gBACA,iCAIA,IADA/hY,eACAgiY,oBACAD,cACA/hY,GACAslR,IAEAtlR,eACAgiY,MAGA,UAGA,QACAxD,gBACAD,YACAh6H,eACAk6H,kBACAC,0BACAC,kCAGA,gBACA,gCACAqD,0CAEA,eACA/pJ,IAGAnuP,4BACAyO,UACAwkB,iBACA,MACA,aACA,WACA,WACA,YAEAuoQ,YAEAA,KAEAzgQ,SAEA/6B,0BAGA,sBAEA,cACA,yBAGA,YACAq4B,aAEA,gBACA,sCAGA,QACAg9W,eACAC,cACA1uY,kBACA2uY,gBACA/7E,aACAppC,gBACA7vR,YACAi1Y,cACArkY,UACAw9R,aACA6gC,WACA4mE,cACAzwY,YACA8vY,eACAt1Y,WACAu1Y,eAGA,yBACA,8BACA,aACAyC,gBACAA,qBAGA,mBACA,gDACA,yCAGA,UAEA,mBACA,wBACArqW,4BAGA,gBACA,0BACAA,kCACA,EAGA,gBACA,IACAoqW,GACA18G,GAFArtC,MAIA,aACAh9O,WACA+mY,aAEA/pJ,eAKA,UAGA,UAEA,mBACA//M,UAGA,gBACA,IACA8pW,GADA/pJ,MAEA,aACAh9O,UACAg9O,SAA6B2hF,0BAG7B,+BACA,iCAEA3hF,GAGA,gBACA,qCAGA,gBACA,YAEA1mO,iBAEAA,eAIA,gBACA,WACAywX,KAEA,8BACAA,WAGAA,GAGA,mBACA,oBACA,iBACAtpW,eACAxsC,wBACApC,MAEA6V,aAKA,mBACA,oBACAoiY,uCACA1uW,IAGA,sBACA0uW,2BAEA,iBACAzpW,eACA,gBACA,gBAEA0pW,UACAD,qCACAC,GACAD,WACAr9N,oBAGAq9N,0CAOA,gBAEA,cADAA,YAEAj4Y,WAEAA,KAGA,mBACA,wBAEA,IACAw7R,GADA08G,MADAD,WAGAE,aACA,SAAwB38G,MAAoBA,KAC5Cx7R,2CAIAwP,OADAyoY,YAEA,oBAGA,YAGA,IAoBAl3W,GApBA5uB,QACAL,UACAM,WACAG,WACAmf,gBACAw2B,WACAp5B,eACAC,kBACAM,aACAJ,YACAC,kBACAiB,SACAC,cACAE,wBACAC,6BACAuQ,0BAGAgG,GACA,wJAKA,sBACA/F,aACAotN,GACA,gBACA,qBAIA,mBACA,gBAIAptN,8BAHA,mBAOA,gBACA,UACAk3W,GACA/7W,iBACAA,QACA,sCACA,yBACA,yBAMA,gBACA,2CAA8C,QAjC9C6E,MAoCA,UAEA,mBACA,OAEAo3W,GADA38G,MAWA,IATA,sBACAy8G,SAEA/3Y,QACAs7R,mBACAy9G,gBAGAd,aACAD,KAAoBA,MAAcA,KAClCt2W,cAIA,mBACAZ,4BACAm3W,gBACAhqJ,qBAIA,sBACA,oBACAvsN,uBAIA,IAcAogH,EAdAj4G,KACAhN,KACA4xG,KACAR,KACAE,KACAO,KACA/xG,KACAuQ,KACAyhG,KAEA,mBACA,oBAoBA,mBACA,wBACA,WAEA,iBACA,sBACA,OACArgG,OACA,GACA,GACA,UAxBAwzG,EADApsI,wBACAA,wBAEA,aAEA,OACA,SAAwBu4O,iBAAiBA,GACzC,iBACA,UAGA,UAmBA3lO,gCACA,wBAGAA,0BACA,gDAGAA,2BACA,2CAKAulB,gBAIAI,cAIA5M,WACAA,eACAA,yBACA,iCAEAA,0BACA,4BAGAP,8BACAmtN,kBAGAntN,wCACA,gDAEA,SACAmtN,UAEA3tP,wBAMA,OACA,8FACA,KAEA25I,GACA,6DACAj9G,mCACAk9G,MACAC,MAEA,mBACA,UAKAhoI,gBACArS,yBACAA,cACAA,oCACA,SACA,cACAi4Y,YAVA5lY,gBACArS,aACAA,wBAWA,mBACA,UAKAqS,qBACArS,8BACAA,kBACAk9B,mCACA+6W,YARA5lY,qBACArS,kBACAA,6BASA,sBACA,OACAm4Y,GACA90C,GACA41C,0BACA,sBAKA,IAHAj5Y,qBACAA,yBACAA,0BACAw7R,KAAwBA,QAAQA,GAChC6nE,eACArjW,4CACAqjW,GACA,IACAnlR,oBACAl+E,iEAIA,UACA,YAEA,KADAm4Y,sCACAA,SAGA,KADAA,qCACAA,QAGA,YAEA,KADAA,wCAKA,KADAA,qCAFAA,GAGA,MAGA,KADAA,uCAKA,KADAA,sCAFAA,GAGA,KAKA,sBACA,aAEA,0BACA,8BAYA,IATAn4Y,oBACAA,qBACAA,yBACAA,2BAMAw7R,KAAoBA,MAAQA,MAmB5B,GAjBA28G,eACAD,iCACAl4Y,qCACA,2CACA,KAEAA,sCACA,gDACA,OAGAk4Y,6BACA70C,GACA,oDACArjW,0DAIAk4Y,IACA,aACAl4Y,mCAEA,UACc,GACdk4Y,IACA,YACAl4Y,oCAEA,UACc,uCACd,WAOA,mBACA,OAEA,iBAEA,UAGA,uBACA,oBACAmuP,mBAIAjuP,EAFAiuP,oCAGA,UAKA,+CACA8pJ,iDACAA,GAGA,gBACA,iBACArwW,YACAxlC,wBACApC,MAEA6V,iBAIA,cACA,oCAGA,gBACA,+BACA1E,wBACAsmB,cAEAwgX,GACAj4Y,6BAEAA,yBAGAmR,8BACAnR,2BAEAA,iCACAA,6BACAA,wBAIA,gBACA,+BACAmR,wBACAsmB,cAEAwgX,GACAj4Y,wBAEAA,oBAGAmR,yBACAnR,sBAEAA,4BACAA,wBACAA,mBAIA,cACA,mBACA,2BAGA,IAGAm4Y,GACA90C,GAJAl1G,MACA+pJ,MACA18G,MAGA,SAAoB28G,MAAQA,KAE5B90C,eACAl1G,iCACA+pJ,4BACA18G,4BACAA,iCAOA,IAHArtC,YACA+pJ,YACA18G,YACA28G,KAAoBA,MAAQA,KAC5BhqJ,kBACA+pJ,kBAEA,SAAoBC,MAAQA,KAC5B38G,kBAGAx7R,wDACAA,yCACAA,mCACA,sBACA,KAEAA,wCACA,sBACA,KAiDA,gBACA,sBA5CAwoB,sBACA,mBACA,kCAGAA,2BACA,yBAGAA,0BACAA,2BACAA,+BAIAulB,eAIAI,aAIA5M,WACAA,eACAA,gBACAA,kBACAA,mBAEAP,0BACAA,0BACAmtN,OACA,+CAEAntN,wBACAmtN,iCAEAntN,uBACAmtN,yBAWA/rP,iCACA,oCAKA,yBAEA,cACA,uBAGA,kCAGA,OAEA,sBAEA82Y,sCACA5gU,4BACA4gU,oBAGAA,kCAGAA,GAGA,gBACA,UAEA,uBACAhB,0CAEA,UACA/pJ,qCACA71K,+BACA61K,uBAGAA,4CAGAA,GAIA,sBACA,IACAqtC,WAIA,QAFA,gCAEAA,KAIA,4BACA,IAGA29G,GACAC,GAFAF,eAFA,WACA77W,aAKA,aAEA+7W,MADAD,SACAD,GACUA,WACVC,QACAC,eAEAD,MACAC,OAGA,CACApzX,QACAqzX,cAIA,sBACA,IAEAh2C,GACA41C,GAHAz9G,uBACA28G,yCAIA,YAEA90C,SADA41C,eACA9qJ,OACUgqJ,wBACV90C,0BACA41C,iBAEAA,aACA51C,OAGA,CACAhmC,QACAr3S,SAIA,sBACA,oBACAmyX,kBACA,uBAoCA,gBACA,iDAhCA3vX,6BACAA,gCAIAulB,eACAA,kBAIAI,aACAA,gBAIA5M,WACAA,eACAA,WACAA,eAEA6C,GACA,oBACA,sBACA+pN,4BAYA,QACA0nJ,MACAC,OAGA,cACA,sBAGA,cACA,sBAKA,gBACA,oCACA,2CAGA,gBACA,yBACA,2CAgEA,mBACA,0BACAmC,GAGAt9W,UAKA,iBADAs9W,yBAEAA,GAGA,KARAhrY,gBAWA,mBACA,0BACAkhP,0BAEAxzN,kBAIA,mBACA,6CArFAnS,qBAEAA,yBACA,gDAGAA,0BACA,kDAGAA,2BACA,6CAGAA,sBACAA,yBAIAulB,cACAA,kBACAA,qBAGAI,aACAA,iBACAA,oBAIA5M,WACAA,WACAA,WACAA,wBACA,iCAEAA,yBACA,mCAEAA,0BACA,8BAGA6C,6CACA,kDAEA,SACA+pN,QAEA3tP,0BAIA4jC,uCACA+pN,gBAkCA,OACA,sEACAtpN,4CACA6C,qCACAC,MACA1B,MACAC,MAEA,mBACA,yBACAlmC,eACAA,eACAi4Y,8CACA,SACA,cAEA,cACAtzW,sBACAszW,GACAC,aACAA,GAGA,gBACA,cACAvzW,uCACAszW,GACAj4Y,8BACAA,oBAGA,gBACA,cACA2kC,qCACAszW,GACAj4Y,4BACAA,kBAGA,sBACA,OACAm4Y,GACA90C,GACA41C,0BACA,wBAKA,IAJAj5Y,uBACAA,4BACAA,0BAEAw7R,KAAwBA,OAAOA,GAC/B6nE,sBACArjW,4CACAqjW,GACA,IACAnlR,oBACAl+E,gDACAqjW,GACA,IACAnlR,oBACAl+E,iEAIA,UACA,aAEA,KADAm4Y,mCACAA,QACc,YAEd,KADAA,wCACAA,SAGA,KADAA,sCACAA,QAGA,aAEA,KADAA,qCAKA,KADAA,0CAKA,KADAA,sCAFAA,GAGA,KACc,YAEd,KADAA,0CAKA,KADAA,qCAKA,KADAA,sCAFAA,GAGA,MAGA,KADAA,wCAKA,KADAA,qCAKA,KADAA,wCAFAA,GAGA,KAKA,sBACA,aAEA,4BACA,8BAUA,IAPAn4Y,sBACAA,uBACAA,0BACAA,4BACAA,4BAGAw7R,KAAoBA,KAAOA,MA6B3B,GA1BA28G,sBACAD,mCACAl4Y,uCACA,iDACA,KAEAA,wCACA,sDACA,KAEAA,sCACA,oDACA,MAGAA,0BACAqjW,GACA,IACArjW,qBACA,KACAA,0BACA,KACAA,wBACAA,4DAIAk4Y,IACA,aACAl4Y,qCAEA,UACc,GACdk4Y,IACA,YACAl4Y,sCAEA,UACc,GACdk4Y,IACA,WACAl4Y,oCAEA,UACc,yCACd,WAOA,eACA,mBACA,yBAEA,wDACA,iBACAi4Y,4BACAj4Y,qBAEAmuP,GAIA,gBACA,mBACA,yBAEA,oDACA,uCAGA,gBACA,mBACA,yBAOA,aACA,gCACA,sCAEA,qBAIA,gBACA,iCACAh9O,0BACAhM,cAEA8yY,GACAj4Y,0BAEAA,sBAGAmR,2BACAnR,wBAEAA,8BACAA,0BACAA,qBAIA,gBACA,iCACAmR,0BACAhM,cAEA8yY,GACAj4Y,+BAEAA,2BAGAmR,gCACAnR,6BAEAA,mCACAA,+BACAA,0BAIA,gBACA,iCACAmR,0BACAhM,cAEA8yY,GACAj4Y,6BAEAA,yBAGAmR,8BACAnR,2BAEAA,iCACAA,6BACAA,wBAIA,cACA,mBACA,2BAGA,IAIAqjW,GACA41C,GACAC,GACAC,GACAC,GARAjrJ,MACA+pJ,MACA18G,MACA28G,MAMA,SAAoB90C,KAAOA,KAE3B41C,sBACAC,+BACAC,iCACAC,4BACAjrJ,YACA+pJ,YACA18G,YACA28G,YACAA,YACAA,YAIAhqJ,YACA+pJ,YACA18G,YACA28G,YAEAn4Y,0DACAA,6CACAA,2CAEAA,qCACA,sBACA,KAEAA,0CACA,sBACA,KAEAA,wCACA,sBACA,KAMA,cACA,2BAGA,cACA,wBAiCA,mBACAwoB,qBACA,kCACAxoB,aACAA,eACAmuP,MAiBA,mBACA,yBA2DA,gBAGA,4CAnHA3lO,0BACAA,sBACAA,sBAEAA,wBACA,+CAGAA,0BACA,MACA,GACApjB,eACA4Q,qBACAA,uBAIAwS,wBACA,6CAGAA,0BACA,MACA,GACAxoB,aACAgW,qBACAA,uBAcA1Q,WACAA,WAIAyoC,eAGAI,cAQA5M,WACAA,WACAA,WACAA,WACAA,WACAA,eACAA,eACAA,eAEAA,aACAA,cACAA,aACAA,cAEAP,kBACAA,iCACA,cACAmtN,sBAEAntN,gCACAk3W,6BACAA,kBAEAl3W,iCACAmtN,cACA3tP,mBAEAwgC,4BACA,mBACAmtN,2BACAA,yBACA3tP,mBAEAwgC,8BACA,mBACAm3W,eACAhqJ,2BACAA,2BACAA,yBACA3tP,mBAEAwgC,4BACA,mBACAmtN,2BACAA,2BAEAntN,8BACA,mBACAm3W,eACAhqJ,2BACAA,2BACAA,2BAWA,uBAKA30B,kBAEA,sBACA,aACA0+K,aAEAA,aAIA,IAuBA3vL,GAvBA2kB,IACAmsF,YACAm7E,kBACA7nP,eACAipP,WACAD,0BACAP,gBAEA5rP,UACAE,eAEA2zK,QAEAtzK,YACAI,eACAF,iBAEAoqP,kBAIAl1H,MACA/e,MAGA,mBACA,OACAo7B,iCACA,SAAoB08G,MAAUA,MAC9B,mBACA,UAGA,UAGA,gBACA,6CAMA,gBAOA,QALAA,GACA18G,GACA28G,GACA90C,GAJAl1G,KAMAA,eAKA,IAHA+pJ,IADA70C,0BACA7/V,OAEAg4R,IADAA,iBACAA,mBACA08G,OAEA,GADAC,gCAEA,UAEA,GACA38G,IACAA,eACA9Y,gBAGA,MAEAw1H,KAEA/pJ,KAEA,UAGA,gBAEA,qCAGA,gBACA,YAGA,QACA,YAEAsgF,IACAA,YACArrD,OAEA,IACAj1B,YAEgBgb,SAAe,KAAW8uI,IAC1Cn0H,MAIA,CAJA,MACc0X,IAGdrc,YAGA,cAMA,mBACA,OACA,aAEA+4H,GADAn4Y,MACAunP,OAEAnB,WAKA59B,MAEA,2CAEA1vL,aACA,wDAMA0vL,SAGA,mBACA,cACA,OACAizE,MAEA,GADArtC,WACA,aACA52O,EACA,uBACA,2OAKAikR,0BACc,sBACd,6BACAA,uCAGA,OADA08G,wBAIA,6BACA93I,wBAEAA,0BACAx1M,QACAyM,YAEA,KATAmkO,aASA,CAIA,+BAEAp7B,QACAA,4BACAja,wBAOA29B,OAEA3E,OAGA,qBACA,KAIA,mBACA,aACA,OACAqc,GACA28G,MAEA,wCAEAh5H,kCAIA,OADAqc,aAEA28G,eAEAhqJ,YACA,WAIAA,aAEA+pJ,eACAoB,oBACAn6H,WAIA2E,YAGA,eACA,2BACA3E,2BACA84H,WACAn0H,QAEkB,qBAClB3E,QAIA,cAIA,gBACA,OAMA,GAJA84H,mCACAA,sBAGAA,GACA,UAGA,WAGA,GADA9pJ,UAEA,UAEA8pJ,QAGA,cAGA,cACA,cAGA,gBACA,OACAC,SAEA,iCACA/pJ,GACA+pJ,oBACAn7W,GACAm7W,mCACAvpQ,GACAupQ,UACAA,WACA,cACA,YACA,YACA,YACA/pQ,GACA+pQ,oBACA7pQ,GACA6pQ,oBACAtpQ,GACAspQ,qBACAr7W,IACA,EAGAr8B,2BACA2tP,gBAEAA,OAEA3tP,gCACA2tP,OAEA3tP,kCACA2tP,OAGA3tP,mBAGAy3Y,GAKA,OACA,iJACA9/J,GACA,6IACAC,2BACAO,IACA,uCACA,iCACA,kCACA,6BAAiC,GACjC,2BACA,yBAA8B,GAC9B,4BACA,qBACA,6BACA,4BAAsC,GACtC,oBACA,mBAA6B,GAC7B,iBAA2B,IAG3BF,IACA,wCACA,uCACA,8BACA,sBACA,oCACA,mCACA,0BACA,oBACA,eAEAG,wBAEAF,GACA,0LACAG,IACA8qB,KACA41I,MACAC,SACAC,SACAC,SACAC,SACAC,SACAC,SACAC,SACAC,UAIA,gBACA,OACA7B,GAGA70C,GACA41C,GACAC,GACAC,GALA39G,SACA28G,4BAKAiB,aACAY,aAEA,OAEA,IADAx5Y,aACA2tP,WAAyCA,MAAOA,KAChD,0BACA8qJ,aACA51C,kBACA,MAGA,YAEA,YADA40C,gBAGA,UACA,eAA6C9pJ,MAAOA,KACpD,0BAEA+qJ,0BACA,MAGA,YAEA,YADAjB,eACA,CAGA,iBAEA,YADAA,gBAGA,SACA,oBAIA,YADAA,gBAFAkB,MAGA,CAGAlB,2BACAzzH,YAEAyzH,eAIA,YACAA,GACA9pJ,GACA+pJ,GACA18G,GACA28G,GACA90C,IAEA,QACA57H,OACAttF,eACAltI,gBACAA,gBACAA,iB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5jN,MAEV+3Y,mBAEA71Y,8BAIA,4BACA,UAEA,2BACAo5R,MACArtC,aAGA,mBACAqtC,MACA08G,YAIA/1Y,cACAkQ,wBAEA4lY,WAIA50C,uBACAA,wBACAA,SACAA,SACAA,SACAA,cAEAr7G,OAGA,yBACA,0BAveA5lP,4BACA,gSAGA,aACA61Y,+CAuLA71Y,wBAGAA,wBA2SA,SACA,qGACA,WACA,gCACA,oCACA61Y,gBAEAv2Y,MAIA20H,KACA,qGACA,WACA,gCACA,oCACA4hR,gBAEAv2Y,MAUA,mBACA,UAIA,GAHA,0BACAysP,WAEAA,UACA,YAGA,IADA+pJ,SACA18G,KAAoBA,eAAoBA,KACxCrtC,oCACA+pJ,WAGA,UAIA,cAGA,qBAFA,2BAEA,CAGA,cAGA,oBAFA,2BAEA,CAGA,kBACA,sCAGA76L,IACA,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAGA,gBACA,OAEAm+E,GADA08G,MAEAC,aACA,aACA,GACAhnY,YAEA,mBACA,6BAGA,SAIA,SAAoBqqR,QAAcA,GAClC,eACA,MACA,SAEAr2P,0CACA+yW,OAKA,SAGA,cACA,qBAGA,cACA,eAGA,gBACA,cACAA,cACA18G,iBACA28G,eACA90C,0BACA41C,aACAC,cACAC,gBACAC,gBACAY,qBAEAh6Y,qBAGAA,oBACAg6Y,GACA,OACA,OACA,aAGAh6Y,oBAIAA,4BAEAA,cAEAA,kBAEAA,eAGA,gBACA,wBAGA,gBACA,aACA,oBAEAynB,eAKA,sBACA,IAGAwxX,GAHAz9G,iCACA28G,iCACA90C,KAEA,SAAoB41C,MAASA,MAE7Bf,sBACAA,8BAEA70C,KAGA,aAKA,mBACA76U,qBACA,wBACAgzQ,OACA,cACA08G,OACA18G,QAGAA,GACAxlR,gBACAm4O,GACAn4O,gBAKA+pM,YACAA,YAIAx+K,WACAA,YACAP,iCACAk3W,cACAA,oBAQA,yBAEA,mBACA,IAEAC,GACA90C,GAHA60C,sBAKA,iBACA,KAOA,KAFA70C,OADA80C,KADAD,qBACA,0BACA,cAEA,qBAIA,mBACA,UACA,kBACAA,cACA18G,IACAluR,aACA2qY,aACA1kR,+BAEA2kR,kCACA91Y,sBACA81Y,IAEA3kR,eAIA,gBAGA,6CAqBA,sBACA,IACA4kR,GADA38G,mBAEA,mBACA,yBAEA,aACA,wBAEA,WADAy8G,cAEA,iBAEcxwX,uBACdwwX,QAEA,yBACAE,aAEAn4Y,gBACAA,eACA,UACAA,iBAEAw7R,WACArtC,2BACAz+C,GACA1vM,KACA+pR,cACA,GACA,GAEkB/pR,yBAClBA,0BACAoC,wBACApC,8BAGAA,KAEA,+BAIA,mBACA,iBACA,sBACAi4Y,QAGAj4Y,sBAEAA,OAEAA,iBAIA,gBACA,4BAGA,gBACA,qBACAA,qBACAA,eAEAi4Y,IACAj4Y,6BAGAA,KAGA,cACA,mBACAA,wCACU,0BACV,sBACA,SACAA,mBAEAA,qBAGA,YAGA,gBACA,yBAGAi4Y,4BAEAj4Y,2BAJA,CAOA,cACA,OACAA,oDACAA,mDAIA,cACA,0BACA,0BAGA,IACAmuP,GADA8pJ,MAGA,mBACAA,WAEApiF,IACA1nE,gCACAnuP,mBACAA,0CAEAA,sBAGAA,mBAGA,cACA,qCAGA,cACA,oCAGA,cACA,sDApJAoC,4BAwJA,+DAIAq0T,GACA,sKAEA,mBACA,IAGA0hF,GACA90C,GACA41C,GALAf,MAEA18G,QAKA,cACA08G,IACA38G,oBACApqR,WACAxL,cAEUzF,oBACVg4Y,MACA/pJ,GACA+pJ,WAEAA,sBAEU18G,iBACV28G,oBACAD,IACA/3Y,IACAgR,gBACA5Q,gBACAi5T,gBACA5yT,gBACA20R,4BAEUC,iBACV28G,oBACAD,IACA/3Y,eACAwF,eACA6pU,eACAr+T,eACA5Q,eACAi5T,eACA5yT,iBAEU,SAEVsxY,MAEA,sBACA,0BAEAe,MACA1lR,YACAA,YAGA2kR,OACA38G,mBACA28G,gBAGA70C,cAEA1jJ,0BACA0jJ,uBAGA1jJ,2BACA0jJ,yBAGAA,GAMA,mBAIA,2CAEA,0BAGA,mBACA,UAEA,iBACAl1G,+CACA8pJ,6CACAC,UAGAA,mDAEAA,GAGA,mBACA,OACA,mCAIA/pJ,aACA8pJ,gBACAC,eAEAA,cACAt4E,8BACAs4E,sBAGAA,IAZA,CAAqBt4E,yBAgBrB,mBACA,uBACA,OAEA,gCACAroT,EACA42O,GACA,YACAA,GACA,uDACAA,GACA,kGAGAk1G,MACA60C,MACA18G,OAIA9rF,QADAq6E,UACAkuH,IACAj4Y,MAIA,yBACA,wBACAqjW,gBACA41C,mBAEAhB,eAKAz8G,gBAEAy9G,IACArxW,4BAEAy7T,IACAz0T,kCAEAupW,IACAF,qCAEAz8G,IACAp5R,2BA5FA2nR,mBACAA,cA+FA,mBACAriF,qBAEA,gBACA,gDAIA,gBACA,OACAp6L,OACAnN,OACAusM,QACAxsM,OACAuiM,OACA9B,QALArzL,MAMA2qY,EACA,CAIA,gBACA,IA4BAE,GACA90C,GA7BAl1G,iBACA+pJ,MACA18G,IACA,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIAy9G,aAEA,SAAoBd,MAAiBA,MACrC90C,UACA60C,gBAGA,cAGA,eACA,aACAA,MACA,YACAA,GAGiB,IAFjBD,uBACA,uBACiBz0Y,QAEjB2qP,OAGA,gBACA,IAUAgqJ,GACA90C,GAXAl1G,iBACA+pJ,MACA18G,IACA,UACA,UACA,UACA,WACA,WACA,YAKA,SAAoB28G,aAAuBA,MAC3C90C,UACA60C,gBAGA,cAGA,mBACA,6BACA,aACA,WACAA,MACA,WACAA,KACA,UACAA,KACA,UACAA,KACA,UACAA,KACA,WACA,WAGA,mBAEA,uBACAtlG,aAGcg7B,kBACdqqE,gBACA9pJ,WACc7hD,mBACd6hD,gBACA8pJ,YAPAA,UACA9pJ,YAWA,gBACAqtC,8BACA28G,yCACA90C,GACAl1G,KACA3+O,UACA2+O,qBACAA,QAEA,mBACAk1G,gDAIA,cACA,mBAGA,mBACA,uBACA,0CAIA,iBADAl1G,0BAEAnuP,4BAEAk4Y,gDANA,CAUA,mBACA,uBACA,0CAIA,iBADA/pJ,0BAEAnuP,4BAEAA,8CANA,CAUA,yBACA,uBACAqjW,mBACA,uDAKA,OAFA7nE,aAEA,GACAx7R,qBACAA,wBACA,YACAA,sBACAA,oBATA,CAaA,mBACA,IACAw7R,GADA08G,mBAEA,0CAIA,iBADA/pJ,0BAEAnuP,+BAEAw7R,gBAEAx7R,wCACAw7R,sCATA,CAcA,mBACA,+CAGA,mBACA,gDAGA,sBACA,aAEA,mBACA,WAKA,KAFAA,gBAEAnvR,UACA,WAOA,OAJA8rY,yCAEAhqJ,WAEA,IACA,OACAk1G,kBACA,UACA,QACAA,eACA,UACA,UACAA,iBACA,UACA,SACAA,iBACA,UACA,SACAA,iBACA,UACA,OACAA,kBACA,UACA,MACAA,sBACA,UACA,OACAA,uBACA,cAEAA,WAGA,oBAGA,mBACA,uBAGA,iBAGA,IAIAA,GAJA60C,oDAEA18G,+BAIA,OAGA6nE,GAHAl1G,SAGAA,WAFA8pJ,gCAMA9pJ,QAFA8pJ,8BAEAz8G,MAIA08G,UAMA,cACA,4EAGA,gBACA,mBACA,YAEA,eACAA,8BACA,mCACA5nV,GACA4nV,GACA/pJ,GACA,iCACA,gCAGA3+O,8BAEA2+O,GACAnuP,4BAEA,iDACAooC,cACAlM,wBAGAo0B,GACA4nV,GACA/pJ,gEAUA,cACA,mBACA,0CAEA,IAEA+pJ,GACA18G,GACA28G,GACA90C,GALA40C,YACA9pJ,MAKA,wBACA8pJ,wDACA9pJ,QAEA+pJ,gBACA18G,qDACA28G,2BACA90C,aAEArjW,yBAGA,gBACAi4Y,KACAA,gBACA71Y,mBACAA,iBAEA,mBACA,wCAGA,mBACA,OACApC,iBACAsN,uCAEAy8Q,IAAoCl5J,kBACpCq4B,sBACAgxP,cAEAl6Y,gCAIA,gBACA,0BAGA,mBACA,OACAA,iBACAsN,uCAEAy8Q,IAAoCtgP,kBACpCy/G,sBACAgxP,cAEAl6Y,gCAIA,gBACA,wBAMA,gBACA,OAEA,mBACAA,oBAGA,OADAmuP,aAEAnuP,iBAEAA,MA1HAoC,uCACAA,4CA6HA,SACA,kJACA,aACA,mBACApC,kBAEAA,kBAKA,cACA,oBAGA,WACA+gM,SACA2D,SACAqxH,cAGA,mBACA,oBAGA,sBAEA,qBAEA,0BAEA,6BAIA,sBAEA,qBAEAtwT,0BAEAA,mBAIA,gBACA,UAEA,aADAwyY,YACA,oCACA,YAKA,OAFAC,qBAEAD,QACA,OACA9pJ,uBACA,UACA,UACAA,MACAnuP,YACAA,4BACA,GAEA,UACA,QACAmuP,kCACA,UACA,OACAA,MACAnuP,YACAA,aACAA,4BAEA,UACA,UACAmuP,MACAnuP,YACAA,aACAA,mCAEA,UACA,UACA,OACAmuP,4CACA,UACA,OACAA,qBACAA,OACAA,uCACAzpD,IAEA,UACA,SACAypD,qBACAA,cACA,UACA,SACAA,qBACAA,cAIA,2BACA/rP,wBACApC,KAGA,gBACA,UAEA,aADAi4Y,YACA,oCACA,YAKA,OAFAC,qBAEAD,QACA,OACA9pJ,2BACA,UACA,UACAA,GACA+pJ,GACAl4Y,YACAA,8BACA,GACA,EACA,UACA,QACAmuP,sCACA,UACA,OACAA,GACA+pJ,GACAl4Y,YACAA,aACAA,8BACA,EACA,UACA,UACAmuP,GACA+pJ,GACAl4Y,YACAA,aACAA,qCACA,EACA,UACA,UACA,OACAmuP,gDACA,UACA,OACAA,qBACAA,IACAzpD,GACAgkG,GACAv6C,uCACAzpD,IAEA,EACA,UACA,SACAypD,qBACAA,mBACA,UACA,SACAA,qBACAA,mBAIA,2BACA/rP,wBACApC,KAGA,cACA,+CAGA,cACA,sCAGA,cACA,gCAGA,cACA,YACA,OACAi4Y,UACAA,WACAA,UACAA,UACAA,YACAA,YACAA,kBAIA,cACA,YACA,OACApgX,gBACA2xH,kBACApgD,eACAq2N,iBACAC,qBACAC,qBACAC,gCAIA,cAEA,8CAGA,cACA,eAGA,cACA,YAAwBp/T,SAGxB,cACA,wBAGA,cACA,OACAq9F,cACA/2F,eACAoiJ,oBACAixP,kBACAvuP,qBAqDA,mBACA,OACA4vI,GACA28G,GACA90C,8BACA,sBAAqC60C,QAAOA,GAS5C,OAPA,iBADA70C,eAGA80C,kCACA90C,kCAIAA,kBACA,YACAA,iBACA,UACA,SAEA80C,4CACA90C,0BAIA,UAGA,sBACA,OACA80C,GAEAc,GACAC,GACA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,YACAA,UACAA,gBACAA,cACAA,eACAA,gBACAA,aACAA,oBACAA,qBACAA,cACAA,WACAA,aACAA,iBACAA,UACAA,UACAA,mBACAA,UACAA,cACAA,eACAA,cACAA,eACAA,aACAA,kBACAA,cACA,+CACAA,wDACA,oCAGAA,aACAA,eACAA,WACAA,cACAA,mBACAA,cACAA,gBACAA,cACAA,cACAA,WACAA,iBACAA,eACAA,kBACAA,0BACAA,YACAA,kBACAA,oBACAA,0BACAA,kBACAA,sBACAA,qBACAA,4BACAA,WACAA,iBACAA,cACAA,iBACAA,gBACAA,oBACAA,wBACAA,wBACAA,kCACAA,gBACAA,UACAA,YACAA,gBACAA,2BACAA,YACAA,cACAA,kBACAA,YACAA,YACAA,eACAA,eACAA,WACA,kDACAy8I,IAEAz8I,YACA,mDACA5T,IAEA4T,WACA,iDACAr2H,IAEAq2H,UACA,2GACA/jC,IAEA+jC,kBACA,0GACA37B,IAeA,oBAuCA,yBACA,YACAmvO,kBACA,qBAGA,sBAQA,GAPAnjW,QACAiuP,MACA8pJ,WAGAA,UAEA,SACA,4BAGA,OACAE,MACA,SAAoB38G,MAAQA,KAC5B28G,4BAEA,UAWA,yBACA,sBACAj4Y,QACAg4Y,MACA/pJ,WAGAA,YAGA+pJ,GADA/pJ,MAEA8pJ,MAEA/3Y,QACAg4Y,MACA/pJ,WAGAA,WAGA,IAEA8qJ,GAFAd,QACA90C,qBAEA61C,MAEA,YACA,iCAGA,SAAoBD,KAAOA,KAC3BC,iCAEA,UAGA,mBACA,0BAGA,mBACA,+BAGA,sBACA,+BAGA,sBACA,oCAGA,sBACA,kCA5HAjpP,eACAA,qBACAA,kBACAA,cACAA,eACAA,iBACAA,mBACAA,iBACAA,SACAA,WACAA,gBACAA,sBACAA,oBACAA,oBACAA,sBAEAA,aACAA,kBACAA,kBACAA,kBACAA,uBACAA,WACAA,qBACAA,qBAEAA,eACAA,kBACAA,oBACAA,oBAEAA,oBACAA,yBACAA,uBAEAA,WACAA,eA4FA6zH,SACAm5C,MACA,CACAu6E,mBACAE,UACA9jG,SACAhpP,mBACA0xQ,YACAm7E,WAEA,CACAD,mBACAE,WACA9jG,SACAhpP,qBACA0xQ,YACAm7E,YAGA9B,8CACAC,qBACA,aAWA,WATA,kBACA,KACA,OACA,KACA,OACA,KACA,OACA,KACA,KACA,IAMAxzY,SACA,wDACA0hR,IAEA1hR,aACA,gEACAklP,IAGA,gBAEA,cACA,kBAEA,iDACAtnP,0BACAA,8BAEAi4Y,oCACAA,0BACAA,0BACAA,sBACAA,wBACAA,sBAEAj4Y,KAGA,yBACA,iBAEA,6CACAi4Y,sBACAA,0BAEAA,aAIA,mBACA,wBAIA,mBACA,yBAGA,gBACA,YACAxwX,eAEAA,cAIA,cACA,IAIA0wX,GACA90C,GACA41C,GACAC,GACAC,GARAlB,sBACA9pJ,cACA+pJ,gBACA18G,cASA,OAEAy8G,qBACAA,sBAGAA,wBACA9pJ,KACA+pJ,MAKA18G,uBAEA28G,cACA38G,iBAEA6nE,aACA7nE,iBAEAy9G,aACAz9G,eAEArtC,cAIA+pJ,IADAiB,cAEAhrJ,eAGA+qJ,aACAhB,OAEA18G,WACAA,aACAA,YAEAx7R,KAGA,gBAGA,sBAGA,gBAEA,sBAGA,gBACA,mBACA,WAEA,OACAk4Y,GACA18G,sBAIA,cAFAy8G,YAEA,4BAGA,OAFA9pJ,uBACA+pJ,uBACAD,QACA,QACA,cACA,UACA,gBACA,OACA,kBAKA,OADA9pJ,2CACA8pJ,QACA,OACA,0BACA,MACA,uBACA,OACA,yBACA,SACA,0BACA,SACA,2BAEA,cACA,uCAEA,qCAMA,cACA,sBAIAj4Y,mBACA,iBACAA,uBACA,4BANAupC,IAUA,gBACA,kBACA,oBAIA,eACAkyN,UACAC,UACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WAEA,cACA,gBAGA,gBACA,iBACAh8P,kCAGA,gBACA,kBACA,0CAIA,0BACAugQ,iBACAC,iBACAC,eACAC,cACA92D,gBACA+2D,eAEA,cACA,yBAGA,kBACAhyD,IACA4mM,MACA3uY,KACA4yT,KACAj5T,KACA4Q,KACAq+T,OACA7pU,MAIA,4BACA,yCAGA,yBACA,oBACA09V,kBACA41C,kBACAC,kBACAC,kBACAC,kBACAY,kBACAvmD,kBACA4mD,GACAh3C,qBACAA,oBACA41C,cACAA,oBACAC,cACAA,oBACAC,cACAA,mBAEA,oBACAkB,GACAA,IACAL,cACAA,qBAEAK,OACAjB,cACAA,oBACA3lD,yBAEA,MACA4mD,YACAA,SACAC,kBAIA,gBACA,mBACAxsJ,GAEA,wBACAA,OACA,EAEA,CAIA,mBACA,8BAGA,OACAn/C,QAEAA,UACA,WACAA,aAEA,IAGA,mBACA,mBACA,uCAGA,IAEAwpM,GACA90C,GAHA60C,MACA18G,MAIA,4BACArtC,MACA8pJ,OAEA,uBACAC,OAEA,sBACA18G,oBAAiC7sF,OACjC,0BACA6sF,eAKA6nE,kBADA80C,sBAGAD,KACA70C,4BAGA80C,kBAGA,gBAEA,gBACA,yBAGA,cAQA,mBACA,uCAGA,IAGA38G,GACA28G,GACA90C,GACA41C,GAEAE,GACAC,GACAY,GACAvmD,GAXAwkD,8BACA9pJ,kBACA+pJ,oBAKAgB,oBAMA,WAOA19G,aACA28G,aACAF,OACAz8G,OAGA6nE,aACA60C,OAGAe,4CAEAE,eACAC,oCACAY,kCACAvmD,0CAGA0lD,GACA,KACA91C,kBACA60C,kBACA/pJ,kBACAgqJ,oBACAA,kBACA38G,kBACAy8G,kBA9BA,MAkCA;;AA2DA,OAzDAsC,cACAA,UACAA,UACAA,eACAA,SACAA,oBACAA,eACAA,eACAA,cACAA,aACAA,cACAA,eACAA,iBACAA,cACAA,cACAA,cACAA,YACAA,UACAA,mBACAA,cACAA,cACAA,YACAA,WACAA,YACAA,aACAA,YACAA,eACAA,kBACAA,eACAA,aACAA,aACAA,iBAEAA,iBACA,sFACAC,IAEAD,WAIA/xX,mBACAA,sBAIA+Y,WACAA,WACAP,0BACAk3W,qCAEAl3W,0BACAk3W,yBAKA91Y,mBAEAwE,MAEAxE,QACAA,SACAA,SACAA,SACAA,QACAA,UACAA,YACAA,WACAA,YACAA,YACAA,cACAA,aACAA,cACAA,eACAA,gBACAA,gBACAA,iBACAA,iBACAA,kBACAA,kBACAA,aACAA,mBACA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AA,mDAEAA,yDACAA,yBAEAA,wCAMAwqF,4BAIA,aAEA,sCACAxqF,wBAEAq4B,qDACAwnD,UACA7/E,wCAMAwqF,2BAIA,aACAxqF,wBACAA,wBACAA,yBACAA,sCACA+8Y,mBACA/4X,kBACAstE,yBAEAtxF,sCACA+8Y,oBACA/4X,kBACAstE,0BAOA9G,yBAIA,aACAxqF,wBACAA,yBACAA,yBACAA,sCACA+8Y,aACA/4X,kBACAstE,0BAOA9G,2BAIA,aACAxqF,wBACAA,yBACAA,sCACA+8Y,eACA/4X,kBACAstE,0BAOA9G,2BAIA,aACAxqF,wBACAA,yBACAA,sCACA+8Y,eACA/4X,kBACAstE,0BAOA9G,wBAIA,aACA,aACAxqF,6BAEA,CACA8/E,kBACAA,WAGA,wCACA,iCACAD,iDAGA,mBACAxnD,KACAynD,cACAA,uBACA32D,UACA8J,IAIA,aAAmC,eACnC8H,UAEA,iCACA+kD,8CAEA9/E,mCAEAA,qCACA69F,YACA4/J,SACAz5O,SACAstE,2BAQA9G,wBAIA,aAEA,0CAEAnyD,sCACAA,KACAwnD,gBACA7/E,sCACAA,yBACAA,0BAEAA,qCACA69F,YACA4/J,SACAz5O,WACAstE,0BAOA9G,yBAIA,aAEA,0CAEAnyD,sCACAA,KACAwnD,gBACA7/E,sCACAA,yBACAA,0BAEAA,qCACA69F,aACA4/J,SACAz5O,WACAstE,0BAOA9G,0BAIA,aAEA,0CAEAnyD,sCACAA,KACAwnD,gBACA7/E,sCACAA,yBACAA,0BAEAA,qCACA69F,cACA4/J,SACAz5O,WACAstE,0BAOA9G,wBAIA,aAEA,0CACA3K,KACA7/E,uBACAA,yBACAA,0BAEAA,qCACA69F,YACA4/J,SACAz5O,kBACAstE,0BAOA9G,0BAIA,aAEA,0CACA3K,KACA7/E,uBACAA,0BAEAA,qCACA69F,cACA4/J,SACAz5O,kBACAstE,0BAOA9G,0BAIA,aAEA,0CACA3K,KACA7/E,uBACAA,0BAEAA,qCACA69F,cACA4/J,SACAz5O,kBACAstE,0BAOA9G,8BAIA,aAEA,yCAEAnyD,sCACAA,KACAwnD,gBACA7/E,qCACAA,yBACAA,0BAEAA,qCACA69F,kBACA4/J,SACAz5O,WACAstE,0BAOA9G,+BAIA,aAEA,yCAEAnyD,sCACAA,KACAwnD,gBACA7/E,qCACAA,yBACAA,0BAEAA,qCACA69F,mBACA4/J,SACAz5O,WACAstE,0BAOA9G,yBAIA,cAEA7vD,oCAEA36B,iBACAA,kCAEAA,qCACA69F,aACA4/J,SACAz5O,kBACAstE,0BAOA9G,4BAIA,cAEA7vD,oCAEA36B,iBACAA,kCAEAA,qCACA69F,gBACA4/J,SACAz5O,kBACAstE,0BAOA9G,2BAIA,cAEA7vD,oCAEA36B,iBACAA,kCAEAA,qCACA69F,eACA4/J,SACAz5O,kBACAstE,0BAOA9G,0BAIA,cAEA7vD,oCAEA36B,iBACAA,kCAEAA,qCACA69F,cACA4/J,SACAz5O,kBACAstE,0BAQA9G,8BAKA,gBACA1K,qBACA9/E,2BAIA,aAA2B,iBAA2BwD,SACtDxD,mDACAA,kEAQAwqF,iCAKA,gBACA1K,qBACA9/E,+CAIA,aAA2B,iBAC3BA,iEAQAwqF,6BAMA,WACA,YACAxqF,YACAA,aACAA,eACA6N,WAGA,WACAiyE,aACAA,uBACAA,0BACa,GACb9/E,wCACAA,cACAymC,8DACAA,gEAEA8U,wDAOAivC,8BAIA,WACAxqF,YACAA,aACAA,wCACAA,cACAymC,iEACAA,mEAEA8U,yDACAv7C,sBACAA,6BAWAwqF,+BAOA,mBAIA,QAHA,SAA+B1K,YAC/B,SAAiCD,YACjC,SAAoCxnD,OACpCr4B,mBACA,uBACAA,eAGA,OAEA46B,GAEA4U,UAEA/9B,oBAkBA,GAjBAmpB,qCACA56B,oBAIAq4B,IAKAmX,iEACAxvC,wCALAwvC,sCACAxvC,qEAMAwvC,oCACAxvC,0BAZAwvC,oEAcA3U,kGACAglD,IACA7/E,8GACAA,8DACAA,qBACAA,uGAGA,sCACAA,2CACAA,8BAaA,GAXA,8BACAA,8CACAA,gBACAA,0CAIAA,sDACAA,wDACAA,8FACAA,oEACAA,sBACAA,0BAGA,iEACA,gCAEA,uCACAA,oGAGAA,uFAGAA,gLACA8/E,4BACA9/E,oB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GA,0BCGAyuU,yBACA,MACAtsU,EACAgP,EACArR,EACAC,EACAG,EAEAC,EAEAC,EACAC,EACAC,EAEAC,EACAC,EACAgB,EACAC,EACAC,EACAigB,EACAle,EACAkC,EACA2J,EAEAhC,EACA6C,EACAV,EACAiB,EAGA6G,IAGAlF,UAEAlQ,YACAoV,UACApG,mBACArR,aACA0P,WACAzP,oBACAG,sBAEAC,SAEAC,UACAC,UACAC,UACAC,WACAC,SACAgB,SACAC,YACAC,aACAigB,mBACAle,oBAMA9C,EACA,GACAa,OACAhB,aACAgB,KACAhB,aACAgB,MAGAmE,SAEAvD,EACA,OAAW,CAKX,GAHA5B,KADA8O,SAEA9N,KAEA,KADA8N,cAKAE,yBAEA,MAqKA,IAGA,WACA7J,4BACA,cAEA,MAEA0M,OAtSA,GAuSA,QAGAjQ,oCACAiQ,OA5SA,GA6SA,QAnLA/E,WACAgC,SAEA9N,MACAhB,aACAgB,MAEA8L,cACA9M,OACAgB,MAGAA,OACAhB,aACAgB,KACAhB,aACAgB,MAEAmE,SAEA0M,EACA,OAAe,CAMf,GAJA7R,KADA8O,SAEA9N,OAGA,IAFA8N,eA4HA,IAKA,WACA3J,4BACA,WAGAvD,8BACAiQ,OA1RA,GA2RA,QAzHA,GAZAlC,UAEA3O,GADA8N,SAEA9O,cACAgB,MACA8N,IACA9O,aACAgB,QAGA2O,eAEAhQ,GACAiC,sCACAiQ,OApKA,GAqKA,QAOA,GAJA7R,OACAgB,KAGA2O,GADAb,OACA,CAEA,IADAA,OACAjP,GACAgS,QACAjQ,sCACAiQ,OAjLA,GAkLA,QA2BA,GAFA5C,IACAiB,IACA,OAEA,GADAjB,OACAH,KACAhC,KACA,GACAkC,sBACoBF,GACpBG,MACAiB,aAGApQ,KAGA,GAFAmP,UACAH,MACAhC,GACAA,KACA,GACAkC,sBACoBF,GAEpB,GADAG,IACAnP,KAEAgN,GADAgC,IAEA,GACAE,sBACsBF,GACtBG,MACAiB,cAKAjB,OACAH,KACAhC,KACA,GACAkC,sBACoBF,GACpBG,MACAiB,IAGA,UACAlB,cACAA,cACAA,cACAlC,KAEAA,IACAkC,cAC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SACAxQ,SACAuQ,SACA1J,IAEAxwB,gBACA,wBACAkgC,MACA/F,OAEA,OAAkB9qB,GAAiBsa,2DACnC,mBACAwQ,YACAxQ,UACAuQ,UACA1J,IAEA0nS,eACA,gBACA/9R,SACAxQ,SACAuQ,SACe5qB,GAAoB+lI,oBAEnC+F,eACA,OAAkB9rI,GAAoB+lI,qCACtC,mBACAl7G,YACAxQ,UACAuQ,UACA1J,IAEArI,eACA,sBACA+X,MACA/F,QAGA+F,cACA/F,eAEA,OAAkB7qB,GAAoB4wB,mBACtC,qBACA/F,cACAxQ,SACAuQ,SACA1J,IAEAh1B,eACA,sBACA0kC,MACA/F,QAGA+F,cACA/F,eAEA,OAAkB7qB,GAAoB4wB,yBACtC,iBACAhG,UACA1J,IAEA3zB,eACA,oBACA,gBACAq9B,SACA1J,IAEA3nB,eACAwsI,UACAA,UACA,oBACA,gBACAn7G,SACA1J,IAEAqjP,eACA,gBACA35O,SACAgG,WACete,GAAM+H,QAErBzwB,eACA,iBACAghC,UACAgG,WACete,GAAM+H,QAErBhZ,eACA,gBACAuvB,WACete,GAAM+H,QAErBhwB,eACA,iBACAumC,WACete,GAAM+H,QAErBkrO,eACA,gBACA30N,WACete,GAAM+H,QAErBlwB,eACA,iBACAymC,WACete,GAAM+H,QAErBjuB,aACA,OAAkB6T,KAClB,aACA2qB,MACAm7G,IAEAy/G,aACA,OAAkBvlP,KAClB,aACA2qB,MACAm7G,KAGA73G,sBAIA,QAHAlN,+DAEAoG,MACAe,QAFAgM,+BAEoChM,aAAoBA,MACxD,cACA+E,uBACA9F,QAAkBrnB,cAAuB,OAEzC,WAGAo0B,wCACA,wBACAhN,gBACAC,gBACAnG,gBACAD,gBAGA,QAFA4P,gCAEAA,YADA/F,gCACAA,WACA1C,OAEAlH,IADAkH,iBAEAnH,QAEA,aACAwM,SACAN,UACAQ,SACAC,eACAC,eACAI,eACAC,eAEAQ,OADAT,gCACA,IACAS,OACAA,MAEA,qBACAjN,UACAkN,QAEA,6BACA8C,yBACAC,2BAEAzB,GADAze,wBACAkgB,GACAzB,aACAA,cAEAA,eACAA,e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ACtB,qBAEA8rH,GA5vBA,GA8vBA,SAAeD,iQChxBfr6H,EACAw9P,yBCCAv4Q,eAEA,mBACA,IACAq8Q,4CACA,6BACA,CAEA,OAPI,QAAS7iB,OAObA,GARA,CASClgB,OAED7tO,eAEA,gBACA,IACA0uR,4DACA,6BACA,CAEA,OAPI,QAAS3gC,OAObA,GARA,CASClgB,OAED/9O,eAEA,mBACA,IAOAihR,4BANAxtQ,kBACA2yM,oBAEA,OADAk7D,OACA,GAEA,WACA1oP,uCACA2nP,yBACA,6BACA,CAEA,OAdI,QAAStiB,OAcbA,GAfA,CAgBClgB,OAED/uO,eAEA,gBACA,IACA4vR,uCACA,6BACA,CAEA,OAPI,QAAS3gC,OAObA,GARA,CASClgB,OAEDpgP,eAEA,mBACA,IACAmjR,gDACA,6BACA,CAEA,OAPI,QAAS7iB,OAObA,GARA,CASClgB,OAaDhgP,GAXA,aAEA,gBACA,IACA6gS,kCACA,6BACA,EALI,QAAS3gC,MAOb,CARA,CASClgB,OAED,aAEA,mBACA,IACA+iC,mCACA16D,6DACA,6BACA,CAEA,OARI,QAAS63C,OAQbA,GATA,CAUClgB,QAED//O,eAEA,mBACA,IACA8iR,yCACA16D,wDACA,6BACA,CAEA,OARI,QAAS63C,OAQbA,GATA,CAUClgB,OAED9/O,eAEA,sBACA,IACAgjR,6DACA,gCACA,CAEA,OAPI,QAAShjB,OAObA,GARA,CASCjgQ,GAEDE,eAEA,mBACA,IACA4iR,sEACA,gCACA,CAEA,OAPI,QAAS7iB,OAObA,GARA,CASCjgQ,GAEDG,eAEA,gBAGA,uBADA,uCACAN,IACA,CAEA,OAPI,QAASogQ,OAObA,GARA,CASCjgQ,GAEDI,eAEA,gBAGA,uBADA,+BACAP,IACA,CAEA,OAPI,QAASogQ,OAObA,GARA,CASCjgQ,GAEDK,eAEA,gBAGA,uBADA,qEACAR,IACA,CAEA,OAPI,QAASogQ,OAObA,GARA,CASCjgQ,GAEDqB,eAEA,gBAGA,uBADA,mBACAxB,IACA,CAEA,OAPI,QAASogQ,OAObA,GARA,CASCjgQ,GAEDsB,eAEA,gBAGA,uBADA,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,MAAWA,MACtD,cACAa,YACA39B,UACAzd,UACA4e,iBAEA,GADAy5C,qCACA,kBACA,UACAllG,IACA9xJ,WACAA,YAEAw+K,iBACAm6D,MACAqe,OAGA,cG2KmB//P,CAAUhhC,kDAC7B0iR,sBACA,wBAEAvD,kCACA,oBAEAA,sCAIA,QAHA/e,4BACA73C,MACAm6D,MACAqe,kBAA+CA,MAAWA,MAC1D,cACAtd,YACAK,oBACA39B,oBACA,OACA59B,YAEAu7D,WACAv7D,YACAA,YACAm6D,OAEAA,oCAEA,mBACAn6D,IAEA42D,GAtNA,GAwNA,SAAe/xO,GC1Nf,oBAEA,mBACA,iCACA,wCACA2zP,aACAA,cAA2B3+R,iBAAiB,WAAe,mBAC3D2+R,sBACAA,GAEA,OATI,QAAS3gC,OASbA,uBACA,OAAe,QAASpgQ,8BAExB,OAAmB,QAAWA,kBAC9B,sBACA,+BACA,EACA,MACA,UADAijR,UACAP,WAKAtiB,qCAGA,QAFAsiB,+BACAqe,wBACA9d,kBAA+CA,MAAWA,MAC1D,cACAa,gCACA9jR,qBACAA,8BACA+gS,QAA4B,QAAsBjd,MAElD,oCACepmP,MAAeqjQ,cAE9B3gC,8BACA,wBAEAA,kCACA,yCAEAA,sCACA,YACA,mCACA,UACA73C,UACA0/L,eACAjgH,uBAA+C,qBAC/CA,oBAAyC,WAAe,QAAgB/kB,OACxE+kB,wBAA8C,mBAG9C5nC,GArDA,CAsDEvxH,IACF,QAAeC,GC9Df,IAOAoL,GAPA0gC,IACA,kBACA,kBACA,kBACA,kBACA,oBAGA,aACAukG,2BACAA,yBACAA,2BAHA,CAICjlI,aACD,QACA,gBACA,eACA,iBAOAh9G,cACA,4BACAl9B,kBACAA,yBACAA,cACAA,eACAA,mBAEA,2BACA,OAAe,QAASA,8BACxB,4BACA,OAAmB,QAAWA,kBAG9B,GAFAuoN,2BAEA,QADAA,gBAEA,yCAEA,IADAw4E,KACAA,mBACA9d,oBACA8d,OACAnmH,kBAEAmmH,qBAEA,oBACA,gCASA,GARAA,MACA3d,qBACAK,oBACAsd,MACAjd,oBACAid,MACA56C,uBACAzd,WAEA,yCACA,MACA,sBADAA,IACA,MAIAy2C,8CACA,OAAe,QAASn/Q,8BACxB,OACA,OAAmB,QAAWA,kBAU9B,OATA0iR,6BACA95Q,eACAgjT,gBACAE,uCACA/oN,iBACA8oN,mBACAG,2BACAD,qBAEAxjG,IACA63C,iBACA,QAGA,yBAMA+e,GAjEA,GAmEA,SAAejiP,GC3Ff,kBACA,gBACA,YACAl9B,uBACA,4CACA0zS,qBACA,uCACA73G,IAEA77L,2CACA,IACAo4O,GADAD,aAEAQ,sBACApwB,oBACA6vB,sBACAD,KACAQ,OAEA,UACAC,aACAF,UACAG,KACApmH,KACA,UACA,aACA,wBACAg1G,YACAgR,YACAA,YACAA,YACAA,yBACAhmH,WAIA,aACAmxF,oBACA60B,kBACAA,kBACAA,kBACAA,yBACAhmH,QAIAzyH,6BASA,QARA67L,GAAuBvsL,YAAYi5M,YACnCmrF,uBACAv7D,eACAC,gCACAO,aACAF,KACAG,KACAF,KACAE,QACA,sBAEA,EACA,aAAwCC,MAAoBA,KAC5DT,kBAEA,WAGA,EACA,SAAwCS,MAAoBA,MAC5D,gBACAj1B,qBACAw0B,qBAEA,WAGA,EACA,SAAwCS,MAAoBA,MAC5DpmH,gBAEAG,cADA60G,kBACAisE,SACAz8K,cACAmhH,qBAEA,WAGA,EACA,SAAwCS,MAAoBA,MAC5DpmH,gBACAg1G,iBACA7jB,qBACAhxF,yBACAqE,cACAmhH,wCAEA,WAGA,EACA,SAAwCS,MAAoBA,MAC5DpmH,YACAg1G,iBACA7jB,qBACA3sF,UAHA,IAIA2oE,UACA,UACA3oE,YAEA,CACA,IAGAlE,cACA00G,SACAoR,MACA5hH,OANAwhH,SACAhR,MACAoR,OAKAj5C,cAEA,gBACAzsE,mBACAH,mBACAmgJ,mBACAqR,UAEAA,GADArxJ,eACAywF,GAEA5wF,OACAiE,GAGA2oE,GAEAw4C,qBAEA,cAGA,uDAGAK,KAEA,WAEAz4O,uBAEA,QADA0zS,MACAv7D,KAA4BA,MAAcA,KAC1Cu7D,yBAEA,WAEA1zS,2BAKA,OAJAuoN,sBACAA,sBACAA,qBACAA,iBACA,EAEAvoN,8BAMA,QALA67L,cACA63G,+BACAv7D,uCACAC,KACAO,KACAF,KAA4BA,aAAoBA,MAChDN,gBACAA,kBACAA,kBACA,gBACAA,4BAEA,WAEAn4O,aACAA,WACAA,gBACA,UAGA,IAFAA,qBACAA,eACA,CAGA,QAFA+gS,qBACA9d,MACAG,KAA4BA,KAAOA,KACnCH,+CAEA,eACA,OAEAjjR,6BACAA,8BACAA,gCACAA,qCACAA,6CACAA,wCACAA,2CACA,UAEA,OACAA,2BACA,UAEA,OACA,SAAoCojR,MAAeA,KACnDV,+BAEA,UAEA,OAIA,OADA1iR,qBACAA,qBACA,EAOA,GAFAA,wCACA,qCACA,EACA,SAAgDojR,OAASA,KACzDpjR,oCAGA,WAEA,EAGAA,6CACA,WAEA,EAEAA,oCAIA,UAEA,OACA,qBACAmmP,iBACAzd,oDACA1oO,+DACA,UAEA,OASAA,YAPA,CACA,IACA,IACA,IACA,IACA,KAEAA,gBACAA,oDACA,8CAOA,OANAA,iCACAA,iBACA,eACA,eACqBA,kBACrBA,iCACA,QAIAA,aAIA,GADAA,YACAA,0BACA,mDAIA,4BAAiC,mBACjCm/Q,GArRA,GAuRA,SAAe9kI,GChRf,kBACA,gBACAr6I,cACAA,kCACAA,yBACAA,sCACAA,8BACAA,4BACAA,sCAQA,2BACA,OAAe,QAASA,8BAExB,OAAmB,QAAWA,kBAC9B,sBACA,WAAiDs6I,QAAQ8lH,UACzD,EACA,MACA,UADAsiB,YACA,MAKAvD,8CACA,OAAe,QAASn/Q,8BACxB,yBACA,OAAmB,QAAWA,kBAC9B,sBACA,EACA,+BACAA,gCACA,mCADA,WAEA,EACA,iBACA,WACA,EACA,kCACA,6BADA,WAEA,EACA0oO,UACAA,gBACA,EA4BA,OA3BAg6C,8BACAqe,sBACA9d,yBACA,gBACAG,iCACAK,mBACAR,6CAEAjjR,6BACA8jR,IACAokI,aACAC,yBACAr8F,iCACAl2R,2BAGAuwN,6BACAv9O,eACAgjT,gBACAE,iCACA/oN,uBACA8oN,yBACAE,qBACAE,SACAm8F,eACAp8F,gBAEAzjG,IACA63C,iBACA,QAGA,0BAOA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AsnP,YASA,CAEAm8B,KACAA,OAGAR,kBACAQ,OAGAA,kBAEAR,eACAQ,OAEAzjR,mBACAA,oBAxCA,MADAA,WAyCA,EAEAogQ,GA5DA,CA6DEh9N,IACF,SAAec,GCrDf,uBACA,iDAGAS,mBACA,iBACA,oDACA,wDACA,0CAGAC,mBACA,kCACA,wDACA,wDACA,4CAGAC,oBACA,wDACA,wDACA,wDACA,sDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,wDACA,0DACA,GAEA6C,oBACA,wDACA,mDACA,wDACA,qDACA,GACAC,gBAEA,mBACA,8BACAo5P,aACA,oBACA3d,gBACA,oBACA,+DAEA,cACA,2EAEA,sBACA,2DAEA,SACA,8DAEA,qBACA2d,aACAA,GAEA,OAtBI,QAAS3gC,OAsBbA,kCACA,OACAsiB,GACAqe,eAEA9d,mBAKA,GAJA,OACAjjR,aAGA,KADAijR,QACA,CA6CA,OACApnF,GACA,UAEAnJ,MACAmJ,cAEA,OAkDA,sDAhDA,2BACAs8C,qBACAC,qBAEAO,6BACAF,UACA,SAAwBA,QAAqBA,GAC7CE,2BAEA,qCAEA+pC,KACAjqC,KAMA,QALAC,SACAG,sBACApmH,UACAmxF,UACA6jB,UACAgR,QACA,wBACA,WACAhmH,KACAmxF,KACA6jB,cAEA,QACAh1G,KACAmxF,KACA6jB,gBAEA,QAKA,CACAoR,eACA,SANApmH,KACAmxF,MACA6jB,OAIA,CAGA,QADAxwG,uBACAA,SACA4hH,YAGAnmD,gDACAmJ,gDAGA,CAKA,QAFA+D,IADA2oB,gBACAA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B,UACA,WAEO5uC,cACP,gCACA0uC,0BACA,oBAEO5sD,cACP,sBACA,OFnCO,YACP,gBAEA+zB,GADA84B,oBACA7hD,SAEA,OACA,aAEA,aACA+7E,2BACA,aEyBe1qF,CAAuBuwD,GAEtC,4BACA,yBAEA,2BACA,SAGA,mFC/GO1qD,aACP,+BACAkI,sBAAiC,YAAmB,iBCG7CP,cACP,IAcAijD,GAdAD,aACA,kBAEA,GADAC,yCACA,CACA,WACA/4B,KACA64B,OACAA,qBACAC,0DACA94B,KACA84B,iBAIAC,yCACA,KACAA,OAEAD,IADAD,oBACAxpD,sCAGA,WAEOsJ,cAAiC,0CAajCV,cAEP,QADA6gD,wBACAC,KAAoBA,cAAmBA,KACvCD,6BAEA,WCnDO5/C,cACP,+BJCOI,GADAu/C,EACgC94C,KADFgS,gCAA2C,gBAEzEhY,cACP,sBKHOC,eAAgC,iBA0BhCsE,kBACP,kBACA,SACA,sBACA,MACA,cACA,mBACA,cACA,8BACA,eACA,oBACA,cACA,mBACA,cACA,mBACAw6C,WACAD,mBACAC,gBACAD,wBACAC,iBACAD,yBACAA,oBAEOt6C,qBAEP,QADAyhB,wBACAmE,kBAA0CA,MAAWA,MACrD,cACA,cACAnE,mBACA,mBACAA,wBACA,cACAA,oBACA,cACAA,oBACA,eACAA,qBACA,cACAA,oBACA,cACAA,oBACAsoD,WACAtoD,mBACAsoD,gBACAtoD,wBACAsoD,iBACAtoD,yBAEAA,iBAEA,uBAEA,sEA7EO,YACP,gBACA,YACA,MACA,YACA,mBACA,SACAmD,SACA,MACA,mBACA,SACA,oBACA,UACA,mBACA,SACA,mBACA,SACA01B,kCACAA,mBACAA,OACAA,OACAA,cACAtkB,sBACAA,UAsDAluB,MAEO7H,qBACP,0BAA0CwhB,MAAWA,KACrD,gBACA,OAEA,kCAEOvhB,qBACPD,iCAEOE,qBACP,yBAA2CshB,MAAWA,KACtDxhB,iBAGOG,wBAKP,GAJAH,oBACAA,wBACAA,wBACAwhB,mBACA64B,WAEA,4FAGOF,qBAEP,GADAn6C,oBACAq6C,QAEA,8EC9GA7nC,cAC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GrBztB,iCACA,oBACA,OAAgB8qZ,UAChB,8DACAzqZ,gBAEAH,cAGAF,6BACA,sBACAK,gBAEA,GADAJ,UAAyBA,GACzB,oBACA,wDACA,sBAA8BwtB,0BAC9BvtB,KAIA,+CACAE,KAEA,iBADAC,kBAEA,2BACAH,KAGA,iCACA,wDACA,sBAAgCi9Q,0BAChC,uEACAj9Q,KACQ,wDACR,sBAAgC4qZ,0BAChC,uEACA5qZ,MAIA,2BACAA,iBAEAA,uBAEAA,MAGAF,4BACA,kCACA,mCACAE,eAEAA,MAGAF,+BACA,2BAGAA,gCACAE,qBAGAF,4BACA,wBAGAA,kCACA,cACA,iCACAC,UACAoD,UAEA,OAGArD,iCACA,6BAGAA,oCACA,iCACA,gBACAC,cACMG,SACNH,WAEAA,GACG,IAGHD,8BACA,iCACA,sBACG,IAGHA,gCACAC,OACA,4BAIA,QAHAI,KACAC,uBACAC,IACAA,mBACA,MACAA,IACAC,eAEAA,cACAH,WAEAE,eAEA,iBAIAP,gCACA,2BACAK,oBACAC,KACAC,WACA,2DAEA,QADAC,WACA,4CACAA,kBACAF,iBAEAC,cACAF,mBAIA,QADAI,WACAL,0BACA,2BACAK,yBACM,wBACNA,qBACM,CACN,8CACAiB,YACAC,YACA,8BACA,SACA,0BACAC,WAEAA,kBAGA,gFAKA,GAJAigB,oBACAphB,WAGAJ,yCACA,sBACA,+BAKQ,sDACRI,UAIA,iBAGAT,+BACA,8BACA,wBACAI,iBACAA,oCAEAA,GAGAJ,+BACA,oBACA,aAEA,+BACA,yBACA,kBACA,2CAGA,kCADAU,mBACA,mBACKu6B,WAEL36B,QACAC,iBACAC,uBACAC,oBACA,6BAEA,QADAiB,cACAA,MACA,QACA,kBACAY,SACAX,6BACArB,kBACA,WACAgC,SACAX,6BACAnB,UACAF,YACA,WACAgC,QACAX,4CACA,gBACAkgB,YACA/a,qBACAxG,yDAEAA,oBAIAoB,QAGApB,UAGAN,mCACAI,UAIA,QAHAC,uBACAC,QACAC,IACAF,cACA,kCACA,eACAI,6BACAC,4BACAF,2BACA,OACAF,yBACMI,IACNJ,sBACM,CA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,8EACAxV,uBACUwV,0DACVC,kBAgEA3D,OACAikB,mBACAtS,mBACA,mEAEA,wBACA,WACAjO,kCACAg1Y,kBAEA,0CACAh1Y,KAEG,CACHugB,WACAtS,iBACAhkB,gCAEG,CACHs2B,iBACAtS,yBACA,YAEA7N,eAEAg6C,WAEA,gBACAn6C,SACAC,SAEAnF,uBACA,oCACOmF,eAEJ,CACHqgB,cACAtS,iBACAhkB,kBAEG,CACHs2B,aACAtS,iBACA,kEAEAhkB,uBACAA,qDAEG,CACHs2B,YACAtS,iBACA,yCACAhkB,uBACAA,qCACAA,wBAEG,CACHs2B,aACAtS,sBACA,YAEA9N,gFAEA,8BACA,2BACAi6C,iBACA,YACA,UACU,6CACVA,gDAAyFp6C,YAC/E,kBACV,kCACAo6C,GAEAA,gDAAyFp6C,QAEzF,oDACAo6C,IACOj6C,MAEJ,CACHogB,iBACAtS,+BACA,YAEAwE,UAEA4nC,qBAEAC,UAEA,eACAr6C,QACAwS,QACArS,QAEArF,uBACA,uCACOqF,WAEJ,CACHmgB,iBACAtS,+BACA,YAEAwE,UAEA4nC,qBAEAC,UAEA,eACAr6C,QACAwS,QACArS,QAEArF,uBACA,uCACOqF,WAEJ,CACHmgB,gBACAtS,mBACA,gEAEA/N,UAEAA,GADA,oBACAjW,gCAEAA,6CAEA,8CACA,OACA6yS,wBACA3+R,iBACA2yQ,qBACAxyQ,uBACAD,kBACAuB,kBAGG,CACH2gB,kBACAtS,iBACA,gEACAhO,8EAEAC,YAEAC,WAEA,gBACAF,SAEAhW,iCAEG,CACHs2B,gBACAtS,iBACA,oFACAhO,4DAEA,0BACAhW,6BAEAA,4CAGG,CACHs2B,eACAtS,mBACA,gCAEG,CACHsS,gBACAtS,iBACA,8BAEG,CACHsS,cACAtS,mBACA,8BAEG,CACHsS,cACAtS,mBACA,8BAEG,CACHsS,eACAtS,iBACA,gEACAhO,2EAEA,0BACAhW,sCAEAA,2BAGG,CACHs2B,gBACAtS,mBACA,gCAEG,CACHsS,mBACAtS,iBAGA,OAFA4uR,yDAEA5yS,aACAA,cACAA,+BAEG,CACHs2B,cACAtS,iBACA,gEACAhO,8EAEAC,YAEAC,WAEA,gBACAF,SAEAhW,6BAEG,CACHs2B,eACAtS,iBACA,mCAEG,CACHsS,kBACAtS,yBACA,YAEA7N,yEAEA,8BACA,wCACOA,SAEJ,CACHmgB,iBACAtS,+BACA,YAEAwE,UAEA4nC,oBAEAC,UAEA,eACA7nC,QACArS,QAEArF,uBACA,uCACOqF,mBAEJ,CACHmgB,gBACAtS,iBACA,0DAEG,CACHsS,UACAtS,iBACA,wDAEG,CACHsS,SACAtS,iBACA,uDAEG,CACHsS,WACAtS,iBACA,yDAEG,CACHsS,gBACAtS,yBACAhkB,gDAEG,CACHs2B,mBACAtS,yBACA,YAEA7N,eAEAg6C,WAEA,gBACAn6C,SACAC,SAEAnF,uBACA,sCACOmF,SAEJ,CACHqgB,qBACAtS,iBACAhkB,yDAEG,CACHs2B,kBACAtS,mBACA,YAEA/N,gFAEA,8BACAF,qBACA,sBACAI,8BACAg6C,4BACA3nC,2BAMA,OALA,6EACAxS,yCACAm6C,cAEAh6C,cACA,EACOF,MAEJ,CACHqgB,mBACAtS,yBACA,YACAhkB,qDACQ,CACR,mBAEAmW,WAEAJ,SACAC,SACAC,SAEAjW,+CACAiW,+BACAjW,0DAIG,CACHs2B,cACAtS,mBACA,oFAEA/N,8BACA,iCAEG,CACHqgB,aACAtS,iBACA,qFAEAhO,0BACA,iCACAA,KAEG,CACHsgB,qBACAtS,mBACA,YAEA/N,gFAEA,8BACA,4BACAD,6BACOC,WAIP4H,GA9eA,GAugBA,kBASA,IARA/H,qBACAksF,aACA2lC,SACAqjR,aACAC,YACAC,aAEGp1Y,KACHqrY,oCACA,GAEArrY,sCACA,eACA,yEAJAA,mBAOA,2BAAkDA,mBAClD,6BACAI,0BACAqT,8CACA,qBACArT,uBAIA,IACAD,GADAsT,wDACAi8L,uBACA,+BACA,gBACA90M,sEAEAwF,uBAEAA,IACG,IAEH,uFACAJ,oBACAksF,+BAGAlsF,uBAA6CyB,YAAoBowH,YAAuB5xH,OACxF,iEACA,0BACAD,yCAGAA,0DACA,wBACAI,uBAEAA,IACG,IACHJ,GAKA,wBACA,uEACA,qBAEA,y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iBACAtS,sBACA,YAEA9N,6DAEA,4CACAD,sCAEAjW,uEAEG,CACHs2B,kBACAtS,sBACA,oCAEG,CACHsS,eACAtS,iBACA,kDACA,8BACO,iBAEJ,CACHsS,gBACAtS,mBACA,gEAEA/N,MACAC,MACA,OACAlW,0CACA,IACAowD,GADAxpD,QACA,GAEAwpD,wBACAn6C,YACYm6C,8BACZl6C,eAIAD,4BACAC,kDAEA,gCACA,0BAEA,QADAsS,mCACAe,2BACA,kBACA,sBACAf,iCAEA,YAEA,uCAEG,CACH8N,cACAtS,sBACA,mDACA,mCACOiP,iBACP,mBACO8H,WAEJ,CACHzE,kBACAtS,yBACA,sCACAhkB,mDAA2FgW,WAExF,CACHsgB,iBACAtS,sBACA,YAEA9N,6DAEA,uDACAlW,4BACAupB,qCACAtT,6CAEAjW,uEAEG,CACHs2B,cACAtS,iBACA,2CACA,0CACA,iCAEA,QADAjO,0CACAA,uBACAA,wCAEG,CACHugB,mBACAtS,sBACA,2BAEA9N,2BACAC,WACAg6C,SACA3nC,SAEA4nC,KACAC,gBACA,WAIAD,GAHAD,wBAGAA,yBAFAA,eAIAE,6CAEA,IACAE,GADAvwD,2BACAiwN,2CACAz4L,yCACA,6BAEG,CACHlB,aACAtS,mBACA,iEACA/N,iEAEAC,cACA,0GAEA,oCACAi6C,2BACA3nC,0BACA4nC,iDACAC,6BACAC,sCAEAv6C,IADA,gDACAyvM,uBACA,iBACAhuL,wBAEAA,aAES,eACTx3B,+BAEAA,6BACA+V,iDACAA,2BAGA,cAIA8H,GAlQA,GAqQA,kBACA,8CACA,sBACA/H,gBACAC,cACMH,sBACNE,2BACAC,gCAGAA,wBAEAA,IACG,IAGH,gBACA,iCACA,kBACA,oCACA,uBACAD,WAA4B4tF,2BAA4B1tF,IAWxD,GATA,6EACAD,sBACA2zB,gBACA3zB,8BAEAA,mCACAA,uBAGA,4BACA,2DACA,mCAEA,oBACG,eAGHozP,aAIA,cAAiCxoQ,GAEjC,aAGA4oB,sCACAvF,WAEAmlP,yBAEA,iBAAmC,gBAAiC,SAAe15P,KAAeiB,KAAgB6G,SAAoB,IAAM,mCAA0C9H,uBAA4CU,iBAAqB7C,iBAAlCmC,MAAmL,CAAjJ,MAAuC8B,GAAcb,KAAW6G,YAAsB,KAAM9H,uBAAqD,CAArD,QAAqD,cAAsB,SAAe,qBAA2B,oBAA0B,SAAc,gCAA2C,cAAuC,6EAAlkB,GAEA7I,aAAiC,gBAA2C,YAAgBuJ,WAAkBA,KAAO,WAA2BV,8BAAwDA,kBAAgC,6BAAuD8Z,kCAA+D,uBAAyD,2BAAqEpZ,UAA6Db,GAAzhB,GAIAnN,IAFiBxB,EAAmB,IAMpCb,IAFaa,EAAmB,KAMhCT,IAFiBS,EAAmB,KAMpCP,IAFgBO,EAAmB,IAQnC,cAAuC,0BAAuCqpZ,WAE9E,cAAmC,qBAA0B,8BAA0C16Y,WAAgBA,IAAOhC,UAAoB,SAAsB,qBAExK,gBAAkD,qBAA0C,yDAE5F,SARA/M,EAFcI,EAAmB,KAUjCqpZ,4BAEAtoZ,gBACA,+DAEAF,UAEAxB,aACAA,eAGA2hB,aACA,gBACA,WAEAngB,UAEAxB,eACAA,cACAA,kBACAA,kBACAA,8BACAA,4CAEAA,0CACAA,yBACAA,sBACAA,6DACAmQ,aACAtC,wDAGA7N,6DACAyP,gDACAU,qCAGAnQ,iEACA,gBACA,0BACA,SACAyP,kCAEAU,yDACA,IACAA,qEACU,CADV,MACUO,UAGV1Q,+DACA,YACA,cACAwP,cACAsB,gBACAS,YACAC,eAEArB,8BAGAnQ,sCAGA,aACAs2B,wBACAtS,iBACA,WAEAhkB,yDACAsN,iBAEAtN,uDAEA,GADAsN,eACAA,iBACA,yBACA,aACAO,sBACAP,mEACW,QAIR,CACHgpB,qBACAtS,iBACA,WAEAhkB,4DACAsN,iBAEAtN,0DACAsN,eACAA,qCAGG,CACHgpB,YACAtS,iBACAhkB,kBACAA,kBACAA,kCAEG,CACHs2B,aACAtS,oBACA,yDACA,sBACA,4BACA,0EACA,yCACA,sCACA,kBAEA,gCACA,8BACAtT,0CAEAA,yCAEA1Q,qBAEAA,wBACAA,uBACAA,2EACAA,kBAEG,CACHs2B,gBACAtS,kBACA,+DAEAvU,uBACAnC,kBACA6C,sBACA,aACAoH,sBACA/H,SACAsB,OACAS,OACA,uBAEA,wBAEAsM,WAEAnN,QACAa,QAEA,8BACA,QACAuE,iBAEA,6BAEAE,WAKA,GAHAlF,QACAS,QAEA,oBAEA,wBAEA2E,WAEA,eACA3E,QAEAuE,eACAA,2BAEA,cACAq6C,UACA,0BACA5+C,iBACAuE,iBACAA,mBAEAA,mBACAA,eACAK,YAEAg6C,gCAEAA,qCACA5+C,mBAEA,CACAshS,wBACA3+R,iBACA2yQ,YACAxyQ,aACAD,WACAuB,WAIG,CACH2gB,qBACAtS,iBACA,8BACA,wCACA,sBACA,uBACA,8BACA,kCACAvU,IAEG,CACH6mB,eACAtS,iBACA,4BACA,2BAEA,CADAhkB,0BACAsN,KAEG,CACHgpB,eACAtS,iBACA,4CAEG,CACHsS,wBACAtS,kBACA,WAEAvU,kCACAnC,oBACAmC,kCAEA,wBACA,aACA+B,QACAqM,QAEA/H,yBACAC,uBACA,cACAA,GACUD,kCACVC,eAEAA,qBAGAwB,6DACA/H,wCACA,sBAEG,CACH8mB,sBACAtS,kBACA,8EACA,YAEA,OACA6kB,OAAiBuiX,4CACjBtiX,KAAesiX,wCACfS,UAEA,0CAGA,QAFAn7Y,SACA6G,aACA7G,2CACA,yBACAA,kBACA6G,YACY7G,wBAIZ,MAFA6G,GADA7G,yBACA8iT,wCAEA,CAGA/jT,sBAEAU,IAEG,CACHmmB,oBACAtS,kBACA,WAEAvU,mDACAiB,KACA6G,uBACA,+BACA/H,kBACA,aACAgC,oBACAqM,WACA/H,SACAC,SACAC,yBAEAC,WAEA1E,QACAwE,SAEArF,eAEAA,aACAA,eAEAA,IAEG,CACH4lB,qBACAtS,kBACA,qBACA,WACA,wCACA,WACA,8BAEAzM,wCAEAzG,EADA1O,OACA,GAEAmP,IACA,eACA,sDAIAA,EAFAnP,QAEA,GAEA,oBACA,kCACAqN,aACAnC,0BACQmC,qBACRnC,sCAGG,CACHgpB,qBACAtS,oBACA,+DACAtT,2DACA6G,0DAGA,GADA9V,iCACA,4EAGA,+BACA,WACA,YACAzB,mCACA,kCAAiD6rZ,OACjD,6FAEA,kBACA17Y,6CACA7C,gBAEA,kBACAoD,6CACAjB,gBAEA,6BAC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AEAx0X,qBAGA,GAFA,iDACA,qCACA,gDACA,6BAEA,gCACA,6BAEA,iBAEY,0BAEZjO,0CACA,8CACA,uCACA,4CAEA,SAIA,QADA,6CACA,+CACA,gCAGA+mC,6BAMA9nC,GA3IA,CA4IClZ,WAqLD,mBACA,OAEA+gD,qCACA,OAIGlgD,EAJHigD,IACA95B,OACAg+O,YACA2iD,aACG5mQ,oCACH,gBACAF,oBACA34B,iBAGA,8BAIA,QAHA5wB,QACA,aAEApF,kBACA2uD,iBACA3nC,GACAxoB,uEAEAA,2DAGAwoB,GACAxoB,qEAEAA,qEAGA,GAdA,GAeGowD,GAGH,mBACA,8CAEA,qCAEAE,GADA1pD,QACA,GAEA2pD,MACA,kBACA,sCAEAi6B,GADA5jF,QACA,GAEA,4BACA,oBACAi5E,sCACAtvB,yCAIA,6DACAvwD,6DACAupB,0BACAvpB,gEAEAA,oBAGA,mBAEA,6DACA,0CACA,UACAswD,KAEAC,gCAEA50B,GADA/0B,QACA,GAEA,6BACA,sCAEAi5E,GADAj5E,QACA,GAEA,OACA,oBACAi0B,oCACAw1B,uCACAC,gBAGAtwD,0DACAupB,yBACAvpB,kEAIA,gBACA,+BACAowD,MACA,gBACA,sBACAE,6BACAF,uCAEApwD,iDACAupB,0BACAvpB,4DAEAA,2DACAA,mBAGA,mBACA,YAEAmwD,aACAnwD,+CAEA,oDACA,kFACAswD,sBAEAA,IACG,IACHtwD,8DAGAA,6DACAA,mBACAupB,4CACA,cACA3T,8BACA,aACAw6C,4DAIA,gBACA,OACA95B,eACAg+O,aACAxtQ,QAAc,iBACdilZ,qBACA,oCACAz7V,YACAC,aAEA/4B,sCACAmE,WACA6uD,SACA1K,SAEA,YACA,gCACAznD,4BACAwC,6BACAD,mDACAklD,KACAllD,2BACAu1B,IACAq6B,yBACA1K,iBACA,OACAxvB,iBAEAC,kBAEU/gB,uBACVg7C,gCACA1K,iBACA,OACAxvB,iBAEAC,kBAGAuvB,kBAEA9/E,0CACAA,2DAKA,gBACA,OACAs2B,wBACA21X,YACAF,uBACA/rZ,6DAKA,gBACA,4CACA,WAAuBs2B,SAKvB,GAHA,6CACA65B,yBAEA,wBACA,sCACAA,4CACM,kBAGN,YAFAA,yCAEA,CAGA,qBACAA,yBACAA,aAEAA,GAtYA5+C,QACA26Y,YACAC,MACAC,SACAC,UACAC,QACAC,MACAC,SACAC,QACAC,WAGAn7Y,YACAo7Y,UACA96F,gBACAF,oBACAi7F,0BACAjM,QAEArqX,eACAxvB,sCACAilZ,wBACA,wCACA/rZ,0DAGA6sZ,SACAv2X,eACAg+O,YACAxtQ,sCAEAilZ,wBACA,wCACA/rZ,0DAGA,qBACAs2B,qBACA09G,aACAsgI,cACA4tD,aACA7tD,aACA4iD,YACAnwT,yBACA8sS,SACAm4G,wBACA,uBACA/rZ,wDACU,sBACVA,sDAIA,2BACA,4BACA,cACAs2B,eACAg+O,YACAtgI,aACAruE,aACAomV,qBACA/rZ,6DAGAyvH,KACAn5F,eACAy1X,qBACA/rZ,4BACA,uEACAA,qDACAA,4BACAA,+DAGA,oBACAs2B,iBACA09G,aACAltI,gBACAsxY,SACA2T,wBACA/rZ,oDACAowD,kBACApwD,wDAIA,mBACAs2B,iBACA09G,aACAltI,QAAgBo9G,gBAChB6nS,qBACA,oCACA17V,UACAC,QACAC,QAEA/4B,oBAA8C84B,cAAoB4zD,iBAClEvoF,uFAAwIuoF,mBACxIlkH,qDACAA,6DACAA,8BAGA,gBACAs2B,iBACA09G,aACAltI,kBACAklZ,YACAD,wBACA,mCACAz7V,UACAC,SACA/4B,SAEAmE,8FAA+I6wC,cAC/IxsE,qDACAA,6DACAA,8BAGA,iBACAs2B,QACA09G,aACAltI,QAAgBo9G,SAChBv+C,yCACAomV,wBACA,uBAEAz7V,gCACAC,WACA/4B,SACAmE,SAEA,iBACA,cACA,6BACA,eACA6uD,eACA,UACA,MACAA,aACA,UACA,YACAA,YACA,cAEAA,aAEAxqF,2DACAA,4BACA,0FAA8IkkH,UAC9IlkH,qDACAA,4BACAA,+DAGA,aACAs2B,iBACA09G,aACAltI,sBACA6+D,eACAqmV,eACAD,qBACA,oCACA17V,UACAC,QACAC,QAEA/4B,+DAA4G,oBAAoBj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ACAlgB,kBACAC,iBAEA4N,EADAqS,IAGAle,IAEAkC,wBAEA,SAUA,gBAEA,WACAlE,2CACA,SAQA,QAJAkgB,IACAle,8BACAkC,IACA2J,IACAqS,KACAlgB,oCACAC,mCAEA4N,EADAqS,IAGAle,IAEAkC,wBAEA,SAcA,gBACA,4BACAlC,wBACA,mCACA,YAeA,oBAMA,QADAwS,YAHAH,6CACAC,MACAC,OAEA,8BACA,yBACAxE,kBACA4+C,uBACA5+C,oBACAwE,kBACAA,0BACAxE,uBACAyE,wBACAC,sBACAC,yBACAg6C,wBAGA,6BACA,OACAh6C,UAEA,KAKA,IAKAhG,EAaAV,QAlBAH,QACAmY,uBAEAna,QACAma,uBAEA,aAQAtX,EANI7C,EAEAgC,GAIJA,0BAHAhC,EAFAgC,EAUA7N,mBACAgO,OACAiB,OACA6G,OACA/H,SAEA+H,OACA/H,OACAC,OACAiB,QAGA,SADAP,OAvBA,IAwBA,CASA,cACA1O,eAOA,QADA6L,EALA5L,IACAigB,IACAle,IACAkC,KACA2J,KAEA5N,YACA,qBACAU,EACAqB,IACA6L,WACA5N,IACA,WACAf,EACAghB,IACAhc,WACAjE,IACA,WACAkF,EAEA+a,OACA,eAGA,KADArU,YAEA5L,SACAD,eACAmF,EACAnF,eACA6N,kBAEA7N,gBACA6N,mBACA5N,KAEA4N,iBACA3J,kBAIA,KADA2H,YAEA7L,6BACA6L,WACAgC,yBACAhC,GACA3H,yBACA2H,KAIA,MACA7L,aACAkgB,WACY,MACZlgB,aACAkgB,WAEAlgB,eACAkgB,UACA,OAEAjgB,SACAigB,kBACU,qBAEVlgB,mBACAA,eAEAC,IAEA+B,IACAke,IACAhc,KACA2J,KAIA,uBACA7N,QAMA,SAGA,IAFAC,IAEAA,cACAD,cACAA,eAEAA,iCACAA,8BAEAA,kBACAA,mCACAA,kBACAA,8BACAA,gBACA0O,MACQ1O,uCACRA,YAEAA,qBACAA,QACAA,oCACAA,UACAA,gBACA0O,OAGAzO,IAGAyO,GACA/P,KAKA,QAmBA,gBACA,SACA,YAEA,gBAAmCqD,WAAkBA,KACrD,WACA,uBAC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kB,sDAA6E4W,yEAEtX,uCAEAppB,kBAEAqM,oPAEA/H,kEACA,yBACA+kB,IACC,IAED9kB,iHACA,yBACA8kB,IACC,IAED7kB,gBAGA,mBACAuB,WAEA,0EAEA,mEACAu2B,mDACAA,gDACAA,yCACAA,eACAjwB,oDACA,eACAowB,SACAG,UAEA38B,yBACAq8B,uBAEAA,GAGA,OAvBAh9B,SAuBAuB,OACAikB,iBACAtS,sBACAhkB,8BAEG,CACHs2B,cACAtS,mBACA,uBACA,gEACAhkB,eAEA,mEACA,2BACA,gCACA,oCACA,8BAAyEyD,4CAGzE,8BACAwqC,WACAG,SACAD,SAEAI,4BAEA,+DACAA,gEAEAh9B,6CACAvR,4BACAuuC,KAEG,CACHjY,2BACAtS,sBACA,oFAEA,uBACAhkB,4CACAA,wDACQ,CACR,wBACAA,oEACAA,oEAGG,CACHs2B,cACAtS,mBACA,YAEA,gDACA,kCACAgqB,oCACAC,2CACAjuC,uBACAA,sDACA6N,sBACAmgC,6CACAF,mDAEAA,sEACAA,yCACAA,kBACO,MAEJ,CACHxX,sBACAtS,iBACA,YAEA8pB,MACAC,MACA,0CACA,eACAK,SACAD,SAEA,gBACAogX,eACAxgX,YACA,WACAwgX,kBACAzgX,YACA,cAEA,+DAEAS,kBACAA,kBAEA,GAGA,YAIA3T,GA3HA,CA4HCp5B,WAOD,sBACA,iDACA+nB,uCACA,yBACKsR,IAELA,0BACA,wCACAppB,YAEAA,qCAA+Df,KAAoBkqB,wBAE9E,eAIL,gBACA,4CACA,6BACA,oDAGA,mBAEA,QADA4U,MACA/9B,mBAAqCA,6BAAwCA,IAC7E,kBACA,oCACA+9B,gBAEA,mCAGA,gBACA,qCACA,cACA,mDAGA,sBAEA,kCACAA,0BACA,kBACK,eACD3U,8BACJ,iDACA,oBACA,uCACAkT,6BACA,kBACSA,IACTA,uCACA,kBACSA,KAETt8B,eACK,eAEL,cAIA,sBACA,oBAGA,kBACA,+CACAA,uCACAq8B,uCACAC,MACA,qDACA,qDACA,WACAA,6BACAA,mBAGA,OADAE,aACAA,qCACAF,sCAGA,OADAE,aACAA,q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AW,iCAAiC,YAAYvgB,mBAAmBA,KAAK,mBAAmB,sEAAsE,UAAS3D,0EAA2E,iBAAgB,YAAa,qGAAqGqpQ,YAAY,wOCAvlQ,OACA,aACA,gBACA,WACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,YACA,eACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,cACA,WACA,YAEA,cACA,cACA,8CACA,gCACAhnQ,EAEA,YAEAC,kBACA,uBAEAA,YACAqsU,aACArsU;;;;;;;;;;;;;;;ACnRA,oBACA,gCACA,CAAW69F,wBAAgBrqF,qBAAsC2B,gBACjE,cAA0B,kDAC1B9H,MAGO,gBAEP,aAAoBzP,mBADpBW,OAEA8O,sEAGO,iBACP,oCACA,iCAAiDD,IAAOA,IAExD,aADA+H,eACAgS,uDAEA,UAEA3iB,yBAGO,gBACP,SACA,2EACA2Q,WACA,4DACA,+CAA6DzG,WAAcA,IAC3EJ,wEACA6G,gBAFA,CAIA,SAGO,oBACP,oFACA,kGACA,sBAA6CsG,MAAQA,0DACrD,8CAGO,gBACP,qBAAoCnN,UAG7B,gBACP,8FAGO,oBAEP,0CACA,gBAAoC,IAAMqF,cAA2C,CAA3C,MAA+BE,IAAYzE,QACrF,gBAAmC,IAAMuE,eAA+C,CAA/C,MAAmCE,IAAYzE,QACxF,gBAAgCwE,oBAJhC,cAA4B,2CAA+DxE,QAI3DV,uBAChCiF,kCAIO,gBACP,IAAwGvG,SAAxG+H,GAAcuvE,wBAA6B,qBAA0B,aAAcisU,gBACnF,WAAiBxxY,qCAAoD,2DAAqE,cAAc/P,GACxJ,gBAAuB,oBAAsB,OAC7C,gBACA,4DACA,YACA,qHAEA,OADAV,8BACAiF,YACA,cAAwC,WACxC,mBAAmC,CAASiO,0BAC5C,YAAmClT,QAAWi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jC,oBACAkB,UACAA,IAEAgF,WAEA,sBAKA,GAJA37I,SACA,WACAt/F,uBAEAi2O,IACAzxP,cAvgSA,GAwgSA0xP,KAtqBA13G,gBACA,oBAyqBA,mBACA,yBACAm2G,kBAEA1uJ,IADA/K,kBACAnQ,SACAgqK,GAzsQA,cACA,uCAwsQAvpR,GACA,IACAxrF,OACA,aAAmCg1W,MAAgBA,MACnD,oBACAkB,SACA9sS,QACA,+DACA8xS,UAMA,CANA,QAKAl7W,OACAopE,QA3rBA62J,SAOA,sBACA,qBACA,aACA,iBACA,aAAwB1kB,YAAuBA,OAC/C,iBACAw5J,WACAhqK,OACAmQ,MACAA,aAWA,eACA,gBAGA,uCAIAA,uGAEAE,EAeA,uCAEA,SAt4QA,GAs4QAzQ,EAIA0rK,SACAF,GA6EA,iBACA,WACA,YAAoBxrK,IAAuBA,IAC3CI,oBAEA,SAlFAowK,QACA/E,iCA0EA,OAzEAD,GAx6QA,GA28QA,CACA1ie,OACA2ne,aACAryY,WACA7uD,aACA2hD,aACAw/Y,YACA9se,8BACA+se,qBACAC,qBACAC,wBACAC,mBACAC,mBACAC,qBACAC,wBACAC,mBACAC,wBACAC,kBACAC,uBACAC,eACAC,oBACAC,kBACAn8L,aACAm0L,oBACA4D,gBACAqE,gDACAC,2CACApnc,gBACAw/b,WACAR,UACAqI,wBAqCA,mBACA,UAEA,0BACA,iCAEA,yBACAphK,mBACAE,EAMA,wBACAzQ,EAYA,qBACA,eACA,SAMAgqK,YAGAA,WACAz5J,mBACAqhK,2BAsFA,mBACA,eACA,wBACAxxK,cAAgDA,EAChD,cACAA,oBACAA,gBAGAA,YAIA,SAkEA,iCAEA,iBACA,IACAmrK,GADAD,aAEAlB,0BACAyH,gBACAvzc,OAqCA,iBAEA,gBACA,KAzwRA,KA0wRA8hS,EA1wRA,IA0wRA,IAxCA0xK,aAKA,UACA9xK,EA7BA,eACA,kBACA,YACA,UACA,UACA,iBACA,aACA,gBACA,YACA,eACA,WACA,eACA,WACAuQ,EAgBAz7E,IAYAk1O,oCACA1lN,OACAssD,wBAEAhqH,QACAyjR,oCACAA,WAGA55J,OA0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SACA,gBAEA,WAkBA,eACA,IACAoQ,EADAqQ,aAIArQ,EAFA5hS,MAEAiyS,YAIAA,YAGA,UAEA,mBACAzQ,YAEA,SAEA,mBACAA;;;;;;;SAYA,YACA,cACA,QACA,kBACA,iBACAy0K,kBAEA,CAEA,kDACA,YAA4Br0K,aAAiBA,GAC7C,aACA,2BACAyuC,2CACA4lI,QAKA;;;;;;;SAUA,iBACA,cACAz0K,QACA,YAqBA,mBACA,kBACAgqK,aACA,QACA,kBACA1uJ,aACA,oBACA,SAGA,GAFA1K,mBAEAxQ,qBACA,UA/BAs0K,WAKAt0K,IAFAmQ,6CAEAvQ,IADAyQ,8CAKAhmT,eAIA,eACA,gBAEA3T,oBACAy5T,mBACAyjB,SAHA,CAiCA,eACA;;;;;;;SAYA,mBACA,cAGA,iBAIA,YAeA,mBAIA,aACA,wBAkBAzjB,QACA,GAIA,qBACA,mBACA,uBAGA,wBACA,qBACA,wBAGA,2BACA,qBACA;;;;;;;SAuBA,qBACA,cAEA,SADAhyH,KACAkyH,IACA/qD,KAEAivN,GADA5pN,KACAi/M,YAGA;;;;;;;SAsBA,iBAGA,SACAhqK,OACA,aAAoB4Q,YAAmBA,MAEvCxQ,qBAGA,GADAjiH,OACAiiH,EACA,UAGA,YACA,aAAoBwQ,YAAmBA,MACvCo5J,qBAEA,UASA,qBAEA,UADAz5J,UACAE,YAKA,2BACA,MACA25J,QADAl1W,KACAkrM,MACA,aACAgqK,wBAKA,iCACA,MACAkB,QADAp2W,KACAkrM,SACA,aACAkrK,GACA76J,2BACAmkK,GAKA,uCACA,MACAlJ,QADAx2W,KACAkrM,YACA,aACAsrK,qBACA/oe,kBACAiye,GAKA,6CACA,cACA,2BACA,4BACAh2R,MACA6sR,qBACA9oe,2BACAiye,GAKA,mDACA,cACA,2BACA,+BACAh2R,MACAk1R,GACArjK,2BACA9tU,2BACAiye,GAKA,yDACA,cACA,2BACA,kCACAh2R,MACAi2R,qBACAlye,2BACAA,kBACAiye,GAKA,+DACA,cACA,2BACA,qCACAh2R,MACAk2R,qBACAnye,2BACAA,2BACAiye,GA2BA,2BACA,cACAxK,gBAC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,mBACAA,KACAC,GA4FA,mBACA,aACA1N,QACAp5J,KA3xaA,GA+xaA0K;;;;;;;;AAvCA,wBAEA,kBACAA,YACA8uJ,+BAOA,OAJA,WACA+J,aAGAngM,UADAj6D,WAEA,kBACA02F,6BAEA25J,GAyBAuN,cACA3N,YACA77N,UAEA,eACA6xD,EAtzaA,IAszaAq1G,kBACA,sBACA1gF,SACAp2T,SACA22c,YACAv+I,aAEA,SACAw+I,SAEAyC,GAQA,cACA,WACA,aACA,YACA9kO,MAIAy9D,WACApiE,UAGAsiE,oBACA1vI,QACA1iK,OACAoyS,yBAGAonK,GAaA,mBACA,iBACAA,KACAC,GAYA,cACA;;;;;;;SAaA,eAGA,qCAKA,eACA,0CApbAC,2BA+bA;;;;;;;SAuBA,qBACA,cACAnnK,QACA0K,QACA,mBAn7aA,IAm7aAA,cACAzsB,GAuBA,iBACA,aACAmR,OACAgqK,QAGA,eADAgO,GADAl3R,YACAs/G,KACAA,UACA63K,GAgCA,iCACA,eAEA1M,KADAuF,iBACAc,MACAlG,KAz/aA,GA6/aAF,SAEA,UAKA,iBACA,iBACAqJ,gBACAE,aACAD,MACAG,wBACAj1K,QAGA,UAWA,YAUA,IAHAoqK,SACA6K,GApEA,qBACA,mBACA,YACA,aAAwBrkK,eAAyBA,OACjD,gBACA,yBAIA,WAt+aA,GAu+aAy5J,YACA,gCAOA,sBACAz5J,OAIA,YA6CAsnK,kBAEA,YAKAjD,6BACAkD,wBACAlD,2BACAxJ,UAEA,CACA76J,oBACA,4BAEA46J,eACAD,iCAIA36J,oBACAikK,8BAEArJ,YACAD,8BAMA36J,oBAGA,mBACA,OACA,+BACA,mBACA,MACA,aAA4BikK,MAAiBA,OAC7C,gBAEAC,YAMAsD,KALArD,IACAD,IAIAzte,cACAgxe,aACA7M,eACAD,qCAKA,qBACA,IACA,kBAEA,QAOA,CAPA,MAEAvB,IACA,iBACA,UAGA1ie,WAaA,wBAGA,uBAGA,iBACA,SAIA,mBACAuyO,cACA42F,EAEA,SArobA,KAsobAujD,OAEA,oBAGAs3G,2BACA,SAEAjB,qBACAiB,2BAEA,qBACAhwJ,oB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y4J,GADArnO,KACAk8D,mBACA,GA8BA,oCAGA0S,SADA04J,GADAtnO,KACAk8D,yBACA,GAgCA,0CAGA0S,SADA24J,GADAvnO,KACAk8D,+BACA,GAkCA,gDAGA0S,SADA44J,GADAxnO,KACAk8D,qCACA,GAoCA,sDAGA0S,SADA64J,GADAznO,KACAk8D,2CACA,GAsCA,4DAGA0S,SADA84J,GADA1nO,KACAk8D,iDACA,GAyBA,eAGA0S,SADA+4J,GADA3nO,KACAk8D,IACA;;;;;;;SA+BA,mBAGA0rK,GADAT,GADAnnO,KACAk8D,OACA,CAyBA,wBAGA0rK,GADAR,GADApnO,KACAk8D,YACA,CA4BA,8BAGA0rK,GADAP,GADArnO,KACAk8D,kBACA,CA8BA,oCAGA0rK,GADAN,GADAtnO,KACAk8D,wBACA,CAgCA,0CAGA0rK,GADAL,GADAvnO,KACAk8D,8BACA,CAoCA,gDAGA0rK,GADAJ,GADAxnO,KACAk8D,oCACA,CAsCA,sDAGA0rK,GADAH,GADAznO,KACAk8D,0CACA,CAwCA,4DAGA0rK,GADAF,GADA1nO,KACAk8D,gDACA,CA0BA,eAGA0rK,GADAD,GADA3nO,KACAk8D,GACA;;;;;;;SAoCA,wBAGA,YADAirK,GADAnnO,KACAo8D,OACAu5J,OACAkS,GA8BA,8BAGA,YADAT,GADApnO,KACAo8D,aACA6K,OACA6gK,GAgCA,oCAGA,YADAT,GADArnO,KACAo8D,mBACA45J,OACA+R,GAkCA,0CAGA,YADAT,GADAtnO,KACAo8D,yBACA86J,OACA8Q,GAoCA,gDAGA,YADAT,GADAvnO,KACAo8D,+BACA+6J,OACA8Q,GAsCA,sDAGA,YADAT,GADAxnO,KACAo8D,qCACAglB,OACA8mJ,GAyCA,4DAGA,YADAT,GADAznO,KACAo8D,2CACAgjB,OACA+oJ,GA2CA,kEAGA,YADAT,GADA1nO,KACAo8D,iDACAskK,OACA0H,GAgCA,mBAGA,YADAT,GADA3nO,KACAo8D,GACArQ,MACAs8K;;;;;;;SAAA,CAwBA,mBACA,aAEA,QADAn+R,KACAkyH,IAGA57E,GAFA6wB,KACAqF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Aj8M,MADAE,UACA+7M,GA9+gBA,iBACA,4CA6+gBA34R,YAEAo/H,aACA92E,aACAy6O,QAEA;;;;;;;SAiCA,SACArze,eACAG,iBACAA,kBAEAqqJ,QACA,8BAEAo3V,WACAzhf,2BAGA,SACAH,kBACAG,eAEA09F,sBACA,kBACA,aACA,6DACAorY,MAKA,aAA4Bp5J,KAA0BA,MACtD,0BACAw5J,2CACAJ,oBAEA,kBAEA,YAEAiZ,cACA/hf,gCAEAshc,cACAthc,gCAEAgif,2BACA,YAAwB9iL,sBAAyBA,IACjD,uBACAl/T,4BAKA,SACAH,wBACAG,iBACAA,aACAA,aAGA,SACAH,kBACAG,eAEAiif,kBAGA,YAAwBnjL,sBAAyBA,IACjD9+T,kCAGAkif,cACA,YAAwBhjL,sBAAyBA,IACjDl/T,8BAGAmif,iBACA,WACA,YAAwBrjL,cAAiBA,KACzC,6BACA4Q,0CACAA,KACAA,4BACA,SACAxQ,WAGAA,QAIA,+BAEAhiO,cAGA,YAAwB4hO,sBAAyBA,IACjD9+T,8BAGAoif,cAEA,uBAEA5+e,aACA,2BAEA6+e,SACArif,sBAGA,SACAH,oBACAG,gBACAA,kBACAA,+BACAA,0BAMAA,2BACAA,6BAEAiif,kBACAjif,0BACAA,qBAGAkif,cACAlif,uCACAA,4BAGAk9F,cACAl9F,uBAEAmif,mBACA,iCACAnif,0BAGAA,0BACA,uBAEA,KAEAsif,oBACA,4BACA,4BACA,mCACA,eAWA,yBACAxjL,aACAA,WAEA,iCAEA,+BAEAyjL,gBACA,gCACA,oBACA,aAA4BzZ,YAAsBA,MAClD,eACA9oe,4CAEAA,yDAIA8+T,OACA,UACA9+T,sCAIAA,mDAIAwif,gCACA,aACA,4BACA,aACA,qBACA1Z,kBACA9oe,8BAEA,CACA,0BACA,WACAA,+BAKAA,0BAIAyif,cACA,oBACAzif,mBAGAA,wBAYA,iBACA,qBACA,YACA,YAAwB8+T,WAAuBA,KAC/C,YACA,cAIA,YAWA,qBACA,aAVA,iBACA,iBACA4jL,QAEA,SACAC,QAEA,KAKAC,OAEA,MASA,mBACA,UACA,eAEA,UACA,eAEA,UAEA,eAhBAC,QAIAv5P,OAxtrBA,GAwtrBA41E,KAwBA,qBACA,WA9trBA,IA8trBA7wR,WACA,sBACA,gBACA+rS,aACA8uJ,MACA,aAAwBC,aAA0BA,OAClD,gBACA,QAIAD,kBAEA,CAEA,gBACAA,4CAGAJ,cAEA,kBAMA,qBACA,iCACAp5J,cACA,cACA,sBACA,aAAwBw5J,aAA0BA,OAClD,gBACA,QACApqK,qBAEA,CACA,kBACAurK,UAGA,WA3yrBA,GA2yrBsDG,aAAkCA,MACxF,gBACAF,GA5wrBA,MA4wrBAA,GA3xrBA,IA4xrBAwY,MA9xrBA,GA8xrBAxY,SAKA,aA1zrBA,GA0zrBA,CACA,YA3zrBA,GA4zrBA,aAAoCA,aAA2BA,MAC/D,gBACAwY,MAvyrBA,GAuyrBAvY,aAMA,SAWA,eACA,aACArrK,OACAJ,OACAnwD,QACA,gBACA,YACAl2B,SACA,2BACA,qBACA42F,gBAEA,CACA,8BACAyzK,aACAC,aACA1zK,eACAA,oBAEA,SAEA,SAWA,mBAEA,aACAvQ,oBACAkkL,uBACA,WACAlkL,yBAGAmkL,aAcA,qBAEA,cACA,uBACA,cACAD,8BAkCA,iBACA,gDACAlkL,4BACAyQ,OACArQ,6BArCAgkL,OACA,WACApa,4BAGAma,cAOA,cACA,OAEA,iBAIA,SAr3rBA,IAq3rBA50c,qBANA80c,YAQA,mBACA,yBACAjD,oBACA,SA13rBA,MA23rBA3wK,EA33rBA,IA23rBA,QACAA,EA53rBA,IA43rBAlhS,wBAEA,mBACA,mBACAghS,kBACAA,6BASA,gBAEA;;;;;;;SAgBA,gBACA;;;;;;;;;;;;;;SAuBA,SACA,yBACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,+BACA,+BACA,gCACA,8BACA,8BACA,0BACA,+BACA,mCACA,qBACA,+BACA,8BACA,iCACA,mCACA,kCACA,gCACA,qCACA,wCACA,2BACA,6BACA,+BACA,4BACA,8BACA,+BACA,4BACA,0BACA,uBACA,qCACA,mCACA,gCACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,8BACA,2BACA,wBACA,0BACA,qCACA,qCACA,yBACA,yBACA,yBACA,yBACA,yBACA,6BACA,4BACA,wBACA,mCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oBACA,4BACA,yBACA,yBACA,4BACA,yBACA,wBACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,wBACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,yBACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,yBACA,uBACA,wBACA,oBACA,+BACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,oBACA,8BACA,uBACA,yBACA,uBACA,yBACA,+BACA,6BACA,+BACA,2BACA,iCACA,gCACA,4BACA,6BACA,mCACA,8BACA,2BACA,wCACA,iCACA,wCACA,uCACAo1H,aACAyvC,qBAGA,WAmBA,cACA1kK;;;;;;;SAUA,YAQA,UAMA,cACA,QACAxnC,MACA,IACA,sBAAiDqnC,KAAQA,KACzD,MAAwB+zK,yBAAuBC,MAC/CnkL,2CAEAmkL,eACAC,SAKA,CALA,QAKAt7M,QASA,eACA,wBACAqnC,cAEAhvU,KAOA,oBACAkjf,QA5CA,iBACAF,SAAuBD,0BAgDvBvtK,MAQA,sBAGA,+BACA,YACAtsT,4BACAglT,gBACA1tU,SACA,YAOAioe,mCAAgFz5J,sBAAgB,CAChGznU,OACAsuQ,qCACA6yN,sBACAz/V,0BACAr2G,OACAA,QACAiuU,0BACAjuU,OACAA,QACA21c,qCACAv+Z,gBAMAy+Z,aACAA,gBAGAA,MAGA,YACAv/c,2BACA1oB,SACA,cACA,cACA6uU,gCAAgFL,sBAAgB,CAChGzkR,YACAhjD,OACA4kJ,WACAviH,iCACAkqc,sBAGA,WAGA5lK,kBAEA,YACAhlT,4BACA1oB,SACA,cAGA,UACA+pD,YACAhjD,OACAyhI,0BACAC,UACAimM,uBACAA,wBAIA6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ACA,CAEA,iCACA,+BACA9od,UACA8od,sBAGAD,kBACAof,qBACAhf,qBA+GA,mBACA,IACA,YACA,aACA1rK,aACA,iDAEAgqK,KAGAhqK,CAKA,CALA,MAEAA,GACA,gDAEAA,GA3HA79T,YACA,6BACA,4BACAupe,yBAGAif,GADArf,wBACAsf,IACA1pf,4BACAoqe,SAqBAzzN,wBACA,cAAyCuoD,GACzC,6BACAxnN,4CAEAiyY,sBACA,2BACA,mCACAp6K,2DAEAA,yBAGA,CAMA,gBADA,GACA,CARAA,2BAQA,CAEAvvU,sBAKAmzZ,aACAnzZ,+BAMAuoF,eACA,sBAMAuxL,UACA,oBAIA,gBADA,GACA,CAEA95Q,8CACAA,uCACA,oCACA,aACAA,mBAEAqgK,gBACA,wBA2CA,iBACA,OACAgvK,EADAz5T,iBACA25T,eAGAhmT,+BAA4C8lT,KAE5C,CA/CAu6K,yBAAqD,0BACrDA,kBAAuDnqP,sDA6IvD,SAEA5/P,sBACAG,aACAA,iBACAA,yBACAA,oBAEAA,4BACAA,eACAA,qBACAA,gBAKAA,uBAIAA,mBACAA,0EACAuhB,UACAvhB,oBACAA,iBAIA,aAAsC4G,IAAUsie,KAChDlpe,qEACAA,gCACAA,kCACAkpe,sBACAA,kBAGA9uJ,OAA6BxzU,IAAUsie,KAGvC,OACAlpe,kCACAmpe,sCACAse,4BAGAC,SACA1nf,iDACAA,kCACAA,gBACAkpe,mBAKA,8CACAue,yBACAznf,eACAA,gBACAA,kCACAkpe,iBAIA,WACAC,iBACAiB,oBAGApqe,eACY,OAAO0vU,YAAkC,WAuCrDx5D,eACA,2BAKA,gBADA,GACA,CAEA,MAEA4oD,EADAyQ,gBACAA,EAIAvvU,KADAi6b,kBACAphT,2BAEA74I,0CAEA,6CACA0vU,iBACA0K,8BACA8uJ,6BACAC,4BACAiB,2BACA,eACAA,8BAEAhwJ,kBACAp6U,6BACAwpf,uBACApf,IACAA,+BAGApqe,wBAKAo6U,GAYAyvK,OACA,sBAIA,gBADA,GACA,CAEA,IACA7pf,qBACA,yBACAuvU,iBAaA,CAbA,MAQAA,GAEAvvU,gFAGAA,sBAQAm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ApmDkFlB,6BAomDlG,UAAwI,CAACgub,GAAiBpvC,KAAcz9Y,EAAiB89b;;;;;;;;;;;;;;;;;;;;;oCCx5CvFj/b,2BACi1B,SADj1BA,CACi1B,UADj1BA,mBACukC,GADvkCA,+FAC++B,GAD/+BA,wBAC++B,8BAD/+BA,CAC++B,kCAD/+BA,wBAC68B,sBAD78BA,sBACukC,GADvkCA,+BACukC,8CADvkCA,2BACgqD,UADhqDA,mBACk4D,GADl4DA,gGAC0yD,8BAD1yDA,CAC0yD,kCAD1yDA,wBACgwD,8BADhwDA,sBACk4D,GADl4DA,+BACk4D,sGADl4DA,0DAC0qE,SAD1qEA,CAC0qE,cAD1qEA,uBACikI,gCADjkIA,wBACikI27F,qBAAUz4K,EAD3kI88E,wBACikI,GAAUugc,sBAD3kIvgc,2BACknI,WADlnIA,mBACy8I,GADz8IA,iDACw/I,YADx/IA,kKACgzE,sBADhzEA,CACgzE,8BADhzEA,CACgzE,kCADhzEA,wBACu6E,kBADv6EA,CACu6E,mBADv6EA,sBACsrF,GADtrFA,wBACsrF,yCADtrFA,CACsrF,mDADtrFA,CACsrF,kEADtrFA,CACsrF,8DADtrFA,CACsrF,4DADtrFA,CACsrF,+FADtrFA,CACsrF,2FADtrFA,CACsrF,4EADtrFA,CACsrF,wEADtrFA,CACsrF,iFADtrFA,CACsrF,sEADtrFA,CACsrF,kEADtrFA,CACsrF,iEADtrFA,uBAC4kF,wBAD5kFA,CAC4kF,yCAD5kFA,wBACy0H,0BADz0HA,CACy0H,kCADz0HA,CACy0H,+CADz0HA,CACy0H,4DADz0HA,sBAC+rI,GAD/rIA,wBAC+rI,6DAD/rIA,CAC+rI,oFAD/rIA,CAC+rI,2DAD/rIA,sBACy8I,GADz8IA,+BACy8I,qDADz8IA,2BACurC,UADvrCA,uBACgqD,gBADhqDA,uBAC0qE,iBAD1qEA,uHACqqD,GADrqDA,uBACqqD,mCADrqDA,sBACqsE,GADrsEA,uBACqsE,0CADrsEA,2BAymBoqB,SAzmBpqBA,CAymBoqB,YAzmBpqBA,mBAymBowB,GAzmBpwBA,sDAymBiyB,YAzmBjyBA,mBAymB4zB,GAzmB5zBA,+EAymBowB,GAzmBpwBA,8BAymBowB27F,SAzmBpwB37F,sBAymB4zB,GAzmB5zBA,8BAymB4zB27F,iFAzmB5zB37F,0DAwjDwlC,sBAxjDxlCA,uBAwjDgpC,gCAxjDhpCA,0BAwjDgpC27F,WAxjDhpC37F,4BAwjDgpCwgc,eAxjDhpCxgc,CAwjDgpC,8BAxjDhpCA,iCAwjDgpC27F,IAA2Sz4K,EAxjD37C88E,0BAwjD27Cygc,oBAxjD37Czgc,gGAwjDgpC,2BAxjDhpCA,CAwjDgpC,uBAxjDhpCA,CAwjDgpC,2BAxjDhpCA,CAwjDgpC,qBAxjDhpCA,CAwjDgpC,qBAxjDhpCA,CAwjDgpC,yBAxjDhpCA,CAwjDgpC,qCAxjDhpCA,CAwjDgpC,uEAxjDhpCA,0DAwjD8+C,qBAxjD9+CA,uBAwjDoiD,gCAxjDpiDA,0BAwjDoiD27F,WAxjDpiD37F,4BAwjDoiDwgc,eAxjDpiDxgc,CAwjDoiD,6BAxjDpiDA,iCAwjDoiD27F,IAAoNz4K,EAxjDxvD88E,0BAwjDwvD0gc,8BAxjDxvD1gc,CAwjDoiD,8BAxjDpiDA,iCAwjDoiD27F,IAAiRz4K,EAxjDrzD88E,0BAwjDqzD2gc,mBAAwB,WAxjD70D3gc,gGAwjDoiD,2BAxjDpiDA,CAwjDoiD,uBAxjDpiDA,CAwjDoiD,2BAxjDpiDA,CAwjDoiD,qBAxjDpiDA,CAwjDoiD,qBAxjDpiDA,CAwjDoiD,+DAxjDpiDA,0DAwjDk3D,2BAxjDl3DA,uBAwjDo7D,gCAxjDp7DA,0BAwjDo7D27F,WAxjDp7D37F,4BAwjDo7Dwgc,eAxjDp7Dxgc,CAwjDo7D,4BAxjDp7DA,iCAwjDo7D27F,IAAmNz4K,EAxjDvoE88E,0BAwjDuoE4gc,kCAxjDvoE5gc,CAwjDo7D,8BAxjDp7DA,iCAwjDo7D27F,IAAoRz4K,EAxjDxsE88E,0BAwjDwsE2gc,mBAAwB,UAxjDhuE3gc,gGAwjDo7D,2BAxjDp7DA,CAwjDo7D,uBAxjDp7DA,CAwjDo7D,2BAxjDp7DA,CAwjDo7D,qBAxjDp7DA,CAwjDo7D,qBAxjDp7DA,CAwjDo7D,2FAxjDp7DA,wDAyuF0rC,WAzuF1rCA,sBAyuF24C,YAzuF34CA,6LAy/G5F,WAz/G4FA,yBA0/G1F,GA1/G0FA;;;;;;;;AAxPlG,SACIp/E,YAAYmkB,EAAO0pI,GAAct6H,GAAWkvP,GAAS0sK,GAAa,GAAI8wF,GAAe97f,EAAOgiR,IACxFhmS,KAAKgkB,MAAQA,EACbhkB,KAAK0tJ,aAAeA,GACpB1tJ,KAAKozB,UAAYA,GACjBpzB,KAAKsiR,QAAUA,GACftiR,KAAKgvb,WAAaA,GAClBhvb,KAAK8/gB,aAAeA,GACpB9/gB,KAAKgmS,SAAWA,IAOxB,SACInmS,YAAYg/E,EAAa+8U,IACrB57Z,KAAK6+E,YAAcA,EACnB7+E,KAAK47Z,QAAUA,GAEf57Z,KAAK+/gB,QAAU,EAEf//gB,KAAKgghB,WAAa,EAElBhghB,KAAKighB,SAAU,EAKfjghB,KAAKkghB,gBAAkB,EAEvBlghB,KAAKmghB,aAAe,KAEpBnghB,KAAKoghB,WAAa,KAElBpghB,KAAKqghB,oBAAsB,IAAI/5G,eAE/Btma,KAAKsghB,cAAgB,IAAIh6G,eAKzBtma,KAAKughB,cAAiBx7b,KAClB,GAAI/kF,KAAKwghB,gBAAiC,UAAfz7b,GAAMn9E,KAC7B5H,KAAKwghB,gBAAiB,OAI1B,GAAIz7b,GAAM96C,QAAUjqC,KAAKighB,QAAS,CAC9B,MAAMh4L,GAAOjoV,KAAKyghB,oBAAoB17b,GAAM96C,QACxCg+S,IACAjoV,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKsghB,cAAc3vf,KAAK,CAAE3M,MAAOikU,GAAK3lE,QAAU2lE,GAAO,KAAMljQ,cAQhG/kF,KAAK0ghB,cAAiB37b,KAEM,OAApB/kF,KAAKoghB,YAAuBpghB,KAAKighB,SAI7Bl7b,GAAM96C,QAAUjqC,KAAKyghB,oBAAoB17b,GAAM96C,SAC/CjqC,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKsghB,cAAc3vf,KAAK,CAAE3M,MAAO,KAAM+gE,aAI1E62U,GAAQc,kBAAkB,KACtB,MAAM98T,GAAU/gB,EAAYhsE,cAC5B+sF,GAAQ6qK,iBAAiB,aAAczqQ,KAAKughB,eAAe,GAC3D3gb,GAAQ6qK,iBAAiB,QAASzqQ,KAAKughB,eAAe,GACtD3gb,GAAQ6qK,iBAAiB,aAAczqQ,KAAK0ghB,eAAe,GAC3D9gb,GAAQ6qK,iBAAiB,OAAQzqQ,KAAK0ghB,eAAe,KAI7DlB,aAAav3L,EAAMljQ,IACXkjQ,EAAK3lE,SACLtiR,KAAKqghB,oBAAoB1vf,KAAK,CAAE3M,MAAOikU,EAAKjkU,MAAO+gE,WAI3Dgnb,YAAY/nf,GACR,OAAOhkB,KAAK2ghB,aAAe38f,GAAShkB,KAAK4ghB,WAAa58f,EAE1DoQ,YAAYorD,GACR,MAAMqhc,GAAgBrhc,EAAQugc,SACtB7kL,QAAM6kL,YAAY//gB,MACtBw/E,EAAQ07Q,MAAW2lL,MACnB7ghB,KAAK8ghB,gBAAkB5lL,IAAQA,GAAK13V,QAAU03V,GAAK,GAAG13V,OAASu8gB,GAAU7kL,GAAK,GAAG13V,OAAS,IAE1Fg8E,EAAQ0gc,iBAAsBW,KAAkB7ghB,KAAK+ghB,gBACrD/ghB,KAAK+ghB,aAAmB,GAAK/ghB,KAAKkghB,gBAAmBH,GAAhC,MAErBc,KAAkB7ghB,KAAKghhB,cACvBhhhB,KAAKghhB,WAAgB,IAAMjB,GAAR,IAAQA,CAGnC72gB,cACI,MAAM02F,EAAU5/F,KAAK6+E,YAAYhsE,cACjC+sF,EAAQovK,oBAAoB,aAAchvQ,KAAKughB,eAAe,GAC9D3gb,EAAQovK,oBAAoB,QAAShvQ,KAAKughB,eAAe,GACzD3gb,EAAQovK,oBAAoB,aAAchvQ,KAAK0ghB,eAAe,GAC9D9gb,EAAQovK,oBAAoB,OAAQhvQ,KAAK0ghB,eAAe,GAG5DO,cAAc7vE,EAAU8vE,IACpB,IAAIC,GAAa/vE,EAAWpxc,KAAK+/gB,QAAUmB,GAE3C,OAAI9vE,IACA+vE,IAAcnhhB,KAAK8ghB,iBAEhBK,IAAcnhhB,KAAKgghB,WAwB9BoB,iBAAiBC,GAAc,GAC3BrhhB,KAAK47Z,QAAQc,kBAAkB,KAC3B18Z,KAAK47Z,QAAQgC,SAASv1Z,MAAKi5Q,OAAK,IAAIn7Q,UAAU,KAC1C0H,WAAW,KACP,MAAMmygB,GAAahghB,KAAK6+E,YAAYhsE,cAAc0qZ,cAAc,6BAC5DyiH,KACKqB,IACDrhhB,KAAKwghB,gBAAiB,GAE1BR,GAAWltgB,eAO/BwugB,cAAct9f,GACV,OAAO89S,GAAQ99S,EAAOhkB,KAAK2ghB,WAAY3ghB,KAAK4ghB,UAGhDW,YAAYv9f,GACR,OAAOw9f,GAAMx9f,EAAOhkB,KAAK2ghB,WAAY3ghB,KAAK4ghB,UAG9Ca,WAAWz9f,GACP,OAAOsgR,GAAUtgR,EAAOhkB,KAAK2ghB,WAAY3ghB,KAAK4ghB,SAAU5ghB,KAAKighB,SAGjEyB,mBAAmB19f,GACf,OAAO89S,GAAQ99S,EAAOhkB,KAAK2hhB,gBAAiB3hhB,KAAK4hhB,eAGrDC,yBAAyB79f,EAAOotb,GAAU8vE,IACtC,IAAKlhhB,KAAK0hhB,mBAAmB19f,IAAUhkB,KAAKshhB,cAAct9f,KAAWhkB,KAAKyhhB,WAAWz9f,GACjF,OAAO,EAEX,IAAI89f,GAAe9hhB,KAAKk7V,KAAKk2G,IAAU8vE,GAAW,GAClD,IAAKY,GAAc,CACf,MAAMC,GAAc/hhB,KAAKk7V,KAAKk2G,GAAW,GACzC0wE,GAAeC,IAAeA,GAAYA,GAAYv+gB,OAAS,GAEnE,OAAOs+gB,KAAiB9hhB,KAAKuhhB,YAAYO,GAAahC,cAG1DkC,uBAAuBh+f,EAAOotb,GAAU8vE,IACpC,IAAKlhhB,KAAKiihB,iBAAiBj+f,IAAUhkB,KAAKuhhB,YAAYv9f,KAAWhkB,KAAKyhhB,WAAWz9f,GAC7E,OAAO,EAEX,IAAIk+f,GAAWlihB,KAAKk7V,KAAKk2G,IAAU8vE,GAAW,GAC9C,IAAKgB,GAAU,CACX,MAAMC,GAAUnihB,KAAKk7V,KAAKk2G,GAAW,GACrC8wE,GAAWC,IAAWA,GAAQ,GAElC,OAAOD,KAAalihB,KAAKshhB,cAAcY,GAASpC,cAGpDmC,iBAAiBj+f,GACb,OAAOw9f,GAAMx9f,EAAOhkB,KAAK2hhB,gBAAiB3hhB,KAAK4hhB,eAGnDQ,qBAAqBp+f,GACjB,OAAOsgR,GAAUtgR,EAAOhkB,KAAK2hhB,gBAAiB3hhB,KAAK4hhB,cAAe5hhB,KAAKighB,SAY3EoC,uBAAuBr+f,GAGnB,OAAOhkB,KAAK2hhB,kBAAoB3hhB,KAAK4hhB,eAAiB59f,IAAUhkB,KAAK2hhB,gBAGzEW,gBAAgBt+f,GACZ,OAAO89S,GAAQ99S,EAAOhkB,KAAKmghB,aAAcnghB,KAAKoghB,YAGlDmC,cAAcv+f,GACV,OAAOw9f,GAAMx9f,EAAOhkB,KAAKmghB,aAAcnghB,KAAKoghB,YAGhDoC,aAAax+f,GACT,OAAOsgR,GAAUtgR,EAAOhkB,KAAKmghB,aAAcnghB,KAAKoghB,WAAYpghB,KAAKighB,SAGrEQ,oBAAoB7gb,GAChB,IAAIqoP,GAOJ,GANAtsT,GAAgBikE,GACZqoP,GAAOroP,EAEF6ib,GAAY7ib,EAAQiqP,cACzB5B,GAAOroP,EAAQiqP,YAEf5B,GAAM,CACN,MAAM1xR,GAAM0xR,GAAKr+S,aAAa,gBACxB84e,GAAMz6L,GAAKr+S,aAAa,gBAC9B,GAAI2sB,IAAOmsd,GACP,OAAO1ihB,KAAKk7V,KAAKjuV,SAASspD,KAAMtpD,SAASy1gB,KAGjD,OAAO,MA4Cf,YAAqBt3H,IACjB,MAAyB,OAAlBA,GAAK/kX,QAAa,CAG7B,YAAiBriB,GAAO6kB,EAAOC,IAC3B,OAAe,OAARA,IAAgBD,IAAUC,IAAO9kB,GAAQ8kB,IAAO9kB,KAAU6kB,EAGrE,YAAe7kB,GAAO6kB,EAAOC,IACzB,OAAiB,OAAVD,GAAkBA,IAAUC,IAAO9kB,IAAS6kB,GAAS7kB,KAAU8kB,GAG1E,YAAmB9kB,GAAO6kB,EAAOC,GAAK65e,IAClC,OAAQA,IACM,OAAV95e,GACQ,OAARC,IACAD,IAAUC,IACV9kB,IAAS6kB,GACT7kB,IAAS8kB;;;;;;;SA3DjB85e,GAAgB7jc,UAAhB,0BAA4G6jc,IAAV3jc,8BAA2CA,cAA3CA,8BAAqEA,YACvK2jc,GAAgBhjc,UADkFX,8BAClG,MAAgG2jc,GAAhGl/gB,0iBADkGu7E,kCAClG6iM,4pBADkG7iM,uBACi1B,gBADj1BA,uBACurC,iBAAzxC,MADkGA,uBACs1B,oDADt1BA,sBAC4sC,GAD5sCA,uBAC4sC,qBAA9yCuhM,YAA+wV9gM,KAAiFA,KAA0GA,MAA18VM,mlMAqEA,SACIngF,YAEAgpC,EAEAC,IACI9oC,KAAK6oC,MAAQA,EACb7oC,KAAK8oC,IAAMA,IAOnB,SACIjpC,YAEAumS,EAAWy8O,IACP7ihB,KAAKomS,UAAYA,EACjBpmS,KAAK6ihB,SAAWA,GAChB7ihB,KAAK8ihB,kBAAoB,IAAI/mgB,KAE7B/b,KAAK6kH,iBAAmB7kH,KAAK8ihB,kBAC7B9ihB,KAAKomS,UAAYA,EAOrB28O,gBAAgB/+f,EAAOiT,IACnB,MAAMqoE,GAAWt/F,KAAKomS,UACtBpmS,KAAKomS,UAAYpiR,EACjBhkB,KAAK8ihB,kBAAkBvhgB,KAAK,CAAE6kR,UAAWpiR,EAAOiT,UAAQqoE,cAE5Dp2F,cACIlJ,KAAK8ihB,kBAAkBjpgB,WAE3BmpgB,qBAAqB55a,GACjB,OAAOppG,KAAK6ihB,SAASr3X,eAAepiD,IAASppG,KAAK6ihB,SAASx2gB,QAAQ+8F,IAG3E65a,GAAsBlkc,UAAtB,YAhHkGE,gCAiHlGgkc,GAAsBj3X,WAjH4E/sE,+BAiHlG,OAAsHgkc,GAAtH5ghB,QAAsH4ghB,GAAtH,YAQA,iBAA0CA,GACtCpjhB,YAAY26c,GACR7ub,MAAM,KAAM6ub,GAMhB1yT,IAAI1+C,GACAz9E,MAAMo3f,gBAAgB35a,EAAMppG,MAGhCqM,UACI,OAAyB,MAAlBrM,KAAKomS,WAAqBpmS,KAAKgjhB,qBAAqBhjhB,KAAKomS,WAMpE88O,aACI,OAAyB,MAAlBljhB,KAAKomS,SAAa,CAG7B/7I,QACI,MAAMA,EAAQ,IAAI84X,GAA4BnjhB,KAAK6ihB,UACnDx4X,SAAM04X,gBAAgB/ihB,KAAKomS,UAAWpmS,MAC/BqqJ,GAGf84X,GAA4Bpkc,UAA5B,0BAAwHokc,IAtJtBlkc,qBAsJmEkkV,QACrKggH,GAA4Bn3X,WAvJsE/sE,+BAuJlG,OAA4Hkkc,GAA5H9ghB,QAA4H8ghB,GAA5H,YAQA,iBAAyCF,GACrCpjhB,YAAY26c,GACR7ub,MAAM,IAAIy3f,GAAU,KAAM,MAAO5oE,GAOrC1yT,IAAI1+C,GACA,IAAMvgE,SAAOC,QAAQ9oC,KAAKomS,UACb,MAATv9P,GACAA,GAAQugE,EAEI,MAAX8wC,GACDpxG,GAAMsgE,GAGNvgE,GAAQugE,EACRtgE,GAAM,MAEVnd,MAAMo3f,gBAAgB,IAAIK,GAAUv6e,GAAOC,IAAM9oC,MAGrDqM,UACI,MAAQw8B,QAAOC,QAAQ9oC,KAAKomS,UAE5B,OAAa,MAATv9P,GAAwB,MAAPC,KAIR,MAATD,GAAwB,MAAPC,GACT9oC,KAAKgjhB,qBAAqBn6e,IAC9B7oC,KAAKgjhB,qBAAqBl6e,KAC1B9oC,KAAK6ihB,SAAS9I,YAAYlxe,EAAOC,KAAQ,GAG/B,MAATD,GAAiB7oC,KAAKgjhB,qBAAqBn6e,MACxC,MAAPC,IAAe9oC,KAAKgjhB,qBAAqBl6e,MAMlDo6e,aACI,OAA+B,MAAxBljhB,KAAKomS,UAAUv9P,OAAuC,MAAtB7oC,KAAKomS,UAAUt9P,GAAO,CAGjEuhH,QACI,MAAMA,EAAQ,IAAIg5X,GAA2BrjhB,KAAK6ihB,UAClDx4X,SAAM04X,gBAAgB/ihB,KAAKomS,UAAWpmS,MAC/BqqJ,GAGfg5X,GAA2Btkc,UAA3B,0BAAuHskc,IArNrBpkc,qBAqNiEkkV,QACnKkgH,GAA2Br3X,WAtNuE/sE,+BAsNlG,OAA2Hokc,GAA3HhhhB,QAA2HghhB,GAA3H,YAYA,MAAMC,GAA2C,CAC7Cj7b,QAAS46b,GACTz2X,KAAM,CAAC,CAAC,IAAI+2X,WAAY,IAAIC,WAAYP,IAAwBn6X,MAChEutH,WAVJ,YAAiDv1I,GAAQ05U,GACrD,OAAO15U,IAAU,IAAIqiZ,GAA4B3oE,KAmBrD,MAAMipE,GAA0C,CAC5Cp7b,QAAS46b,GACTz2X,KAAM,CAAC,CAAC,IAAI+2X,WAAY,IAAIC,WAAYP,IAAwBn6X,MAChEutH,WAVJ,YAAgDv1I,GAAQ05U,GACpD,OAAO15U,IAAU,IAAIuiZ,GAA2B7oE,KAoB9CkpE,GAAoC,IAAIj7X,iBAAe;;;;;;;SAE7D,SACI5oJ,YAAY8jhB,GACR3jhB,KAAK2jhB,aAAeA,EAExBC,kBAAkBx6a,EAAMy6a,IACpB,IAAMh7e,SAAOC,QAAQ+6e,GACrB,OAAa,MAATh7e,GACAA,GAAQugE,EAEI,MAAX+wC,IAAmB/wC,GAAQppG,KAAK2jhB,aAAa5J,YAAY3wa,EAAMvgE,KAAU,EAC1EC,GAAMsgE,GAGNvgE,GAAQugE,EACRtgE,GAAM,MAEH,IAAIs6e,GAAUv6e,GAAOC,IAEhCg7e,cAAcrE,EAAYoE,IACtB,IAAIh7e,GAAQ,KACRC,GAAM,KACV,OAAI+6e,GAAah7e,QAAUg7e,GAAa/6e,KAAO22e,IAC3C52e,GAAQg7e,GAAah7e,MACrBC,GAAM22e,GAEH,IAAI2D,GAAUv6e,GAAOC,KAGpCi7e,GAAgChlc,UAAhC,0BAA4Hglc,IA3R1B9kc,qBA2R2EkkV,QAC7K4gH,GAAgC/3X,WA5RkE/sE,+BA4RlG,OAAgI8kc,GAAhI1hhB,QAAgI0hhB,GAAhI,YASA,MAAMC,GAAuC,CACzC37b,QAASq7b,GACTl3X,KAAM,CAAC,CAAC,IAAI+2X,WAAY,IAAIC,WAAYE,IAAoC56X,MAC5EutH,WAPJ,YAAsDv1I,GAAQ05U,GAC1D,OAAO15U,IAAU,IAAIijZ,GAAgCvpE;;;;;;;SAqBzD,SACI36c,YAAYsib,EAAoB8hG,GAAcN,GAAc57G,GAAMm8G,IAC9DlkhB,KAAKmib,mBAAqBA,EAC1Bnib,KAAKikhB,aAAeA,GACpBjkhB,KAAK2jhB,aAAeA,GACpB3jhB,KAAK+na,KAAOA,GACZ/na,KAAKkkhB,eAAiBA,GACtBlkhB,KAAKmkhB,sBAAwBrtH,UAE7B92Z,KAAK0zF,eAAiB,IAAI4yU,eAE1Btma,KAAKokhB,eAAiB,IAAI99G,eAE1Btma,KAAKqkhB,iBAAmB,IAAI/9G,eAS5Btma,KAAKskhB,YAActkhB,KAAK2jhB,aAAa54X,QAKrC00X,iBACA,OAAOz/gB,KAAKskhB,YAEZ7E,eAAWz7f,GACX,MAAMuggB,GAAgBvkhB,KAAKskhB,YACrBE,GAAYxkhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,KACjFhkB,KAAK2jhB,aAAa54X,QACtB/qJ,KAAKskhB,YAActkhB,KAAK2jhB,aAAazJ,UAAUsK,GAAWxkhB,KAAKykhB,QAASzkhB,KAAK0khB,SACxE1khB,KAAK2khB,qBAAqBJ,GAAevkhB,KAAKskhB,cAC/CtkhB,KAAKi7c,QAITtuX,eACA,OAAO3sF,KAAKyyF,UAEZ9F,aAAS3oE,GAELhkB,KAAKyyF,UADLzuE,aAAiBo/f,GACAp/f,EAGAhkB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAExFhkB,KAAK4khB,WAAW5khB,KAAKyyF,WAGrBgyb,cACA,OAAOzkhB,KAAK6khB,SAEZJ,YAAQzggB,GACRhkB,KAAK6khB,SAAW7khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAGnF0ggB,cACA,OAAO1khB,KAAK8khB,SAEZJ,YAAQ1ggB,GACRhkB,KAAK8khB,SAAW9khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAEvF2hQ,qBACI3lR,KAAKmkhB,sBAAwBnkhB,KAAK2jhB,aAAa9J,cAC1CxxgB,MAAK86a,OAAU,OACfh9a,UAAU,IAAMnG,KAAKi7c,SAE9B7mb,YAAYorD,GACR,MAAMulc,GAAmBvlc,EAAQmic,iBAAsBnic,EAAQoic,cAC3DmD,KAAqBA,GAAiBvmH,aACtCx+Z,KAAK4khB,WAAW5khB,KAAK2sF,UAG7BzjF,cACIlJ,KAAKmkhB,sBAAsBx2f,cAG/B+xf,cAAc36b,GACV,MAAMqkB,GAAOrkB,EAAM/gE,MACbkyH,GAAel2I,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAC9CjyS,GAAgBxtO,KAAK2jhB,aAAax2f,SAASntB,KAAKy/gB,YAChD9xT,GAAe3tN,KAAK2jhB,aAAa95X,WAAW3T,GAAcs3F,GAAepkI,IAC/E,IAAI2S,GACAC,GACAh8G,KAAKyyF,qBAAqB2wb,IAC1Brna,GAAiB/7G,KAAKglhB,uBAAuBhlhB,KAAKyyF,UAAU5pD,OAC5DmzE,GAAeh8G,KAAKglhB,uBAAuBhlhB,KAAKyyF,UAAU3pD,MAG1DizE,GAAiBC,GAAeh8G,KAAKglhB,uBAAuBhlhB,KAAKyyF,YAEjEspB,KAAmB3S,IAAQ4S,KAAiB5S,KAC5CppG,KAAK0zF,eAAe/iE,KAAKg9L,IAE7B3tN,KAAKokhB,eAAezzf,KAAK,CAAE3M,MAAO2pM,GAAc5oI,MAAOA,EAAMA,QAC7D/kF,KAAKilhB,cAAgBjlhB,KAAKklhB,YAAc,KACxCllhB,KAAKmib,mBAAmBvoO,eAG5BurU,2BAA2Bpgc,GAIvB,MAAMw/b,GAAgBvkhB,KAAKskhB,YACrBnuF,GAAQn2b,KAAKk0b,SACnB,OAAQnvW,EAAMpxE,cACLqlZ,KACDh5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAav4X,gBAAgBprJ,KAAKskhB,YAAanuF,GAAQ,GAAI,GAClF,WACCp9B,KACD/4Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAav4X,gBAAgBprJ,KAAKskhB,YAAanuF,IAAQ,EAAK,GACnF,WACCt9B,KACD74Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAav4X,gBAAgBprJ,KAAKskhB,aAAa,GACtE,WACC3rH,KACD34Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAav4X,gBAAgBprJ,KAAKskhB,YAAa,GACtE,WACCrrH,KACDj5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAav4X,gBAAgBprJ,KAAKskhB,YAAa,EAAItkhB,KAAK2jhB,aAAaz9f,QAAQlmB,KAAKskhB,cACzG,WACCnrH,KACDn5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAav4X,gBAAgBprJ,KAAKskhB,YAAatkhB,KAAK2jhB,aAAa/4X,kBAAkB5qJ,KAAKskhB,aAC3GtkhB,KAAK2jhB,aAAaz9f,QAAQlmB,KAAKskhB,cACnC,WACCc,KACDplhB,KAAKy/gB,WAAa16b,EAAMkyO,OAClBj3T,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,aAAa,GACrDtkhB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,aAAa,GAC5D,WACCe,KACDrlhB,KAAKy/gB,WAAa16b,EAAMkyO,OAClBj3T,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAAa,GACrDtkhB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,YAAa,GAC5D,WACCl4H,UACAinH,KAUD,OATArzgB,KAAKslhB,sBAAuB,OACxBtlhB,KAAKulhB,WAAWvlhB,KAAKskhB,cAMrBv/b,EAAM36C,kBAEV,KACCiiX,KASD,YAPwB,MAApBrsZ,KAAKklhB,eAAwB7rH,QAAet0U,KAC5C/kF,KAAKilhB,cAAgBjlhB,KAAKklhB,YAAc,KACxCllhB,KAAK0zF,eAAe/iE,KAAK,MACzB3wB,KAAKokhB,eAAezzf,KAAK,CAAE3M,MAAO,KAAM+gE,UACxCA,EAAM36C,iBACN26C,EAAMn6C,oBAEV,QAGA,OAEJ5qC,KAAK2jhB,aAAa5J,YAAYwK,GAAevkhB,KAAKy/gB,aAClDz/gB,KAAKqkhB,iBAAiB1zf,KAAK3wB,KAAKy/gB,YAEpCz/gB,KAAKohhB,mBAELr8b,EAAM36C,iBAGVo7e,yBAAyBzgc,IACjBA,EAAMpxE,UAAY0/f,MAAStub,EAAMpxE,UAAYy4Y,QACzCpsZ,KAAKslhB,sBAAwBtlhB,KAAKulhB,WAAWvlhB,KAAKskhB,cAClDtkhB,KAAK0/gB,cAAc,CAAE17f,MAAOhkB,KAAK2jhB,aAAaz9f,QAAQlmB,KAAKskhB,aAAcv/b,UAE7E/kF,KAAKslhB,sBAAuB,GAIpCrqE,QACIj7c,KAAK4khB,WAAW5khB,KAAK2sF,UACrB3sF,KAAKylhB,WAAazlhB,KAAK0lhB,qBAAqB1lhB,KAAK2jhB,aAAa54X,SAC9D/qJ,KAAK2lhB,YAAc3lhB,KAAKikhB,aAAahggB,QAAQ2hgB,WACvC5lhB,KAAK2jhB,aAAa78gB,OAAO9G,KAAKy/gB,WAAYz/gB,KAAKikhB,aAAahggB,QAAQ2hgB,YACpE5lhB,KAAK2jhB,aACFp5X,cAAc,SAASvqJ,KAAK2jhB,aAAax2f,SAASntB,KAAKy/gB,aAAanmH,oBAC7E,IAAIusH,EAAe7lhB,KAAK2jhB,aAAa95X,WAAW7pJ,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAAaz/gB,KAAK2jhB,aAAax2f,SAASntB,KAAKy/gB,YAAa,GACzIz/gB,KAAK8lhB,kBAnMS,EAqMN9lhB,KAAK2jhB,aAAar5X,aAAau7X,GAC/B7lhB,KAAK2jhB,aAAah5X,qBAtMZ,EAwMd3qJ,KAAK+lhB,gBACL/lhB,KAAKgmhB,mBACLhmhB,KAAKmib,mBAAmBvoO,eAG5BwnU,iBAAiBC,GACbrhhB,KAAKimhB,iBAAiB7E,iBAAiBC,GAG3C6E,iBAAkBnhc,QAAO/gE,MAAOikU,KAC5B,GAAIjoV,KAAKkkhB,eAAgB,CAGrB,MAAMlggB,GAAQikU,GAAOA,GAAKjiD,SAAW,KAC/BmgP,GAAenmhB,KAAKkkhB,eAAeJ,cAAc9/f,GAAOhkB,KAAK2sF,SAAU5H,GAC7E/kF,KAAKilhB,cAAgBjlhB,KAAK0lhB,qBAAqBS,GAAat9e,OAC5D7oC,KAAKklhB,YAAcllhB,KAAK0lhB,qBAAqBS,GAAar9e,KAK1D9oC,KAAKmib,mBAAmB1xZ,iBAIhCs1f,gBACI,MAAMz8X,EAAiBtpJ,KAAK2jhB,aAAah5X,oBACnCy7X,GAAiBpmhB,KAAK2jhB,aAAal5X,kBAAkB,UAG3D,IAAIV,GAAWs8X,KAFW1C,aAAal5X,kBAAkB,QAE7Bx3H,IAAI,CAAC2mS,GAAM15T,MAC5B,CAAE05T,QAAM0C,OAAQ8pN,GAAelmhB,OAE1CF,KAAKsmhB,UAAYv8X,GAAS9tI,MAAMqtI,GAAgBt7I,OAAO+7I,GAAS9tI,MAAM,EAAGqtI,IAG7E08X,mBACI,MAAMn7X,EAAc7qJ,KAAK2jhB,aAAa/4X,kBAAkB5qJ,KAAKy/gB,YACvD8G,GAAYvmhB,KAAK2jhB,aAAan5X,eACpCxqJ,KAAKwmhB,OAAS,CAAC,IACf,QAAStmhB,GAAI,EAAG+nV,GAAOjoV,KAAK8lhB,iBAAkB5lhB,GAAI2qJ,EAAa3qJ,KAAK+nV,KAAQ,CAhP9D,GAiPNA,KACAjoV,KAAKwmhB,OAAOrjhB,KAAK,IACjB8kV,GAAO,GAEX,MAAM7+O,GAAOppG,KAAK2jhB,aAAa95X,WAAW7pJ,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAAaz/gB,KAAK2jhB,aAAax2f,SAASntB,KAAKy/gB,YAAav/gB,GAAI,GACjIoiR,GAAUtiR,KAAKymhB,kBAAkBr9a,IACjCh2E,GAAYpzB,KAAK2jhB,aAAa78gB,OAAOsiG,GAAMppG,KAAKikhB,aAAahggB,QAAQmoI,eACrEs6X,GAAc1mhB,KAAK2mhB,UAAY3mhB,KAAK2mhB,UAAUv9a,GAAM,cAAWwvQ,EACrE54W,KAAKwmhB,OAAOxmhB,KAAKwmhB,OAAOhjhB,OAAS,GAAGL,KAAK,IAAIyjhB,GAAgB1mhB,GAAI,EAAGqmhB,GAAUrmhB,IAAIkzB,GAAWkvP,GAASokQ,GAAa1mhB,KAAK0lhB,qBAAqBt8a,IAAOA,MAI5Jq9a,kBAAkBr9a,GACd,QAAUA,KACJppG,KAAKykhB,SAAWzkhB,KAAK2jhB,aAAa5J,YAAY3wa,EAAMppG,KAAKykhB,UAAY,MACrEzkhB,KAAK0khB,SAAW1khB,KAAK2jhB,aAAa5J,YAAY3wa,EAAMppG,KAAK0khB,UAAY,MACrE1khB,KAAK+9E,YAAc/9E,KAAK+9E,WAAWqrB,IAM7C47a,uBAAuB57a,GACnB,OAAOA,GAAQppG,KAAK2khB,qBAAqBv7a,EAAMppG,KAAKy/gB,YAC9Cz/gB,KAAK2jhB,aAAaz9f,QAAQkjF,GAC1B,KAGVu7a,qBAAqB1mC,EAAI4oC,IACrB,SAAU5oC,IACN4oC,IACA7mhB,KAAK2jhB,aAAax2f,SAAS8wd,IAAOj+e,KAAK2jhB,aAAax2f,SAAS05f,KAC7D7mhB,KAAK2jhB,aAAav5X,QAAQ6zV,IAAOj+e,KAAK2jhB,aAAav5X,QAAQy8X,KAGnEnB,qBAAqBt8a,GACjB,GAAIA,EAAM,CAGN,MAAMpjF,GAAOhmB,KAAK2jhB,aAAav5X,QAAQhhD,GACjCu+C,GAAQ3nJ,KAAK2jhB,aAAax2f,SAASi8E,GACnCy+C,GAAM7nJ,KAAK2jhB,aAAaz9f,QAAQkjF,GACtC,OAAO,IAAI3jG,KAAKugB,GAAM2hI,GAAOE,IAAKlgI,UAEtC,OAAO,KAGXusa,SACI,OAAOl0b,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,KAAU,CAG5C4ggB,WAAWkC,GACHA,aAAyB1D,IACzBpjhB,KAAK+mhB,YAAc/mhB,KAAK0lhB,qBAAqBoB,EAAcj+e,OAC3D7oC,KAAKgnhB,UAAYhnhB,KAAK0lhB,qBAAqBoB,EAAch+e,KACzD9oC,KAAKinhB,UAAW,IAGhBjnhB,KAAK+mhB,YAAc/mhB,KAAKgnhB,UAAYhnhB,KAAK0lhB,qBAAqBoB,GAC9D9mhB,KAAKinhB,UAAW,GAEpBjnhB,KAAKknhB,sBAAwBlnhB,KAAK0lhB,qBAAqB1lhB,KAAK2hhB,iBAC5D3hhB,KAAKmnhB,oBAAsBnnhB,KAAK0lhB,qBAAqB1lhB,KAAK4hhB,eAG9D2D,WAAWn8a,GACP,OAAQppG,KAAK+9E,YAAc/9E,KAAK+9E,WAAWqrB,IAGnDg+a,GAAaroc,UAAb,0BAAyGqoc,IAxmBPnoc,8BAwmBqCA,qBAxmBrCA,8BAwmBsEytE,KAAxK,GAxmBkGztE,8BAwmBmHkkV,KAArN,GAxmBkGlkV,8BAwmBgK+mX,KAAlQ,GAxmBkG/mX,8BAwmB8Mykc,GAAhT,KACA0D,GAAaxnc,UAzmBqFX,8BAymBlG,MAA6Fmoc,GAA7F1jhB,gEAzmBkGu7E,wBAymBgc2jc,GAAliB,eAzmBkG3jc,2BAymBlGi7D,GAzmBkGj7D,6BAymBlG27F,yXAzmBkG37F,kCAymBlGxvC,kiBAzmBkGwvC,2BAymBijB,YAzmBjjBA,CAymBijB,YAzmBjjBA,CAymBijB,QAzmBjjBA,uBAymBoqB,gBAzmBpqBA,sDAymB+2B,QAzmB/2BA,sBAymBm3B,UAzmBn3BA,wDAymBg+B,aAzmBh+BA,uBAymBu/C,0CAAwB27F,sBAzmB/gD37F,CAymBu/C,oCAA4E27F,wBAzmBnkD37F,CAymBu/C,4BAA0H27F,iCAzmBjnD37F,CAymBu/C,8BAAmL27F,oCAzmB1qD37F,8BAymBlG,MAzmBkGA,sBAymBusB,GAzmBvsBA,uBAymBusB,wBAzmBvsBA,sBAymBmgC,GAzmBngCA,uBAymBmgC,uBAzmBngCA,CAymBmgC,iBAzmBngCA,CAymBmgC,2BAzmBngCA,CAymBmgC,4BAzmBngCA,CAymBmgC,wBAzmBngCA,CAymBmgC,2CAzmBngCA,CAymBmgC,uCAzmBngCA,CAymBmgC,gCAzmBngCA,CAymBmgC,4BAzmBngCA,CAymBmgC,sBAzmBngCA,CAymBmgC,0BAzmBngCA,CAymBmgC,yDAArmCuhM,YAAi2DoiQ,GAAiXljc,MAAltE26L,oCA4DA,SACIx6Q,YAAYsib,EAAoBwhG,GAAc57G,IAC1C/na,KAAKmib,mBAAqBA,EAC1Bnib,KAAK2jhB,aAAeA,GACpB3jhB,KAAK+na,KAAOA,GACZ/na,KAAKmkhB,sBAAwBrtH,UAE7B92Z,KAAK0zF,eAAiB,IAAI4yU,eAE1Btma,KAAK8rF,aAAe,IAAIw6U,eAExBtma,KAAKqkhB,iBAAmB,IAAI/9G,eACvBtma,KAAK2jhB,aAGV3jhB,KAAKskhB,YAActkhB,KAAK2jhB,aAAa54X,QAGrC00X,iBACA,OAAOz/gB,KAAKskhB,YAEZ7E,eAAWz7f,GACX,IAAIuggB,GAAgBvkhB,KAAKskhB,YACzB,MAAME,GAAYxkhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,KACjFhkB,KAAK2jhB,aAAa54X,QACtB/qJ,KAAKskhB,YAActkhB,KAAK2jhB,aAAazJ,UAAUsK,GAAWxkhB,KAAKykhB,QAASzkhB,KAAK0khB,SACxE2C,GAAoBrnhB,KAAK2jhB,aAAcY,GAAevkhB,KAAKskhB,YAAatkhB,KAAKykhB,QAASzkhB,KAAK0khB,UAC5F1khB,KAAKi7c,QAITtuX,eACA,OAAO3sF,KAAKyyF,UAEZ9F,aAAS3oE,GAELhkB,KAAKyyF,UADLzuE,aAAiBo/f,GACAp/f,EAGAhkB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAExFhkB,KAAKsnhB,iBAAiBtjgB,GAGtByggB,cACA,OAAOzkhB,KAAK6khB,SAEZJ,YAAQzggB,GACRhkB,KAAK6khB,SAAW7khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAGnF0ggB,cACA,OAAO1khB,KAAK8khB,SAEZJ,YAAQ1ggB,GACRhkB,KAAK8khB,SAAW9khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAEvF2hQ,qBACI3lR,KAAKmkhB,sBAAwBnkhB,KAAK2jhB,aAAa9J,cAC1CxxgB,MAAK86a,OAAU,OACfh9a,UAAU,IAAMnG,KAAKi7c,SAE9B/xc,cACIlJ,KAAKmkhB,sBAAsBx2f,cAG/Bstb,QACIj7c,KAAKunhB,WAAavnhB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAK2jhB,aAAa54X,SAO9D,MAAMy8X,GAAgBC,KADE9D,aAAav5X,QAAQpqJ,KAAKskhB,aACfoD,GAAgB1nhB,KAAK2jhB,aAAc3jhB,KAAKy/gB,WAAYz/gB,KAAKykhB,QAASzkhB,KAAK0khB,SAC1G1khB,KAAKuhK,OAAS,GACd,QAASrhK,GAAI,EAAGq2D,GAAM,GAAIr2D,GAlFb,GAkF+BA,KACxCq2D,GAAIpzD,KAAKqkhB,GAAgBtnhB,IAlFjB,GAmFJq2D,GAAI/yD,SACJxD,KAAKuhK,OAAOp+J,KAAKozD,GAAItjC,IAAIjN,IAAQhmB,KAAK2nhB,mBAAmB3hgB,MACzDuwC,GAAM,IAGdv2D,KAAKmib,mBAAmBvoO,eAG5BguU,cAAc7ic,GACV,MAAM/+D,GAAO++D,EAAM/gE,MACnBhkB,KAAK8rF,aAAan7D,KAAK3wB,KAAK2jhB,aAAa95X,WAAW7jI,GAAM,EAAG,IAC7D,IAAI2hI,GAAQ3nJ,KAAK2jhB,aAAax2f,SAASntB,KAAKy/gB,YACxC50X,GAAc7qJ,KAAK2jhB,aAAa/4X,kBAAkB5qJ,KAAK2jhB,aAAa95X,WAAW7jI,GAAM2hI,GAAO,IAChG3nJ,KAAK0zF,eAAe/iE,KAAK3wB,KAAK2jhB,aAAa95X,WAAW7jI,GAAM2hI,GAAOlgI,KAAK+2C,IAAIx+D,KAAK2jhB,aAAaz9f,QAAQlmB,KAAKy/gB,YAAa50X,MAG5Hs6X,2BAA2Bpgc,GACvB,MAAMw/b,GAAgBvkhB,KAAKskhB,YACrBnuF,GAAQn2b,KAAKk0b,SACnB,OAAQnvW,EAAMpxE,cACLqlZ,KACDh5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAAanuF,GAAQ,GAAI,GACnF,WACCp9B,KACD/4Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAAanuF,IAAQ,EAAK,GACpF,WACCt9B,KACD74Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,aA9GtD,GA+GJ,WACC3rH,KACD34Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAjHtD,GAkHJ,WACCrrH,KACDj5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,aAAcoD,GAAgB1nhB,KAAK2jhB,aAAc3jhB,KAAKy/gB,WAAYz/gB,KAAKykhB,QAASzkhB,KAAK0khB,UAC/I,WACCvrH,KACDn5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAxHrD,GAyHDoD,GAAgB1nhB,KAAK2jhB,aAAc3jhB,KAAKy/gB,WAAYz/gB,KAAKykhB,QAASzkhB,KAAK0khB,SACvE,GACJ,WACCU,KACDplhB,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAAav/b,EAAMkyO,QAAS,KA7HjF,IA8HL,WACCouN,KACDrlhB,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAAav/b,EAAMkyO,OAAS4wN,IAhIjF,IAiIL,WACCz7H,UACAinH,KAKDrzgB,KAAKslhB,sBAAuB,EAC5B,cAGA,OAEJtlhB,KAAK2jhB,aAAa5J,YAAYwK,GAAevkhB,KAAKy/gB,aAClDz/gB,KAAKqkhB,iBAAiB1zf,KAAK3wB,KAAKy/gB,YAEpCz/gB,KAAKohhB,mBAELr8b,EAAM36C,iBAGVo7e,yBAAyBzgc,IACjBA,EAAMpxE,UAAY0/f,MAAStub,EAAMpxE,UAAYy4Y,QACzCpsZ,KAAKslhB,sBACLtlhB,KAAK4nhB,cAAc,CAAE5jgB,MAAOhkB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKskhB,aAAcv/b,UAE7E/kF,KAAKslhB,sBAAuB,GAGpCwC,iBACI,OAAOJ,GAAgB1nhB,KAAK2jhB,aAAc3jhB,KAAKy/gB,WAAYz/gB,KAAKykhB,QAASzkhB,KAAK0khB,SAGlFtD,mBACIphhB,KAAKimhB,iBAAiB7E,mBAG1BuG,mBAAmB3hgB,GACf,MAAMojF,GAAOppG,KAAK2jhB,aAAa95X,WAAW7jI,EAAM,EAAG,GAC7C+hgB,GAAW/nhB,KAAK2jhB,aAAaj5X,YAAYthD,IACzCs9a,GAAc1mhB,KAAK2mhB,UAAY3mhB,KAAK2mhB,UAAUv9a,GAAM,mBAAgBwvQ,EAC1E,OAAO,IAAIguK,GAAgB5ggB,EAAM+hgB,GAAUA,GAAU/nhB,KAAKgohB,kBAAkBhigB,GAAO0ggB,IAGvFsB,kBAAkBhigB,GAEd,GACa,MADTA,GAEChmB,KAAK0khB,SAAW1+f,EAAOhmB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAK0khB,UACtD1khB,KAAKykhB,SAAWz+f,EAAOhmB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKykhB,SACvD,OAAO,EAGX,IAAKzkhB,KAAK+9E,WACN,OAAO,EAIX,QAASqrB,GAFWppG,KAAK2jhB,aAAa95X,WAAW7jI,EAAM,EAAG,GAE7BhmB,KAAK2jhB,aAAav5X,QAAQhhD,KAASpjF,EAAMojF,GAAOppG,KAAK2jhB,aAAav4X,gBAAgBhiD,GAAM,GACjH,GAAIppG,KAAK+9E,WAAWqrB,IAChB,OAAO,EAGf,OAAO,EAGX8qV,SACI,OAAOl0b,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,KAAU,CAG5CsjgB,iBAAiBtjgB,GAEb,GADAhkB,KAAKiohB,cAAgB,KACjBjkgB,aAAiBo/f,GAAW,CAC5B,MAAM11X,GAAe1pI,EAAM6kB,OAAS7kB,EAAM8kB,IACtC4kH,KACA1tJ,KAAKiohB,cAAgBjohB,KAAK2jhB,aAAav5X,QAAQsD,UAG9C1pI,IACLhkB,KAAKiohB,cAAgBjohB,KAAK2jhB,aAAav5X,QAAQpmI,KAqC3D,YAA6BkkgB,GAAa3nN,EAAOC,GAAOikN,GAASC,IAC7D,MAAMyD,GAAQD,GAAY99X,QAAQm2K,GAC5B6nN,GAAQF,GAAY99X,QAAQo2K,IAC5B6nN,GAAeC,GAAgBJ,GAAazD,GAASC,IAC3D,OAAQj9f,KAAKsd,OAAOojf,GAAQE,IAzPX,MA0Pb5ggB,KAAKsd,OAAOqjf,GAAQC,IA1PP,GA0PuBR,CAO5C,YAAyBK,GAAazI,EAAYgF,GAASC,IAEvD,OAkBJ,YAAyBj1gB,GAAG8qQ,GACxB,OAAS9qQ,GAAI8qQ,EAAKA,GAAKA;;;;;;;SAnBhBguQ,CADYL,GAAY99X,QAAQq1X,GACH6I,GAAgBJ,GAAazD,GAASC,IAnQzD,GAmQmEmD,CAMxF,YAAyBK,GAAazD,EAASC,IAC3C,IAAI2D,GAAe,EACnB,OAAI3D,GAEA2D,GAAeG,GADap+X,QAAQs6X,IA5QvB,GA6Q2B,EAEnCD,IACL4D,GAAeH,GAAY99X,QAAQq6X,IAEhC4D,GA9DXI,GAAiB1pc,UAAjB,0BAA6G0pc,IAn3BXxpc,8BAm3B6CA,qBAn3B7CA,8BAm3B8EkkV,KAAhL,GAn3BkGlkV,8BAm3B2H+mX,KAA7N,KACAyiF,GAAiB7oc,UAp3BiFX,8BAo3BlG,MAAiGwpc,GAAjG/khB,qEAp3BkGu7E,wBAo3BqY2jc,GAAve,eAp3BkG3jc,2BAo3BlGi7D,GAp3BkGj7D,6BAo3BlG27F,+oBAp3BkG37F,2BAo3Bqe,YAp3BreA,CAo3Bqe,YAp3BreA,CAo3Bqe,QAp3BreA,sBAo3BqmB,UAp3BrmBA,wDAo3B6rB,aAp3B7rBA,uBAo3Bg+B,0CAAwB27F,sBAp3Bx/B37F,CAo3Bg+B,4BAAoE27F,iCAp3BpiC37F,CAo3Bg+B,8BAA6H27F,oCAp3B7lC37F,8BAo3BlG,MAp3BkGA,sBAo3BguB,GAp3BhuBA,uBAo3BguB,iBAp3BhuBA,CAo3BguB,2BAp3BhuBA,CAo3BguB,8BAp3BhuBA,CAo3BguB,4BAp3BhuBA,CAo3BguB,YAp3BhuBA,CAo3BguB,sBAp3BhuBA,CAo3BguB,oCAAl0BuhM,YAAoxCoiQ,IAApxCvoQ,oCA+EA,SACIx6Q,YAAYsib,EAAoB8hG,GAAcN,GAAc57G,IACxD/na,KAAKmib,mBAAqBA,EAC1Bnib,KAAKikhB,aAAeA,GACpBjkhB,KAAK2jhB,aAAeA,GACpB3jhB,KAAK+na,KAAOA,GACZ/na,KAAKmkhB,sBAAwBrtH,UAE7B92Z,KAAK0zF,eAAiB,IAAI4yU,eAE1Btma,KAAK0ohB,cAAgB,IAAIpiH,eAEzBtma,KAAKqkhB,iBAAmB,IAAI/9G,eAS5Btma,KAAKskhB,YAActkhB,KAAK2jhB,aAAa54X,QAGrC00X,iBACA,OAAOz/gB,KAAKskhB,YAEZ7E,eAAWz7f,GACX,IAAIuggB,GAAgBvkhB,KAAKskhB,YACzB,MAAME,GAAYxkhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,KACjFhkB,KAAK2jhB,aAAa54X,QACtB/qJ,KAAKskhB,YAActkhB,KAAK2jhB,aAAazJ,UAAUsK,GAAWxkhB,KAAKykhB,QAASzkhB,KAAK0khB,SACzE1khB,KAAK2jhB,aAAav5X,QAAQm6X,MAAmBvkhB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKskhB,cAC5EtkhB,KAAKi7c,QAITtuX,eACA,OAAO3sF,KAAKyyF,UAEZ9F,aAAS3oE,GAELhkB,KAAKyyF,UADLzuE,aAAiBo/f,GACAp/f,EAGAhkB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAExFhkB,KAAK2ohB,kBAAkB3kgB,GAGvByggB,cACA,OAAOzkhB,KAAK6khB,SAEZJ,YAAQzggB,GACRhkB,KAAK6khB,SAAW7khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAGnF0ggB,cACA,OAAO1khB,KAAK8khB,SAEZJ,YAAQ1ggB,GACRhkB,KAAK8khB,SAAW9khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAEvF2hQ,qBACI3lR,KAAKmkhB,sBAAwBnkhB,KAAK2jhB,aAAa9J,cAC1CxxgB,MAAK86a,OAAU,OACfh9a,UAAU,IAAMnG,KAAKi7c,SAE9B/xc,cACIlJ,KAAKmkhB,sBAAsBx2f,cAG/Bi7f,eAAe7jc,GACX,MAAM4iE,GAAQ5iE,EAAM/gE,MACd6kgB,GAAiB7ohB,KAAK2jhB,aAAa95X,WAAW7pJ,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAAa93X,GAAO,GACvG3nJ,KAAK0ohB,cAAc/3f,KAAKk4f,IACxB,MAAMh+X,GAAc7qJ,KAAK2jhB,aAAa/4X,kBAAkBi+X,IACxD7ohB,KAAK0zF,eAAe/iE,KAAK3wB,KAAK2jhB,aAAa95X,WAAW7pJ,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAAa93X,GAAOlgI,KAAK+2C,IAAIx+D,KAAK2jhB,aAAaz9f,QAAQlmB,KAAKy/gB,YAAa50X,MAGlKs6X,2BAA2Bpgc,GAIvB,MAAMw/b,GAAgBvkhB,KAAKskhB,YACrBnuF,GAAQn2b,KAAKk0b,SACnB,OAAQnvW,EAAMpxE,cACLqlZ,KACDh5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,YAAanuF,GAAQ,GAAI,GACpF,WACCp9B,KACD/4Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,YAAanuF,IAAQ,EAAK,GACrF,WACCt9B,KACD74Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,aAAa,GACxE,WACC3rH,KACD34Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,YAAa,GACxE,WACCrrH,KACDj5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,aAActkhB,KAAK2jhB,aAAax2f,SAASntB,KAAKskhB,cACzG,WACCnrH,KACDn5Z,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKskhB,YAAa,GAAKtkhB,KAAK2jhB,aAAax2f,SAASntB,KAAKskhB,cAC7G,WACCc,KACDplhB,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAAav/b,EAAMkyO,QAAS,IAAM,GAC5F,WACCouN,KACDrlhB,KAAKy/gB,WAAaz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKskhB,YAAav/b,EAAMkyO,OAAS,GAAK,GAC3F,WACCm1F,UACAinH,KAKDrzgB,KAAKslhB,sBAAuB,EAC5B,cAGA,OAEJtlhB,KAAK2jhB,aAAa5J,YAAYwK,GAAevkhB,KAAKy/gB,aAClDz/gB,KAAKqkhB,iBAAiB1zf,KAAK3wB,KAAKy/gB,YAEpCz/gB,KAAKohhB,mBAELr8b,EAAM36C,iBAGVo7e,yBAAyBzgc,IACjBA,EAAMpxE,UAAY0/f,MAAStub,EAAMpxE,UAAYy4Y,QACzCpsZ,KAAKslhB,sBACLtlhB,KAAK4ohB,eAAe,CAAE5kgB,MAAOhkB,KAAK2jhB,aAAax2f,SAASntB,KAAKskhB,aAAcv/b,UAE/E/kF,KAAKslhB,sBAAuB,GAIpCrqE,QACIj7c,KAAK2ohB,kBAAkB3ohB,KAAK2sF,UAC5B3sF,KAAK8ohB,YAAc9ohB,KAAK+ohB,uBAAuB/ohB,KAAK2jhB,aAAa54X,SACjE/qJ,KAAKgphB,WAAahphB,KAAK2jhB,aAAaj5X,YAAY1qJ,KAAKy/gB,YACrD,IAAIwJ,EAAajphB,KAAK2jhB,aAAap5X,cAAc,SAEjDvqJ,KAAKkphB,QAAU,CACX,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,GAAI,KACbj2f,IAAIsjC,IAAOA,GAAItjC,IAAI00H,IAAS3nJ,KAAKmphB,oBAAoBxhY,GAAOshY,EAAWthY,OACzE3nJ,KAAKmib,mBAAmBvoO,eAG5BwnU,mBACIphhB,KAAKimhB,iBAAiB7E,mBAM1B2H,uBAAuB3/a,GACnB,OAAOA,GAAQppG,KAAK2jhB,aAAav5X,QAAQhhD,IAASppG,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAC3Ez/gB,KAAK2jhB,aAAax2f,SAASi8E,GAC3B,KAGV+/a,oBAAoBxhY,EAAOyhY,IACvB,MAAMhgb,GAAOppG,KAAK2jhB,aAAa95X,WAAW7pJ,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAAa93X,EAAO,GACvFv0H,GAAYpzB,KAAK2jhB,aAAa78gB,OAAOsiG,GAAMppG,KAAKikhB,aAAahggB,QAAQooI,oBACrEq6X,GAAc1mhB,KAAK2mhB,UAAY3mhB,KAAK2mhB,UAAUv9a,GAAM,aAAUwvQ,EACpE,OAAO,IAAIguK,GAAgBj/X,EAAOyhY,GAAU9vH,oBAAqBlmY,GAAWpzB,KAAKqphB,mBAAmB1hY,GAAQ++X,IAGhH2C,mBAAmB1hY,GACf,MAAM8/X,GAAaznhB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKy/gB,YAClD,GACc,MADV93X,GAEA3nJ,KAAKsphB,4BAA4B7B,GAAY9/X,IAC7C3nJ,KAAKuphB,6BAA6B9B,GAAY9/X,GAC9C,OAAO,EAEX,IAAK3nJ,KAAK+9E,WACN,OAAO,EAIX,QAASqrB,GAFYppG,KAAK2jhB,aAAa95X,WAAW49X,GAAY9/X,EAAO,GAEvC3nJ,KAAK2jhB,aAAax2f,SAASi8E,KAASu+C,EAAOv+C,GAAOppG,KAAK2jhB,aAAav4X,gBAAgBhiD,GAAM,GACpH,GAAIppG,KAAK+9E,WAAWqrB,IAChB,OAAO,EAGf,OAAO,EAMXkgb,4BAA4BtjgB,EAAM2hI,IAC9B,GAAI3nJ,KAAK0khB,QAAS,CACd,MAAM8D,GAAUxohB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAK0khB,SACzC8E,GAAWxphB,KAAK2jhB,aAAax2f,SAASntB,KAAK0khB,SACjD,OAAO1+f,EAAOwigB,IAAYxigB,IAASwigB,IAAW7gY,GAAQ6hY,GAE1D,OAAO,EAMXD,6BAA6BvjgB,EAAM2hI,IAC/B,GAAI3nJ,KAAKykhB,QAAS,CACd,MAAMgF,GAAUzphB,KAAK2jhB,aAAav5X,QAAQpqJ,KAAKykhB,SACzCiF,GAAW1phB,KAAK2jhB,aAAax2f,SAASntB,KAAKykhB,SACjD,OAAOz+f,EAAOyjgB,IAAYzjgB,IAASyjgB,IAAW9hY,GAAQ+hY,GAE1D,OAAO,EAGXx1F,SACI,OAAOl0b,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,KAAU,CAG5C2kgB,kBAAkB3kgB,GAEVhkB,KAAK2phB,eADL3lgB,aAAiBo/f,GAEbpjhB,KAAK+ohB,uBAAuB/kgB,EAAM6kB,QAAU7oC,KAAK+ohB,uBAAuB/kgB,EAAM8kB,KAG5D9oC,KAAK+ohB,uBAAuB/kgB,IAI9D4lgB,GAAY7qc,UAAZ,0BAAwG6qc,IA5qCN3qc,8BA4qCmCA,qBA5qCnCA,8BA4qCoEytE,KAAtK,GA5qCkGztE,8BA4qCiHkkV,KAAnN,GA5qCkGlkV,8BA4qC8J+mX,KAAhQ,KACA4jF,GAAYhqc,UA7qCsFX,8BA6qClG,MAA4F2qc,GAA5FlmhB,+DA7qCkGu7E,wBA6qCuX2jc,GAAzd,eA7qCkG3jc,2BA6qClGi7D,GA7qCkGj7D,6BA6qClG27F,4qBA7qCkG37F,2BA6qCkd,YA7qCldA,CA6qCkd,YA7qCldA,CA6qCkd,QA7qCldA,sBA6qCklB,UA7qCllBA,wDA6qC0qB,aA7qC1qBA,uBA6qC4iC,0CAAwB27F,uBA7qCpkC37F,CA6qC4iC,4BAAqE27F,iCA7qCjnC37F,CA6qC4iC,8BAA8H27F,oCA7qC1qC37F,8BA6qClG,MA7qCkGA,sBA6qC6sB,GA7qC7sBA,uBA6qC6sB,sBA7qC7sBA,CA6qC6sB,kBA7qC7sBA,CA6qC6sB,4BA7qC7sBA,CA6qC6sB,+BA7qC7sBA,CA6qC6sB,6BA7qC7sBA,CA6qC6sB,0BA7qC7sBA,CA6qC6sB,YA7qC7sBA,CA6qC6sB,sBA7qC7sBA,CA6qC6sB,wDAA/yBuhM,YAAi2CoiQ,IAAj2CvoQ;;;;;;;;AA8CA,SACIx6Q,cAKIG,KAAKw/E,QAAU,IAAIzjE,KAEnB/b,KAAK6phB,cAAgB,WAErB7phB,KAAK8phB,kBAAoB,gBAEzB9phB,KAAK+phB,mBAAqB,iBAE1B/phB,KAAKgqhB,eAAiB,iBAEtBhqhB,KAAKiqhB,eAAiB,aAEtBjqhB,KAAKkqhB,cAAgB,gBAErBlqhB,KAAKmqhB,cAAgB,YAErBnqhB,KAAKoqhB,mBAAqB,oBAE1BpqhB,KAAKqqhB,mBAAqB,gBAE1BrqhB,KAAKsqhB,uBAAyB,cAE9BtqhB,KAAKuqhB,2BAA6B,wBAGtCC,gBAAgB3hf,EAAOC,IACnB,MAAQ,GAAED,YAAgBC,MAGlC2hf,GAAkB1rc,UAAlB,0BAA8G0rc,KAC9GA,GAAkBz+X,WA/vCgF/sE,+BA+vClG,OAAkHwrc,GAAlHpohB,QAAkHoohB,GAAlH,qBAAiJ;;;;;;;;AAcjJ,IAAI/3I,GAAW,EAEf,SACI7yY,YAAY6qhB,EAAOrxN,GAAUsqN,GAAcM,GAAcjF,IACrDh/gB,KAAK0qhB,MAAQA,EACb1qhB,KAAKq5T,SAAWA,GAChBr5T,KAAK2jhB,aAAeA,GACpB3jhB,KAAKikhB,aAAeA,GACpBjkhB,KAAK2qhB,qBAAwB,uBAAsBj4I,KACnD1yY,KAAKq5T,SAAS9nO,aAAaprF,UAAU,IAAM64gB,GAAkBplU,gBAG7DgxU,uBACA,GAAiC,SAA7B5qhB,KAAKq5T,SAASwxN,YACd,OAAO7qhB,KAAK2jhB,aACP78gB,OAAO9G,KAAKq5T,SAASomN,WAAYz/gB,KAAKikhB,aAAahggB,QAAQkoI,gBAC3DmtQ,oBAET,GAAiC,QAA7Bt5Z,KAAKq5T,SAASwxN,YACd,OAAO7qhB,KAAK2jhB,aAAaj5X,YAAY1qJ,KAAKq5T,SAASomN,YAMvD,MAAM+H,GAAgBC,KADE9D,aAAav5X,QAAQpqJ,KAAKq5T,SAASomN,YAEvDiI,GAAgB1nhB,KAAK2jhB,aAAc3jhB,KAAKq5T,SAASomN,WAAYz/gB,KAAKq5T,SAASorN,QAASzkhB,KAAKq5T,SAASqrN,SAChGoG,GAAgBtD,GAzoBT,GAyoBwC,EAC/CuD,GAAc/qhB,KAAK2jhB,aAAaj5X,YAAY1qJ,KAAK2jhB,aAAa95X,WAAW29X,GAAe,EAAG,IAC3FwD,GAAchrhB,KAAK2jhB,aAAaj5X,YAAY1qJ,KAAK2jhB,aAAa95X,WAAWihY,GAAe,EAAG,IACjG,OAAO9qhB,KAAK0qhB,MAAMF,gBAAgBO,GAAaC,IAE/CC,wBACA,MAAoC,SAA7BjrhB,KAAKq5T,SAASwxN,YACf7qhB,KAAK0qhB,MAAMH,2BACXvqhB,KAAK0qhB,MAAMJ,uBAGjBY,sBACA,MAAO,CACHvjY,MAAS3nJ,KAAK0qhB,MAAMV,eACpBhkgB,KAAQhmB,KAAK0qhB,MAAMR,cACnB,aAAclqhB,KAAK0qhB,MAAMN,oBAC3BpqhB,KAAKq5T,SAASwxN,aAGhBM,sBACA,MAAO,CACHxjY,MAAS3nJ,KAAK0qhB,MAAMT,eACpBjkgB,KAAQhmB,KAAK0qhB,MAAMP,cACnB,aAAcnqhB,KAAK0qhB,MAAML,oBAC3BrqhB,KAAKq5T,SAASwxN,aAGpBO,uBACIprhB,KAAKq5T,SAASwxN,YAA2C,SAA7B7qhB,KAAKq5T,SAASwxN,YAAyB,aAAe,QAGtFQ,kBACIrrhB,KAAKq5T,SAASomN,WACmB,SAA7Bz/gB,KAAKq5T,SAASwxN,YACR7qhB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKq5T,SAASomN,YAAY,GAC9Dz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKq5T,SAASomN,WAAyC,QAA7Bz/gB,KAAKq5T,SAASwxN,aAAwB,GA5qBhG,GA4qBsGhD,CAGvHyD,cACItrhB,KAAKq5T,SAASomN,WACmB,SAA7Bz/gB,KAAKq5T,SAASwxN,YACR7qhB,KAAK2jhB,aAAax4X,kBAAkBnrJ,KAAKq5T,SAASomN,WAAY,GAC9Dz/gB,KAAK2jhB,aAAaz4X,iBAAiBlrJ,KAAKq5T,SAASomN,WAAyC,QAA7Bz/gB,KAAKq5T,SAASwxN,YAAwB,EAnrBhG,GAmrBoGhD,CAGrH0D,kBACI,OAAKvrhB,KAAKq5T,SAASorN,WAGVzkhB,KAAKq5T,SAASorN,UAAYzkhB,KAAKwrhB,YAAYxrhB,KAAKq5T,SAASomN,WAAYz/gB,KAAKq5T,SAASorN,SAFjF,CAKfgH,cACI,OAASzrhB,KAAKq5T,SAASqrN,UAAY1khB,KAAKwrhB,YAAYxrhB,KAAKq5T,SAASomN,WAAYz/gB,KAAKq5T,SAASqrN,SAGhG8G,YAAYjrN,EAAOC,IACf,MAAiC,SAA7BxgU,KAAKq5T,SAASwxN,YACN7qhB,KAAK2jhB,aAAav5X,QAAQm2K,IAAUvgU,KAAK2jhB,aAAav5X,QAAQo2K,KAClExgU,KAAK2jhB,aAAax2f,SAASozS,IAAUvgU,KAAK2jhB,aAAax2f,SAASqzS,IAEvC,QAA7BxgU,KAAKq5T,SAASwxN,YACP7qhB,KAAK2jhB,aAAav5X,QAAQm2K,IAAUvgU,KAAK2jhB,aAAav5X,QAAQo2K,IAGlE6mN,GAAoBrnhB,KAAK2jhB,aAAcpjN,EAAOC,GAAOxgU,KAAKq5T,SAASorN,QAASzkhB,KAAKq5T,SAASqrN,UAGzGgH,GAAkB3sc,UAAlB,0BAA8G2sc,IA52CZzsc,8BA42C+Cwrc,IA52C/Cxrc,+BA42C6EwlX,gBAAW,IAAMknF,KA52C9F1sc,8BA42CuHkkV,KAAzN,GA52CkGlkV,8BA42CoKytE,KAAtQ,GA52CkGztE,8BA42CiNA,uBACnTysc,GAAkB9rc,UA72CgFX,8BA62ClG,MAAkGysc,GAAlGhohB,klBA72CkGu7E,yDA62C8G,UA72C9GA,CA62C8G,UA72C9GA,CA62C8G,cA72C9GA,uBA62CqR,0BAAU27F,4BA72C/R37F,2BA62Cwc,UA72CxcA,mBA62Cif,GA72CjfA,mFA62CohB,WA72CphBA,sBA62CyrB,eA72CzrBA,iFA62CgwB,WA72ChwBA,yBA62CizB,GA72CjzBA,2BA62Ck1B,cA72Cl1BA,uBA62Cg9B,0BAAU27F,uBA72C19B37F,sDA62CwjC,eA72CxjCA,uBA62C8qC,0BAAU27F,mBA72CxrC37F,gCA62ClG,MA72CkGA,sBA62CwT,GA72CxTA,wBA62CwT,kCA72CxTA,CA62CwT,4CA72CxTA,sBA62C8c,GA72C9cA,wBA62C8c,8BA72C9cA,sBA62Cif,GA72CjfA,8BA62Cif27F,qBA72Cjf37F,sBA62CsjB,GA72CtjBA,wBA62CsjB,yDA72CtjBA,sBA62C86B,GA72C96BA,uBA62C86B,kCA72C96BA,wBA62C2/B,iCA72C3/BA,sBA62CgpC,GA72ChpCA,uBA62CgpC,8BA72ChpCA,wBA62CqtC,mCAAvzCuhM,YAAw5CsjK,MAAx5CzpK,oCAkBA,SACIx6Q,YAAY6qhB,EAAO/G,GAAcM,GAAc9hG,IAC3Cnib,KAAK2jhB,aAAeA,GACpB3jhB,KAAKikhB,aAAeA,GACpBjkhB,KAAKmib,mBAAqBA,GAM1Bnib,KAAK4rhB,sBAAuB,EAE5B5rhB,KAAK6rhB,UAAY,QAEjB7rhB,KAAK0zF,eAAiB,IAAI4yU,eAK1Btma,KAAK8rF,aAAe,IAAIw6U,eAKxBtma,KAAK0ohB,cAAgB,IAAIpiH,eAIzBtma,KAAK8rhB,YAAc,IAAIxlH,gBAAa,GAEpCtma,KAAKokhB,eAAiB,IAAI99G,eAI1Btma,KAAKuxF,aAAe,IAAIx1E,KASxB/b,KAAK+rhB,aAAerB,EAAMlrc,QAAQr5E,UAAU,KACxCg8a,GAAmBvoO,eACnB55M,KAAKuxF,aAAahwE,SAItByqgB,cACA,OAAOhshB,KAAKishB,SAEZD,YAAQhogB,GACRhkB,KAAKishB,SAAWjshB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAGnF2oE,eACA,OAAO3sF,KAAKyyF,UAEZ9F,aAAS3oE,GAELhkB,KAAKyyF,UADLzuE,aAAiBo/f,GACAp/f,EAGAhkB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAIxFyggB,cACA,OAAOzkhB,KAAK6khB,SAEZJ,YAAQzggB,GACRhkB,KAAK6khB,SAAW7khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAGnF0ggB,cACA,OAAO1khB,KAAK8khB,SAEZJ,YAAQ1ggB,GACRhkB,KAAK8khB,SAAW9khB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAMnFy7f,iBACA,OAAOz/gB,KAAKkshB,mBAEZzM,eAAWz7f,GACXhkB,KAAKkshB,mBAAqBlshB,KAAK2jhB,aAAazJ,UAAUl2f,EAAOhkB,KAAKykhB,QAASzkhB,KAAK0khB,SAChF1khB,KAAKuxF,aAAahwE,OAClBvhB,KAAKmib,mBAAmBvoO,eAGxBixU,kBACA,OAAO7qhB,KAAKmshB,aAEZtB,gBAAY7mgB,GACZ,MAAMoogB,GAAoBpshB,KAAKmshB,eAAiBnogB,EAAQA,EAAQ,KAChEhkB,KAAKmshB,aAAenogB,EACpBhkB,KAAK4rhB,sBAAuB,EAC5B5rhB,KAAKmib,mBAAmBvoO,eACpBwyU,IACApshB,KAAK8rhB,YAAYn7f,KAAKy7f,IAG9BzmQ,qBACI3lR,KAAKqshB,sBAAwB,IAAI/rF,KAAgBtgc,KAAKsshB,iBAAmBZ,IACzE1rhB,KAAKy/gB,WAAaz/gB,KAAKgshB,SAAWhshB,KAAK2jhB,aAAa54X,QAEpD/qJ,KAAKmshB,aAAenshB,KAAK6rhB,UAE7B7sb,qBACQh/F,KAAK4rhB,uBACL5rhB,KAAK4rhB,sBAAuB,EAC5B5rhB,KAAKushB,mBAGbrjhB,cACIlJ,KAAK+rhB,aAAap+f,cAClB3tB,KAAKuxF,aAAa13E,WAEtBua,YAAYorD,GAIR,MAAMgtc,GAAgBhtc,EAAQilc,UACzBzkhB,KAAK2jhB,aAAap6gB,SAASi2E,EAAQilc,QAAWvgT,cAAe1kJ,EAAQilc,QAAW72X,cAC/EpuE,EAAQilc,aACR7rK,EACA6zK,GAAgBjtc,EAAQklc,UACzB1khB,KAAK2jhB,aAAap6gB,SAASi2E,EAAQklc,QAAWxgT,cAAe1kJ,EAAQklc,QAAW92X,cAC/EpuE,EAAQklc,aACR9rK,EACA7qF,GAASy+P,IAAiBC,IAAiBjtc,EAAQzB,WACzD,GAAIgwM,KAAWA,GAAOywI,YAAa,CAC/B,MAAMzwM,GAAO/tN,KAAK0shB,2BACd3+T,KAGA/tN,KAAKmib,mBAAmB1xZ,gBACxBs9L,GAAKktP,SAGbj7c,KAAKuxF,aAAahwE,OAGtBgrgB,kBACIvshB,KAAK0shB,2BAA2BtL,kBAAiB,GAGrDuL,mBACI3shB,KAAK0shB,2BAA2BzxE,QAGpCykE,cAAc36b,GACV,MAAMqkB,GAAOrkB,EAAM/gE,OACfhkB,KAAK2sF,oBAAoBy2b,IACxBh6a,KAASppG,KAAK2jhB,aAAap6gB,SAAS6/F,GAAMppG,KAAK2sF,YAChD3sF,KAAK0zF,eAAe/iE,KAAKy4E,IAE7BppG,KAAKokhB,eAAezzf,KAAKo0D,GAG7B86b,6BAA6B+M,GACzB5shB,KAAK8rF,aAAan7D,KAAKi8f,GAG3BjN,yBAAyBkN,GACrB7shB,KAAK0ohB,cAAc/3f,KAAKk8f,GAG5BjN,gBAAgBx2a,EAAM2kH,IAClB/tN,KAAKy/gB,WAAar2a,EAClBppG,KAAK6qhB,YAAc98T,GAGvB2+T,2BAII,OAAO1shB,KAAK8shB,WAAa9shB,KAAK+shB,UAAY/shB,KAAKgthB,eAGvDrB,GAAY5sc,UAAZ,0BAAwG4sc,IAvjDN1sc,8BAujDmCwrc,IAvjDnCxrc,8BAujDiEkkV,KAAnK,GAvjDkGlkV,8BAujD8GytE,KAAhN,GAvjDkGztE,8BAujD2JA,uBAC7P0sc,GAAY/rc,UAxjDsFX,8BAwjDlG,MAA4F0sc,GAA5FjohB,+DAxjDkGu7E,wBAwjDgoBmoc,GAAluB,GAxjDkGnoc,wBAwjDutB2qc,GAAzzB,GAxjDkG3qc,wBAwjDkzBwpc,GAAp5B,gBAxjDkGxpc,2BAwjDlGi7D,GAxjDkGj7D,6BAwjDlG27F,uBAxjDkG37F,2BAwjDlGi7D,GAxjDkGj7D,6BAwjDlG27F,sBAxjDkG37F,2BAwjDlGi7D,GAxjDkGj7D,6BAwjDlG27F,ofAxjDkG37F,+BAwjDihB,CAACqkc,KAxjDlhBrkc,kCAwjDlGxvC,m+BAxjDkGwvC,uBAwjDm6B,0BAxjDn6BA,2BAwjD8+B,WAxjD9+BA,uBAwjDwlC,6BAxjDxlCA,uBAwjD8+C,4BAxjD9+CA,uBAwjDk3D,kCAxjDl3DA,4BAwjDlG,MAxjDkGA,uBAwjDg7B,4CAxjDh7BA,sBAwjDkhC,GAxjDlhCA,uBAwjDkhC,2BAxjDlhCA,sBAwjDgnC,GAxjDhnCA,uBAwjDgnC,wBAxjDhnCA,sBAwjDqgD,GAxjDrgDA,uBAwjDqgD,uBAxjDrgDA,sBAwjD+4D,GAxjD/4DA,uBAwjD+4D,+BAAj/DuhM,YAAo4H4mQ,GAA4QwC,GAAoOnB,GAAiQwE,KAAgJC,KAA2Hxtc,KAAqEA,MAAr8JM;;;;;;;;AAmEA,MAAMmtc,GAA0B,CAE5BC,gBAAgB/ic,QAAQ,iBAAkB,EACtCgjc,QAAW,0BAA0BjuQ,QAAQ,oCAAoCkuQ,QAAU,EACvFv6f,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,mBAC/B6V,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,qBAEnCmwgB,QAAW,wBAAwBjuQ,QAAQ,oCAAoCkuQ,QAAU,EACrFv6f,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,gBAC/B6V,QAAM,CAAE7V,UAAW,OAAQ4tR,QAAS,SAExCuiP,QAAW,aAAajuQ,QAAQ,gBAAgBrsP,QAAM,CAAE+3Q,QAAS,QAGrEyiP,gBAAgBljc,QAAQ,iBAAkB,EACtCsjQ,QAAM,QAAQ56T,QAAM,CAAE+3Q,QAAS,MAC/B6iD,QAAM,SAAS56T,QAAM,CAAE+3Q,QAAS,MAGhCuiP,QAAW,aAAajuQ,QAAQ,oDAKxC,IAAIouQ,EAAgB,EAEpB,MAAMC,GAAiC,IAAIhlY,iBAAe,kCAM1D,MAAMilY,GAAkD,CACpDrlc,QAASolc,GACTjhY,KAAM,CAACsuS,MACPzkL,WAPJ,WAAgD9uL,IAC5C,MAAO,IAAMA,GAAQuyW,iBAAiBthJ,eAUpCm1O,IAA4B/uc,QAAW,MACzC/+E,YAAYg/E,IACR7+E,KAAK6+E,YAAcA,MAU3B,iBAAmC8uc,GAC/B9thB,YAAYq/E,EAAYijW,GAAoByrG,GAAcjK,GAAckK,GAAyBpqP,IAC7F93Q,MAAMuzD,GACNl/E,KAAKmib,mBAAqBA,GAC1Bnib,KAAK4thB,aAAeA,GACpB5thB,KAAK2jhB,aAAeA,GACpB3jhB,KAAK6thB,wBAA0BA,GAC/B7thB,KAAK8thB,eAAiB,IAAIh3H,IAE1B92Z,KAAK+thB,eAAiB,IAAIhygB,KAE1B/b,KAAKguhB,eAAiB,KACtBhuhB,KAAKiuhB,iBAAmBxqP,GAAKsmP,mBAEjCvnhB,WAIIxC,KAAKkuhB,OAASluhB,KAAKguhB,eAAiBhuhB,KAAK4thB,aAAavjY,QAAUrqJ,KAAK4thB,aACrE5thB,KAAKmuhB,gBAAkBnuhB,KAAKouhB,WAAWC,QAAU,eAAiB,iBAEtEz7gB,kBACI5S,KAAK8thB,eAAehmY,IAAI9nJ,KAAKouhB,WAAW78b,aAAaprF,UAAU,KAC3DnG,KAAKmib,mBAAmBvoO,kBAE5B55M,KAAKsuhB,UAAU/B,kBAEnBrjhB,cACIlJ,KAAK8thB,eAAenggB,cACpB3tB,KAAK+thB,eAAel0gB,WAExB00gB,qBAAqBxpc,GACjB,MAAMqhN,GAAYpmS,KAAKkuhB,OAAO9nP,UACxBpiR,GAAQ+gE,EAAM/gE,MACdi8f,GAAU75O,cAAqBg9O,GAMrC,GAAInD,IAAWjghB,KAAK6thB,wBAAyB,CACzC,MAAMlgQ,GAAe3tR,KAAK6thB,wBAAwBjK,kBAAkB5/f,GAAOoiR,GAAWrhN,EAAMA,OAC5F/kF,KAAKkuhB,OAAOnL,gBAAgBp1P,GAAc3tR,WAErCgkB,KACJi8f,KAAYjghB,KAAK2jhB,aAAap6gB,SAASya,GAAOoiR,MAC/CpmS,KAAKkuhB,OAAOpmY,IAAI9jI,MAGdhkB,KAAKkuhB,QAAUluhB,KAAKkuhB,OAAOhL,gBAAkBljhB,KAAKguhB,gBACpDhuhB,KAAKouhB,WAAWvrhB,QAGxB2rhB,sBACIxuhB,KAAKmuhB,gBAAkB,OACvBnuhB,KAAKmib,mBAAmBvoO,eAE5B60U,eACI,OAAOzuhB,KAAKkuhB,OAAO9nP,UAGvBsoP,yBACQ1uhB,KAAKkuhB,SAAWluhB,KAAK4thB,cACrB5thB,KAAK4thB,aAAa7K,gBAAgB/ihB,KAAKkuhB,OAAO9nP,UAAWpmS,OAIrE2uhB,GAAqB5vc,UAArB,0BAAiH4vc,IAjvDf1vc,8BAivDqDA,cAjvDrDA,8BAivD+EA,qBAjvD/EA,8BAivDgHgkc,IAjvDhHhkc,8BAivDkJkkV,MAjvDlJlkV,8BAivD+Kykc,GAAjR,GAjvDkGzkc,8BAivD6Owrc,MAC/UkE,GAAqB/uc,UAlvD6EX,8BAkvDlG,MAAqG0vc,GAArGjrhB,wEAlvDkGu7E,wBAkvDkY0sc,GAApe,eAlvDkG1sc,2BAkvDlGi7D,GAlvDkGj7D,6BAkvDlG27F,4GAlvDkG37F,oCAkvDlG,yCAAqG27F,2BAArG,MAlvDkG37F,oCAkvDlG,sCAlvDkGA,wBAkvDlG,2HAlvDkGA,wCAkvDlGxvC,sdAlvDkGwvC,2BAkvDyf,UAlvDzfA,CAkvDyf,oBAlvDzfA,uBAkvD+4C,mCAAiB27F,+BAlvDh6C37F,CAkvD+4C,oCAAyE27F,gCAlvDx9C37F,CAkvD+4C,kCAAgI27F,gCAlvD/gD37F,CAkvD+4C,qCAA0L27F,8BAlvDzkD37F,kDAkvD6nD,0BAlvD7nDA,2BAkvD+vD,cAlvD/vDA,uBAkvDi8D,kDAAgC,GAlvDj+DA,CAkvDi8D,iDAA2E,GAlvD5gEA,CAkvDi8D,0BAAkG27F,wBAlvDniE37F,mBAkvDwjE,GAlvDxjEA,8BAkvDlG,YAlvDkGA,wBAkvD0qB,4FAlvD1qBA,CAkvD0qB,mEAlvD1qBA,wBAkvDoiB,gBAlvDpiBA,CAkvDoiB,wEAlvDpiBA,sBAkvDg3B,GAlvDh3BA,uBAkvDg3B,sBAlvDh3BA,CAkvDg3B,mCAlvDh3BA,CAkvDg3B,gCAlvDh3BA,CAkvDg3B,oCAlvDh3BA,CAkvDg3B,sCAlvDh3BA,CAkvDg3B,sCAlvDh3BA,CAkvDg3B,4CAlvDh3BA,CAkvDg3B,wDAlvDh3BA,CAkvDg3B,6BAlvDh3BA,CAkvDg3B,oCAlvDh3BA,CAkvDg3B,qCAlvDh3BA,CAkvDg3B,iCAlvDh3BA,CAkvDg3B,2BAlvDh3BA,sBAkvD0oD,GAlvD1oDA,uBAkvD0oD,qCAlvD1oDA,sBAkvDu4D,GAlvDv4DA,wBAkvDu4D,+CAlvDv4DA,uBAkvDwzD,6BAlvDxzDA,sBAkvDwjE,GAlvDxjEA,8BAkvDwjE27F,uBAA1pE4lG,YAAg2GmrQ,GAAiU7nG,KAAuTopG,KAAwIxtc,KAA2Eutc,MAA3qIjtc,mqCAAg0I,CAACmtc,GAAwBC,eAAgBD,GAAwBI,iBAAj4IzzU,oBAqBA,SACIj6M,YAAYu7b,EAAUx/B,GAASx7P,GAAmBurR,GAAgBg4F,GAAc57G,GAAMmmH,IAClFluhB,KAAKo7b,SAAWA,EAChBp7b,KAAK47Z,QAAUA,GACf57Z,KAAKogK,kBAAoBA,GACzBpgK,KAAK2jhB,aAAeA,GACpB3jhB,KAAK+na,KAAOA,GACZ/na,KAAKkuhB,OAASA,GACdluhB,KAAK4uhB,mBAAqB93H,UAE1B92Z,KAAK6rhB,UAAY,QACjB7rhB,KAAK6uhB,UAAW,EAEhB7uhB,KAAK8uhB,UAAY,QAEjB9uhB,KAAK+uhB,UAAY,QACjB/uhB,KAAKgvhB,eAAgB,EAKrBhvhB,KAAK8rF,aAAe,IAAIw6U,eAKxBtma,KAAK0ohB,cAAgB,IAAIpiH,eAIzBtma,KAAK8rhB,YAAc,IAAIxlH,gBAAa,GAEpCtma,KAAKivhB,aAAe,IAAI3oH,eAExBtma,KAAKkvhB,aAAe,IAAI5oH,eACxBtma,KAAKmvhB,SAAU,EAEfnvhB,KAAKqqE,GAAM,kBAAiBmjd,IAE5BxthB,KAAKovhB,0BAA4B,KAEjCpvhB,KAAKqvhB,sBAAyB,GAAErvhB,KAAKqqE,cAErCrqE,KAAKuxF,aAAe,IAAIx1E,KACnB/b,KAAK2jhB,aAGV3jhB,KAAKitb,gBAAkBtB,GAGvBqgG,cAGA,OAAOhshB,KAAKishB,WAAajshB,KAAKsvhB,gBAAkBtvhB,KAAKsvhB,gBAAgBC,gBAAkB,MAEvFvD,YAAQhogB,GACRhkB,KAAKishB,SAAWjshB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IAGnFstE,YACA,OAAQtxF,KAAK0xF,SAAW1xF,KAAKsvhB,gBAAkBtvhB,KAAKsvhB,gBAAgBE,uBAAoB52K,GAExFtnR,UAAMttE,GACNhkB,KAAK0xF,OAAS1tE,EAMdqqgB,cACA,OAAOruhB,KAAK6uhB,SAEZR,YAAQrqgB,GACRhkB,KAAK6uhB,UAAW1wH,QAAsBn6Y,GAGtCsJ,eACA,YAA0BsrV,IAAnB54W,KAAKmua,WAA2Bnua,KAAKsvhB,gBACtCtvhB,KAAKsvhB,gBAAgBhigB,WACnBttB,KAAKmua,UAEb7gZ,aAAStJ,GACT,MAAMwuW,IAAW2rC,QAAsBn6Y,GACnCwuW,KAAaxyX,KAAKmua,YAClBnua,KAAKmua,UAAY37C,GACjBxyX,KAAKuxF,aAAahwE,UAAKq3V,IAQ3B62K,mBACA,OAAOzvhB,KAAKgvhB,cAEZS,iBAAazrgB,GACbhkB,KAAKgvhB,eAAgB7wH,QAAsBn6Y,GAM3C/P,iBACA,OAAOjU,KAAK0vhB,YAEZz7gB,eAAW+P,GACXhkB,KAAK0vhB,aAAcnrB,QAAkBvgf,GAGrCg5E,aACA,OAAOh9F,KAAKmvhB,QAEZnyb,WAAOh5E,IACPm6Y,QAAsBn6Y,GAAShkB,KAAK4M,OAAS5M,KAAK6C,QAGtD8shB,cACI,OAAO3vhB,KAAKsvhB,iBAAmBtvhB,KAAKsvhB,gBAAgB9wd,IAGxDoxd,cACI,OAAO5vhB,KAAKsvhB,iBAAmBtvhB,KAAKsvhB,gBAAgBxnf,IAExD+nf,iBACI,OAAO7vhB,KAAKsvhB,iBAAmBtvhB,KAAKsvhB,gBAAgBvxc,WAExD3pD,YAAYorD,GACR,MAAM0lW,GAAiB1lW,EAAQsvc,WAAgBtvc,EAAQuvc,UACvD,GAAI7pG,KAAmBA,GAAe1mB,aAAex+Z,KAAKkqb,YAAa,CACnE,MAAM9hW,GAAmBpoF,KAAKkqb,YAAYkE,YAAYhmW,iBAClDA,cAA4B0wW,OAC5B94b,KAAK8vhB,uBAAuB1nc,IACxBpoF,KAAKg9F,QACLh9F,KAAKkqb,YAAYE,kBAI7Bpqb,KAAKuxF,aAAahwE,UAAKq3V,GAE3B1vW,cACIlJ,KAAK+vhB,kBACL/vhB,KAAK6C,QACL7C,KAAK4uhB,mBAAmBjhgB,cACxB3tB,KAAKuxF,aAAa13E,WAGtBu+D,OAAOgxB,GACHppG,KAAKkuhB,OAAOpmY,IAAI1+C,GAGpB4mb,YAAYpD,GACR5shB,KAAK8rF,aAAan7D,KAAKi8f,GAG3BqD,aAAapD,GACT7shB,KAAK0ohB,cAAc/3f,KAAKk8f,GAG5BqD,aAAaniU,GACT/tN,KAAK8rhB,YAAYn7f,KAAKo9L,GAO1BomT,cAAct2a,GACN,YAAKyxb,gBAGTtvhB,KAAK4uhB,mBAAmBjhgB,cACxB3tB,KAAKsvhB,gBAAkBzxb,EACvB79F,KAAK4uhB,mBAAqB/wb,EAAMtM,aAAaprF,UAAU,IAAMnG,KAAKuxF,aAAahwE,UAAKq3V,IAC7E54W,KAAKkuhB,OAMhBiC,gBAAgBhnV,GACRnpM,KAAKguhB,eAGThuhB,KAAKguhB,eAAiB7kV,EAM1BinV,cAAcjnV,GACNA,IAAWnpM,KAAKguhB,iBAChBhuhB,KAAKguhB,eAAiB,MAI9BphhB,OACQ5M,KAAKmvhB,SAAWnvhB,KAAKstB,WAGpBttB,KAAKsvhB,gBAGVtvhB,KAAKovhB,2BAA4B3wH,UACjCz+Z,KAAKqwhB,eACLrwhB,KAAKmvhB,SAAU,EACfnvhB,KAAKivhB,aAAat+f,QAGtB9tB,QACI,IAAK7C,KAAKmvhB,QACN,OAEJ,GAAInvhB,KAAKu1d,cAAe,CACpB,MAAMvyP,GAAWhjO,KAAKu1d,cAAcvyP,SACpCA,GAASwrT,sBACTxrT,GAAS+qT,eAAe1lhB,MAAKi5Q,OAAK,IAAIn7Q,UAAU,IAAMnG,KAAK+vhB,mBAE/D,MAAMO,EAAgB,KAGdtwhB,KAAKmvhB,UACLnvhB,KAAKmvhB,SAAU,EACfnvhB,KAAKkvhB,aAAav+f,OAClB3wB,KAAKovhB,0BAA4B,OAGrCpvhB,KAAKgvhB,eACLhvhB,KAAKovhB,2BAC2C,mBAAzCpvhB,KAAKovhB,0BAA0Bt8gB,OAMtC9S,KAAKovhB,0BAA0Bt8gB,QAC/BjF,WAAWyihB,IAGXA,IAIR5B,yBACI,IAAI74N,EAAI4/F,GAC8E,QAArFA,GAAmC,QAA7B5/F,EAAK71T,KAAKu1d,qBAAkC,IAAP1/J,OAAgB,EAASA,EAAG7yF,gBAA6B,IAAPyyL,IAAyBA,GAAGi5H,yBAG9H6B,sBAAsBvtT,GAClBA,EAASorT,WAAapuhB,KACtBgjO,EAAS1xI,MAAQtxF,KAAKsxF,MACtB0xI,EAASgrT,eAAiBhuhB,KAAKguhB,eAC/BhrT,EAASwtT,eAAiBxwhB,KAAKsvhB,gBAAgBmB,oBAGnDJ,eACIrwhB,KAAK+vhB,kBACL,MAAMW,EAAW1whB,KAAKquhB,QAChBllV,GAAS,IAAIm3P,KAAgBquF,GAAsB3uhB,KAAKogK,mBACxDl5E,GAAclnF,KAAKkqb,YAAclqb,KAAKo7b,SAASjzW,OAAO,IAAIsyW,KAAc,CAC1EryW,iBAAkBsoc,EAAW1whB,KAAK2whB,qBAAuB3whB,KAAK4whB,uBAC9Dl3Z,aAAa,EACbkyT,cAAe,CACX8kG,EAAW,4BAA8B,mCACzC1whB,KAAKqvhB,uBAETvuY,UAAW9gJ,KAAK+na,KAChB4jB,eAAgB+kG,EAAW1whB,KAAKo7b,SAAStB,iBAAiBvO,QAAUvrb,KAAKitb,kBACzEh5a,WAAa,mBAAiBy8gB,EAAW,SAAW,YAExD1whB,KAAK6whB,gBAAgB3pc,IAAY/gF,UAAU4+E,KACnCA,IACAA,GAAM36C,iBAEVpqC,KAAK6C,UAMTqkF,GAAWgnW,gBAAgB/nb,UAAU4+E,KACjC,MAAMpxE,GAAUoxE,GAAMpxE,SAClBA,KAAYklZ,MACZllZ,KAAYglZ,MACZhlZ,KAAYqlZ,MACZrlZ,KAAYolZ,MACZplZ,KAAYyxgB,MACZzxgB,KAAY0xgB,OACZtgc,GAAM36C,mBAGdpqC,KAAKu1d,cAAgBruY,GAAWsB,OAAO2gH,IACvCnpM,KAAKuwhB,sBAAsBvwhB,KAAKu1d,cAAcvyP,UAEzC0tT,GACD1whB,KAAK47Z,QAAQgC,SAASv1Z,MAAKi5Q,OAAK,IAAIn7Q,UAAU,IAAM+gF,GAAWkjW,kBAIvE2lG,kBACQ/vhB,KAAKkqb,cACLlqb,KAAKkqb,YAAY/iW,UACjBnnF,KAAKkqb,YAAclqb,KAAKu1d,cAAgB,MAIhDo7D,qBACI,OAAO3whB,KAAKo7b,SAASjnb,WAAWi7T,SAASkpH,qBAAqBC,mBAGlEq4F,uBACI,MAAMh6N,EAAW52T,KAAKo7b,SACjBjnb,WACAqzE,oBAAoBxnF,KAAKsvhB,gBAAgBzlB,6BACzC91E,sBAAsB,2BACtBV,wBAAuB,GACvBD,mBAAmB,GACnBO,qBACL,OAAO3zb,KAAK8vhB,uBAAuBl5N,GAGvCk5N,uBAAuBl5N,GACnB,MAAMk6N,GAA8B,QAAnB9whB,KAAK8uhB,UAAsB,MAAQ,QAC9CiC,GAA0B,UAAbD,GAAuB,MAAQ,QAC5CE,GAA8B,UAAnBhxhB,KAAK+uhB,UAAwB,SAAW,MACnDkC,GAA0B,QAAbD,GAAqB,SAAW,MACnD,OAAOp6N,EAASjvO,cAAc,CAC1B,CACIG,QAASgpc,GACT/oc,QAASkpc,GACTjpc,SAAU8oc,GACV7oc,SAAU+oc,IAEd,CACIlpc,QAASgpc,GACT/oc,QAASipc,GACThpc,SAAU8oc,GACV7oc,SAAUgpc,IAEd,CACInpc,QAASipc,GACThpc,QAASkpc,GACTjpc,SAAU+oc,GACV9oc,SAAU+oc,IAEd,CACIlpc,QAASipc,GACThpc,QAASipc,GACThpc,SAAU+oc,GACV9oc,SAAUgpc,MAKtBJ,gBAAgB3pc,GACZ,OAAO09S,OAAM19S,EAAW8mW,gBAAiB9mW,EAAW+mW,cAAe/mW,EAAWgnW,gBAAgB7lb,MAAK3B,OAAOq+E,IAE7FA,GAAMpxE,UAAY04Y,QAAWgN,QAAet0U,KAChD/kF,KAAKsvhB,kBAAmBj2H,QAAet0U,GAAO,WAAaA,GAAMpxE,UAAYklZ,SAI9Fq4H,GAAkBnyc,UAAlB,0BAA8Gmyc,IAjnEZjyc,8BAinE+Ckyc,MAjnE/Clyc,8BAinEsEA,UAjnEtEA,8BAinE4FA,oBAjnE5FA,8BAinE4Hwuc,IAjnE5Hxuc,8BAinEuKkkV,KAAzQ,GAjnEkGlkV,8BAinEoN+mX,KAAtT,GAjnEkG/mX,8BAinEkQgkc,MACpWiO,GAAkBlyc,UAlnEgFC,8BAknElG,MAAkGiyc,GAAlG1nc,ibAlnEkGvK;;;;;;;;AA+qElG,iBAA4Biyc,IAE5BE,GAAcryc,UAAd,qDAjrEkGE,kCAirEQmyc,MAA1Gx2W,IAA0Gw2W,KAA1G,GACAA,GAAcxxc,UAlrEoFX,8BAkrElG,MAA8Fmyc,GAA9F1thB,oEAlrEkGu7E,+BAkrEkD,CAC5Iqkc,GACA,CAAEj7b,QAAS6oc,GAAmB1yb,YAAa4yb,MAprE+Cnyc,wCAkrElGxvC;;;;;;;;AA+BA,SACI5vC,YAEAoqC,EAEAonf,IACIrxhB,KAAKiqC,OAASA,EACdjqC,KAAKqxhB,cAAgBA,GACrBrxhB,KAAKgkB,MAAQhkB,KAAKiqC,OAAOjmB,OAIjC,SACInkB,YAAYg/E,EAAa8kc,GAAcM,IACnCjkhB,KAAK6+E,YAAcA,EACnB7+E,KAAK2jhB,aAAeA,GACpB3jhB,KAAKikhB,aAAeA,GAEpBjkhB,KAAK2D,WAAa,IAAI2ia,eAEtBtma,KAAKksJ,UAAY,IAAIo6Q,eAErBtma,KAAKuxF,aAAe,IAAIx1E,KACxB/b,KAAK0mgB,WAAa,OAClB1mgB,KAAKsxhB,mBAAqB,OAC1BtxhB,KAAKuxhB,aAAe,OACpBvxhB,KAAKwxhB,0BAA4B16H,UACjC92Z,KAAKyxhB,oBAAsB36H,UAE3B92Z,KAAK0xhB,gBAAkB,IACZ1xhB,KAAK2xhB,gBACN,KACA,CAAEC,mBAAsB,CAAErob,KAAQvpG,KAAK6+E,YAAYhsE,cAAcmR,QAG3EhkB,KAAK6xhB,iBAAoB1gc,KACrB,MAAM2gc,GAAe9xhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYp6D,GAAQntE,QAChG,OAAQ8tgB,IAAgB9xhB,KAAK+xhB,eAAeD,IACtC,KACA,CAAEE,qBAAuB,IAGnChyhB,KAAKiyhB,cAAiB9gc,KAClB,MAAM2gc,GAAe9xhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYp6D,GAAQntE,QAC1Fw6C,GAAMx+D,KAAK2vhB,cACjB,OAAQnxd,KAAQszd,IAAgB9xhB,KAAK2jhB,aAAa5J,YAAYv7c,GAAKszd,KAAiB,EAC9E,KACA,CAAEI,iBAAoB,CAAE1zd,IAAOA,GAAK8wb,OAAUwiC,MAGxD9xhB,KAAKmyhB,cAAiBhhc,KAClB,MAAM2gc,GAAe9xhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYp6D,GAAQntE,QAC1F8jB,GAAM9nC,KAAK4vhB,cACjB,OAAQ9nf,KAAQgqf,IAAgB9xhB,KAAK2jhB,aAAa5J,YAAYjye,GAAKgqf,KAAiB,EAC9E,KACA,CAAEM,iBAAoB,CAAEtqf,IAAOA,GAAKwnd,OAAUwiC,MAGxD9xhB,KAAK2xhB,iBAAkB,EAUvB3xhB,KAAKyxhB,oBAAsB9N,GAAa9J,cAAc1zgB,UAAU,KAC5DnG,KAAKqyhB,6BAA6BryhB,KAAKgkB,SAI3CA,YACA,OAAOhkB,KAAKkuhB,OAASluhB,KAAKsyhB,mBAAmBtyhB,KAAKkuhB,OAAO9nP,WAAapmS,KAAK8yf,cAE3E9ue,UAAMA,GACNhkB,KAAKqyhB,6BAA6BrugB,GAGlCsJ,eACA,QAASttB,KAAKmua,WAAanua,KAAKuyhB,kBAEhCjlgB,aAAStJ,GACT,MAAMwuW,IAAW2rC,QAAsBn6Y,GACjC47E,GAAU5/F,KAAK6+E,YAAYhsE,cAC7B7S,KAAKmua,YAAc37C,KACnBxyX,KAAKmua,UAAY37C,GACjBxyX,KAAKuxF,aAAahwE,UAAKq3V,IAMvB4Z,IAAYxyX,KAAKgoa,gBAAkBpoU,GAAQ4tD,MAI3C5tD,GAAQ4tD,OAIhBglY,iBACI,MAAO,CAACxyhB,KAAK0xhB,gBAAiB1xhB,KAAKiyhB,cAAejyhB,KAAKmyhB,cAAenyhB,KAAK6xhB,kBAG/EY,eAAergc,GACXpyF,KAAKkuhB,OAAS97b,EACdpyF,KAAKwxhB,0BAA0B7jgB,cAC3B3tB,KAAK8yf,eACL9yf,KAAK0yhB,aAAa1yhB,KAAK8yf,eAE3B9yf,KAAKwxhB,0BAA4BxxhB,KAAKkuhB,OAAOrpa,iBAAiB1+G,UAAU4+E,KACpE,GAAI/kF,KAAK2yhB,yBAAyB5tc,IAAQ,CACtC,MAAM/gE,GAAQhkB,KAAKsyhB,mBAAmBvtc,GAAMqhN,WAC5CpmS,KAAK2xhB,gBAAkB3xhB,KAAK4yhB,cAAc5ugB,IAC1ChkB,KAAKuxhB,aAAavtgB,IAClBhkB,KAAK0mgB,aACL1mgB,KAAK6yhB,aAAa7ugB,IAClBhkB,KAAKksJ,UAAUv7H,KAAK,IAAImigB,GAAwB9yhB,KAAMA,KAAK6+E,YAAYhsE,gBACvE7S,KAAK2D,WAAWgtB,KAAK,IAAImigB,GAAwB9yhB,KAAMA,KAAK6+E,YAAYhsE,mBAIpFD,kBACI5S,KAAKgoa,gBAAiB,EAE1B5zY,YAAYorD,GACJuzc,GAAsBvzc,EAASx/E,KAAK2jhB,eACpC3jhB,KAAKuxF,aAAahwE,UAAKq3V,GAG/B1vW,cACIlJ,KAAKwxhB,0BAA0B7jgB,cAC/B3tB,KAAKyxhB,oBAAoB9jgB,cACzB3tB,KAAKuxF,aAAa13E,WAGtBupR,0BAA0Bt/P,GACtB9jC,KAAKsxhB,mBAAqBxtf,EAG9B/4B,SAAS05S,GACL,OAAOzkT,KAAKuhgB,WAAavhgB,KAAKuhgB,WAAW98M,GAAK,KAGlD1mN,WAAW/5E,GACPhkB,KAAKqyhB,6BAA6BrugB,GAGtCk6E,iBAAiBp6D,GACb9jC,KAAKuxhB,aAAeztf,EAGxBs6D,kBAAkBt6D,GACd9jC,KAAK0mgB,WAAa5ie,EAGtBstP,iBAAiB74G,GACbv4K,KAAKstB,SAAWirJ,EAEpB0oP,WAAWl8U,GAEHiuc,EADyB/7N,QAAUlyO,EAAMpxE,UAAYglZ,OAClC34Z,KAAK6+E,YAAYhsE,cAAc8yJ,WAClD3lK,KAAKizhB,aACLluc,EAAM36C,kBAGdyqe,SAAS7wf,GACL,MAAMkvgB,GAAoBlzhB,KAAK2xhB,gBAC/B,IAAIvob,GAAOppG,KAAK2jhB,aAAaxif,MAAMnd,EAAOhkB,KAAKikhB,aAAa9if,MAAM+qH,WAClElsJ,KAAK2xhB,gBAAkB3xhB,KAAK4yhB,cAAcxpb,IAC1CA,GAAOppG,KAAK2jhB,aAAa7J,mBAAmB1wa,IAC5C,MAAM+pb,IAAcnzhB,KAAK2jhB,aAAap6gB,SAAS6/F,GAAMppG,KAAKgkB,QAGrDolF,IAAQ+pb,GACTnzhB,KAAKuxhB,aAAanob,KAKdplF,IAAUhkB,KAAKgkB,OACfhkB,KAAKuxhB,aAAanob,IAElB8pb,KAAsBlzhB,KAAK2xhB,iBAC3B3xhB,KAAKsxhB,sBAGT6B,KACAnzhB,KAAK0yhB,aAAatpb,IAClBppG,KAAKksJ,UAAUv7H,KAAK,IAAImigB,GAAwB9yhB,KAAMA,KAAK6+E,YAAYhsE,iBAG/Ewmf,YACIr5f,KAAK2D,WAAWgtB,KAAK,IAAImigB,GAAwB9yhB,KAAMA,KAAK6+E,YAAYhsE,gBAG5EoxZ,UAEQjka,KAAKgkB,OACLhkB,KAAK6yhB,aAAa7yhB,KAAKgkB,OAE3BhkB,KAAK0mgB,aAGTmsB,aAAa7ugB,GACThkB,KAAK6+E,YAAYhsE,cAAcmR,MAClB,MAATA,EAAgBhkB,KAAK2jhB,aAAa78gB,OAAOkd,EAAOhkB,KAAKikhB,aAAahggB,QAAQioI,WAAa,GAG/FwmY,aAAa1ugB,GAGLhkB,KAAKkuhB,QACLluhB,KAAKozhB,oBAAoBpvgB,GACzBhkB,KAAK8yf,cAAgB,MAGrB9yf,KAAK8yf,cAAgB9ue,EAI7B4ugB,cAAc5ugB,GACV,OAAQA,GAAShkB,KAAK2jhB,aAAat3gB,QAAQ2X,GAM/CuugB,kBACI,OAAO,EAGXF,6BAA6BrugB,GACzBA,EAAQhkB,KAAK2jhB,aAAap4X,YAAYvnI,GACtChkB,KAAK2xhB,gBAAkB3xhB,KAAK4yhB,cAAc5ugB,GAC1CA,EAAQhkB,KAAK2jhB,aAAa7J,mBAAmB91f,GAC7ChkB,KAAK0yhB,aAAa1ugB,GAClBhkB,KAAK6yhB,aAAa7ugB,GAGtB+tgB,eAAe/tgB,GACX,MAAMtd,GAAS1G,KAAK6vhB,iBACpB,OAAQnphB,IAAUA,GAAOsd,IA6BjC,YAA+Bw7D,GAASg7X,GACpC,MAAMlva,GAAO/hB,OAAO+hB,KAAKk0C,IACzB,QAASlpD,MAAOgV,GAAM,CAClB,MAAQ44L,iBAAet2E,iBAAiBpuE,GAAQlpD,IAChD,IAAIkkb,EAAQhvT,eAAe04E,MAAkBs2O,EAAQhvT,eAAeoC,IAMhE,OAAO,EALP,IAAK4sT,EAAQjxc,SAAS26N,GAAet2E,IACjC,OAAO,CAIJ,CAGf,OAAO;;;;;;;SAvCXylY,GAAuBt0c,UAAvB,0BAAmHs0c,IAx8EjBp0c,8BAw8EyDA,cAx8EzDA,8BAw8EmFkkV,KAArL,GAx8EkGlkV,8BAw8EgIytE,KAAlO,KACA2mY,GAAuBr0c,UAz8E2EC,8BAy8ElG,MAAuGo0c,GAAvG7pc,6GAz8EkGvK,oCA0/ElG,MAAMq0c,GAAgC,CAClCjrc,QAASola,oBACTjvZ,aAAaimW,gBAAW,IAAM8uF,IAC9B90b,OAAO,GAGL+0b,GAA4B,CAC9Bnrc,QAASoma,gBACTjwZ,aAAaimW,gBAAW,IAAM8uF,IAC9B90b,OAAO,GAGX,iBAAiC40b,GAC7BxzhB,YAAYq/E,EAAYgpc,GAAa9rN,GAAa4pM,IAC9Cr6e,MAAMuzD,EAAYgpc,GAAa9rN,IAC/Bp8T,KAAKgmgB,WAAaA,GAClBhmgB,KAAKyzhB,oBAAsB38H,UAC3B92Z,KAAKuhgB,WAAauU,qBAAmBnqf,MAAM6mgB,kBAG3CkB,kBAActF,GACVA,IACApuhB,KAAK2zhB,YAAcvF,EACnBpuhB,KAAKyzhB,oBAAsBrF,EAAWc,aAAa/ohB,UAAU,IAAMnG,KAAK0mgB,cACxE1mgB,KAAKyyhB,eAAerE,EAAWja,cAAcn0gB,QAIjDw+D,UACA,OAAOx+D,KAAK4zhB,KAEZp1d,QAAIx6C,GACJ,MAAM6vgB,GAAa7zhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IACjFhkB,KAAK2jhB,aAAap6gB,SAASsqhB,GAAY7zhB,KAAK4zhB,QAC7C5zhB,KAAK4zhB,KAAOC,GACZ7zhB,KAAKsxhB,sBAITxpf,UACA,OAAO9nC,KAAK8zhB,KAEZhsf,QAAI9jB,GACJ,MAAM6vgB,GAAa7zhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IACjFhkB,KAAK2jhB,aAAap6gB,SAASsqhB,GAAY7zhB,KAAK8zhB,QAC7C9zhB,KAAK8zhB,KAAOD,GACZ7zhB,KAAKsxhB,sBAITvzc,iBACA,OAAO/9E,KAAK+zhB,YAEZh2c,eAAW/5D,GACX,MAAMgwgB,GAAmBh0hB,KAAK+xhB,eAAe/xhB,KAAKgkB,OAClDhkB,KAAK+zhB,YAAc/vgB,EACfhkB,KAAK+xhB,eAAe/xhB,KAAKgkB,SAAWgwgB,IACpCh0hB,KAAKsxhB,qBAObznB,4BACI,OAAO7pgB,KAAKgmgB,WAAahmgB,KAAKgmgB,WAAW6D,4BAA8B7pgB,KAAK6+E,YAGhF4xc,oBACI,OAAIzwhB,KAAKgmgB,WACEhmgB,KAAKgmgB,WAAWsD,aAEpBtpgB,KAAK6+E,YAAYhsE,cAAc+2B,aAAa,mBAGvD4lf,kBACI,OAAOxvhB,KAAKgmgB,WAAahmgB,KAAKgmgB,WAAW10a,WAAQsnR,EAGrD22K,gBACI,OAAOvvhB,KAAKgkB,MAEhB9a,cACIyiB,MAAMziB,cACNlJ,KAAKyzhB,oBAAoB9lgB,cAG7BslgB,aACQjzhB,KAAK2zhB,aACL3zhB,KAAK2zhB,YAAY/mhB,OAGzB0lhB,mBAAmB2B,GACf,OAAOA,EAEXb,oBAAoBpvgB,GACZhkB,KAAKkuhB,QACLluhB,KAAKkuhB,OAAOnL,gBAAgB/+f,EAAOhkB,MAI3C2vhB,cACI,OAAO3vhB,KAAK4zhB,KAGhBhE,cACI,OAAO5vhB,KAAK8zhB,KAGhBjE,iBACI,OAAO7vhB,KAAK+zhB,YAEhBpB,yBAAyB5tc,GACrB,OAAOA,EAAM9tD,SAAWj3B,MAGhCuzhB,GAAmBx0c,UAAnB,0BAA+Gw0c,IA9mFbt0c,8BA8mFiDA,cA9mFjDA,8BA8mF2EkkV,KAA7K,GA9mFkGlkV,8BA8mFwHytE,KAA1N,GA9mFkGztE,8BA8mFqKurb,KAAvQ,KACA+oB,GAAmBv0c,UA/mF+EC,8BA+mFlG,MAAmGs0c,GAAnG7vhB,0HA/mFkGu7E,uBA+mFlG,4BAAmG27F,8BA/mFD37F,CA+mFlG,2BAAmG27F,gBA/mFD37F,CA+mFlG,yBAAmG27F,cA/mFD37F,CA+mFlG,8BAAmG27F,oBAAnG,MA/mFkG37F,2BA+mFlG,wBA/mFkGA,wBA+mFlG,6CA/mFkGA,CA+mFlG,uFA/mFkGA,CA+mFlG,oDA/mFkGA,CA+mFlG,oDA/mFkGA,CA+mFlG,kNA/mFkGA,+BA+mF0sB,CACpyBq0c,GACAE,GACA,CAAEnrc,QAAS6rc,KAA0B11b,YAAa+0b,MAlnFwCt0c;;;;;;;;AA+qFlG,UAEAk1c,GAAwBp1c,UAAxB,0BAAoHo1c,KACpHA,GAAwBn1c,UAlrF0EC,8BAkrFlG,MAAwGk1c,GAAxGzwhB,gDAOA,SACI7D,YAAY6qhB,EAAOvoG,GAAoBp7K,IACnC/mQ,KAAK0qhB,MAAQA,EACb1qhB,KAAKmib,mBAAqBA,GAC1Bnib,KAAKikb,cAAgBntB,UACrB,MAAM21G,GAAiB/xe,OAAOqsO,IAC9B/mQ,KAAK+xH,SAAW06Y,IAAqC,IAAnBA,GAAuBA,GAAiB,KAG1En/e,eACA,YAAuBsrV,IAAnB54W,KAAKmua,WAA2Bnua,KAAKouhB,WAC9BpuhB,KAAKouhB,WAAW9ggB,WAElBttB,KAAKmua,UAEd7gZ,aAAStJ,GACThkB,KAAKmua,WAAYhQ,QAAsBn6Y,GAE3CoQ,YAAYorD,GACJA,EAAQ4uc,YACRpuhB,KAAKo0hB,qBAGblrhB,cACIlJ,KAAKikb,cAAct2Z,cAEvBg4P,qBACI3lR,KAAKo0hB,qBAETC,MAAMtvc,GACE/kF,KAAKouhB,aAAepuhB,KAAKstB,WACzBttB,KAAKouhB,WAAWxhhB,OAChBm4E,EAAMn6C,mBAGdwpf,qBACI,MAAME,EAAyBt0hB,KAAKouhB,WAAapuhB,KAAKouhB,WAAW78b,cAAe+yU,UAC1EiwH,GAAoBv0hB,KAAKouhB,YAAcpuhB,KAAKouhB,WAAWkB,gBACvDtvhB,KAAKouhB,WAAWkB,gBAAgB/9b,cAChC+yU,UACAkwH,GAAoBx0hB,KAAKouhB,YACzBxpJ,OAAM5kY,KAAKouhB,WAAWa,aAAcjvhB,KAAKouhB,WAAWc,eACpD5qH,UACNtka,KAAKikb,cAAct2Z,cACnB3tB,KAAKikb,eAAgBr/C,OAAM5kY,KAAK0qhB,MAAMlrc,QAAS80c,EAAwBC,GAAmBC,IAAmBruhB,UAAU,IAAMnG,KAAKmib,mBAAmBvoO,iBAG7J66U,GAAoB11c,UAApB,0BAAgH01c,IAxuFdx1c,8BAwuFmDwrc,IAxuFnDxrc,8BAwuFiFA,qBAxuFjFA,8BAwuFkH,cACpNw1c,GAAoB70c,UAzuF8EX,8BAyuFlG,MAAoGw1c,GAApG/whB,+EAzuFkGu7E,2BAyuFlGi7D,GAAmxBi6Y,GAAnxB,eAzuFkGl1c,2BAyuFlGk7D,GAzuFkGl7D,6BAyuFlG27F,4DAzuFkG37F,wBAyuFlGhpE,kBAzuFkGgpE,2BAyuFlGi7D,GAzuFkGj7D,6BAyuFlG27F,yGAzuFkG37F,uBAyuFlG,4BAAoG27F,eAApG,MAzuFkG37F,wBAyuFlG,gBAzuFkGA,CAyuFlG,yDAzuFkGA,wBAyuFlG,mEAzuFkGA,CAyuFlG,2DAzuFkGA,CAyuFlG,yPAzuFkGA,kCAyuFlGc,omBAzuFkGd,4BAyuFlG9oE,IAzuFkG8oE,2BAyuFo5B,gBAzuFp5BA,uBAyuF0rC,kBAzuF1rCA,yBAyuF4iD,GAzuF5iDA,4BAyuFlG,MAzuFkGA,uBAyuFunC,uBAzuFvnCA,CAyuFunC,kCAzuFvnCA,wBAyuFg9B,4CAzuFh9BA,CAyuFg9B,sDAzuFh9BA,CAyuFg9B,uCAzuFh9BA,sBAyuFqsC,GAzuFrsCA,uBAyuFqsC,0BAAvyCuhM,YAAijFsjK,KAAuTpkW,MAAx2FM;;;;;;;;AAoDA,MAAM00c,GAA8B,IAAIjsY,iBAAe,+BAIvD,iBAAwC4qY,GACpCxzhB,YAAY80hB,EAAaz1c,GAAY+1b,GAA2Bh7E,GAAWi7E,GAAaC,GAAkB+S,GAAa9rN,IACnHzwS,MAAMuzD,GAAYgpc,GAAa9rN,IAC/Bp8T,KAAK20hB,YAAcA,EACnB30hB,KAAKi1gB,0BAA4BA,GACjCj1gB,KAAKi6b,UAAYA,GACjBj6b,KAAKk1gB,YAAcA,GACnBl1gB,KAAKm1gB,iBAAmBA,GAE5B3ygB,WAQI,MAAMmvF,EAAY3xF,KAAKi6b,UAAUp5b,IAAI6xf,YAAW,KAAMkiC,mBAAmBA,wBACrEjjc,IACA3xF,KAAK2xF,UAAYA,GAGzBs3L,YACQjpR,KAAK2xF,WAIL3xF,KAAK02gB,mBAIb/iP,UACI,OAAuD,IAAhD3zR,KAAK6+E,YAAYhsE,cAAcmR,MAAMxgB,MAAW,CAG3DqxhB,kBACI,OAAO70hB,KAAK6+E,YAAYhsE,cAAc20H,YAG1C10H,QACI9S,KAAK6+E,YAAYhsE,cAAcC,QAGnC+hgB,SAAS7wf,GACL2H,MAAMkpf,SAAS7wf,GACfhkB,KAAK20hB,YAAYG,0BAGrB7B,aACIjzhB,KAAK20hB,YAAYI,kBAGrBpF,cACI,OAAO3vhB,KAAK20hB,YAAYn2d,IAG5Boxd,cACI,OAAO5vhB,KAAK20hB,YAAY7sf,IAG5B+nf,iBACI,OAAO7vhB,KAAK20hB,YAAY52c,WAE5Bw0c,kBACI,OAAOvyhB,KAAK20hB,YAAYK,eAE5BrC,0BAA2B17f,WACvB,OAAOA,IAAWj3B,KAAK20hB,YAAYM,aAAeh+f,IAAWj3B,KAAK20hB,YAAYO,UAElF7C,6BAA6BrugB,GACzB2H,MAAM0mgB,6BAA6BrugB,GACnC,MAAMmxgB,GAAYn1hB,OAASA,KAAK20hB,YAAYM,YACtCj1hB,KAAK20hB,YAAYO,UACjBl1hB,KAAK20hB,YAAYM,YACV,MAAbE,IAAoDA,GAAS7D,sBAGrE8D,GAA0Br2c,UAA1B,0BAAsHq2c,IA92FpBn2c,8BA82F+Dy1c,IA92F/Dz1c,8BA82FuGA,cA92FvGA,8BA82FiIkkV,MA92FjIlkV,8BA82FoKA,YA92FpKA,8BA82F4Lo2c,SAA9R,GA92FkGp2c,8BA82FoOo2c,qBAAtU,GA92FkGp2c,8BA82FwRkkV,KAA1X,GA92FkGlkV,8BA82FqUytE,KAAva,KACA0oY,GAA0Bp2c,UA/2FwEC,8BA+2FlG,MAA0Gm2c,GAA1Gz7Q,UA/2FkG16L,0CAm4FlG,MAAMq2c,IAAyBtgB,QAAgBogB,IAE/C,iBAA2BE,GACvBz1hB,YAAY01hB,EAAYr2c,GAAYs2c,GAA0Bjtc,GAAUktc,GAAYC,GAAiBxN,GAAa9rN,IAC9GzwS,MAAM4pgB,EAAYr2c,GAAYs2c,GAA0Bjtc,GAAUktc,GAAYC,GAAiBxN,GAAa9rN,IAE5Gp8T,KAAK21hB,gBAAmBxkc,KACpB,MAAMtoD,GAAQ7oC,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYp6D,GAAQntE,QACnF8kB,GAAM9oC,KAAKkuhB,OAASluhB,KAAKkuhB,OAAO9nP,UAAUt9P,IAAM,KACtD,OAAQD,KAAUC,IAAO9oC,KAAK2jhB,aAAa5J,YAAYlxe,GAAOC,KAAQ,EAChE,KACA,CAAE8sf,oBAAuB,CAAE9sf,IAAOA,GAAKwmd,OAAUzmd,MAE3D7oC,KAAKuhgB,WAAauU,qBAAmB,IAAInqf,MAAM6mgB,iBAAkBxyhB,KAAK21hB,kBAE1ErD,mBAAmB2B,GACf,OAAOA,EAAWprf,MAEtB8pf,yBAAyB5kQ,GACrB,IAAI8nC,GACJ,QAAKlqS,MAAMgngB,yBAAyB5kQ,MAII,QAA1B8nC,GAAK9nC,EAAOzuL,gBAA6B,IAAPu2N,QAAgB,EAASA,GAAGhtR,QAEjEklP,EAAOqY,UAAUv9P,SACd7oC,KAAK2jhB,aAAa5J,YAAYhsP,EAAOzuL,SAASz2D,MAAOklP,EAAOqY,UAAUv9P,SAFxEklP,EAAOqY,UAAUv9P,MAJlB,CASfuqf,oBAAoBpvgB,GAChB,GAAIhkB,KAAKkuhB,OAAQ,CACb,MAAMtkY,GAAQ,IAAIw5X,GAAUp/f,EAAOhkB,KAAKkuhB,OAAO9nP,UAAUt9P,KACzD9oC,KAAKkuhB,OAAOnL,gBAAgBn5X,GAAO5pJ,OAG3C6yhB,aAAa7ugB,GACT2H,MAAMkngB,aAAa7ugB,GAEnBhkB,KAAK20hB,YAAYG,0BAGrBe,iBACI,MAAMj2b,EAAU5/F,KAAK6+E,YAAYhsE,cAC3BmR,GAAQ47E,EAAQ57E,MACtB,OAAOA,GAAMxgB,OAAS,EAAIwgB,GAAQ47E,EAAQ4nC,aAGlDsuZ,GAAa/2c,UAAb,0BAAyG+2c,IAn7FP72c,8BAm7FqCy1c,IAn7FrCz1c,8BAm7F6EA,cAn7F7EA,8BAm7FuGkkV,MAn7FvGlkV,8BAm7F0IA,YAn7F1IA,8BAm7FkKo2c,SAApQ,GAn7FkGp2c,8BAm7F0Mo2c,qBAA5S,GAn7FkGp2c,8BAm7F8PkkV,KAAhW,GAn7FkGlkV,8BAm7F2SytE,KAA7Y,KACAopY,GAAa92c,UAp7FqFC,8BAo7FlG,MAA6F62c,GAA7FpyhB,0DAA6R,OAA7R,6FAp7FkGu7E,uBAo7FlG,4BAA6F27F,8BAp7FK37F,CAo7FlG,2BAA6F27F,gBAp7FK37F,CAo7FlG,8BAA6F27F,mBAp7FK37F,CAo7FlG,yBAA6F27F,eAA7F,MAp7FkG37F,2BAo7FlG,wBAp7FkGA,wBAo7FlG,uBAp7FkGA,CAo7FlG,yDAp7FkGA,CAo7FlG,2HAp7FkGA,CAo7FlG,wEAp7FkGA,CAo7FlG,4LAp7FkGA,+BAo7FsxB,CACh3B,CAAEoJ,QAASola,oBAAmBjvZ,YAAas3b,GAAcr3b,OAAO,GAChE,CAAEpW,QAASoma,gBAAejwZ,YAAas3b,GAAcr3b,OAAO,KAt7F8Bxf,0CAq+FlG,iBAAyBq2c,GACrBz1hB,YAAY01hB,EAAYr2c,GAAYs2c,GAA0Bjtc,GAAUktc,GAAYC,GAAiBxN,GAAa9rN,IAC9GzwS,MAAM4pgB,EAAYr2c,GAAYs2c,GAA0Bjtc,GAAUktc,GAAYC,GAAiBxN,GAAa9rN,IAE5Gp8T,KAAK+1hB,cAAiB5kc,KAClB,MAAMroD,GAAM9oC,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYp6D,GAAQntE,QACjF6kB,GAAQ7oC,KAAKkuhB,OAASluhB,KAAKkuhB,OAAO9nP,UAAUv9P,MAAQ,KAC1D,OAAQC,KAAQD,IAAS7oC,KAAK2jhB,aAAa5J,YAAYjxe,GAAKD,KAAU,EAChE,KACA,CAAEmtf,kBAAqB,CAAEntf,MAASA,GAAOymd,OAAUxmd,MAE7D9oC,KAAKuhgB,WAAauU,qBAAmB,IAAInqf,MAAM6mgB,iBAAkBxyhB,KAAK+1hB,gBAE1EzD,mBAAmB2B,GACf,OAAOA,EAAWnrf,IAEtB6pf,yBAAyB5kQ,GACrB,IAAI8nC,GACJ,QAAKlqS,MAAMgngB,yBAAyB5kQ,MAII,QAA1B8nC,GAAK9nC,EAAOzuL,gBAA6B,IAAPu2N,QAAgB,EAASA,GAAG/sR,MAEjEilP,EAAOqY,UAAUt9P,OACd9oC,KAAK2jhB,aAAa5J,YAAYhsP,EAAOzuL,SAASx2D,IAAKilP,EAAOqY,UAAUt9P,OAFtEilP,EAAOqY,UAAUt9P,IAJlB,CASfsqf,oBAAoBpvgB,GAChB,GAAIhkB,KAAKkuhB,OAAQ,CACb,MAAMtkY,GAAQ,IAAIw5X,GAAUpjhB,KAAKkuhB,OAAO9nP,UAAUv9P,MAAO7kB,GACzDhkB,KAAKkuhB,OAAOnL,gBAAgBn5X,GAAO5pJ,OAG3Ciha,WAAWl8U,GAEHA,EAAMpxE,UAAYu4Y,OAAclsZ,KAAK6+E,YAAYhsE,cAAcmR,OAC/DhkB,KAAK20hB,YAAYM,YAAYnihB,QAEjC6Y,MAAMs1Y,WAAWl8U,IAGzBkxc,GAAWl3c,UAAX,0BAAuGk3c,IA/gGLh3c,8BA+gGiCy1c,IA/gGjCz1c,8BA+gGyEA,cA/gGzEA,8BA+gGmGkkV,MA/gGnGlkV,8BA+gGsIA,YA/gGtIA,8BA+gG8Jo2c,SAAhQ,GA/gGkGp2c,8BA+gGsMo2c,qBAAxS,GA/gGkGp2c,8BA+gG0PkkV,KAA5V,GA/gGkGlkV,8BA+gGuSytE,KAAzY,KACAupY,GAAWj3c,UAhhGuFC,8BAghGlG,MAA2Fg3c,GAA3FvyhB,wDAAuR,OAAvR,2FAhhGkGu7E,uBAghGlG,4BAA2F27F,8BAhhGO37F,CAghGlG,2BAA2F27F,gBAhhGO37F,CAghGlG,8BAA2F27F,mBAhhGO37F,CAghGlG,yBAA2F27F,eAA3F,MAhhGkG37F,2BAghGlG,wBAhhGkGA,wBAghGlG,yDAhhGkGA,CAghGlG,2HAhhGkGA,CAghGlG,wEAhhGkGA,CAghGlG,4LAhhGkGA,+BAghGivB,CAC30B,CAAEoJ,QAASola,oBAAmBjvZ,YAAay3b,GAAYx3b,OAAO,GAC9D,CAAEpW,QAASoma,gBAAejwZ,YAAay3b,GAAYx3b,OAAO,KAlhGgCxf;;;;;;;;AAukGlG,IAAI46W,GAAe,EACnB,SACIh6b,YAAYsib,EAAoBtjW,GAAasS,GAASwyb,GAAc3d,IA4BhE,GA3BAhmgB,KAAKmib,mBAAqBA,EAC1Bnib,KAAK6+E,YAAcA,GACnB7+E,KAAK2jhB,aAAeA,GACpB3jhB,KAAKgmgB,WAAaA,GAClBhmgB,KAAKyzhB,oBAAsB38H,UAE3B92Z,KAAKqqE,GAAM,wBAAuBwvX,KAElC75b,KAAKiuR,SAAU,EAEfjuR,KAAKo1gB,YAAc,uBACnBp1gB,KAAKg1hB,gBAAiB,EAEtBh1hB,KAAKk2hB,iBAAmB,KAExBl2hB,KAAKgkS,UAAY,SAEjBhkS,KAAK2hhB,gBAAkB,KAEvB3hhB,KAAK4hhB,cAAgB,KAErB5hhB,KAAKuxF,aAAe,IAAIx1E,KAML,MAAfiqf,QAA+C,EAASA,GAAWnnb,YAAYhsE,cAAck4Y,UAAU3jU,SAAS,sBAAuB,CACvI,MAAM2jU,GAAYlsU,GAAYhsE,cAAck4Y,UAC5CA,GAAUjjQ,IAAI,yBACdijQ,GAAUjjQ,IAAI,oCAGlB9nJ,KAAK2xF,UAAYR,GAGjBntE,YACA,OAAOhkB,KAAKkuhB,OAASluhB,KAAKkuhB,OAAO9nP,UAAY,KAG7C6vO,uBACA,OAAOj2gB,KAAKiuR,UAAYjuR,KAAKo4Y,MAO7B5wQ,kBACA,IAAIquL,EAAI4/F,GACR,MAAM5sX,IAAqC,QAA3BgtR,EAAK71T,KAAKi1hB,mBAAgC,IAAPp/N,OAAgB,EAASA,EAAGg/N,oBAAsB,GAC/F/rf,IAAiC,QAAzB2sX,GAAKz1Z,KAAKk1hB,iBAA8B,IAAPz/H,QAAgB,EAASA,GAAGo/H,oBAAsB,GACjG,OAAOhsf,IAASC,GAAO,GAAED,MAAS7oC,KAAKgkS,aAAal7P,KAAQ,GAG5Dqtf,kBACA,OAAOn2hB,KAAKo2hB,aAEZD,gBAAYA,GACRA,IACAn2hB,KAAKkuhB,OAASiI,EAAYhiB,cAAcn0gB,MACxCA,KAAKo2hB,aAAeD,EACpBn2hB,KAAKyzhB,oBAAoB9lgB,cACzB3tB,KAAKyzhB,oBAAsB0C,EAAYjH,aAAa/ohB,UAAU,KAC1D,IAAI0vT,GAAI4/F,GACoB,QAA3B5/F,GAAK71T,KAAKi1hB,mBAAgC,IAAPp/N,IAAyBA,GAAG6wM,aACtC,QAAzBjxG,GAAKz1Z,KAAKk1hB,iBAA8B,IAAPz/H,IAAyBA,GAAGixG,eAElE1mgB,KAAKyyhB,eAAezyhB,KAAKkuhB,SAI7Bj8b,eACA,QAASjyF,KAAK+lK,UAEd9zE,aAASjuE,GACThkB,KAAK+lK,WAAYo4P,QAAsBn6Y,GAGvC+5D,iBACA,OAAO/9E,KAAK+zhB,YAEZh2c,eAAW/5D,GACX,MAAM6kB,GAAQ7oC,KAAKi1hB,YACbnsf,GAAM9oC,KAAKk1hB,UACXmB,GAAmBxtf,IAASA,GAAMkpf,eAAelpf,GAAM7kB,OACvDsygB,GAAiBxtf,IAAOA,GAAIipf,eAAelpf,GAAM7kB,OACvDhkB,KAAK+zhB,YAAc/vgB,EACf6kB,IAASA,GAAMkpf,eAAelpf,GAAM7kB,SAAWqygB,IAC/Cxtf,GAAMyof,qBAENxof,IAAOA,GAAIipf,eAAejpf,GAAI9kB,SAAWsygB,IACzCxtf,GAAIwof,qBAIR9yd,UACA,OAAOx+D,KAAK4zhB,KAEZp1d,QAAIx6C,GACJ,MAAM6vgB,GAAa7zhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IACjFhkB,KAAK2jhB,aAAap6gB,SAASsqhB,GAAY7zhB,KAAK4zhB,QAC7C5zhB,KAAK4zhB,KAAOC,GACZ7zhB,KAAKu2hB,eAITzuf,UACA,OAAO9nC,KAAK8zhB,KAEZhsf,QAAI9jB,GACJ,MAAM6vgB,GAAa7zhB,KAAK2jhB,aAAa7J,mBAAmB95gB,KAAK2jhB,aAAap4X,YAAYvnI,IACjFhkB,KAAK2jhB,aAAap6gB,SAASsqhB,GAAY7zhB,KAAK8zhB,QAC7C9zhB,KAAK8zhB,KAAOD,GACZ7zhB,KAAKu2hB,eAITjpgB,eACA,OAAOttB,KAAKi1hB,aAAej1hB,KAAKk1hB,UAC1Bl1hB,KAAKi1hB,YAAY3ngB,UAAYttB,KAAKk1hB,UAAU5ngB,SAC5CttB,KAAKg1hB,eAEX1ngB,aAAStJ,GACT,MAAMwuW,IAAW2rC,QAAsBn6Y,GACnCwuW,KAAaxyX,KAAKg1hB,iBAClBh1hB,KAAKg1hB,eAAiBxiK,GACtBxyX,KAAKuxF,aAAahwE,UAAKq3V,IAI3BygK,iBACA,SAAIr5gB,KAAKi1hB,cAAej1hB,KAAKk1hB,aAClBl1hB,KAAKi1hB,YAAY5b,YAAcr5gB,KAAKk1hB,UAAU7b,WAElD,CAGPjhI,YACA,MAAMo+I,IAAax2hB,KAAKi1hB,aAAcj1hB,KAAKi1hB,YAAYthQ,UACjD8iQ,KAAWz2hB,KAAKk1hB,WAAYl1hB,KAAKk1hB,UAAUvhQ,UACjD,OAAO6iQ,GAAcC,GAMzB7f,kBAAkBjjb,GACd3zF,KAAKk2hB,iBAAmBvic,EAAInwF,OAASmwF,EAAI54D,KAAK,KAAO,KAMzD+7e,oBACS92gB,KAAKiuR,UAAYjuR,KAAKstB,WAClBttB,KAAKkuhB,QAAWluhB,KAAKkuhB,OAAO9nP,UAAUv9P,MAIvC7oC,KAAKk1hB,UAAUpihB,QAHf9S,KAAKi1hB,YAAYnihB,QAGFA,CAI3B6yQ,qBASQ3lR,KAAKkuhB,QACLluhB,KAAKyyhB,eAAezyhB,KAAKkuhB,SAI7BtpJ,OAAM5kY,KAAKi1hB,YAAY1jc,aAAcvxF,KAAKk1hB,UAAU3jc,cAAcprF,UAAU,KACxEnG,KAAKuxF,aAAahwE,UAAKq3V,KAG/BxkV,YAAYorD,GACJuzc,GAAsBvzc,EAASx/E,KAAK2jhB,eACpC3jhB,KAAKuxF,aAAahwE,UAAKq3V,GAG/B1vW,cACIlJ,KAAKyzhB,oBAAoB9lgB,cACzB3tB,KAAKuxF,aAAa13E,WAGtB01gB,gBACI,OAAOvvhB,KAAKgkB,MAAQhkB,KAAKgkB,MAAM6kB,MAAQ,KAG3C2mf,kBACI,OAAOxvhB,KAAKgmgB,WAAahmgB,KAAKgmgB,WAAW10a,WAAQsnR,EAGrDixJ,4BACI,OAAO7pgB,KAAKgmgB,WAAahmgB,KAAKgmgB,WAAW6D,4BAA8B7pgB,KAAK6+E,YAGhF4xc,oBACI,OAAOzwhB,KAAKgmgB,WAAahmgB,KAAKgmgB,WAAWsD,aAAe,KAG5DotB,uBACI,OAAO12hB,KAAKi1hB,YAAcj1hB,KAAKi1hB,YAAYY,iBAAmB,GAGlEc,0BACI,QAAO32hB,KAAKi1hB,cAAej1hB,KAAKi1hB,YAAYthQ,SAAY,CAG5DmhQ,0BACI90hB,KAAKuxF,aAAahwE,UAAKq3V,GACvB54W,KAAKmib,mBAAmBvoO,eAG5Bm7U,kBACQ/0hB,KAAKo2hB,cACLp2hB,KAAKo2hB,aAAaxphB,OAI1BgqhB,uBACI,QAAU52hB,KAAKgmgB,YACVhmgB,KAAKgmgB,WAAWsD,eAAiBtpgB,KAAKgmgB,WAAW6wB,sBAClD72hB,KAAKo4Y,MAGb0+I,qBACI,MAAMlvB,EAAY5ngB,KAAKgmgB,WACvB,OAAO4B,GAAaA,EAAUmvB,oBAAsBnvB,EAAUyW,SAAW,KAG7E2Y,aAAahjP,GACTh0S,KAAKiuR,QAAqB,OAAX+lB,EACfh0S,KAAKuxF,aAAahwE,OAGtBg1gB,cACQv2hB,KAAKi1hB,aACLj1hB,KAAKi1hB,YAAY3D,qBAEjBtxhB,KAAKk1hB,WACLl1hB,KAAKk1hB,UAAU5D,qBAIvBmB,eAAergc,GACPpyF,KAAKi1hB,aACLj1hB,KAAKi1hB,YAAYxC,eAAergc,GAEhCpyF,KAAKk1hB,WACLl1hB,KAAKk1hB,UAAUzC,eAAergc,IAI1C6kc,GAAkBl4c,UAAlB,0BAA8Gk4c,IA/0GZh4c,8BA+0G+CA,qBA/0G/CA,8BA+0GgFA,cA/0GhFA,8BA+0G0Go2c,mBAA5M,IA/0GkGp2c,8BA+0GwKkkV,KAA1Q,GA/0GkGlkV,8BA+0GqNurb,KAAvT,KACAysB,GAAkBr3c,UAh1GgFX,8BAg1GlG,MAAkGg4c,GAAlGvzhB,+EAh1GkGu7E,2BAg1GlGi7D,GAGwE47Y,GAHxE,GAh1GkG72c,2BAg1GlGi7D,GAGgK+7Y,GAHhK,gBAh1GkGh3c,2BAg1GlGk7D,GAh1GkGl7D,6BAg1GlG27F,yBAh1GkG37F,2BAg1GlGk7D,GAh1GkGl7D,6BAg1GlG27F,2CAAuZ,QAAvZ,uEAh1GkG37F,wBAg1GlG,UAh1GkGA,CAg1GlG,0CAh1GkGA,CAg1GlG,uCAh1GkGA,CAg1GlG,2DAh1GkGA,wBAg1GlG,sEAh1GkGA,CAg1GlG,qSAh1GkGA,+BAg1GsrB,CAChxB,CAAEoJ,QAAS8vb,KAAqB35a,YAAay4b,IAC7C,CAAE5uc,QAASqsc,GAA6Bl2b,YAAay4b,MAl1GqCh4c,kCAg1GlGc,qXAh1GkGd,4BAg1GlGz2D,IAh1GkGy2D,2BAm1G+K,WAn1G/KA,uBAm1G6P,qCAAmB27F,sBAn1GhR37F,2BAm1G2S,WAn1G3SA,yBAm1GmW,GAn1GnWA,2BAm1Gia,YAn1GjaA,mBAm1Ggf,GAn1GhfA,wDAm1GiiB,YAn1GjiBA,mBAm1GmqB,GAn1GnqBA,sDAm1G6rB,WAn1G7rBA,yBAm1GmvB,KAn1GnvBA,8BAg1GlG,MAh1GkGA,sBAm1Ggf,GAn1GhfA,8BAm1Ggf27F,2BAn1Ghf37F,sBAm1G0lB,GAn1G1lBA,wBAm1G0lB,mEAn1G1lBA,sBAm1GmqB,GAn1GnqBA,8BAm1GmqB27F,gBAHrwB4lG,YAGohJ0sQ,MAHphJltc;;;;;;;;AAuEA,iBAAiCkxc,GAC7BX,sBAAsBvtT,GAClBr3M,MAAM4kgB,sBAAsBvtT,GAC5B,MAAMnlI,GAAQ79F,KAAKsvhB,gBACfzxb,KACAmlI,EAAS2+S,gBAAkB9jb,GAAM8jb,gBACjC3+S,EAAS4+S,cAAgB/jb,GAAM+jb,gBAI3CsV,GAAmBn4c,UAAnB,qDAj6GkGE,kCAi6Gai4c,MAA/Gt8W,IAA+Gs8W,KAA/G,GACAA,GAAmBt3c,UAl6G+EX,8BAk6GlG,MAAmGi4c,GAAnGxzhB,gFAl6GkGu7E,+BAk6GmE,CAC7Jwkc,GACAO,GACA,CAAE37b,QAAS6oc,GAAmB1yb,YAAa04b,MAr6G+Cj4c,wCAk6GlGxvC;;;;;;;;AA6BA,SACI5vC,YAAY8zhB,GACR3zhB,KAAK2zhB,YAAcA,EAEvBwD,kBACIn3hB,KAAK2zhB,YAAYjF,yBACjB1uhB,KAAK2zhB,YAAY9whB,SAGzBu0hB,GAAmBr4c,UAAnB,0BAA+Gq4c,IAx8Gbn4c,8BAw8GiDiyc,MACnJkG,GAAmBp4c,UAz8G+EC,8BAy8GlG,MAAmGm4c,GAAnG1zhB,4GAz8GkGu7E,uBAy8GlG,0BAAmG27F,0BASnG,SACI/6K,YAAY8zhB,GACR3zhB,KAAK2zhB,YAAcA,GAG3B0D,GAAoBt4c,UAApB,0BAAgHs4c,IAv9Gdp4c,8BAu9GmDiyc,MACrJmG,GAAoBr4c,UAx9G8EC,8BAw9GlG,MAAoGo4c,GAApG3zhB,8GAx9GkGu7E,uBAw9GlG,0BAAoG27F,4BAYpG,SACI/6K,YAAY8zhB,EAAavzX,IACrBpgK,KAAK2zhB,YAAcA,EACnB3zhB,KAAKogK,kBAAoBA,GAE7BxtJ,kBACI5S,KAAKqpgB,QAAU,IAAIntE,KAAel8b,KAAK+oc,UAAW/oc,KAAKogK,mBACvDpgK,KAAK2zhB,YAAYxD,gBAAgBnwhB,KAAKqpgB,SAE1CnggB,cACI,IAAI2sT,EACJ71T,KAAK2zhB,YAAYvD,cAAcpwhB,KAAKqpgB,SAEhCrpgB,KAAKqpgB,SAAWrpgB,KAAKqpgB,QAAQntd,aACL,QAAvB25Q,EAAK71T,KAAKqpgB,eAA4B,IAAPxzM,GAAyBA,EAAGizG,WAIxEwuH,GAAqBv4c,UAArB,0BAAiHu4c,IAt/Gfr4c,8BAs/GqDiyc,IAt/GrDjyc,8BAs/GmFA,sBACrLq4c,GAAqB13c,UAv/G6EX,8BAu/GlG,MAAqGq4c,GAArG5zhB,0GAv/GkGu7E,wBAu/G+JglB,cAAjQ,eAv/GkGhlB,2BAu/GlGi7D,GAv/GkGj7D,6BAu/GlG27F,iIAv/GkG37F,qDAw/G9F,yBADJe;;;;;;;;AA4BA,UAEAu3c,GAAoBx4c,UAApB,0BAAgHw4c,KAChHA,GAAoBr3c,UAthH8EjB,6BAshHlG,MAAiHs4c,KAyCjHA,GAAoBp3c,UA/jH8ElB,6BA+jHlG,WAAiJ,CAACwrc,GAAmBiD,IAArKpkZ,SAAiO,CACrNu0V,KACAuwC,KACApxE,KACA11B,KACAv9Y,KACAq2D,MACDslW;;;;;;;;;;;;;;;;;;;;;4BCv1HX,QACI7lb,cAEIG,KAAK4oR,KAAO,SAEZ5oR,KAAKiU,WAAa,GAElBjU,KAAK05H,aAAc,EAEnB15H,KAAK4rb,cAAgB,GAErB5rb,KAAK6M,cAAe,EAEpB7M,KAAK2V,MAAQ,GAEb3V,KAAKkU,OAAS,GAEdlU,KAAK8M,SAAW,OAEhB9M,KAAK0C,KAAO,KAEZ1C,KAAKw3hB,gBAAkB,KAEvBx3hB,KAAKy3hB,eAAiB,KAEtBz3hB,KAAKozB,UAAY,KAMjBpzB,KAAK61H,UAAY,iBAKjB71H,KAAKyvhB,cAAe,EAEpBzvhB,KAAK03hB,gBAAiB,EAMtB13hB,KAAK23hB,mBAAoB;;;;;;;SAgBjC,MAAMC,EAAsB,CAExBC,iBAAiBxtc,QAAQ,kBAAmB,EAIxCsjQ,QAAM,cAAc56T,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,iBACnDywU,QAAM,SAAS56T,QAAM,CAAE7V,UAAW,WAClCmwgB,QAAW,cAAcx7O,QAAM,EAC3BzyB,QAAQ,oCAAoCrsP,QAAM,CAAE7V,UAAW,OAAQ4tR,QAAS,MAChF5yQ,QAAM,MAAM4/f,UAAgB,CAAEjsD,UAAU,QAE5CwhD,QAAW,wBAAwBx7O,QAAM,EACrCzyB,QAAQ,uCAAuCrsP,QAAM,CAAE+3Q,QAAS,MAChE5yQ,QAAM,MAAM4/f,UAAgB,CAAEjsD,UAAU,UAiBpD,gBAAsChrC,KAClChhc,YAAYg/E,GAAam/U,GAAmBmkB,GAAoB/iW,GAEhE8tV,GAAS6qH,GAAuBn8H,GAASwK,IACrCz6Y,QACA3rB,KAAK6+E,YAAcA,GACnB7+E,KAAKg+Z,kBAAoBA,GACzBh+Z,KAAKmib,mBAAqBA,GAC1Bnib,KAAKkta,QAAUA,GACflta,KAAK+3hB,sBAAwBA,GAC7B/3hB,KAAK47Z,QAAUA,GACf57Z,KAAKoma,cAAgBA,GAErBpma,KAAKg4hB,uBAAyB,IAAI1xH,eAElCtma,KAAKi4hB,qCAAuC,KAM5Cj4hB,KAAKk4hB,sBAAwB,KAO7Bl4hB,KAAKogc,gBAAmBj3P,KAChBnpM,KAAKisb,cAAc3kW,cAGhBtnF,KAAKisb,cAAcmU,gBAAgBj3P,KAE9CnpM,KAAKm4hB,gBAAkBjrH,GAAQuqH,gBAAkB,KACjDz3hB,KAAKo/E,UAAYA,GAGrBg5c,iCACIp4hB,KAAKq4hB,WAAar4hB,KAAKg+Z,kBAAkB71U,OAAOnoF,KAAK6+E,YAAYhsE,eAG7D7S,KAAKo/E,YACLp/E,KAAKi4hB,sCAAuCx5H,WAOpD8hC,sBAAsBp3P,IACd,YAAK8iP,cAAc3kW,cAGhBtnF,KAAKisb,cAAcsU,sBAAsBp3P,IAMpDq3P,qBAAqBr3P,IACb,YAAK8iP,cAAc3kW,cAGhBtnF,KAAKisb,cAAcuU,qBAAqBr3P,IAGnDmvV,kBACSt4hB,KAAKu4hB,kBACNv4hB,KAAKo/Z,aAQbo5H,YAAY54b,GAASuiL,IACZniR,KAAK+3hB,sBAAsB95Q,YAAYr+K,MACxCA,GAAQmyB,UAAW,EAEnB/xH,KAAK47Z,QAAQc,kBAAkB,KAC3B,MAAM50J,GAAW,KACbloK,GAAQovK,oBAAoB,OAAQlH,IACpCloK,GAAQovK,oBAAoB,YAAalH,IACzCloK,GAAQ21T,gBAAgB,aAE5B31T,GAAQ6qK,iBAAiB,OAAQ3C,IACjCloK,GAAQ6qK,iBAAiB,YAAa3C,OAG9CloK,GAAQ9sF,MAAMqvQ,IAMlBs2Q,oBAAoBzmI,GAAU7vI,IAC1B,IAAIu2Q,GAAiB14hB,KAAK6+E,YAAYhsE,cAAc0qZ,cAAcvL,IAC9D0mI,IACA14hB,KAAKw4hB,YAAYE,GAAgBv2Q,IAOzCi9I,aACI,MAAMx/T,GAAU5/F,KAAK6+E,YAAYhsE,cAMjC,OAAQ7S,KAAKkta,QAAQr3S,gBACZ,MACA,SAMI71H,KAAKu4hB,kBACN34b,GAAQ9sF,QAEZ,WACC,MACA,iBACD9S,KAAKq4hB,WAAWz7H,+BAA+BllT,KAAKihb,KAG3CA,IACD34hB,KAAK44hB,0BAGb,UACC,gBACD54hB,KAAKy4hB,oBAAoB,4CACzB,cAEAz4hB,KAAKy4hB,oBAAoBz4hB,KAAKkta,QAAQr3S,WACtC,CAIZm5Z,gBACI,MAAM6J,GAAkB74hB,KAAKi4hB,qCAE7B,GAAIj4hB,KAAKkta,QAAQuiH,cACboJ,IACiC,mBAA1BA,GAAgB/lhB,MAAsB,CAC7C,MAAMysZ,IAAgBd,UAChB7+T,GAAU5/F,KAAK6+E,YAAYhsE,gBAK5B0sZ,IACDA,KAAkBv/Z,KAAKo/E,UAAUrwC,MACjCwwX,KAAkB3/T,IAClBA,GAAQxY,SAASm4U,OACbv/Z,KAAKoma,eACLpma,KAAKoma,cAAcnB,SAAS4zH,GAAiB74hB,KAAKk4hB,uBAClDl4hB,KAAKk4hB,sBAAwB,MAG7BW,GAAgB/lhB,SAIxB9S,KAAKq4hB,YACLr4hB,KAAKq4hB,WAAWv+Q,UAIxB8+Q,wBAEQ54hB,KAAK6+E,YAAYhsE,cAAcC,OAC/B9S,KAAK6+E,YAAYhsE,cAAcC,QAIvCylhB,iBACI,MAAM34b,GAAU5/F,KAAK6+E,YAAYhsE,cAC3B0sZ,IAAgBd,UACtB,OAAO7+T,KAAY2/T,IAAiB3/T,GAAQxY,SAASm4U,KAG7Du5H,EAAwB/5c,UAAxB,4BAAoH+5c,GAAV75c,8BAAmDA,cAAnDA,8BAA6ES,MAA7ET,8BAA6GA,qBAA7GA,8BAA8IU,KAAxP,GAA0GV,8BAAmL85c,GAAnL95c,8BAA+MS,MAA/MT,8BAAmPA,UAAnPA,8BAAyQS,QACnXo5c,EAAwB95c,UADkFC,8BAC1G,MAAwG65c,EAAxG9oc,mCAD0G/Q,wBAC8F6iX,KAAxM,gBAD0G7iX,2BAC1GtjD,GAD0GsjD,6BAC1GznD,uCAD0GynD,0CAoB1G,gBAAiC65c,EAC7Bj5hB,cACI8rB,SAASinR,WAET5yS,KAAK09f,OAAS,QAGlBs7B,kBAAmBC,WAASC,eACR,UAAZD,IACIj5hB,KAAKkta,QAAQwqH,gBACb13hB,KAAKo/Z,aAETp/Z,KAAKg4hB,uBAAuBz2gB,KAAK,CAAEosU,MAAO,SAAUurM,gBAEnC,SAAZD,KACLj5hB,KAAKgvhB,gBACLhvhB,KAAKg4hB,uBAAuBz2gB,KAAK,CAAEosU,MAAO,SAAUurM,gBAI5DC,mBAAoBF,WAASC,eACT,UAAZD,GACAj5hB,KAAKg4hB,uBAAuBz2gB,KAAK,CAAEosU,MAAO,UAAWurM,gBAEpC,SAAZD,IAAkC,SAAZA,KAC3Bj5hB,KAAKg4hB,uBAAuBz2gB,KAAK,CAAEosU,MAAO,UAAWurM,eAI7D1K,sBACIxuhB,KAAK09f,OAAS,OAGd19f,KAAKmib,mBAAmBvoO,eAE5Bw+U,iCACIzsgB,MAAMysgB,iCACDp4hB,KAAKkta,QAAQwqH,gBACd13hB,KAAKo/Z,cAIjBg6H,EAAmBr6c,UAAnB,qDA9D0GE,kCA8DKm6c,KAA/G5hgB,IAA+G4hgB,IAA/G,GACAA,EAAmBx5c,UA/DuFX,8BA+D1G,MAAmGm6c,EAAnG11hB,2DAA2L,KAA3L,aAA+M,OAA/M,wEA/D0Gu7E,oCA+D1G,6CAAmGznD,0BA/DOynD,CA+D1G,4CAAmGznD,0BAAnG,OA/D0GynD,2BA+D1G,aA/D0GA,wBA+D1G,uBA/D0GA,CA+D1G,+DA/D0GA,CA+D1G,kCA/D0GA,CA+D1G,qDA/D0GA,oCA+D1G,0CA/D0GA,wCA+D1GxvC,8EA/D0GwvC,uBA+DskB,0BAAhrBuhM,YAA4sDsjK,MAA5sD9jW,q/BAAi2D,CAAC43c,EAAoBC;;;;;;;;AA2Bt3D,IAAInlJ,EAAW,EAIf,QACI7yY,YAAYqqb,GAAamvG,GAEzBhvd,GAAM,cAAaqoU,KACf1yY,KAAKkqb,YAAcA,GACnBlqb,KAAKq5hB,mBAAqBA,GAC1Br5hB,KAAKqqE,GAAKA,GAEVrqE,KAAK6M,aAAe7M,KAAKq5hB,mBAAmBnsH,QAAQrga,aAEpD7M,KAAKs5hB,aAAe,IAAIv9gB,KAExB/b,KAAKu5hB,aAAe,IAAIx9gB,KAExB/b,KAAKw5hB,cAAgB,IAAIz9gB,KAEzB/b,KAAK09f,OAAS,EAEd27B,GAAmBhlI,IAAMhqV,GAEzBgvd,GAAmBrB,uBACd3vhB,MAAK3B,OAAOq+E,IAAyB,WAAhBA,GAAM4oQ,QAAqBrsE,OAAK,IACrDn7Q,UAAU,KACXnG,KAAKs5hB,aAAa/3gB,OAClBvhB,KAAKs5hB,aAAaz/gB,aAGtBw/gB,GAAmBrB,uBACd3vhB,MAAK3B,OAAOq+E,IAAyB,WAAhBA,GAAM4oQ,QAAqBrsE,OAAK,IACrDn7Q,UAAU,KACXo4F,aAAav+F,KAAKy5hB,uBAClBz5hB,KAAK05hB,uBAETxvG,GAAY+D,cAAc9nb,UAAU,KAChCnG,KAAKw5hB,cAAcj4gB,KAAKvhB,KAAK25hB,SAC7B35hB,KAAKw5hB,cAAc3/gB,WACnB7Z,KAAKu5hB,aAAah4gB,KAAKvhB,KAAK25hB,SAC5B35hB,KAAKu5hB,aAAa1/gB,WAClB7Z,KAAKuQ,kBAAoB,KACzBvQ,KAAKkqb,YAAY/iW,YAErB+iW,GACKgE,gBACA7lb,MAAK3B,OAAOq+E,IACNA,GAAMpxE,UAAY04Y,OAAWrsZ,KAAK6M,gBAAiBwsZ,QAAet0U,MAExE5+E,UAAU4+E,KACXA,GAAM36C,iBACNwvf,EAAgB55hB,KAAM,cAE1Bkqb,GAAY8D,gBAAgB7nb,UAAU,KAC9BnG,KAAK6M,aACL7M,KAAKq5hB,mBAAmBf,kBAGxBsB,EAAgB55hB,KAAM,WAQlC6C,MAAMg3hB,IACF75hB,KAAK25hB,QAAUE,GAEf75hB,KAAKq5hB,mBAAmBrB,uBACnB3vhB,MAAK3B,OAAOq+E,IAAyB,YAAhBA,GAAM4oQ,QAAsBrsE,OAAK,IACtDn7Q,UAAU4+E,KACX/kF,KAAKw5hB,cAAcj4gB,KAAKs4gB,IACxB75hB,KAAKw5hB,cAAc3/gB,WACnB7Z,KAAKkqb,YAAY0D,iBAMjB5tb,KAAKy5hB,sBAAwB5rhB,WAAW,IAAM7N,KAAK05hB,qBAAsB30c,GAAMm0c,UAAY,OAE/Fl5hB,KAAK09f,OAAS,EACd19f,KAAKq5hB,mBAAmB7K,sBAK5BsL,cACI,OAAO95hB,KAAKs5hB,aAKhB/qhB,cACI,OAAOvO,KAAKu5hB,aAKhBQ,eACI,OAAO/5hB,KAAKw5hB,cAKhBxrG,gBACI,OAAOhub,KAAKkqb,YAAY8D,gBAK5BE,gBACI,OAAOlub,KAAKkqb,YAAYgE,gBAM5B9D,eAAej2a,IACX,IAAIyiT,GAAW52T,KAAKg6hB,uBACpB,OAAI7lhB,KAAaA,GAAS0yQ,MAAQ1yQ,GAASE,OACvCF,GAAS0yQ,KAAO+vC,GAAS/vC,KAAK1yQ,GAAS0yQ,MAAQ+vC,GAASviT,MAAMF,GAASE,OAGvEuiT,GAAS0hI,qBAEb/nY,KAAiBp8C,GAASC,KAAOD,GAAS0+R,QACtC1+R,GAASC,IAAMwiT,GAASxiT,IAAID,GAASC,KAAOwiT,GAAS/jB,OAAO1+R,GAAS0+R,QAGrE+jB,GAAS2hI,mBAEbv4b,KAAKkqb,YAAYE,iBACVpqb,KAOXsub,WAAW34a,GAAQ,GAAIzB,GAAS,IAC5B,YAAKg2a,YAAYoE,WAAW,CAAE34a,SAAOzB,YACrClU,KAAKkqb,YAAYE,iBACVpqb,KAGXyub,cAAclmY,IACV,YAAK2hY,YAAYuE,cAAclmY,IACxBvoD,KAGX0ub,iBAAiBnmY,IACb,YAAK2hY,YAAYwE,iBAAiBnmY,IAC3BvoD,KAGX87c,WACI,OAAO97c,KAAK09f,OAMhBg8B,qBACI15hB,KAAK09f,OAAS,EACd19f,KAAKkqb,YAAY/iW,UAGrB6yc,uBACI,OAAOh6hB,KAAKkqb,YAAYkE,YAAYhmW,kBAS5C,WAAyBq/T,GAAKwyI,GAAiB5zc,IAG3C,YAA+BuyR,IAA3B6uC,GAAI4xI,qBACJ5xI,GAAI4xI,mBAAmBnB,sBAAwB+B,IAE5CxyI,GAAI5kZ,MAAMwjF;;;;;;;SAAAA,CAWrB,MAAM6zc,EAAkB,IAAIzxY,iBAAe,iBAErC0xY,EAA6B,IAAI1xY,iBAAe,8BAEhD2xY,EAA6B,IAAI3xY,iBAAe,8BAUtD,MAAM4xY,GAAsC,CACxChyc,QAAS+xc,EACT5tY,KAAM,CAACsuS,MACPzkL,WAPJ,YAAqD9uL,IACjD,MAAO,IAAMA,GAAQuyW,iBAAiBvO,UAY1C,SACI1rb,YAAYu7b,GAAUnB,GAAWl4B,GAAiBu4H,GAAe1qG,GAAmBjE,GAAgB4uG,GAAuBC,GAAsBC,GAKjJptB,IACIrtgB,KAAKo7b,SAAWA,GAChBp7b,KAAKi6b,UAAYA,GACjBj6b,KAAK+ha,gBAAkBA,GACvB/ha,KAAKs6hB,cAAgBA,GACrBt6hB,KAAK4vb,kBAAoBA,GACzB5vb,KAAKu6hB,sBAAwBA,GAC7Bv6hB,KAAKw6hB,qBAAuBA,GAC5Bx6hB,KAAKy6hB,iBAAmBA,GACxBz6hB,KAAK06hB,wBAA0B,GAC/B16hB,KAAK26hB,2BAA6B,IAAI5+gB,KACtC/b,KAAK46hB,wBAA0B,IAAI7+gB,KACnC/b,KAAK66hB,oBAAsB,IAAIltL,IAM/B3tW,KAAK86hB,gBAAiBz4J,OAAM,IAAMriY,KAAKstC,YAAY9pC,OAC7CxD,KAAK+6hB,qBACL/6hB,KAAK+6hB,qBAAqB1yhB,MAAK86a,YAAUvqE,KAC/C54W,KAAKitb,gBAAkBtB,GAGvBr+Y,kBACA,OAAOttC,KAAKs6hB,cAAgBt6hB,KAAKs6hB,cAAchtf,YAActtC,KAAK06hB,wBAGlEZ,kBACA,OAAO95hB,KAAKs6hB,cAAgBt6hB,KAAKs6hB,cAAcR,YAAc95hB,KAAK46hB,wBAEtEG,qBACI,MAAMj6Z,GAAS9gI,KAAKs6hB,cACpB,OAAOx5Z,GAASA,GAAOi6Z,qBAAuB/6hB,KAAK26hB,2BAEvD/thB,KAAKouhB,GAAwB3je,IACzBA,GA+PR,YAA8BA,GAAQ8qW,IAClC,OAAO54Y,OAAOC,OAAOD,OAAOC,OAAO,GAAI24Y,IAAiB9qW;;;;;;;SAhQ3C4je,CAAqB5je,GAAQr3D,KAAK+ha,iBAAmB,IAAIg3H,GAC9D1he,GAAOgT,IACPrqE,KAAKk7hB,cAAc7je,GAAOgT,IAI9B,MAAM6c,GAAalnF,KAAKy8b,eAAeplY,IACjCwge,GAAkB73hB,KAAKm7hB,uBAAuBj0c,GAAY7vB,IAC1Dz0D,GAAY5C,KAAKo7hB,qBAAqBJ,GAAwBnD,GAAiB3wc,GAAY7vB,IAEjG,OAAKr3D,KAAKstC,YAAY9pC,QAClBxD,KAAKq7hB,+CAETr7hB,KAAKstC,YAAYnqC,KAAKP,IACtBA,GAAU2L,cAAcpI,UAAU,IAAMnG,KAAKs7hB,kBAAkB14hB,KAC/D5C,KAAK85hB,YAAYv4gB,KAAK3e,IAEtBi1hB,GAAgBO,iCACTx1hB,GAKXomL,WACIhpL,KAAKu7hB,cAAcv7hB,KAAKstC,aAM5B4tf,cAAc7wd,IACV,OAAOrqE,KAAKstC,YAAYtqC,KAAK2J,IAAUA,GAAO09D,KAAOA,IAEzDnhE,cAGIlJ,KAAKu7hB,cAAcv7hB,KAAK06hB,yBACxB16hB,KAAK26hB,2BAA2B9ghB,WAChC7Z,KAAK46hB,wBAAwB/ghB,WAOjC4ib,eAAeplY,IACX,MAAMmjY,GAAgBx6b,KAAKupgB,kBAAkBlyc,IAC7C,OAAOr3D,KAAKo7b,SAASjzW,OAAOqyW,IAOhC+uE,kBAAkBiyB,IACd,MAAM7tM,GAAQ,IAAI8sG,KAAc,CAC5BryW,iBAAkBpoF,KAAKo7b,SAASjnb,WAAWi7T,SAC3Cu8G,eAAgB6vG,GAAa7vG,gBAAkB3rb,KAAKitb,kBACpDh5a,WAAYunhB,GAAavnhB,WACzBylH,YAAa8ha,GAAa9ha,YAC1BonB,UAAW06Y,GAAa16Y,UACxBzyI,SAAUmthB,GAAanthB,SACvBC,UAAWkthB,GAAalthB,UACxBxB,SAAU0uhB,GAAa1uhB,SACvBC,UAAWyuhB,GAAazuhB,UACxB8+a,oBAAqB2vG,GAAa7D,oBAEtC,OAAI6D,GAAa5vG,gBACbj+F,GAAMi+F,cAAgB4vG,GAAa5vG,eAEhCj+F,GAQXwtM,uBAAuB5zc,GAASlwB,IAC5B,MAAMoke,GAAepke,IAAUA,GAAO0hF,kBAAoB1hF,GAAO0hF,iBAAiBxwD,SAC5EA,GAAW24W,kBAAgB,CAC7BpgU,OAAQ26Z,IAAgBz7hB,KAAKi6b,UAC7B5wT,UAAW,CAAC,CAAEhhD,QAAS0wc,EAAiBzwc,SAAUjxB,OAEhDqke,GAAkB,IAAIp7F,KAAgBtgc,KAAKw6hB,qBAAsBnje,GAAO0hF,iBAAkBxwD,GAAUlxB,GAAOuhF,0BAEjH,OAAO+iZ,GADsBnzc,OAAOkzc,IAChB14T,SAWxBo4T,qBAAqBJ,GAAwBnD,GAAiB3wc,GAAY7vB,IAGtE,MAAMz0D,GAAY,IAAI5C,KAAKu6hB,sBAAsBrzc,GAAY2wc,GAAiBxge,GAAOgT,IACrF,GAAI2wd,cAAkC/2b,cAClC4zb,GAAgBr3F,qBAAqB,IAAItE,KAAe8+F,GAAwB,KAAM,CAClFr9b,UAAWtmC,GAAO30D,KAClBE,oBAGH,CACD,MAAM2lF,GAAWvoF,KAAK47hB,gBAAgBvke,GAAQz0D,GAAWi1hB,IACnDrnc,GAAaqnc,GAAgBt3F,sBAAsB,IAAID,KAAgB06F,GAAwB3je,GAAO0hF,iBAAkBxwD,GAAUlxB,GAAOuhF,2BAC/Ih2I,GAAU2N,kBAAoBigF,GAAWwyI,SAE7CpgO,UAAU0rb,WAAWj3X,GAAO1hD,MAAO0hD,GAAOnjD,QAAQk2a,eAAe/yX,GAAOljD,UACjEvR,GAUXg5hB,gBAAgBvke,GAAQz0D,GAAWi1hB,IAC/B,MAAM4D,GAAepke,IAAUA,GAAO0hF,kBAAoB1hF,GAAO0hF,iBAAiBxwD,SAK5E8gD,GAAY,CACd,CAAEhhD,QAASroF,KAAKw6hB,qBAAsBlyc,SAAUuvc,IAChD,CAAExvc,QAASroF,KAAKy6hB,iBAAkBnyc,SAAUjxB,GAAO30D,MACnD,CAAE2lF,QAASroF,KAAKu6hB,sBAAuBjyc,SAAU1lF,KAErD,OAAIy0D,GAAOypF,aACL26Y,KACGA,GAAa56hB,IAAIina,KAAgB,KAAM8sH,0BAC5CvrZ,GAAUlmI,KAAK,CACXklF,QAASy/U,KACTx/U,SAAU,CAAEtkE,MAAOqzC,GAAOypF,UAAWitI,QAAQu2I,aAG9C48B,kBAAgB,CAAEpgU,OAAQ26Z,IAAgBz7hB,KAAKi6b,UAAW5wT,eAMrEiyZ,kBAAkB14hB,IACd,MAAM+vC,GAAQ3yC,KAAKstC,YAAYl8B,QAAQxO,IACnC+vC,IAAQ,IACR3yC,KAAKstC,YAAY9f,OAAOmlB,GAAO,GAG1B3yC,KAAKstC,YAAY9pC,SAClBxD,KAAK66hB,oBAAoBtyhB,QAAQ,CAAC27N,GAAetkI,MACzCskI,GACAtkI,GAAQj5D,aAAa,cAAeu9L,IAGpCtkI,GAAQ21T,gBAAgB,iBAGhCv1Z,KAAK66hB,oBAAoBpqc,QACzBzwF,KAAK+6hB,qBAAqBx5gB,SAOtC85gB,+CACI,MAAMQ,GAAmB77hB,KAAK4vb,kBAAkBR,sBAEhD,GAAIysG,GAAiBn0c,cAAe,CAChC,MAAM02V,GAAWy9G,GAAiBn0c,cAAcp0D,SAChD,QAASpzB,GAAIk+a,GAAS56a,OAAS,EAAGtD,IAAI,EAAIA,KAAK,CAC3C,IAAI4+a,GAAUV,GAASl+a,IACnB4+a,KAAY+8G,IACS,WAArB/8G,GAAQz4Y,UACa,UAArBy4Y,GAAQz4Y,WACPy4Y,GAAQ58F,aAAa,eACtBliV,KAAK66hB,oBAAoBv7R,IAAIw/K,GAASA,GAAQl1Y,aAAa,gBAC3Dk1Y,GAAQn4Y,aAAa,cAAe,WAMpD40f,cAAcO,IACV,IAAI57hB,GAAI47hB,GAAQt4hB,OAChB,KAAOtD,MAKH47hB,GAAQ57hB,IAAG2C,SAIvBk5hB,GAAeh9c,UAAf,aAxiB0GE,gCAyiB1G88c,GAAe/8c,UAziB2FC,8BAyiB1G,MAA+F88c,KAO/F,iBAAwBA,GACpBl8hB,YAAY0nF,GAASgB,GAKrBvtB,GAAUmnW,GAAgBwpB,GAAgBqwG,GAAcH,GAKxD7tB,IACIrif,MAAM47D,GAASgB,GAAU45U,GAAgB65H,GAAcH,GAAkBlwG,GAAgBswG,EAAc7C,EAAoBc,EAAiBlsB,KAGpJkuB,GAAUn9c,UAAV,4BAAsGm9c,IA/jBIj9c,qBA+jBuBkkV,MA/jBvBlkV,qBA+jBgDA,YA/jBhDA,qBA+jBwE+mX,KAAlL,GA/jB0G/mX,qBA+jBgHk7c,EAA1N,GA/jB0Gl7c,qBA+jBuKm7c,GA/jBvKn7c,qBA+jB8Mi9c,GAAxT,IA/jB0Gj9c,qBA+jBoQkkV,MA/jBpQlkV,qBA+jBsS4ub,KAAhZ,KACAquB,GAAUlwY,WAhkBgG/sE,+BAgkB1G,OAA0Gi9c,GAA1G75hB,QAA0G65hB,GAA1G,YA2CA,IAAIC,GAAmB,EAIvB,SACIt8hB,YAQA+C,GAAWi8E,GAAau9c,IACpBp8hB,KAAK4C,UAAYA,GACjB5C,KAAK6+E,YAAcA,GACnB7+E,KAAKo8hB,QAAUA,GAEfp8hB,KAAK4H,KAAO,SAEhBpF,WACSxC,KAAK4C,YAMN5C,KAAK4C,UAAYy5hB,GAAiBr8hB,KAAK6+E,YAAa7+E,KAAKo8hB,QAAQ9uf,cAGzElZ,YAAYorD,IACR,MAAM88c,GAAgB98c,GAAQ+8c,iBAAsB/8c,GAAQg9c,sBACxDF,KACAt8hB,KAAK65hB,aAAeyC,GAAc1uY,cAG1Ck/W,eAAe/nb,IAKX60c,EAAgB55hB,KAAK4C,UAA6B,IAAlBmiF,GAAMi9O,SAAmC,IAAlBj9O,GAAMk9O,QAAgB,WAAa,QAASjiU,KAAK65hB,eAGhH4C,GAAe19c,UAAf,4BAA2G09c,IAvpBDx9c,8BAupBiCg9c,EAA3I,GAvpB0Gh9c,8BAupB0EA,cAvpB1EA,8BAupBoGi9c,MAC9MO,GAAez9c,UAxpB2FC,8BAwpB1G,MAA+Fw9c,GAA/F/4hB,8GAxpB0Gu7E,uBAwpB1G,4BAA+FznD,wBAA/F,MAxpB0GynD,wBAwpB1G,gCAxpB0GA,CAwpB1G,uNAxpB0GA,oCAurB1G,SACIp/E,YAGA68hB,GAAY79c,GAAau9c,IACrBp8hB,KAAK08hB,WAAaA,GAClB18hB,KAAK6+E,YAAcA,GACnB7+E,KAAKo8hB,QAAUA,GAEfp8hB,KAAKqqE,GAAM,oBAAmB8xd,KAElC35hB,WACSxC,KAAK08hB,aACN18hB,KAAK08hB,WAAaL,GAAiBr8hB,KAAK6+E,YAAa7+E,KAAKo8hB,QAAQ9uf,cAElEttC,KAAK08hB,YACLrlb,QAAQi2O,UAAU51O,KAAK,KACnB,MAAM1V,GAAYhiG,KAAK08hB,WAAWrD,mBAC9Br3b,KAAcA,GAAUm2b,kBACxBn2b,GAAUm2b,gBAAkBn4hB,KAAKqqE,OAMrDsyd,GAAe59c,UAAf,4BAA2G49c,IAhtBD19c,8BAgtBiCg9c,EAA3I,GAhtB0Gh9c,8BAgtB0EA,cAhtB1EA,8BAgtBoGi9c,MAC9MS,GAAe39c,UAjtB2FC,8BAitB1G,MAA+F09c,GAA/Fj5hB,+IAjtB0Gu7E,2BAitB1G,4DAqBA,UAEA29c,GAAiB79c,UAAjB,4BAA6G69c,KAC7GA,GAAiB59c,UAzuByFC,8BAyuB1G,MAAiG29c,GAAjGl5hB,gIAYA,UAgBA,YAA0Bk8F,GAAStyD,IAC/B,IAAIwzF,GAASlhC,GAAQ/sF,cAAc60E,cACnC,KAAOo5C,KAAWA,GAAOiqR,UAAU3jU,SAAS,yBACxC05C,GAASA,GAAOp5C,cAEpB,OAAOo5C,GAASxzF,GAAYtqC,KAAK2J,IAAUA,GAAO09D,KAAOy2D,GAAOz2D,IAAM;;;;;;;SAnB1Ewyd,GAAiB99c,UAAjB,4BAA6G89c,KAC7GA,GAAiB79c,UAxvByFC,8BAwvB1G,MAAiG49c,GAAjGn5hB,gIA4BA,SAEAo5hB,EAAgB/9c,UAAhB,4BAA4G+9c,IAC5GA,EAAgB58c,UAvxB0FjB,6BAuxB1G,MAA6G69c,IAU7GA,EAAgB38c,UAjyB0FlB,6BAiyB1G,WAAyI,CAACi9c,GAAW7B,IAArJ/wZ,SAAqM,CAAC0zT,KAAejza,KAAcq2D,MAAkBA;;;;;;;;;;;;;;;;;;;;;SCxkCrP,QACIvgF,cACIG,KAAK+2Z,WAAY,EACjB/2Z,KAAK+8hB,QAAS,EAGdx8P,eACA,OAAOvgS,KAAK+2Z,UAEZx2H,aAASv8Q,GACThkB,KAAK+2Z,WAAYoH,QAAsBn6Y,GAGvCg5gB,YACA,OAAOh9hB,KAAK+8hB,OAEZC,UAAMh5gB,GACNhkB,KAAK+8hB,QAAS5+H,QAAsBn6Y,IAG5Ci5gB,EAAWl+c,UAAX,0BAAuGk+c,IACvGA,EAAWr9c,UADkFX,8BAC7F,MAA2Fg+c,EAA3Fv5hB,8CAAgN,YAAhN,6DAD6Fu7E,wBAC7F,uDAD6FA,wBAC7F,kCAD6FA,CAC7F,qCAD6FA,CAC7F;;;;;;;;AAwBA,SAEAi+c,EAAiBn+c,UAAjB,0BAA6Gm+c,IAC7GA,EAAiBh9c,UA5B4EjB,6BA4B7F,MAA8Gi+c,IAC9GA,EAAiB/8c,UA7B4ElB,6BA6B7F,UAA0I,CAACmB,MAAkBA;;;;;;;;;;;;;;;;;;;;;SC/C7J,IAAI+8c,EAAW,EAMf,MAAMC,EAAgB,IAAI30Y,iBAAe,gBAIzC,QACI5oJ,cAEIG,KAAKikb,cAAgB,IAAIloa,KAEzB/b,KAAKq9hB,qBAAuB,IAAIthhB,KAEhC/b,KAAKqqE,GAAM,iBAAgB8yd,IAC3Bn9hB,KAAKs9hB,QAAS,EAGd7+b,YACA,OAAOz+F,KAAKs9hB,OAEZ7+b,UAAMA,IACNz+F,KAAKs9hB,QAASn/H,QAAsB1/T,IAGxC8+b,UACQv9hB,KAAKs9hB,QACLt9hB,KAAKq9hB,qBAAqB97gB,MAAK,GAIvCynK,WACIhpL,KAAKq9hB,qBAAqB97gB,MAAK,GAEnC6S,YAAYorD,IACRx/E,KAAKikb,cAAc1ia,KAAKi+D,IAE5Bt2E,cACIlJ,KAAKikb,cAAcpqa,WACnB7Z,KAAKq9hB,qBAAqBxjhB,YAGlC2jhB,EAAaz+c,UAAb,4BAAyGy+c,IACzGA,EAAax+c,UADkFC,8BAC/F,MAA6Fu+c,EAA7F95hB,gHAD+Fu7E,+BAC8F,CAAC,CAAEoJ,QAAS+0c,EAAe5+b,YAAag/b,KADtIv+c;;;;;;;;AAqB/F,IAAIi1U,EAAS,EAKb,QACIr0Z,YAAY49hB,GAAWt7G,GAAoBu7G,IACvC19hB,KAAKy9hB,UAAYA,GACjBz9hB,KAAKmib,mBAAqBA,GAC1Bnib,KAAK09hB,qBAAuBA,GAE5B19hB,KAAK29hB,0BAA4B7mI,UAEjC92Z,KAAKoiE,OAAS,IAAIkkW,eAElBtma,KAAKg9F,OAAS,IAAIspU,eAElBtma,KAAKqgK,UAAY,IAAIimQ,eAMrBtma,KAAK49hB,eAAiB,IAAIt3H,eAE1Btma,KAAKqqE,GAAM,uBAAsB6pV,IACjCl0Z,KAAK69hB,WAAY,EACjB79hB,KAAKmua,WAAY,EAEjBnua,KAAK89hB,+BAAiC,OACtC99hB,KAAK89hB,+BAAiCJ,GAAqBhzH,OAAO,CAACrgW,GAAI0zd,MAC/D/9hB,KAAKy9hB,YACJz9hB,KAAKy9hB,UAAUh/b,OAChBz+F,KAAKy9hB,UAAUpzd,KAAO0zd,IACtB/9hB,KAAKqqE,KAAOA,KACZrqE,KAAKkwE,UAAW,KAIpBlwE,KAAKy9hB,YACLz9hB,KAAK29hB,0BAA4B39hB,KAAKg+hB,mCAI1C9td,eACA,OAAOlwE,KAAK69hB,UAEZ3td,aAASA,IAGT,GAFAA,IAAWiuV,QAAsBjuV,IAE7BlwE,KAAK69hB,YAAc3td,GAAU,CAG7B,GAFAlwE,KAAK69hB,UAAY3td,GACjBlwE,KAAK49hB,eAAejtgB,KAAKu/C,IACrBA,GAAU,CACVlwE,KAAKg9F,OAAOrsE,OAKZ,MAAMotgB,GAAc/9hB,KAAKy9hB,UAAYz9hB,KAAKy9hB,UAAUpzd,GAAKrqE,KAAKqqE,GAC9DrqE,KAAK09hB,qBAAqBviR,OAAOn7Q,KAAKqqE,GAAI0zd,SAG1C/9hB,KAAKoiE,OAAOzxC,OAIhB3wB,KAAKmib,mBAAmBvoO,gBAI5BtsL,eACA,OAAOttB,KAAKmua,UAEZ7gZ,aAASA,IACTttB,KAAKmua,WAAYhQ,QAAsB7wY,IAG3CpkB,cACIlJ,KAAKg9F,OAAOnjF,WACZ7Z,KAAKoiE,OAAOvoD,WACZ7Z,KAAKqgK,UAAU1vI,OACf3wB,KAAKqgK,UAAUxmJ,WACf7Z,KAAK89hB,iCACL99hB,KAAK29hB,0BAA0BhwgB,cAGnCyvE,SACSp9F,KAAKstB,WACNttB,KAAKkwE,UAAYlwE,KAAKkwE,UAI9BrtE,QACS7C,KAAKstB,WACNttB,KAAKkwE,UAAW,GAIxBtjE,OACS5M,KAAKstB,WACNttB,KAAKkwE,UAAW,GAGxB8td,kCACI,OAAOh+hB,KAAKy9hB,UAAUJ,qBAAqBl3hB,UAAU+pE,KAE5ClwE,KAAKstB,WACNttB,KAAKkwE,SAAWA,OAKhC+td,EAAiBl/c,UAAjB,4BAA6Gk/c,GAtIdh/c,8BAsIgDm+c,EAA/I,IAtI+Fn+c,8BAsI0GA,qBAtI1GA,8BAsI2IS,QAC1Ou+c,EAAiBj/c,UAvI8EC,8BAuI/F,MAAiGg/c,EAAjGv6hB,uPAvI+Fu7E,+BAuIsP,CAG7U,CAAEoJ,QAAS+0c,EAAe90c,cAAUswR;;;;;;;;AA2C5C,SAEAslL,EAAmBn/c,UAAnB,4BAA+Gm/c,IAC/GA,EAAmBh+c,UAxL4EjB,6BAwL/F,MAAgHi/c,IAChHA,EAAmB/9c,UAzL4ElB,6BAyL/F;;;;;;;;;;;;;;;;;;;;;;4ICtJ2GA,sBAiUgkC,2BAjUhkCA,mDAiUskC,4GAlY3qCk/c,GAAgB,IAAI11Y,iBAAe,iBAWnC21Y,GAAmC,oCAuBnCC,GAAyB,CAE3BC,iBAAiBj0c,QAAQ,kBAAmB,EACxCsjQ,QAAM,mBAAmB56T,QAAM,CAAE7V,UAAW,mBAC5CywU,QAAM,YAAY56T,QAAM,CAAE7V,UAAW,qBACrCmwgB,QAAW,6CAA6CjuQ,QAAQg/Q,OAGpEG,eAAel0c,QAAQ,gBAAiB,EACpCsjQ,QAAM,mBAAmB56T,QAAM,CAAE7e,OAAQ,MAAO6zC,WAAY,aAC5D4lS,QAAM,YAAY56T,QAAM,CAAE7e,OAAQ,IAAK6zC,WAAY,cACnDsle,QAAW,6CAA6CjuQ,QAAQg/Q;;;;;;;;;;;;;;;AAexE,SACIv+hB,YAAYkpc,IACR/oc,KAAK+oc,UAAYA,IAGzBy1F,GAAyBz/c,UAAzB,4BAAqHy/c,IAAVv/c,8BAAoDA,iBAC/Ju/c,GAAyBx/c,UADkFC,8BAC3G,MAAyGu/c,GAAzG96hB,4DASA,IAAIgvY,GAAW,EAKf,MAAM+rJ,GAAsC,IAAIh2Y,iBAAe,uCAK/D,iBAAgCw1Y,EAC5Bp+hB,YAAY49hB,GAAWt7G,GAAoBu8G,GAA4Bt+X,GAAmBhhF,GAAWiub,GAAgBlrG,IACjHx2Y,MAAM8xgB,GAAWt7G,GAAoBu8G,IACrC1+hB,KAAKogK,kBAAoBA,GACzBpgK,KAAKqtgB,eAAiBA,GACtBrtgB,KAAK2+hB,aAAc,EAEnB3+hB,KAAK4+hB,YAAc,IAAIt4H,eAEvBtma,KAAK6+hB,cAAgB,IAAIv4H,eAEzBtma,KAAK8+hB,cAAgB,IAAI/ihB,KAEzB/b,KAAK++hB,UAAa,8BAA6BrsJ,KAE/C1yY,KAAKg/hB,mBAAqB,IAAIjjhB,KAC9B/b,KAAKy9hB,UAAYA,GACjBz9hB,KAAKo/E,UAAYA,GAGjBp/E,KAAKg/hB,mBACA32hB,MAAKo5Z,OAAqB,CAACjha,GAAGL,KACxBK,GAAEy+hB,YAAc9+hB,GAAE8+hB,WAAaz+hB,GAAEy4hB,UAAY94hB,GAAE84hB,UAErD9yhB,UAAU4+E,KACa,SAApBA,GAAMk6c,YACgB,aAAlBl6c,GAAMk0c,QACNj5hB,KAAK4+hB,YAAYjugB,OAEM,cAAlBo0D,GAAMk0c,SACXj5hB,KAAK6+hB,cAAclugB,UAI3BwxY,KACAnia,KAAKk/hB,WAAa/8H,GAAe+8H,YAIrCA,iBACA,OAAOl/hB,KAAK2+hB,aAAgB3+hB,KAAKy9hB,WAAaz9hB,KAAKy9hB,UAAUyB,WAE7DA,eAAWl7gB,IACXhkB,KAAK2+hB,aAAcxgI,QAAsBn6Y,IAGzCm7gB,qBACA,OAAOn/hB,KAAKo/hB,iBAAoBp/hB,KAAKy9hB,WAAaz9hB,KAAKy9hB,UAAU0B,eAEjEA,mBAAen7gB,IACfhkB,KAAKo/hB,gBAAkBp7gB,GAG3Bq7gB,cACI,QAAIr/hB,KAAKy9hB,YACEz9hB,KAAKkwE,UAA2C,YAA/BlwE,KAAKy9hB,UAAU6B,YAEpC,CAGXC,oBACI,OAAOv/hB,KAAKkwE,SAAW,WAAa,YAGxCktB,SACIp9F,KAAKkwE,UAAYlwE,KAAKkwE,SAG1BrtE,QACI7C,KAAKkwE,UAAW,EAGpBtjE,OACI5M,KAAKkwE,UAAW,EAEpBy1M,qBACQ3lR,KAAKw/hB,cAELx/hB,KAAKg9F,OACA30F,MAAK86a,OAAU,OAAOz8a,OAAO,IAAM1G,KAAKkwE,WAAalwE,KAAKqpgB,UAAU/nP,OAAK,IACzEn7Q,UAAU,KACXnG,KAAKqpgB,QAAU,IAAIntE,KAAel8b,KAAKw/hB,aAAaz2F,UAAW/oc,KAAKogK,qBAIhFhsI,YAAYorD,IACRx/E,KAAK8+hB,cAAcv9gB,KAAKi+D,IAE5Bt2E,cACIyiB,MAAMziB,cACNlJ,KAAKg/hB,mBAAmBnlhB,WACxB7Z,KAAK8+hB,cAAcjlhB,WAGvB0+gB,iBACI,GAAIv4hB,KAAKy/hB,MAAO,CACZ,MAAMC,GAAiB1/hB,KAAKo/E,UAAUmgV,cAChCogI,GAAc3/hB,KAAKy/hB,MAAM5shB,cAC/B,OAAO6shB,KAAmBC,IAAeA,GAAYv4c,SAASs4c,IAElE,OAAO,GAGfE,GAAkB7gd,UAAlB,4BAA8G6gd,IA3HH3gd,8BA2HsCk/c,GAAjJ,IA3H2Gl/c,8BA2HgGA,qBA3HhGA,8BA2HiIS,MA3HjIT,8BA2H0KA,oBA3H1KA,8BA2H0MU,MA3H1MV,8BA2H+N4ub,KAA1U,GA3H2G5ub,8BA2HiRw/c,GAA5X,KACAmB,GAAkBhgd,UA5HyFX,8BA4H3G,MAAkG2gd,GAAlGl8hB,+EA5H2Gu7E,2BA4H3G5mD,GAIyEmmgB,GAJzE,gBA5H2Gv/c,2BA4H3GpkD,GA5H2GokD,6BA4H3GY,+DA5H2GZ,wBA4H3GxvE,kBA5H2GwvE,2BA4H3G5mD,GA5H2G4mD,6BA4H3GY,uGA5H2GZ,wBA4H3G,2BA5H2GA,CA4H3G,+DA5H2GA,CA4H3G,qUA5H2GA,+BA4H4hB,CAG/nB,CAAEoJ,QAAS81c,GAAe71c,cAAUswR,KA/H+D35R,yEA4H3Gc,yPA5H2Gd,4BA4H3G1nE,GA5H2G0nE,yBAgImN,GAhInNA,2BAgIoR,aAhIpRA,uBAgI0Y,0CAAwBY,iCAhIlaZ,2BAgIihB,WAhIjhBA,yBAgI+jB,KAhI/jBA,uBAgI8lB,yBAhI9lBA,oDAgIqqB,KAhIrqBA,4BA4H3G,OA5H2GA,sBAgI2V,GAhI3VA,uBAgI2V,wCAhI3VA,CAgI2V,YAhI3VA,wBAgI0c,gCAhI1cA,sBAgI2mB,GAhI3mBA,uBAgI2mB,gCAJttBuhM,YAI2hFwlL,MAJ3hFhmX,ktDAIgrF,CAACq+c,GAAuBE,gBAJxsFzkV,oBAyDA,UAEA+lV,GAA2B9gd,UAA3B,4BAAuH8gd,KACvHA,GAA2B7gd,UAxLgFC,8BAwL3G,MAA2G4gd,GAA3Gn8hB,gEAeA,MAAMo8hB,IAAoCpwB,QAF1C,YAMA,gBAAsCowB,GAClCjgiB,YAAYglgB,GAAOnpG,GAAU0K,GAAe+b,GAAoBhgB,GAAgBkrG,GAAgBt7Y,IAC5FpmG,QACA3rB,KAAK6kgB,MAAQA,GACb7kgB,KAAK07Z,SAAWA,GAChB17Z,KAAKoma,cAAgBA,GACrBpma,KAAKmib,mBAAqBA,GAC1Bnib,KAAKqtgB,eAAiBA,GACtBrtgB,KAAK+/hB,0BAA4BjpI,UACjC,MAAMkpI,GAA4Bn7B,GAAM44B,UAClC54B,GAAM44B,UAAUx5G,cAAc57a,MAAK3B,OAAO84E,OAAcA,GAAQ0/c,aAAiB1/c,GAAQ2/c,kBACzF7/L,IACNt/V,KAAK+xH,SAAW9kH,SAAS8kH,IAAY,KAAO,EAG5C/xH,KAAK+/hB,2BAA4Bn7J,OAAMigI,GAAM7na,OAAQ6na,GAAMzic,OAAQ49d,GAA2Bn7B,GAAMi6B,cAAcz2hB,MAAK3B,OAAO84E,OAChHA,GAAQ0/c,YAAiB1/c,GAAQlyD,UAAekyD,GAAQ2/c,mBACjEh5hB,UAAU,IAAMnG,KAAKmib,mBAAmBvoO,gBAE7CirT,GAAMzic,OACD/5D,MAAK3B,OAAO,IAAMm+f,GAAM0zB,mBACxBpyhB,UAAU,IAAMiga,GAAcnB,SAASvJ,GAAU,YAClDyG,KACAnia,KAAKigiB,eAAiB99H,GAAe89H,eACrCjgiB,KAAKkgiB,gBAAkB/9H,GAAe+9H,iBAO1C5ygB,eACA,OAAOttB,KAAK6kgB,MAAMv3e,SAGtBklQ,UACSxyR,KAAKstB,UACNttB,KAAK6kgB,MAAMzna,SAInB+ic,cACI,OAAOngiB,KAAK6kgB,MAAM30b,SAGtBqvd,oBACI,OAAOv/hB,KAAK6kgB,MAAM06B,oBAGtBa,cACI,OAAOpgiB,KAAK6kgB,MAAMx6b,GAGtBg2d,qBACI,OAAOrgiB,KAAK6kgB,MAAMs6B,eAGtBmB,cACI,OAAQtgiB,KAAK6kgB,MAAMq6B,aAAel/hB,KAAK6kgB,MAAMv3e,SAMjDizgB,mBACI,MAAMhhR,GAAav/Q,KAAKmgiB,cACxB,OAAI5gR,IAAcv/Q,KAAKigiB,eACZjgiB,KAAKigiB,gBAEN1gR,IAAcv/Q,KAAKkgiB,gBAClBlgiB,KAAKkgiB,gBAET,KAGX5rB,SAASvvb,IACL,OAAQA,GAAMpxE,cAEL0/f,UACAjnH,MACIiN,QAAet0U,MAChBA,GAAM36C,iBACNpqC,KAAKwyR,WAET,cAKA,YAHIxyR,KAAK6kgB,MAAM44B,WACXz9hB,KAAK6kgB,MAAM44B,UAAU+C,qBAAqBz7c,KAE9C,CAQZjyE,MAAMkhS,GAAQ7xB,IACN6xB,GACAh0S,KAAKoma,cAAcnB,SAASjla,KAAK07Z,SAAU1nH,GAAQ7xB,IAGnDniR,KAAK07Z,SAAS7oZ,cAAcC,MAAMqvQ,IAG1CvvQ,kBACI5S,KAAKoma,cAAchC,QAAQpka,KAAK07Z,UAAUv1Z,UAAU6tS,KAC5CA,IAAUh0S,KAAK6kgB,MAAM44B,WACrBz9hB,KAAK6kgB,MAAM44B,UAAUgD,mBAAmBzgiB,QAIpDkJ,cACIlJ,KAAK+/hB,0BAA0BpygB,cAC/B3tB,KAAKoma,cAAcvB,eAAe7ka,KAAK07Z,WAG/CglI,EAAwB3hd,UAAxB,4BAAoH2hd,GAhUTzhd,8BAgUkD2gd,GAA7J,GAhU2G3gd,8BAgU4FA,cAhU5FA,8BAgUsHsrb,MAhUtHtrb,8BAgUoJA,qBAhUpJA,8BAgUqLw/c,GAAhS,GAhU2Gx/c,8BAgUqP4ub,KAAhW,GAhU2G5ub,8BAgUuS,cAClZyhd,EAAwB9gd,UAjUmFX,8BAiU3G,MAAwGyhd,EAAxGh9hB,6DAA+S,SAA/S,qGAjU2Gu7E,uBAiU3G,0BAAwGY,cAjUGZ,CAiU3G,8BAAwGY,kBAAxG,OAjU2GZ,wBAiU3G,wBAjU2GA,CAiU3G,uBAjU2GA,CAiU3G,iCAjU2GA,CAiU3G,iCAjU2GA,CAiU3G,mCAjU2GA,wBAiU3G,gCAjU2GA,wBAiU3G,gCAjU2GA,CAiU3G,yEAjU2GA,CAiU3G,2EAjU2GA,CAiU3G,2KAjU2GA,wCAiU3Gc,wNAjU2Gd,4BAiU3G1tE,GAjU2G0tE,2BAiUs4B,YAjUt4BA,yBAiUs6B,GAjUt6BA,yBAiU89B,KAjU99BA,yBAiU4hC,KAjU5hCA,kDAiUgkC,mBAA3qC,OAjU2GA,sBAiUknC,GAjUlnCA,uBAiUknC,2BAA7tCuhM,YAA2zGsjK,MAA3zG9jW,uhEAAi5G,CAACq+c,GAAuBC,kBAAz6GxkV,oBA4CA,UAEA6mV,GAA6B5hd,UAA7B,4BAAyH4hd,KACzHA,GAA6B3hd,UAhX8EC,8BAgX3G,MAA6G0hd,GAA7Gj9hB,+FAaA,UAEAk9hB,GAAuB7hd,UAAvB,4BAAmH6hd,KACnHA,GAAuB5hd,UAhYoFC,8BAgY3G,MAAuG2hd,GAAvGl9hB;;;;;;;;AAqBA,iBAA2B85hB,EACvB39hB,cACI8rB,SAASinR,WAET5yS,KAAK6giB,YAAc,IAAIxpI,YACvBr3Z,KAAK2+hB,aAAc,EASnB3+hB,KAAKs/hB,YAAc,UAEnBt/hB,KAAKm/hB,eAAiB,QAGtBD,iBACA,OAAOl/hB,KAAK2+hB,YAEZO,eAAWn6Q,IACX/kR,KAAK2+hB,aAAcxgI,QAAsBp5I,IAE7CY,qBACI3lR,KAAK8giB,SAASthd,QACTn3E,MAAK86a,OAAUnjb,KAAK8giB,WACpB36hB,UAAW0lI,KACZ7rI,KAAK6giB,YAAY9ga,MAAM8L,GAAQnlI,OAAO8lE,IAAUA,GAAOq4b,MAAM44B,YAAcz9hB,OAC3EA,KAAK6giB,YAAYr/C,oBAErBxhf,KAAKykgB,YAAc,IAAI6R,KAAgBt2gB,KAAK6giB,aAAanpI,WAAWW,iBAGxEmoI,qBAAqBz7c,IACjB/kF,KAAKykgB,YAAY19a,UAAUhC,IAE/B07c,mBAAmBj0d,IACfxsE,KAAKykgB,YAAYlsG,iBAAiB/rV,IAEtCtjE,cACIyiB,MAAMziB,cACNlJ,KAAK6giB,YAAY/mR,WAGzBinR,GAAahid,UAAb,qDAnc2GE,kCAmcF8hd,MAAzGlhd,IAAyGkhd,KAAzG,GACAA,GAAa/hd,UApc8FC,8BAoc3G,MAA6F8hd,GAA7Fr9hB,yEApc2Gu7E,2BAoc3G5mD,GAKwDqogB,EALxD,gBApc2Gzhd,2BAoc3GpkD,GApc2GokD,6BAoc3GY,8FApc2GZ,wBAoc3G,8KApc2GA,+BAocgQ,CACnW,CACIoJ,QAAS81c,GACT3/b,YAAauic,MAvckF9hd;;;;;;;;AA+e3G,UAEA+hd,GAAmBjid,UAAnB,4BAA+Giid,KAC/GA,GAAmB9gd,UAlfwFjB,6BAkf3G,MAAgH+hd,KAahHA,GAAmB7gd,UA/fwFlB,6BA+f3G,UAA8I,CAAC4+Y,KAAcz9Y,KAAiB89c,EAAoBn0gB;;;;;;;;;;;;;;;;;;;;;mGCrjBvGk1D,oCAqnB83F,GArnB93FA,2BAqnBs7F,YArnBt7FA,sBAqnBs+F,WArnBt+FA,CAqnBs+F,WArnBt+FA,CAqnBs+F,YArnBt+FA,sDAqnBkqG,YArnBlqGA,sBAqnB+uG,WArnB/uGA,CAqnB+uG,WArnB/uGA,CAqnB+uG,YArnB/uGA,8JAqnBg8G,YArnBh8GA,uBAqnB2hH,+BArnB3hHA,iCAqnB2hH7wC,IAAsBxnC,EArnBjjHq4E,0BAqnBijHuS,qBArnBjjHvS,yBAqnB6oH,KArnB7oHA,gGAqnB6kH,mFArnB7kHA,oCAqnByyJ,GArnBzyJA,yBAqnB61J,KArnB71JA,2BAqnB+5J,UArnB/5JA,mBAqnBq6J,GArnBr6JA,kIAqnBq6J,GArnBr6JA,8BAqnBq6J7wC,kDArnBr6J6wC,yBAqnB6+J,uDArnB7+JA,2BAqnBmpK,aArnBnpKA,mBAqnBg2K,QArnBh2KA,0HAqnB0gI,iBArnB1gIA,uBAqnBgkI,+BArnBhkIA,iCAqnBgkI7wC,IAAsBxnC,EArnBtlIq4E,0BAqnBslIuS,qBArnBtlIvS,uBAqnByyJ,2BArnBzyJA,uBAqnB6+J,yBArnB7+JA,uBAqnBmpK,mBArnBnpKA,iGAqnBi0I,wDArnBj0IA,CAqnBi0I,mEArnBj0IA,CAqnBi0I,gCArnBj0IA,CAqnBi0I,6BArnBj0IA,uBAqnB2nI,qDArnB3nIA,CAqnB2nI,iBArnB3nIA,CAqnB2nI,2BArnB3nIA,wBAqnBquI,qBArnBruIA,CAqnBquI,4BArnBruIA,sBAqnBwzJ,GArnBxzJA,uBAqnBwzJ,mBArnBxzJA,sBAqnB+gK,GArnB/gKA,uBAqnB+gK,mBArnB/gKA,sBAqnBwxK,GArnBxxKA,uBAqnBwxK,sGArnBxxKA,2BAqnBk6K,YArnBl6KA,yBAqnBg/K,KArnBh/KA,mFAqnBkoL,YArnBloLA,sBAqnB0tL,aArnB1tLA,6FAqnB2wL,GArnB3wLA,wBAqnB2wL,gCArnB3wLA,CAqnB2wL,0DArnB3wLA,2BAqnBg+L,SArnBh+LA,yBAqnB0jM,KArnB1jMA,8FAqnB+/L,gFArnB//LA,2BAqnBo2M,YArnBp2MA,mBAqnBs6M,GArnBt6MA,+FAqnB63M,sBArnB73MA,sBAqnBs6M,GArnBt6MA,8BAqnBs6M7wC,2CArnBt6M6wC,2BAqnB4nM,YArnB5nMA,uBAqnBo2M,kBArnBp2MA,yBAqnBi8M,KArnBj8MA,sBAqnBygN,YArnBzgNA,yBAqnBikN,KArnBjkNA,8FAqnBusM,mDArnBvsMA,sBAqnB02M,GArnB12MA,uBAqnB02M,kMAvoBr8M,IAAIgid,GAAiB,EAMrB,MAAMC,GAAY,IAAIz4Y,iBAAe,YAErC,SACI5oJ,YAAYshiB,GAAUjid,IAClBl/E,KAAKqqE,GAAM,aAAY42d,KAGlBE,IACDjid,GAAWrsE,cAAc8zB,aAAa,YAAa,WAI/Dy6f,GAASrid,UAAT,4BAAqGqid,IAAVnid,8BAAoC,aAApCA,8BAA6EA,gBACxKmid,GAASpid,UADkFC,8BAC3F,MAAyFmid,GAAzF19hB,mDAAqL,OAArL,6DAD2Fu7E,wBAC3F,wCAD2FA,+BAC+K,CAAC,CAAEoJ,QAAS64c,GAAW1ic,YAAa4ic;;;;;;;;AAgC9S,MAAMC,GAAyB,CAE3BC,oBAAoBj3c,QAAQ,qBAAsB,EAE9CsjQ,QAAM,SAAS56T,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,qBAC9CmwgB,QAAW,gBAAiB,EACxBt6f,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,sBAC/BkiQ,QAAQ,+CAMpB,UAEA+4P,GAAoBp5b,UAApB,4BAAgHo5b,KAChHA,GAAoBn5b,UAjDuEC,8BAiD3F,MAAoGk5b;;;;;;;;AAgCpG,IAAItE,GAAiB,EASrB,MAAM0tB,GAAY,IAAI94Y,iBAAe,WAErC,QACI5oJ,cAEIG,KAAKgvS,MAAQ,QAEbhvS,KAAKqqE,GAAM,YAAWwpc,MAG9B2tB,EAAQzid,UAAR,4BAAoGyid,IACpGA,EAAQxid,UArGmFC,8BAqG3F,MAAwFuid,EAAxF99hB,iGArG2Fu7E,wBAqG3F,WArG2FA,CAqG3F,cArG2FA,wBAqG3F,uFArG2FA,+BAqGgO,CAAC,CAAEoJ,QAASk5c,GAAW/ic,YAAagjc;;;;;;;;AA4B/V,UAEAC,GAAS1id,UAAT,4BAAqG0id,KACrGA,GAASzid,UApIkFC,8BAoI3F,MAAyFwid,GAAzF/9hB;;;;;;;;AAqBA,UAEAg+hB,GAAe3id,UAAf,4BAA2G2id,KAC3GA,GAAe1id,UA5J4EC,8BA4J3F,MAA+Fyid,GAA/Fh+hB;;;;;;;;AAoBA,MAAMi+hB,GAAa,IAAIl5Y,iBAAe,aAEtC,UAEAm5Y,GAAU7id,UAAV,4BAAsG6id,KACtGA,GAAU5id,UArLiFC,8BAqL3F,MAA0F2id,GAA1Fl+hB,0CArL2Fu7E,+BAqL8C,CAAC,CAAEoJ,QAASs5c,GAAYnjc,YAAaojc;;;;;;;;AAqB9K,MAAMC,GAAa,IAAIp5Y,iBAAe,aAEtC,UAEAq5Y,GAAU/id,UAAV,4BAAsG+id,KACtGA,GAAU9id,UA/MiFC,8BA+M3F,MAA0F6id,GAA1Fp+hB,0CA/M2Fu7E,+BA+M8C,CAAC,CAAEoJ,QAASw5c,GAAYrjc,YAAasjc,SAS9K,IAAIjoG,GAAe,EACnB,MAMMkoG,IAAoBnjd,QAAW,MACjC/+E,YAAYg/E,IACR7+E,KAAK6+E,YAAcA,KAExB,WAKGmjd,GAAiC,IAAIv5Y,iBAAe,kCAMpD+hX,GAAiB,IAAI/hX,iBAAe,gBAE1C,iBAA2Bs5Y,GACvBliiB,YAAYq/E,GAAYijW,GAAoBpa,GAAMk+F,GAAW9mb,GAAWy8U,GAASyxG,IAC7E1hf,MAAMuzD,IACNl/E,KAAKmib,mBAAqBA,GAC1Bnib,KAAK+na,KAAOA,GACZ/na,KAAKimgB,UAAYA,GACjBjmgB,KAAKm/E,UAAYA,GACjBn/E,KAAK47Z,QAAUA,GAKf57Z,KAAKiiiB,yCAA0C,EAE/CjiiB,KAAKkiiB,sCAAuC,EAC5CliiB,KAAKsib,WAAa,IAAIvma,KAEtB/b,KAAKmiiB,oBAAqB,EAE1BniiB,KAAKoiiB,yBAA2B,GAChCpiiB,KAAKqiiB,WAAa,GAElBriiB,KAAKsiiB,aAAgB,YAAWzoG,KAEhC75b,KAAKq+gB,SAAY,wBAAuBxkF,KACxC75b,KAAK8pF,WAAa9pF,KAAKuiiB,6BACvBviiB,KAAKwiiB,mBAAwC,mBAAnBn1B,GAE1BrtgB,KAAKorgB,WAAanF,IAAaA,GAAUmF,WAAanF,GAAUmF,WAAa,SAC7EprgB,KAAKyiiB,uBACDx8B,IAA6C,MAAhCA,GAAUy8B,qBAA6Bz8B,GAAUy8B,kBAAqB,CAGvFt3B,iBACA,OAAOprgB,KAAK4sgB,YAEZxB,eAAWpnf,IACX,MAAMs7E,GAAWt/F,KAAK4sgB,YACtB5sgB,KAAK4sgB,YAAc5of,IAAUhkB,KAAKimgB,WAAajmgB,KAAKimgB,UAAUmF,YAAe,SACpD,YAArBprgB,KAAK4sgB,aAA6Btta,KAAat7E,KAC/ChkB,KAAKkiiB,sCAAuC,GAIhDQ,yBACA,OAAO1iiB,KAAKyiiB,oBAEZC,uBAAmB1+gB,IACnBhkB,KAAKyiiB,qBAAsBtkI,QAAsBn6Y,IAGrD2+gB,qBACI,MAA2B,WAApB3iiB,KAAK8pF,aAA4B9pF,KAAKmiiB,mBAGjDS,iBACI,MAA2B,UAApB5iiB,KAAK8pF,UAAe,CAG3B+4c,gBACA,OAAO7iiB,KAAKqiiB,WAEZQ,cAAU7+gB,IACVhkB,KAAKqiiB,WAAar+gB,GAClBhkB,KAAK8iiB,gBAULh5c,iBACA,MAA2B,WAApB9pF,KAAKorgB,YAAgD,UAArBprgB,KAAKmngB,YAA0B,OAASnngB,KAAKmngB,YAEpFr9a,eAAW9lE,IACPA,KAAUhkB,KAAKmngB,cACfnngB,KAAKmngB,YAAcnjf,IAAShkB,KAAKuiiB,6BACjCviiB,KAAKmib,mBAAmBvoO,gBAG5BxoH,eAGA,OAAOpxF,KAAK+iiB,2BAA6B/iiB,KAAKgjiB,mBAAqBhjiB,KAAKijiB,eAExE7xc,aAASptE,IACThkB,KAAK+iiB,0BAA4B/+gB,GAKrCslf,aACI,OAAOtpgB,KAAK+2hB,oBAAsB/2hB,KAAKq+gB,SAAW,KAMtDxU,4BACI,OAAO7pgB,KAAKkjiB,yBAA2BljiB,KAAK6+E,YAEhD8mM,qBACI3lR,KAAKmjiB,wBACL,MAAMhyc,GAAUnxF,KAAKoxF,SACjBD,GAAQikb,aACRp1gB,KAAK6+E,YAAYhsE,cAAck4Y,UAAUjjQ,IAAK,uBAAsB32D,GAAQikb,eAGhFjkb,GAAQI,aAAalpF,MAAK86a,OAAU,OAAOh9a,UAAU,KACjDnG,KAAKojiB,wBACLpjiB,KAAKqjiB,sBACLrjiB,KAAKmib,mBAAmBvoO,iBAGxBzoH,GAAQQ,WAAaR,GAAQQ,UAAU7mC,cACvCqmC,GAAQQ,UAAU7mC,aACbziD,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,IAAMnG,KAAKmib,mBAAmBvoO,gBAKjD55M,KAAK47Z,QAAQc,kBAAkB,KAC3B18Z,KAAK47Z,QAAQgC,SAASv1Z,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU,KACzDnG,KAAKkiiB,sCACLliiB,KAAKwxF,wBAKjBozS,OAAM5kY,KAAKsjiB,gBAAgB9jd,QAASx/E,KAAKujiB,gBAAgB/jd,SAASr5E,UAAU,KACxEnG,KAAKkiiB,sCAAuC,EAC5CliiB,KAAKmib,mBAAmBvoO,iBAG5B55M,KAAKwjiB,cAAchkd,QAAQn3E,MAAK86a,OAAU,OAAOh9a,UAAU,KACvDnG,KAAK8iiB,gBACL9iiB,KAAKmib,mBAAmBvoO,iBAG5B55M,KAAKyjiB,eAAejkd,QAAQn3E,MAAK86a,OAAU,OAAOh9a,UAAU,KACxDnG,KAAKqjiB,sBACLrjiB,KAAKmib,mBAAmBvoO,iBAExB55M,KAAK+na,MACL/na,KAAK+na,KAAKh6I,OAAO1lR,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU,KACnB,mBAA1B6mG,sBACPhtG,KAAK47Z,QAAQc,kBAAkB,KAC3B1vT,sBAAsB,IAAMhtG,KAAKwxF,sBAIrCxxF,KAAKwxF,qBAKrBkiM,wBACI1zR,KAAKmjiB,wBACDnjiB,KAAKiiiB,yCACLjiiB,KAAKwxF,mBAGb5+E,kBAEI5S,KAAKoiiB,yBAA2B,QAChCpiiB,KAAKmib,mBAAmB1xZ,gBAE5BvnB,cACIlJ,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAGpB6phB,eAAe7lZ,IACX,MAAMlsD,GAAY3xF,KAAKoxF,SAAWpxF,KAAKoxF,SAASO,UAAY,KAC5D,OAAOA,IAAaA,GAAUksD,IAElC8lZ,kBACI,SAAW3jiB,KAAKoxF,UAAYpxF,KAAKoxF,SAASo2C,aAAgBxnI,KAAK4jiB,mBAEnEC,YACI,SAAU7jiB,KAAK8jiB,uBAAwB9jiB,KAAK+jiB,mBAEhDlN,oBACI,OAAQ72hB,KAAK4iiB,mBACP5iiB,KAAKoxF,UAAYpxF,KAAKoxF,SAAS6kb,kBAAqBj2gB,KAAK2iiB,sBAEnEqB,0BAEI,MAA6B,WAApBhkiB,KAAKorgB,aAA4BprgB,KAAK6jiB,aAC1C7jiB,KAAK6jiB,cAAgB7jiB,KAAK62hB,oBAEnCE,oBAEI,OAAO/2hB,KAAK6jiB,aAAoC,WAApB7jiB,KAAKorgB,YAA2BprgB,KAAK2jiB,kBAGrEM,wBACI,OAAOjkiB,KAAKyjiB,gBAAkBzjiB,KAAKyjiB,eAAejgiB,OAAS,GAAKxD,KAAKoxF,SAASiob,WACxE,QACA,OAGV1Q,uBACQ3ogB,KAAK+2hB,qBAAuB/2hB,KAAK4iiB,mBAG7B5iiB,KAAKwiiB,oBAAsBxiiB,KAAKslK,SAChCtlK,KAAKmiiB,oBAAqB,GAC1B18F,OAAUzlc,KAAKslK,OAAOzyJ,cAAe,iBAChCxK,MAAKi5Q,OAAK,IACVn7Q,UAAU,KACXnG,KAAKmiiB,oBAAqB,KAGlCniiB,KAAK8pF,WAAa,SAClB9pF,KAAKmib,mBAAmBvoO,gBAOhCwpV,wBACQpjiB,KAAKoxF,SAASo2C,aACdxnI,KAAK4jiB,kBAMbd,gBACI9iiB,KAAKkkiB,iBACLlkiB,KAAKqjiB,sBAMTa,iBACQlkiB,KAAKwjiB,cAoBbjB,6BACI,OAAQviiB,KAAKimgB,WAAajmgB,KAAKimgB,UAAUn8a,YAAe,OAM5Du5c,sBACI,GAAIrjiB,KAAKoxF,SAAU,CACf,IAAIuC,GAAM,GAMV,GAJI3zF,KAAKoxF,SAAS+yc,qBAC+B,iBAAtCnkiB,KAAKoxF,SAAS+yc,qBACrBxwc,GAAIxwF,QAAQnD,KAAKoxF,SAAS+yc,oBAAoBh7gB,MAAM,MAEnB,SAAjCnpB,KAAKikiB,wBAAoC,CACzC,MAAMG,GAAYpkiB,KAAKwjiB,cACjBxjiB,KAAKwjiB,cAAcxgiB,KAAK0tF,IAAuB,UAAfA,GAAKs+M,OACrC,KACAq1P,GAAUrkiB,KAAKwjiB,cACfxjiB,KAAKwjiB,cAAcxgiB,KAAK0tF,IAAuB,QAAfA,GAAKs+M,OACrC,KACFo1P,GACAzwc,GAAIxwF,KAAKihiB,GAAU/5d,IAEdrqE,KAAKqiiB,YACV1uc,GAAIxwF,KAAKnD,KAAKsiiB,cAEd+B,IACA1wc,GAAIxwF,KAAKkhiB,GAAQh6d,SAGhBrqE,KAAKyjiB,gBACV9vc,GAAIxwF,QAAQnD,KAAKyjiB,eAAexwgB,IAAI+D,IAASA,GAAMqzC,KAEvDrqE,KAAKoxF,SAASwlb,kBAAkBjjb,KAIxCwvc,wBACSnjiB,KAAKoxF,SAQdI,mBACI,MAAM8yc,GAAUtkiB,KAAKslK,OAAStlK,KAAKslK,OAAOzyJ,cAAgB,KACpDmvF,GAAYhiG,KAAKkjiB,wBAAwBrwhB,cACzC0xhB,GAAuB,gCACvBC,GAAqB,8BAE3B,GAAwB,YAApBxkiB,KAAKorgB,aAA6BprgB,KAAKm/E,UAAUE,UACjD,OAGJ,IAAKild,KAAYA,GAAQhxgB,SAAS9vB,SAAW8giB,GAAQhjb,YAAYl4F,OAAQ,CACrE,MAAMq7gB,GAAczic,GAAU9C,iBAAkB,GAAEqlc,OAAyBC,MAC3E,QAAStkiB,GAAI,EAAGA,GAAIukiB,GAAYjhiB,OAAQtD,KACpCukiB,GAAYvkiB,IAAG6yB,MAAMpd,MAAQ,IAEjC,OAIJ,IAAK3V,KAAK0kiB,mBAEN,YADA1kiB,KAAKiiiB,yCAA0C,GAGnD,IAAI0C,GAAa,EACbC,GAAW,EACf,MAAMC,GAAW7ic,GAAU9C,iBAAiBqlc,IACtCO,GAAS9ic,GAAU9C,iBAAiBslc,IAC1C,GAAIxkiB,KAAKslK,QAAUtlK,KAAKslK,OAAOzyJ,cAAcygB,SAAS9vB,OAAQ,CAC1D,MAAMoub,GAAgB5vV,GAAUwxM,wBAOhC,GAA4B,IAAxBo+I,GAAcj8a,OAAwC,IAAzBi8a,GAAc19a,OAG3C,OAFAlU,KAAKkiiB,sCAAuC,OAC5CliiB,KAAKiiiB,yCAA0C,GAGnD,MAAM8C,GAAiB/kiB,KAAKgliB,aAAapzG,IACnCqzG,GAAgBX,GAAQhxgB,SACxB4xgB,GAAalliB,KAAKgliB,aAAaC,GAAc,GAAGzxP,yBACtD,IAAI2xP,GAAa,EACjB,QAASjliB,GAAI,EAAGA,GAAI+kiB,GAAczhiB,OAAQtD,KACtCiliB,IAAcF,GAAc/kiB,IAAGmjP,YAEnCshT,GAAal9gB,KAAK24E,IAAI8kc,GAAaH,IA5XrB,EA6XdH,GAAWO,GAAa,EA9XT,IA8XaA,GAAkCC,GAAwB,EAE1F,QAASlliB,GAAI,EAAGA,GAAI2kiB,GAASrhiB,OAAQtD,KACjC2kiB,GAAS3kiB,IAAG6yB,MAAMpd,MAAS,GAAEgvhB,OAEjC,QAASzkiB,GAAI,EAAGA,GAAI4kiB,GAAOthiB,OAAQtD,KAC/B4kiB,GAAO5kiB,IAAG6yB,MAAMpd,MAAS,GAAEivhB,OAE/B5kiB,KAAKkiiB,qCAAuCliiB,KAAKiiiB,yCAC7C,EAGR+C,aAAatzP,IACT,OAAO1xS,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,MAAkB0tR,GAAKr9R,MAAQq9R,GAAK7qB,KAGtE69Q,mBACI,MAAM9kc,GAAU5/F,KAAK6+E,YAAYhsE,cACjC,GAAI+sF,GAAQu3U,YAAa,CACrB,MAAM5S,GAAW3kU,GAAQu3U,cAGzB,OAAO5S,IAAYA,KAAa3kU,GAIpC,OAAOn5D,SAASqtQ,gBAAgB1sN,SAASwY,KAGjDylc,GAAatmd,UAAb,4BAAyGsmd,IApnBdpmd,8BAonB4CA,cApnB5CA,8BAonBsEA,qBApnBtEA,8BAonBuGS,KAAlM,GApnB2FT,8BAonBqJ+id,GAAhP,GApnB2F/id,8BAonBgN+mX,MApnBhN/mX,8BAonBwOA,UApnBxOA,8BAonB8P4ub,KAAzV,KACAw3B,GAAazld,UArnB8EX,8BAqnB3F,MAA6Fomd,GAA7F3hiB,2EArnB2Fu7E,2BAqnB3F9wC,GAAulDgqe,GAAvlD,GArnB2Fl5b,2BAqnB3F9wC,GAA2rDgqe,GAA3rD,GArnB2Fl5b,2BAqnB3F9wC,GAAmzDszf,GAAnzD,GArnB2Fxid,2BAqnB3F9wC,GAA+4Dszf,GAA/4D,GArnB2Fxid,2BAqnB3F9wC,GAAy/Duzf,GAAz/D,GArnB2Fzid,2BAqnB3F9wC,GAA2kE+yf,GAA3kE,GArnB2Fjid,2BAqnB3F9wC,GAAupEozf,GAAvpE,GArnB2Ftid,2BAqnB3F9wC,GAAquEwzf,GAAruE,GArnB2F1id,2BAqnB3F9wC,GAAozE0zf,GAApzE,iBArnB2F5id,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,+BArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,4BArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,kCArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,+BArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,+BArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,sBArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,qBArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,uBArnB2F6wC,2BAqnB3F1wC,GArnB2F0wC,6BAqnB3F7wC,6DArnB2F6wC,wBAqnB3Fz9E,KArnB2Fy9E,wBAqnB3Fx9E,KArnB2Fw9E,wBAqnB3Fv9E,mBArnB2Fu9E,2BAqnB3F9wC,GArnB2F8wC,6BAqnB3F7wC,qCArnB2F6wC,2BAqnB3F9wC,GArnB2F8wC,6BAqnB3F7wC,gCArnB2F6wC,2BAqnB3F9wC,GArnB2F8wC,6BAqnB3F7wC,oGArnB2F6wC,wBAqnB3F,+DArnB2FA,CAqnB3F,uDArnB2FA,CAqnB3F,6DArnB2FA,CAqnB3F,2DArnB2FA,CAqnB3F,gDArnB2FA,CAqnB3F,+CArnB2FA,CAqnB3F,qDArnB2FA,CAqnB3F,kDArnB2FA,CAqnB3F,+DArnB2FA,CAqnB3F,+CArnB2FA,CAqnB3F,mDArnB2FA,CAqnB3F,kCArnB2FA,CAqnB3F,8CArnB2FA,CAqnB3F,0CArnB2FA,CAqnB3F,4CArnB2FA,CAqnB3F,sCArnB2FA,CAqnB3F,sCArnB2FA,CAqnB3F,0CArnB2FA,CAqnB3F,0CArnB2FA,CAqnB3F,4NArnB2FA,+BAqnB23C,CAAC,CAAEoJ,QAASmib,GAAgBhsa,YAAa6mc,MArnBp6Cpmd,wCAqnB3Fc,wmDArnB2Fd,4BAqnB3F1tE,GArnB2F0tE,2BAqnB8oF,UArnB9oFA,CAqnB8oF,aArnB9oFA,uBAqnBwvF,0DAAuC7wC,mCArnB/xF6wC,uBAqnB83F,0BArnB93FA,uBAqnBg8G,iBArnBh8GA,2BAqnBitH,aArnBjtHA,yBAqnB6wH,GArnB7wHA,2BAqnBgzH,YArnBhzHA,uBAqnB0gI,oBArnB1gIA,oDAqnBk6K,kBArnBl6KA,kDAqnBkoL,mBArnBloLA,2BAqnB23L,aArnB33LA,uBAqnBg+L,mBArnBh+LA,uBAqnB4nM,mBArnB5nMA,8BAqnB3F,OArnB2FA,sBAqnB64F,GArnB74FA,uBAqnB64F,iCArnB74FA,sBAqnBo/G,GArnBp/GA,uBAqnBo/G,kCArnBp/GA,sBAqnB8mJ,GArnB9mJA,uBAqnB8mJ,+BArnB9mJA,sBAqnBw8K,GArnBx8KA,uBAqnBw8K,kCArnBx8KA,sBAqnBmrL,GArnBnrLA,uBAqnBmrL,iCArnBnrLA,sBAqnBm7L,GArnBn7LA,uBAqnBm7L,uCArnBn7LA,sBAqnBs+L,GArnBt+LA,uBAqnBs+L,wBArnBt+LA,sBAqnBwqM,GArnBxqMA,uBAqnBwqM,yBAAnwMuhM,YAAi0qBsjK,KAAiFwhH,KAAqLxhH,KAAqEA,MAA5orB9jW,skdAAkurB,CAACqhd,GAAuBC,qBAA1vrBxnV;;;;;;;;AA6FA,UAEAyrV,GAAmBxmd,UAAnB,4BAA+Gwmd,KAC/GA,GAAmBrld,UArtBwEjB,6BAqtB3F,MAAgHsmd,KAQhHA,GAAmBpld,UA7tBwElB,6BA6tB3F,UAA8I,CAAC4+Y,KAAcz9Y,KAAiBmnV,MAAkBnnV;;;;;;;;;;;;;;;;;;;;;0HCvuBhM,QACIvgF,cAEIG,KAAKy9E,YAAc,EAEnBz9E,KAAKoxc,SAAW,EAGhBo0F,eACA,OAAOxliB,KAAKoxc,SAAW,EAMvBq0F,cACA,MAAMC,EAAaj+gB,KAAKqgB,OAAO9nC,KAAK2liB,SAGpC,OAAOD,EAAa,EAAI1liB,KAAKwliB,SAAWE,EAAa,EAAI1liB,KAAKwliB,SAOlEhzc,OAAOozc,EAAYC,GACf7liB,KAAKy9E,YAAc,EACnBz9E,KAAKoxc,SAAW,EAChBpxc,KAAK2liB,QAAU,IAAI/vhB,MAAMgwhB,GACzB5liB,KAAK2liB,QAAQjlT,KAAK,EAAG,EAAG1gP,KAAK2liB,QAAQniiB,QACrCxD,KAAK4ra,UAAYi6H,EAAM5ygB,IAAI6ygB,IAAQ9liB,KAAK+liB,WAAWD,KAGvDC,WAAWD,GAEP,MAAME,EAAgBhmiB,KAAKimiB,iBAAiBH,EAAKI,SAEjD,YAAKC,kBAAkBH,EAAeF,GAGtC9liB,KAAKy9E,YAAcuod,EAAgBF,EAAKI,QACjC,IAAIE,EAAapmiB,KAAKoxc,SAAU40F,GAG3CC,iBAAiBI,GACErmiB,KAAK2liB,QAAQniiB,OAK5B,IAAIwiiB,GAAgB,EAChBM,IAAc,EAElB,GAEQtmiB,KAAKy9E,YAAc4od,EAAWrmiB,KAAK2liB,QAAQniiB,QAC3CxD,KAAKumiB,WACLP,EAAgBhmiB,KAAK2liB,QAAQv0hB,QAAQ,EAAGpR,KAAKy9E,aAC7C6od,GAActmiB,KAAKwmiB,iBAAiBR,KAGxCA,EAAgBhmiB,KAAK2liB,QAAQv0hB,QAAQ,EAAGpR,KAAKy9E,cAExB,GAAjBuod,GAMJM,GAActmiB,KAAKwmiB,iBAAiBR,GAGpChmiB,KAAKy9E,YAAcuod,EAAgB,IAR/BhmiB,KAAKumiB,WACLP,EAAgBhmiB,KAAK2liB,QAAQv0hB,QAAQ,EAAGpR,KAAKy9E,aAC7C6od,GAActmiB,KAAKwmiB,iBAAiBR,WASnCM,GAAcN,EAAgBK,GAA2B,GAAfC,IAGnD,OAAO7+gB,KAAKqgB,IAAIk+f,EAAe,GAGnCO,WACIvmiB,KAAKy9E,YAAc,EACnBz9E,KAAKoxc,WAEL,QAASlxc,EAAI,EAAGA,EAAIF,KAAK2liB,QAAQniiB,OAAQtD,IACrCF,KAAK2liB,QAAQzliB,GAAKunB,KAAKqgB,IAAI,EAAG9nC,KAAK2liB,QAAQzliB,GAAK,GAOxDsmiB,iBAAiBR,GACb,QAAS9liB,EAAI8liB,EAAgB,EAAG9liB,EAAIF,KAAK2liB,QAAQniiB,OAAQtD,IACrD,GAAuB,GAAnBF,KAAK2liB,QAAQzliB,GACb,OAAOA,EAIf,OAAOF,KAAK2liB,QAAQniiB,OAGxB2iiB,kBAAkBt9f,EAAOi9f,GACrB,QAAS5liB,GAAI,EAAGA,GAAI4liB,EAAKI,QAAShmiB,KAC9BF,KAAK2liB,QAAQ98f,EAAQ3oC,IAAK4liB,EAAKL,SAQ3C,QACI5liB,YAAY02D,EAAKmsd,GACb1ihB,KAAKu2D,IAAMA,EACXv2D,KAAK0ihB,IAAMA;;;;;;;SAenB,MAAM+jB,EAAgB,IAAIh+Y,iBAAe;;;;;;;SASzC,QACI5oJ,YAAY67Z,EAAUgrI,GAClB1miB,KAAK07Z,SAAWA,EAChB17Z,KAAK0miB,UAAYA,EACjB1miB,KAAK2miB,SAAW,EAChB3miB,KAAK4miB,SAAW,EAGhBnB,cACA,OAAOzliB,KAAK2miB,SAEZlB,YAAQzhhB,GACRhkB,KAAK2miB,SAAWl/gB,KAAKC,OAAMg8Z,QAAqB1/Z,IAGhDkihB,cACA,OAAOlmiB,KAAK4miB,SAEZV,YAAQlihB,GACRhkB,KAAK4miB,SAAWn/gB,KAAKC,OAAMg8Z,QAAqB1/Z,IAMpD41c,UAAUpoG,EAAUxtW,GAChBhkB,KAAK07Z,SAAS7oZ,cAAckgB,MAAMy+V,GAAYxtW,GAGtD6ihB,EAAY9nd,UAAZ,0BAAwG8nd,GAAV5nd,8BAAuCA,cAAvCA,8BAAiEwnd,EAA/J,KACAI,EAAYjnd,UADkFX,8BAC9F,MAA4F4nd,EAA5FnjiB,uGAD8Fu7E,wBAC9F,oBAD8FA,CAC9F,kMAD8FA,yDAC+P,WAD/PA,yBACwS,GADxSA,6BAC9Fe,+xCAsBA,QACIngF,YAAY67Z,GACR17Z,KAAK07Z,SAAWA,EAEpB/1I,sBACImhR,QAAS9miB,KAAK+miB,OAAQ/miB,KAAK07Z,WAGnCsrI,EAAgBjod,UAAhB,0BAA4Giod,GA/Bd/nd,8BA+B+CA,gBAC7I+nd,EAAgBpnd,UAhC8EX,8BAgC9F,MAAgG+nd,EAAhGtjiB,sGAhC8Fu7E,2BAgC9FztE,GAAwNwpgB,KAAxN,eAhC8F/7b,2BAgC9FphE,GAhC8FohE,6BAgC9F1tE,mLAhC8F0tE,4BAgC9F9tE,GAhC8F8tE,yBAgCkL,GAhClLA,2BAgC2P,WAhC3PA,yBAgC6R,KAhC7RA,oDAgC+V,OAA7bo7L,oCAYA,SAEA4sR,EAA0Blod,UAA1B,0BAAsHkod,IACtHA,EAA0Bjod,UA/CoEC,8BA+C9F,MAA0Ggod,EAA1GvjiB,gGAYA,SAEAwjiB,EAA8Bnod,UAA9B,0BAA0Hmod,IAC1HA,EAA8Blod,UA9DgEC,8BA8D9F,MAA8Giod,EAA9GxjiB,4EAYA,SAEAyjiB,EAA8Bpod,UAA9B,0BAA0Hood,IAC1HA,EAA8Bnod,UA7EgEC,8BA6E9F,MAA8Gkod,EAA9GzjiB;;;;;;;;AAoBA,MAAM0jiB,EAAsB,gCAM5B,QACIvniB,cACIG,KAAKqniB,MAAQ,EACbrniB,KAAK2miB,SAAW,EAWpB3mV,KAAKsnV,EAAY3B,EAAS4B,GAAMzmZ,IAC5B9gJ,KAAKwniB,YAAcC,EAAeH,GAClCtniB,KAAKqniB,MAAQ1B,EAAQH,SACrBxliB,KAAK2miB,SAAWhB,EAAQF,QACxBzliB,KAAK0niB,MAAQH,GACbvniB,KAAKiua,WAAantR,GAStB6mZ,gBAAgBC,EAAaC,GAMzB,MAAQ,IAAGD,SAAmB5niB,KAAKwniB,iBAAiBK,MAQxDC,gBAAgBC,EAAUn0P,GAGtB,OAAkB,IAAXA,EAAe,IAAMo0P,EAAM,IAAGD,OAAc/niB,KAAKwniB,kBAAkB5zP,KAQ9Eq0P,YAAYF,EAAUlnO,GAClB,MAAQ,IAAGknO,OAAclnO,SAAYA,EAAO,OAAO7gU,KAAKwniB,eAQ5D1tE,SAASgsE,EAAM10F,EAAU8vE,IAErB,IAAIgnB,GAAsB,IAAMloiB,KAAK0niB,MAGjCS,IAA8BnoiB,KAAK0niB,MAAQ,GAAK1niB,KAAK0niB,MACzD1niB,KAAKooiB,aAAatC,EAAM5kB,GAAUgnB,GAAqBC,IACvDnoiB,KAAKqoiB,aAAavC,EAAM10F,EAAU82F,GAAqBC,IAG3DC,aAAatC,EAAM5kB,EAAUonB,GAAcC,IAEvC,IAAIC,GAAgBxoiB,KAAK2niB,gBAAgBW,GAAcC,IAGnDE,GAA2B,QAApBzoiB,KAAKiua,WAAuB,QAAU,OACjD63H,EAAKlsE,UAAU6uE,GAAMzoiB,KAAK8niB,gBAAgBU,GAAetnB,IACzD4kB,EAAKlsE,UAAU,QAASouE,EAAKhoiB,KAAKioiB,YAAYO,GAAe1C,EAAKI,WAKtEwC,gBACI,MAAQ,GAAE1oiB,KAAKwniB,kBAAkBxniB,KAAK2miB,gBAM1CgC,YAAYC,GACR,MAAQ,GAAE5oiB,KAAK2miB,cAAc3miB,KAAKioiB,YAAYW,EAAY,KAO9DC,oBACI,OAAO,MAQf,gBAA8BC,EAC1BjpiB,YAAYkpiB,GACRp9gB,QACA3rB,KAAK+oiB,eAAiBA,EAE1B/oV,KAAKsnV,EAAY3B,EAAS4B,GAAMzmZ,IAC5Bn1H,MAAMq0L,KAAKsnV,EAAY3B,EAAS4B,GAAMzmZ,IACtC9gJ,KAAK+oiB,eAAiBtB,EAAezniB,KAAK+oiB,gBACrC3B,EAAoB38f,KAAKzqC,KAAK+oiB,gBAKvCV,aAAavC,EAAM10F,GACf00F,EAAKlsE,UAAU,MAAO55d,KAAK8niB,gBAAgB9niB,KAAK+oiB,eAAgB33F,IAChE00F,EAAKlsE,UAAU,SAAUouE,EAAKhoiB,KAAKioiB,YAAYjoiB,KAAK+oiB,eAAgBjD,EAAKL,WAE7EoD,oBACI,MAAO,CAAC,SAAUb,EAAM,GAAEhoiB,KAAK2oiB,YAAY3oiB,KAAK+oiB,qBAAqB/oiB,KAAK0oiB,oBAE9E3oa,MAAM7b,GACFA,EAAK8kb,cAAc,CAAC,SAAU,OAC1B9kb,EAAK+kb,QACL/kb,EAAK+kb,OAAO1giB,QAAQu9hB,IAChBA,EAAKlsE,UAAU,MAAO,MACtBksE,EAAKlsE,UAAU,SAAU,SAUzC,gBAA8BkvE,EAC1BjpiB,YAAYmkB,GACR2H,QACA3rB,KAAKkpiB,YAAYllhB,GAErBqkhB,aAAavC,EAAM10F,EAAUk3F,GAAcC,IACvC,IAAIY,GAAuBb,GAAetoiB,KAAKopiB,eAC/CppiB,KAAKqpiB,eAAiBrpiB,KAAK2niB,gBAAgBwB,GAAsBZ,IAIjEzC,EAAKlsE,UAAU,YAAa55d,KAAK8niB,gBAAgB9niB,KAAKqpiB,eAAgBj4F,IACtE00F,EAAKlsE,UAAU,aAAcouE,EAAKhoiB,KAAKioiB,YAAYjoiB,KAAKqpiB,eAAgBvD,EAAKL,WAEjFoD,oBACI,MAAO,CACH,gBACAb,EAAM,GAAEhoiB,KAAK2oiB,YAAY3oiB,KAAKqpiB,qBAAqBrpiB,KAAK0oiB,oBAGhE3oa,MAAM7b,GACFA,EAAK8kb,cAAc,CAAC,gBAAiB,OACrC9kb,EAAK+kb,OAAO1giB,QAAQu9hB,IAChBA,EAAKlsE,UAAU,YAAa,MAC5BksE,EAAKlsE,UAAU,aAAc,QAGrCsvE,YAAYllhB,GACR,MAAMslhB,EAAatlhB,EAAMmF,MAAM,KAC3BmghB,EAAW9liB,OAGfxD,KAAKopiB,eAAiBjkgB,WAAWmkgB,EAAW,IAAMnkgB,WAAWmkgB,EAAW,KAUhF,gBAA4BR,EACxBT,aAAavC,EAAM10F,GAEf,IAAI+3F,GAAuB,IAAMnpiB,KAAK2miB,SAElC4C,IAAuBvpiB,KAAKqniB,MAAQ,GAAKrniB,KAAKqniB,MAE9CgC,GAAiBrpiB,KAAK2niB,gBAAgBwB,GAAsBI,IAChEzD,EAAKlsE,UAAU,MAAO55d,KAAK8niB,gBAAgBuB,GAAgBj4F,IAC3D00F,EAAKlsE,UAAU,SAAUouE,EAAKhoiB,KAAKioiB,YAAYoB,GAAgBvD,EAAKL,WAExE1la,MAAM7b,GACEA,EAAK+kb,QACL/kb,EAAK+kb,OAAO1giB,QAAQu9hB,IAChBA,EAAKlsE,UAAU,MAAO,MACtBksE,EAAKlsE,UAAU,SAAU,SAMzC,WAAc4vE,GACV,MAAQ,QAAOA,KAGnB,WAAwBxlhB,GACpB,OAAOA,EAAMvV,MAAM,iBAAmBuV,EAAS,GAAEA;;;;;;;SAcrD,QACInkB,YAAY67Z,EAAUqM,GAClB/na,KAAK07Z,SAAWA,EAChB17Z,KAAK+na,KAAOA,EAEZ/na,KAAKypiB,QAAU,MAGflC,WACA,OAAOvniB,KAAK0niB,MAEZH,SAAKvjhB,GACLhkB,KAAK0niB,MAAQjghB,KAAKqgB,IAAI,EAAGrgB,KAAKC,OAAMg8Z,QAAqB1/Z,KAGzDsjhB,iBACA,OAAOtniB,KAAKypiB,QAEZnC,eAAWtjhB,GACXhkB,KAAKypiB,QAAW,GAAW,MAATzlhB,EAAgB,GAAKA,IAGvC0lhB,gBACA,OAAO1piB,KAAK2piB,WAEZD,cAAU1lhB,GACV,MAAMwuW,EAAY,GAAW,MAATxuW,EAAgB,GAAKA,IACrCwuW,IAAaxyX,KAAK2piB,aAClB3piB,KAAK2piB,WAAan3K,EAClBxyX,KAAK4piB,eAAe5piB,KAAK2piB,aAGjCnniB,WACIxC,KAAK6piB,aACL7piB,KAAK8piB,kBAMTp2Q,wBACI1zR,KAAK+piB,eAGTF,aACS7piB,KAAKuniB,KAKduC,kBACS9piB,KAAK2piB,YACN3piB,KAAK4piB,eAAe,OAI5BA,eAAeF,GACP1piB,KAAKgqiB,aACLhqiB,KAAKgqiB,YAAYjqa,MAAM//H,MA3Dd,QA6Db8Q,EACI9Q,KAAKgqiB,YAAc,IAAIC,EAEtBn5hB,GAAiB44hB,EAAUt4hB,QAAQ,MAAO,EAC3CpR,KAAKgqiB,YAAc,IAAIE,EAAgBR,GAGvC1piB,KAAKgqiB,YAAc,IAAIG,EAAgBT,GAI/CK,eACS/piB,KAAKoqiB,mBACNpqiB,KAAKoqiB,iBAAmB,IAAIC,GAEhC,MAAM1E,EAAU3liB,KAAKoqiB,iBACfvE,EAAQ7liB,KAAKipiB,OAAOviiB,OAAOo/hB,KAASA,GAAKY,WAAaZ,GAAKY,YAAc1miB,MACzE8gJ,GAAY9gJ,KAAK+na,KAAO/na,KAAK+na,KAAK/jZ,MAAQ,MAChDhkB,KAAKoqiB,iBAAiB53c,OAAOxyF,KAAKuniB,KAAM1B,GACxC7liB,KAAKgqiB,YAAYhqV,KAAKhgN,KAAKsniB,WAAY3B,EAAS3liB,KAAKuniB,KAAMzmZ,IAC3D+kZ,EAAMt9hB,QAAQ,CAACu9hB,GAAMnzf,MACjB,MAAM2uT,GAAMqkM,EAAQ/5H,UAAUj5X,IAC9B3yC,KAAKgqiB,YAAYlwE,SAASgsE,GAAMxkM,GAAI/qS,IAAK+qS,GAAIohL,OAEjD1ihB,KAAKgpiB,cAAchpiB,KAAKgqiB,YAAYnB,qBAGxCG,cAAcj2gB,GACNA,IACA/yB,KAAK07Z,SAAS7oZ,cAAckgB,MAAMA,EAAM,IAAMA,EAAM,KAIhEu3gB,EAAYvrd,UAAZ,0BAAwGurd,GAraVrrd,8BAqauCA,cAravCA,8BAqaiES,KAA/J,KACA4qd,EAAY1qd,UAtakFX,8BAsa9F,MAA4Fqrd,EAA5F5miB,sEAta8Fu7E,2BAsa9FztE,GAKsDq1hB,EALtD,eAta8F5nd,2BAsa9FphE,GAta8FohE,6BAsa9F1tE,wFAta8F0tE,wBAsa9F,sHAta8FA,+BAsa6M,CACnS,CACIoJ,QAASo+c,EACTjoc,YAAa8rc,MAHzBvqd,iEAta8Fd,yDA2a+C,SA3a/CA,yBA2awD,GA3axDA,6BAsa9Fe;;;;;;;;AAyCA,SAEAuqd,EAAkBxrd,UAAlB,0BAA8Gwrd,IAC9GA,EAAkBrqd,UAld4EjB,6BAkd9F,MAA+Gsrd,IAa/GA,EAAkBpqd,UA/d4ElB,6BA+d9F,UAA4I,CAACg8b,KAAe76b,MAAkB66b,KACtK76b,OAkCiBiqd;;;;;;;;;;;;;;SCnrBzB,IAAIG,EA4BJ,WAA+Blja,IAC3B,IAAIuuL,GACJ,OAA+B,QAAtBA,GAzBb,aACI,QAAe+iD,IAAX4xL,IACAA,EAAS,KACa,oBAAXjvf,QAAwB,CAC/B,MAAMkvf,GAAWlvf,YACaq9T,IAA1B6xL,GAASC,eACTF,EAASC,GAASC,aAAan+D,aAAa,qBAAsB,CAC9DH,WAAaxle,IAAMA,MAKnC,OAAO4jiB,EAaOG,UAAgC,IAAP90O,QAAgB,EAASA,GAAGu2K,WAAW9kW,MAAUA;;;;;;;SAe5F,WAAqCsja,IACjC,OAAO1qT,MAAO,sCAAqC0qT,OAiBvD,WAA4CjghB,IACxC,OAAOu1N,MAAO,wHACwCv1N,QAO1D,WAAgD87Q,IAC5C,OAAOvmD,MAAO,0HACwCumD,QAM1D,QACI5mS,YAAY8qB,GAAKkghB,EAAS1oR,IACtBniR,KAAK2qB,IAAMA,GACX3qB,KAAK6qiB,QAAUA,EACf7qiB,KAAKmiR,QAAUA,IAUvB,QACItiR,YAAYiriB,GAAaC,EAAYtkgB,GAAUukgB,IAC3ChriB,KAAK8qiB,YAAcA,GACnB9qiB,KAAK+qiB,WAAaA,EAClB/qiB,KAAKgriB,cAAgBA,GAIrBhriB,KAAKiriB,gBAAkB,IAAIt9L,IAK3B3tW,KAAKkriB,gBAAkB,IAAIv9L,IAE3B3tW,KAAKmriB,kBAAoB,IAAIx9L,IAE7B3tW,KAAKoriB,sBAAwB,IAAIz9L,IAEjC3tW,KAAKqriB,uBAAyB,IAAI19L,IAElC3tW,KAAKsriB,WAAa,GAMlBtriB,KAAKuriB,qBAAuB,iBAC5BvriB,KAAKo/E,UAAY34C,GAOrB+kgB,WAAWZ,GAAUjghB,EAAKw3P,IACtB,OAAOniR,KAAKyriB,sBAAsB,GAAIb,GAAUjghB,EAAKw3P,IAOzDupR,kBAAkBd,GAAUnkQ,EAAStkB,IACjC,OAAOniR,KAAK2riB,6BAA6B,GAAIf,GAAUnkQ,EAAStkB,IAQpEspR,sBAAsBG,GAAWhB,EAAUjghB,GAAKw3P,IAC5C,OAAOniR,KAAK6riB,kBAAkBD,GAAWhB,EAAU,IAAIkB,EAAcnhhB,GAAK,KAAMw3P,KAUpF4pR,mBAAmBxpK,IACf,YAAK+oK,WAAWnoiB,KAAKo/X,IACdviY,KAQX2riB,6BAA6BC,GAAWhB,EAAUnkQ,GAAStkB,IACvD,MAAM6pR,GAAehsiB,KAAK+qiB,WAAW7rb,SAAS+sb,uBAAsBxlQ,IAEpE,IAAKulQ,GACD,MAAME,EAAuCzlQ,IAGjD,MAAM0lQ,GAAiBC,EAAsBJ,IAC7C,OAAOhsiB,KAAK6riB,kBAAkBD,GAAWhB,EAAU,IAAIkB,EAAc,GAAIK,GAAgBhqR,KAM7FkqR,cAAc1hhB,GAAKw3P,GACf,OAAOniR,KAAKssiB,yBAAyB,GAAI3hhB,GAAKw3P,GAMlDoqR,qBAAqB9lQ,GAAStkB,GAC1B,OAAOniR,KAAKwsiB,gCAAgC,GAAI/lQ,GAAStkB,GAO7DmqR,yBAAyBV,GAAWjhhB,EAAKw3P,IACrC,OAAOniR,KAAKysiB,qBAAqBb,GAAW,IAAIE,EAAcnhhB,EAAK,KAAMw3P,KAO7EqqR,gCAAgCZ,GAAWnlQ,EAAStkB,IAChD,MAAM6pR,GAAehsiB,KAAK+qiB,WAAW7rb,SAAS+sb,uBAAsBxlQ,GACpE,IAAKulQ,GACD,MAAME,EAAuCzlQ,GAGjD,MAAM0lQ,GAAiBC,EAAsBJ,IAC7C,OAAOhsiB,KAAKysiB,qBAAqBb,GAAW,IAAIE,EAAc,GAAIK,GAAgBhqR,KAUtFuqR,uBAAuBnqN,GAAOhvE,EAAYgvE,IACtC,YAAK8oN,uBAAuB/rS,IAAIijF,GAAOhvE,GAChCvzQ,KAMX2siB,sBAAsBpqN,IAClB,OAAOviV,KAAKqriB,uBAAuBxqiB,IAAI0hV,KAAUA,GAQrDqqN,uBAAuBr5R,IACnB,YAAKg4R,qBAAuBh4R,GACrBvzQ,KAMX6siB,yBACI,OAAO7siB,KAAKuriB,qBAUhBuB,kBAAkBC,IACd,MAAMpihB,EAAM3qB,KAAK+qiB,WAAW7rb,SAAS+sb,+BAA8Bc,IACnE,IAAKpihB,EACD,MAAMqihB,EAAmCD,IAE7C,MAAME,GAAajtiB,KAAKmriB,kBAAkBtqiB,IAAI8pB,GAC9C,OAAIsihB,IACO3oI,QAAG4oI,EAASD,KAEhBjtiB,KAAKmtiB,uBAAuB,IAAIrB,EAAciB,GAAS,OAAO1kiB,MAAKsjY,OAAIyhK,IAAOptiB,KAAKmriB,kBAAkB7rS,IAAI30O,EAAKyihB,MAAOn6gB,OAAIm6gB,IAAOF,EAASE,MAUpJC,gBAAgBzif,GAAMghf,EAAY,IAC9B,MAAMt1gB,GAAMg3gB,EAAQ1B,EAAWhhf,IAC/B,IAAIyM,GAASr3D,KAAKiriB,gBAAgBpqiB,IAAIy1B,IAEtC,GAAI+gC,GACA,OAAOr3D,KAAKutiB,kBAAkBl2e,IAIlC,GADAA,GAASr3D,KAAKwtiB,4BAA4B5B,EAAWhhf,IACjDyM,GACA,YAAK4ze,gBAAgB3rS,IAAIhpO,GAAK+gC,IACvBr3D,KAAKutiB,kBAAkBl2e,IAGlC,MAAMo2e,GAAiBztiB,KAAKkriB,gBAAgBrqiB,IAAI+qiB,GAChD,OAAI6B,GACOztiB,KAAK0tiB,0BAA0B9if,GAAM6if,KAEzCE,OAAWC,EAA4Bt3gB,KAElDptB,cACIlJ,KAAKsriB,WAAa,GAClBtriB,KAAKiriB,gBAAgBx6c,QACrBzwF,KAAKkriB,gBAAgBz6c,QACrBzwF,KAAKmriB,kBAAkB16c,QAK3B88c,kBAAkBl2e,IACd,OAAIA,GAAOwze,SAEAvmI,QAAG4oI,EAASltiB,KAAK6tiB,sBAAsBx2e,MAIvCr3D,KAAKmtiB,uBAAuB91e,IAAQhvD,MAAK4qB,OAAIm6gB,GAAOF,EAASE,KAW5EM,0BAA0B9if,GAAM6if,GAG5B,MAAMK,GAAY9tiB,KAAK+tiB,+BAA+Bnjf,GAAM6if,GAC5D,GAAIK,GAIA,OAAOxpI,QAAGwpI,IAId,MAAME,GAAuBP,EACxB/miB,OAAOuniB,KAAkBA,GAAcpD,SACvC53gB,IAAIg7gB,IACEjuiB,KAAKkuiB,0BAA0BD,IAAe5liB,MAAK8liB,OAAYC,KAIlE,MAAMr9c,GAAgB,yBAHV/wF,KAAK+qiB,WAAW7rb,SAAS+sb,+BAA8BgC,GAActjhB,gBAGpByjhB,GAAI3ghB,UACjE,YAAKu9gB,cAAcx1R,YAAY,IAAIt1B,MAAMnvJ,MAClCuzU,QAAG,UAKlB,OAAOmsF,OAASu9C,IAAsB3liB,MAAK4qB,OAAI,KAC3C,MAAMo7gB,GAAYruiB,KAAK+tiB,+BAA+Bnjf,GAAM6if,GAE5D,IAAKY,GACD,MAAMT,EAA4Bhjf,IAEtC,OAAOyjf,MAQfN,+BAA+BnD,GAAU6C,GAErC,QAASvtiB,GAAIutiB,EAAejqiB,OAAS,EAAGtD,IAAK,EAAGA,KAAK,CACjD,MAAMm3D,GAASo2e,EAAevtiB,IAK9B,GAAIm3D,GAAOwze,SAAWxze,GAAOwze,QAAQhkiB,WAAWuK,QAAQw5hB,KAAY,EAAI,CACpE,MAAMwC,GAAMptiB,KAAK6tiB,sBAAsBx2e,IACjCg3e,GAAYruiB,KAAKsuiB,uBAAuBlB,GAAKxC,GAAUvze,GAAO8qN,SACpE,GAAIksR,GACA,OAAOA,IAInB,OAAO,KAMXlB,uBAAuB91e,IACnB,OAAOr3D,KAAKuuiB,WAAWl3e,IAAQhvD,MAAKsjY,OAAIk/J,GAAYxze,GAAOwze,QAAUA,IAAW53gB,OAAI,IAAMjzB,KAAK6tiB,sBAAsBx2e,MAMzH62e,0BAA0B72e,IACtB,OAAIA,GAAOwze,SACAvmI,QAAG,MAEPtka,KAAKuuiB,WAAWl3e,IAAQhvD,MAAKsjY,OAAIk/J,GAAYxze,GAAOwze,QAAUA,IAOzEyD,uBAAuBE,GAAS5D,EAAUzoR,IAGtC,MAAMssR,GAAaD,GAAQjxI,cAAe,QAAOqtI,OACjD,IAAK6D,GACD,OAAO,KAIX,MAAMC,GAAcD,GAAWlgN,WAAU,GAIzC,GAHAmgN,GAAYn5I,gBAAgB,MAGe,QAAvCm5I,GAAYrogB,SAASxqB,cACrB,OAAO7b,KAAK2uiB,kBAAkBD,GAAavsR,IAK/C,GAA2C,WAAvCusR,GAAYrogB,SAASxqB,cACrB,OAAO7b,KAAK2uiB,kBAAkB3uiB,KAAK4uiB,cAAcF,IAAcvsR,IAOnE,MAAMirR,GAAMptiB,KAAK6uiB,sBAAsBzC,EAAsB,gBAE7DgB,UAAI9jgB,YAAYolgB,IACT1uiB,KAAK2uiB,kBAAkBvB,GAAKjrR,IAKvC0sR,sBAAsBthF,IAClB,MAAMuhF,EAAM9uiB,KAAKo/E,UAAU14C,cAAc,OACzCoogB,EAAIv1gB,UAAYg0b,GAChB,MAAM6/E,GAAM0B,EAAIvxI,cAAc,OAE9B,IAAK6vI,GACD,MAAMltT,MAAM,uBAEhB,OAAOktT,GAKXwB,cAAchvc,IACV,MAAMwtc,EAAMptiB,KAAK6uiB,sBAAsBzC,EAAsB,gBACvD1igB,GAAak2D,GAAQl2D,WAE3B,QAASxpC,GAAI,EAAGA,GAAIwpC,GAAWlmC,OAAQtD,KAAK,CACxC,MAAQ0qD,QAAM5mC,UAAU0lB,GAAWxpC,IACtB,OAAT0qD,IACAwif,EAAIzmgB,aAAaikB,GAAM5mC,IAG/B,QAAS9jB,GAAI,EAAGA,GAAI0/F,GAAQj6D,WAAWniC,OAAQtD,KACvC0/F,GAAQj6D,WAAWzlC,IAAG8jT,WAAahkT,KAAKo/E,UAAUm3U,cAClD62I,EAAI9jgB,YAAYs2D,GAAQj6D,WAAWzlC,IAAGquV,WAAU,IAGxD,OAAO6+M,EAKXuB,kBAAkBvB,GAAKjrR,GACnBirR,UAAIzmgB,aAAa,MAAO,IACxBymgB,GAAIzmgB,aAAa,SAAU,QAC3BymgB,GAAIzmgB,aAAa,QAAS,QAC1BymgB,GAAIzmgB,aAAa,sBAAuB,iBACxCymgB,GAAIzmgB,aAAa,YAAa,SAC1Bw7O,GAAWA,EAAQ4sR,SACnB3B,GAAIzmgB,aAAa,UAAWw7O,EAAQ4sR,SAEjC3B,GAMXmB,WAAWS,IACP,IAAIn5O,EACJ,MAAQlrS,IAAKoihB,GAAS5qR,YAAY6sR,GAC5BrtE,GAAuG,QAApF9rK,EAAiB,MAAZ1zC,QAAyC,EAASA,GAAQw/M,uBAAoC,IAAP9rK,GAAgBA,EACrI,IAAK71T,KAAK8qiB,YACN,MAtbZ,aACI,OAAO5qT,MAAM,8JAqbC+uT,GAGV,GAAe,MAAXlC,GACA,MAAM7sT,MAAO,+BAA8B6sT,QAE/C,MAAMpihB,GAAM3qB,KAAK+qiB,WAAW7rb,SAAS+sb,+BAA8Bc,IAEnE,IAAKpihB,GACD,MAAMqihB,EAAmCD,IAK7C,MAAMmC,GAAkBlviB,KAAKoriB,sBAAsBvqiB,IAAI8pB,IACvD,GAAIukhB,GACA,OAAOA,GAEX,MAAM7rE,GAAMrje,KAAK8qiB,YAAYjqiB,IAAI8pB,GAAK,CAAEosV,aAAc,OAAQ4qH,qBAAmBt5d,MAAK4qB,OAAIm6gB,IAG/EhB,EAAsBgB,MAC7B+B,OAAS,IAAMnviB,KAAKoriB,sBAAsB79gB,OAAO5C,MAAOykhB,UAC5D,YAAKhE,sBAAsB9rS,IAAI30O,GAAK04c,IAC7BA,GAQXwoE,kBAAkBD,GAAWhB,EAAUvze,IACnC,YAAK4ze,gBAAgB3rS,IAAIguS,EAAQ1B,GAAWhB,GAAWvze,IAChDr3D,KAOXysiB,qBAAqBb,GAAWv0e,GAC5B,MAAMg4e,GAAkBrviB,KAAKkriB,gBAAgBrqiB,IAAI+qiB,IACjD,OAAIyD,GACAA,GAAgBlsiB,KAAKk0D,GAGrBr3D,KAAKkriB,gBAAgB5rS,IAAIssS,GAAW,CAACv0e,IAElCr3D,KAGX6tiB,sBAAsBx2e,IAClB,IAAKA,GAAOi4e,WAAY,CACpB,MAAMlC,EAAMptiB,KAAK6uiB,sBAAsBx3e,GAAOwze,SAC9C7qiB,KAAK2uiB,kBAAkBvB,EAAK/1e,GAAO8qN,SACnC9qN,GAAOi4e,WAAalC,EAExB,OAAO/1e,GAAOi4e,WAGlB9B,4BAA4B5B,GAAWhhf,GACnC,QAAS1qD,GAAI,EAAGA,GAAIF,KAAKsriB,WAAW9niB,OAAQtD,KAAK,CAC7C,MAAMmmF,GAASrmF,KAAKsriB,WAAWpriB,IAAG0qD,EAAMghf,IACxC,GAAIvld,GACA,OAgDcriE,GAhDcqiE,IAiDxB17D,KAAO3G,GAAMm+P,QAhDX,IAAI2pR,EAAczld,GAAO17D,IAAK,KAAM07D,GAAO87L,SAC3C,IAAI2pR,EAAczld,GAAQ,MA8ChD,IAA8BriE;;;;;;;SA9CkB,EAMhDurhB,EAAgBxwd,UAAhB,4BAA4Gwwd,GAAVtwd,qBAA2CS,KAA7I,GAAkGT,qBAAqF+mX,gBAArF/mX,qBAAiHU,KAAnN,GAAkGV,qBAAsJA,kBACxPswd,EAAgBvjZ,WADkF/sE,+BAClG,OAAgHswd,EAAhHltiB,QAAgHktiB,EAAhH,qBAA6I,SAuBpI,IAAIhsB,WAAY,IAAIC,WACpB,IAAID,WAAY1/C,KACjB2rE,eACAC,eACC,IAAIlsB,WAAY5jc,KAKzB,WAAkBytd,IACd,OAAOA,GAAI7+M,WAAU,GAGzB,WAAiBq9M,GAAWhhf,IACxB,OAAOghf,GAAY,IAAMhhf,GAe7B,MAAM8kf,IAAe9wd,QAAW,MAC5B/+E,YAAYg/E,IACR7+E,KAAK6+E,YAAcA,MAQrB8wd,GAAoB,IAAIlnZ,iBAAe,oBAAqB,CAC9DC,WAAY,OACZrmJ,QAGJ,cACI,MAAM+8E,IAAYqoV,YAAO9nV,MACnB0sW,GAAYjtW,GAAYA,GAAUpkB,SAAW,KACnD,MAAO,CAGH40e,YAAa,IAAOvjH,GAAYA,GAAU7yW,SAAW6yW,GAAU5+Y,OAAS,OAIhF,MAAMoigB,GAAoB,CACtB,YACA,gBACA,MACA,SACA,OACA,SACA,SACA,eACA,aACA,aACA,OACA,UAGEC,GAA2BD,GAAkB58gB,IAAI8gY,IAAS,IAAGA,OAASh5X,KAAK,MAE3Eg1gB,GAAiB,4BA4BvB,iBAAsBL,GAClB7viB,YAAYq/E,GAAY8wd,EAAeC,GAAY5jH,GAAW2+G,IAC1Dr/gB,MAAMuzD,IACNl/E,KAAKgwiB,cAAgBA,EACrBhwiB,KAAKqsb,UAAYA,GACjBrsb,KAAKgriB,cAAgBA,GACrBhriB,KAAKkwiB,SAAU,EAEflwiB,KAAKmwiB,kBAAoBr5I,UAGpBm5I,IACD/wd,GAAWrsE,cAAc8zB,aAAa,cAAe,QAOzDypgB,aACA,OAAOpwiB,KAAKkwiB,QAEZE,WAAOA,IACPpwiB,KAAKkwiB,SAAU/xI,QAAsBiyI,IAGrCC,cACA,OAAOrwiB,KAAKswiB,SAEZD,YAAQrshB,IACJA,KAAUhkB,KAAKswiB,WACXtshB,GACAhkB,KAAKuwiB,eAAevshB,IAEfhkB,KAAKswiB,UACVtwiB,KAAKwwiB,mBAETxwiB,KAAKswiB,SAAWtshB,IAIpByshB,cACA,OAAOzwiB,KAAK0wiB,SAEZD,YAAQzshB,IACR,MAAMwuW,EAAWxyX,KAAK2wiB,kBAAkB3shB,IACpCwuW,IAAaxyX,KAAK0wiB,WAClB1wiB,KAAK0wiB,SAAWl+K,EAChBxyX,KAAK4wiB,0BAITC,eACA,OAAO7wiB,KAAK8wiB,UAEZD,aAAS7shB,IACT,MAAMwuW,EAAWxyX,KAAK2wiB,kBAAkB3shB,IACpCwuW,IAAaxyX,KAAK8wiB,YAClB9wiB,KAAK8wiB,UAAYt+K,EACjBxyX,KAAK4wiB,0BAgBbG,eAAenG,IACX,IAAKA,GACD,MAAO,CAAC,GAAI,IAEhB,MAAM9/E,EAAQ8/E,GAASzhhB,MAAM,KAC7B,OAAQ2hc,EAAMtnd,aACL,EACD,MAAO,CAAC,GAAIsnd,EAAM,SACjB,EACD,OAAOA,UAEP,MAAM5qO,MAAO,uBAAsB0qT,QAG/CpoiB,WAGIxC,KAAK4wiB,yBAET5xc,qBACI,MAAMgyc,GAAiBhxiB,KAAKixiB,gCAC5B,GAAID,IAAkBA,GAAejrd,KAAM,CACvC,MAAM21X,EAAU17c,KAAKqsb,UAAUujH,cAO3Bl0F,IAAY17c,KAAKkxiB,gBACjBlxiB,KAAKkxiB,cAAgBx1F,EACrB17c,KAAKmxiB,yBAAyBz1F,KAI1Cxyc,cACIlJ,KAAKmwiB,kBAAkBxihB,cACnB3tB,KAAKixiB,iCACLjxiB,KAAKixiB,gCAAgCxgd,QAG7C2gd,iBACI,OAAQpxiB,KAAKqwiB,QAEjBgB,eAAejE,IACXptiB,KAAKwwiB,mBAGL,MAAMxoX,EAAOhoL,KAAKqsb,UAAUujH,cAC5B5viB,KAAKkxiB,cAAgBlpX,EACrBhoL,KAAKsxiB,qCAAqClE,IAC1CptiB,KAAKmxiB,yBAAyBnpX,GAC9BhoL,KAAK6+E,YAAYhsE,cAAcy2B,YAAY8jgB,IAE/CoD,mBACI,MAAMe,GAAgBvxiB,KAAK6+E,YAAYhsE,cACvC,IAAI2+hB,EAAaD,GAAc5rgB,WAAWniC,OAM1C,IALIxD,KAAKixiB,iCACLjxiB,KAAKixiB,gCAAgCxgd,QAIlC+gd,KAAc,CACjB,MAAMtnE,GAAQqnE,GAAc5rgB,WAAW6rgB,IAGhB,IAAnBtnE,GAAMlmL,UAAmD,QAAjCkmL,GAAM7jc,SAASxqB,gBACvCqud,GAAMxlN,UAIlBksR,yBACI,IAAK5wiB,KAAKoxiB,iBACN,OAEJ,MAAMK,GAAOzxiB,KAAK6+E,YAAYhsE,cACxB6+hB,EAAe1xiB,KAAKywiB,QACpBzwiB,KAAKgwiB,cAAcrD,sBAAsB3siB,KAAKywiB,SAC9CzwiB,KAAKgwiB,cAAcnD,yBACrB6E,GAAgB1xiB,KAAK2xiB,wBACjB3xiB,KAAK2xiB,uBACLF,GAAK1mJ,UAAUrmI,OAAO1kR,KAAK2xiB,uBAE3BD,GACAD,GAAK1mJ,UAAUjjQ,IAAI4pZ,GAEvB1xiB,KAAK2xiB,sBAAwBD,GAE7B1xiB,KAAK6wiB,UAAY7wiB,KAAK4xiB,yBAClB5xiB,KAAK4xiB,wBACLH,GAAK1mJ,UAAUrmI,OAAO1kR,KAAK4xiB,wBAE3B5xiB,KAAK6wiB,UACLY,GAAK1mJ,UAAUjjQ,IAAI9nJ,KAAK6wiB,UAE5B7wiB,KAAK4xiB,uBAAyB5xiB,KAAK6wiB,UAQ3CF,kBAAkB3shB,IACd,MAAwB,iBAAVA,GAAqBA,GAAMoF,OAAOD,MAAM,KAAK,GAAKnF,GAOpEmthB,yBAAyBnpX,IACrB,MAAMslB,EAAWttM,KAAKixiB,gCAClB3jW,GACAA,EAAS/kM,QAAQ,CAACu5Q,GAAOliL,MACrBkiL,GAAMv5Q,QAAQwrZ,KACVn0T,GAAQj5D,aAAaotX,GAAKnpW,KAAO,QAAOo9H,MAAQ+rO,GAAK/vY,eASrEsthB,qCAAqC1xc,IACjC,MAAMiyc,EAAsBjyc,GAAQV,iBAAiB4wc,IAC/CxiW,GAAYttM,KAAKixiB,gCACnBjxiB,KAAKixiB,iCAAmC,IAAItjM,IAChD,QAASztW,GAAI,EAAGA,GAAI2xiB,EAAoBruiB,OAAQtD,KAC5C2viB,GAAkBtniB,QAAQwrZ,KACtB,MAAM+9I,GAAuBD,EAAoB3xiB,IAC3C8jB,GAAQ8thB,GAAqBlogB,aAAamqX,IAC1CtlZ,GAAQuV,GAAQA,GAAMvV,MAAMshiB,IAAkB,KACpD,GAAIthiB,GAAO,CACP,IAAIi7B,GAAa4jK,GAASzsM,IAAIixiB,IACzBpogB,KACDA,GAAa,GACb4jK,GAASgyD,IAAIwyS,GAAsBpogB,KAEvCA,GAAWvmC,KAAK,CAAEynD,KAAMmpW,GAAM/vY,MAAOvV,GAAM,QAM3D8hiB,eAAewB,IAIX,GAHA/xiB,KAAKgyiB,cAAgB,KACrBhyiB,KAAKiyiB,SAAW,KAChBjyiB,KAAKmwiB,kBAAkBxihB,cACnBokhB,GAAS,CACT,MAAOnG,EAAWhB,IAAY5qiB,KAAK+wiB,eAAegB,IAC9CnG,IACA5riB,KAAKgyiB,cAAgBpG,GAErBhB,KACA5qiB,KAAKiyiB,SAAWrH,IAEpB5qiB,KAAKmwiB,kBAAoBnwiB,KAAKgwiB,cACzB3C,gBAAgBzC,GAAUgB,GAC1BvjiB,MAAKi5Q,OAAK,IACVn7Q,UAAUiniB,IAAOptiB,KAAKqxiB,eAAejE,IAAOgB,KAC7C,MAAMr9c,GAAgB,yBAAwB66c,KAAahB,OAAawD,GAAI3ghB,UAC5EztB,KAAKgriB,cAAcx1R,YAAY,IAAIt1B,MAAMnvJ,SAKzDmhd,GAAQnzd,UAAR,4BAAoGmzd,IA9WFjzd,8BA8W2BA,cA9W3BA,8BA8WqDswd,GA9WrDtwd,8BA8WiF,eA9WjFA,8BA8W4H0wd,IA9W5H1wd,8BA8W0JA,kBAC5Pizd,GAAQtyd,UA/W0FX,8BA+WlG,MAAwFizd,GAAxFxuiB,2CAAiQ,MAAjQ,0EA/WkGu7E,wBA+WlG,qDA/WkGA,CA+WlG,4CA/WkGA,CA+WlG,sDA/WkGA,wBA+WlG,2BA/WkGA,CA+WlG,+MA/WkGA,wCA+WlGc,uEA/WkGd,uDA+WimB,KAAnsBe;;;;;;;;AAqCA,UAEAmyd,GAAcpzd,UAAd,4BAA0Gozd,KAC1GA,GAAcjyd,UAvZoFjB,6BAuZlG,MAA2Gkzd,KAC3GA,GAAchyd,UAxZoFlB,6BAwZlG,UAAoI,CAACmB,MAAkBA;;;;;;;;;;;;;;;;;;;;;SCl9BvJ,MAAMgyd,GAAkB1xI,QAAgC,CAAE78F,SAAS,IAMnE,QACIhkU,YAAYs/E,EAAWy8U,GACnB57Z,KAAKm/E,UAAYA,EACjBn/E,KAAK47Z,QAAUA,EACf57Z,KAAKqyiB,mBAAqB,IAAI1kM,IAElCy2D,QAAQwkB,GACJ,IAAK5ob,KAAKm/E,UAAUE,UAChB,OAAOigR,IAEX,MAAM1/P,GAAUykU,QAAcukB,GACxBjkB,EAAO3ka,KAAKqyiB,mBAAmBxxiB,IAAI++F,GACzC,GAAI+kU,EACA,OAAOA,EAAKrrZ,QAEhB,MAAM+sE,EAAS,IAAItqE,KACb67a,EAAW,4BACXntB,GAAa1lV,KAIa,kCAAxBA,GAAMutd,eACL1yc,EAAQmrT,UAAU3jU,SAASwwW,GAIC,gCAAxB7yW,GAAMutd,eACX1yc,EAAQmrT,UAAU3jU,SAASwwW,KAC3Bh4V,EAAQmrT,UAAUrmI,OAAOkzK,GACzB53b,KAAK47Z,QAAQpzJ,IAAI,IAAMniL,EAAO9kE,KAAK,CAAE0oB,OAAQ86C,GAAM96C,OAAQsogB,cAAc,OANzE3yc,EAAQmrT,UAAUjjQ,IAAI8vS,GACtB53b,KAAK47Z,QAAQpzJ,IAAI,IAAMniL,EAAO9kE,KAAK,CAAE0oB,OAAQ86C,GAAM96C,OAAQsogB,cAAc,KAKA,EAGjF,YAAK32I,QAAQc,kBAAkB,KAC3B98T,EAAQ6qK,iBAAiB,iBAAkBggK,GAAU2nI,GACrDxyc,EAAQmrT,UAAUjjQ,IAAI,uCAE1B9nJ,KAAKqyiB,mBAAmB/yS,IAAI1/J,EAAS,CACjCtmF,QAAS+sE,EACTmsd,SAAU,KACN5yc,EAAQovK,oBAAoB,iBAAkBy7J,GAAU2nI,MAGzD/rd,EAEXw+U,eAAe+jB,GACX,MAAMhpV,GAAUykU,QAAcukB,GACxBjkB,EAAO3ka,KAAKqyiB,mBAAmBxxiB,IAAI++F,GACrC+kU,IACAA,EAAK6tI,WACL7tI,EAAKrrZ,QAAQO,WACb+lF,EAAQmrT,UAAUrmI,OAAO,qCACzB9kL,EAAQmrT,UAAUrmI,OAAO,6BACzB1kR,KAAKqyiB,mBAAmB9khB,OAAOqyE,IAGvC12F,cACIlJ,KAAKqyiB,mBAAmB9piB,QAAQ,CAAC+8Z,EAAO1lU,IAAY5/F,KAAK6ka,eAAejlU,KAGhF6yc,EAAgB1zd,UAAhB,0BAA4G0zd,GAAVxzd,qBAA2CS,MAA3CT,qBAAmEA,YACrKwzd,EAAgBzmZ,WADkF/sE,+BAClG,OAAgHwzd,EAAhHpwiB,QAAgHowiB,EAAhH,qBAA6I,SAM7I,QACI5yiB,YAAYg/E,EAAa6zd,GACrB1yiB,KAAK6+E,YAAcA,EACnB7+E,KAAK0yiB,iBAAmBA,EAExB1yiB,KAAK2yiB,YAAc,IAAIrsI,eAE3B9ja,WACIxC,KAAK0yiB,iBACAtuI,QAAQpka,KAAK6+E,aACb14E,UAAU4+E,GAAS/kF,KAAK2yiB,YAAYhihB,KAAKo0D,IAElD77E,cACIlJ,KAAK0yiB,iBAAiB7tI,eAAe7ka,KAAK6+E,cAGlD+zd,EAAY7zd,UAAZ,0BAAwG6zd,GAvBN3zd,8BAuBmCA,cAvBnCA,8BAuB6Dwzd,KAC/JG,EAAY5zd,UAxBsFC,8BAwBlG,MAA4F2zd,EAA5FlviB;;;;;;;;AAkBA,QACI7D,YAAYg/E,EAAaM,EAAWy8U,EAEpCn1X,GACIzmC,KAAK6+E,YAAcA,EACnB7+E,KAAKm/E,UAAYA,EACjBn/E,KAAK47Z,QAAUA,EACf57Z,KAAKsib,WAAa,IAAIvma,KACtB/b,KAAKm8Z,UAAW,EAMhBn8Z,KAAK6yiB,kBAAmB,EACxB7yiB,KAAK8yiB,eAAgB,EAErB9yiB,KAAK+yiB,kBAAqBhud,IACtB/kF,KAAK6xgB,UAA2B,UAAf9sb,EAAMn9E,IAAS,EAEpC5H,KAAKo/E,UAAY34C,EACjBzmC,KAAKgziB,iBAAmBhziB,KAAK6+E,YAAYhsE,cAGzCogiB,cACA,OAAOjziB,KAAKkziB,SAEZD,YAAQjvhB,GACRhkB,KAAKkziB,UAAWxvH,QAAqB1/Z,GACrChkB,KAAKmziB,gBAGLC,cACA,OAAOpziB,KAAKqziB,SAEZD,YAAQpvhB,GACRhkB,KAAKqziB,UAAW3vH,QAAqB1/Z,GACrChkB,KAAKsziB,gBAGLhxR,cACA,OAAOtiR,KAAKm8Z,SAEZ75I,YAAQt+P,GACRA,GAAQm6Y,QAAsBn6Y,GAG1BhkB,KAAKm8Z,WAAan4Y,KACjBhkB,KAAKm8Z,SAAWn4Y,GAAShkB,KAAKuziB,oBAAmB,GAAQvziB,KAAK+/H,SAGnEyH,kBACA,OAAOxnI,KAAKgziB,iBAAiBxra,YAE7BA,gBAAYxjH,GACZhkB,KAAKwziB,8BAA2B56L,EAChCloW,EACI1Q,KAAKgziB,iBAAiBrsgB,aAAa,cAAe3iB,GAGlDhkB,KAAKgziB,iBAAiBz9I,gBAAgB,eAE1Cv1Z,KAAKyziB,kCAGTN,gBACI,MAAM7kiB,EAAYtO,KAAKiziB,SAAWjziB,KAAK0ziB,kBAAuB1ziB,KAAKiziB,QAAUjziB,KAAK0ziB,kBAAtB,KAA8C,KACtGpliB,IACAtO,KAAKgziB,iBAAiBjghB,MAAMzkB,UAAYA,GAIhDgliB,gBACI,MAAMvmiB,EAAY/M,KAAKoziB,SAAWpziB,KAAK0ziB,kBAAuB1ziB,KAAKoziB,QAAUpziB,KAAK0ziB,kBAAtB,KAA8C,KACtG3miB,IACA/M,KAAKgziB,iBAAiBjghB,MAAMhmB,UAAYA,GAGhD6F,kBACQ5S,KAAKm/E,UAAUE,YAEfr/E,KAAK2ziB,eAAiB3ziB,KAAKgziB,iBAAiBjghB,MAAM7e,OAClDlU,KAAKuziB,qBACLvziB,KAAK47Z,QAAQc,kBAAkB,KAC3B,MAAMnhX,EAASv7C,KAAKula,cACpBkgC,OAAUlqZ,EAAQ,UACblzC,MAAK48b,OAAU,KAAKh/B,OAAUjma,KAAKsib,aACnCn8a,UAAU,IAAMnG,KAAKuziB,oBAAmB,IAC7CvziB,KAAKgziB,iBAAiBvoS,iBAAiB,QAASzqQ,KAAK+yiB,mBACrD/yiB,KAAKgziB,iBAAiBvoS,iBAAiB,OAAQzqQ,KAAK+yiB,qBAExD/yiB,KAAK8yiB,eAAgB,EACrB9yiB,KAAKuziB,oBAAmB,IAGhCrqiB,cACIlJ,KAAKgziB,iBAAiBhkS,oBAAoB,QAAShvQ,KAAK+yiB,mBACxD/yiB,KAAKgziB,iBAAiBhkS,oBAAoB,OAAQhvQ,KAAK+yiB,mBACvD/yiB,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WASpB+5hB,2BACI,GAAI5ziB,KAAK0ziB,kBACL,OAGJ,IAAIG,EAAgB7ziB,KAAKgziB,iBAAiBzkN,WAAU,GACpDslN,EAAc34M,KAAO,EAIrB24M,EAAc9ghB,MAAM5e,SAAW,WAC/B0/hB,EAAc9ghB,MAAMg1B,WAAa,SACjC8rf,EAAc9ghB,MAAM47T,OAAS,OAC7BklN,EAAc9ghB,MAAMo0G,QAAU,IAC9B0sa,EAAc9ghB,MAAM7e,OAAS,GAC7B2/hB,EAAc9ghB,MAAMzkB,UAAY,GAChCuliB,EAAc9ghB,MAAMhmB,UAAY,GAMhC8miB,EAAc9ghB,MAAM0rD,SAAW,SAC/Bz+E,KAAKgziB,iBAAiBnpN,WAAWvgT,YAAYuqgB,GAC7C7ziB,KAAK0ziB,kBAAoBG,EAAcz6d,aACvCy6d,EAAcnvR,SAEd1kR,KAAKmziB,gBACLnziB,KAAKsziB,gBAETQ,uBACI,MAAMl0c,EAAU5/F,KAAKgziB,iBACfe,EAAiBn0c,EAAQ7sE,MAAMm/D,cAAgB,GAC/C8hd,EAAYh0iB,KAAKm/E,UAAU67U,QAC3Bi5I,EAAoBD,GAAah0iB,KAAK6xgB,UACtCqiC,EAAiBF,EACjB,0CACA,kCAIFC,IACAr0c,EAAQ7sE,MAAMm/D,aAAgB,GAAE0N,EAAQxmB,kBAI5CwmB,EAAQmrT,UAAUjjQ,IAAIosZ,GAGtB,MAAM9wT,GAAexjJ,EAAQwjJ,aAAe,EAC5CxjJ,SAAQmrT,UAAUrmI,OAAOwvR,GACrBD,IACAr0c,EAAQ7sE,MAAMm/D,aAAe6hd,GAE1B3wT,GAEXqwT,kCACI,IAAKzziB,KAAK8yiB,eAAkDl6L,MAAjC54W,KAAKwziB,yBAC5B,OAEJ,IAAKxziB,KAAKwnI,YAEN,YADAxnI,KAAKwziB,yBAA2B,GAGpC,MAAMxvhB,EAAQhkB,KAAKgziB,iBAAiBhvhB,MACpChkB,KAAKgziB,iBAAiBhvhB,MAAQhkB,KAAKgziB,iBAAiBxra,YACpDxnI,KAAKwziB,yBAA2BxziB,KAAK8ziB,uBACrC9ziB,KAAKgziB,iBAAiBhvhB,MAAQA,EAElCilQ,YACQjpR,KAAKm/E,UAAUE,WACfr/E,KAAKuziB,qBAQbA,mBAAmBY,GAAQ,GASvB,IAPKn0iB,KAAKm8Z,WAGVn8Z,KAAK4ziB,2BACL5ziB,KAAKyziB,mCAGAzziB,KAAK0ziB,mBACN,OAEJ,MAAMU,EAAWp0iB,KAAK6+E,YAAYhsE,cAC5BmR,EAAQowhB,EAASpwhB,MAEvB,IAAKmwhB,GAASn0iB,KAAKkziB,WAAalziB,KAAK6yiB,kBAAoB7uhB,IAAUhkB,KAAKuogB,eACpE,OAEJ,MAAMnlR,EAAepjP,KAAK8ziB,uBACpB5/hB,EAASuT,KAAKqgB,IAAIs7M,EAAcpjP,KAAKwziB,0BAA4B,GAEvEY,EAASrhhB,MAAM7e,OAAU,GAAEA,MAC3BlU,KAAK47Z,QAAQc,kBAAkB,KACU,oBAA1B1vT,sBACPA,sBAAsB,IAAMhtG,KAAKq0iB,uBAAuBD,IAGxDvmiB,WAAW,IAAM7N,KAAKq0iB,uBAAuBD,MAGrDp0iB,KAAKuogB,eAAiBvkf,EACtBhkB,KAAK6yiB,iBAAmB7yiB,KAAKkziB,SAKjCnza,aAGgC64O,IAAxB54W,KAAK2ziB,iBACL3ziB,KAAKgziB,iBAAiBjghB,MAAM7e,OAASlU,KAAK2ziB,gBAGlDW,oBAAoB,CAIpB7vI,eACI,OAAOzka,KAAKo/E,WAAa34C,SAG7B8+X,aAEI,OAAOC,KADUf,eACNzpE,aAAez/S,OAO9B84f,uBAAuBD,GACnB,MAAQlqgB,iBAAgBC,gBAAiBiqgB,GAOpCp0iB,KAAKsib,WAAWiyH,WAAav0iB,KAAK6xgB,WACnCuiC,EAASI,kBAAkBtqgB,EAAgBC,IAIvDsqgB,EAAoB11d,UAApB,0BAAgH01d,GA9Sdx1d,8BA8SmDA,cA9SnDA,8BA8S6ES,MA9S7ET,8BA8SqGA,UA9SrGA,8BA8S2HU,KAA7N,KACA80d,EAAoBz1d,UA/S8EC,8BA+SlG,MAAoGw1d,EAApG/wiB,oEAA+W,IAA/W,2DA/SkGu7E,uBA+SlG,0BAAoG1nE,yBAApGiyE;;;;;;;;AAyCA,SAEAkrd,EAAgB31d,UAAhB,0BAA4G21d,IAC5GA,EAAgBx0d,UA3VkFjB,6BA2VlG,MAA6Gy1d,IAC7GA,EAAgBv0d,UA5VkFlB,6BA4VlG;;;;;;;;ACtYA,MAAMi1c,EAA2B,IAAIzrY,iBAAe,4BAU9CksZ,EAA0B,CAC5B,SACA,WACA,OACA,SACA,QACA,QACA,QACA,QACA;;;;;;;SAEJ,IAAI96G,EAAe,EAGnB,MAAM+6G,GAAgB5/B,QAAgB,MAClCn1gB,YAAYo1gB,EAA2BC,EAAaC,EAEpDxjb,GACI3xF,KAAKi1gB,0BAA4BA,EACjCj1gB,KAAKk1gB,YAAcA,EACnBl1gB,KAAKm1gB,iBAAmBA,EACxBn1gB,KAAK2xF,UAAYA,KAIzB,gBAAuBijd,EACnB/0iB,YAAYg/E,EAAaM,EAAWwS,EAAWujb,EAAaC,EAAkBF,GAA2B4/B,GAAoBnC,GAAkB9xI,GAG/IolG,IACIr6e,MAAMspf,GAA2BC,EAAaC,EAAkBxjb,GAChE3xF,KAAK6+E,YAAcA,EACnB7+E,KAAKm/E,UAAYA,EACjBn/E,KAAK0yiB,iBAAmBA,GACxB1yiB,KAAKgmgB,WAAaA,GAClBhmgB,KAAKs1gB,KAAQ,aAAYz7E,IAKzB75b,KAAKiuR,SAAU,EAKfjuR,KAAKuxF,aAAe,IAAIx1E,KAKxB/b,KAAKo1gB,YAAc,YAKnBp1gB,KAAK80iB,YAAa,EAClB90iB,KAAKmua,WAAY,EACjBnua,KAAK+0iB,MAAQ,OACb/0iB,KAAKg1iB,WAAY,EACjBh1iB,KAAKi1iB,sBAAwB,CACzB,OACA,WACA,iBACA,QACA,OACA,QACFvuiB,OAAOtE,KAAK8yiB,UAAyBpyL,IAAI1gX,KAC3CpC,KAAKm1iB,kBAAqBpwd,KACtB,MAAMka,GAAKla,GAAM96C,QAOZg1D,GAAGj7E,OAA+B,IAAtBi7E,GAAG/0D,gBAA4C,IAApB+0D,GAAG90D,eAK3C80D,GAAGu1c,kBAAkB,EAAG,GACxBv1c,GAAGu1c,kBAAkB,EAAG,KAGhC,MAAM50c,GAAU5/F,KAAK6+E,YAAYhsE,cAC3BwzB,GAAWu5D,GAAQv5D,SAASxqB,cAGlC7b,KAAKo1iB,oBAAsBP,IAAsBj1c,GACjD5/F,KAAKq1iB,qBAAuBr1iB,KAAKgkB,MAEjChkB,KAAKqqE,GAAKrqE,KAAKqqE,GAIX8U,EAAU07U,KACV+F,GAAOlE,kBAAkB,KACrB79U,EAAYhsE,cAAc43P,iBAAiB,QAASzqQ,KAAKm1iB,qBAGjEn1iB,KAAKs1iB,WAAat1iB,KAAKm/E,UAAUE,UACjCr/E,KAAKu1iB,gBAA+B,WAAblvgB,GACvBrmC,KAAKw1iB,YAA2B,aAAbnvgB,GACnBrmC,KAAKy1iB,iBAAmBzvC,GACpBhmgB,KAAKu1iB,kBACLv1iB,KAAKo1gB,YAAcx1a,GAAQoiL,SACrB,6BACA,qBAOV10P,eACA,OAAIttB,KAAK2xF,WAAyC,OAA5B3xF,KAAK2xF,UAAUrkE,SAC1BttB,KAAK2xF,UAAUrkE,SAEnBttB,KAAKmua,UAEZ7gZ,aAAStJ,GACThkB,KAAKmua,WAAYhQ,QAAsBn6Y,GAGnChkB,KAAKiuR,UACLjuR,KAAKiuR,SAAU,EACfjuR,KAAKuxF,aAAahwE,QAOtB8oD,SACA,OAAOrqE,KAAKq0Z,IAEZhqV,OAAGrmD,GACHhkB,KAAKq0Z,IAAMrwY,GAAShkB,KAAKs1gB,KAMzBrjb,eACA,IAAI4jO,EAAI4/F,EAAI/mH,EAAIj+C,EAChB,OAAgO,QAAxNA,EAA+B,QAAzBolE,EAAK71T,KAAK+lK,iBAA8B,IAAP8vJ,EAAgBA,EAAsF,QAAhFnnB,EAA+B,QAAzB+mH,EAAKz1Z,KAAK2xF,iBAA8B,IAAP8jU,OAAgB,EAASA,EAAGtkU,eAA4B,IAAPu9M,OAAgB,EAASA,EAAGuiN,aAAa6kB,8BAAyC,IAAPrlR,GAAgBA,CAAK,CAE7Px+J,aAASjuE,GACThkB,KAAK+lK,WAAYo4P,QAAsBn6Y,GAGvCpc,WACA,OAAO5H,KAAK+0iB,MAEZntiB,SAAKoc,GACLhkB,KAAK+0iB,MAAQ/whB,GAAS,OACtBhkB,KAAK01iB,iBAIA11iB,KAAKw1iB,cAAeN,UAAyBpyL,IAAI9iX,KAAK+0iB,SACvD/0iB,KAAK6+E,YAAYhsE,cAAcjL,KAAO5H,KAAK+0iB,OAO/C/whB,YACA,OAAOhkB,KAAKo1iB,oBAAoBpxhB,MAEhCA,UAAMA,GACFA,IAAUhkB,KAAKgkB,QACfhkB,KAAKo1iB,oBAAoBpxhB,MAAQA,EACjChkB,KAAKuxF,aAAahwE,QAItBqgR,eACA,OAAO5hS,KAAKg1iB,UAEZpzQ,aAAS59Q,GACThkB,KAAKg1iB,WAAY72I,QAAsBn6Y,GAE3CpR,kBACQ5S,KAAKm/E,UAAUE,WACfr/E,KAAK0yiB,iBAAiBtuI,QAAQpka,KAAK6+E,YAAYhsE,eAAe1M,UAAU4+E,IACpE/kF,KAAK80iB,WAAa/vd,EAAMwtd,aACxBvyiB,KAAKuxF,aAAahwE,SAI9B6S,cACIp0B,KAAKuxF,aAAahwE,OAEtBrY,cACIlJ,KAAKuxF,aAAa13E,WACd7Z,KAAKm/E,UAAUE,WACfr/E,KAAK0yiB,iBAAiB7tI,eAAe7ka,KAAK6+E,YAAYhsE,eAEtD7S,KAAKm/E,UAAU07U,KACf76Z,KAAK6+E,YAAYhsE,cAAcm8P,oBAAoB,QAAShvQ,KAAKm1iB,mBAGzElsR,YACQjpR,KAAK2xF,WAIL3xF,KAAK02gB,mBAKT12gB,KAAK21iB,yBAGL31iB,KAAK41iB,yBAGT9iiB,MAAMqvQ,GACFniR,KAAK6+E,YAAYhsE,cAAcC,MAAMqvQ,GAGzC0zR,cAAcpoR,GACNA,IAAcztR,KAAKiuR,UACnBjuR,KAAKiuR,QAAUR,EACfztR,KAAKuxF,aAAahwE,QAG1Bszf,WAAW,CAUX+gC,yBACI,IAAI//O,EAAI4/F,EAKR,MAAMjuR,GAAiH,QAAjGiuR,EAAgC,QAA1B5/F,EAAK71T,KAAKgmgB,kBAA+B,IAAPnwM,OAAgB,EAASA,EAAGmuO,+BAA4C,IAAPvuI,OAAgB,EAASA,EAAGvrY,KAAK2rS,IAAO,KAAO71T,KAAKwnI,YACnL,GAAIA,IAAgBxnI,KAAK81iB,qBAAsB,CAC3C,MAAMl2c,EAAU5/F,KAAK6+E,YAAYhsE,cACjC7S,KAAK81iB,qBAAuBtua,EAC5BA,EACM5nC,EAAQj5D,aAAa,cAAe6gG,GACpC5nC,EAAQ21T,gBAAgB,gBAItCogJ,yBACI,MAAMnjL,EAAWxyX,KAAK6+E,YAAYhsE,cAAcmR,MAC5ChkB,KAAKq1iB,uBAAyB7iL,IAC9BxyX,KAAKq1iB,qBAAuB7iL,EAC5BxyX,KAAKuxF,aAAahwE,QAI1Bm0hB,gBACQf,EAAwBvjiB,QAAQpR,KAAK+0iB,MAAS,CAMtDgB,gBACI,OAAO/1iB,KAAKi1iB,sBAAsB7jiB,QAAQpR,KAAK+0iB,QAAS,EAG5DiB,cAEI,IAAIC,EAAWj2iB,KAAK6+E,YAAYhsE,cAAcojiB,SAC9C,OAAOA,GAAYA,EAASC,SAM5B99J,YACA,QAASp4Y,KAAK+1iB,iBACT/1iB,KAAK6+E,YAAYhsE,cAAcmR,OAC/BhkB,KAAKg2iB,eACLh2iB,KAAK80iB,YAMV7+B,uBACA,GAAIj2gB,KAAKu1iB,gBAAiB,CAItB,MAAMY,EAAgBn2iB,KAAK6+E,YAAYhsE,cACjCujiB,EAAcD,EAAch0R,QAAQ,GAG1C,OAAQniR,KAAKiuR,SACTkoR,EAAcn0R,WACbhiR,KAAKo4Y,UACH+9J,EAAczsE,eAAgB,GAAM0sE,GAAeA,EAAYtvd,OAGtE,OAAO9mF,KAAKiuR,UAAYjuR,KAAKo4Y,MAOrCw+H,kBAAkBjjb,GACVA,EAAInwF,OACJxD,KAAK6+E,YAAYhsE,cAAc8zB,aAAa,mBAAoBgtD,EAAI54D,KAAK,MAGzE/6B,KAAK6+E,YAAYhsE,cAAc0iZ,gBAAgB,oBAOvDuhH,mBAIS92gB,KAAKiuR,SACNjuR,KAAK8S,QAIbujiB,kBACI,MAAMz2c,EAAU5/F,KAAK6+E,YAAYhsE,cACjC,OAAO7S,KAAKu1iB,kBAAoB31c,EAAQoiL,UAAYpiL,EAAQ7Z,KAAO,IAG3Euwd,EAASv3d,UAAT,0BAAqGu3d,GAAVr3d,8BAAoCA,cAApCA,8BAA8DS,MAA9DT,8BAAsF+mX,YAAjL,IAA2F/mX,8BAA2I+mX,SAAtO,GAA2F/mX,8BAAiL+mX,qBAA5Q,GAA2F/mX,8BAAmO6kW,MAAnO7kW,8BAAoQi1c,EAA/V,IAA2Fj1c,8BAAqUqmd,GAArUrmd,8BAAoWA,UAApWA,8BAA0Xurb,KAArd,KACA8rC,EAASt3d,UADkFC,8BAC3F,MAAyFq3d,EAAzF5yiB,mRAD2Fu7E,uBAC3F,0BAAyF1nE,iBAAc,IADZ0nE,CAC3F,yBAAyF1nE,iBAAc,IADZ0nE,CAC3F,0BAAyF1nE,eAAzF,MAD2F0nE,2BAC3F,sBAD2FA,CAC3F,uBAD2FA,wBAC3F,UAD2FA,CAC3F,iCAD2FA,CAC3F,oBAD2FA,CAC3F,gDAD2FA,CAC3F,qDAD2FA,CAC3F,4BAD2FA,wBAC3F,+BAD2FA,CAC3F,oUAD2FA,+BACw+B,CAAC,CAAEoJ,QAAS8vb,KAAqB35a,YAAa83c,KADthCr3d;;;;;;;;AAwF3F,SAEAs3d,EAAex3d,UAAf,0BAA2Gw3d,IAC3GA,EAAer2d,UA3F4EjB,6BA2F3F,MAA4Gs3d,IAK5GA,EAAep2d,UAhG4ElB,6BAgG3F,WAAuI,CAACo5b,MAAxI/uY,SAAsK,CAACora,EAAiBnP,KAAoBnld,MAAkBs0d,EAGtNnP;;;;;;;;;;;;;;;;;;;;;ivbCnbqFtmd,sBA6X+kD,0CA7X/kDA,mDA6X+oD,0CA7X/oDA,CA6X+oD,yIA5ZtuDu3d,GAAeppC,SAAczJ,QAAmB,UAIhD8yC,GAAwB9yC,QAAmB,SAO3C+yC,EAAW,IAAIjuZ,iBAAe,WAM9BkuZ,EAAe,IAAIluZ,iBAAe,cACxC,gBAAyB+tZ,EACrB32iB,cACI8rB,SAASinR,WAET5yS,KAAKikb,cAAgB,IAAIloa,KAE7BqY,cACIp0B,KAAKikb,cAAc1ia,OAEvBrY,cACIlJ,KAAKikb,cAAcpqa,YAG3B+8hB,EAAW73d,UAAX,qDAA6FE,kCAAU23d,KAAvGpuhB,IAAuGouhB,IAAvG,GACAA,EAAWh3d,UADkFX,8BAC7F,MAA2F23d,EAA3FlziB,+CAAiO,aAAjO,+HAD6Fu7E,+BAC+M,CAAC,CAAEoJ,QAASsud,EAAcn4c,YAAao4c,KADtP33d,yEAC7Fc,oEAD6Fd,uDACoW,KAAjce,8kbAQA,gBAAsBw2d,EAClB32iB,YAAYg/E,IACRlzD,QACA3rB,KAAK6+E,YAAcA,GAEnB7+E,KAAKikb,cAAgB,IAAIloa,KACG,gBAAxB/b,KAAK62iB,gBACLh4d,GAAYhsE,cAAck4Y,UAAUjjQ,IAAI,mBAGhD+uZ,eACI,MAAMxwgB,GAAWrmC,KAAK6+E,YAAYhsE,cAAcwzB,SAASxqB,cACzD,MAAiB,aAAbwqB,GACO,OAEM,oBAAbA,GACO,cAEJ,KAEXjS,cACIp0B,KAAKikb,cAAc1ia,OAEvBrY,cACIlJ,KAAKikb,cAAcpqa,YAG3Bi9hB,EAAQ/3d,UAAR,4BAAoG+3d,GApCP73d,8BAoCgCA,gBAC7H63d,EAAQl3d,UArCqFX,8BAqC7F,MAAwF63d,EAAxFpziB,gLArC6Fu7E,+BAqC4K,CAAC,CAAEoJ,QAASqud,EAAUl4c,YAAas4c,KArC/M73d,yEAqC7Fc,oEArC6Fd,uDAqCuT,KAApZe,+CAWA,SAEA+2d,EAA0Bh4d,UAA1B,4BAAsHg4d,IACtHA,EAA0B/3d,UAnDmEC,8BAmD7F,MAA0G83d,EAA1GrziB,gGAYA,SAEAsziB,EAAwBj4d,UAAxB,4BAAoHi4d,IACpHA,EAAwBh4d,UAlEqEC,8BAkE7F,MAAwG+3d,EAAxGtziB,0FAYA,SAEAuziB,EAA6Bl4d,UAA7B,4BAAyHk4d,IACzHA,EAA6Bj4d,UAjFgEC,8BAiF7F,MAA6Gg4d,EAA7GvziB,2FASA,gBAA0B+yiB,EACtB52iB,YAAY67Z,GAAUymB,GAAoB+0H,GAAShzb,GAC/Cv4F,QACA3rB,KAAK07Z,SAAWA,GAChB17Z,KAAKm3iB,oBAAqB,EAC1Bn3iB,KAAKsib,WAAa,IAAIvma,KACtB/b,KAAKmua,WAAY,EACjBnua,KAAKm3iB,sBAAwBD,IAAYhzb,GAAgC,gBAAxBA,EAAK2yb,gBACtD72iB,KAAKo3iB,MAAQF,IAAWhzb,EAGxB,MAAMtkB,GAAU5/F,KAAKmqgB,kBACkB,WAAnCvqa,GAAQv5D,SAASxqB,gBAA+B+jF,GAAQsiP,aAAa,SACrEtiP,GAAQj5D,aAAa,OAAQ,UAE7B3mC,KAAKo3iB,OAGLp3iB,KAAKo3iB,MAAMnzH,cAAc57a,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU,KAChEg8a,GAAmBvoO,iBAK3BtsL,eACA,OAAOttB,KAAKmua,cAAgBnua,KAAKo3iB,QAASp3iB,KAAKo3iB,MAAM9phB,UAErDA,aAAStJ,IACThkB,KAAKmua,WAAYhQ,QAAsBn6Y,IAE3C2hQ,sBACImhR,QAAS9miB,KAAK+miB,OAAQ/miB,KAAK07Z,UAE/BxyZ,cACIlJ,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAGpB6zf,oBACI,OAAS1tgB,KAAKm3iB,oBAAsBn3iB,KAAK2tgB,kBAAoB3tgB,KAAKo3iB,QAASp3iB,KAAKo3iB,MAAMzpC,eAG1FxD,kBACI,OAAOnqgB,KAAK07Z,SAAS7oZ,eAG7BwkiB,EAAYt4d,UAAZ,4BAAwGs4d,GAxIXp4d,8BAwIwCA,cAxIxCA,8BAwIkEA,qBAxIlEA,8BAwImG03d,EAAhM,GAxI6F13d,8BAwI4Iy3d,EAAzO,KACAW,EAAYz3d,UAzIiFX,8BAyI7F,MAA4Fo4d,EAA5F3ziB,iIAzI6Fu7E,2BAyI7F7uB,GAAghB2mf,EAAhhB,GAzI6F93d,2BAyI7F7uB,GAAinB4mf,EAAjnB,GAzI6F/3d,2BAyI7F7uB,GAAosB4qd,KAApsB,gBAzI6F/7b,2BAyI7F5uB,EAzI6F4uB,6BAyI7Fz2D,oBAzI6Fy2D,2BAyI7F5uB,EAzI6F4uB,6BAyI7Fz2D,kBAzI6Fy2D,2BAyI7F5uB,EAzI6F4uB,6BAyI7Fz2D,iHAzI6Fy2D,wBAyI7F,qCAzI6FA,CAyI7F,4CAzI6FA,CAyI7F,iJAzI6FA,wCAyI7Fc,kTAzI6Fd,4BAyI7Fz+E,GAzI6Fy+E,2BAyIitB,YAzIjtBA,sBAyI2vB,YAzI3vBA,yBAyIi6B,GAzIj6BA,2BAyIkhC,YAzIlhCA,yBAyIgjC,KAzIhjCA,oDAyIunC,KAzIvnCA,4BAyI7F,OAzI6FA,sBAyImzB,GAzInzBA,uBAyImzB,wCAzInzBA,CAyImzB,8CAAh5BuhM,YAAgxC9gM,MAAhxC26L;;;;;;;;AA0CA,MAAMi9R,IAAwB3zC,QAAmB,SAE3C4zC,IAAqB5zC,QAAmB,SAGxC6zC,GAAoC,CACtCnvd,QAASola,oBACTjvZ,aAAaimW,gBAAW,IAAMgzG,IAC9Bh5c,OAAO,GAGX,SACI5+F,YAEAo3B,GAMAwse,GAEAthP,IACIniR,KAAKi3B,OAASA,GACdj3B,KAAKyjgB,OAASA,GACdzjgB,KAAKmiR,QAAUA,IAQvB,iBAA4Bo1R,GACxB13iB,YAAY67Z,GAAUwvG,GAEtBwsC,IACI/rhB,QACA3rB,KAAK07Z,SAAWA,GAChB17Z,KAAKkrgB,gBAAkBA,GACvBlrgB,KAAK03iB,cAAgBA,GACrB13iB,KAAKyyF,WAAY,EACjBzyF,KAAKmua,WAAY,EACjBnua,KAAK6xgB,WAAY,EAMjB7xgB,KAAK0zF,eAAiB,IAAI4yU,eAE1Btma,KAAK23iB,iBAAmB,QAKxB33iB,KAAK43iB,oBAAqB,EAG1Btmd,YACA,OAAOtxF,KAAK0xF,QAAU1xF,KAAK03iB,cAAcpmd,MAEzCA,UAAMkhS,IACNxyX,KAAK0xF,OAAS8gS,GAGdxuW,YACA,OAAOhkB,KAAKgmK,OAEZhiJ,UAAMwuW,IACFxyX,KAAK2sF,WACJ3sF,KAAK03iB,cAAct3C,YAAY5tI,GAAUxyX,KAAKgkB,QAC/ChkB,KAAK43iB,qBACL53iB,KAAK2sF,UAAW,GAEpB3sF,KAAKgmK,OAASwsN,GAGdllW,eACA,OAAOttB,KAAKmua,WAAcnua,KAAK03iB,eAAiB13iB,KAAK03iB,cAAcpqhB,SAEnEA,aAAStJ,IACT,MAAMwuW,IAAW2rC,QAAsBn6Y,IACnCwuW,KAAaxyX,KAAKmua,YAClBnua,KAAKmua,UAAY37C,GACjBxyX,KAAKkrgB,gBAAgBtxT,gBAIzBjtH,eACA,OAAO3sF,KAAK03iB,cAAcv2C,gBAAgBx/Z,WAAW3hG,MAErD2sF,aAAS3oE,IACT,MAAM29E,IAAaw8T,QAAsBn6Y,IACrC29E,KAAe3hG,KAAKyyF,YACpBzyF,KAAKkhgB,aAAav/Z,KACdA,IAAc3hG,KAAK03iB,cAAc11R,WACjChiR,KAAK03iB,cAAcG,sBAI/Br1iB,WACI,MAAM0hH,GAAOlkH,KAAK03iB,cACdxzb,GAAK8hD,QAAU9hD,GAAK8hD,OAAOx9B,KAAKxkH,IAASkgG,GAAKk8Y,YAAYpggB,KAAKgmK,OAAQhiJ,MACvEhkB,KAAKkhgB,cAAa,GAEtB,MAAM42C,GAAc93iB,KAAKyyF,UAMzB4kB,QAAQi2O,UAAU51O,KAAK,MACf13G,KAAKyyF,WAAaqld,MAClB93iB,KAAK2sF,UAAW,EAChB3sF,KAAKkrgB,gBAAgBtxT,kBAG7B55M,KAAK43iB,oBAAqB,EAE9BjyR,sBACImhR,QAAS9miB,KAAK+miB,OAAQ/miB,KAAK07Z,UAE/BxyZ,cACQlJ,KAAK2sF,UAGL0qB,QAAQi2O,UAAU51O,KAAK,KACnB13G,KAAK2sF,UAAW,IAGxB,MAAMord,GAAW/3iB,KAAK6xgB,UAChBmmC,GAAgBh4iB,KAAK03iB,cAAcO,sBAAsBj4iB,MAE3D+3iB,IAAYC,IACZA,GAAclliB,QAItBsqF,SACIp9F,KAAK2sF,UAAY3sF,KAAK2sF,SAG1B75E,QACI9S,KAAK07Z,SAAS7oZ,cAAcC,QAMhCqlZ,WACI,OAAOn4Z,KAAKk4iB,OAAQl4iB,KAAKk4iB,MAAMrliB,cAAcyuG,aAAe,GAGhEosZ,oBACI,OAAO1tgB,KAAKstB,UAAYttB,KAAK2tgB,eAAiB3tgB,KAAK03iB,cAAc/pC,cAErElF,gBACSzogB,KAAKstB,WAAattB,KAAK03iB,cAAc11R,WAAahiR,KAAK2sF,YACxD3sF,KAAKo9F,SAELp9F,KAAK03iB,cAAcxtI,iBAAiB,CAAClqa,QAG7CwogB,eACIxogB,KAAK03iB,cAAcS,kBAAkBn4iB,MACrCA,KAAK6xgB,WAAY,EAErBumC,cACIp4iB,KAAK03iB,cAAchxC,aACnB1mgB,KAAK6xgB,WAAY,EAGrB1H,kBACI,OAAOnqgB,KAAK07Z,SAAS7oZ,cAGzBquf,aAAav0a,IACT,OAAIA,KAAa3sF,KAAKyyF,YAGtBzyF,KAAKyyF,UAAY9F,GACjBx8B,GACInwD,KAAK03iB,cAAcv2C,gBAAgB/ob,OAAOp4E,MAG1CA,KAAK03iB,cAAcv2C,gBAAgBh3F,SAASnqa,MAEhDA,KAAK0zF,eAAe/iE,KAAKg8D,IACzB3sF,KAAKkrgB,gBAAgBtxT,gBACd,GAOX0xT,gBACItrgB,KAAKkrgB,gBAAgBtxT,gBAG7By+V,GAAct5d,UAAd,4BAA0Gs5d,IA5Xbp5d,8BA4X4CA,cA5X5CA,8BA4XsEA,qBA5XtEA,+BA4XuGwlX,gBAAW,IAAMgzG,OACrNY,GAAcz4d,UA7X+EX,8BA6X7F,MAA8Fo5d,GAA9F30iB,4EA7X6Fu7E,2BA6X7F7uB,GAA0hC2mf,EAA1hC,GA7X6F93d,2BA6X7F7uB,GAA2nC4mf,EAA3nC,GA7X6F/3d,2BA6X7F7uB,GAA8sC4qd,KAA9sC,gBA7X6F/7b,2BA6X7F5uB,EA7X6F4uB,6BA6X7Fz2D,oBA7X6Fy2D,2BA6X7F5uB,EA7X6F4uB,6BA6X7Fz2D,kBA7X6Fy2D,2BA6X7F5uB,EA7X6F4uB,6BA6X7Fz2D,kDA7X6Fy2D,wBA6X7Fx9E,kBA7X6Fw9E,2BA6X7F7uB,GA7X6F6uB,6BA6X7Fz2D,uCAAqX,SAArX,0GA7X6Fy2D,uBA6X7F,0BAA8Fz2D,mBA7XDy2D,CA6X7F,yBAA8Fz2D,kBA7XDy2D,CA6X7F,0BAA8Fz2D,oBAA9F,OA7X6Fy2D,wBA6X7F,4BA7X6FA,CA6X7F,4BA7X6FA,CA6X7F,eA7X6FA,wBA6X7F,qCA7X6FA,CA6X7F,iDA7X6FA,CA6X7F,mCA7X6FA,CA6X7F,qDA7X6FA,CA6X7F,6BA7X6FA,CA6X7F,2SA7X6FA,wCA6X7Fc,6VA7X6Fd,4BA6X7Ft9D,GA7X6Fs9D,2BA6X4zC,WA7X5zCA,sBA6Xg7C,WA7Xh7CA,uBA6X+kD,iCA7X/kDA,2BA6XuvD,aA7XvvDA,yBA6X0xD,GA7X1xDA,oDA6X+zD,KA7X/zDA,4BA6X7F,OA7X6FA,wBA6Xo2C,8DA7Xp2CA,sBA6Xy+C,GA7Xz+CA,uBA6Xy+C,wCA7Xz+CA,CA6Xy+C,4CA7Xz+CA,sBA6X0mD,GA7X1mDA,uBA6X0mD,oCAAvsDuhM,YAA2iE9gM,KAA8GA,KAAiPsmX,MAA14E3rL,oCAyDA,iBAA+Bi9R,GAC3Bz3iB,YAAY67Z,GAEZ3pS,GAAUm5Y,GAEV9kG,GACIz6Y,QACA3rB,KAAK07Z,SAAWA,GAChB17Z,KAAKkrgB,gBAAkBA,GACvBlrgB,KAAKoma,cAAgBA,EACrBpma,KAAK0pa,WAAY,EACjB1pa,KAAKs4iB,qBAAsB,EAE3Bt4iB,KAAKq6M,gBAAkB,IAAIisN,eAK3Btma,KAAK+xH,SAAW,EAEhB/xH,KAAKsxF,MAAQ,SAMbtxF,KAAKoggB,YAAc,CAACr4M,GAAIC,KAAOD,KAAOC,GACtChoT,KAAKmua,WAAY,EAEjBnua,KAAKmhgB,gBAAkB,IAAIsK,KAAezrgB,KAAK0pa,WAE/C1pa,KAAKu1gB,WAAY,EAEjBv1gB,KAAKq5f,UAAahqL,OAElBrvU,KAAKsib,WAAa,IAAIvma,KAEtB/b,KAAK0mgB,WAAa,MAAM,CAGxBp5e,eACA,OAAOttB,KAAKmua,UAEZ7gZ,aAAStJ,IACThkB,KAAKmua,WAAYhQ,QAAsBn6Y,IAKvChkB,KAAKu4iB,uBAGLv2R,eACA,OAAOhiR,KAAK0pa,UAEZ1nJ,aAASh+P,IACT,MAAMwuW,IAAW2rC,QAAsBn6Y,IACnCwuW,KAAaxyX,KAAK0pa,YACd1pa,KAAKs4iB,oBAGTt4iB,KAAK0pa,UAAYl3C,GACjBxyX,KAAKmhgB,gBAAkB,IAAIsK,KAAezrgB,KAAK0pa,UAAW1pa,KAAKmhgB,gBAAgBx0a,WAGvFg5L,qBACI,IAAIkwC,GACJ71T,KAAKs4iB,qBAAsB,EAC3Bt4iB,KAAKykgB,YAAc,IAAI6R,KAAgBt2gB,KAAKmiR,SACvCu1I,WACAM,gBACAK,iBAGAZ,cAAc,KAAM,GACpBM,wBAAwB,CAAC,aAC1B/3Z,KAAKgmK,QACLhmK,KAAKw4iB,sBAAsBx4iB,KAAKgmK,QAGpChmK,KAAKykgB,YAAYrtG,OAAO/uZ,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU,KAC/DnG,KAAKu0gB,sBAGTv0gB,KAAKmiR,QAAQ3iM,QAAQn3E,MAAK86a,OAAU,OAAOld,OAAUjma,KAAKsib,aAAan8a,UAAU,KAC7EnG,KAAKw2gB,oBAGTx2gB,KAAKmhgB,gBAAgB/jY,QAAQ/0H,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU4+E,KACpE,GAAIA,GAAM6oM,MACN,QAAS/jP,MAAQk7C,GAAM6oM,MACnB/jP,GAAK8iD,UAAW,EAGxB,GAAI5H,GAAM+oM,QACN,QAASjkP,MAAQk7C,GAAM+oM,QACnBjkP,GAAK8iD,UAAW,IAKE,QAA7BkpO,GAAK71T,KAAKoma,qBAAkC,IAAPvwG,IAAyBA,GAAGuuG,QAAQpka,KAAK07Z,UAAUrzZ,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU6tS,KAChI,IAAI6hB,GACJ,GAAe,aAAX7hB,IAAoC,YAAXA,GAAsB,CAC/C,IAAIykQ,EAAU,EACd,QAASv4iB,GAAI,EAAGA,GAAIF,KAAKmiR,QAAQ3+Q,OAAQtD,KACrC,GAAmC,QAA9B21T,GAAK71T,KAAKmiR,QAAQthR,IAAIX,WAAuB,IAAP21T,QAAgB,EAASA,GAAGlpO,SAAU,CAC7E8rd,EAAUv4iB,GACV,MAGRF,KAAKykgB,YAAYrsG,cAAcqgJ,MAI3CrkhB,YAAYorD,IACR,MAAMk5d,GAAuBl5d,GAAQmub,cAC/BgrC,GAAen5d,GAAQ8R,OACxBond,KAAyBA,GAAqBl6I,aAC9Cm6I,KAAiBA,GAAan6I,cAC/Bx+Z,KAAKu4iB,uBAGbrviB,cACI,IAAI2sT,GAE0B,QAA7BA,GAAK71T,KAAKoma,qBAAkC,IAAPvwG,IAAyBA,GAAGgvG,eAAe7ka,KAAK07Z,UACtF17Z,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAChB7Z,KAAK44iB,cAAe,EAGxB9liB,MAAMqvQ,IACFniR,KAAK07Z,SAAS7oZ,cAAcC,MAAMqvQ,IAGtCv2L,YACI,OAAO5rF,KAAK64iB,wBAAuB,GAGvC9iW,cACI,OAAO/1M,KAAK64iB,wBAAuB,GAGvCV,kBAAkB10C,IACdzjgB,KAAKykgB,YAAYlsG,iBAAiBkrG,IAMtCw0C,sBAAsBx0C,IAClB,MAAMwb,GAAcj/gB,KAAK84iB,gBAAgBr1C,IACzC,OAAIwb,IAAc,GAAMj/gB,KAAKykgB,YAAYjrG,kBAAoBylH,KAErDA,GAAc,EACdj/gB,KAAKykgB,YAAYlsG,iBAAiB0mH,GAAc,GAE3B,IAAhBA,IAAqBj/gB,KAAKmiR,QAAQ3+Q,OAAS,GAChDxD,KAAKykgB,YAAYlsG,iBAAiB9wY,KAAK+2C,IAAIygd,GAAc,EAAGj/gB,KAAKmiR,QAAQ3+Q,OAAS,KAGnFxD,KAAKykgB,YAAYhrG,WAG5B66G,SAASvvb,IACL,MAAMpxE,GAAUoxE,GAAMpxE,QAChBoliB,GAAU/4iB,KAAKykgB,YACfu0C,EAAqBD,GAAQv/I,gBAC7BwuG,IAAc3uG,QAAet0U,IACnC,OAAQpxE,SACC0/f,UACAjnH,MACI47G,KAAgB+wC,GAAQr/I,aACzB15Z,KAAKi5iB,uBAELl0d,GAAM36C,kBAEV,cAGA,GAAIz2B,KAAYlQ,KACZzD,KAAKgiR,WACLq3I,QAAet0U,GAAO,aACrBg0d,GAAQr/I,WAAY,CACrB,MAAMw/I,GAAel5iB,KAAKmiR,QAAQ35I,KAAKi7X,KAAWA,GAAOn2e,WAAam2e,GAAO92a,UAC7E3sF,KAAK64iB,uBAAuBK,IAAc,GAAM,GAChDn0d,GAAM36C,sBAGN2ugB,GAAQhyd,UAAUhC,IAG1B/kF,KAAKgiR,WACJruQ,KAAYklZ,MAAYllZ,KAAYglZ,OACrC5zU,GAAMuvL,UACNykS,GAAQv/I,kBAAoBw/I,GAC5Bh5iB,KAAKi5iB,uBAIbpB,qBAII,GAAI73iB,KAAKmiR,UAAYniR,KAAK44iB,aAAc,CACpC,MAAM50hB,GAAQhkB,KAAKm5iB,2BACnBn5iB,KAAKq5f,UAAUr1e,IACfhkB,KAAKgmK,OAAShiJ,IAItBkmZ,iBAAiB/nJ,IACbniR,KAAKq6M,gBAAgB1pL,KAAK,IAAIyohB,GAAuBp5iB,KAAMmiR,GAAQ,GAAIA,KAG3EpkL,WAAW1L,IACPryF,KAAKgmK,OAAS3zE,GACVryF,KAAKmiR,SACLniR,KAAKw4iB,sBAAsBnmd,IAAU,IAI7C++L,iBAAiB74G,IACbv4K,KAAKstB,SAAWirJ,GAGpBr6E,iBAAiBp6D,IACb9jC,KAAKq5f,UAAYv1d,GAGrBs6D,kBAAkBt6D,IACd9jC,KAAK0mgB,WAAa5ie,GAGtB00gB,sBAAsBnmd,IAClBryF,KAAKmiR,QAAQ55Q,QAAQk7f,IAAUA,GAAOvC,cAAa,IACnD7ua,GAAO9pF,QAAQyb,KACX,MAAMoof,GAAsBpsgB,KAAKmiR,QAAQn/Q,KAAKyggB,IAGnCA,EAAO92a,UAAmB3sF,KAAKoggB,YAAYqD,EAAOz/e,MAAOA,KAEhEoof,IACAA,GAAoBlL,cAAa,KAK7Ci4C,2BACI,OAAOn5iB,KAAKmiR,QAAQz7Q,OAAO+8f,IAAUA,GAAO92a,UAAU15D,IAAIwwe,IAAUA,GAAOz/e,OAG/Ei1hB,uBACI,IAAII,GAAer5iB,KAAKykgB,YAAYjrG,gBACpC,GAAoB,MAAhB6/I,IAAwBr5iB,KAAKk3gB,cAAcmiC,IAAe,CAC1D,IAAIC,GAAgBt5iB,KAAKmiR,QAAQt+B,UAAUw1T,IACvCC,KAAkBA,GAAchshB,WAAattB,KAAK0pa,YAAc4vI,GAAc3sd,YAC9E2sd,GAAcl8c,SAGdp9F,KAAKkqa,iBAAiB,CAACovI,OAQnCT,uBAAuBl3c,GAAY43c,GAAc3tC,IAG7C,MAAM4tC,EAAiB,GACvB,YAAKr3R,QAAQ55Q,QAAQk7f,OACX81C,KAAiB91C,GAAOn2e,WAAam2e,GAAOvC,aAAav/Z,KAC3D63c,EAAer2iB,KAAKsggB,MAGxB+1C,EAAeh2iB,SACfxD,KAAK63iB,qBACDjsC,IACA5rgB,KAAKkqa,iBAAiBsvI,IAGvBA,EAOXtiC,cAAcvke,IACV,OAAOA,IAAS,GAAKA,GAAQ3yC,KAAKmiR,QAAQ3+Q,OAG9Cs1iB,gBAAgBr1C,IACZ,OAAOzjgB,KAAKmiR,QAAQt+B,UAAUzyO,QAAQqyf,IAG1C80C,uBACQv4iB,KAAKmiR,SACLniR,KAAKmiR,QAAQ55Q,QAAQk7f,IAAUA,GAAO6H,iBAQ9CiJ,oBACIv0gB,KAAKu1gB,WAAY,EACjB1ngB,WAAW,KACP7N,KAAKu1gB,UAAY,EACjBv1gB,KAAKkrgB,gBAAgBtxT,iBAI7B48T,kBACIx2gB,KAAKu1gB,UAAoC,IAAxBv1gB,KAAKmiR,QAAQ3+Q,QAAe,EAAK,GAG1Di0iB,GAAiB14d,UAAjB,4BAA6G04d,IAvvBhBx4d,8BAuvBkDA,cAvvBlDA,8BAuvB4E,YAvvB5EA,8BAuvBoHA,qBAvvBpHA,8BAuvBqJ6kW,QAClP2zH,GAAiB73d,UAxvB4EX,8BAwvB7F,MAAiGw4d,GAAjG/ziB,8EAxvB6Fu7E,2BAwvB7F7uB,GAAitBiof,GAAjtB,eAxvB6Fp5d,2BAwvB7F5uB,EAxvB6F4uB,6BAwvB7Fz2D,kCAA4X,UAA5X,sFAxvB6Fy2D,uBAwvB7F,6BAAiGz2D,iBAAjG,MAxvB6Fy2D,wBAwvB7F,mCAxvB6FA,CAwvB7F,uCAxvB6FA,CAwvB7F,yPAxvB6FA,+BAwvB+hB,CAACu4d,KAxvBhiBv4d,yEAwvB7Fc,oEAxvB6Fd,uDAwvB8vB,KAA31Be;;;;;;;;AAwCA,UAEAy5d,GAAc16d,UAAd,4BAA0G06d,KAC1GA,GAAcv5d,UAnyB+EjB,6BAmyB7F,MAA2Gw6d,KAmB3GA,GAAct5d,UAtzB+ElB,6BAszB7F,UAAoI,CAACg8b,KAAehO,KAAiB7sb,KAAiB89b,KAAyBrgD,MAAeo9C,KACtN76b,KACA89b,KACAgf;;;;;;;;;;;;;;;;;;;;;kCC7tB8Fj+c,wDAwLiyB,WAxLjyBA,sBAwLs5B,eAxLt5BA,wIAgmB+R,WAhmB/RA,uBAgmB2X,uBAhmB3XA,iCAgmB2XlxC,IAAY17B,EAhmBvY4sE,0BAgmBuY8ob,oBAhmBvY9ob,CAgmB2X,mBAhmB3XA,iCAgmB2XlxC,IAAoD17B,EAhmB/a4sE,0BAgmB+a7c,YAAY,UAhmB3b6c,CAgmB2X,oCAhmB3XA,iCAgmB2XlxC,IAAwJ17B,EAhmBnhB4sE,0BAgmBmhBk6c,uBAhmBnhBl6c,CAgmB2X,mCAhmB3XA,iCAgmB2XlxC,IAAiN17B,EAhmB5kB4sE,0BAgmB4kB+5c,uBAhmB5kB/5c,2BAgmBkzB,WAhmBlzBA,yBAgmB01B,GAhmB11BA,kGAgmBuU,gBAhmBvUA,CAgmBuU,wBAhmBvUA,CAgmBuU,0CAhmBvUA,wBAgmBopB,gCAhmBppBA,CAgmBopB,0CAhmBppBA,CAgmBopB,8CAntB1vB,MAAMy6d,EAAoB,CAStBC,eAAetvd,QAAQ,gBAAiB,EACpCsjQ,QAAM,QAAQ56T,QAAM,CAChB+3Q,QAAS,EACT5tR,UAAW,iBAEfmwgB,QAAW,iBAAiBjuQ,QAAQ,oCAAoCrsP,QAAM,CAC1E+3Q,QAAS,EACT5tR,UAAW,gBAEfmwgB,QAAW,aAAajuQ,QAAQ,qBAAqBrsP,QAAM,CAAE+3Q,QAAS,QAM1E8uQ,aAAavvd,QAAQ,cAAe,EAGhCsjQ,QAAM,WAAW56T,QAAM,CAAE+3Q,QAAS,MAClCuiP,QAAW,YAAa,EACpBt6f,QAAM,CAAE+3Q,QAAS,KACjB1rB,QAAQ,qDA6Bdy6R,IApBcH,EAAkBE,YAMhBF,EAAkBC,cAcf,IAAIlxZ,iBAAe;;;;;;;SAC5C,SACI5oJ,YAAYkpc,GAAWhP,GAA2BY,GAASV,GAAW75R,GAAmBhhF,GAAW+iW,IAChGnib,KAAK+oc,UAAYA,GACjB/oc,KAAK+5b,0BAA4BA,GACjC/5b,KAAK26b,QAAUA,GACf36b,KAAKi6b,UAAYA,GACjBj6b,KAAKogK,kBAAoBA,GACzBpgK,KAAKo/E,UAAYA,GACjBp/E,KAAKmib,mBAAqBA,GAE1Bnib,KAAK85iB,UAAY,IAAI/9hB,KAMzBysE,OAAO83E,GAAU,IACb,IAAIu1J,GACC71T,KAAKqpgB,UACNrpgB,KAAKqpgB,QAAU,IAAIntE,KAAel8b,KAAK+oc,UAAW/oc,KAAKogK,oBAE3DpgK,KAAK8oa,SACA9oa,KAAK+5iB,UACN/5iB,KAAK+5iB,QAAU,IAAIl/G,KAAgB76b,KAAKo/E,UAAU14C,cAAc,OAAQ1mC,KAAK+5b,0BAA2B/5b,KAAK26b,QAAS36b,KAAKi6b,YAE/H,MAAMr6V,GAAU5/F,KAAK+oc,UAAU7pX,WAAWrsE,cAI1C+sF,GAAQiqP,WAAWz3C,aAAapyS,KAAK+5iB,QAAQj5G,cAAelhW,IAOzB,QAAlCi2N,GAAK71T,KAAKmib,0BAAuC,IAAPtsH,IAAyBA,GAAGj8G,eACvE55M,KAAKqpgB,QAAQ7gb,OAAOxoF,KAAK+5iB,QAASz5Y,IAClCtgK,KAAK85iB,UAAUv4hB,OAMnBunZ,SACQ9oa,KAAKqpgB,QAAQntd,YACbl8C,KAAKqpgB,QAAQvgG,SAGrB5/Z,cACQlJ,KAAK+5iB,SACL/5iB,KAAK+5iB,QAAQ5yd,WAIzB6yd,GAAoBj7d,UAApB,4BAAgHi7d,IAAV/6d,8BAA+CA,eAA/CA,8BAA0EA,4BAA1EA,8BAAkHA,kBAAlHA,8BAAgJA,YAAhJA,8BAAwKA,oBAAxKA,8BAAwMU,MAAxMV,8BAA6NA,uBACnU+6d,GAAoBh7d,UADkFC,8BACtG,MAAoG+6d,KAYpG,iBAA6BA,IAE7BC,GAAel7d,UAAf,qDAfsGE,kCAeKg7d,MAA3GlsgB,IAA2GksgB,KAA3G,GACAA,GAAej7d,UAhBuFC,8BAgBtG,MAA+Fg7d,GAA/Fv2iB,0DAhBsGu7E,+BAgB6D,CAAC,CAAEoJ,QAASwxd,GAAkBr7c,YAAay7c,MAhBxGh7d;;;;;;;;AAkFtG,MAAMi7d,GAAiB,IAAIzxZ,iBAAe,kBAIpC0xZ,IAAmBx2C,SAAmByJ,QAAc,UAK1D,iBAA0B+sC,GACtBt6iB,YAAYg/E,GAAaO,GAAWgnV,GAAeg0I,GAAaj4H,IAC5D,IAAItsH,GACJlqS,QACA3rB,KAAK6+E,YAAcA,GACnB7+E,KAAKo/E,UAAYA,GACjBp/E,KAAKoma,cAAgBA,GACrBpma,KAAKo6iB,YAAcA,GACnBp6iB,KAAKmib,mBAAqBA,GAE1Bnib,KAAK4oR,KAAO,WAEZ5oR,KAAKq6iB,SAAW,IAAIt+hB,KAEpB/b,KAAKs6iB,SAAW,IAAIv+hB,KAEpB/b,KAAKu6iB,cAAe,EAEpBv6iB,KAAKw6iB,kBAAmB,EACiE,QAAxF3kP,GAAqB,MAAhBukP,QAAiD,EAASA,GAAY58Q,eAA4B,IAAPq4B,IAAyBA,GAAG3rS,KAAKkwhB,GAAap6iB,MAGnJ8S,MAAMkhS,GAAQ7xB,IACNniR,KAAKoma,eAAiBpyH,GACtBh0S,KAAKoma,cAAcnB,SAASjla,KAAKmqgB,kBAAmBn2N,GAAQ7xB,IAG5DniR,KAAKmqgB,kBAAkBr3f,MAAMqvQ,IAEjCniR,KAAKs6iB,SAAS/4hB,KAAKvhB,MAEvB4S,kBACQ5S,KAAKoma,eAILpma,KAAKoma,cAAchC,QAAQpka,KAAK6+E,aAAa,GAGrD31E,cACQlJ,KAAKoma,eACLpma,KAAKoma,cAAcvB,eAAe7ka,KAAK6+E,aAEvC7+E,KAAKo6iB,aAAep6iB,KAAKo6iB,YAAY91S,YACrCtkQ,KAAKo6iB,YAAY91S,WAAWtkQ,MAEhCA,KAAKq6iB,SAASxgiB,WACd7Z,KAAKs6iB,SAASzgiB,WAGlBilgB,eACI,OAAO9+gB,KAAKstB,SAAW,KAAO,IAGlC68e,kBACI,OAAOnqgB,KAAK6+E,YAAYhsE,cAG5B4niB,eAAe11d,IACP/kF,KAAKstB,WACLy3D,GAAM36C,iBACN26C,GAAMn6C,mBAId8vgB,oBACI16iB,KAAKq6iB,SAAS94hB,KAAKvhB,MAGvBm4Z,WACI,IAAItiG,GACJ,MAAMxrK,GAAQrqJ,KAAK6+E,YAAYhsE,cAAc07U,WAAU,GACjDosN,GAAQtwZ,GAAMnrD,iBAAiB,6BAErC,QAASh/F,GAAI,EAAGA,GAAIy6iB,GAAMn3iB,OAAQtD,KAC9By6iB,GAAMz6iB,IAAGwkR,SAEb,OAAqC,QAA5BmxC,GAAKxrK,GAAM/oC,mBAAgC,IAAPu0M,QAAgB,EAASA,GAAGzsS,SAAW,GAExFwxhB,gBAAgBC,IACZ,IAAIhlP,GAKJ71T,KAAKu6iB,aAAeM,GACe,QAAlChlP,GAAK71T,KAAKmib,0BAAuC,IAAPtsH,IAAyBA,GAAGj8G,eAE3Ei4T,YACI,OAAO7xgB,KAAKo/E,WAAap/E,KAAKo/E,UAAUmgV,gBAAkBv/Z,KAAKmqgB,mBAGvE2wC,GAAY/7d,UAAZ,4BAAwG+7d,IAvLF77d,8BAuL+BA,cAvL/BA,8BAuLyDU,MAvLzDV,8BAuL8ES,MAvL9ET,8BAuL0Gi7d,GAAhN,GAvLsGj7d,8BAuLqJA,uBAC3P67d,GAAYl7d,UAxL0FX,8BAwLtG,MAA4F67d,GAA5Fp3iB,uHAxLsGu7E,uBAwLtG,4BAA4FlxC,uBAxLUkxC,CAwLtG,+BAA4FlxC,yBAA5F,OAxLsGkxC,wBAwLtG,eAxLsGA,CAwLtG,6BAxLsGA,CAwLtG,uCAxLsGA,CAwLtG,8BAxLsGA,wBAwLtG,mBAxLsGA,CAwLtG,4CAxLsGA,CAwLtG,iKAxLsGA,wCAwLtG6iM,yWAxLsG7iM,uDAwL0mB,GAxL1mBA,sBAwLqoB,WAxLroBA,uBAwLiyB,kBAAv4B,OAxLsGA,sBAwLorB,GAxLprBA,uBAwLorB,kDAxLprBA,CAwLorB,yCAxLprBA,sBAwL0yB,GAxL1yBA,uBAwL0yB,8BAAh5BuhM,YAA8jCwlL,KAAiPliB,MAA/yCzpK;;;;;;;;AAqCA,MAAM0gS,GAA2B,IAAItyZ,iBAAe,2BAA4B,CAC5EC,WAAY,OACZrmJ,QAGJ,aACI,MAAO,CACH24iB,gBAAgB,EAChBlsB,UAAW,QACXC,UAAW,QACXnjG,cAAe,uCAGvB,IAAIqvH,GAAe,EAEnB,SACIp7iB,YAAYg/E,GAAa+8U,GAASmG,GAElCogB,IACInib,KAAK6+E,YAAcA,GACnB7+E,KAAK47Z,QAAUA,GACf57Z,KAAK+ha,gBAAkBA,GACvB/ha,KAAKmib,mBAAqBA,GAC1Bnib,KAAKk7iB,WAAal7iB,KAAK+ha,gBAAgB+sH,UACvC9uhB,KAAKm7iB,WAAan7iB,KAAK+ha,gBAAgBgtH,UAEvC/uhB,KAAKo7iB,uBAAyB,IAAI/jJ,YAElCr3Z,KAAKq7iB,iBAAmBvkJ,UAExB92Z,KAAKokgB,WAAa,GAElBpkgB,KAAKs7iB,qBAAuB,OAE5Bt7iB,KAAK+thB,eAAiB,IAAIhygB,KAE1B/b,KAAKypgB,kBAAoBzpgB,KAAK+ha,gBAAgB0nG,mBAAqB,GAEnEzpgB,KAAK4rb,cAAgB5rb,KAAK+ha,gBAAgB6pB,cAC1C5rb,KAAKu7iB,gBAAkBv7iB,KAAK+ha,gBAAgBi5I,eAC5Ch7iB,KAAKs7b,aAAet7b,KAAK+ha,gBAAgBroS,YAEzC15H,KAAKoiE,OAAS,IAAIkkW,eAMlBtma,KAAK6C,MAAQ7C,KAAKoiE,OAClBpiE,KAAKw7iB,QAAW,kBAAiBP,KAGjCnsB,gBACA,OAAO9uhB,KAAKk7iB,WAEZpsB,cAAU9qgB,IAMVhkB,KAAKk7iB,WAAal3hB,GAClBhkB,KAAKy7iB,qBAGL1sB,gBACA,OAAO/uhB,KAAKm7iB,WAEZpsB,cAAU/qgB,IAIVhkB,KAAKm7iB,WAAan3hB,GAClBhkB,KAAKy7iB,qBAGLT,qBACA,OAAOh7iB,KAAKu7iB,gBAEZP,mBAAeh3hB,IACfhkB,KAAKu7iB,iBAAkBp9I,QAAsBn6Y,IAG7C01G,kBACA,OAAO15H,KAAKs7b,aAEZ5hU,gBAAY11G,IACZhkB,KAAKs7b,cAAen9B,QAAsBn6Y,IAQ1C/P,eAAWs0C,IACX,MAAMmzf,GAAqB17iB,KAAK27iB,oBAC5BD,IAAsBA,GAAmBl4iB,QACzCk4iB,GAAmBvyhB,MAAM,KAAK5gB,QAASgrQ,KACnCvzQ,KAAKokgB,WAAW7wP,KAAa,IAGrCvzQ,KAAK27iB,oBAAsBpzf,GACvBA,IAAWA,GAAQ/kD,SACnB+kD,GAAQp/B,MAAM,KAAK5gB,QAASgrQ,KACxBvzQ,KAAKokgB,WAAW7wP,KAAa,IAEjCvzQ,KAAK6+E,YAAYhsE,cAAc0gQ,UAAY,IAU/Cw3I,gBACA,OAAO/qZ,KAAKiU,WAEZ82Y,cAAUxiW,IACVvoD,KAAKiU,WAAas0C,GAEtB/lD,WACIxC,KAAKy7iB,qBAET91R,qBACI3lR,KAAK47iB,2BACL57iB,KAAKykgB,YAAc,IAAI6R,KAAgBt2gB,KAAKo7iB,wBACvC1jJ,WACAM,gBACAK,iBACLr4Z,KAAKq7iB,iBAAmBr7iB,KAAKykgB,YAAYrtG,OAAOjxZ,UAAU,IAAMnG,KAAKoiE,OAAOzxC,KAAK,QAIjF3wB,KAAKo7iB,uBAAuB57d,QACvBn3E,MAAK86a,OAAUnjb,KAAKo7iB,yBAAyB91H,OAAU5wH,KAASkwE,UAASlwE,GAAMzhS,IAAK4W,IAASA,GAAKywgB,aAClGn0iB,UAAU01iB,IAAe77iB,KAAKykgB,YAAYlsG,iBAAiBsjJ,KAChE77iB,KAAKo7iB,uBAAuB57d,QAAQr5E,UAAW21iB,KAC3C,IAAIjmP,GAIJ,MAAMkjP,GAAU/4iB,KAAKykgB,YACrB,GAAkC,UAA9BzkgB,KAAKs7iB,uBAAmE,QAA7BzlP,GAAKkjP,GAAQt/I,kBAA+B,IAAP5jG,QAAgB,EAASA,GAAGg8M,aAAc,CAC1H,MAAMn9M,GAAQonP,GAAUj4T,UAClBlxM,GAAQlrB,KAAKqgB,IAAI,EAAGrgB,KAAK+2C,IAAIk2P,GAAMlxT,OAAS,EAAGu1iB,GAAQv/I,iBAAmB,IAC5E9kG,GAAM/hR,MAAW+hR,GAAM/hR,IAAOrlB,SAC9ByrhB,GAAQ3gJ,cAAczlX,IAGtBomgB,GAAQngJ,uBAKxB1vZ,cACIlJ,KAAKo7iB,uBAAuBthS,UAC5B95Q,KAAKq7iB,iBAAiB1thB,cACtB3tB,KAAKoiE,OAAOvoD,WAGhBwgiB,WAGI,OAAO0B,KADkBX,uBAAuB57d,QAC7Bn3E,MAAK86a,OAAUnjb,KAAKo7iB,yBAAyB91H,OAAU5wH,KAASkwE,UAASlwE,GAAMzhS,IAAK4W,IAASA,GAAKwwgB,aAQzH78Q,QAAQw+Q,IAAO,CAOf13S,WAAW03S,IAAO,CAElBj0C,eAAehjb,IACX,MAAMpxE,GAAUoxE,GAAMpxE,QAChBoliB,GAAU/4iB,KAAKykgB,YACrB,OAAQ9wf,SACC04Y,MACIgN,QAAet0U,MAChBA,GAAM36C,iBACNpqC,KAAKoiE,OAAOzxC,KAAK,YAErB,WACCqoY,KACGh5Z,KAAKi8iB,YAAiC,QAAnBj8iB,KAAK8gJ,WACxB9gJ,KAAKoiE,OAAOzxC,KAAK,WAErB,WACCooY,KACG/4Z,KAAKi8iB,YAAiC,QAAnBj8iB,KAAK8gJ,WACxB9gJ,KAAKoiE,OAAOzxC,KAAK,WAErB,cAMA,OAJIhd,KAAYklZ,MAAYllZ,KAAYglZ,OACpCogJ,GAAQ3+I,eAAe,iBAE3B2+I,GAAQhyd,UAAUhC,IAK1BA,GAAMn6C,kBAMVsxgB,eAAeloQ,GAAS,WAEpBh0S,KAAK47Z,QAAQgC,SAASv1Z,MAAKi5Q,OAAK,IAAIn7Q,UAAU,KAC1C,IAAIg2iB,GAAY,KAShB,GARIn8iB,KAAKo7iB,uBAAuB53iB,SAK5B24iB,GAAYn8iB,KAAKo7iB,uBAAuBh6a,MAAM+oY,kBAAkB7qG,QAAQ,mBAGvE68I,KAAcA,GAAU/0d,SAAS3gD,SAAS84X,eAAgB,CAC3D,MAAMw5I,GAAU/4iB,KAAKykgB,YACrBs0C,GAAQ3+I,eAAepmH,IAAQklH,sBAI1B6/I,GAAQt/I,YAAc0iJ,IACvBA,GAAUrpiB,WAS1BspiB,kBACIp8iB,KAAKykgB,YAAYrsG,eAAc,GAMnCikJ,aAAa33M,IAGT,MAAM43M,GAAY70hB,KAAK+2C,IAAIx+D,KAAKu8iB,eAAiB73M,GAAO,IAClD83M,GAAgB,GAAEx8iB,KAAKy8iB,mBAAmBH,KAC1CI,GAAkBnzhB,OAAO+hB,KAAKtrC,KAAKokgB,YAAYphgB,KAAKuwQ,IAC/CA,GAAU9wP,WAAWziB,KAAKy8iB,qBAEhCC,IAAmBA,KAAoB18iB,KAAK28iB,sBACzC38iB,KAAK28iB,qBACL38iB,KAAKokgB,WAAWpkgB,KAAK28iB,qBAAsB,GAE/C38iB,KAAKokgB,WAAWo4C,KAAgB,EAChCx8iB,KAAK28iB,mBAAqBH,IAUlCf,mBAAmBxvN,GAAOjsV,KAAK8uhB,UAAW5iM,GAAOlsV,KAAK+uhB,WAClD,IAAIl5N,GACJ,MAAMttQ,GAAUvoD,KAAKokgB,WACrB77c,GAAQ,mBAA8B,WAAT0jS,GAC7B1jS,GAAQ,kBAA6B,UAAT0jS,GAC5B1jS,GAAQ,kBAA6B,UAAT2jS,GAC5B3jS,GAAQ,kBAA6B,UAAT2jS,GAEO,QAAlCr2B,GAAK71T,KAAKmib,0BAAuC,IAAPtsH,IAAyBA,GAAGj8G,eAG3EgjW,kBAEI58iB,KAAKs7iB,qBAAuB,QAGhCuB,kBAEI78iB,KAAKs7iB,qBAAuB,OAGhCtiB,iBAAiBj0c,IACb/kF,KAAK+thB,eAAexsgB,KAAKwjE,IACzB/kF,KAAK88iB,cAAe,EAExB3jB,kBAAkBp0c,IACd/kF,KAAK88iB,cAAe,EAOE,UAAlB/3d,GAAMk0c,SAA4D,IAArCj5hB,KAAKykgB,YAAYjrG,kBAC9Cz0U,GAAM6a,QAAQmyD,UAAY,GASlC6pZ,2BACI57iB,KAAK+8iB,UAAUv9d,QACVn3E,MAAK86a,OAAUnjb,KAAK+8iB,YACpB52iB,UAAWuuT,KACZ10T,KAAKo7iB,uBAAuBr7a,MAAM20L,GAAMhuT,OAAOmjC,IAAQA,GAAKuwgB,cAAgBp6iB,OAC5EA,KAAKo7iB,uBAAuB55D,qBAIxCw7D,GAAaj+d,UAAb,4BAAyGi+d,IAriBH/9d,8BAqiBiCA,cAriBjCA,8BAqiB2DA,UAriB3DA,8BAqiBiF87d,IAriBjF97d,8BAqiBsHA,uBAC5N+9d,GAAah+d,UAtiByFC,8BAsiBtG,MAA6F+9d,GAA7F10E,4CAtiBsGrpZ,2BAsiBtGjxC,GAA2kB6rgB,GAA3kB,GAtiBsG56d,2BAsiBtGjxC,GAA0pB8sgB,GAA1pB,GAtiBsG77d,2BAsiBtGjxC,GAAguB8sgB,GAAhuB,iBAtiBsG77d,2BAsiBtGhxC,GAtiBsGgxC,6BAsiBtGlxC,yBAtiBsGkxC,2BAsiBtGhxC,GAtiBsGgxC,6BAsiBtGlxC,iBAtiBsGkxC,2BAsiBtGhxC,GAtiBsGgxC,6BAsiBtGlxC,kDAtiBsGkxC,wBAsiB+sBglB,cAArzB,gBAtiBsGhlB,2BAsiBtGjxC,GAtiBsGixC,6BAsiBtGlxC,0ZAkDA,iBAAsBivgB,GAClBn9iB,YAAYq/E,GAAY0hV,GAAQuB,GAAgB68G,IAC5Crzf,MAAMuzD,GAAY0hV,GAAQuB,GAAgB68G,IAC1Ch/gB,KAAKy8iB,iBAAmB,kBACxBz8iB,KAAKu8iB,eAAiB,GAG9BU,GAAQl+d,UAAR,4BAAoGk+d,IA/lBEh+d,8BA+lBuBA,cA/lBvBA,8BA+lBiDA,UA/lBjDA,8BA+lBuE87d,IA/lBvE97d,8BA+lB4GA,uBAClNg+d,GAAQr9d,UAhmB8FX,8BAgmBtG,MAAwFg+d,GAAxFv5iB,uEAhmBsGu7E,wBAgmBtG,kBAhmBsGA,CAgmBtG,uBAhmBsGA,CAgmBtG,yDAhmBsGA,+BAgmBkJ,CAAC,CAAEoJ,QAAS6xd,GAAgB17c,YAAay+c,MAhmB3Lh+d,wCAgmBtGc,0LAhmBsGd,qDAgmB8Q,yBAApXuhM,YAAg5FsjK,MAAh5F9jW,m5DAAg+F,CAAC05d,EAAkBC,cAAeD,EAAkBE,cAAphG9/V;;;;;;;;AAuBA,MAAMojW,GAA2B,IAAIz0Z,iBAAe,4BAMpD,MAAM00Z,GAA4C,CAC9C90d,QAAS60d,GACT1wZ,KAAM,CAACsuS,MACPzkL,WAPJ,YAA0C9uL,IACtC,MAAO,IAAMA,GAAQuyW,iBAAiBthJ,eAWpCu0H,IAA8BrM,QAAgC,CAAE78F,SAAS,IAE/E,SACIhkU,YAAYu7b,GAAU1/B,GAAUt7P,GAAmBurR,GAAgBswH,GAGnEmB,GAAmBr1I,GAAM3B,GAAexK,IACpC57Z,KAAKo7b,SAAWA,GAChBp7b,KAAK07Z,SAAWA,GAChB17Z,KAAKogK,kBAAoBA,GACzBpgK,KAAKo9iB,kBAAoBA,GACzBp9iB,KAAK+na,KAAOA,GACZ/na,KAAKoma,cAAgBA,GACrBpma,KAAK47Z,QAAUA,GACf57Z,KAAKkqb,YAAc,KACnBlqb,KAAKq9iB,WAAY,EACjBr9iB,KAAKsngB,4BAA8BxwG,UACnC92Z,KAAKs9iB,mBAAqBxmJ,UAC1B92Z,KAAKu9iB,uBAAyBzmJ,UAK9B92Z,KAAKw9iB,kBAAqBz4d,MACjBu8U,QAAiCv8U,MAClC/kF,KAAKy9iB,UAAY,UAKzBz9iB,KAAKy9iB,eAAY7kM,EAMjB54W,KAAKyvhB,cAAe,EAEpBzvhB,KAAK09iB,WAAa,IAAIp3I,eAOtBtma,KAAK29iB,WAAa39iB,KAAK09iB,WAEvB19iB,KAAK49iB,WAAa,IAAIt3I,eAOtBtma,KAAK69iB,YAAc79iB,KAAK49iB,WACxB59iB,KAAKitb,gBAAkBtB,GACvB3rb,KAAK89iB,oBAAsB7B,cAAsBe,GAAef,QAAarjM,EAC7E8iD,GAAS7oZ,cAAc43P,iBAAiB,aAAczqQ,KAAKw9iB,kBAAmBzwI,IAC1EqwI,KACAA,GAAkB5C,iBAAmBx6iB,KAAK+9iB,mBAO9CC,mCACA,OAAOh+iB,KAAKi+iB,KAEZD,iCAA6B39iB,IAC7BL,KAAKi+iB,KAAO59iB,GAGZ49iB,WACA,OAAOj+iB,KAAKk+iB,MAEZD,SAAKA,IACDA,KAASj+iB,KAAKk+iB,QAGlBl+iB,KAAKk+iB,MAAQD,GACbj+iB,KAAKu9iB,uBAAuB5vhB,cACxBswhB,KACaj+iB,KAAK89iB,oBAGlB99iB,KAAKu9iB,uBAAyBU,GAAKp7iB,MAAMsD,UAAWg4iB,KAChDn+iB,KAAKo+iB,aAAaD,KAEF,UAAXA,IAAiC,QAAXA,KAAqBn+iB,KAAK89iB,qBACjD99iB,KAAK89iB,oBAAoB17e,OAAOzxC,KAAKwthB,QAKrDx4R,qBACI3lR,KAAKq+iB,aACLr+iB,KAAKs+iB,eAETp1iB,cACQlJ,KAAKkqb,cACLlqb,KAAKkqb,YAAY/iW,UACjBnnF,KAAKkqb,YAAc,MAEvBlqb,KAAK07Z,SAAS7oZ,cAAcm8P,oBAAoB,aAAchvQ,KAAKw9iB,kBAAmBzwI,IACtF/sa,KAAKu9iB,uBAAuB5vhB,cAC5B3tB,KAAKsngB,4BAA4B35e,cACjC3tB,KAAKs9iB,mBAAmB3vhB,cAGxB4whB,eACA,OAAOv+iB,KAAKq9iB,UAGZv/Z,UACA,OAAO99I,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,MAAkB,MAAQ,MAG5D+5hB,kBACI,SAAU/9iB,KAAKo9iB,oBAAqBp9iB,KAAK89iB,qBAG7CU,aACI,OAAOx+iB,KAAKq9iB,UAAYr9iB,KAAKy+iB,YAAcz+iB,KAAKoqF,WAGpDA,WACI,GAAIpqF,KAAKq9iB,UACL,OAEJr9iB,KAAKq+iB,aACL,MAAMn3d,GAAalnF,KAAKy8b,iBAClBjC,GAAgBtzW,GAAWknW,YAC3BhmW,GAAmBoyW,GAAcpyW,iBACvCpoF,KAAK0+iB,aAAat2d,IAClBoyW,GAAc9gU,YACe,MAAzB15H,KAAKi+iB,KAAKvkb,aAAuB15H,KAAK+9iB,kBAAoB/9iB,KAAKi+iB,KAAKvkb,YACxExyC,GAAWsB,OAAOxoF,KAAK2+iB,cACnB3+iB,KAAKi+iB,KAAKW,aACV5+iB,KAAKi+iB,KAAKW,YAAYp2d,OAAOxoF,KAAK6+iB,UAEtC7+iB,KAAKsngB,4BAA8BtngB,KAAK8+iB,sBAAsB34iB,UAAU,IAAMnG,KAAKy+iB,aACnFz+iB,KAAK++iB,YACD/+iB,KAAKi+iB,gBAAgBjB,KACrBh9iB,KAAKi+iB,KAAKrB,kBACV58iB,KAAKi+iB,KAAK7C,uBAAuB57d,QAAQn3E,MAAK49Z,OAAUjma,KAAKi+iB,KAAKp7iB,QAAQsD,UAAU,KAGhFiiF,GAAiBurW,oBAAmB,GAAO3C,sBAC3C5oW,GAAiBurW,oBAAmB,MAKhD8qH,YACIz+iB,KAAKi+iB,KAAKp7iB,MAAM8tB,OAMpB7d,MAAMkhS,GAAQ7xB,IACNniR,KAAKoma,eAAiBpyH,GACtBh0S,KAAKoma,cAAcnB,SAASjla,KAAK07Z,SAAU1nH,GAAQ7xB,IAGnDniR,KAAK07Z,SAAS7oZ,cAAcC,MAAMqvQ,IAM1CioK,iBACI,IAAIv0H,GACwB,QAA3BA,GAAK71T,KAAKkqb,mBAAgC,IAAPr0H,IAAyBA,GAAGu0H,iBAGpEg0H,aAAaD,IACT,IAAKn+iB,KAAKkqb,cAAgBlqb,KAAKu+iB,SAC3B,OAEJ,MAAMN,GAAOj+iB,KAAKi+iB,KAClBj+iB,KAAKsngB,4BAA4B35e,cACjC3tB,KAAKkqb,YAAYphB,SAKb9oa,KAAKyvhB,eAA4B,YAAX0uB,KAAyBn+iB,KAAKy9iB,YAAcz9iB,KAAK+9iB,oBACvE/9iB,KAAK8S,MAAM9S,KAAKy9iB,WAEpBz9iB,KAAKy9iB,eAAY7kM,EACjB7qU,cAAoBivgB,IAChBiB,GAAKpB,kBACL9ugB,GAAS6wgB,YAELX,GAAKlwB,eACA1lhB,MAAK3B,OAAOq+E,IAA2B,SAAlBA,GAAMk0c,UAAqB33Q,OAAK,IAE1D2kJ,OAAUg4I,GAAKW,YAAY9E,YACtB3ziB,UAAU,CACXob,KAAM,IAAM08hB,GAAKW,YAAY91I,SAE7BjvZ,SAAU,IAAM7Z,KAAKg/iB,gBAAe,KAIxCh/iB,KAAKg/iB,gBAAe,KAIxBh/iB,KAAKg/iB,gBAAe,GAChBf,GAAKW,aACLX,GAAKW,YAAY91I,UAQ7Bi2I,YACI/+iB,KAAKi+iB,KAAKhC,WAAaj8iB,KAAK+9iB,kBAAoB/9iB,KAAK89iB,yBAAsBllM,EAC3E54W,KAAKi+iB,KAAKn9Z,UAAY9gJ,KAAK89I,IAC3B99I,KAAKi/iB,oBACLj/iB,KAAKi+iB,KAAK/B,eAAel8iB,KAAKy9iB,WAAa,WAC3Cz9iB,KAAKg/iB,gBAAe,GAGxBC,oBACI,GAAIj/iB,KAAKi+iB,KAAK5B,aAAc,CACxB,IAAI33M,GAAQ,EACRu3M,GAAaj8iB,KAAKi+iB,KAAKhC,WAC3B,KAAOA,IACHv3M,KACAu3M,GAAaA,GAAWA,WAE5Bj8iB,KAAKi+iB,KAAK5B,aAAa33M,KAI/Bs6M,eAAepuR,IACX5wR,KAAKq9iB,UAAYzsR,GACjB5wR,KAAKq9iB,UAAYr9iB,KAAK09iB,WAAW/shB,OAAS3wB,KAAK49iB,WAAWjthB,OACtD3wB,KAAK+9iB,mBACL/9iB,KAAKo9iB,kBAAkBxC,gBAAgBhqR,IAO/CytR,aACSr+iB,KAAKi+iB,KAQdxhH,iBACI,IAAKz8b,KAAKkqb,YAAa,CACnB,MAAM7yX,GAASr3D,KAAKupgB,oBACpBvpgB,KAAKk/iB,sBAAsB7nf,GAAO+wB,kBAClCpoF,KAAKkqb,YAAclqb,KAAKo7b,SAASjzW,OAAO9wB,IAIxCr3D,KAAKkqb,YAAYgE,gBAAgB/nb,YAErC,OAAOnG,KAAKkqb,YAMhBq/E,oBACI,OAAO,IAAI9uE,KAAc,CACrBryW,iBAAkBpoF,KAAKo7b,SAClBjnb,WACAqzE,oBAAoBxnF,KAAK07Z,UACzBi4B,qBACAJ,oBACAQ,sBAAsB,wCAC3BnI,cAAe5rb,KAAKi+iB,KAAKryH,eAAiB,mCAC1C33a,WAAYjU,KAAKi+iB,KAAKx0C,kBACtB99E,eAAgB3rb,KAAKitb,kBACrBnsS,UAAW9gJ,KAAK+na,OAQxBm3I,sBAAsB/qiB,IACdnU,KAAKi+iB,KAAKxC,oBACVtniB,GAASu8a,gBAAgBvqb,UAAU4nR,KAC/B,MAAMk+D,GAA0C,UAAnCl+D,GAAOg+J,eAAe/jW,SAAuB,QAAU,SAC9DkkQ,GAA0C,QAAnCn+D,GAAOg+J,eAAe9jW,SAAqB,QAAU,QAI9DjoF,KAAK47Z,QACL57Z,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKi+iB,KAAKxC,mBAAmBxvN,GAAMC,KAG1DlsV,KAAKi+iB,KAAKxC,mBAAmBxvN,GAAMC,MAUnDwyN,aAAat2d,IACT,IAAKN,GAASq3d,IAA2C,WAAxBn/iB,KAAKi+iB,KAAKnvB,UAAyB,CAAC,MAAO,SAAW,CAAC,QAAS,QAC5F7mc,GAAUm3d,IAA4C,UAAxBp/iB,KAAKi+iB,KAAKlvB,UAAwB,CAAC,SAAU,OAAS,CAAC,MAAO,WAC5Fhnc,GAASs3d,IAAmB,CAACp3d,GAAUm3d,KACvCp3d,GAAUs3d,IAAoB,CAACx3d,GAASq3d,IACzCv3d,GAAU,EACV5nF,KAAK+9iB,mBAGLuB,GAAmBx3d,GAAkC,WAAxB9nF,KAAKi+iB,KAAKnvB,UAAyB,QAAU,MAC1EqwB,GAAkBn3d,GAAuB,QAAZF,GAAoB,QAAU,MAC3DF,GAAuB,WAAbK,GA3US,MA6UbjoF,KAAKi+iB,KAAKjD,iBAChBjzd,GAAuB,QAAbE,GAAqB,SAAW,MAC1Co3d,GAAuC,QAArBD,GAA6B,SAAW,OAE9Dh3d,GAAiBT,cAAc,CAC3B,CAAEG,WAASC,WAASC,YAAUC,YAAUL,YACxC,CAAEE,QAASq3d,GAAiBp3d,WAASC,SAAUs3d,GAAkBr3d,YAAUL,YAC3E,CACIE,WACAC,QAASs3d,GACTr3d,YACAC,SAAUm3d,GACVx3d,SAAUA,IAEd,CACIE,QAASq3d,GACTp3d,QAASs3d,GACTr3d,SAAUs3d,GACVr3d,SAAUm3d,GACVx3d,SAAUA,MAKtBk3d,sBACI,MAAM5vH,GAAWlvb,KAAKkqb,YAAY8D,gBAC5BC,GAAcjub,KAAKkqb,YAAY+D,cAC/BsxH,GAAcv/iB,KAAK89iB,oBAAsB99iB,KAAK89iB,oBAAoB17e,QAASkiW,UAC3Ek7I,GAAQx/iB,KAAK89iB,oBACb99iB,KAAK89iB,oBAAoBzD,WAAWhyiB,MAAK3B,OAAOy1I,IAAUA,KAAWn8I,KAAKo9iB,oBAAoB12iB,OAAO,IAAM1G,KAAKq9iB,aAChH/4I,UACN,OAAO1/B,OAAMsqD,GAAUqwH,GAAaC,GAAOvxH,IAG/CwxH,iBAAiB16d,KACRq8U,QAAgCr8U,MAGjC/kF,KAAKy9iB,UAA6B,IAAjB14d,GAAMo9O,OAAe,aAAUy2C,EAI5C54W,KAAK+9iB,mBACLh5d,GAAM36C,kBAKlB29d,eAAehjb,IACX,MAAMpxE,GAAUoxE,GAAMpxE,SAElBA,KAAYy4Y,MAASz4Y,KAAY0/f,QACjCrzgB,KAAKy9iB,UAAY,YAEjBz9iB,KAAK+9iB,oBACHpqiB,KAAYolZ,MAA4B,QAAb/4Z,KAAK89I,KAC7BnqI,KAAYqlZ,MAA2B,QAAbh5Z,KAAK89I,OACpC99I,KAAKy9iB,UAAY,WACjBz9iB,KAAKoqF,YAIbq+a,aAAa1jb,IACL/kF,KAAK+9iB,mBAELh5d,GAAMn6C,kBACN5qC,KAAKoqF,YAGLpqF,KAAKw+iB,aAIbF,gBAESt+iB,KAAK+9iB,oBAAsB/9iB,KAAK89iB,sBAGrC99iB,KAAKs9iB,mBAAqBt9iB,KAAK89iB,oBAC1BzD,WAIAhyiB,MAAK3B,OAAOy1I,IAAUA,KAAWn8I,KAAKo9iB,oBAAsBjha,GAAO7uH,WAAW2pF,OAAM,EAAGwvV,MACvFtgc,UAAU,KACXnG,KAAKy9iB,UAAY,QAIjBz9iB,KAASi+iB,gBAAgBjB,IAAgBh9iB,KAAKi+iB,KAAKnB,aAG/C98iB,KAAKi+iB,KAAKlwB,eACL1lhB,MAAKi5Q,OAAK,IAAIrqK,OAAM,EAAGwvV,MAAgBxgC,OAAUjma,KAAK89iB,oBAAoBzD,aAC1El0iB,UAAU,IAAMnG,KAAKoqF,YAG1BpqF,KAAKoqF,cAKjBu0d,aAII,QAAK3+iB,KAAKqpgB,SAAWrpgB,KAAKqpgB,QAAQl/O,cAAgBnqR,KAAKi+iB,KAAK9zR,eACxDnqR,KAAKqpgB,QAAU,IAAIntE,KAAel8b,KAAKi+iB,KAAK9zR,YAAanqR,KAAKogK,oBAE3DpgK,KAAKqpgB,SAGpBq2C,GAAoB3ge,UAApB,4BAAgH2ge,IAhkCVzge,8BAgkC+CkkV,MAhkC/ClkV,8BAgkCwEA,cAhkCxEA,8BAgkCkGA,oBAhkClGA,8BAgkCkIi+d,IAhkClIj+d,8BAgkCuKi7d,GAA7Q,GAhkCsGj7d,8BAgkCkN67d,GAAxT,IAhkCsG77d,8BAgkCsQ0ge,KAA5W,GAhkCsG1ge,8BAgkCsTS,MAhkCtTT,8BAgkCkVA,YACxbyge,GAAoB1ge,UAjkCkFC,8BAikCtG,MAAoGyge,GAApGr3E,2BAA4gB,QAA5gBhoN,8CAjkCsGphM,uBAikCtG,4BAAoGlxC,qBAjkCEkxC,CAikCtG,gCAAoGlxC,yBAjkCEkxC,CAikCtG,8BAAoGlxC,wBAApG,MAjkCsGkxC,wBAikCtG,kCAjkCsGA,CAikCtG,uYAmDA,iBAA6Byge,IAE7BE,GAAe7ge,UAAf,qDAtnCsGE,kCAsnCK2ge,MAA3G7xgB,IAA2G6xgB,KAA3G,GACAA,GAAe5ge,UAvnCuFC,8BAunCtG,MAA+F2ge,GAA/Fl8iB,8IAvnCsGu7E;;;;;;;;AA0oCtG,UAEA4ge,GAAc9ge,UAAd,4BAA0G8ge,KAC1GA,GAAc3/d,UA7oCwFjB,6BA6oCtG,MAA2G4ge,KAM3GA,GAAc1/d,UAnpCwFlB,6BAmpCtG,WAAqI,CAACk+d,IAAtI7za,SAA4L,CAACu0V,KAAcz9Y,KAAiB6sb,KAAiBjwE,MAAgBtX,KACrPtlW;;;;;;;;;;;;;;;;;;;;;kCC/uC2FnB,2BA+Qy4B,mBA/Qz4BA,mBA+Qy/B,GA/Qz/BA,4EA+Qg9B,WA/Qh9BA,sBA+Qy/B,GA/Qz/BA,+BA+Qy/B,4CA/Qz/BA,0DA+Q4e,sBA/Q5eA,CA+Q4e,mBA/Q5eA,uBA+Qy0B,8BA/Qz0BA,iCA+Qy0BzvE,GAAoBpN,EA/Q71B68E,wBA+Qy0B,GAAoB6ge,2BA/Q71B7ge,uBA+Qy4B,yBA/Qz4BA,iGA+Q6jB,oCA/Q7jBA,CA+Q6jB,iBA/Q7jBA,sBA+QktB,GA/QltBA,uBA+QktB,mBA/QltBA,CA+QktB,sBA/QltBA,CA+QktB,wCA/QltBA,sBA+Qi7B,GA/Qj7BA,uBA+Qi7B,iEA/Qj7BA,2BA+Q8lC,YA/Q9lCA,mBA+Q6sC,GA/Q7sCA,4FA+Q6sC,GA/Q7sCA,8BA+Q6sCzvE,sCA/Q7sCyvE,2BA+Q2T,WA/Q3TA,CA+Q2T,YA/Q3TA,mBA+Qyb,GA/QzbA,kDA+Q4e,6BA/Q5eA,uBA+Q8lC,kBA/Q9lCA,2FA+Qyb,GA/QzbA,+BA+Qyb,mCA/QzbA,sBA+QsgB,GA/QtgBA,uBA+QsgB,6CA/QtgBA,sBA+Q8pC,GA/Q9pCA,uBA+Q8pC,+EA/Q9pCA,0DA+Qq6C,eA/Qr6CA,uBA+QohD,mBA/QphDA,iCA+QohDzvE,GAAUpN,EA/Q9hD68E,0BA+Q8hD8ge,cA/Q9hD9ge,wDA+Q+3D,WA/Q/3DA,sBA+Qu9D,aA/Qv9DA,gGA+QqnD,oCA/QrnDA,CA+QqnD,kDA/QrnDA,CA+QqnD,6BA/QrnDA,CA+QqnD,yCA/QrnDA,wBA+Q2jD,sEA/Q3jDA,qHA+QyxG,eA/QzxGA,uBA+Qu4G,mBA/Qv4GA,iCA+Qu4GzvE,GAAUpN,EA/Qj5G68E,0BA+Qi5G+ge,aA/Qj5G/ge,wDA+QuuH,WA/QvuHA,sBA+Q+zH,aA/Q/zHA,gGA+Qs+G,mCA/Qt+GA,CA+Qs+G,8CA/Qt+GA,CA+Qs+G,6BA/Qt+GA,CA+Qs+G,qCA/Qt+GA,wBA+Q66G,qCA7ShhH,QACIp/E,cAKIG,KAAKw/E,QAAU,IAAIzjE,KAEnB/b,KAAKigjB,kBAAoB,kBAEzBjgjB,KAAKkgjB,cAAgB,YAErBlgjB,KAAKmgjB,kBAAoB,gBAEzBngjB,KAAKogjB,eAAiB,aAEtBpgjB,KAAKqgjB,cAAgB,YAErBrgjB,KAAKsgjB,cAAgB,CAAC9tQ,EAAMx2N,EAAUx4E,KAClC,GAAc,GAAVA,GAA2B,GAAZw4E,EACf,MAAQ,QAAOx4E,IAGnB,MAAM+8iB,EAAa/tQ,EAAOx2N,EAG1B,MAAQ,GAAEuke,EAAa,YADNA,GAHjB/8iB,EAASikB,KAAKqgB,IAAItkC,EAAQ,IAGaikB,KAAK+2C,IAAI+hf,EAAavke,EAAUx4E,GAAU+8iB,EAAavke,QACjDx4E,MAIzDg9iB,EAAiBzhe,UAAjB,0BAA6Gyhe,IAC7GA,EAAiBx0Z,WADkF/sE,+BACnG,OAAiHuhe,EAAjHn+iB,QAAiHm+iB,EAAjH,qBAA+I,SAU/I,MAAMC,EAA8B,CAEhCp4d,QAASm4d,EACTh0Z,KAAM,CAAC,CAAC,IAAI+2X,WAAY,IAAIC,WAAYg9B,IACxCnqS,WARJ,WAA6CqqS,GACzC,OAAOA,GAAc,IAAIF;;;;;;;SA0B7B,MAAMG,EAAgC,IAAIl4Z,iBAAe,iCAGnDm4Z,GAAyBxzC,SAAcyzC,QAAiB,UAM9D,gBAAgCD,EAC5B/gjB,YAAY6qhB,EAAOvoG,EAAoBt+D,GAYnC,GAXAl4V,QACA3rB,KAAK0qhB,MAAQA,EACb1qhB,KAAKmib,mBAAqBA,EAC1Bnib,KAAK8gjB,WAAa,EAClB9gjB,KAAK+gjB,QAAU,EACf/gjB,KAAKghjB,iBAAmB,GACxBhhjB,KAAKihjB,eAAgB,EACrBjhjB,KAAKkhjB,uBAAwB,EAE7BlhjB,KAAKwyS,KAAO,IAAI8zH,eAChBtma,KAAK+rhB,aAAerB,EAAMlrc,QAAQr5E,UAAU,IAAMnG,KAAKmib,mBAAmBvoO,gBACtEiqK,EAAU,CACV,MAAQ7nS,WAAUmle,mBAAiBC,gBAAcC,yBAAyBx9L,EAC1D,MAAZ7nS,IACAh8E,KAAKshjB,UAAYtle,GAEE,MAAnBmle,KACAnhjB,KAAKghjB,iBAAmBG,IAER,MAAhBC,KACAphjB,KAAKihjB,cAAgBG,IAEG,MAAxBC,KACArhjB,KAAKkhjB,sBAAwBG,KAKrCn6Y,gBACA,OAAOlnK,KAAK8gjB,WAEZ55Y,cAAUljJ,GACVhkB,KAAK8gjB,WAAar5hB,KAAKqgB,KAAI47Y,QAAqB1/Z,GAAQ,GACxDhkB,KAAKmib,mBAAmBvoO,eAGxBp2M,aACA,OAAOxD,KAAK+gjB,QAEZv9iB,WAAOwgB,GACPhkB,KAAK+gjB,SAAUr9H,QAAqB1/Z,GACpChkB,KAAKmib,mBAAmBvoO,eAGxB59H,eACA,OAAOh8E,KAAKshjB,UAEZtle,aAASh4D,GACThkB,KAAKshjB,UAAY75hB,KAAKqgB,KAAI47Y,QAAqB1/Z,GAAQ,GACvDhkB,KAAKuhjB,kCAGLJ,sBACA,OAAOnhjB,KAAKghjB,iBAEZG,oBAAgBn9hB,GAChBhkB,KAAKghjB,kBAAoBh9hB,GAAS,IAAIiP,IAAIq8S,IAAKo0G,QAAqBp0G,IACpEtvU,KAAKuhjB,kCAGLH,mBACA,OAAOphjB,KAAKihjB,cAEZG,iBAAap9hB,GACbhkB,KAAKihjB,eAAgB9iJ,QAAsBn6Y,GAG3Cq9hB,2BACA,OAAOrhjB,KAAKkhjB,sBAEZG,yBAAqBr9hB,GACrBhkB,KAAKkhjB,uBAAwB/iJ,QAAsBn6Y,GAEvDxhB,WACIxC,KAAKwhjB,cAAe,EACpBxhjB,KAAKuhjB,kCACLvhjB,KAAK25gB,mBAETzwgB,cACIlJ,KAAK+rhB,aAAap+f,cAGtB8zhB,WACI,IAAKzhjB,KAAK0hjB,cACN,OAEJ,MAAMC,EAAoB3hjB,KAAKknK,UAC/BlnK,KAAKknK,UAAYlnK,KAAKknK,UAAY,EAClClnK,KAAK4hjB,eAAeD,GAGxBE,eACI,IAAK7hjB,KAAK8hjB,kBACN,OAEJ,MAAMH,EAAoB3hjB,KAAKknK,UAC/BlnK,KAAKknK,UAAYlnK,KAAKknK,UAAY,EAClClnK,KAAK4hjB,eAAeD,GAGxB5B,YAEI,IAAK//iB,KAAK8hjB,kBACN,OAEJ,MAAMH,EAAoB3hjB,KAAKknK,UAC/BlnK,KAAKknK,UAAY,EACjBlnK,KAAK4hjB,eAAeD,GAGxB3B,WAEI,IAAKhgjB,KAAK0hjB,cACN,OAEJ,MAAMC,EAAoB3hjB,KAAKknK,UAC/BlnK,KAAKknK,UAAYlnK,KAAK+1U,mBAAqB,EAC3C/1U,KAAK4hjB,eAAeD,GAGxBG,kBACI,OAAO9hjB,KAAKknK,WAAa,GAAsB,GAAjBlnK,KAAKg8E,QAAY,CAGnD0le,cACI,MAAMK,EAAe/hjB,KAAK+1U,mBAAqB,EAC/C,OAAO/1U,KAAKknK,UAAY66Y,GAAiC,GAAjB/hjB,KAAKg8E,QAAY,CAG7D+5P,mBACI,OAAK/1U,KAAKg8E,SAGHv0D,KAAK+b,KAAKxjC,KAAKwD,OAASxD,KAAKg8E,UAFzB,EAYf8je,gBAAgB9je,GAGZ,MAAMuke,EAAavgjB,KAAKknK,UAAYlnK,KAAKg8E,SACnC2le,EAAoB3hjB,KAAKknK,UAC/BlnK,KAAKknK,UAAYz/I,KAAKsd,MAAMw7gB,EAAavke,IAAa,EACtDh8E,KAAKg8E,SAAWA,EAChBh8E,KAAK4hjB,eAAeD,GAGxBK,uBACI,OAAOhijB,KAAKstB,WAAattB,KAAK0hjB,cAGlCO,2BACI,OAAOjijB,KAAKstB,WAAattB,KAAK8hjB,kBAMlCP,mCACSvhjB,KAAKwhjB,eAILxhjB,KAAKg8E,WACNh8E,KAAKshjB,UAC8B,GAA/BthjB,KAAKmhjB,gBAAgB39iB,OAAcxD,KAAKmhjB,gBAAgB,GA9L9C,IAgMlBnhjB,KAAKkijB,0BAA4BlijB,KAAKmhjB,gBAAgBlliB,SACQ,IAA1Djc,KAAKkijB,0BAA0B9wiB,QAAQpR,KAAKg8E,WAC5Ch8E,KAAKkijB,0BAA0B/+iB,KAAKnD,KAAKg8E,UAG7Ch8E,KAAKkijB,0BAA0B1viB,KAAK,CAAC/C,EAAG8qQ,IAAM9qQ,EAAI8qQ,GAClDv6Q,KAAKmib,mBAAmBvoO,gBAG5BgoW,eAAeD,GACX3hjB,KAAKwyS,KAAK7hR,KAAK,CACXgxhB,oBACAz6Y,UAAWlnK,KAAKknK,UAChBlrF,SAAUh8E,KAAKg8E,SACfx4E,OAAQxD,KAAKwD,UAIzB2+iB,EAAkBpje,UAAlB,YA5OmGE,gCA6OnGkje,EAAkBnje,UA7OiFC,8BA6OnG,MAAkGkje,EAAlG34d,2NA7OmGvK,0CAsQnG,gBAA2Bkje,EACvBtijB,YAAY4jS,EAAMu7O,EAAmBn7J,GACjCl4V,MAAM83Q,EAAMu7O,EAAmBn7J,GAC3BA,GAA4C,MAAhCA,EAASu+L,sBACrBpijB,KAAKqijB,qBAAuBx+L,EAASu+L,sBAIjDE,EAAavje,UAAb,0BAAyGuje,GA9QNrje,8BA8QoCuhe,GA9QpCvhe,8BA8QiEA,qBA9QjEA,8BA8QkG0he,EAArM,KACA2B,EAAa1ie,UA/QsFX,8BA+QnG,MAA6Fqje,EAA7F5+iB,gDAAsM,QAAtM,oFA/QmGu7E,wCA+QnGxvC,k0DA/QmGwvC,2BA+Q6N,UA/Q7NA,CA+Q6N,WA/Q7NA,uBA+Q2T,iBA/Q3TA,2BA+QmvC,UA/QnvCA,CA+QmvC,WA/QnvCA,mBA+Qy1C,GA/Qz1CA,kDA+Qq6C,oBA/Qr6CA,2BA+QwkE,cA/QxkEA,uBA+Q0rE,0BAAUzvE,mBA/QpsEyvE,wDA+QggF,WA/QhgFA,sBA+QwlF,YA/QxlFA,sFA+Q4rF,eA/Q5rFA,uBA+Q0yF,0BAAUzvE,eA/QpzFyvE,wDA+Q4lG,YA/Q5lGA,sBA+QorG,cA/QprGA,oDA+QyxG,sBA/QzxGA,gCA+QnG,MA/QmGA,sBA+QmW,GA/QnWA,uBA+QmW,wBA/QnWA,sBA+Qy1C,GA/Qz1CA,+BA+Qy1C,gEA/Qz1CA,sBA+Qu1D,GA/Qv1DA,uBA+Qu1D,+BA/Qv1DA,sBA+QiyE,GA/QjyEA,uBA+QiyE,uCA/QjyEA,CA+QiyE,kDA/QjyEA,CA+QiyE,6BA/QjyEA,CA+QiyE,yCA/QjyEA,wBA+QouE,wCA/QpuEA,sBA+Qy4F,GA/Qz4FA,uBA+Qy4F,mCA/Qz4FA,CA+Qy4F,8CA/Qz4FA,CA+Qy4F,6BA/Qz4FA,CA+Qy4F,qCA/Qz4FA,wBA+Qg1F,oCA/Qh1FA,sBA+Q+rH,GA/Q/rHA,uBA+Q+rH,iCAAlyHuhM,YAAk8JwlL,KAAqKliB,KAA4HwhH,KAAyEvqG,KAAuTC,KAAiFA,KAA0GiyF,MAA9xLjtc;;;;;;;;AAuBA,SAEAuie,EAAmBxje,UAAnB,0BAA+Gwje,IAC/GA,EAAmBrie,UAzSgFjB,6BAySnG,MAAgHsje,IAChHA,EAAmBpie,UA1SgFlB,6BA0SnG,WAA+I,CAACwhe,GAAhJn3a,SAAwL,CAACu0V,KAAcuwC,KAAiBo0C,KAAiBC,KAAkBrie;;;;;;;;;;;;;;;;;;;;;qCChVrPsie,GAAsB9je,QAAW,MACnC/+E,YAAYg/E,GACR7+E,KAAK6+E,YAAcA,IAExB,WAMG8je,EAA4B,IAAIl6Z,iBAAe,4BAA6B,CAAEC,WAAY,OAAQrmJ,QAExG,aACI,MAAM+8E,GAAYqoV,YAAO9nV,MACnB0sW,EAAYjtW,EAAYA,EAAUpkB,SAAW,KACnD,MAAO,CAGH40e,YAAa,IAAOvjH,EAAYA,EAAU7yW,SAAW6yW,EAAU5+Y,OAAS,OAIhF,MAAMm1gB,EAAmC,IAAIn6Z,iBAAe,oCAE5D,IAAIo6Z,EAAgB,EAIpB,gBAA6BH,EACzB7ijB,YAAYq/E,EAAY08U,EAASyxG,EAKjCryc,EAAU6oT,EAKVs+D,GACIx2Z,MAAMuzD,GACNl/E,KAAK47Z,QAAUA,EACf57Z,KAAKqtgB,eAAiBA,EACtBrtgB,KAAKmib,mBAAqBA,EAE1Bnib,KAAK8ijB,kBAAmB,EACxB9ijB,KAAKgmK,OAAS,EACdhmK,KAAK+ijB,aAAe,EAMpB/ijB,KAAKgjjB,aAAe,IAAI18I,eAExBtma,KAAKijjB,0BAA4BnsJ,UAQjC92Z,KAAKuiR,KAAO,cAEZviR,KAAK6ijB,cAAiB,oBAAmBA,IAOzC,MAAM76X,EAAOhtH,EAAWA,EAAS40e,cAAczmhB,MAAM,KAAK,GAAK,GAC/DnpB,KAAKkjjB,oBAAuB,QAAOl7X,KAAQhoL,KAAK6ijB,kBAChD7ijB,KAAK8ijB,iBAAsC,mBAAnBz1C,EACpBxpJ,IACIA,EAASvyR,QACTtxF,KAAKsxF,MAAQtxF,KAAKiwgB,aAAepsJ,EAASvyR,OAE9CtxF,KAAKuiR,KAAOshG,EAASthG,MAAQviR,KAAKuiR,MAItCv+P,YACA,OAAOhkB,KAAKgmK,OAEZhiJ,UAAM3jB,GACN,IAAIw1T,EACJ71T,KAAKgmK,OAAS+mO,GAAM22C,QAAqBrjb,IAAM,GAEZ,QAAlCw1T,EAAK71T,KAAKmib,0BAAuC,IAAPtsH,GAAyBA,EAAGj8G,eAGvEupW,kBACA,OAAOnjjB,KAAK+ijB,aAEZI,gBAAY9ijB,GACZ,IAAIw1T,EACJ71T,KAAK+ijB,aAAeh2K,EAAM1sY,GAAK,GAEI,QAAlCw1T,EAAK71T,KAAKmib,0BAAuC,IAAPtsH,GAAyBA,EAAGj8G,eAG3EwpW,oBAGI,MAAO,CAAElmiB,UAAY,WADPld,KAAKgkB,MAAQ,cAO/Bq/hB,mBACI,MAAkB,WAAdrjjB,KAAKuiR,KAGE,CAAErlQ,UAAY,WADPld,KAAKmjjB,YAAc,cAG9B,KAEXvwiB,kBAGI5S,KAAK47Z,QAAQc,kBAAkB,KAC3B,MAAM98T,EAAU5/F,KAAKsjjB,iBAAiBzwiB,cACtC7S,KAAKijjB,2BAA4Bx9G,OAAU7lW,EAAS,iBAC/Cv3F,MAAK3B,OAAQ/F,GAAMA,EAAEspC,SAAW21D,IAChCz5F,UAAU,KACgC,IAAvCnG,KAAKgjjB,aAAazjQ,UAAU/7S,SAGd,gBAAdxD,KAAKuiR,MAAwC,WAAdviR,KAAKuiR,OACpCviR,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKgjjB,aAAazhiB,KAAK,CAAEyC,MAAOhkB,KAAKgkB,aAK5E9a,cACIlJ,KAAKijjB,0BAA0Bt1hB,eAiDvC,WAAettB,EAAGm+D,EAAM,EAAG12B,EAAM,KAC7B,OAAOrgB,KAAKqgB,IAAI02B,EAAK/2C,KAAK+2C,IAAI12B,EAAKznC;;;;;;;SA/CvCkjjB,EAAexke,UAAf,0BAA2Gwke,GAAVtke,8BAA0CA,cAA1CA,8BAAoEA,UAApEA,8BAA0F4ub,KAA3L,GAAiG5ub,8BAA4I0je,EAA7O,GAAiG1je,8BAAkM2je,EAAnS,GAAiG3je,8BAA+PA,uBAChWske,EAAe3je,UADkFX,8BACjG,MAA+Fske,EAA/F7/iB,iEADiGu7E,wBACjG/+E,gBADiG++E,2BACjGt5E,EADiGs5E,6BACjGx7E,gDAA4S,cAA5S,gBAA4U,IAA5U,gBAAkW,MAAlW,WAAqX,KAArX,kEADiGw7E,wBACjG,wEADiGA,CACjG,eADiGA,wBACjG,uMADiGA,wCACjGxvC,ulBADiGwvC,2BAC22B,WAD32BA,wDACy4B,UADz4BA,CACy4B,SADz4BA,CACy4B,eADz4BA,sBACooC,cADpoCA,mDAC4sC,YAD5sCA,+EAC26C,UAD36CA,CAC26C,YAD36CA,CAC26C,WAD36CA,4BACjG,MADiGA,sBAC0hC,GAD1hCA,uBAC0hC,sBAD1hCA,sBACktC,GADltCA,wBACktC,8BADltCA,sBAC2+C,GAD3+CA,uBAC2+C,gCAD3+CA,sBAC6mD,GAD7mDA,uBAC6mD,mCAA9sDuhM,YAA00N9gM,MAA10NM,89JAwDA,SAEAwje,EAAqBzke,UAArB,0BAAiHyke,IACjHA,EAAqBtje,UA5D4EjB,6BA4DjG,MAAkHuke,IAClHA,EAAqBrje,UA7D4ElB,6BA6DjG,UAAkJ,CAAC4+Y,KAAcz9Y,MAAkBA;;;;;;;;;;;;;;;;;;;;;kCCkB9EnB,mDAC+yD,4BAD/yDA,iFAC65D,gFAD75DA,CAC65D,kDAD75DA,CAC65D,oDAD75DA,CAC65D,6CAD75DA,CAC65D,mDAD75DA,wBACw3D,oDADx3DA,mDAC2vE,4BAD3vEA,iFAC02E,kDAD12EA,CAC02E,oDAD12EA,CAC02E,6CAD12EA,CAC02E,mDAD12EA,wBACq0E,2BAzN16E,MAQMwke,GAA0B7ke,QAAW,MACvC/+E,YAAYg/E,GACR7+E,KAAK6+E,YAAcA,IAExB,WAEG6ke,EAAuC,IAAIj7Z,iBAAe,uCAAwC,CACpGC,WAAY,OACZrmJ,QAGJ,aACI,MAAO,CAAEshjB,SApBK,IAoBKC,IAMvB,MAAMC,EAAoC,46CA0B1C,gBAAiCJ,EAC7B5jjB,YAAYq/E,EAAYC,EAAWC,EAAW4ub,EAAenqJ,EAM7Dm7J,EAAmBt4E,EAAe9lC,GAC9Bj1Y,MAAMuzD,GACNl/E,KAAKo/E,UAAYA,EACjBp/E,KAAK8jjB,UA9DK,IA+DV9jjB,KAAKgmK,OAAS,EACdhmK,KAAK4ta,oBAAsB9W,UAE3B92Z,KAAKuiR,KAAO,cACZ,MAAMwhS,EAAmBC,EAAmBC,WAC5CjkjB,KAAKkkjB,uBAAyBlkjB,KAAKmkjB,4BAG9BJ,EAAiBjhM,IAAI1jS,EAAUsoO,OAChCq8P,EAAiBzkT,IAAIlgL,EAAUsoO,KAAM,IAAIjiG,IAAI,CAxEvC,OA0EVzlN,KAAKokjB,gBACiB,mBAAlBp2C,KAAwCnqJ,IAAaA,EAASwgM,iBACV,gBAApDnle,EAAWrsE,cAAcwzB,SAASxqB,gBAClC7b,KAAKuiR,KAAO,iBAEZshG,IACIA,EAAS8/L,WACT3jjB,KAAK2jjB,SAAW9/L,EAAS8/L,UAEzB9/L,EAASygM,cACTtkjB,KAAKskjB,YAAczgM,EAASygM,cAShCnle,EAAUE,WAAaF,EAAUs/W,QAAUiI,GAAiBs4E,GAAqBp+G,IACjF5ga,KAAK4ta,oBAAsB84B,EAAc34K,OAAO,KAAK5nR,UAAU,KAGzC,kBAAdnG,KAAKuiR,MACLq+I,EAAOp4J,IAAI,IAAMw2Q,EAAkBplU,mBAM/C+pW,eACA,OAAO3jjB,KAAK8jjB,UAEZH,aAAS59d,GACT/lF,KAAK8jjB,WAAYpgI,QAAqB39V,GACtC/lF,KAAKkkjB,uBAAyBlkjB,KAAKmkjB,4BAE/BnkjB,KAAKukjB,YACLvkjB,KAAKwkjB,mBAITF,kBACA,OAAOtkjB,KAAKykjB,cAAgBzkjB,KAAK2jjB,SAAW,GAE5CW,gBAAYtgiB,GACZhkB,KAAKykjB,cAAe/gI,QAAqB1/Z,GAGzCA,YACA,MAAqB,gBAAdhkB,KAAKuiR,KAAyBviR,KAAKgmK,OAAS,EAEnDhiJ,UAAMwuW,GACNxyX,KAAKgmK,OAASv+I,KAAKqgB,IAAI,EAAGrgB,KAAK+2C,IAAI,KAAKklX,QAAqBlxD,KAEjEhwX,WACI,MAAMo9F,EAAU5/F,KAAK6+E,YAAYhsE,cAIjC7S,KAAKukjB,YAAa//I,QAAe5kU,IAAY5/F,KAAKo/E,UAAUsoO,KAC5D1nT,KAAKwkjB,mBACL5kd,EAAQmrT,UAAUjjQ,IAAI,gDAE1B5+I,cACIlJ,KAAK4ta,oBAAoBjgZ,cAG7B+2hB,mBACI,OAAQ1kjB,KAAK2jjB,SA1IK,IA0I2B,EAGjDgB,cACI,MAAM5V,EAAoC,EAA1B/uiB,KAAK0kjB,mBAAyB1kjB,KAAKskjB,YACnD,MAAQ,OAAMvV,KAAWA,IAG7B6V,0BACI,OAAO,EAAIn9hB,KAAKqwT,GAAK93U,KAAK0kjB,mBAG9BG,uBACI,MAAkB,gBAAd7kjB,KAAKuiR,KACGviR,KAAK4kjB,2BAA6B,IAAM5kjB,KAAKgmK,QAAW,IAE7D,KAGX8+Y,wBACI,OAAQ9kjB,KAAKskjB,YAActkjB,KAAK2jjB,SAAY,IAGhDoB,0BAA0B3X,GACtB,IAAIv3O,EAKJ,MAAMr+M,EAAuE,IAAlC,QAA3Bq+M,EAAKu3O,EAAI4X,oBAAiC,IAAPnvP,EAAgBA,EAAK,GACxE,MAAQ,GAAEr+M,MAAUA,KAGxBgtc,mBACI,MAAMS,EAAYjljB,KAAKukjB,WACjBW,EAAkBlljB,KAAK8jjB,UACvBqB,EAAYnB,EAAmBC,WACrC,IAAImB,EAAsBD,EAAUtkjB,IAAIokjB,GACxC,IAAKG,IAAwBA,EAAoBtiM,IAAIoiM,GAAkB,CACnE,MAAMG,EAAWrljB,KAAKo/E,UAAU14C,cAAc,SAC9C2+gB,EAAS1+gB,aAAa,wBAAyB3mC,KAAKkkjB,wBACpDmB,EAAS/jc,YAActhH,KAAKsljB,oBAC5BL,EAAU37gB,YAAY+7gB,GACjBD,IACDA,EAAsB,IAAI3/V,IAC1B0/V,EAAU7lT,IAAI2lT,EAAWG,IAE7BA,EAAoBt9Z,IAAIo9Z,IAIhCI,oBACI,MAAMC,EAAsBvljB,KAAK4kjB,0BACjC,OAAQf,EAEH3nhB,QAAQ,eAAiB,GAAE,IAAOqphB,GAClCrphB,QAAQ,aAAe,GAAE,GAAMqphB,GAC/BrphB,QAAQ,YAAc,GAAEl8B,KAAKkkjB,0BAGtCC,4BAGI,OAAOnkjB,KAAK2jjB,SAAS98iB,WAAWq1B,QAAQ,IAAK,MASrD8nhB,EAAmBC,WAAa,IAAI19L,QACpCy9L,EAAmBjle,UAAnB,0BAA+Gile,GAAV/ke,8BAA8CA,cAA9CA,8BAAwES,MAAxET,8BAAgGU,KAArM,GAAqGV,8BAAqI4ub,KAA1O,GAAqG5ub,8BAAuLyke,GAAvLzke,8BAAwOA,qBAAxOA,8BAAyQ+mX,MAAzQ/mX,8BAAsSA,YAC3Y+ke,EAAmBpke,UADkFX,8BACrG,MAAmG+ke,EAAnGtgjB,uEAAgT,cAAhT,WAA2U,KAA3U,qFADqGu7E,wBACrG,8CADqGA,CACrG,gDADqGA,CACrG,oDADqGA,CACrG,eADqGA,wBACrG,wBADqGA,CACrG,0BADqGA,wBACrG,wLADqGA,wCACrGxvC,+aADqGwvC,wDAColC,aADplCA,uBAC+yD,qBAD/yDA,uBAC2vE,oBAD3vEA,4BACrG,MADqGA,wBAC4lC,wBAD5lCA,CAC4lC,0BAD5lCA,uBACmwC,qCADnwCA,wBAC+pC,2BAD/pCA,sBAC6zD,GAD7zDA,uBAC6zD,mBAD7zDA,sBACywE,GADzwEA,uBACywE,qBAA92EuhM,YAAooKsjK,KAAqEA,MAAzsK9jW;;;;;;;;AAkDA,SAEAwle,EAAyBzme,UAAzB,0BAAqHyme,IACrHA,EAAyBtle,UAtD4EjB,6BAsDrG,MAAsHume,IACtHA,EAAyBrle,UAvD4ElB,6BAuDrG,UAA0J,CAACmB,KAAiBy9Y,MAAez9Y,OAuBxK4je;;;;;;;+NCnTbyB,EAA4B,IAAIh9Z,iBAAe,4BAA6B,CAC9EC,WAAY,OACZrmJ,QAEJ,aACI,MAAO,CACHivF,MAAO,aAIf,IAAIuoW,EAAe,EAMnB,MAAM6rH,EAAyC,CAC3Cr9d,QAASola,oBACTjvZ,aAAaimW,gBAAW,IAAMkhH,GAC9Blnd,OAAO,GAGX,QACI5+F,YAEAo3B,EAEAjT,GACIhkB,KAAKi3B,OAASA,EACdj3B,KAAKgkB,MAAQA,GAQrB,MAAM4hiB,EAAkB,IAAIn9Z,iBAAe,iBAK3C,QACI5oJ,YAAYqrgB,GACRlrgB,KAAKkrgB,gBAAkBA,EAEvBlrgB,KAAKgmK,OAAS,KAEdhmK,KAAKmsc,MAAS,mBAAkBtS,IAEhC75b,KAAKyyF,UAAY,KAEjBzyF,KAAKgoa,gBAAiB,EAEtBhoa,KAAK6ljB,eAAiB,QAEtB7ljB,KAAKmua,WAAY,EAEjBnua,KAAK+lK,WAAY,EAEjB/lK,KAAKmrgB,8BAAgC,OAKrCnrgB,KAAKq+F,UAAY,OAMjBr+F,KAAK+tR,OAAS,IAAIu4I,eAGlB17W,WACA,OAAO5qD,KAAKmsc,MAEZvhZ,SAAK5mC,GACLhkB,KAAKmsc,MAAQnob,EACbhkB,KAAK8ljB,0BAGLl2C,oBACA,OAAO5vgB,KAAK6ljB,eAEZj2C,kBAAcvvgB,GACdL,KAAK6ljB,eAAuB,WAANxljB,EAAiB,SAAW,QAClDL,KAAK+ljB,sBAQL/hiB,YACA,OAAOhkB,KAAKgmK,OAEZhiJ,UAAMwuW,GACFxyX,KAAKgmK,SAAWwsN,IAEhBxyX,KAAKgmK,OAASwsN,EACdxyX,KAAKgmjB,gCACLhmjB,KAAKimjB,6BAGbA,4BACQjmjB,KAAKyyF,YAAczyF,KAAKyyF,UAAUtC,UAClCnwF,KAAKyyF,UAAUtC,SAAU,GAO7BxD,eACA,OAAO3sF,KAAKyyF,UAEZ9F,aAASA,GACT3sF,KAAKyyF,UAAY9F,EACjB3sF,KAAKgkB,MAAQ2oE,EAAWA,EAAS3oE,MAAQ,KACzChkB,KAAKimjB,4BAGL34hB,eACA,OAAOttB,KAAKmua,UAEZ7gZ,aAAStJ,GACThkB,KAAKmua,WAAYhQ,QAAsBn6Y,GACvChkB,KAAK+ljB,sBAGL9zd,eACA,OAAOjyF,KAAK+lK,UAEZ9zE,aAASjuE,GACThkB,KAAK+lK,WAAYo4P,QAAsBn6Y,GACvChkB,KAAK+ljB,sBAMTpgS,qBAII3lR,KAAKgoa,gBAAiB,EAM1Bk+I,SACQlmjB,KAAKq+F,WACLr+F,KAAKq+F,YAGbynd,0BACQ9ljB,KAAKmmjB,SACLnmjB,KAAKmmjB,QAAQ59iB,QAAQ41U,IACjBA,EAAMvzR,KAAO5qD,KAAK4qD,KAClBuzR,EAAMmtL,kBAKlB06C,gCAEI,MAAMI,EAAuC,OAAnBpmjB,KAAKyyF,WAAsBzyF,KAAKyyF,UAAUzuE,QAAUhkB,KAAKgmK,OAC/EhmK,KAAKmmjB,UAAYC,IACjBpmjB,KAAKyyF,UAAY,KACjBzyF,KAAKmmjB,QAAQ59iB,QAAQ41U,IACjBA,EAAMhuP,QAAUnwF,KAAKgkB,QAAUm6T,EAAMn6T,MACjCm6T,EAAMhuP,UACNnwF,KAAKyyF,UAAY0rP,MAMjC+rF,mBACQlqa,KAAKgoa,gBACLhoa,KAAK+tR,OAAOp9P,KAAK,IAAI01hB,EAAermjB,KAAKyyF,UAAWzyF,KAAKgmK,SAGjE+/Y,sBACQ/ljB,KAAKmmjB,SACLnmjB,KAAKmmjB,QAAQ59iB,QAAQ41U,GAASA,EAAMmtL,iBAO5Cvta,WAAW/5E,GACPhkB,KAAKgkB,MAAQA,EACbhkB,KAAKkrgB,gBAAgBtxT,eAOzB17G,iBAAiBp6D,GACb9jC,KAAKmrgB,8BAAgCrne,EAOzCs6D,kBAAkBt6D,GACd9jC,KAAKq+F,UAAYv6D,EAMrBstP,iBAAiB74G,GACbv4K,KAAKstB,SAAWirJ,EAChBv4K,KAAKkrgB,gBAAgBtxT,gBAG7B0sW,EAAmBvne,UAAnB,0BAA+Gune,GAAVrne,8BAA8CA,uBACnJqne,EAAmBtne,UADkFC,8BACrG,MAAmGqne,EAAnG98d,uKAuBA,gBAA4B88d,GAE5BX,EAAc5me,UAAd,iDA1BqGE,kCA0BK0me,KAA1Gj1iB,GAA0Gi1iB,IAA1G,GACAA,EAAc3me,UA3BuFC,8BA2BrG,MAA8F0me,EAA9FjijB,uEA3BqGu7E,2BA2BrG1nE,EAG0FgviB,EAH1F,cA3BqGtne,2BA2BrGzvE,EA3BqGyvE,6BA2BrGvuE,iCAAwK,aAAxK,0DA3BqGuuE,+BA2BmI,CAChOyme,EACA,CAAEr9d,QAASu9d,EAAiBpnd,YAAamnd,KA7BoD1me,0CAwDrG,MAAMune,GAA2B7iD,SAAmB+L,QALpD,QACI7vgB,YAAYg/E,GACR7+E,KAAK6+E,YAAcA,MAQ3B,gBAAkC2ne,EAC9B3mjB,YAAY4mjB,EAAYvne,EAAYgsb,EAAiB9kG,EAAesgJ,EAAkB14C,EAAe24C,GAAmB50b,IACpHpmG,MAAMuzD,GACNl/E,KAAKkrgB,gBAAkBA,EACvBlrgB,KAAKoma,cAAgBA,EACrBpma,KAAK0mjB,iBAAmBA,EACxB1mjB,KAAK2mjB,kBAAoBA,GACzB3mjB,KAAK2vgB,UAAa,gBAAc91E,EAEhC75b,KAAKqqE,GAAKrqE,KAAK2vgB,UAMf3vgB,KAAK+tR,OAAS,IAAIu4I,eAElBtma,KAAKowF,UAAW,EAEhBpwF,KAAKgmK,OAAS,KAEdhmK,KAAK89hB,+BAAiC,OAGtC99hB,KAAKymjB,WAAaA,EAClBzmjB,KAAKokjB,gBAAoC,mBAAlBp2C,EACnBj8Y,KACA/xH,KAAK+xH,UAAW2xT,QAAqB3xT,GAAU,IAEnD/xH,KAAK89hB,+BAAiC4oB,EAAiBh8I,OAAO,CAACrgW,GAAIzf,MAC3Dyf,KAAOrqE,KAAKqqE,IAAMzf,KAAS5qD,KAAK4qD,OAChC5qD,KAAKmwF,SAAU,KAKvBA,cACA,OAAOnwF,KAAKowF,SAEZD,YAAQnsE,GACR,MAAM4iiB,GAAkBzoJ,QAAsBn6Y,GAC1ChkB,KAAKowF,WAAaw2d,IAClB5mjB,KAAKowF,SAAWw2d,EAChBl2iB,GAAuB1Q,KAAKymjB,YAAczmjB,KAAKymjB,WAAWziiB,QAAUhkB,KAAKgkB,MACrEhkB,KAAKymjB,WAAW95d,SAAW3sF,MAErB4mjB,GAAmB5mjB,KAAKymjB,YAAczmjB,KAAKymjB,WAAWziiB,QAAUhkB,KAAKgkB,QAG3EhkB,KAAKymjB,WAAW95d,SAAW,MAE3Bi6d,GAEA5mjB,KAAK0mjB,iBAAiBvrS,OAAOn7Q,KAAKqqE,GAAIrqE,KAAK4qD,MAE/C5qD,KAAKkrgB,gBAAgBtxT,gBAIzB51L,YACA,OAAOhkB,KAAKgmK,OAEZhiJ,UAAMA,GACFhkB,KAAKgmK,SAAWhiJ,IAChBhkB,KAAKgmK,OAAShiJ,EACU,OAApBhkB,KAAKymjB,aACAzmjB,KAAKmwF,UAENnwF,KAAKmwF,QAAUnwF,KAAKymjB,WAAWziiB,QAAUA,GAEzChkB,KAAKmwF,UACLnwF,KAAKymjB,WAAW95d,SAAW3sF,QAMvC4vgB,oBACA,OAAO5vgB,KAAK6ljB,gBAAmB7ljB,KAAKymjB,YAAczmjB,KAAKymjB,WAAW72C,eAAkB,QAEpFA,kBAAc5rf,GACdhkB,KAAK6ljB,eAAiB7hiB,EAGtBsJ,eACA,OAAOttB,KAAKmua,WAAkC,OAApBnua,KAAKymjB,YAAuBzmjB,KAAKymjB,WAAWn5hB,SAEtEA,aAAStJ,GACThkB,KAAK6mjB,cAAa1oJ,QAAsBn6Y,IAGxCiuE,eACA,OAAOjyF,KAAK+lK,WAAc/lK,KAAKymjB,YAAczmjB,KAAKymjB,WAAWx0d,SAE7DA,aAASjuE,GACThkB,KAAK+lK,WAAYo4P,QAAsBn6Y,GAGvCstE,YAGA,OAAQtxF,KAAK0xF,QACR1xF,KAAKymjB,YAAczmjB,KAAKymjB,WAAWn1d,OACnCtxF,KAAK2mjB,mBAAqB3mjB,KAAK2mjB,kBAAkBr1d,OAClD,SAEJA,UAAMkhS,GACNxyX,KAAK0xF,OAAS8gS,EAGd09I,cACA,MAAQ,GAAElwgB,KAAKqqE,IAAMrqE,KAAK2vgB,kBAG9B78f,MAAMqvQ,EAAS6xB,GACPA,EACAh0S,KAAKoma,cAAcnB,SAASjla,KAAK6wgB,cAAe78N,EAAQ7xB,GAGxDniR,KAAK6wgB,cAAch+f,cAAcC,MAAMqvQ,GAQ/CmpP,gBAGItrgB,KAAKkrgB,gBAAgBtxT,eAEzBp3M,WACQxC,KAAKymjB,aAELzmjB,KAAKmwF,QAAUnwF,KAAKymjB,WAAWziiB,QAAUhkB,KAAKgmK,OAC1ChmK,KAAKmwF,UACLnwF,KAAKymjB,WAAW95d,SAAW3sF,MAG/BA,KAAK4qD,KAAO5qD,KAAKymjB,WAAW77f,MAGpCq+N,YACIjpR,KAAKw2gB,kBAET5jgB,kBACI5S,KAAKw2gB,kBACLx2gB,KAAKoma,cAAchC,QAAQpka,KAAK6+E,aAAa,GAAM14E,UAAUgqgB,KACpDA,GAAenwgB,KAAKymjB,YACrBzmjB,KAAKymjB,WAAWP,WAI5Bh9iB,cACIlJ,KAAKoma,cAAcvB,eAAe7ka,KAAK6+E,aACvC7+E,KAAK89hB,iCAGT5zH,mBACIlqa,KAAK+tR,OAAOp9P,KAAK,IAAI01hB,EAAermjB,KAAMA,KAAKgmK,SAEnD0nW,oBACI,OAAO1tgB,KAAK2tgB,eAAiB3tgB,KAAKstB,SAEtCwjf,cAAc/rb,GAQVA,EAAMn6C,kBAGVk8gB,oBAAoB/he,GAKhB,GADAA,EAAMn6C,mBACD5qC,KAAKmwF,UAAYnwF,KAAKstB,SAAU,CACjC,MAAMy5hB,EAAoB/mjB,KAAKymjB,YAAczmjB,KAAKgkB,QAAUhkB,KAAKymjB,WAAWziiB,MAC5EhkB,KAAKmwF,SAAU,EACfnwF,KAAKkqa,mBACDlqa,KAAKymjB,aACLzmjB,KAAKymjB,WAAWt7C,8BAA8BnrgB,KAAKgkB,OAC/C+iiB,GACA/mjB,KAAKymjB,WAAWv8I,qBAMhC28I,aAAa7iiB,GACLhkB,KAAKmua,YAAcnqZ,IACnBhkB,KAAKmua,UAAYnqZ,EACjBhkB,KAAKkrgB,gBAAgBtxT,gBAI7B48T,kBACI,IAAI3gN,EACJ,MAAMhkB,EAAQ7xS,KAAKymjB,WACnB,IAAIziiB,EAWJ,GAFIA,EAJC6tR,GAAUA,EAAMllN,WAAY3sF,KAAKstB,SAI1BukR,EAAMllN,WAAa3sF,KAAOA,KAAK+xH,UAAW,EAH1C/xH,KAAK+xH,SAKb/tG,IAAUhkB,KAAKgnjB,kBAAmB,CAGlC,MAAMnpd,EAAsC,QAA7Bg4N,EAAK71T,KAAK6wgB,qBAAkC,IAAPh7M,OAAgB,EAASA,EAAGhjT,cAC5EgrF,IACAA,EAAMl3D,aAAa,WAAY3iB,EAAQ,IACvChkB,KAAKgnjB,kBAAoBhjiB,KAKzCijiB,EAAoBloe,UAApB,YA/RqGE,gCAgSrGgoe,EAAoBjoe,UAhSiFC,8BAgSrG,MAAoGgoe,EAApGj3d,gCAhSqG/Q,wBAgSrGl/E,gBAhSqGk/E,2BAgSrG1nE,EAhSqG0nE,6BAgSrGvuE,gWAhSqGuuE,0CAqUrG,gBAA6Bgoe,EACzBpnjB,YAAY4mjB,EAAYvne,EAAY1uD,EAAgBu9e,EAAcm5C,EAAiBl5C,EAAem5C,GAAkBp1b,IAChHpmG,MAAM86hB,EAAYvne,EAAY1uD,EAAgBu9e,EAAcm5C,EAAiBl5C,EAAem5C,GAAkBp1b,KAGtHw0b,EAAexne,UAAf,0BAA2Gwne,GA1UNtne,8BA0UsC2me,EAA3I,GA1UqG3me,8BA0UkFA,cA1UlFA,8BA0U4GA,qBA1U5GA,8BA0U6IS,MA1U7IT,8BA0UyK+mX,MA1UzK/mX,8BA0UkN4ub,KAAvT,GA1UqG5ub,8BA0UoQwme,EAAzW,GA1UqGxme,8BA0U0T,cAC/Zsne,EAAe3me,UA3UsFX,8BA2UrG,MAA+Fsne,EAA/F7ijB,8GA3UqGu7E,uBA2UrG,0BAA+FvuE,wCAA/F,MA3UqGuuE,wBA2UrG,gBA3UqGA,CA2UrG,UA3UqGA,CA2UrG,kBA3UqGA,CA2UrG,uBA3UqGA,CA2UrG,yBA3UqGA,wBA2UrG,8BA3UqGA,CA2UrG,gCA3UqGA,CA2UrG,4CA3UqGA,CA2UrG,kCA3UqGA,CA2UrG,gCA3UqGA,CA2UrG,gIA3UqGA,wCA2UrGc,+jBA3UqGd,yDA2U02B,cA3U12BA,CA2U02B,YA3U12BA,sBA2U2gC,WA3U3gCA,CA2U2gC,YA3U3gCA,2BA2UmnC,eA3UnnCA,uBA2U6/C,4BAAWvuE,0BA3UxgDuuE,CA2U6/C,2BAA4DvuE,qBA3UzjDuuE,sDA2UkuD,YA3UluDA,sBA2UiiE,YA3UjiEA,wDA2UsrE,WA3UtrEA,CA2UsrE,cA3UtrEA,mBA2U63E,WA3U73EA,oDA2Ug5E,IA3Uh5EA,8BA2UrG,aA3UqGA,wBA2UrG,GA3UqGA,wBA2Ui3B,iBA3Uj3BA,sBA2UmrC,GA3UnrCA,uBA2UmrC,eA3UnrCA,CA2UmrC,oBA3UnrCA,CA2UmrC,sBA3UnrCA,CA2UmrC,uBA3UnrCA,wBA2U6wC,cA3U7wCA,CA2U6wC,gBA3U7wCA,CA2U6wC,yBA3U7wCA,CA2U6wC,mCA3U7wCA,CA2U6wC,sCA3U7wCA,sBA2U4yD,GA3U5yDA,uBA2U4yD,qBA3U5yDA,CA2U4yD,0CA3U5yDA,CA2U4yD,uBA3U5yDA,CA2U4yD,qBA3U5yDA,CA2U4yD,qBA3U5yDA,4BA2U4yD,+BA3U5yDA,sBA2U8tE,GA3U9tEA,wBA2U8tE,sDAAn0EuhM,YAAw6KsjK,MAAx6K9jW;;;;;;;;AAmDA,SAEAone,EAAeroe,UAAf,0BAA2Gqoe,IAC3GA,EAAelne,UAjYsFjB,6BAiYrG,MAA4Gmoe,IAC5GA,EAAejne,UAlYsFlB,6BAkYrG,UAAsI,CAACgub,KAAiB7sb,MAAkBA;;;;;;;;;;;;;;;;;;;;;qEC1avEnB,2BA2jC6lC,YA3jC7lCA,mBA2jC+qC,GA3jC/qCA,6FA2jC+qC,GA3jC/qCA,8BA2jC+qCjxC,6CA3jC/qCixC,2BA2jCgzC,aA3jChzCA,mBA2jCq2C,GA3jCr2CA,8FA2jCq2C,GA3jCr2CA,8BA2jCq2CjxC,0CA3jCr2CixC,yBA2jCo4C,0DA3jCp4CA,2BA2jC2sC,YA3jC3sCA,uBA2jCgzC,mBA3jChzCA,uBA2jCo4C,yBA3jCp4CA,8FA2jCywC,+BA3jCzwCA,sBA2jC+6C,GA3jC/6CA,uBA2jC+6C,wDA3jC/6CA,0DA2jC8rE,WA3jC9rEA,CA2jC8rE,eA3jC9rEA,uBA2jCsqF,oCA3jCtqFA,iCA2jCsqFjxC,IAAyBpnC,EA3jC/rFq4E,0BA2jC+rFooe,4CA3jC/rFpoe,CA2jCsqF,uBA3jCtqFA,iCA2jCsqFjxC,IAAkMpnC,EA3jCx2Fq4E,0BA2jCw2F8ob,qBA3jCx2F9ob,yBA2jCy4F,KA3jCz4FA,kGA2jCmuE,8BA3jCnuEA,sBA2jCw0E,GA3jCx0EA,mCA2jCw0E,4CA3jCx0EA,wBA2jCuvF,uCA3jCvvFA,CA2jCuvF,sCA3jCvvFA,uBA2jC+jF,wBA3jC/jFA,CA2jC+jF,4DA3jC/jFA,wBA2jCi4E,oBA3jCj4EA,CA2jCi4E,mCA3jCj4EA,CA2jCi4E,gCA3jCj4EA,CA2jCi4E,yFAvtC99Eqoe,GAAsB,CAMxBC,oBAAoBl9d,QAAQ,qBAAsB,EAC9Cgjc,QAAW,aAAan1f,QAAM,kBAAmB,EAAC4/f,WAAiB,CAAEjsD,UAAU,OAWnFuhD,gBAAgB/ic,QAAQ,iBAAkB,EACtCsjQ,QAAM,QAAQ56T,QAAM,CAChB7V,UAAW,cACX7O,SAAU,OACVy8R,QAAS,MAEb6iD,QAAM,WAAW56T,QAAM,CACnB+3Q,QAAS,EACTz8R,SAAU,oBACV6O,UAAW,gBAEfywU,QAAM,oBAAoB56T,QAAM,CAC5B+3Q,QAAS,EACTz8R,SAAU,oBACV6O,UAAW,gBAEfmwgB,QAAW,aAAajuQ,QAAQ,sCAChCiuQ,QAAW,aAAajuQ,QAAQ,qBAAqBrsP,QAAM,CAAE+3Q,QAAS;;;;;;;;;;;;;;;AA4C9E,IAAI+uJ,GAAe,EAOnB,MAwBM2tH,GAA6B,IAAI/+Z,iBAAe,8BAMtD,MAAMg/Z,GAAoB,IAAIh/Z,iBAAe,qBAEvCi/Z,GAAsC,CACxCr/d,QAASm/d,GACTh7Z,KAAM,CAACsuS,MACPzkL,WATJ,YAAqD9uL,IACjD,MAAO,IAAMA,GAAQuyW,iBAAiBthJ,eAW1C,SACI34S,YAEAo3B,GAEAjT,IACIhkB,KAAKi3B,OAASA,GACdj3B,KAAKgkB,MAAQA,IAKrB,MAAM2jiB,IAAsBhkD,SAAmB+L,SAActC,SAAc4H,QAAgB,MACvFn1gB,YAAYg/E,GAAao2b,GAA2BC,GAAaC,GAAkBxjb,IAC/E3xF,KAAK6+E,YAAcA,GACnB7+E,KAAKi1gB,0BAA4BA,GACjCj1gB,KAAKk1gB,YAAcA,GACnBl1gB,KAAKm1gB,iBAAmBA,GACxBn1gB,KAAK2xF,UAAYA,SAQnBi2d,GAAqB,IAAIn/Z,iBAAe,oBAI9C,UAEAo/Z,GAAiB9oe,UAAjB,4BAA6G8oe,KAC7GA,GAAiB7oe,UADkFC,8BACnG,MAAiG4oe,GAAjGnkjB,6CADmGu7E,+BAC2D,CAAC,CAAEoJ,QAASu/d,GAAoBppd,YAAaqpd,SAS3M,iBAA6BF,GACzB9njB,YAAYsta,GAAgBgV,GAAoBvmB,GAASq5G,GAA2B/1b,GAAY6oV,GAAMmtG,GAAaC,GAAkB2yC,GAAkBn2d,GAAWogC,GAAUspU,GAAuBz4B,GAAgBb,IAC/M,IAAIlsG,GAAI4/F,GAAI/mH,GACZ/iR,MAAMuzD,GAAY+1b,GAA2BC,GAAaC,GAAkBxjb,IAC5E3xF,KAAKmta,eAAiBA,GACtBnta,KAAKmib,mBAAqBA,GAC1Bnib,KAAK47Z,QAAUA,GACf57Z,KAAK+na,KAAOA,GACZ/na,KAAK8njB,iBAAmBA,GACxB9njB,KAAK4ia,eAAiBA,GACtB5ia,KAAK+ha,gBAAkBA,GAEvB/ha,KAAK+njB,YAAa,EAElB/njB,KAAKmggB,aAAe,CAACzjB,GAAI+4B,KAAO/4B,KAAO+4B,GAEvCz1gB,KAAKs1gB,KAAQ,cAAaz7E,KAE1B75b,KAAKgojB,uBAAyB,KAE9BhojB,KAAKiojB,SAAW,IAAIlsiB,KAEpB/b,KAAKq5f,UAAY,OAEjBr5f,KAAK0mgB,WAAa,OAElB1mgB,KAAKkojB,SAAY,oBAAmBruH,KAEpC75b,KAAKqnjB,0BAA4B,IAAItriB,KACrC/b,KAAKmojB,oBAAsD,QAA/BtyP,GAAK71T,KAAK+ha,uBAAoC,IAAPlsG,QAAgB,EAASA,GAAG4zM,oBAAsB,GACrHzpgB,KAAKs6iB,UAAW,EAEhBt6iB,KAAKo1gB,YAAc,aACnBp1gB,KAAK0pa,WAAY,EACjB1pa,KAAKoojB,wBAAgI,QAArG15Q,GAAqC,QAA/B+mH,GAAKz1Z,KAAK+ha,uBAAoC,IAAPtM,QAAgB,EAASA,GAAG4yJ,8BAA2C,IAAP35Q,IAAgBA,GAE7J1uS,KAAKozB,UAAY,GAEjBpzB,KAAKsojB,wBAAyBjmL,OAAM,KAChC,MAAMlgH,GAAUniR,KAAKmiR,QACrB,OAAIA,GACOA,GAAQ3iM,QAAQn3E,MAAK86a,OAAUhhK,KAAUmjK,OAAU,KAAM1gD,UAASziH,GAAQlvP,IAAIwwe,IAAUA,GAAOn4O,sBAEnGtrR,KAAK47Z,QAAQgC,SAASv1Z,MAAKi5Q,OAAK,IAAIgkK,OAAU,IAAMtlb,KAAKsojB,2BAGpEtojB,KAAKwzF,aAAe,IAAI8yU,eAExBtma,KAAKuojB,cAAgBvojB,KAAKwzF,aAAanrF,MAAK3B,OAAOyiQ,IAAKA,KAAIl2O,OAAI,SAEhEjzB,KAAKwojB,cAAgBxojB,KAAKwzF,aAAanrF,MAAK3B,OAAOyiQ,KAAMA,KAAIl2O,OAAI,SAEjEjzB,KAAKq6M,gBAAkB,IAAIisN,eAM3Btma,KAAKqtJ,YAAc,IAAIi5Q,eACnBtma,KAAK2xF,YAGL3xF,KAAK2xF,UAAU0ga,cAAgBryf,MAIkF,OAA5F,MAApB+ha,QAAyD,EAASA,GAAgB0mJ,6BACnFzojB,KAAK0ojB,2BAA6B3mJ,GAAgB0mJ,2BAEtDzojB,KAAKm8b,uBAAyBd,GAC9Br7b,KAAKitb,gBAAkBjtb,KAAKm8b,yBAC5Bn8b,KAAK+xH,SAAW9kH,SAAS8kH,KAAa,EAEtC/xH,KAAKqqE,GAAKrqE,KAAKqqE,GAGf4jN,cACA,OAAOjuR,KAAKs6iB,UAAYt6iB,KAAK+njB,WAG7Bvgb,kBACA,OAAOxnI,KAAKkxa,aAEZ1pS,gBAAYxjH,IACZhkB,KAAKkxa,aAAeltZ,GACpBhkB,KAAKuxF,aAAahwE,OAGlB0wE,eACA,IAAI4jO,GAAI4/F,GAAI/mH,GAAIj+C,GAChB,OAAgO,QAAxNA,GAA+B,QAAzBolE,GAAK71T,KAAK+lK,iBAA8B,IAAP8vJ,GAAgBA,GAAsF,QAAhFnnB,GAA+B,QAAzB+mH,GAAKz1Z,KAAK2xF,iBAA8B,IAAP8jU,QAAgB,EAASA,GAAGtkU,eAA4B,IAAPu9M,QAAgB,EAASA,GAAGuiN,aAAa6kB,8BAAyC,IAAPrlR,IAAgBA,EAAK,CAE7Px+J,aAASjuE,IACThkB,KAAK+lK,WAAYo4P,QAAsBn6Y,IACvChkB,KAAKuxF,aAAahwE,OAGlBygQ,eACA,OAAOhiR,KAAK0pa,UAEZ1nJ,aAASh+P,IACLhkB,KAAKurgB,gBAGTvrgB,KAAK0pa,WAAYvL,QAAsBn6Y,IAGvCqkiB,6BACA,OAAOrojB,KAAKoojB,wBAEZC,2BAAuBrkiB,IACvBhkB,KAAKoojB,yBAA0BjqJ,QAAsBn6Y,IAOrDo8e,kBACA,OAAOpggB,KAAKmggB,aAEZC,gBAAYt8d,IAIZ9jC,KAAKmggB,aAAer8d,GAChB9jC,KAAKurgB,iBAELvrgB,KAAK41gB,uBAIT5xf,YACA,OAAOhkB,KAAKgmK,OAEZhiJ,UAAMwuW,IAEFm2L,KADqBj2B,aAAalgK,KAElCxyX,KAAKq5f,UAAU7mI,IAInBi2L,gCACA,OAAOzojB,KAAK0ojB,2BAEZD,8BAA0BzkiB,IAC1BhkB,KAAK0ojB,4BAA6BhlI,QAAqB1/Z,IAGvDqmD,SACA,OAAOrqE,KAAKq0Z,IAEZhqV,OAAGrmD,IACHhkB,KAAKq0Z,IAAMrwY,IAAShkB,KAAKs1gB,KACzBt1gB,KAAKuxF,aAAahwE,OAEtB/e,WACIxC,KAAKurgB,gBAAkB,IAAIE,KAAezrgB,KAAKgiR,UAC/ChiR,KAAKuxF,aAAahwE,OAIlBvhB,KAAKqnjB,0BACAh/iB,MAAKo5Z,UAAwBwE,OAAUjma,KAAKiojB,WAC5C9hjB,UAAU,IAAMnG,KAAK4ojB,oBAAoB5ojB,KAAKymgB,YAEvD9gP,qBACI3lR,KAAK6ojB,kBACL7ojB,KAAKurgB,gBAAgBnuY,QAAQ/0H,MAAK49Z,OAAUjma,KAAKiojB,WAAW9hjB,UAAU4+E,KAClEA,GAAM6oM,MAAMrlR,QAAQk7f,IAAUA,GAAOrrb,UACrC2M,GAAM+oM,QAAQvlR,QAAQk7f,IAAUA,GAAOt5F,cAE3Cnqa,KAAKmiR,QAAQ3iM,QAAQn3E,MAAK86a,OAAU,OAAOld,OAAUjma,KAAKiojB,WAAW9hjB,UAAU,KAC3EnG,KAAK8ojB,gBACL9ojB,KAAK41gB,yBAGb3sP,YACI,MAAM8/R,GAAoB/ojB,KAAKgpjB,4BACzBr3d,GAAY3xF,KAAK2xF,UAIvB,GAAIo3d,KAAsB/ojB,KAAKgojB,uBAAwB,CACnD,MAAMpod,GAAU5/F,KAAK6+E,YAAYhsE,cACjC7S,KAAKgojB,uBAAyBe,GAC9Bh7gB,GACI6xD,GAAQj5D,aAAa,kBAAmBoihB,IAGxCnpd,GAAQ21T,gBAAgB,mBAG5B5jU,KAEI3xF,KAAKipjB,mBAAqBt3d,GAAUR,eACNynR,IAA1B54W,KAAKipjB,kBACkB,OAAvBt3d,GAAUrkE,UACVqkE,GAAUrkE,WAAattB,KAAKstB,WAC5BttB,KAAKstB,SAAWqkE,GAAUrkE,UAE9BttB,KAAKipjB,iBAAmBt3d,GAAUR,SAEtCnxF,KAAK02gB,oBAGbtif,YAAYorD,IAGJA,GAAQlyD,UACRttB,KAAKuxF,aAAahwE,OAElBi+D,GAAQipe,2BAAgCzojB,KAAKykgB,aAC7CzkgB,KAAKykgB,YAAYzsG,cAAch4Z,KAAK0ojB,4BAG5Cx/iB,cACIlJ,KAAKiojB,SAAS1miB,OACdvhB,KAAKiojB,SAASpuiB,WACd7Z,KAAKuxF,aAAa13E,WAGtBujF,SACIp9F,KAAKymgB,UAAYzmgB,KAAK6C,QAAU7C,KAAK4M,OAGzCA,OACQ5M,KAAKqogB,aACLrogB,KAAK+njB,YAAa,EAClB/njB,KAAKykgB,YAAY5sG,0BAA0B,MAC3C73Z,KAAKkpjB,0BACLlpjB,KAAKmib,mBAAmBvoO,gBAIhC/2M,QACQ7C,KAAK+njB,aACL/njB,KAAK+njB,YAAa,EAClB/njB,KAAKykgB,YAAY5sG,0BAA0B73Z,KAAKk0b,SAAW,MAAQ,OACnEl0b,KAAKmib,mBAAmBvoO,eACxB55M,KAAK0mgB,cASb3oa,WAAW/5E,IACPhkB,KAAK0yhB,aAAa1ugB,IAStBk6E,iBAAiBp6D,IACb9jC,KAAKq5f,UAAYv1d,GASrBs6D,kBAAkBt6D,IACd9jC,KAAK0mgB,WAAa5ie,GAQtBstP,iBAAiB74G,IACbv4K,KAAKstB,SAAWirJ,GAChBv4K,KAAKmib,mBAAmBvoO,eACxB55M,KAAKuxF,aAAahwE,OAGlBklf,gBACA,OAAOzmgB,KAAK+njB,WAGZp7d,eACA,IAAIkpO,GAAI4/F,GACR,OAAOz1Z,KAAKgiR,UAA4C,QAA/B6zC,GAAK71T,KAAKurgB,uBAAoC,IAAP11M,QAAgB,EAASA,GAAGlpO,WAAa,GAAqC,QAA/B8oU,GAAKz1Z,KAAKurgB,uBAAoC,IAAP91G,QAAgB,EAASA,GAAG9oU,SAAS,GAG3Lw8d,mBACA,GAAInpjB,KAAKo4Y,MACL,MAAO,GAEX,GAAIp4Y,KAAK0pa,UAAW,CAChB,MAAMy3F,GAAkBnhgB,KAAKurgB,gBAAgB5+a,SAAS15D,IAAIwwe,IAAUA,GAAOkb,WAC3E,OAAI3+gB,KAAKk0b,UACLitE,GAAgBpgZ,UAGbogZ,GAAgBpme,KAAK,MAEhC,OAAO/6B,KAAKurgB,gBAAgB5+a,SAAS,GAAGgyb,UAG5CzqF,SACI,QAAOl0b,KAAK+na,MAA2B,QAApB/na,KAAK+na,KAAK/jZ,KAAkB,CAGnD+jf,eAAehjb,IACN/kF,KAAKstB,WACNttB,KAAKymgB,UAAYzmgB,KAAKopjB,mBAAmBrke,IAAS/kF,KAAKqpjB,qBAAqBtke,KAIpFske,qBAAqBtke,IACjB,MAAMpxE,GAAUoxE,GAAMpxE,QAChBy0f,GAAaz0f,KAAYglZ,MAC3BhlZ,KAAYklZ,MACZllZ,KAAYqlZ,MACZrlZ,KAAYolZ,KACVuwJ,GAAY31iB,KAAYy4Y,MAASz4Y,KAAY0/f,KAC7C0lC,GAAU/4iB,KAAKykgB,YAErB,IAAMs0C,GAAQr/I,YAAc4vJ,MAAcjwJ,QAAet0U,MACnD/kF,KAAKgiR,UAAYj9L,GAAMkyO,SAAWmxM,GACpCrjb,GAAM36C,iBACNpqC,KAAK4M,gBAEC5M,KAAKgiR,SAAU,CACrB,MAAMunS,GAA2BvpjB,KAAK2sF,SACtCosd,GAAQhyd,UAAUhC,IAClB,MAAMyke,GAAiBxpjB,KAAK2sF,SAExB68d,IAAkBD,KAA6BC,IAG/CxpjB,KAAK4ia,eAAeV,SAASsnJ,GAAe7qC,UAAW,MAKnEyqC,mBAAmBrke,IACf,MAAMg0d,GAAU/4iB,KAAKykgB,YACf9wf,GAAUoxE,GAAMpxE,QAChBy0f,GAAaz0f,KAAYglZ,MAAchlZ,KAAYklZ,KACnDa,GAAWq/I,GAAQr/I,WACzB,GAAI0uG,IAAcrjb,GAAMkyO,OAEpBlyO,GAAM36C,iBACNpqC,KAAK6C,gBAIC62Z,IACL/lZ,KAAYy4Y,MAASz4Y,KAAY0/f,OAClC0lC,GAAQt/I,aACPJ,QAAet0U,IAEGkjb,IAEbvuG,IAAY15Z,KAAK0pa,WAAa/1Z,KAAYlQ,KAAKshF,GAAMsvL,QAAS,CACpEtvL,GAAM36C,iBACN,MAAMq/gB,GAAuBzpjB,KAAKmiR,QAAQ35I,KAAKolN,KAAQA,GAAItgU,WAAasgU,GAAIjhQ,UAC5E3sF,KAAKmiR,QAAQ55Q,QAAQk7f,KACZA,GAAOn2e,WACRm8hB,GAAuBhmD,GAAOrrb,SAAWqrb,GAAOt5F,kBAIvD,CACD,MAAMu/I,GAAyB3Q,GAAQv/I,gBACvCu/I,GAAQhyd,UAAUhC,IACd/kF,KAAK0pa,WACL0+F,IACArjb,GAAMuvL,UACNykS,GAAQt/I,YACRs/I,GAAQv/I,kBAAoBkwJ,IAC5B3Q,GAAQt/I,WAAWwuG,6BApBvBljb,GAAM36C,iBACN2ugB,GAAQt/I,WAAWwuG,uBAmBIA,CAI/BjkG,WACShka,KAAKstB,WACNttB,KAAKs6iB,UAAW,EAChBt6iB,KAAKuxF,aAAahwE,QAO1B0iZ,UACIjka,KAAKs6iB,UAAW,GACXt6iB,KAAKstB,WAAattB,KAAKymgB,YACxBzmgB,KAAK0mgB,aACL1mgB,KAAKmib,mBAAmBvoO,eACxB55M,KAAKuxF,aAAahwE,QAM1BooiB,cACI3pjB,KAAK4pjB,YAAY1kI,eAAe78a,MAAKi5Q,OAAK,IAAIn7Q,UAAU,KACpDnG,KAAKmib,mBAAmB1xZ,gBACxBzwB,KAAK6pjB,wBAIbC,iBACI,OAAO9pjB,KAAK8njB,iBAAoB,OAAM9njB,KAAK8njB,iBAAiBx2d,QAAU,GAGtE8mT,YACA,OAAQp4Y,KAAKurgB,iBAAmBvrgB,KAAKurgB,gBAAgB53O,UAEzDiiP,uBAGIv+Z,QAAQi2O,UAAU51O,KAAK,KACf13G,KAAK2xF,YACL3xF,KAAKgmK,OAAShmK,KAAK2xF,UAAU3tE,OAEjChkB,KAAKwrgB,qBAAqBxrgB,KAAKgmK,QAC/BhmK,KAAKuxF,aAAahwE,SAO1Biqf,qBAAqBxnf,IAGjB,GAFAhkB,KAAKurgB,gBAAgB5+a,SAASpkF,QAAQk7f,IAAUA,GAAOxpG,qBACvDj6Z,KAAKurgB,gBAAgB96a,QACjBzwF,KAAKgiR,UAAYh+P,GACZpO,MAAMukD,QAAQn2C,IAGnBA,GAAMzb,QAASqlJ,IAAiB5tJ,KAAK+pjB,qBAAqBn8Z,KAC1D5tJ,KAAKm3gB,kBAEJ,CACD,MAAM/K,GAAsBpsgB,KAAK+pjB,qBAAqB/liB,IAGlDoof,GACApsgB,KAAKykgB,YAAYlsG,iBAAiB6zG,IAE5BpsgB,KAAKymgB,WAGXzmgB,KAAKykgB,YAAYlsG,kBAAiB,GAG1Cv4Z,KAAKmib,mBAAmBvoO,eAM5BmwW,qBAAqB/liB,IACjB,MAAMoof,GAAsBpsgB,KAAKmiR,QAAQn/Q,KAAMyggB,KAG3C,GAAIzjgB,KAAKurgB,gBAAgB5pa,WAAW8ha,IAChC,OAAO,EAEX,IAEI,OAAuB,MAAhBA,GAAOz/e,OAAiBhkB,KAAKmggB,aAAasD,GAAOz/e,MAAOA,GAOxD,CAPwDA,MAE5DgT,IAKH,OAAO,KAGf,OAAIo1e,IACApsgB,KAAKurgB,gBAAgBnzb,OAAOg0b,IAEzBA,GAGXsmB,aAAalgK,IAET,SAAIA,KAAaxyX,KAAKgmK,QAAWhmK,KAAK0pa,WAAa9zZ,MAAMukD,QAAQq4T,OACzDxyX,KAAKmiR,SACLniR,KAAKwrgB,qBAAqBh5I,IAE9BxyX,KAAKgmK,OAASwsN,IACP,EAEJ,CAGXq2L,kBACI7ojB,KAAKykgB,YAAc,IAAIC,KAA2B1kgB,KAAKmiR,SAClD61I,cAAch4Z,KAAK0ojB,4BACnB9wJ,0BACAC,0BAA0B73Z,KAAKk0b,SAAW,MAAQ,OAClD77B,iBACAN,wBAAwB,CAAC,aAC9B/3Z,KAAKykgB,YAAYrtG,OAAO/uZ,MAAK49Z,OAAUjma,KAAKiojB,WAAW9hjB,UAAU,KACzDnG,KAAKymgB,aAGAzmgB,KAAKgiR,UAAYhiR,KAAKykgB,YAAYhrG,YACnCz5Z,KAAKykgB,YAAYhrG,WAAWwuG,wBAIhCjogB,KAAK8S,QACL9S,KAAK6C,WAGb7C,KAAKykgB,YAAY12O,OAAO1lR,MAAK49Z,OAAUjma,KAAKiojB,WAAW9hjB,UAAU,KACzDnG,KAAK+njB,YAAc/njB,KAAK6kgB,MACxB7kgB,KAAKgqjB,sBAAsBhqjB,KAAKykgB,YAAYjrG,iBAAmB,IAEzDx5Z,KAAK+njB,aAAe/njB,KAAKgiR,UAAYhiR,KAAKykgB,YAAYhrG,YAC5Dz5Z,KAAKykgB,YAAYhrG,WAAWwuG,0BAKxC6gD,gBACI,MAAMmB,IAAqBrlL,OAAM5kY,KAAKmiR,QAAQ3iM,QAASx/E,KAAKiojB,UAC5DjojB,KAAKsojB,uBAAuBjgjB,MAAK49Z,OAAUgkJ,KAAqB9jjB,UAAU4+E,KACtE/kF,KAAKkqjB,UAAUnle,GAAM9tD,OAAQ8tD,GAAM6mb,aAC/B7mb,GAAM6mb,cAAgB5rgB,KAAKgiR,UAAYhiR,KAAK+njB,aAC5C/njB,KAAK6C,QACL7C,KAAK8S,YAKb8xX,UAAS5kY,KAAKmiR,QAAQlvP,IAAIwwe,IAAUA,GAAOx/E,gBACtC57a,MAAK49Z,OAAUgkJ,KACf9jjB,UAAU,KACXnG,KAAKmib,mBAAmBvoO,eACxB55M,KAAKuxF,aAAahwE,SAI1B2oiB,UAAUzmD,GAAQmI,IACd,MAAMksC,GAAc93iB,KAAKurgB,gBAAgB5pa,WAAW8ha,IAChC,MAAhBA,GAAOz/e,OAAkBhkB,KAAK0pa,WAQ1BouI,KAAgBr0C,GAAO92a,WACvB82a,GAAO92a,SACD3sF,KAAKurgB,gBAAgBnzb,OAAOqrb,IAC5BzjgB,KAAKurgB,gBAAgBphG,SAASs5F,KAEpCmI,IACA5rgB,KAAKykgB,YAAYrsG,cAAcqrG,IAE/BzjgB,KAAKgiR,WACLhiR,KAAKm3gB,cACDvL,IAKA5rgB,KAAK8S,WAtBb2wf,GAAOt5F,WACPnqa,KAAKurgB,gBAAgB96a,QACH,MAAdzwF,KAAKgkB,OACLhkB,KAAKq3gB,kBAAkB5T,GAAOz/e,QAuBlC8zhB,KAAgB93iB,KAAKurgB,gBAAgB5pa,WAAW8ha,KAChDzjgB,KAAKq3gB,oBAETr3gB,KAAKuxF,aAAahwE,OAGtB41f,cACI,GAAIn3gB,KAAKgiR,SAAU,CACf,MAAMG,GAAUniR,KAAKmiR,QAAQt+B,UAC7B7jP,KAAKurgB,gBAAgB/4f,KAAK,CAAC/C,GAAG8qQ,KACnBv6Q,KAAKmqjB,eACNnqjB,KAAKmqjB,eAAe16iB,GAAG8qQ,GAAG4H,IAC1BA,GAAQ/wQ,QAAQ3B,IAAK0yQ,GAAQ/wQ,QAAQmpQ,KAE/Cv6Q,KAAKuxF,aAAahwE,QAI1B81f,kBAAkBC,IACd,IAAIC,GAAc,KAEdA,GADAv3gB,KAAKgiR,SACShiR,KAAK2sF,SAAS15D,IAAIwwe,IAAUA,GAAOz/e,OAGnChkB,KAAK2sF,SAAW3sF,KAAK2sF,SAAS3oE,MAAQszf,GAExDt3gB,KAAKgmK,OAASuxW,GACdv3gB,KAAKqtJ,YAAY18H,KAAK4mf,IACtBv3gB,KAAKq5f,UAAUke,IACfv3gB,KAAKq6M,gBAAgB1pL,KAAK3wB,KAAKoqjB,gBAAgB7yC,KAC/Cv3gB,KAAKmib,mBAAmBvoO,eAM5BsvW,0BACQlpjB,KAAKykgB,cACDzkgB,KAAKo4Y,MACLp4Y,KAAKykgB,YAAYvrG,qBAGjBl5Z,KAAKykgB,YAAYrsG,cAAcp4Z,KAAKurgB,gBAAgB5+a,SAAS,KAKzE07a,WACI,IAAIxyM,GACJ,OAAQ71T,KAAK+njB,aAAe/njB,KAAKstB,WAAqC,QAAvBuoS,GAAK71T,KAAKmiR,eAA4B,IAAP0zC,QAAgB,EAASA,GAAGryT,QAAU,EAGxHsP,MAAMqvQ,IACFniR,KAAK6+E,YAAYhsE,cAAcC,MAAMqvQ,IAGzC8iP,0BACI,IAAIpvM,GACJ,GAAI71T,KAAKozB,UACL,OAAO,KAEX,MAAM8xe,GAA2C,QAAhCrvM,GAAK71T,KAAK8njB,wBAAqC,IAAPjyP,QAAgB,EAASA,GAAGyzM,aAC/EnE,GAAkBD,GAAUA,GAAU,IAAM,GAClD,OAAOllgB,KAAKolgB,eAAiBD,GAAkBnlgB,KAAKolgB,eAAiBF,GAGzEmlD,2BACI,OAAIrqjB,KAAKymgB,WAAazmgB,KAAKykgB,aAAezkgB,KAAKykgB,YAAYhrG,WAChDz5Z,KAAKykgB,YAAYhrG,WAAWpvV,GAEhC,KAGX2+e,4BACI,IAAInzP,GACJ,GAAI71T,KAAKozB,UACL,OAAO,KAEX,MAAM8xe,GAA2C,QAAhCrvM,GAAK71T,KAAK8njB,wBAAqC,IAAPjyP,QAAgB,EAASA,GAAGyzM,aACrF,IAAItlf,IAASkhf,GAAUA,GAAU,IAAM,IAAMllgB,KAAKkojB,SAClD,OAAIlojB,KAAKolgB,iBACLphf,IAAS,IAAMhkB,KAAKolgB,gBAEjBphf,GAGX4kiB,oBAAoBh4R,IAChB5wR,KAAKwzF,aAAa7iE,KAAKigQ,IAM3BgmP,kBAAkBjjb,IACd3zF,KAAK62gB,iBAAmBljb,GAAI54D,KAAK,KAMrC+7e,mBACI92gB,KAAK8S,QACL9S,KAAK4M,OAMLqpgB,uBACA,OAAOj2gB,KAAK+njB,aAAe/njB,KAAKo4Y,OAAUp4Y,KAAKs6iB,YAAct6iB,KAAKkxa,cAG1Eo5I,GAAevre,UAAf,4BAA2Gure,IA7rBRrre,8BA6rBwCS,MA7rBxCT,8BA6rBqEA,qBA7rBrEA,8BA6rBsGA,UA7rBtGA,8BA6rB4H+mX,MA7rB5H/mX,8BA6rB6JA,cA7rB7JA,8BA6rBuL6kW,KAA1R,GA7rBmG7kW,8BA6rBqOqmd,SAAxU,GA7rBmGrmd,8BA6rB2Qqmd,qBAA9W,GA7rBmGrmd,8BA6rB6Turb,KAAha,GA7rBmGvrb,8BA6rBwWqmd,YAA3c,IA7rBmGrmd,8BA6rB6Z,YA7rB7ZA,8BA6rBqcuoe,IA7rBrcvoe,8BA6rB4e87W,MA7rB5e97W,8BA6rBygBwoe,GAA5mB,KACA6C,GAAetre,UA9rBoFC,8BA8rBnG,MAA+Fqre,GAA/Ft6d,oCA9rBmG/Q,wBA8rBnG9uE,KA9rBmG8uE,wBA8rBnGxvE,KA9rBmGwvE,wBA8rB20B69W,KAA96B,iBA9rBmG79W,2BA8rBnGhxC,GA9rBmGgxC,6BA8rBnGjxC,qBA9rBmGixC,2BA8rBnGhxC,GA9rBmGgxC,6BA8rBnGjxC,mBA9rBmGixC,2BA8rBnGhxC,GA9rBmGgxC,6BA8rBnGjxC,6kBA9rBmGixC,2EA+wBnG,iBAAwBqre,GACpBzqjB,cACI8rB,SAASinR,WAET5yS,KAAKuqjB,WAAa,EAElBvqjB,KAAKwqjB,iBAAmB,EAExBxqjB,KAAKyqjB,iBAAmB,MAMxBzqjB,KAAKwwb,SAAW,EAChBxwb,KAAK0qjB,WAAa,CACd,CACI5ie,QAAS,QACTC,QAAS,MACTC,SAAU,QACVC,SAAU,OAEd,CACIH,QAAS,QACTC,QAAS,SACTC,SAAU,QACVC,SAAU,WAWtB0ie,wBAAwBjhF,GAAekhF,GAAcC,IACjD,MAAMl9d,GAAa3tF,KAAK8qjB,iBAOlBC,GAN4Bp9d,GAAa+7Y,GAMWkhF,GALjCj9d,GAAa,EAMtC,OAAOlmE,KAAK+2C,IAAI/2C,KAAKqgB,IAAI,EAAGijhB,IAAwBF,IAExDrojB,WACImpB,MAAMnpB,WACNxC,KAAKmta,eACAp/I,SACA1lR,MAAK49Z,OAAUjma,KAAKiojB,WACpB9hjB,UAAU,KACPnG,KAAKymgB,YACLzmgB,KAAKgrjB,aAAehrjB,KAAKqqF,QAAQx3E,cAAc2gS,wBAC/CxzS,KAAKmib,mBAAmBvoO,kBAIpChtM,OACQ+e,MAAM08e,aACN18e,MAAM/e,OACN5M,KAAKgrjB,aAAehrjB,KAAKqqF,QAAQx3E,cAAc2gS,wBAG/CxzS,KAAKwqjB,iBAAmBv9iB,SAAS8rE,iBAAiB/4E,KAAKqqF,QAAQx3E,eAAe6+S,UAAY,KAC1F1xT,KAAKirjB,4BAELjrjB,KAAK47Z,QAAQgC,SAASv1Z,MAAKi5Q,OAAK,IAAIn7Q,UAAU,KACtCnG,KAAKwqjB,kBACLxqjB,KAAK4pjB,YAAY1ie,YACjBlnF,KAAK4pjB,YAAY1ie,WAAWikW,iBAC5Bnrb,KAAK4pjB,YAAY1ie,WAAWikW,eAAep4Z,MAAM2+R,SAAY,GAAE1xT,KAAKwqjB,yBAMpFR,sBAAsBr3gB,IAClB,MAAMq3d,IAAaC,QAA8Bt3d,GAAO3yC,KAAKmiR,QAASniR,KAAKkqgB,cACrEv8a,GAAa3tF,KAAK8qjB,iBAKpB9qjB,KAAK6kgB,MAAMhyf,cAAck/I,UAJf,IAAVp/G,IAA8B,IAAfq3d,GAIsB,GAGAK,SAA0B13d,GAAQq3d,IAAcr8a,GAAYA,GAAY3tF,KAAK6kgB,MAAMhyf,cAAck/I,UA96BlH,IA86B6Hm5Z,CAGzJrB,sBACI7pjB,KAAKmrjB,2BACLnrjB,KAAK6kgB,MAAMhyf,cAAck/I,UAAY/xJ,KAAKuqjB,WAE9C3B,oBAAoBh4R,IACZ5wR,KAAKymgB,UACLzmgB,KAAKuqjB,WAAa,GAGlBvqjB,KAAK4pjB,YAAY/he,QAAU,EAC3B7nF,KAAKmib,mBAAmBvoO,gBAE5BjuL,MAAMi9hB,oBAAoBh4R,IAE9Bw5R,gBAAgBpmiB,IACZ,OAAO,IAAIoniB,GAAgBprjB,KAAMgkB,IASrCmniB,2BACI,MAAMjgI,GAAclrb,KAAK4pjB,YAAY1ie,WAAWikW,eAAe33I,wBACzDiwJ,GAAezjc,KAAKmta,eAAeuS,kBACnCyW,GAAQn2b,KAAKk0b,SACbm3H,GAAerrjB,KAAKgiR,SACpBspS,GACAC,GACN,IAAI1je,GAEJ,GAAI7nF,KAAKgiR,SACLn6L,GAl8B4B0je,QAk8BlBD,GAELtrjB,KAAKqojB,uBACVxge,GAp9BmB,OAs9BlB,CACD,IAAI8E,GAAW3sF,KAAKurgB,gBAAgB5+a,SAAS,IAAM3sF,KAAKmiR,QAAQ/gJ,MAChEv5C,GAAU8E,IAAYA,GAASklN,MAt9BL05Q,GAFP,EAw9BoDA,CAGtEp1H,KACDtuW,KAAW,GAGf,MAAMqyV,GAAe,GAAKgR,GAAYrkK,KAAOh/L,IAAWsuW,GAAQk1H,GAAe,IACzElxI,GAAgB+Q,GAAY72a,MAAQwzE,GAAU47W,GAAa9tb,OAASwgb,GAAQ,EAAIk1H,IAElFnxI,GAAe,EACfryV,IAAWqyV,GA/8Be,EAi9BrBC,GAAgB,IACrBtyV,IAAWsyV,GAl9Be,GAu9B9Bn6a,KAAK4pjB,YAAY/he,QAAUpgE,KAAKC,MAAMmgE,IACtC7nF,KAAK4pjB,YAAY1ie,WAAWkjW,iBAOhCohI,yBAAyB9hF,GAAekhF,GAAcC,IAClD,MAAMl9d,GAAa3tF,KAAK8qjB,iBAClBW,IAA0B99d,GAAa3tF,KAAKgrjB,aAAa92iB,QAAU,EACnEw3iB,GAAsBjkiB,KAAKsd,MAx/BT,IAw/ByC4oD,IACjE,IAAIg+d,GAEJ,GAAI3rjB,KAAKqojB,uBACL,OAAO,EAEX,GAAwB,IAApBrojB,KAAKuqjB,WACLoB,GAA2BjiF,GAAgB/7Y,WAEtC3tF,KAAKuqjB,aAAeM,GAAW,CAUpCc,IAR6BjiF,IADD1pe,KAAK4rjB,gBAAkBF,KASD/9d,IAL1BA,IAAe3tF,KAAK4rjB,gBAAkBj+d,GAtgC1C,KAsgCkFA,GAKvCk+d,MAM/DF,GAA2Bf,GAAej9d,GAAa,EAK3D,OAAOlmE,KAAKC,OAAiC,EAA3BikiB,GAAgCF,IAQtDK,4BAA4BjB,IACxB,MAAMl9d,GAAa3tF,KAAK8qjB,iBAClBrnH,GAAezjc,KAAKmta,eAAeuS,kBACnCqsI,GAAoB/rjB,KAAKgrjB,aAAa52iB,IA3gCd,EA4gCxB43iB,GAAuBvoH,GAAavvb,OAASlU,KAAKgrjB,aAAan4Q,OA5gCvC,EA6gCxBo5Q,GAAiBxkiB,KAAK24E,IAAIpgG,KAAKwwb,UAE/B07H,GAAoBC,KADI3tf,IAAIx+D,KAAK4rjB,gBAAkBj+d,GApiCjC,KAqiCqBs+d,GAAiBjsjB,KAAKgrjB,aAAa92iB,OAC5Eg4iB,GAAoBF,GACpBhsjB,KAAKosjB,eAAeF,GAAmBF,IAEtCz9gB,GAAqBw9gB,GACtB/rjB,KAAKqsjB,iBAAiBJ,GAAgBF,GAAmBlB,IAGzD7qjB,KAAKyqjB,iBAAmBzqjB,KAAKssjB,0BAIrCF,eAAeF,GAAmBF,IAE9B,MAAMO,GAAwB9kiB,KAAKC,MAAMwkiB,GAAoBF,IAG7DhsjB,KAAKuqjB,YAAcgC,GACnBvsjB,KAAKwwb,UAAY+7H,GACjBvsjB,KAAKyqjB,iBAAmBzqjB,KAAKssjB,0BAIzBtsjB,KAAKuqjB,YAAc,IACnBvqjB,KAAKuqjB,WAAa,EAClBvqjB,KAAKwwb,SAAW,EAChBxwb,KAAKyqjB,iBAAoB,kBAIjC4B,iBAAiBJ,GAAgBF,GAAmBlB,IAEhD,MAAM2B,GAAwB/kiB,KAAKC,MAAMukiB,GAAiBF,IAS1D,GANA/rjB,KAAKuqjB,YAAciC,GACnBxsjB,KAAKwwb,UAAYg8H,GACjBxsjB,KAAKyqjB,iBAAmBzqjB,KAAKssjB,0BAIzBtsjB,KAAKuqjB,YAAcM,GAInB,OAHA7qjB,KAAKuqjB,WAAaM,GAClB7qjB,KAAKwwb,SAAW,OAChBxwb,KAAKyqjB,iBAAoB,cACzB,CAIRQ,4BACI,MAAMt9d,GAAa3tF,KAAK8qjB,iBAClBp2P,GAAQ10T,KAAK4rjB,gBACbrsC,GAAc93f,KAAK+2C,IAAIk2P,GAAQ/mO,GAzlCb,KA4lClBk9d,GAAY4B,GAFoB9+d,GAEI4xb,GAE1C,IAAImtC,GAEAA,GADA1sjB,KAAKo4Y,MACkB,EAGA3wX,KAAKqgB,IAAI9nC,KAAKmiR,QAAQt+B,UAAUzyO,QAAQpR,KAAKurgB,gBAAgB5+a,SAAS,IAAK,GAEtG+/d,KAAwBziD,QAA8ByiD,GAAsB1sjB,KAAKmiR,QAASniR,KAAKkqgB,cAG/F,MAAM0gD,GAAerrC,GAAc,EACnCv/gB,KAAKuqjB,WAAavqjB,KAAK2qjB,wBAAwB+B,GAAsB9B,GAAcC,IACnF7qjB,KAAKwwb,SAAWxwb,KAAKwrjB,yBAAyBkB,GAAsB9B,GAAcC,IAClF7qjB,KAAK8rjB,4BAA4BjB,IAGrCyB,0BACI,MAAM3+d,GAAa3tF,KAAK8qjB,iBAClBW,IAA0B99d,GAAa3tF,KAAKgrjB,aAAa92iB,QAAU,EAEzE,MAAQ,OADQuT,KAAK24E,IAAIpgG,KAAKwwb,UAAYi7H,GAAyB99d,GAAa,UAIpFm9d,iBACI,OAhnCsB,EAgnCf9qjB,KAAKwqjB,gBAAmBmC,CAGnCf,gBACI,OAAO5rjB,KAAKmiR,QAAQ3+Q,OAASxD,KAAKkqgB,aAAa1mgB,QAGvDopjB,GAAU7te,UAAV,qDAvjCmGE,kCAujCG2te,MAAtG5+gB,IAAsG4+gB,KAAtG,GACAA,GAAUhte,UAxjCyFX,8BAwjCnG,MAA0F2te,GAA1FlpjB,uEAxjCmGu7E,2BAwjCnGhxC,GAG0E25gB,GAH1E,GAxjCmG3oe,2BAwjCnGhxC,GAGyJy3d,KAHzJ,GAxjCmGzmb,2BAwjCnGhxC,GAGoOw3d,KAHpO,iBAxjCmGxmb,2BAwjCnG7wC,GAxjCmG6wC,6BAwjCnGjxC,2BAxjCmGixC,2BAwjCnG7wC,GAxjCmG6wC,6BAwjCnGjxC,eAxjCmGixC,2BAwjCnG7wC,GAxjCmG6wC,6BAwjCnGjxC,wCAAmP,WAAnP,oBAAoR,OAApR,gBAA6S,OAA7S,+DAxjCmGixC,uBAwjCnG,8BAA0FjxC,uBAxjCSixC,CAwjCnG,0BAA0FjxC,eAxjCSixC,CAwjCnG,yBAA0FjxC,eAA1F,OAxjCmGixC,wBAwjCnG,WAxjCmGA,CAwjCnG,uBAxjCmGA,CAwjCnG,iDAxjCmGA,CAwjCnG,6BAxjCmGA,CAwjCnG,gCAxjCmGA,CAwjCnG,uCAxjCmGA,CAwjCnG,uCAxjCmGA,CAwjCnG,6BAxjCmGA,CAwjCnG,6CAxjCmGA,CAwjCnG,uDAxjCmGA,wBAwjCnG,kCAxjCmGA,CAwjCnG,mCAxjCmGA,CAwjCnG,kCAxjCmGA,CAwjCnG,4BAxjCmGA,CAwjCnG,qJAxjCmGA,+BAwjC09B,CACrjC,CAAEoJ,QAAS8vb,KAAqB35a,YAAaoud,IAC7C,CAAEvke,QAASs9a,KAA6Bnna,YAAaoud,MA1jCsC3te,wCAwjCnGc,qnCAxjCmGd,4BAwjCnGztE,IAxjCmGytE,2BA2jCm0B,aA3jCn0BA,uBA2jCg8B,0BAAUjxC,cA3jC18BixC,2BA2jC2gC,WA3jC3gCA,uBA2jC6lC,kBA3jC7lCA,uBA2jC2sC,kBA3jC3sCA,sDA2jC++C,WA3jC/+CA,sBA2jCuhD,WA3jCvhDA,oDA2jC+kD,0BA3jC/kDA,uBA2jCwmE,kCAAkBjxC,YA3jC1nEixC,CA2jCwmE,2BAA0CjxC,kBA3jClpEixC,CA2jCwmE,2BAAwEjxC,cAHnxE,eAxjCmGixC,wBAwjCnG,GAxjCmGA,wBA2jCi2B,8CA3jCj2BA,sBA2jC2iC,GA3jC3iCA,uBA2jC2iC,qBA3jC3iCA,wBA2jCgkC,kBA3jChkCA,sBA2jCypC,GA3jCzpCA,uBA2jCypC,mBA3jCzpCA,sBA2jCkvC,GA3jClvCA,uBA2jCkvC,mBA3jClvCA,sBA2jCswD,GA3jCtwDA,uBA2jCswD,sDA3jCtwDA,CA2jCswD,uDA3jCtwDA,CA2jCswD,+BA3jCtwDA,CA2jCswD,uCA3jCtwDA,CA2jCswD,6CA3jCtwDA,CA2jCswD,+EA3jCtwDA,CA2jCswD,4CAHz2DuhM,YAG+3KysQ,KAAuIC,KAAqEA,KAAiFA,KAA6DD,KAAq8BC,MAH9pNltc,s1EAG8uN,CAACsne,GAAoBC,mBAAoBD,GAAoBl6B,iBAH3yNtzU;;;;;;;;AAsDA,UAEA0oW,GAAgBzje,UAAhB,4BAA4Gyje,KAC5GA,GAAgBtie,UAjnCmFjB,6BAinCnG,MAA6Guje,KAM7GA,GAAgBrie,UAvnCmFlB,6BAunCnG,WAAyI,CAACyoe,IAA1Ip+a,SAA0L,CAACu0V,KAAc7gC,KAAe4tE,KAAiBxqb,MAAkBslW,KACnP6/G,KACA36B,KACAxqb;;;;;;;;;;;;;;iOC3zCD,eACP,8BAEA,QACAvgF,gBACAG,cAEAkqB,YACA,2CAGA,gBAA8B7pB,IAC9BR,mBACA8rB,UACA3rB,cAEAgqR,UACAhqR;;;;;;;yECgEmGi/E,0DAwvB6P,WAxvB7PA,uBAwvBgS,mBAxvBhSA,iCAwvBgSpkD,IAAUj0B,EAxvB1Sq4E,0BAwvB0S4te,uBAxvB1S5te,iGAwvB6V,sEAxvB7VA,2BAwvBugB,wBAxvBvgBA,yBAwvBmjB,KAxvBnjBA,mLAq5ByK,WAr5BzKA,uBAq5B4M,mBAr5B5MA,iCAq5B4MpkD,IAAUj0B,EAr5BtNq4E,0BAq5BsN4te,uBAr5BtN5te,iGAq5ByQ,uEAr5BzQA,2BAq5Bqb,yBAr5BrbA,yBAq5Bke,KAr5BleA,uFAtD7F6te,GAAsB,CAExBC,iBAAiB1ie,QAAQ,YAAa,EAKlCsjQ,QAAM,sBAAsB56T,QAAM,CAC9B7V,UAAa,OACb6qC,WAAc,cAElB4lS,QAAM,QAAQ56T,QAAM,CAEhB,aAAc,OACdg1B,WAAc,aAElBsle,QAAW,wBAAwBjuQ,QAAQ,SAC3CiuQ,QAAW,uCAAuCjuQ,QAAQ,8CAYlE,MAAM4tS,GAA8B,IAAIvka,iBAAe,8BAA+B,CAClFC,WAAY,OACZrmJ,QAQJ,cACI,OAAO,KAHL4qjB,GAAuB,IAAIxka,iBAAe,wBAKhD,gBAA+Bs9S,KAC3Blmc,YAAYsib,GAAoB+qI,GAAYhue,GAAYymX,GAAkB/kC,IACtEj1Y,MAAMuzD,GAAYymX,GAAkB/kC,IACpC5ga,KAAKmib,mBAAqBA,GAC1Bnib,KAAKktjB,WAAaA,GAEtBvnS,qBACI3lR,KAAKktjB,WAAWC,sBAAsBhnjB,UAAU,KAC5CnG,KAAKmib,mBAAmBvoO,kBAIpCwzW,EAAiBrue,UAAjB,4BAA6Gque,GAAVnue,8BAA4CA,qBAA5CA,+BAA6EwlX,gBAAW,IAAM4oH,KAA9Fpue,8BAA8HA,cAA9HA,8BAAwJS,MAAxJT,8BAAwLA,YAC3Rmue,EAAiBxte,UADkFX,8BACnG,MAAiGmue,EAAjG1pjB,oHADmGu7E,wBACnG,sDADmGA,CACnG,oEADmGA,+BACmP,CAC9U,CACIoJ,QAAS09W,KACTvnW,YAAa4ud,KAJ0Enue,wCACnGc,oEADmGd,uDAM5C,KALvDo7L,oCAkCA,SACIx6Q,YAAYg/E,GAAam/U,GAAmBoI,GAAejnV,GAAWy8U,GAASm8H,GAAuB/8E,GAAMkyG,IACxGltjB,KAAK6+E,YAAcA,GACnB7+E,KAAKg+Z,kBAAoBA,GACzBh+Z,KAAKoma,cAAgBA,GACrBpma,KAAKm/E,UAAYA,GACjBn/E,KAAK47Z,QAAUA,GACf57Z,KAAK+3hB,sBAAwBA,GAC7B/3hB,KAAKg7c,KAAOA,GACZh7c,KAAKktjB,WAAaA,GAClBltjB,KAAKstjB,qCAAuC,KAE5CttjB,KAAKutjB,mBAAoB,EACzBvtjB,KAAKo8b,UAAY,QACjBp8b,KAAKwtjB,MAAQ,OACbxtjB,KAAKytjB,eAAgB,EACrBztjB,KAAKmvhB,SAAU,EAEfnvhB,KAAK0tjB,kBAAoB,IAAI3xiB,KAE7B/b,KAAK2tjB,cAAgB,IAAI5xiB,KAEzB/b,KAAKmuhB,gBAAkB,OAEvBnuhB,KAAKwzF,aAED,IAAI8yU,gBAA2B,GAEnCtma,KAAKuojB,cAAgBvojB,KAAKwzF,aAAanrF,MAAK3B,OAAOyiQ,IAAKA,KAAIl2O,OAAI,SAEhEjzB,KAAK4tjB,YAAc5tjB,KAAK0tjB,kBAAkBrljB,MAAK3B,OAAO/F,IAAKA,GAAEs+hB,YAAct+hB,GAAEs4hB,SAAyC,IAA9Bt4hB,GAAEs4hB,QAAQ7nhB,QAAQ,SAAgBy8iB,OAAMj1M,IAEhI54W,KAAKwojB,cAAgBxojB,KAAKwzF,aAAanrF,MAAK3B,OAAOyiQ,KAAMA,KAAIl2O,OAAI,SAEjEjzB,KAAK8tjB,YAAc9tjB,KAAK0tjB,kBAAkBrljB,MAAK3B,OAAO/F,IAAKA,GAAEs+hB,YAAct+hB,GAAEs4hB,SAAyB,SAAdt4hB,GAAEs4hB,SAAqB40B,OAAMj1M,IAErH54W,KAAKsib,WAAa,IAAIvma,KAGtB/b,KAAK+tjB,kBAAoB,IAAIznJ,eAK7Btma,KAAKgujB,aAAe,IAAIjyiB,KACxB/b,KAAKwzF,aAAartF,UAAW62F,KACrBA,IACIh9F,KAAKg7c,OACLh7c,KAAKstjB,qCAAuCttjB,KAAKg7c,KAAKz7C,eAE1Dv/Z,KAAKiujB,cAEAjujB,KAAKkujB,wBACVlujB,KAAKgvhB,cAAchvhB,KAAKmujB,YAAc,aAQ9CnujB,KAAK47Z,QAAQc,kBAAkB,MAC3B+oC,OAAUzlc,KAAK6+E,YAAYhsE,cAAe,WACrCxK,MAAK3B,OAAOq+E,IACNA,GAAMpxE,UAAY04Y,OAAWrsZ,KAAK6M,gBAAiBwsZ,QAAet0U,MACzEkhV,OAAUjma,KAAKsib,aACdn8a,UAAU4+E,IAAS/kF,KAAK47Z,QAAQpzJ,IAAI,KACrCxoQ,KAAK6C,QACLkiF,GAAMn6C,kBACNm6C,GAAM36C,sBAKdpqC,KAAK2tjB,cACAtljB,MAAKo5Z,OAAqB,CAACjha,GAAGL,KACxBK,GAAEy+hB,YAAc9+hB,GAAE8+hB,WAAaz+hB,GAAEy4hB,UAAY94hB,GAAE84hB,UAErD9yhB,UAAW4+E,KACZ,MAAQk6c,aAAWhG,YAAYl0c,IACE,IAA5Bk0c,GAAQ7nhB,QAAQ,SAA+B,SAAd6thB,IACrB,SAAZhG,IAAoD,IAA9BgG,GAAU7thB,QAAQ,UACzCpR,KAAKwzF,aAAa7iE,KAAK3wB,KAAKmvhB,WAKpCh7gB,eACA,OAAOnU,KAAKo8b,UAEZjob,aAAS6P,KAETA,GAAkB,QAAVA,GAAkB,MAAQ,WACpBhkB,KAAKo8b,YAEXp8b,KAAKo5b,aACLp5b,KAAKoujB,wBAAwBpqiB,IAEjChkB,KAAKo8b,UAAYp4a,GACjBhkB,KAAK+tjB,kBAAkBp9hB,QAI3B4xP,WACA,OAAOviR,KAAKwtjB,MAEZjrS,SAAKv+P,IACLhkB,KAAKwtjB,MAAQxpiB,GACbhkB,KAAKqujB,wBACLrujB,KAAKgujB,aAAazsiB,OAGlB1U,mBACA,OAAO7M,KAAKytjB,cAEZ5gjB,iBAAamX,IACbhkB,KAAKytjB,eAAgBtvJ,QAAsBn6Y,IAS3C6xG,gBACA,MAAM7xG,GAAQhkB,KAAKsujB,WAInB,OAAa,MAATtqiB,GACkB,SAAdhkB,KAAKuiR,KACE,SAGA,iBAGRv+P,GAEP6xG,cAAU7xG,KACI,SAAVA,IAA8B,UAAVA,IAA8B,MAATA,MACzCA,IAAQm6Y,QAAsBn6Y,KAElChkB,KAAKsujB,WAAatqiB,GAMlBg5E,aACA,OAAOh9F,KAAKmvhB,QAEZnyb,WAAOh5E,IACPhkB,KAAKo9F,QAAO+gU,QAAsBn6Y,KAOtCw0gB,YAAY54b,GAASuiL,IACZniR,KAAK+3hB,sBAAsB95Q,YAAYr+K,MACxCA,GAAQmyB,UAAW,EAEnB/xH,KAAK47Z,QAAQc,kBAAkB,KAC3B,MAAM50J,GAAW,KACbloK,GAAQovK,oBAAoB,OAAQlH,IACpCloK,GAAQovK,oBAAoB,YAAalH,IACzCloK,GAAQ21T,gBAAgB,aAE5B31T,GAAQ6qK,iBAAiB,OAAQ3C,IACjCloK,GAAQ6qK,iBAAiB,YAAa3C,OAG9CloK,GAAQ9sF,MAAMqvQ,IAMlBs2Q,oBAAoBzmI,GAAU7vI,IAC1B,IAAIu2Q,GAAiB14hB,KAAK6+E,YAAYhsE,cAAc0qZ,cAAcvL,IAC9D0mI,IACA14hB,KAAKw4hB,YAAYE,GAAgBv2Q,IAOzC8rS,aACI,IAAKjujB,KAAKq4hB,WACN,OAEJ,MAAMz4b,GAAU5/F,KAAK6+E,YAAYhsE,cAIjC,OAAQ7S,KAAK61H,gBACJ,MACA,SACD,YACC,MACA,iBACD71H,KAAKq4hB,WAAWz7H,+BAA+BllT,KAAK62c,MAC3CA,IAAiE,mBAAzCvujB,KAAK6+E,YAAYhsE,cAAcC,OACxD8sF,GAAQ9sF,UAGhB,UACC,gBACD9S,KAAKy4hB,oBAAoB,4CACzB,cAEAz4hB,KAAKy4hB,oBAAoBz4hB,KAAK61H,WAC9B,CAOZm5Z,cAAc7e,IACa,WAAnBnwgB,KAAK61H,YAGL71H,KAAKstjB,qCACLttjB,KAAKoma,cAAcnB,SAASjla,KAAKstjB,qCAAsCn9C,IAGvEnwgB,KAAK6+E,YAAYhsE,cAAc26I,OAEnCxtJ,KAAKstjB,qCAAuC,MAGhDY,uBACI,MAAMM,GAAWxujB,KAAKg7c,KAAKz7C,cAC3B,QAASivJ,IAAYxujB,KAAK6+E,YAAYhsE,cAAcu0E,SAASone,IAEjE57iB,kBACI5S,KAAKo5b,aAAc,EACnBp5b,KAAKq4hB,WAAar4hB,KAAKg+Z,kBAAkB71U,OAAOnoF,KAAK6+E,YAAYhsE,eACjE7S,KAAKqujB,wBAGkB,QAAnBrujB,KAAKo8b,WACLp8b,KAAKoujB,wBAAwB,OAGrC16R,wBAKQ1zR,KAAKm/E,UAAUE,YACfr/E,KAAKutjB,mBAAoB,GAGjCrkjB,cACI,IAAI2sT,GACA71T,KAAKq4hB,YACLr4hB,KAAKq4hB,WAAWv+Q,UAEI,QAAvB+7C,GAAK71T,KAAKsya,eAA4B,IAAPz8G,IAAyBA,GAAGnxC,SAC5D1kR,KAAKsya,QAAU,KACftya,KAAK0tjB,kBAAkB7ziB,WACvB7Z,KAAK2tjB,cAAc9ziB,WACnB7Z,KAAKgujB,aAAan0iB,WAClB7Z,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAOpBjN,KAAK6hjB,IACD,OAAOzujB,KAAKo9F,QAAO,EAAMqxd,IAG7B5rjB,QACI,OAAO7C,KAAKo9F,QAAO,GAGvBsxd,yBAII,OAAO1ujB,KAAK2ujB,UAAsB,GAA0B,EAAM,SAQtEvxd,OAAOwzL,IAAU5wR,KAAKg9F,OAAQyxd,IAGtB79R,IAAU69R,KACVzujB,KAAKmujB,WAAaM,IAEtB,MAAMpoe,GAASrmF,KAAK2ujB,SAAS/9R,IACTA,IAAU5wR,KAAKkujB,uBAAwBlujB,KAAKmujB,YAAc,WAC9E,OAAKv9R,KACD5wR,KAAKmujB,WAAa,MAEf9ne,GAQXsoe,SAAS/9R,GAAQ6+P,GAActf,IAC3B,YAAKgf,QAAUv+P,GACfv4P,GACIr4B,KAAKmuhB,gBAAkBnuhB,KAAKutjB,kBAAoB,OAAS,gBAGzDvtjB,KAAKmuhB,gBAAkB,OACnBsB,IACAzvhB,KAAKgvhB,cAAc7e,KAG3BnwgB,KAAKqujB,wBACE,IAAIh3c,QAAQi2O,KACfttV,KAAKwzF,aAAanrF,MAAKi5Q,OAAK,IAAIn7Q,UAAUyG,IAAQ0gV,GAAQ1gV,GAAO,OAAS,YAGlFgijB,YACI,OAAO5ujB,KAAK6+E,YAAYhsE,eAAgB7S,KAAK6+E,YAAYhsE,cAAcwwO,aAAe,EAG1FgrU,wBACQrujB,KAAKq4hB,aAELr4hB,KAAKq4hB,WAAW/1Q,QAAUtiR,KAAKg9F,QAAwB,SAAdh9F,KAAKuiR,KAAS,CAS/D6rS,wBAAwB7vI,IACpB,MAAM3+U,GAAU5/F,KAAK6+E,YAAYhsE,cAC3BiuH,GAASlhC,GAAQiqP,WACH,QAAhB00F,IACKv+a,KAAKsya,UACNtya,KAAKsya,QAAUtya,KAAKg7c,KAAK7mC,cAAc,qBACvCrzS,GAAOsxK,aAAapyS,KAAKsya,QAAS1yU,KAEtCkhC,GAAOx3F,YAAYs2D,KAEd5/F,KAAKsya,SACVtya,KAAKsya,QAAQzoF,WAAWz3C,aAAaxyM,GAAS5/F,KAAKsya,UAI/Du8I,GAAU9ve,UAAV,4BAAsG8ve,IA9YH5ve,8BA8Y8BA,cA9Y9BA,8BA8YwD+mX,MA9YxD/mX,8BA8YwF+mX,MA9YxF/mX,8BA8YoH6kW,MA9YpH7kW,8BA8Y4IA,UA9Y5IA,8BA8YkK+mX,MA9YlK/mX,8BA8YsMU,KAAzS,GA9YmGV,8BA8Y2Ogue,GAA9U,KACA4B,GAAUjve,UA/YyFX,8BA+YnG,MAA0F4ve,GAA1FnrjB,8DA/YmGu7E,wBA+YnG1nE,kBA/YmG0nE,2BA+YnGrkD,GA/YmGqkD,6BA+YnGpkD,8CAAkd,KAAld,+DA/YmGokD,oCA+YnG,uCAA0FpkD,+BA/YSokD,CA+YnG,sCAA0FpkD,4BAA1F,OA/YmGokD,wBA+YnG,cA/YmGA,oCA+YnG,iCA/YmGA,wBA+YnG,qCA/YmGA,CA+YnG,mCA/YmGA,CA+YnG,mCA/YmGA,CA+YnG,mCA/YmGA,CA+YnG,+dA/YmGA,yDA+Y08B,aA/Y18BA,yBA+YihC,GA/YjhCA,6BA+YnGuhM,YAAmrC9gM,MAAnrC26L,gCAAmwC,CAACyyS,GAAoBC,kBAAxxCjzW,oBAgEA,SACIj6M,YAAYkoa,GAAMrM,GAAUE,GAASumB,GAAoBukB,GAAeooH,IAAkB,EAAOzhD,IAC7FrtgB,KAAK+na,KAAOA,GACZ/na,KAAK07Z,SAAWA,GAChB17Z,KAAK47Z,QAAUA,GACf57Z,KAAKmib,mBAAqBA,GAC1Bnib,KAAKqtgB,eAAiBA,GAEtBrtgB,KAAK+ujB,SAAW,IAAI13J,YAEpBr3Z,KAAKgub,cAAgB,IAAI1nB,eAEzBtma,KAAKsib,WAAa,IAAIvma,KAEtB/b,KAAKgvjB,gBAAkB,IAAIjziB,KAM3B/b,KAAKivjB,gBAAkB,CAAEpoS,KAAM,KAAMxyQ,MAAO,MAC5CrU,KAAKmtjB,sBAAwB,IAAIpxiB,KAG7BgsZ,IACAA,GAAKh6I,OAAO1lR,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU,KACnDnG,KAAKkvjB,mBACLlvjB,KAAKmvjB,yBAKbzoH,GACK34K,SACA1lR,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,IAAMnG,KAAKmvjB,wBAC1BnvjB,KAAKovjB,UAAYN,GAGjBjmhB,YACA,OAAO7oC,KAAKqvjB,OAGZvmhB,UACA,OAAO9oC,KAAKsvjB,KAUZC,eACA,OAAOvvjB,KAAKovjB,UAEZG,aAASvriB,IACThkB,KAAKovjB,WAAYjxJ,QAAsBn6Y,IAOvC01G,kBACA,OAA8B,MAA1B15H,KAAKwvjB,mBACGxvjB,KAAKqvjB,QAA+B,SAArBrvjB,KAAKqvjB,OAAO9sS,OAAoBviR,KAAKsvjB,MAA2B,SAAnBtvjB,KAAKsvjB,KAAK/sS,KAE3EviR,KAAKwvjB,kBAEZ91b,gBAAY11G,IACZhkB,KAAKwvjB,kBAA6B,MAATxriB,GAAgB,MAAOm6Y,QAAsBn6Y,IAGtEw/Z,iBACA,OAAOxjb,KAAKyvjB,cAAgBzvjB,KAAK0vjB,SAErC/pS,qBACI3lR,KAAK2vjB,YAAYnwe,QACZn3E,MAAK86a,OAAUnjb,KAAK2vjB,cAAc1pJ,OAAUjma,KAAKsib,aACjDn8a,UAAWypjB,KACZ5vjB,KAAK+ujB,SAAShvb,MAAM6vb,GAAOlpjB,OAAOmjC,KAASA,GAAKqjhB,YAAcrjhB,GAAKqjhB,aAAeltjB,OAClFA,KAAK+ujB,SAASvtE,oBAElBxhf,KAAK+ujB,SAASvve,QAAQn3E,MAAK86a,OAAU,OAAOh9a,UAAU,KAClDnG,KAAKkvjB,mBACLlvjB,KAAK+ujB,SAASxmjB,QAASqnjB,KACnB5vjB,KAAK6vjB,mBAAmBD,IACxB5vjB,KAAK8vjB,qBAAqBF,IAC1B5vjB,KAAK+vjB,iBAAiBH,QAErB5vjB,KAAK+ujB,SAASvrjB,QACfxD,KAAKgwjB,cAAchwjB,KAAKqvjB,SACxBrvjB,KAAKgwjB,cAAchwjB,KAAKsvjB,QACxBtvjB,KAAKmvjB,uBAETnvjB,KAAKmib,mBAAmBvoO,iBAG5B55M,KAAK47Z,QAAQc,kBAAkB,KAC3B18Z,KAAKgvjB,gBACA3mjB,MAAKu1F,OAAa,KACvBqoU,OAAUjma,KAAKsib,aACVn8a,UAAU,IAAMnG,KAAKmvjB,0BAGlCjmjB,cACIlJ,KAAKmtjB,sBAAsBtziB,WAC3B7Z,KAAKgvjB,gBAAgBn1iB,WACrB7Z,KAAK+ujB,SAASj1S,UACd95Q,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAGpBjN,OACI5M,KAAK+ujB,SAASxmjB,QAAQqnjB,IAAUA,GAAOhjjB,QAG3C/J,QACI7C,KAAK+ujB,SAASxmjB,QAAQqnjB,IAAUA,GAAO/sjB,SAM3CssjB,uBAOI,IAAItoS,GAAO,EACPxyQ,GAAQ,EACZ,GAAIrU,KAAKiwjB,OAASjwjB,KAAKiwjB,MAAMjzd,OACzB,GAAuB,QAAnBh9F,KAAKiwjB,MAAM1tS,KACXsE,IAAQ7mR,KAAKiwjB,MAAMrB,oBAEK,QAAnB5ujB,KAAKiwjB,MAAM1tS,KAAgB,CAChC,MAAM5sQ,GAAQ3V,KAAKiwjB,MAAMrB,YACzB/nS,IAAQlxQ,GACRtB,IAASsB,GAGjB,GAAI3V,KAAKkwjB,QAAUlwjB,KAAKkwjB,OAAOlzd,OAC3B,GAAwB,QAApBh9F,KAAKkwjB,OAAO3tS,KACZluQ,IAASrU,KAAKkwjB,OAAOtB,oBAEI,QAApB5ujB,KAAKkwjB,OAAO3tS,KAAgB,CACjC,MAAM5sQ,GAAQ3V,KAAKkwjB,OAAOtB,YAC1Bv6iB,IAASsB,GACTkxQ,IAAQlxQ,GAOhBkxQ,GAAOA,IAAQ,KACfxyQ,GAAQA,IAAS,MACbwyQ,KAAS7mR,KAAKivjB,gBAAgBpoS,MAAQxyQ,KAAUrU,KAAKivjB,gBAAgB56iB,SACrErU,KAAKivjB,gBAAkB,CAAEpoS,QAAMxyQ,UAG/BrU,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKmtjB,sBAAsB5riB,KAAKvhB,KAAKivjB,mBAGpEhmS,YAEQjpR,KAAKovjB,WAAapvjB,KAAK8vb,aAEvB9vb,KAAK47Z,QAAQc,kBAAkB,IAAM18Z,KAAKgvjB,gBAAgBztiB,QAQlEsuiB,mBAAmBD,IACfA,GAAOlC,kBACFrljB,MAAK3B,OAAQq+E,IAAUA,GAAMk6c,YAAcl6c,GAAMk0c,UAAUhzH,OAAUjma,KAAK+ujB,SAASvve,UACnFr5E,UAAW4+E,KAGU,iBAAlBA,GAAMk0c,SAAsD,mBAAxBj5hB,KAAKqtgB,gBACzCrtgB,KAAK07Z,SAAS7oZ,cAAck4Y,UAAUjjQ,IAAI,yBAE9C9nJ,KAAKmvjB,uBACLnvjB,KAAKmib,mBAAmBvoO,iBAER,SAAhBg2W,GAAOrtS,MACPqtS,GAAOp8d,aACFnrF,MAAK49Z,OAAUjma,KAAK+ujB,SAASvve,UAC7Br5E,UAAU,IAAMnG,KAAKmwjB,mBAAmBP,GAAO5yd,SAO5D8yd,qBAAqBF,KACZA,IAKLA,GAAO7B,kBAAkB1ljB,MAAK49Z,OAAUjma,KAAK+ujB,SAASvve,UAAUr5E,UAAU,KACtEnG,KAAK47Z,QAAQw0J,iBAAiB/njB,MAAKi5Q,OAAK,IAAIn7Q,UAAU,KAClDnG,KAAKkvjB,uBAKjBa,iBAAiBH,IACTA,IACAA,GAAO5B,aACF3ljB,MAAK49Z,QAAUrhC,OAAM5kY,KAAK+ujB,SAASvve,QAASx/E,KAAKsib,cACjDn8a,UAAU,KACXnG,KAAKmvjB,uBACLnvjB,KAAKmib,mBAAmBvoO,iBAKpCu2W,mBAAmBlhI,IACf,MAAMlkC,GAAY/qZ,KAAK07Z,SAAS7oZ,cAAck4Y,UACxCx3I,GAAY,gCACd07K,GACAlkC,GAAUjjQ,IAAIyrH,IAGdw3I,GAAUrmI,OAAOnR,IAIzB27S,mBACIlvjB,KAAKqvjB,OAASrvjB,KAAKsvjB,KAAO,KAE1BtvjB,KAAK+ujB,SAASxmjB,QAAQqnjB,KACK,OAAnBA,GAAOz7iB,UACHnU,KAAKsvjB,KAGTtvjB,KAAKsvjB,KAAOM,KAGR5vjB,KAAKqvjB,OAGTrvjB,KAAKqvjB,OAASO,MAGtB5vjB,KAAKkwjB,OAASlwjB,KAAKiwjB,MAAQ,KAE3BjwjB,KAAS+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,OACvBhkB,KAAKiwjB,MAAQjwjB,KAAKsvjB,KAClBtvjB,KAAKkwjB,OAASlwjB,KAAKqvjB,SAGnBrvjB,KAAKiwjB,MAAQjwjB,KAAKqvjB,OAClBrvjB,KAAKkwjB,OAASlwjB,KAAKsvjB,MAI3Bx/H,YACI,OAAS9vb,KAAKgwjB,cAAchwjB,KAAKqvjB,SAA+B,QAApBrvjB,KAAKqvjB,OAAO9sS,MACnDviR,KAAKgwjB,cAAchwjB,KAAKsvjB,OAA2B,QAAlBtvjB,KAAKsvjB,KAAK/sS,IAAQ,CAE5DsqS,qBACI7sjB,KAAKgub,cAAcr9Z,OACnB3wB,KAAKqwjB,gCAETA,gCAEI,CAACrwjB,KAAKqvjB,OAAQrvjB,KAAKsvjB,MACd5ojB,OAAOkpjB,IAAUA,KAAWA,GAAO/ijB,cAAgB7M,KAAKswjB,iBAAiBV,KACzErnjB,QAAQqnjB,IAAUA,GAAOlB,0BAElC6B,qBACI,OAASvwjB,KAAKgwjB,cAAchwjB,KAAKqvjB,SAAWrvjB,KAAKswjB,iBAAiBtwjB,KAAKqvjB,SAClErvjB,KAAKgwjB,cAAchwjB,KAAKsvjB,OAAStvjB,KAAKswjB,iBAAiBtwjB,KAAKsvjB,MAErEgB,iBAAiBV,IACb,MAAuB,SAAhBA,GAAOrtS,QAAqBviR,KAAKwvjB,kBAE5CQ,cAAcJ,IACV,OAAiB,MAAVA,IAAkBA,GAAO5yd,QAGxCqwd,GAAmBtue,UAAnB,4BAA+Gsue,IAlvBZpue,8BAkvBgDqmd,KAAnJ,GAlvBmGrmd,8BAkvB8FA,cAlvB9FA,8BAkvBwHA,UAlvBxHA,8BAkvB8IA,qBAlvB9IA,8BAkvB+KS,MAlvB/KT,8BAkvB4M+te,IAlvB5M/te,8BAkvBoP4ub,KAAvV,KACAw/C,GAAmBzte,UAnvBgFX,8BAmvBnG,MAAmGoue,GAAnG3pjB,iFAnvBmGu7E,2BAmvBnGrkD,GAKqEwyhB,EALrE,GAnvBmGnue,2BAmvBnGrkD,GAKsJi0hB,GALtJ,iBAnvBmG5ve,2BAmvBnGzvC,GAnvBmGyvC,6BAmvBnGpkD,sBAnvBmGokD,2BAmvBnGzvC,GAnvBmGyvC,6BAmvBnGpkD,wDAnvBmGokD,wBAwvB0Jmue,EAL7P,gBAnvBmGnue,2BAmvBnGrkD,GAnvBmGqkD,6BAmvBnGpkD,+GAnvBmGokD,wBAmvBnG,yMAnvBmGA,+BAmvBmT,CAC9Y,CACIoJ,QAAS4ke,GACTzud,YAAa6ud,OAHzBtte,wOAnvBmGd,4BAmvBnG1tE,GAnvBmG0tE,uBAwvB6P,iBAxvB7PA,yBAwvByZ,GAxvBzZA,yBAwvB4c,KAxvB5cA,uBAwvBugB,iCAL1mB,OAnvBmGA,uBAwvBkU,uBAxvBlUA,sBAwvB4hB,GAxvB5hBA,uBAwvB4hB,uBAL/nBuhM,YAKi7F4sS,EAA0EryH,MAL3/F/6W;;;;;;;;AAyDA,iBAAgCote,EAC5BvtjB,YAAYm/gB,GAAmBh9a,GAAW9iB,GAAYymX,GAAkB/kC,IACpEj1Y,MAAMqzf,GAAmBh9a,GAAW9iB,GAAYymX,GAAkB/kC,KAG1E4vJ,GAAkBzxe,UAAlB,4BAA8Gyxe,IAjzBXvxe,8BAizB8CA,qBAjzB9CA,+BAizB+EwlX,gBAAW,IAAMgsH,KAjzBhGxxe,8BAizBiIA,cAjzBjIA,8BAizB2JS,MAjzB3JT,8BAizB2LA,YAC9Ruxe,GAAkB5we,UAlzBiFX,8BAkzBnG,MAAkGuxe,GAAlG9sjB,2IAlzBmGu7E,wBAkzBnG,sDAlzBmGA,CAkzBnG,oEAlzBmGA,+BAkzB0Q,CACrW,CACIoJ,QAAS09W,KACTvnW,YAAagyd,MArzB0Evxe,wCAkzBnGc,oEAlzBmGd,uDAuzB5C,KALvDo7L,oCA+BA,iBAAyBw0S,GACrBhvjB,cACI8rB,SAASinR,WACT5yS,KAAK0wjB,kBAAmB,EACxB1wjB,KAAK2wjB,aAAe,EACpB3wjB,KAAK4wjB,gBAAkB,EAGvBC,sBACA,OAAO7wjB,KAAK0wjB,iBAEZG,oBAAgB7siB,IAChBhkB,KAAK0wjB,kBAAmBvyJ,QAAsBn6Y,IAM9C8siB,kBACA,OAAO9wjB,KAAK2wjB,aAEZG,gBAAY9siB,IACZhkB,KAAK2wjB,cAAejtI,QAAqB1/Z,IAMzC+siB,qBACA,OAAO/wjB,KAAK4wjB,gBAEZG,mBAAe/siB,IACfhkB,KAAK4wjB,iBAAkBltI,QAAqB1/Z,KAGpDgtiB,GAAWjye,UAAX,qDAp3BmGE,kCAo3BI+xe,MAAvGn2hB,IAAuGm2hB,KAAvG,GACAA,GAAWpxe,UAr3BwFX,8BAq3BnG,MAA2F+xe,GAA3FttjB,kDAAgR,KAAhR,8EAr3BmGu7E,wBAq3BnG,cAr3BmGA,wBAq3BnG,kDAr3BmGA,CAq3BnG,yDAr3BmGA,wBAq3BnG,qCAr3BmGA,CAq3BnG,mCAr3BmGA,CAq3BnG,mCAr3BmGA,CAq3BnG,mCAr3BmGA,CAq3BnG,8BAr3BmGA,CAq3BnG,iLAr3BmGA,wCAq3BnGc,gJAr3BmGd,yDAq3BotB,aAr3BptBA,yBAq3B2xB,GAr3B3xBA,6BAq3BnGuhM,YAA67B9gM,MAA77B26L,gCAA6gC,CAACyyS,GAAoBC,kBAAliCjzW,oBAwBA,iBAAkCuzW,IAElCoD,GAAoB1xe,UAApB,qDA/4BmGE,kCA+4Bawxe,MAAhH51hB,IAAgH41hB,KAAhH,GACAA,GAAoB7we,UAh5B+EX,8BAg5BnG,MAAoGwxe,GAApG/sjB,kFAh5BmGu7E,2BAg5BnGrkD,GAKqE41hB,GALrE,GAh5BmGvxe,2BAg5BnGrkD,GAKuJo2hB,GALvJ,iBAh5BmG/xe,2BAg5BnGzvC,GAh5BmGyvC,6BAg5BnGpkD,sBAh5BmGokD,2BAg5BnGzvC,GAh5BmGyvC,6BAg5BnGpkD,gIAh5BmGokD,wBAg5BnG,2GAh5BmGA,+BAg5BiO,CAC5T,CACIoJ,QAAS4ke,GACTzud,YAAaiyd,MAn5B0Exxe,wCAg5BnGc,0OAh5BmGd,4BAg5BnGlpE,IAh5BmGkpE,uBAq5ByK,kBAr5BzKA,yBAq5BqU,GAr5BrUA,yBAq5ByX,KAr5BzXA,uBAq5Bqb,mCALxhB,OAh5BmGA,uBAq5B8O,uBAr5B9OA,sBAq5B2c,GAr5B3cA,uBAq5B2c,uBAL9iBuhM,YAKi2FgwS,GAA4Ez1H,MAL76F/6W;;;;;;;;AAoCA,UAEAixe,GAAiBlye,UAAjB,4BAA6Gkye,KAC7GA,GAAiB/we,UAv7BkFjB,6BAu7BnG,MAA8Ggye,KAa9GA,GAAiB9we,UAp8BkFlB,6BAo8BnG,UAA0I,CAAC4+Y,KAAcz9Y,KAAiBslW,MAAsBA,KACxLtlW;;;;;;;;;;;;;;;;;;;;;uGCpgCF8we,EAAmC,IAAIzoa,iBAAe,mCAAoC,CAC5FC,WAAY,OACZrmJ,QAAS,KAAO,CAAE8ujB,oBAAoB,MAI1C,IAAIt3H,EAAe,EAEnB,MAAMu3H,EAAkC,CACpC/oe,QAASola,oBACTjvZ,aAAaimW,gBAAW,IAAM4sH,GAC9B5yd,OAAO,GAGX,QACI5+F,YAEAo3B,EAEAk5D,GACInwF,KAAKi3B,OAASA,EACdj3B,KAAKmwF,QAAUA,GAKvB,MAAMmhe,GAAsB5hD,SAAc9wb,SAAW+kb,SAAmByJ,QAAc,MAClFvtgB,YAAYg/E,GACR7+E,KAAK6+E,YAAcA,QAI3B,gBAA6Byye,EACzBzxjB,YAAYq/E,EAAYknV,EAAe+b,EAAoBpwT,EAAU8xP,EAAUmqJ,GAC3Erif,MAAMuzD,GACNl/E,KAAKoma,cAAgBA,EACrBpma,KAAKmib,mBAAqBA,EAC1Bnib,KAAK6jX,SAAWA,EAChB7jX,KAAKq5f,UAAahqL,MAClBrvU,KAAK0mgB,WAAa,OAClB1mgB,KAAK2vgB,UAAa,uBAAqB91E,EACvC75b,KAAK+lK,WAAY,EACjB/lK,KAAKowF,UAAW,EAEhBpwF,KAAK4qD,KAAO,KAEZ5qD,KAAKqqE,GAAKrqE,KAAK2vgB,UAEf3vgB,KAAK4vgB,cAAgB,QAErB5vgB,KAAKozB,UAAY,KAEjBpzB,KAAKolgB,eAAiB,KAEtBplgB,KAAK+tR,OAAS,IAAIu4I,eAMlBtma,KAAKy9F,aAAe,IAAI6oU,eACxBtma,KAAK+xH,SAAW9kH,SAAS8kH,IAAa,EACtC/xH,KAAKsxF,MAAQtxF,KAAKiwgB,aAAepsJ,EAASvyR,OAAS,SACnDtxF,KAAKokjB,gBAAoC,mBAAlBp2C,CAAkB,CAGzC/7a,eACA,OAAOjyF,KAAK+lK,UAEZ9zE,aAASjuE,GACThkB,KAAK+lK,WAAYo4P,QAAsBn6Y,GAGvCmsE,cACA,OAAOnwF,KAAKowF,SAEZD,YAAQnsE,GACRhkB,KAAKowF,UAAW+tU,QAAsBn6Y,GACtChkB,KAAKmib,mBAAmBvoO,eAGxBs2T,cACA,MAAQ,GAAElwgB,KAAKqqE,IAAMrqE,KAAK2vgB,kBAE9BhqP,qBACI3lR,KAAKoma,cAAchC,QAAQpka,KAAK6+E,aAAa,GAAM14E,UAAUgqgB,IACpDA,GAMD94Z,QAAQi2O,UAAU51O,KAAK,IAAM13G,KAAK0mgB,gBAI9Cx9f,cACIlJ,KAAKoma,cAAcvB,eAAe7ka,KAAK6+E,aAG3C0ye,eAAexse,GAIXA,EAAMn6C,kBACN5qC,KAAKy9F,aAAa9sE,OAId3wB,KAAK6jX,SAASstM,mBACdnxjB,KAAK6wgB,cAAch+f,cAAcs9E,QAAUnwF,KAAKmwF,SAIpDnwF,KAAKmwF,QAAUnwF,KAAK6wgB,cAAch+f,cAAcs9E,QAGhDnwF,KAAKkqa,oBAGT4mG,cAAc/rb,GAQVA,EAAMn6C,kBAGVmzD,WAAW/5E,GACPhkB,KAAKmwF,UAAYnsE,EAGrBk6E,iBAAiBp6D,GACb9jC,KAAKq5f,UAAYv1d,EAGrBs6D,kBAAkBt6D,GACd9jC,KAAK0mgB,WAAa5ie,EAGtBstP,iBAAiB74G,GACbv4K,KAAKstB,SAAWirJ,EAChBv4K,KAAKmib,mBAAmBvoO,eAG5B9mM,MAAMqvQ,EAAS6xB,GACPA,EACAh0S,KAAKoma,cAAcnB,SAASjla,KAAK6wgB,cAAe78N,EAAQ7xB,GAGxDniR,KAAK6wgB,cAAch+f,cAAcC,MAAMqvQ,GAI/C/kL,SACIp9F,KAAKmwF,SAAWnwF,KAAKmwF,QACrBnwF,KAAKq5f,UAAUr5f,KAAKmwF,SAKxB+5U,mBACIlqa,KAAKq5f,UAAUr5f,KAAKmwF,SACpBnwF,KAAK+tR,OAAOp9P,KAAK,IAAI6giB,EAAqBxxjB,KAAMA,KAAKmwF,UAGzDmgb,qBAMItwgB,KAAKmib,mBAAmB1xZ,iBAGhC4giB,EAAetye,UAAf,0BAA2Gsye,GAAVpye,8BAA0CA,cAA1CA,8BAAoES,MAApET,8BAAgGA,qBAAhGA,8BAAiI,YAAjIA,8BAAyKiye,GAAzKjye,8BAAsN4ub,KAAvT,KACAwjD,EAAezxe,UADkFX,8BACjG,MAA+Foye,EAA/F3tjB,kEADiGu7E,wBACjGl/E,KADiGk/E,wBACjG/+E,KADiG++E,wBACjG9+E,iBADiG8+E,2BACjGvuE,EADiGuuE,6BACjGxvE,oBADiGwvE,2BACjGvuE,EADiGuuE,6BACjGxvE,uBADiGwvE,2BACjGvuE,EADiGuuE,6BACjGxvE,yGADiGwvE,2BACjG,WADiGA,wBACjG,gBADiGA,CACjG,kBADiGA,CACjG,uBADiGA,CACjG,aADiGA,wBACjG,wBADiGA,CACjG,0BADiGA,CACjG,0DADiGA,CACjG,gdADiGA,+BACs0B,CAACmye,IADv0Bnye,wCACjGc,4uBADiGd,yDACutC,cADvtCA,CACutC,aADvtCA,CACutC,eADvtCA,uBAC89D,4BAAWxvE,qBADz+DwvE,CAC89D,2BAA0DxvE,qBADxhEwvE,sDACwjE,cADxjEA,sBACioE,YADjoEA,2BACurE,YADvrEA,sBAC+gF,cAD/gFA,0DAC2oF,iBAD3oFA,uBACksF,sCAAsBxvE,yBADxtFwvE,2BACozF,cADpzFA,mBACi1F,WADj1FA,oDACo2F,IADp2FA,8BACjG,aADiGA,wBACjG,KADiGA,wBACjG,IADiGA,wBAC8tC,iBAD9tCA,sBACy1C,GADz1CA,wBACy1C,6EADz1CA,sBAC4kD,GAD5kDA,uBAC4kD,eAD5kDA,CAC4kD,sBAD5kDA,CAC4kD,sBAD5kDA,CAC4kD,oBAD5kDA,CAC4kD,uBAD5kDA,wBACuvD,cADvvDA,CACuvD,yBADvvDA,CACuvD,yBADvvDA,CACuvD,mCADvvDA,CACuvD,sCADvvDA,sBAC0wE,GAD1wEA,uBAC0wE,qBAD1wEA,CAC0wE,gDAD1wEA,CAC0wE,uBAD1wEA,CAC0wE,qBAD1wEA,CAC0wE,qBAD1wEA,4BAC0wE,iCAA32EuhM,YAAugMwlL,KAAiPliB,MAAxvM9jW;;;;;;;;AAsEA,MAAMyxe,EAAsC,CACxCppe,QAASoma,gBACTjwZ,aAAaimW,gBAAW,IAAMitH,GAC9Bjzd,OAAO,GAUX,gBAA8C2ja,6BAE9CsvD,EAAgC3ye,UAAhC,iDAtFiGE,kCAsF2Byye,KAA5HjijB,GAA4HiijB,IAA5H,GACAA,EAAgC1ye,UAvFiEC,8BAuFjG,MAAgHyye,EAAhHhujB,kLAvFiGu7E,+BAuFgN,CAACwye,IAvFjNxye;;;;;;;;AAyGjG,SAEA0ye,EAAuC5ye,UAAvC,0BAAmI4ye,IACnIA,EAAuCzxe,UA5G0DjB,6BA4GjG,MAAoI0ye,IACpIA,EAAuCxxe,UA7G0DlB,6BA6GjG,IAQA,SAEA2ye,EAAqB7ye,UAArB,0BAAiH6ye,IACjHA,EAAqB1xe,UAxH4EjB,6BAwHjG,MAAkH2ye,IAGlHA,EAAqBzxe,UA3H4ElB,6BA2HjG,UAAkJ,CACtI0ye,EACA1kD,KACA7sb,KACAmnV,MACDoqJ,EAAwCvxe;;;;;;;;;;;;;;yNCvT7Cyxe,GAAqBnxJ,QAAgC,CAAE78F,SAAS,IAiBhEiuP,EAA4B,CAC9Bzpe,QAASola,oBACTjvZ,aAAaimW,gBAAW,IAAMstH,GAC9Btzd,OAAO,GAGX,SAIA,MAAMuzd,GAAiBtiD,SAAc9wb,SAAWwub,QAAc,MAC1DvtgB,YAAYg/E,GACR7+E,KAAK6+E,YAAcA,KAEvB,WAKJ,gBAAwBmze,EACpBnyjB,YAAYq/E,EAAYknV,EAAe+b,GAAoBpa,GAAMh2S,GAAU6pS,GAASx8U,GAAWiub,IAC3F1hf,MAAMuzD,GACNl/E,KAAKoma,cAAgBA,EACrBpma,KAAKmib,mBAAqBA,GAC1Bnib,KAAK+na,KAAOA,GACZ/na,KAAK47Z,QAAUA,GACf57Z,KAAKqtgB,eAAiBA,GACtBrtgB,KAAKiyjB,SAAU,EACfjyjB,KAAK8zhB,KAAO,IACZ9zhB,KAAK4zhB,KAAO,EACZ5zhB,KAAKkyjB,MAAQ,EACblyjB,KAAKmyjB,aAAc,EACnBnyjB,KAAKoyjB,cAAgB,EACrBpyjB,KAAKgmK,OAAS,KACdhmK,KAAK+2Z,WAAY,EAEjB/2Z,KAAK+tR,OAAS,IAAIu4I,eAElBtma,KAAK69F,MAAQ,IAAIyoU,eAMjBtma,KAAKqtJ,YAAc,IAAIi5Q,eAEvBtma,KAAKq+F,UAAY,OACjBr+F,KAAKqyjB,SAAW,EAKhBryjB,KAAKsyjB,WAAa,KAKlBtyjB,KAAKuyjB,WAAY,EAEjBvyjB,KAAKwyjB,qBAAuB,EAE5BxyjB,KAAKyyjB,kBAAoB,KACzBzyjB,KAAKmrgB,8BAAgC,OAErCnrgB,KAAK0yjB,uBAAyB57J,UAE9B92Z,KAAK2ua,aAAgB5pV,KAGb/kF,KAAKstB,UAAYttB,KAAKsyjB,aAAgBv+I,EAAahvV,KAA2B,IAAjBA,GAAMo9O,QAGvEniU,KAAK47Z,QAAQpzJ,IAAI,KACbxoQ,KAAK2yjB,SAAW5+I,EAAahvV,IA2sB7C,WAA6BA,EAAO6te,GAChC,QAAS1yjB,EAAI,EAAGA,EAAI6kF,EAAM+6U,QAAQt8Z,OAAQtD,IAAK,CAC3C,MAAM+pC,GAAS86C,EAAM+6U,QAAQ5/Z,GAAG+pC,OAChC,GAAI2ohB,IAAe3ohB,IAAU2ohB,EAAWxre,SAASn9C,IAC7C,OAAO86C,EAAM+6U,QAAQ5/Z,GAAG0/J;;;;;;;SA9sBdizZ,CAAoB9te,GAAO/kF,KAAK6+E,YAAYhsE,oBAC5C+lW,EACN,MAAMq2D,GAAkB6jJ,EAAyB/te,GAAO/kF,KAAK2yjB,UAC7D,GAAI1jJ,GAAiB,CACjB,MAAM3vU,GAAWt/F,KAAKgkB,MACtBhkB,KAAKsyjB,WAAa,UAClBtyjB,KAAK+yjB,kBAAoBhue,GACzB/kF,KAAKgzjB,oBACLhzjB,KAAKizjB,gBACLjzjB,KAAKkzjB,kBAAkBnue,IACvB/kF,KAAKgzjB,oBACLhzjB,KAAKmzjB,yBAAyBlkJ,IAC9Bjva,KAAKozjB,mBAAqB9zd,GAItBva,GAAMsue,YACNtue,GAAM36C,iBAGNk1D,IAAYt/F,KAAKgkB,OACjBhkB,KAAKszjB,sBASrBtzjB,KAAKgva,aAAgBjqV,KACjB,GAAwB,YAApB/kF,KAAKsyjB,WAA0B,CAC/B,MAAMrjJ,GAAkB6jJ,EAAyB/te,GAAO/kF,KAAK2yjB,UAC7D,GAAI1jJ,GAAiB,CAEjBlqV,GAAM36C,iBACN,MAAMk1D,GAAWt/F,KAAKgkB,MACtBhkB,KAAK+yjB,kBAAoBhue,GACzB/kF,KAAKmzjB,yBAAyBlkJ,IAE1B3vU,IAAYt/F,KAAKgkB,OACjBhkB,KAAKszjB,qBAMrBtzjB,KAAKuwa,WAAcxrV,KACS,YAApB/kF,KAAKsyjB,cACAv+I,EAAahvV,KACW,iBAAlB/kF,KAAK2yjB,UAGZY,EAAkBxue,GAAMg7U,eAAgB//Z,KAAK2yjB,aAC7C5te,GAAM36C,iBACNpqC,KAAKwzjB,sBACLxzjB,KAAKsyjB,WAAa,KAClBtyjB,KAAK2yjB,cAAW/5M,EACZ54W,KAAKozjB,oBAAsBpzjB,KAAKgkB,QAAUhkB,KAAKstB,UAC/CttB,KAAKkqa,mBAETlqa,KAAKozjB,mBAAqBpzjB,KAAK+yjB,kBAAoB,OAK/D/yjB,KAAKyzjB,YAAc,KAGXzzjB,KAAK+yjB,mBACL/yjB,KAAKuwa,WAAWvwa,KAAK+yjB,oBAG7B/yjB,KAAKo/E,UAAYA,GACjBp/E,KAAK+xH,SAAW9kH,SAAS8kH,KAAa,EACtC6pS,GAAQc,kBAAkB,KACtB,MAAM98T,GAAU1gB,EAAWrsE,cAC3B+sF,GAAQ6qK,iBAAiB,YAAazqQ,KAAK2ua,aAAckjJ,GACzDjyd,GAAQ6qK,iBAAiB,aAAczqQ,KAAK2ua,aAAckjJ,KAI9D/vQ,aACA,OAAO9hT,KAAKiyjB,QAEZnwQ,WAAO99R,GACPhkB,KAAKiyjB,SAAU9zJ,QAAsBn6Y,GAGrC8jB,UACA,OAAO9nC,KAAK8zhB,KAEZhsf,QAAIznC,GACJL,KAAK8zhB,MAAOpwG,QAAqBrjb,EAAGL,KAAK8zhB,MACzC9zhB,KAAKqyjB,SAAWryjB,KAAK0zjB,qBAAqB1zjB,KAAKgmK,QAE/ChmK,KAAKmib,mBAAmBvoO,eAGxBp7I,UACA,OAAOx+D,KAAK4zhB,KAEZp1d,QAAIn+D,GACJL,KAAK4zhB,MAAOlwG,QAAqBrjb,EAAGL,KAAK4zhB,MACzC5zhB,KAAKqyjB,SAAWryjB,KAAK0zjB,qBAAqB1zjB,KAAKgmK,QAE/ChmK,KAAKmib,mBAAmBvoO,eAGxB0rE,WACA,OAAOtlR,KAAKkyjB,MAEZ5sS,SAAKjlR,GACLL,KAAKkyjB,OAAQxuI,QAAqBrjb,EAAGL,KAAKkyjB,OACtClyjB,KAAKkyjB,MAAQ,GAAM,IACnBlyjB,KAAK2zjB,gBAAkB3zjB,KAAKkyjB,MAAMrrjB,WAAWsiB,MAAM,KAAK+8D,MAAM1iF,QAGlExD,KAAKmib,mBAAmBvoO,eAGxBg6W,iBACA,OAAO5zjB,KAAKmyjB,YAEZyB,eAAW5viB,GACXhkB,KAAKmyjB,aAAch0J,QAAsBn6Y,GAMzC6viB,mBACA,OAAO7zjB,KAAKoyjB,cAEZyB,iBAAa7viB,GAEThkB,KAAKoyjB,cADK,SAAVpuiB,EACqB,OAEC,iBAAVA,GAAuC,iBAAVA,GACpB0/Z,QAAqB1/Z,EAAOhkB,KAAKoyjB,eAGjC,EAIzBpuiB,YAEA,OAAoB,OAAhBhkB,KAAKgmK,SACLhmK,KAAKgkB,MAAQhkB,KAAK4zhB,MAEf5zhB,KAAKgmK,OAEZhiJ,UAAM3jB,GACN,GAAIA,IAAML,KAAKgmK,OAAQ,CACnB,IAAIhiJ,GAAQ0/Z,QAAqBrjb,EAAG,GAGhCL,KAAK2zjB,iBAAmB3viB,IAAUhkB,KAAKw+D,KAAOx6C,IAAUhkB,KAAK8nC,MAC7D9jB,EAAQmhB,WAAWnhB,EAAMo8G,QAAQpgI,KAAK2zjB,mBAE1C3zjB,KAAKgmK,OAAShiJ,EACdhkB,KAAKqyjB,SAAWryjB,KAAK0zjB,qBAAqB1zjB,KAAKgmK,QAE/ChmK,KAAKmib,mBAAmBvoO,gBAI5B2mF,eACA,OAAOvgS,KAAK+2Z,UAEZx2H,aAASv8Q,GACThkB,KAAK+2Z,WAAYoH,QAAsBn6Y,GAGvC0pI,mBACA,OAAI1tJ,KAAKikgB,YAGEjkgB,KAAKikgB,YAAYjkgB,KAAKgkB,OAK7BhkB,KAAK2zjB,iBAAmB3zjB,KAAKgkB,OAAShkB,KAAKgkB,MAAQ,GAAM,EAClDhkB,KAAKgkB,MAAMo8G,QAAQpgI,KAAK2zjB,iBAE5B3zjB,KAAKgkB,OAAS,EAGzBlR,MAAMqvQ,GACFniR,KAAKgzjB,kBAAkB7wS,GAG3B30H,OACIxtJ,KAAK8zjB,mBAGLn7P,cACA,OAAO34T,KAAK+zjB,OAAO/zjB,KAAKqyjB,UAM5B2B,oBAGI,OAAOh0jB,KAAKugS,UAAYvgS,KAAK8hT,OAAS9hT,KAAK8hT,OAG/CmyQ,cACI,OAAwB,IAAjBj0jB,KAAK24T,OAAY,CAM5Bu7P,eACI,OAAIl0jB,KAAKstB,SA/SU,EAkTfttB,KAAKi0jB,gBAAkBj0jB,KAAK4zjB,WACrB5zjB,KAAKuyjB,UA/SW,GAFG,EAmTvB,EAGX4B,4BACI,MAAMx8H,EAAO33b,KAAKugS,SAAW,IAAM,IAC7B/oL,EAAQx3G,KAAKugS,SAAY,MAAK,EAAIvgS,KAAK24T,aAAkB,EAAI34T,KAAK24T,QAAX,SAE7D,MAAO,CAEHz7S,UAAY,YAAWy6a,KAHd33b,KAAKo0jB,2BAA6B,IAAM,KAGXp0jB,KAAKk0jB,6BAA6B18c,MAIhF68c,sBACI,MAAM17P,EAAU34T,KAAK24T,QACfg/H,EAAO33b,KAAKugS,SAAW,IAAM,IAC7B/oL,GAAQx3G,KAAKugS,SAAY,MAAKo4B,OAAgB,GAAEA,UAEtD,MAAO,CAEHz7S,UAAY,YAAWy6a,KAHd33b,KAAKo0jB,2BAA6B,GAAK,MAGVp0jB,KAAKk0jB,6BAA6B18c,MAKxEvzF,QAAqB,IAAZ00S,EAAgB,OAAS,IAI1C27P,2BAMI,MAAO,CACHp3iB,UAAc,YANPld,KAAKugS,SAAW,IAAM,OAGrBvgS,KAAKugS,UAAoC,OAAxBvgS,KAAKu0jB,gBAAgC,IAAL,KAC/Cv0jB,KAAKwyjB,qBAAuB,EAAK,QAEH5+Q,CAIhD4gR,kBACI,IAAIC,EAAuC,IAA5Bz0jB,KAAKwyjB,qBAQhBxye,GAAS,CACT00e,eARiB10jB,KAAKugS,SAAY,OAAMk0R,KAAe,GAAEA,SAUzDv3iB,UAAc,0BATPld,KAAKugS,SAAW,IAAM,OAIrBvgS,KAAKugS,UAAoC,OAAxBvgS,KAAKu0jB,gBAAiC,GAAN,MAKHE,EAAW,MAJvDz0jB,KAAKugS,UAAoC,OAAxBvgS,KAAKu0jB,gBAA+C,GAApB,qBAM/D,GAAIv0jB,KAAKi0jB,eAAiBj0jB,KAAKk0jB,eAAgB,CAC3C,MAAMS,GAAmB30jB,KAAKg0jB,oBAC9B,IAAIvrB,GAEAA,GADAzoiB,KAAKugS,SACEo0R,GAAmB,SAAW,MAG9BA,GAAmB,QAAU,OAExC30e,GAAQ,UAASyod,MAAW,GAAEzoiB,KAAKk0jB,mBAEvC,OAAOl0e,GAEX40e,2BACI,MAAMD,EAAmB30jB,KAAKg0jB,oBAM9B,MAAO,CACH92iB,UAAc,YANPld,KAAKugS,SAAW,IAAM,QAI+B,MADrB,OAAxBvgS,KAAKu0jB,iBAA6Bv0jB,KAAKugS,SAA+Bo0R,GAAnBA,GACzC30jB,KAAK24T,QAAU,EAAI34T,KAAK24T,aAEf/kB,CAO1CwgR,2BACI,MAAMO,EAAmB30jB,KAAKg0jB,oBAC9B,MAA+B,OAAxBh0jB,KAAKu0jB,iBAA6Bv0jB,KAAKugS,SAA+Bo0R,GAAnBA,CAAmBA,CAGjFJ,gBACI,OAAOv0jB,KAAK+na,MAA2B,OAAnB/na,KAAK+na,KAAK/jZ,MAAiB,MAAQ,MAE3DpR,kBACI5S,KAAKoma,cAAchC,QAAQpka,KAAK6+E,aAAa,GAAM14E,UAAW6tS,IAC1Dh0S,KAAKuyjB,YAAcv+Q,GAAqB,aAAXA,EAC7Bh0S,KAAKmib,mBAAmB1xZ,kBAExBzwB,KAAK+na,OACL/na,KAAK0yjB,uBAAyB1yjB,KAAK+na,KAAKh6I,OAAO5nR,UAAU,KACrDnG,KAAKmib,mBAAmBvoO,kBAIpC1wM,cACI,MAAM02F,EAAU5/F,KAAK6+E,YAAYhsE,cACjC+sF,EAAQovK,oBAAoB,YAAahvQ,KAAK2ua,aAAckjJ,GAC5Djyd,EAAQovK,oBAAoB,aAAchvQ,KAAK2ua,aAAckjJ,GAC7D7xjB,KAAK+yjB,kBAAoB,KACzB/yjB,KAAKwzjB,sBACLxzjB,KAAKoma,cAAcvB,eAAe7ka,KAAK6+E,aACvC7+E,KAAK0yjB,uBAAuB/kiB,cAEhCsliB,gBACQjzjB,KAAKstB,WAKTttB,KAAKyyjB,kBAAoBzyjB,KAAK60jB,uBAC9B70jB,KAAK80jB,8BAET9wJ,WAGIhka,KAAKyyjB,kBAAoBzyjB,KAAK60jB,uBAC9B70jB,KAAK80jB,6BAET7wJ,UACIjka,KAAKq+F,YAET4iU,WAAWl8U,GACP,GAAI/kF,KAAKstB,WACL+rY,QAAet0U,IACd/kF,KAAKsyjB,YAAkC,aAApBtyjB,KAAKsyjB,WACzB,OAEJ,MAAMhzd,EAAWt/F,KAAKgkB,MACtB,OAAQ+gE,EAAMpxE,cACLyxgB,KACDplhB,KAAK+0jB,WAAW,IAChB,WACC1vC,KACDrlhB,KAAK+0jB,YAAW,IAChB,WACC57J,KACDn5Z,KAAKgkB,MAAQhkB,KAAK8nC,IAClB,WACCmxX,KACDj5Z,KAAKgkB,MAAQhkB,KAAKw+D,IAClB,WACCw6V,KAQDh5Z,KAAK+0jB,WAAmC,OAAxB/0jB,KAAKu0jB,gBAA2B,GAAI,GACpD,WACC17J,KACD74Z,KAAK+0jB,WAAW,GAChB,WACCh8J,KAED/4Z,KAAK+0jB,WAAmC,OAAxB/0jB,KAAKu0jB,iBAA2B,EAAK,GACrD,WACC57J,KACD34Z,KAAK+0jB,YAAW,GAChB,cAIA,OAEJz1d,GAAYt/F,KAAKgkB,QACjBhkB,KAAKszjB,kBACLtzjB,KAAKkqa,oBAETlqa,KAAKsyjB,WAAa,WAClBvte,EAAM36C,iBAEV4qhB,WAC4B,aAApBh1jB,KAAKsyjB,aACLtyjB,KAAKsyjB,WAAa,MAI1B/sJ,aACI,OAAOvla,KAAKo/E,UAAU47Q,aAAez/S,OAOzC23gB,kBAAkB+B,GAGd,MAAMxuhB,EAAWzmC,KAAKo/E,UAChB43O,GAAU+8G,EAAakhJ,GACvBC,GAAgBl+P,GAAU,YAAc,YACxCm+P,GAAen+P,GAAU,WAAa,UAC5CvwR,EAASgkO,iBAAiByqT,GAAel1jB,KAAKgva,aAAc6iJ,GAC5DprhB,EAASgkO,iBAAiB0qT,GAAcn1jB,KAAKuwa,WAAYshJ,GACrD76P,IACAvwR,EAASgkO,iBAAiB,cAAezqQ,KAAKuwa,WAAYshJ,GAE9D,MAAMt2gB,GAASv7C,KAAKula,kBACE,IAAXhqX,IAA0BA,IACjCA,GAAOkvN,iBAAiB,OAAQzqQ,KAAKyzjB,aAI7CD,sBACI,MAAM/shB,EAAWzmC,KAAKo/E,UACtB34C,EAASuoO,oBAAoB,YAAahvQ,KAAKgva,aAAc6iJ,GAC7DprhB,EAASuoO,oBAAoB,UAAWhvQ,KAAKuwa,WAAYshJ,GACzDprhB,EAASuoO,oBAAoB,YAAahvQ,KAAKgva,aAAc6iJ,GAC7DprhB,EAASuoO,oBAAoB,WAAYhvQ,KAAKuwa,WAAYshJ,GAC1DprhB,EAASuoO,oBAAoB,cAAehvQ,KAAKuwa,WAAYshJ,GAC7D,MAAMt2gB,EAASv7C,KAAKula,kBACE,IAAXhqX,GAA0BA,GACjCA,EAAOyzN,oBAAoB,OAAQhvQ,KAAKyzjB,aAIhDsB,WAAWK,GAGP,MAAMC,EAAer1jB,KAAK+zjB,OAAO/zjB,KAAKgkB,OAAS,EAAGhkB,KAAKw+D,IAAKx+D,KAAK8nC,KACjE9nC,KAAKgkB,MAAQhkB,KAAK+zjB,OAAOsB,EAAer1jB,KAAKslR,KAAO8vS,EAAUp1jB,KAAKw+D,IAAKx+D,KAAK8nC,KAGjFqrhB,yBAAyB7xN,GACrB,IAAKthW,KAAKyyjB,kBACN,OAEJ,IAAI7+Q,EAAS5zS,KAAKugS,SAAWvgS,KAAKyyjB,kBAAkBr+iB,IAAMpU,KAAKyyjB,kBAAkB5rS,KAC7E9gM,GAAO/lF,KAAKugS,SAAWvgS,KAAKyyjB,kBAAkBv+iB,OAASlU,KAAKyyjB,kBAAkB98iB,MAC9E2/iB,GAAet1jB,KAAKugS,SAAW+gE,EAAInhW,EAAImhW,EAAI9gW,EAE3Cm4T,GAAU34T,KAAK+zjB,QAAQuB,GAAe1hR,GAAU7tN,IAQpD,GAPI/lF,KAAKo0jB,6BACLz7P,GAAU,EAAIA,IAMF,IAAZA,GACA34T,KAAKgkB,MAAQhkB,KAAKw+D,YAED,IAAZm6P,GACL34T,KAAKgkB,MAAQhkB,KAAK8nC,QAEjB,CACD,MAAMythB,GAAav1jB,KAAKw1jB,gBAAgB78P,IAGlC88P,GAAehuiB,KAAKC,OAAO6tiB,GAAav1jB,KAAKw+D,KAAOx+D,KAAKslR,MAAQtlR,KAAKslR,KAAOtlR,KAAKw+D,IAExFx+D,KAAKgkB,MAAQhkB,KAAK+zjB,OAAO0B,GAAcz1jB,KAAKw+D,IAAKx+D,KAAK8nC,MAI9DoiY,mBACIlqa,KAAKmrgB,8BAA8BnrgB,KAAKgkB,OACxChkB,KAAKqtJ,YAAY18H,KAAK3wB,KAAKgkB,OAC3BhkB,KAAK+tR,OAAOp9P,KAAK3wB,KAAK01jB,sBAG1BpC,kBACItzjB,KAAK69F,MAAMltE,KAAK3wB,KAAK01jB,sBAGzBZ,6BACI,IAAK90jB,KAAK6zjB,eAAiB7zjB,KAAKyyjB,kBAC5B,OAEJ,IAAIkD,EACJ,GAAyB,QAArB31jB,KAAK6zjB,aAAwB,CAC7B,IAAI+B,EAAY51jB,KAAKugS,SAAWvgS,KAAKyyjB,kBAAkBv+iB,OAASlU,KAAKyyjB,kBAAkB98iB,MACnFkgjB,GAAiBD,EAAY51jB,KAAKslR,MAAStlR,KAAK8nC,IAAM9nC,KAAKw+D,KAG/Dm3f,EAAsBG,KAFEtyhB,KAjlBH,GAilBmCqyhB,IACrB71jB,KAAKslR,KACFswS,OAGtCD,EAAuB31jB,KAAK6zjB,aAAe7zjB,KAAKslR,MAAStlR,KAAK8nC,IAAM9nC,KAAKw+D,KAE7Ex+D,KAAKwyjB,qBAAuBuD,EAAaJ,GAAuBA,EAAsB,EAG1FD,mBAAmB1xiB,EAAQhkB,KAAKgkB,OAC5B,IAAI+gE,EAAQ,IAAIixe,EAChBjxe,SAAM9tD,OAASj3B,KACf+kF,EAAM/gE,MAAQA,EACP+gE,EAGX2ue,qBAAqB1viB,GACjB,MAAMiyiB,IAAejyiB,GAAS,GAAKhkB,KAAKw+D,MAAQx+D,KAAK8nC,IAAM9nC,KAAKw+D,KAChE,OAAOu3f,EAAaE,GAAcA,EAAa,EAGnDT,gBAAgBS,GACZ,OAAOj2jB,KAAKw+D,IAAMy3f,GAAcj2jB,KAAK8nC,IAAM9nC,KAAKw+D,KAGpDu1f,OAAO/viB,EAAOw6C,EAAM,EAAG12B,GAAM,GACzB,OAAOrgB,KAAKqgB,IAAI02B,EAAK/2C,KAAK+2C,IAAIx6C,EAAO8jB,KAOzC+shB,uBACI,OAAO70jB,KAAKk2jB,eAAiBl2jB,KAAKk2jB,eAAerjjB,cAAc2gS,wBAA0B,KAM7Fw/Q,kBAAkB7wS,GACdniR,KAAK6+E,YAAYhsE,cAAcC,MAAMqvQ,GAGzC2xS,mBACI9zjB,KAAK6+E,YAAYhsE,cAAc26I,OAMnCzvD,WAAW/5E,GACPhkB,KAAKgkB,MAAQA,EAOjBk6E,iBAAiBp6D,GACb9jC,KAAKmrgB,8BAAgCrne,EAOzCs6D,kBAAkBt6D,GACd9jC,KAAKq+F,UAAYv6D,EAOrBstP,iBAAiB74G,GACbv4K,KAAKstB,SAAWirJ,GA0FxB,WAAsBv0J,GAClB,OAAQ2W,MAAM3W,IAAUs0D,SAASt0D,GAGrC,WAAsB+gE,GAIlB,MAAyB,MAAlBA,EAAMn9E,KAAK,EAAO,CAG7B,WAAkCm9E,EAAO1a,GACrC,IAAIm4P,EACJ,OAKQA,EALJuxG,EAAahvV,GAIK,iBAAP1a,EACCkpf,EAAkBxue,EAAM+6U,QAASz1V,IAAOkpf,EAAkBxue,EAAMg7U,eAAgB11V,GAIhF0a,EAAM+6U,QAAQ,IAAM/6U,EAAMg7U,eAAe,GAI7Ch7U,EAELy9O,EAAQ,CAAEhiU,EAAGgiU,EAAM18C,QAAS3lR,EAAGqiU,EAAMzL,cAAY6hD,EAG5D,WAA2BknD,EAASz1V,GAChC,QAASnqE,EAAI,EAAGA,EAAI4/Z,EAAQt8Z,OAAQtD,IAChC,GAAI4/Z,EAAQ5/Z,GAAG0/J,aAAev1F,EAC1B,OAAOy1V,EAAQ5/Z,GAzH3B6xjB,EAAUhze,UAAV,0BAAsGgze,GAAV9ye,8BAAqCA,cAArCA,8BAA+DS,MAA/DT,8BAA2FA,qBAA3FA,8BAA4H+mX,KAAxN,GAA4F/mX,8BAA0K,YAA1KA,8BAAkNA,UAAlNA,8BAAwOU,MAAxOV,8BAA6P4ub,KAAzV,KACAkkD,EAAUnye,UADkFX,8BAC5F,MAA0F8ye,EAA1FrujB,2DAD4Fu7E,wBAC5F5+E,iBAD4F4+E,2BAC5FztE,GAD4FytE,6BAC5F1tE,+CAAwf,SAAxf,kFAD4F0tE,uBAC5F,0BAA0F1tE,cADE0tE,CAC5F,yBAA0F1tE,aADE0tE,CAC5F,8BAA0F1tE,kBADE0tE,CAC5F,0BAA0F1tE,cADE0tE,CAC5F,+BAA0F1tE,mBADE0tE,CAC5F,kCAA0FphE,sBAA1F,MAD4FohE,2BAC5F,uBAD4FA,wBAC5F,2BAD4FA,CAC5F,sBAD4FA,CAC5F,sBAD4FA,CAC5F,wBAD4FA,CAC5F,8DAD4FA,CAC5F,uDAD4FA,wBAC5F,iCAD4FA,CAC5F,sCAD4FA,CAC5F,oCAD4FA,CAC5F,iDAD4FA,CAC5F,8DAD4FA,CAC5F,kCAD4FA,CAC5F,8CAD4FA,CAC5F,iCAD4FA,CAC5F,uCAD4FA,CAC5F,iGAD4FA,CAC5F,yZAD4FA,+BACikD,CAAC6ye,IADlkD7ye,wCAC5FxvC,wcAD4FwvC,2BACwxD,YADxxDA,CACwxD,WADxxDA,sBAC23D,UAD33DA,CAC23D,WAD33DA,sDACyjE,WADzjEA,sBACkpE,WADlpEA,sDACsuE,WADtuEA,sBAC+zE,UAD/zEA,CAC+zE,WAD/zEA,2BAC45E,YAD55EA,CAC45E,cAD55EA,mBACs/E,IADt/EA,kCAC5F,MAD4FA,sBACs6D,GADt6DA,uBACs6D,yCADt6DA,sBACigE,GADjgEA,uBACigE,mCADjgEA,sBACmmE,GADnmEA,uBACmmE,wCADnmEA,sBACkrE,GADlrEA,uBACkrE,+BADlrEA,sBACgxE,GADhxEA,uBACgxE,wCADhxEA,sBACs/E,GADt/EA,8BACs/E1tE,kBAAllFivQ,YAAq7UsjK,MAAr7U9jW,ozPA+IA,SAEAm2e,EAAgBp3e,UAAhB,0BAA4Go3e,IAC5GA,EAAgBj2e,UAnJ4EjB,6BAmJ5F,MAA6Gk3e,IAC7GA,EAAgBh2e,UApJ4ElB,6BAoJ5F,UAAwI,CAAC4+Y,KAAcz9Y,MAAkBA;;;;;;;;;;;;;;;;;;;;;yCCpqBxEnB,0DAC4L,UAD5LA,CAC4L,cAD5LA,uBACkR,mBADlRA,iCACkR1tE,GAAUc,EAD5R4sE,0BAC4R8iH,WAD5R9iH,mBACuS,GADvSA,+FACuS,GADvSA,8BACuS1tE,iCA1IxY,MAAM6kjB,EAAqB,IAAI3ta,iBAAe,mBAI9C,QACI5oJ,cAEIG,KAAKoia,WAAa,YAKlBpia,KAAKq2jB,oBAAsB,GAE3Br2jB,KAAKyrI,SAAW,EAEhBzrI,KAAK0C,KAAO,KAEZ1C,KAAKwrI,mBAAqB,SAE1BxrI,KAAKs2jB,iBAAmB;;;;;;;SAYhC,MAAMC,EAAc9uiB,KAAKojU,IAAI,EAAG,IAAM,EAItC,QACIhrV,YAAY22jB,EAAmBtsI,GAC3Blqb,KAAKkqb,YAAcA,EAEnBlqb,KAAKy2jB,gBAAkB,IAAI16iB,KAE3B/b,KAAKs5hB,aAAe,IAAIv9gB,KAExB/b,KAAK02jB,UAAY,IAAI36iB,KAErB/b,KAAK22jB,oBAAqB,EAC1B32jB,KAAKw2jB,kBAAoBA,EACzBA,EAAkBI,QAAQzwjB,UAAU,IAAMnG,KAAK62jB,kBAGnDC,UACS92jB,KAAKy2jB,gBAAgBr0f,QACtBpiE,KAAKw2jB,kBAAkBjgJ,OAE3Bh4U,aAAav+F,KAAK+2jB,oBAGtBC,oBACSh3jB,KAAK02jB,UAAUt0f,SAChBpiE,KAAK22jB,oBAAqB,EAC1B32jB,KAAK02jB,UAAUn1iB,OACfvhB,KAAK02jB,UAAU78iB,WACf7Z,KAAK82jB,WAETv4d,aAAav+F,KAAK+2jB,oBAOtBE,kBACIj3jB,KAAKg3jB,oBAGTE,cAAczrb,GAGVzrI,KAAK+2jB,mBAAqBlpjB,WAAW,IAAM7N,KAAK82jB,UAAWrviB,KAAK+2C,IAAIitE,EAAU8qb,IAGlFliC,QACSr0hB,KAAKs5hB,aAAal3d,SACnBpiE,KAAKs5hB,aAAa/3gB,OAClBvhB,KAAKs5hB,aAAaz/gB,YAI1Bg9iB,iBACI72jB,KAAKkqb,YAAY/iW,UACZnnF,KAAK02jB,UAAUt0f,QAChBpiE,KAAK02jB,UAAU78iB,WAEnB7Z,KAAKy2jB,gBAAgBl1iB,KAAK,CAAE41iB,kBAAmBn3jB,KAAK22jB,qBACpD32jB,KAAKy2jB,gBAAgB58iB,WACrB7Z,KAAK22jB,oBAAqB,EAG9Btrb,iBACI,OAAOrrI,KAAKy2jB,gBAGhB38B,cACI,OAAO95hB,KAAKw2jB,kBAAkBY,SAGlCC,WACI,OAAOr3jB,KAAK02jB;;;;;;;SAepB,QACI72jB,YAAYy3jB,EAAa50jB,GACrB1C,KAAKs3jB,YAAcA,EACnBt3jB,KAAK0C,KAAOA,EAGhBq/L,SACI/hM,KAAKs3jB,YAAYN,oBAGjBO,gBACA,QAASv3jB,KAAK0C,KAAKq/L,QAG3By1X,EAAez4e,UAAf,0BAA2Gy4e,GAAVv4e,8BAA0Cw4e,GAA1Cx4e,8BAAqEm3e,KACtKoB,EAAe53e,UADkFX,8BACjG,MAA+Fu4e,EAA/F9zjB,0QADiGu7E,2BACsH,YADtHA,mBACmK,GADnKA,kDAC4L,kBAA7R,MADiGA,sBACmK,GADnKA,8BACmK1tE,gBADnK0tE,sBACwO,GADxOA,uBACwO,sBAAzUuhM,YAAg1BwlL,KAAuTliB,MAAvoC9jW;;;;;;;;AAwBA,MAAM03e,EAAwB,CAE1BC,eAAette,QAAQ,QAAS,EAC5BsjQ,QAAM,gBAAgB56T,QAAM,CACxB7V,UAAW,aACX4tR,QAAS,MAEb6iD,QAAM,WAAW56T,QAAM,CACnB7V,UAAW,WACX4tR,QAAS,MAEbuiP,QAAW,gBAAgBjuQ,QAAQ,sCACnCiuQ,QAAW,0BAA0BjuQ,QAAQ,qCAAqCrsP,QAAM,CACpF+3Q,QAAS,SASrB,gBAAmC+1J,KAC/Bhhc,YAAY+7Z,EAAS/8U,EAAasjW,GAAoBhjW,GAEtDy4e,IACIjsiB,QACA3rB,KAAK47Z,QAAUA,EACf57Z,KAAK6+E,YAAcA,EACnB7+E,KAAKmib,mBAAqBA,GAC1Bnib,KAAKm/E,UAAYA,GACjBn/E,KAAK43jB,eAAiBA,GAEtB53jB,KAAK63jB,eAAiB,IAEtB73jB,KAAKsib,YAAa,EAElBtib,KAAK83jB,YAAc,IAAI/7iB,KAEvB/b,KAAK42jB,QAAU,IAAI76iB,KAEnB/b,KAAKo3jB,SAAW,IAAIr7iB,KAEpB/b,KAAKmuhB,gBAAkB,OAMvBnuhB,KAAKogc,gBAAmBj3P,KACpBnpM,KAAK+3jB,qBACL/3jB,KAAKg4jB,wBACEh4jB,KAAKisb,cAAcmU,gBAAgBj3P,KAIZ,cAAlCrzL,GAAmBssZ,YAA+Bw1J,GAAevB,oBAG1B,QAAlCvgjB,GAAmBssZ,WACpBpia,KAAKi4jB,MAAQ,MAGbj4jB,KAAKi4jB,MAAQ,SANbj4jB,KAAKi4jB,MAAQ,YAUbj4jB,KAAKm/E,UAAU67U,UACI,WAAfh7Z,KAAKi4jB,QACLj4jB,KAAKk4jB,MAAQ,UAEE,cAAfl4jB,KAAKi4jB,QACLj4jB,KAAKk4jB,MAAQ,UAKzB33H,sBAAsBp3P,GAClB,YAAK4uX,qBACL/3jB,KAAKg4jB,wBACEh4jB,KAAKisb,cAAcsU,sBAAsBp3P,GAGpDq3P,qBAAqBr3P,GACjB,YAAK4uX,qBACL/3jB,KAAKg4jB,wBACEh4jB,KAAKisb,cAAcuU,qBAAqBr3P,GAGnDkvG,eAAetzN,GACX,MAAQk6c,YAAWhG,YAAYl0c,EAI/B,IAHiB,SAAZk0c,IAAoC,SAAdgG,GAAqC,WAAZhG,KAChDj5hB,KAAKm4jB,gBAEO,YAAZl/B,GAAuB,CAGvB,MAAMm/B,GAAUp4jB,KAAKo3jB,SACrBp3jB,KAAK47Z,QAAQpzJ,IAAI,KACb4vT,GAAQ72iB,OACR62iB,GAAQv+iB,cAKpB28Z,QACSx2a,KAAKsib,aACNtib,KAAKmuhB,gBAAkB,UACvBnuhB,KAAKmib,mBAAmB1xZ,gBACxBzwB,KAAKq4jB,yBAIb9hJ,OAGI,YAAK3a,QAAQpzJ,IAAI,KAIbxoQ,KAAKmuhB,gBAAkB,SAIvBnuhB,KAAK6+E,YAAYhsE,cAAc8zB,aAAa,WAAY,IAGxD43D,aAAav+F,KAAKs4jB,sBAEft4jB,KAAK42jB,QAGhB1tjB,cACIlJ,KAAKsib,YAAa,EAClBtib,KAAKm4jB,gBAMTA,gBACIn4jB,KAAK47Z,QAAQw0J,iBAAiB/njB,MAAKi5Q,OAAK,IAAIn7Q,UAAU,KAClDnG,KAAK47Z,QAAQpzJ,IAAI,KACbxoQ,KAAK42jB,QAAQr1iB,OACbvhB,KAAK42jB,QAAQ/8iB,eAKzBm+iB,wBACI,MAAMp4d,EAAU5/F,KAAK6+E,YAAYhsE,cAC3B0ljB,EAAev4jB,KAAK43jB,eAAe3jjB,WACrCskjB,IACI3ijB,MAAMukD,QAAQo+f,GAEdA,EAAahwjB,QAAQqvb,IAAYh4V,EAAQmrT,UAAUjjQ,IAAI8vS,KAGvDh4V,EAAQmrT,UAAUjjQ,IAAIywa,IAGiB,WAA3Cv4jB,KAAK43jB,eAAepsb,oBACpB5rC,EAAQmrT,UAAUjjQ,IAAI,wBAEmB,QAAzC9nJ,KAAK43jB,eAAetB,kBACpB12d,EAAQmrT,UAAUjjQ,IAAI,qBAI9Biwa,qBACQ/3jB,KAAKisb,cAAc3kW,cAQ3B+we,wBACSr4jB,KAAKs4jB,oBACNt4jB,KAAK47Z,QAAQc,kBAAkB,KAC3B18Z,KAAKs4jB,mBAAqBzqjB,WAAW,KACjC,MAAM2qjB,EAAex4jB,KAAK6+E,YAAYhsE,cAAc0qZ,cAAc,iBAC5Dk7J,EAAcz4jB,KAAK6+E,YAAYhsE,cAAc0qZ,cAAc,eACjE,GAAIi7J,GAAgBC,EAAa,CAG7B,IAAI/4B,GAAiB,KACjB1/hB,KAAKm/E,UAAUE,WACf54C,SAAS84X,yBAAyBx/D,aAClCy4N,EAAapxe,SAAS3gD,SAAS84X,iBAC/BmgI,GAAiBj5f,SAAS84X,eAE9Bi5J,EAAajjK,gBAAgB,eAC7BkjK,EAAYnvhB,YAAYkvhB,GACL,MAAnB94B,IAAgEA,GAAe5shB,QAC/E9S,KAAK83jB,YAAYv2iB,OACjBvhB,KAAK83jB,YAAYj+iB,aAEtB7Z,KAAK63jB,mBAKxBa,EAAqB35e,UAArB,0BAAiH25e,GArOhBz5e,8BAqOsDA,UArOtDA,8BAqO4EA,cArO5EA,8BAqOsGA,qBArOtGA,8BAqOuIS,MArOvIT,8BAqO+J05e,KAChQD,EAAqB94e,UAtO4EX,8BAsOjG,MAAqGy5e,EAArGh1jB,oEAtOiGu7E,wBAsO4R6iX,KAA7X,eAtOiG7iX,2BAsOjGztE,GAtOiGytE,6BAsOjG1tE,+GAtOiG0tE,oCAsOjG,kCAAqG1tE,uBAArG,KAtOiG0tE,oCAsOjG,uCAtOiGA,wCAsOjGxvC,mGAtOiGwvC,2BAsOoe,WAtOpeA,uBAsOkgB,yBAtOlgBA,iDAsO0qB,UAA3wB,MAtOiGA,sBAsO+qB,GAtO/qBA,wBAsO+qB,oBAtO/qBA,CAsO+qB,kBAAhxBuhM,YAA4uCm/R,MAA5uC3/d,yaAAm4C,CAAC03e,EAAsBC;;;;;;;;AAoB15C,SAEAiB,EAAkB75e,UAAlB,0BAA8G65e,IAC9GA,EAAkB14e,UA7P+EjB,6BA6PjG,MAA+G25e,IAC/GA,EAAkBz4e,UA9P+ElB,6BA8PjG,UAA4I,CAAC+9W,KAAejza,KAAc8zc,KAAcuwC,KAAiBhub,MAAkBA,QAW3N,MAAMy4e,EAAgC,IAAIpwa,iBAAe,gCAAiC,CACtFC,WAAY,OACZrmJ,QAGJ,aACI,OAAO,IAAIs2jB,KAEf,QACI94jB,YAAYu7b,EAAU68H,EAAOh+H,GAAW6+H,GAAqBC,GAAiBC,IAC1Eh5jB,KAAKo7b,SAAWA,EAChBp7b,KAAKi4jB,MAAQA,EACbj4jB,KAAKi6b,UAAYA,GACjBj6b,KAAK84jB,oBAAsBA,GAC3B94jB,KAAK+4jB,gBAAkBA,GACvB/4jB,KAAKg5jB,eAAiBA,GAMtBh5jB,KAAKi5jB,wBAA0B,KAG/BC,yBACA,MAAMp4b,EAAS9gI,KAAK+4jB,gBACpB,OAAOj4b,EAASA,EAAOo4b,mBAAqBl5jB,KAAKi5jB,wBAEjDC,uBAAmBl1iB,GACfhkB,KAAK+4jB,gBACL/4jB,KAAK+4jB,gBAAgBG,mBAAqBl1iB,EAG1ChkB,KAAKi5jB,wBAA0Bj1iB,EAUvCm1iB,kBAAkB3vd,EAAWnyC,GACzB,OAAOr3D,KAAKo5jB,QAAQ5vd,EAAWnyC,GASnCgigB,iBAAiBn8d,EAAU7lC,GACvB,OAAOr3D,KAAKo5jB,QAAQl8d,EAAU7lC,GAQlCzqD,KAAK6gB,EAASs0K,EAAS,GAAI1qI,IACvB,MAAM61W,GAAU3jZ,OAAOC,OAAOD,OAAOC,OAAO,GAAIxpB,KAAKg5jB,gBAAiB3hgB,IAGtE61W,UAAQxqa,KAAO,CAAE+qB,UAASs0K,UAGtBmrO,GAAQmpJ,sBAAwB5oiB,IAChCy/Y,GAAQmpJ,yBAAsBz9M,GAE3B54W,KAAKm5jB,kBAAkBn5jB,KAAKs5jB,wBAAyBpsJ,IAKhE4pJ,UACQ92jB,KAAKk5jB,oBACLl5jB,KAAKk5jB,mBAAmBpC,UAGhC5tjB,cAEQlJ,KAAKi5jB,yBACLj5jB,KAAKi5jB,wBAAwBnC,UAMrCyC,yBAAyBrye,EAAY7vB,GACjC,MAAMoke,GAAepke,GAAUA,EAAO0hF,kBAAoB1hF,EAAO0hF,iBAAiBxwD,SAC5EA,GAAW24W,kBAAgB,CAC7BpgU,OAAQ26Z,IAAgBz7hB,KAAKi6b,UAC7B5wT,UAAW,CAAC,CAAEhhD,QAASswe,EAAmBrwe,SAAUjxB,MAElDqke,GAAkB,IAAIp7F,KAAgBtgc,KAAKw5jB,2BAA4BnigB,EAAO0hF,iBAAkBxwD,IAChGozc,GAAez0c,EAAWsB,OAAOkzc,IACvCC,UAAa34T,SAAS40V,eAAiBvggB,EAChCske,GAAa34T,SAKxBo2V,QAAQlnS,EAASunS,GACb,MAAMpigB,GAAS9tC,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,GAAI,IAAImviB,GAAsB34jB,KAAKg5jB,gBAAiBS,GACvGvye,GAAalnF,KAAKy8b,eAAeplY,IACjC2qC,GAAYhiG,KAAKu5jB,yBAAyBrye,GAAY7vB,IACtDiggB,GAAc,IAAIG,EAAez1d,GAAW9a,IAClD,GAAIgrM,aAAmBjuL,cAAa,CAChC,MAAMklG,GAAS,IAAI+yP,KAAehqK,EAAS,KAAM,CAC7Cv0L,UAAWtmC,GAAO30D,KAClB40jB,iBAEJA,GAAYt0V,SAAWhhI,GAAUw+V,qBAAqBr3P,QAErD,CACD,MAAM5gH,GAAWvoF,KAAK47hB,gBAAgBvke,GAAQiggB,IACxCnuX,GAAS,IAAIm3P,KAAgBpuK,OAAS0mF,EAAWrwR,IACjDiI,GAAawR,GAAUu+V,sBAAsBp3P,IAEnDmuX,GAAYt0V,SAAWxyI,GAAWwyI,SAKtC,YAAK81V,oBACA3nhB,QAAQq2Y,sBACRn/a,MAAK49Z,OAAU/+U,GAAW+mW,gBAC1B9nb,UAAUwnV,KACXzmQ,GAAWikW,eAAepgC,UAAU3tT,OAAOp9F,KAAK05jB,gBAAiB/rO,GAAM/7C,WAEvEv6O,GAAOg/f,qBAEPr0d,GAAU81d,YAAY3xjB,UAAU,KAC5BnG,KAAKi4jB,MAAM/1J,SAAS7qW,GAAOg/f,oBAAqBh/f,GAAO+qW,cAG/Dpia,KAAK25jB,iBAAiBrC,GAAajggB,IACnCr3D,KAAKk5jB,mBAAqB5B,GACnBt3jB,KAAKk5jB,mBAGhBS,iBAAiBrC,EAAajggB,GAE1BiggB,EAAYjsb,iBAAiBllI,UAAU,KAE/BnG,KAAKk5jB,oBAAsB5B,IAC3Bt3jB,KAAKk5jB,mBAAqB,MAE1B7hgB,EAAOg/f,qBACPr2jB,KAAKi4jB,MAAMxne,UAGnBzwF,KAASk5jB,oBAGLl5jB,KAAKk5jB,mBAAmB7tb,iBAAiBllI,UAAU,KAC/CmxjB,EAAYd,kBAAkBhgJ,UAElCx2a,KAAKk5jB,mBAAmBpC,WAIxBQ,EAAYd,kBAAkBhgJ,QAG9Bn/W,EAAOo0E,UAAYp0E,EAAOo0E,SAAW,GACrC6rb,EAAYx9B,cAAc3zhB,UAAU,IAAMmxjB,EAAYJ,cAAc7/f,EAAOo0E,WAOnFgxT,eAAeplY,GACX,MAAMmjY,EAAgB,IAAIC,KAC1BD,EAAc15S,UAAYzpF,EAAOypF,UACjC,IAAI14D,GAAmBpoF,KAAKo7b,SAASjnb,WAAWi7T,SAEhD,MAAM+mH,GAA6B,QAArB9+X,EAAOypF,UACf84a,GAAuC,SAA9BvigB,EAAOm0E,oBACa,UAA9Bn0E,EAAOm0E,qBAAmC2qT,IACZ,QAA9B9+X,EAAOm0E,oBAAgC2qT,GACtCxiD,IAAWimL,IAAwC,WAA9BvigB,EAAOm0E,mBAClC,OAAIoub,GACAxxe,GAAiBy+L,KAAK,KAErB9wQ,GACDqyE,GAAiB/zE,MAAM,KAGvB+zE,GAAiBkwW,qBAGW,QAAhCxnb,EAAWwljB,iBACPlue,GAAiBh0E,IAAI,KAGrBg0E,GAAiByqN,OAAO,KAE5B2nJ,EAAcpyW,iBAAmBA,GAC1BpoF,KAAKo7b,SAASjzW,OAAOqyW,GAOhCohG,gBAAgBvke,EAAQiggB,GACpB,MAAM77B,GAAepke,GAAUA,EAAO0hF,kBAAoB1hF,EAAO0hF,iBAAiBxwD,SAClF,OAAO24W,kBAAgB,CACnBpgU,OAAQ26Z,IAAgBz7hB,KAAKi6b,UAC7B5wT,UAAW,CACP,CAAEhhD,QAASove,EAAgBnve,SAAUgve,GACrC,CAAEjve,QAAS+te,EAAoB9te,SAAUjxB,EAAO30D,UAKhEm3jB,EAAiB96e,UAAjB,0BAA6G86e,GAteZ56e,qBAse8CkkV,MAte9ClkV,qBAseuEsrb,MAtevEtrb,qBAsesGA,YAtetGA,qBAse8H66e,MAte9H76e,qBAsekK46e,EAAnQ,IAteiG56e,qBAse+N45e,KAChUgB,EAAiB7ta,WAvegF/sE,+BAuejG,OAAiH46e,EAAjHx3jB,QAAiHw3jB,EAAjH,YAgBA,gBAA0BA,EACtBh6jB,YAAY0nF,EAASwye,EAAMxxe,GAAUyxe,GAAoBC,GAAgBC,IACrEvuiB,MAAM47D,EAASwye,EAAMxxe,GAAUyxe,GAAoBC,GAAgBC,IACnEl6jB,KAAKs5jB,wBAA0B9B,EAC/Bx3jB,KAAKw5jB,2BAA6Bd,EAClC14jB,KAAK05jB,gBAAkB,yBAG/BS,EAAYp7e,UAAZ,0BAAwGo7e,GA/fPl7e,qBA+foCkkV,MA/fpClkV,qBA+f6Dsrb,MA/f7Dtrb,qBA+f4FA,YA/f5FA,qBA+foH66e,MA/fpH76e,qBA+fwJk7e,EAAzP,IA/fiGl7e,qBA+fgN45e,KACjTsB,EAAYnua,WAhgBqF/sE,+BAggBjG,OAA4Gk7e,EAA5G93jB,QAA4G83jB,EAA5G,qBAAqIvB;;;;;;;;;;;;;;;;;;;;;0CC1iBjC35e,0DAsamnE,WAtannEA,uBAsa21E,kCAta31EA,0BAsa21EztE,WAta31EytE,4BAsa21Em7e,4BAAsD,GAtaj5En7e,CAsa21E,iCAta31EA,0BAsa21EztE,WAta31EytE,4BAsa21Em7e,4BAA0H,IAtar9En7e,sBAsam+E,WAtan+EA,2BAsamhF,WAtanhFA,sBAsa+mF,UAta/mFA,CAsa+mF,UAta/mFA,CAsa+mF,WAta/mFA,iGAsaisE,wCAtajsEA,CAsaisE,yCAtajsEA,CAsaisE,+CAtajsEA,sBAsa4jF,GAta5jFA,uBAsa4jF,2CAta5jFA,sBAsa2pF,GAta3pFA,uBAsa2pF,6CAta3pFA,sBAsamwF,GAtanwFA,uBAsamwF,qDA9gBj2Fo7e,EAA4B1hD,cAA8B,IAAML,oBAKhEgiD,EAAoB,CAEtBC,WAAWlwe,QAAQ,YAAa,EAC5BsjQ,QAAM,mBAAmB56T,QAAM,CAAE7V,UAAW,sBAE5CywU,QAAM,qBAAqB56T,QAAM,CAAE7V,UAAW,uBAC9CmwgB,QAAW,8BAA8BjuQ,QAAQi7S,MAGrDG,aAAanwe,QAAQ,cAAe,EAChCsjQ,QAAM,mBAAmB56T,QAAM,CAAE7V,UAAW,qBAC5CywU,QAAM,qBAAqB56T,QAAM,CAAE7V,UAAW,oBAC9CmwgB,QAAW,8BAA8BjuQ,QAAQi7S,MAGrDI,cAAcpwe,QAAQ,eAAgB,EAClCsjQ,QAAM,mBAAmB56T,QAAM,CAAE7V,UAAW,oBAC5CywU,QAAM,qBAAqB56T,QAAM,CAAE7V,UAAW,qBAC9CmwgB,QAAW,8BAA8BjuQ,QAAQi7S,MAGrDK,cAAcrwe,QAAQ,eAAgB,EAClCsjQ,QAAM,yCAAyC56T,QAAM,CAAE+3Q,QAAS,MAChE6iD,QAAM,mCAAmC56T,QAAM,CAAE+3Q,QAAS,QAC1D6iD,QAAM,6EAA6E56T,QAAM,CAAE+3Q,QAAS,MAEpGuiP,QAAW,0DAA0DjuQ,QAAQ,SAC7EiuQ,QAAW,WAAWjuQ,QAAQi7S,MASlCM,eAAetwe,QAAQ,gBAAiB,EAEpCgjc,QAAW,0CAA0CjuQ,QAAQi7S,GAA2B/sC,QAAU,EAACv6f,QAAM,CAAE7V,UAAW,sBAAuB6V,QAAM,CAAE7V,UAAW,uBAEhKmwgB,QAAW,0CAA0CjuQ,QAAQi7S,GAA2B/sC,QAAU,EAACv6f,QAAM,CAAE7V,UAAW,mBAAoB6V,QAAM,CAAE7V,UAAW,yBAE7JmwgB,QAAW,wCAAwCjuQ,QAAQi7S,GAA2B/sC,QAAU,EAACv6f,QAAM,CAAE7V,UAAW,qBAAsB6V,QAAM,CAAE7V,UAAW,uBAE7JmwgB,QAAW,wCAAwCjuQ,QAAQi7S,GAA2B/sC,QAAU,EAACv6f,QAAM,CAAE7V,UAAW,mBAAoB6V,QAAM,CAAE7V,UAAW,0BAC3JywU,QAAM,0EAA0E56T,QAAM,CAAE7V,UAAW,oBACnGywU,QAAM,sCAAsC56T,QAAM,CAAE7V,UAAW,uBAC/DywU,QAAM,mCAAmC56T,QAAM,CAAE7V,UAAW,uBAGhE09iB,eAAevwe,QAAQ,gBAAiB,EACpCgjc,QAAW,UAAW,EAACn1f,QAAM,MAAM4/f,UAAgB,CAAEjsD,UAAU;;;;;;;;;;;;;;;AAuCvE,QACIhse,cAKIG,KAAKw/E,QAAU,IAAIzjE,MAG3B8+iB,EAAkB97e,UAAlB,0BAA8G87e,IAC9GA,EAAkB7ua,WADkF/sE,+BACpG,OAAkH47e,EAAlHx4jB,QAAkHw4jB,EAAlH,qBAAiJ,SAUjJ,MAAMC,EAAgC,CAElCzye,QAASwye,EACTrua,KAAM,CAAC,CAAC,IAAI+2X,WAAY,IAAIC,WAAYq3C,IACxCxkT,WARJ,WAA+CqqS,GAC3C,OAAOA,GAAc,IAAIma,IAkBvBE,EAA2B,IAAItya,iBAAe,4BAG9Cuya,GAAena,SAAiBzzC,QAAc;;;;;;;SAGpD,gBAAsB4tD,EAClBn7jB,YAAYkia,GACRp2Y,QACA3rB,KAAK+ha,gBAAkBA,EAEvB/ha,KAAKi7jB,UAAY,IAAIttN,IAErB3tW,KAAKikb,cAAgB,IAAIloa,KAKzB/b,KAAK6oC,MAAQ,MACb7oC,KAAKiua,WAAa,GAElBjua,KAAK+sM,WAAa,IAAIu5N,eAGtBxlR,gBACA,OAAO9gJ,KAAKiua,WAEZntR,cAAUA,GAOV9gJ,KAAKiua,WAAantR,EAMlBo5D,mBACA,OAAOl6M,KAAKk7jB,cAEZhhX,iBAAa75M,GACbL,KAAKk7jB,eAAgB/8J,QAAsB99Z,GAM/CkxS,SAAS4pR,GASLn7jB,KAAKi7jB,UAAU37T,IAAI67T,EAAS9wf,GAAI8wf,GAMpCt8J,WAAWs8J,GACPn7jB,KAAKi7jB,UAAU1tiB,OAAO4tiB,EAAS9wf,IAGnC73D,KAAK2ojB,GACGn7jB,KAAKm8I,QAAUg/a,EAAS9wf,IACxBrqE,KAAKm8I,OAASg/a,EAAS9wf,GACvBrqE,KAAK8gJ,UAAYq6a,EAAStyhB,MAAQsyhB,EAAStyhB,MAAQ7oC,KAAK6oC,OAGxD7oC,KAAK8gJ,UAAY9gJ,KAAKo7jB,qBAAqBD,GAE/Cn7jB,KAAK+sM,WAAWp8K,KAAK,CAAEwrH,OAAQn8I,KAAKm8I,OAAQ2E,UAAW9gJ,KAAK8gJ,YAGhEs6a,qBAAqBD,GACjB,IAAItlQ,GAAI4/F,GAAI/mH,GACZ,IAAKysR,EACD,MAAO,GAGX,MAAMjhX,GAA8J,QAA9Iu7M,GAA0F,QAApF5/F,GAAkB,MAAbslQ,OAA2C,EAASA,EAASjhX,oBAAiC,IAAP27G,GAAgBA,GAAK71T,KAAKk6M,oBAAiC,IAAPu7M,GAAgBA,MAAwC,QAA/B/mH,GAAK1uS,KAAK+ha,uBAAoC,IAAPrzH,QAAgB,EAASA,GAAGx0F,cACxQ,IAAImhX,GAoDZ,WAA+BxyhB,EAAOqxK,GAClC,IAAIt8D,GAAY,CAAC,MAAO,QACxB,MAAa,QAAT/0G,GACA+0G,GAAU78B,UAETm5F,GACDt8D,GAAUz6I,KAAK,IAEZy6I,GA5DsB09a,CAAsBH,EAAStyhB,OAAS7oC,KAAK6oC,MAAOqxK,IAEzEqhX,GAAqBF,GAAmBjqjB,QAAQpR,KAAK8gJ,WAAa,EACtE,OAAIy6a,IAAsBF,GAAmB73jB,SACzC+3jB,GAAqB,GAElBF,GAAmBE,IAE9B/4jB,WACIxC,KAAK25gB,mBAETvlf,cACIp0B,KAAKikb,cAAc1ia,OAEvBrY,cACIlJ,KAAKikb,cAAcpqa,YAG3B2hjB,EAAQz8e,UAAR,0BAAoGy8e,GAnIAv8e,8BAmIyB87e,EAA7H,KACAS,EAAQx8e,UApI4FC,8BAoIpG,MAAwFu8e,EAAxF93jB,4UApIoGu7E,2EAkLpG,MAAMw8e,GAAqBruD,QAAc,SAWzC,gBAA4BquD,EACxB57jB,YAKA6qhB,EAAOvoG,GAGP1va,GAAOipjB,GAAYt1J,GAAevnV,GAElC88e,IAKIhwiB,QACA3rB,KAAK0qhB,MAAQA,EACb1qhB,KAAKmib,mBAAqBA,GAC1Bnib,KAAKyS,MAAQA,GACbzS,KAAK07jB,WAAaA,GAClB17jB,KAAKoma,cAAgBA,GACrBpma,KAAK6+E,YAAcA,GACnB7+E,KAAK27jB,eAAiBA,GAKtB37jB,KAAK47jB,oBAAqB,EAM1B57jB,KAAK67jB,WAAa,GAElB77jB,KAAK87jB,gBAAkB,GAIvB97jB,KAAKo6jB,4BAA6B,EAElCp6jB,KAAK26jB,cAAgB,QAIrB36jB,KAAK+7jB,uBAAyB,OAI9B/7jB,KAAKg8jB,sBAMLC,4BACA,OAAOj8jB,KAAK+7jB,uBAEZE,0BAAsBj4iB,GACtBhkB,KAAKk8jB,6BAA6Bl4iB,GAGlCk2L,mBACA,OAAOl6M,KAAKk7jB,cAEZhhX,iBAAa75M,GACbL,KAAKk7jB,eAAgB/8J,QAAsB99Z,GAE/CmC,YACSxC,KAAKqqE,IAAMrqE,KAAK07jB,aACjB17jB,KAAKqqE,GAAKrqE,KAAK07jB,WAAW9wgB,MAG9B5qD,KAAKm8jB,wBACLn8jB,KAAKo8jB,6BAA6B,CAC9BnjC,QAASj5hB,KAAKq8jB,YAAc,SAAWr8jB,KAAK87jB,kBAEhD97jB,KAAKyS,MAAM8+R,SAASvxS,MACpBA,KAAKs8jB,YAAct8jB,KAAK6+E,YAAYhsE,cAAc0qZ,cAAc,8BAChEv9Z,KAAKk8jB,6BAA6Bl8jB,KAAK+7jB,wBAE3CnpjB,kBAGI5S,KAAKoma,cAAchC,QAAQpka,KAAK6+E,aAAa,GAAM14E,UAAU6tS,IACzD,MAAMw8N,KAAax8N,EACfw8N,KAAaxwgB,KAAK47jB,qBAClB57jB,KAAKu8jB,yBAAyB/rD,IAC9BxwgB,KAAKmib,mBAAmBvoO,kBAIpC1wM,cACIlJ,KAAKoma,cAAcvB,eAAe7ka,KAAK6+E,aACvC7+E,KAAKyS,MAAMosZ,WAAW7+Z,MACtBA,KAAKmkhB,sBAAsBx2f,cAM/B4uiB,yBAAyBl1S,GAEjBrnR,KAAKw8jB,eAAiBn1S,IAG1BrnR,KAAK47jB,mBAAqBv0S,EACrBrnR,KAAKq8jB,cACNr8jB,KAAKm8jB,wBACLn8jB,KAAS47jB,mBACL57jB,KAAKo8jB,6BAA6B,CAAEn9B,UAAWj/hB,KAAK87jB,gBAAiB7iC,QAAS,SAG9Ej5hB,KAAKo8jB,6BAA6B,CAAEn9B,UAAW,OAAQhG,QAASj5hB,KAAK87jB,oBASjFM,6BAA6BK,GACzBz8jB,KAAK67jB,WAAaY,GAAa,GAG3Bz8jB,KAAKo6jB,6BACLp6jB,KAAK67jB,WAAa,CAAE5iC,QAASwjC,EAAUxjC,UAI/CyjC,uBACI18jB,KAAKyS,MAAMD,KAAKxS,OAEgB,SAA5BA,KAAK67jB,WAAW5iC,SAAkD,WAA5Bj5hB,KAAK67jB,WAAW5iC,WACtDj5hB,KAAKo6jB,4BAA6B,GAG1C3xD,eACSzogB,KAAKw8jB,eACNx8jB,KAAKyS,MAAMD,KAAKxS,MAGxB+ngB,eAAehjb,IACN/kF,KAAKw8jB,gBAAkBz3e,EAAMpxE,UAAY0/f,MAAStub,EAAMpxE,UAAYy4Y,QACrErnU,EAAM36C,iBACNpqC,KAAK08jB,wBAIbL,YACI,OAAQr8jB,KAAKyS,MAAM0pI,QAAUn8I,KAAKqqE,KACJ,QAAzBrqE,KAAKyS,MAAMquI,WAAgD,SAAzB9gJ,KAAKyS,MAAMquI,UAAc,CAGpE67a,0BACI,MAAQ,GAAE38jB,KAAKq8jB,YAAc,UAAY,KAAKr8jB,KAAK87jB,kBAGvDc,qBACI,MAAM39B,EAAYj/hB,KAAK67jB,WAAW58B,UAClC,OAAQA,EAAa,GAAEA,QAAkB,IAAMj/hB,KAAK67jB,WAAW5iC,QAYnEkjC,wBACIn8jB,KAAK87jB,gBAAkB97jB,KAAKq8jB,YAAcr8jB,KAAKyS,MAAMquI,UAAY9gJ,KAAK6oC,OAAS7oC,KAAKyS,MAAMo2B,MAE9F2zhB,cACI,OAAOx8jB,KAAKyS,MAAM6a,UAAYttB,KAAKstB,SAQvCuviB,wBACI,OAAK78jB,KAAKq8jB,YAGqB,OAAxBr8jB,KAAKyS,MAAMquI,UAAqB,YAAc,aAF1C,OAKfg8a,eACI,OAAQ98jB,KAAKw8jB,eAAiBx8jB,KAAKq8jB,YAEvCH,6BAA6Ba,GACzB,IAAIlnQ,GAAI4/F,GAMJz1Z,KAAKs8jB,cAG0B,QAA9BzmQ,GAAK71T,KAAK27jB,sBAAmC,IAAP9lQ,IAAyBA,GAAGm/F,kBAAkBh1Z,KAAKs8jB,YAAat8jB,KAAK+7jB,wBAC7E,QAA9BtmK,GAAKz1Z,KAAK27jB,sBAAmC,IAAPlmK,IAAyBA,GAAGnB,SAASt0Z,KAAKs8jB,YAAaS,IAElG/8jB,KAAK+7jB,uBAAyBgB,EAGlCf,sBACIh8jB,KAAKmkhB,uBAAwBv/I,OAAM5kY,KAAKyS,MAAMs6L,WAAY/sM,KAAKyS,MAAMwxa,cAAejkb,KAAK0qhB,MAAMlrc,SAASr5E,UAAU,KAC1GnG,KAAKq8jB,cACLr8jB,KAAKm8jB,yBAE2B,SAA5Bn8jB,KAAK67jB,WAAW5iC,SAAkD,WAA5Bj5hB,KAAK67jB,WAAW5iC,WACtDj5hB,KAAKo6jB,4BAA6B,GAEtCp6jB,KAAKo8jB,6BAA6B,CAAEn9B,UAAWj/hB,KAAK87jB,gBAAiB7iC,QAAS,WAC9Ej5hB,KAAK47jB,oBAAqB,IAGzB57jB,KAAKq8jB,aAAer8jB,KAAK67jB,YAA0C,WAA5B77jB,KAAK67jB,WAAW5iC,UACxDj5hB,KAAKo6jB,4BAA6B,EAClCp6jB,KAAKo8jB,6BAA6B,CAAEn9B,UAAW,SAAUhG,QAASj5hB,KAAK87jB,mBAE3E97jB,KAAKmib,mBAAmBvoO,kBAIpCojX,EAAcj+e,UAAd,0BAA0Gi+e,GAraN/9e,8BAqaqC47e,GArarC57e,8BAqamEA,qBAranEA,8BAqaoGu8e,EAAxM,GAraoGv8e,8BAqawI,6BAA5O,GAraoGA,8BAqaiM6kW,MArajM7kW,8BAqa6NA,cAra7NA,8BAqauP6kW,KAA3V,KACAk5I,EAAcp9e,UAtasFX,8BAsapG,MAA8F+9e,EAA9Ft5jB,kHAtaoGu7E,uBAsapG,0BAA8FztE,mBAtaMytE,CAsapG,8BAA8FztE,uBAtaMytE,CAsapG,+BAA8FztE,6BAAyB,IAtanBytE,CAsapG,+BAA8FztE,6BAAyB,KAAvH,MAtaoGytE,wBAsapG,wCAtaoGA,wBAsapG,mQAtaoGA,wCAsapG6iM,8aAtaoG7iM,yDAsaiyC,UAtajyCA,CAsaiyC,WAtajyCA,yBAsasgE,GAtatgEA,kDAsamnE,iBAtannEA,4BAsapG,MAtaoGA,wBAsao2C,wCAtap2CA,CAsao2C,8DAtap2CA,wBAsaq+C,mCAtar+CA,CAsaq+C,uCAtar+CA,sBAsaiqE,GAtajqEA,uBAsaiqE,4BAArwEuhM,YAAmvJ8kR,MAAnvJtld,kwDAAy0J,CACj0Js6e,EAAkBC,UAClBD,EAAkBE,YAClBF,EAAkBG,aAClBH,EAAkBI,aAClBJ,EAAkBK,cAClBL,EAAkBM,gBAN1B9gX;;;;;;;;AAyDA,SAEAmjX,EAAcl+e,UAAd,0BAA0Gk+e,IAC1GA,EAAc/8e,UAlesFjB,6BAkepG,MAA2Gg+e,IAC3GA,EAAc98e,UAnesFlB,6BAmepG,WAAqI,CAAC67e,GAAtIxxb,SAAgL,CAACu0V,KAAcz9Y;;;;;;;;;;;;;;;;;;;;;iCCjkB/FnB,yBA2I0oB,GApJ1uB,QACIp/E,YAAYg/E,IACR7+E,KAAK6+E,YAAcA,GAGvB/rE,QACI9S,KAAK6+E,YAAYhsE,cAAcC,SAGvCoqjB,EAAcn+e,UAAd,4BAA0Gm+e,GAAVj+e,8BAAyCA,gBACzIi+e,EAAcl+e,UADkFC,8BAChG,MAA8Fi+e,EAA9Fx5jB,sDAAwK;;;;;;;;AAkBxK,QACI7D,YAAiCq9F,IAC7Bl9F,KAAKk9F,SAAWA,IAGxBige,EAAap+e,UAAb,4BAAyGo+e,GAxBTl+e,8BAwBuCA,iBACvIk+e,EAAan+e,UAzBmFC,8BAyBhG,MAA6Fk+e,EAA7Fz5jB;;;;;;;;AAgBA,IAAIwwZ,EAAS,EAKb,MAAMkpK,SACM,SADNA,OAEI,OAFJA,OAGI,OAHJA,QAIK,QAGLC,EAAyB,IAAI50a,iBAAe,0BAClD,QACI5oJ,YAAYy9jB,GAAUC,IAClBv9jB,KAAKs9jB,SAAWA,GAEhBt9jB,KAAKw9jB,YAAa,EAElBx9jB,KAAKy9jB,iBAAmB,IAAIn3J,eAC5Btma,KAAK6qG,WAAY,EACjB7qG,KAAK09jB,WAAY,EACjB19jB,KAAK29jB,mBAAqB,KAC1B39jB,KAAK49jB,aAAe,KACpB59jB,KAAK69jB,gBAAkBN,IAAkC,GACzDv9jB,KAAK89jB,8BAAoF,IAArD99jB,KAAK69jB,gBAAgBE,2BAAgC,CAGzFxmgB,eACA,OAAOv3D,KAAK6qG,UAEZtzC,aAASvzC,IACThkB,KAAK6qG,WAAYszT,QAAsBn6Y,IAGvC6nd,eACA,OAAO7re,KAAK09jB,UAEZ7xF,aAAS7nd,IACThkB,KAAK09jB,WAAYv/J,QAAsBn6Y,IAGvCg6iB,gBACA,OAAkC,MAA3Bh+jB,KAAK29jB,mBAA6B39jB,KAAKi+jB,uBAAyBj+jB,KAAK29jB,mBAE5EK,cAAUh6iB,IACVhkB,KAAK29jB,oBAAqBx/J,QAAsBn6Y,IAEpDi6iB,uBACI,OAAOj+jB,KAAKk+jB,YAAcl+jB,KAAKk+jB,YAAYzgU,OAASz9P,KAAKw9jB,WAAax9jB,KAAKw9jB,WAG3ExrE,eACA,OAA4B,MAArBhyf,KAAK49jB,aAAuB59jB,KAAKm+jB,mBAAqBn+jB,KAAK49jB,aAElE5rE,aAAShue,IACThkB,KAAK49jB,cAAez/J,QAAsBn6Y,IAE9Cm6iB,mBACI,OAAOn+jB,KAAKk+jB,aAAel+jB,KAAKk+jB,YAAYhzgB,SAAWlrD,KAAKw9jB,WAGhEplf,SACIp4E,KAAKs9jB,SAAS3we,SAAW3sF,KAG7B+/H,QACI//H,KAAKw9jB,YAAa,EACa,MAA3Bx9jB,KAAK29jB,qBACL39jB,KAAK29jB,oBAAqB,GAEL,MAArB39jB,KAAK49jB,eACL59jB,KAAK49jB,cAAe,GAEpB59jB,KAAKk+jB,aACLl+jB,KAAKk+jB,YAAYn+b,QAGzB3rG,cAGIp0B,KAAKs9jB,SAASc,gBAElBC,oBACSr+jB,KAAKw9jB,aACNx9jB,KAAKw9jB,YAAa,EAClBx9jB,KAAKy9jB,iBAAiB9siB,KAAK3wB,OAInCkxF,aACI,IAAI2kO,GAGJ,OAAiD,QAAzCA,GAAK71T,KAAK69jB,gBAAgB5se,iBAA8B,IAAP4kO,GAAgBA,GAA0B,MAArB71T,KAAK49jB,YAAgB,EAG3GU,EAAQv/e,UAAR,4BAAoGu/e,GA1IJr/e,+BA0I6BwlX,gBAAW,IAAM85H,IA1I9Ct/e,8BA0IsEo+e,EAAtK,KACAiB,EAAQ1+e,UA3IwFX,8BA2IhG,MAAwFq/e,EAAxF56jB,oEA3IgGu7E,2BA2IhG/2B,GAAkgBi1gB,EAAlgB,gBA3IgGl+e,2BA2IhGnwD,GA3IgGmwD,6BA2IhGvtD,4DA3IgGutD,wBA2IugBglB,cAAvmB,gBA3IgGhlB,2BA2IhG/2B,GA3IgG+2B,6BA2IhGvtD,oWA3IgGutD,kCA2IhGc,wEA3IgGd,qDA2I6nB,yBAA7tBo7L,oCAoDA,QACIx6Q,YAAYkoa,GAAMoa,GAAoBtjW,GAKtCO,IACIp/E,KAAK+na,KAAOA,GACZ/na,KAAKmib,mBAAqBA,GAC1Bnib,KAAK6+E,YAAcA,GAEnB7+E,KAAKsib,WAAa,IAAIvma,KAEtB/b,KAAKusE,MAAQ,IAAI8qV,YAEjBr3Z,KAAKw+jB,eAAiB,IAAInnK,YAC1Br3Z,KAAKy+jB,SAAU,EACfz+jB,KAAK0+jB,eAAiB,EAEtB1+jB,KAAKq6M,gBAAkB,IAAIisN,eAK3Btma,KAAKi8a,aAAe,aACpBj8a,KAAK2+jB,SAAWzqK,IAGhB0qK,aACA,OAAO5+jB,KAAKy+jB,QAEZG,WAAO56iB,IACPhkB,KAAKy+jB,SAAUtgK,QAAsBn6Y,IAGrC0ld,oBACA,OAAO1pe,KAAK0+jB,eAEZh1F,kBAAc/2b,IACd,IAAIkjR,GACJ,MAAM0hG,IAAWmsB,QAAqB/wY,IAClC3yC,KAAKusE,OAASvsE,KAAK6+jB,QAEd7+jB,KAAKk3gB,cAAc3/G,IAGC,QAAxB1hG,GAAK71T,KAAK2sF,gBAA6B,IAAPkpO,IAAyBA,GAAGwoQ,oBACzDr+jB,KAAK0+jB,iBAAmBnnK,KACvBv3Z,KAAK8+jB,6BAA6BvnK,MAClCA,IAAYv3Z,KAAK0+jB,gBAAkB1+jB,KAAKusE,MAAMs3K,UAAU0zK,IAAUhgW,WACnEv3D,KAAK++jB,yBAAyBxnK,KAIlCv3Z,KAAK0+jB,eAAiBnnK,GAI1B5qU,eACA,OAAO3sF,KAAKusE,MAAQvsE,KAAKusE,MAAMs3K,UAAU7jP,KAAK0pe,oBAAiB9wH,EAE/DjsR,aAAS24L,IACTtlR,KAAK0pe,cAAgBpkN,IAAQtlR,KAAKusE,MAAQvsE,KAAKusE,MAAMs3K,UAAUzyO,QAAQk0Q,KAAQ,EAG/EuqD,kBACA,OAAO7vU,KAAKi8a,aAEZpsG,gBAAY7rT,IAEZhkB,KAAKi8a,aAAej4Z,GAChBhkB,KAAKykgB,aACLzkgB,KAAKykgB,YAAY7sG,wBAAkC,aAAV5zY,GAAU,CAG3D2hQ,qBACI3lR,KAAK6+jB,OAAOr/e,QACPn3E,MAAK86a,OAAUnjb,KAAK6+jB,SAAS54J,OAAUjma,KAAKsib,aAC5Cn8a,UAAWomE,KACZvsE,KAAKusE,MAAMwzD,MAAMxzD,GAAM7lE,OAAO4+Q,IAAQA,GAAKg4S,WAAat9jB,OACxDA,KAAKusE,MAAMi1a,oBAGnB5ue,kBAOI5S,KAAKg/jB,YAAYx/e,QACZn3E,MAAK86a,OAAUnjb,KAAKg/jB,cAAc/4J,OAAUjma,KAAKsib,aACjDn8a,UAAW0lI,KACZ7rI,KAAKw+jB,eAAez+b,MAAM8L,GAAQg4G,UAAUrxO,KAAK,CAAC/C,GAAG8qQ,KAK1CyoK,GAJoBnkW,YAAYhsE,cAAckpV,wBAAwBxhF,GAAE17L,YAAYhsE,eAIjE07Y,KAAK20B,6BAA8B,EAAK,IAEtEljb,KAAKw+jB,eAAeh9E,oBAKxBxhf,KAAKykgB,YAAc,IAAI6R,KAAgBt2gB,KAAKw+jB,gBACvC9mK,WACAW,iBACAT,wBAA8C,aAAtB53Z,KAAKi8a,eACjCj8a,KAAK+na,KAAO/na,KAAK+na,KAAKh6I,QAASu2I,WAC3Bj8Z,MAAK86a,OAAUnjb,KAAKi/jB,qBAAqBh5J,OAAUjma,KAAKsib,aACxDn8a,UAAU26I,IAAa9gJ,KAAKykgB,YAAY5sG,0BAA0B/2Q,KACvE9gJ,KAAKykgB,YAAYlsG,iBAAiBv4Z,KAAK0+jB,gBAEvC1+jB,KAAKusE,MAAMiT,QAAQr5E,UAAU,KACpBnG,KAAK2sF,WACN3sF,KAAK0+jB,eAAiBj3iB,KAAKqgB,IAAI9nC,KAAK0+jB,eAAiB,EAAG,MAM3D1+jB,KAAKk3gB,cAAcl3gB,KAAK0+jB,kBACzB1+jB,KAAK0+jB,eAAiB,GAG9Bx1jB,cACIlJ,KAAKusE,MAAMutM,UACX95Q,KAAKw+jB,eAAe1kT,UACpB95Q,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAGpB0H,OACIvhB,KAAK0pe,cAAgBjid,KAAK+2C,IAAIx+D,KAAK0+jB,eAAiB,EAAG1+jB,KAAKusE,MAAM/oE,OAAS,GAG/E2wX,WACIn0X,KAAK0pe,cAAgBjid,KAAKqgB,IAAI9nC,KAAK0+jB,eAAiB,EAAG,GAG3D3+b,QACI//H,KAAK++jB,yBAAyB,GAC9B/+jB,KAAKusE,MAAMhkE,QAAQ+8Q,IAAQA,GAAKvlJ,SAChC//H,KAAKo+jB,gBAGTc,gBAAgBh/jB,IACZ,MAAQ,kBAAiBF,KAAK2+jB,YAAYz+jB,KAG9Ci/jB,kBAAkBj/jB,IACd,MAAQ,oBAAmBF,KAAK2+jB,YAAYz+jB,KAGhDk+jB,gBACIp+jB,KAAKmib,mBAAmBvoO,eAG5BwlX,uBAAuBzshB,IACnB,MAAMx+B,GAAWw+B,GAAQ3yC,KAAK0+jB,eAC9B,OAAIvqjB,GAAW,EACwB,QAA5BnU,KAAKi/jB,mBAA+B,OAAS,WAE/C9qjB,GAAW,EACmB,QAA5BnU,KAAKi/jB,mBAA+B,WAAa,OAErD,UAGXI,kBAAkB1shB,GAAOg7S,GAAQyvO,UAC7B,MAAM93S,GAAOtlR,KAAKusE,MAAMs3K,UAAUlxM,IAC5B2shB,GAAgBt/jB,KAAKu/jB,eAAe5shB,IAC1C,OAAO2yO,GAAKw4S,6BACN99jB,KAAKw/jB,0BAA0Bl6S,GAAMg6S,IACrCt/jB,KAAKy/jB,mBAAmBn6S,GAAMg6S,GAAe3xO,IAEvD6xO,0BAA0Bl6S,GAAMg6S,IAC5B,OAAIh6S,GAAKp0L,cAAgBo0L,GAAK0sO,WAAastE,GAChClC,SAED93S,GAAK04S,WAAasB,GACjBlC,SAGA93S,GAAK/tN,SAAW6lgB,OAAkBA,MAAW79N,CAG5DkgO,mBAAmBn6S,GAAMg6S,GAAe3xO,GAAQyvO,UAC5C,OAAI93S,GAAKp0L,cAAgBo0L,GAAK0sO,WAAastE,GAChClC,QAEF93S,GAAK04S,YAAcsB,GACjBlC,OAEF93S,GAAK04S,WAAasB,GAChB3xO,GAEFroE,GAAK/tN,UAAY+ngB,GACflC,OAGAzvO,GAGf4xO,eAAe5shB,IACX,OAAO3yC,KAAK0+jB,iBAAmB/rhB,GAGnC+shB,iBACI,OAAO1/jB,KAAKykgB,YAAczkgB,KAAKykgB,YAAYjrG,gBAAkBx5Z,KAAK0+jB,eAEtEK,yBAAyBxnK,IACrB,MAAMooK,GAAa3/jB,KAAKusE,MAAMs3K,UAC9B7jP,KAAKq6M,gBAAgB1pL,KAAK,CACtB+4c,cAAenyE,GACfqoK,wBAAyB5/jB,KAAK0+jB,eAC9BmB,aAAcF,GAAWpoK,IACzBuoK,uBAAwBH,GAAW3/jB,KAAK0+jB,kBAM5C1+jB,KAAKu4hB,iBACCv4hB,KAAKykgB,YAAYrsG,cAAcb,IAC/Bv3Z,KAAKykgB,YAAYlsG,iBAAiBhB,IACxCv3Z,KAAK0+jB,eAAiBnnK,GACtBv3Z,KAAKo+jB,gBAETn9J,WAAWl8U,IACP,MAAMijb,IAAc3uG,QAAet0U,IAC7BpxE,GAAUoxE,GAAMpxE,QAChBoliB,GAAU/4iB,KAAKykgB,YACU,MAA3Bs0C,GAAQv/I,iBACPwuG,IACAr0f,KAAY0/f,MAAS1/f,KAAYy4Y,KAKlC2sJ,GAAQhyd,UAAUhC,KAJlB/kF,KAAK0pe,cAAgBqvE,GAAQv/I,gBAC7Bz0U,GAAM36C,iBAGY26C,CAG1B+5e,6BAA6BnshB,IACzB,SAAI3yC,KAAKy+jB,SAAW9rhB,IAAS,IAClB3yC,KAAKusE,MACPs3K,UACA5nO,MAAM,EAAG02B,IACT61F,KAAK88I,KACN,MAAMn0L,GAAUm0L,GAAK44S,YAIrB,OAHqB/se,GACfA,GAAQjmC,SAAWimC,GAAQqlO,UAAYlxC,GAAKk4S,YAC3Cl4S,GAAK04S,aACY14S,GAAKumN,WAAavmN,GAAKq4S,oBAGhD,CAEXsB,mBACI,OAAOj/jB,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,MAAkB,MAAQ,MAG5Du0gB,iBACI,MAAMwnC,GAAiB//jB,KAAK6+E,YAAYhsE,cAClC6shB,IAAiBjhI,UACvB,OAAOshK,KAAmBrgC,IAAkBqgC,GAAe34e,SAASs4c,IAGxExoB,cAAcvke,IACV,OAAOA,IAAQ,KAAQ3yC,KAAKusE,OAAS55B,GAAQ3yC,KAAKusE,MAAM/oE,SAGhE+6jB,EAAWx/e,UAAX,4BAAuGw/e,GAhdPt/e,8BAgdmCS,KAAnI,GAhdgGT,8BAgdiFA,qBAhdjFA,8BAgdkHA,cAhdlHA,8BAgd4IU,QAC5O4+e,EAAWv/e,UAjdqFC,8BAidhG,MAA2Fs/e,EAA3F76jB,6EAjdgGu7E,2BAidhG/2B,GAAiVo2gB,EAAjV,GAjdgGr/e,2BAidhG/2B,GAAyZg1gB,EAAzZ,iBAjdgGj+e,2BAidhGnwD,GAjdgGmwD,6BAidhGvtD,cAjdgGutD,2BAidhGnwD,GAjdgGmwD,6BAidhGvtD;;;;;;;;AAwCA,QACI7xB,YAAYy9jB,IACRt9jB,KAAKs9jB,SAAWA,GAEhBt9jB,KAAK4H,KAAO,UAGpBo4jB,EAAejhf,UAAf,4BAA2Gihf,GAhgBX/gf,8BAggB2Cs/e,KAC3IyB,EAAehhf,UAjgBiFC,8BAigBhG,MAA+F+gf,EAA/Ft8jB,yFAjgBgGu7E,uBAigBhG,0BAA+FvtD,qBAA/F,MAjgBgGutD,2BAigBhG,wCAcA,QACIp/E,YAAYy9jB,IACRt9jB,KAAKs9jB,SAAWA,GAEhBt9jB,KAAK4H,KAAO,UAGpBq4jB,EAAmBlhf,UAAnB,4BAA+Gkhf,GAthBfhhf,8BAshBmDs/e,KACnJ0B,EAAmBjhf,UAvhB6EC,8BAuhBhG,MAAmGghf,EAAnGv8jB,6FAvhBgGu7E,uBAuhBhG,0BAAmGvtD,yBAAnG,MAvhBgGutD,2BAuhBhG;;;;;;;;AAqBA,SAEAihf,EAAiBnhf,UAAjB,4BAA6Gmhf,IAC7GA,EAAiBhgf,UA/iB+EjB,6BA+iBhG,MAA8Gihf,IAM9GA,EAAiB//e,UArjB+ElB,6BAqjBhG,UAA0I,CAACkpV;;;;;;;;;;;;;;;;;;;;;;qCCtjB5ClpV,+BAiHuwB,oBAjHvwBA,mDAiH0zB,8CAjH1zBA,CAiH0zB,8EAjH1zBA,2BAiH8+B,aAjH9+BA,mBAiHoiC,GAjHpiCA,8FAiHoiC,GAjHpiCA,8BAiHoiCvtD,oEAjHpiCutD,2BAiHqlC,aAjHrlCA,mBAiHopC,GAjHppCA,8FAiHopC,GAjHppCA,8BAiHopCvtD,uDAjHppCutD,2BAiH2rC,aAjH3rCA,mBAiH0vC,GAjH1vCA,8FAiH0vC,GAjH1vCA,8BAiH0vCvtD,sDAjH1vCutD,2BAiHgyC,iBAjHhyCA,mBAiHg1C,GAjHh1CA,8FAiHg1C,GAjHh1CA,8BAiHg1CvtD,oEAjHh1CutD,oCAiHk7B,KAjHl7BA,uBAiH8+B,oBAjH9+BA,uBAiHqlC,oBAjHrlCA,uBAiH2rC,oBAjH3rCA,uBAiHgyC,wBAjHhyCA,uGAiHi9B,qBAjHj9BA,sBAiH0gC,GAjH1gCA,uBAiH0gC,yBAjH1gCA,sBAiH0nC,GAjH1nCA,uBAiH0nC,0BAjH1nCA,sBAiHguC,GAjHhuCA,uBAiHguC,wDAjHhuCA,2BAiHopD,YAjHppDA,+BAiHwtD,MAjHxtDA,6FAiHsuD,GAjHtuDA,uBAiHsuD,+EAjHtuDA,2BAiH63D,YAjH73DA,mBAiHy7D,GAjHz7DA,6FAiHy7D,GAjHz7DA,8BAiHy7DvtD,uCAjHz7DutD,2BAiH88D,YAjH98DA,mBAiHshE,GAjHthEA,6FAiHshE,GAjHthEA,8BAiHshEvtD,sDAjHthEutD,2BAiHujE,YAjHvjEA,mBAiH0nE,GAjH1nEA,6FAiH0nE,GAjH1nEA,8BAiH0nEvtD,mEAjH1nEutD,yBAoQgM,GApQhMA,uBAoQ6N,0CApQ7NA,kDAoQ0O,GApQ1OA,uBAoQ0O,wDApQ1OA,sBAqX4rB,uFArX5rBA,oCAqXmd,GArXndA,+BAqX0iB,KArX1iBA,uBAqX4rB,kBArX5rBA,8KAqXmkB,GArXnkBA,uBAqXmkB,qBArXnkBA,CAqXmkB,0BArXnkBA,4BAqXmkB,aArXnkBA,sBAqXksB,GArXlsBA,uBAqXksB,kDArXlsBA,0DAqXk2B,YArXl2BA,uBAqX4iC,8CArX5iCA,iCAqX4iCvtD,IAAmCvgB,EArX/kC8tE,wBAqX4iC,GAAmC8uc,0BArX/kC9uc,+BAqXoxC,MArXpxCA,6HAqXs+B,0DArXt+BA,CAqXs+B,+BArXt+BA,wBAqXmqC,yCArXnqCA,CAqXmqC,uCArXnqCA,sBAqXkyC,GArXlyCA,uBAqXkyC,6DArXlyCA,oCAqXiW,GArXjWA,2BAqXoZ,WArXpZA,uBAqXmd,2BArXndA,sDAqX0yB,WArX1yBA,uBAqXk2B,kBArXl2BA,iIAqXmf,GArXnfA,uBAqXmf,oBArXnfA,sBAqXy3B,GArXz3BA,uBAqXy3B,0DArXz3BA,0DAqXs9C,YArXt9CA,+BAqXqjD,KArXrjDA,2BAqXisD,WArXjsDA,CAqXisD,YArXjsDA,uBAqXy7D,4CArXz7DA,iCAqXy7DvtD,IAAiCvgB,EArX19D8tE,wBAqXy7D,GAAiC8uc,0BArX19D9uc,2BAqXuqE,YArXvqEA,+BAqXytE,MArXztEA,0KAqX4kD,GArX5kDA,uBAqX4kD,sBArX5kDA,CAqX4kD,0BArX5kDA,4BAqX4kD,aArX5kDA,sBAqX+uD,GArX/uDA,wBAqX+uD,iCArX/uDA,sBAqXm3D,GArXn3DA,uBAqXm3D,uDArXn3DA,CAqXm3D,8BArXn3DA,wBAqXkjE,wCArXljEA,CAqXkjE,sCArXljEA,sBAqXuuE,GArXvuEA,uBAqXuuE,6DArXvuEA,oCAqXq6C,GArXr6CA,uBAqXs9C,oBArXt9CA,sGAqXggD,GArXhgDA,uBAqXggD,0DArXhgDA,0DAqX89E,wBArX99EA,uBAqXwoF,0BAAU9tE,EArXlpF8tE,wBAqXwoFvtD,SAAU0mD,UArXlpF6G,CAqXwoF,uBArXxoFA,iCAqXwoFvtD,IAA2CvgB,EArXnrF8tE,0BAqXmrFgiV,iBArXnrFhiV,oHAqXo/E,8DArXp/EA,CAqXo/E,2DArXp/EA,uBAqX6sF,yCArX7sFA,CAqX6sF,4BArX7sFA,CAqX6sF,WArX7sFA,CAqX6sF,0CArX7sFA,CAqX6sF,+BArX7sFA,CAqX6sF,iCArX7sFA,CAqX6sF,oCArX7sFA,CAqX6sF,uBArX7sFA,CAqX6sF,+BArX7sFA,CAqX6sF,kCArX7sFA,CAqX6sF,8DArX7sFA,CAqX6sF,4BArX7sFA,wBAqXkyF,qBArXlyFA,CAqXkyF,+BArXlyFA,CAqXkyF,yCArXlyFA,CAqXkyF,qCArXlyFA,CAqXkyF,gCArXlyFA,CAqXkyF,0EArXlyFA,CAqXkyF,oDAvXj4F,iBAA2Bk+e,GAE3BgD,GAAaphf,UAAb,qDAA+FE,kCAAUkhf,MAAzGzuiB,IAAyGyuiB,KAAzG,GACAA,GAAanhf,UADkFC,8BAC/F,MAA6Fkhf,GAA7Fz8jB,6CAD+Fu7E;;;;;;;;AAiB/F,SACIp/E,cAKIG,KAAKw/E,QAAU,IAAIzjE,KAEnB/b,KAAKogkB,cAAgB,WAErBpgkB,KAAKqgkB,eAAiB,YAEtBrgkB,KAAKsgkB,cAAgB,YAG7BC,GAAexhf,UAAf,4BAA2Gwhf,KAC3GA,GAAev0a,WAjCgF/sE,+BAiC/F,OAA+Gshf,GAA/Gl+jB,QAA+Gk+jB,GAA/G,qBAA2I,SAU3I,MAAMC,GAA4B,CAC9Bn4e,QAASk4e,GACT/za,KAAM,CAAC,CAAC,IAAI+2X,WAAY,IAAIC,WAAY+8C,KACxClqT,WAPJ,YAA2CqqS,IACvC,OAAOA,IAAc,IAAI6f,KAWvBE,IAAqB7hf,QAAW,cAAgCs+e,EAClEr9jB,YAAYq/E,IACRvzD,MAAMuzD,MAEX,WACH,iBAA4Buhf,GACxB5gkB,YAAY6qhB,GAAOtkH,GAAevnV,GAAamgc,IAC3Crzf,MAAMkzD,IACN7+E,KAAK0qhB,MAAQA,GACb1qhB,KAAKoma,cAAgBA,GACrBpma,KAAK0gkB,kBAAoBh2C,GAAMlrc,QAAQr5E,UAAU,IAAM64gB,GAAkBplU,gBAE7EhnM,kBACI5S,KAAKoma,cAAchC,QAAQpka,KAAK6+E,aAAa,GAEjD31E,cACIlJ,KAAK0gkB,kBAAkB/yiB,cACvB3tB,KAAKoma,cAAcvB,eAAe7ka,KAAK6+E,aAG3C/rE,MAAMkhS,GAAQ7xB,IACN6xB,GACAh0S,KAAKoma,cAAcnB,SAASjla,KAAK6+E,YAAam1N,GAAQ7xB,IAGtDniR,KAAK6+E,YAAYhsE,cAAcC,MAAMqvQ,IAI7Cw+S,eACI,OAAO3gkB,KAAK8mF,iBAAiBq5e,GAAe,KAAOngkB,KAAK8mF,MAG5D85e,iBACI,OAAO5gkB,KAAK8mF,iBAAiBq5e,GAAengkB,KAAK8mF,MAAQ,KAG7Dqjb,kBACI,OAAOnqgB,KAAK6+E,YAAYhsE,cAG5BgujB,kBACI,MAAO,CACHluhB,MAAO3yC,KAAK2yC,MACZwpG,OAAQn8I,KAAKm8I,OACb0vV,SAAU7re,KAAK6re,UAGvBi1F,wBAAwBnzO,IACpB,MAAa,UAATA,GACQ,GAAE3tV,KAAK2yC,MAAQ,IAEd,QAATg7S,GACO,SAEE,SAATA,GACO,UAEJA,IAGfozO,GAAchif,UAAd,4BAA0Ggif,IAhHX9hf,8BAgH0Cshf,IAhH1Cthf,8BAgHqE+mX,MAhHrE/mX,8BAgHiGA,cAhHjGA,8BAgH2HA,uBAC1N8hf,GAAcnhf,UAjHiFX,8BAiH/F,MAA8F8hf,GAA9Fr9jB,kDAAgZ,MAAhZ,gPAjH+Fu7E,wCAiH/FxvC,2xBAjH+FwvC,sBAiH+Y,WAjH/YA,2BAiHwjB,QAjHxjBA,CAiHwjB,WAjHxjBA,uBAiHuwB,2BAjHvwBA,uBAiHk7B,2BAjHl7BA,wDAiHs6C,WAjHt6CA,uBAiHopD,kBAjHppDA,uBAiH63D,kBAjH73DA,uBAiH88D,iBAjH98DA,uBAiHujE,kBAjHvjEA,4BAiH/F,OAjH+FA,uBAiHyd,wCAjHzdA,CAiHyd,sCAjHzdA,sBAiH6jB,GAjH7jBA,mCAiH6jB,kDAjH7jBA,wBAiHmnB,sCAjHnnBA,sBAiHwsB,GAjHxsBA,uBAiHwsB,8DAjHxsBA,sBAiH6xB,GAjH7xBA,uBAiH6xB,mBAjH7xBA,sBAiH08C,GAjH18CA,wBAiH08C,kCAjH18CA,CAiH08C,sCAjH18CA,CAiH08C,0CAjH18CA,sBAiHwrD,GAjHxrDA,uBAiHwrD,4BAjHxrDA,sBAiHi6D,GAjHj6DA,uBAiHi6D,0BAjHj6DA,sBAiHg/D,GAjHh/DA,uBAiHg/D,uCAjHh/DA,sBAiHgmE,GAjHhmEA,uBAiHgmE,4BAA/rEuhM,YAA05GsjK,KAAgJpkW,KAAiPq7W,KAAqEA,KAAiFA,KAAwHA,KAA6DA,MAAtmI/6W;;;;;;;;AAsCA,MAAMghf,GAAuB,CAEzBC,0BAA0B52e,SAAQ,2BAA4B,EAC1DsjQ,SAAM,YAAY56T,SAAM,CAAE7V,UAAW,2BAA4B6qC,WAAY,aAI7E4lS,SAAM,WAAW56T,SAAM,CAAE7V,UAAW,OAAQ6qC,WAAY,cACxD4lS,SAAM,QAAQ56T,SAAM,CAAE7V,UAAW,0BAA2B6qC,WAAY,aACxEsle,SAAW,UAAUjuQ,SAAQ,2CAGjC8hT,wBAAwB72e,SAAQ,yBAA0B,EACtDsjQ,SAAM,YAAY56T,SAAM,CAAE7e,OAAQ,MAAO6zC,WAAY,aACrD4lS,SAAM,QAAQ56T,SAAM,CAAE7e,OAAQ,MAAO6zC,WAAY,aAIjD4lS,SAAM,WAAW56T,SAAM,CAAE7e,OAAQ,IAAK6zC,WAAY,cAClDsle,SAAW,iBAAiBjuQ,SAAQ;;;;;;;SAc5C,SACIv/Q,YAAYsqR,IACRnqR,KAAKmqR,YAAcA,IAG3Bg3S,GAAepif,UAAf,4BAA2Goif,IA7LZlif,8BA6L4CA,iBAC3Ikif,GAAenif,UA9LgFC,8BA8L/F,MAA+Fkif,GAA/Fz9jB;;;;;;;;AAqBA,SACI7D,YAAYkpc,IACR/oc,KAAK+oc,UAAYA,IAGzBq4H,GAAerif,UAAf,4BAA2Gqif,IAxNZnif,8BAwN4CA,iBAC3Imif,GAAepif,UAzNgFC,8BAyN/F,MAA+Fmif,GAA/F19jB,kDAQA,iBAAsB46jB,EAClBz+jB,YAAYwhkB,GAASC,GAAoBlha,GAAmBm9Z,IACxD5xiB,MAAM01iB,GAAS9D,IACfv9jB,KAAKshkB,mBAAqBA,GAC1BthkB,KAAKogK,kBAAoBA,GACzBpgK,KAAK+rgB,YAAcj1G,UAEvBnxI,qBACI3lR,KAAK+rgB,YAAc/rgB,KAAKs9jB,SAAS/wf,MAAMiT,QAClCn3E,MAAKi9a,OAAU,IACTtlb,KAAKs9jB,SAASjjX,gBAAgBhyM,MAAK4qB,QAAI8xD,IAASA,GAAM86e,eAAiB7/jB,OAAOmjb,OAAUnjb,KAAKs9jB,SAAS3we,WAAa3sF,SAEzHmG,UAAUw7F,KACPA,IAAc3hG,KAAKw/hB,eAAiBx/hB,KAAKqpgB,UACzCrpgB,KAAKqpgB,QAAU,IAAIntE,KAAel8b,KAAKw/hB,aAAaz2F,UAAW/oc,KAAKogK,sBAIhFl3J,cACIlJ,KAAK+rgB,YAAYp+e,cAGrB6rf,aAAarob,GAASxhC,IAClB,MAAM4xgB,GAAqBvhkB,KAAKshkB,mBAAmB9nD,aAAarob,GAASxhC,IAInE6xgB,MAAsBrwe,IAAWA,GAAQjmC,SAAWlrD,KAAKw9jB,YAC/D,OAAO+D,IAAsBC,IAGrCC,GAAQ1if,UAAR,4BAAoG0if,IAhQLxif,+BAgQ8BwlX,gBAAW,IAAMi9H,KAhQ/Czif,8BAgQuES,KAAtK,GAhQ+FT,8BAgQwHA,oBAhQxHA,8BAgQwJo+e,EAAvP,KACAoE,GAAQ7hf,UAjQuFX,8BAiQ/F,MAAwFwif,GAAxF/9jB,qEAjQ+Fu7E,2BAiQ/F/2B,GAGsEi4gB,GAHtE,GAjQ+Flhf,2BAiQ/F/2B,GAGiKk5gB,GAHjK,iBAjQ+Fnif,2BAiQ/FnwD,GAjQ+FmwD,6BAiQ/FvtD,uBAjQ+FutD,2BAiQ/FnwD,GAjQ+FmwD,6BAiQ/FvtD,kFAjQ+FutD,+BAiQ+D,CACtJ,CAAEoJ,QAASgwb,KAAmB75a,YAAaije,IAC3C,CAAEp5e,QAASi2e,EAAS9/d,YAAaije,MAnQsDxif,wCAiQ/Fc,uGAjQ+Fd,qDAoQ+K,0BAH9QuhM,YAG+Z+pP,MAH/ZlwP,oCAsCA,iBAAmCkkT,GAEnCoD,GAAqB5if,UAArB,qDAzS+FE,kCAySkB0if,MAAjHjwiB,IAAiHiwiB,KAAjH,GACAA,GAAqB3if,UA1S0EC,8BA0S/F,MAAqG0if,GAArGhoT,UA1S+F16L,0CAkT/F,iBAAmC0if,IAEnCC,GAAqB7if,UAArB,qDApT+FE,kCAoTkB2if,MAAjHlwiB,IAAiHkwiB,KAAjH,GACAA,GAAqB5if,UArT0EC,8BAqT/F,MAAqG2if,GAArGl+jB,iDArT+Fu7E,0CA8T/F,iBAAiC0if,IAEjCE,GAAmB9if,UAAnB,qDAhU+FE,kCAgUgB4if,MAA/GnwiB,IAA+GmwiB,KAA/G,GACAA,GAAmB7if,UAjU4EC,8BAiU/F,MAAmG4if,GAAnGn+jB,+CAjU+Fu7E,0CAsU/F,iBAAyBs/e,EACrB1+jB,YAAYi+I,GAAKkhY,GAAmB9/b,GAAYE,IAC5CzzD,MAAMmyH,GAAKkhY,GAAmB9/b,GAAYE,IAE1Cp/E,KAAKusE,MAAQ,IAAI8qV,YAEjBr3Z,KAAK8hkB,cAAgB,IAAIx7J,eAKzBtma,KAAK4vgB,cAAgB,MAErB5vgB,KAAK+hkB,eAAiB,GAEtB/hkB,KAAK+thB,eAAiB,IAAIhygB,KAC1B,MAAMsqB,EAAW64C,GAAWrsE,cAAcwzB,SAASxqB,cACnD7b,KAAK6vU,YAA2B,yBAAbxpS,EAAsC,WAAa,aAE1Es/O,qBACIh6P,MAAMg6P,qBACN3lR,KAAKgikB,OAAOz5jB,QAAQ,EAAGqiD,QAAMu/N,kBAAmBnqR,KAAK+hkB,eAAen3gB,IAAQu/N,IAE5EnqR,KAAKusE,MAAMiT,QAAQn3E,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU,KAC1DnG,KAAKo+jB,kBAETp+jB,KAAK+thB,eACA1lhB,MAILo5Z,QAAqB,CAACjha,GAAGL,KAAMK,GAAEy+hB,YAAc9+hB,GAAE8+hB,WAAaz+hB,GAAEy4hB,UAAY94hB,GAAE84hB,UAAUhzH,OAAUjma,KAAKsib,aAClGn8a,UAAU4+E,KACW,YAAlBA,GAAMk0c,SACNj5hB,KAAK8hkB,cAAcnxiB,SAI/BsxiB,iBAAiBtvhB,GAAO2yO,IACpB,OAAOA,GAAK04S,WAAah+jB,KAAK0pe,gBAAkB/2b,KAAU3yC,KAAK4+jB,QAGvE8C,GAAW3if,UAAX,4BAAuG2if,IAhXRzif,8BAgXoC0ge,KAAnI,GAhX+F1ge,8BAgXoFA,qBAhXpFA,8BAgXqHA,cAhXrHA,8BAgX+IU,QAC9O+hf,GAAW9hf,UAjXoFX,8BAiX/F,MAA2Fyif,GAA3Fh+jB,iJAjX+Fu7E,2BAiX/F/2B,GAIsDu5gB,GAJtD,GAjX+Fxif,2BAiX/F/2B,GAIyHi5gB,GAJzH,iBAjX+Flif,2BAiX/FnwD,GAjX+FmwD,6BAiX/FvtD,cAjX+FutD,2BAiX/FnwD,GAjX+FmwD,6BAiX/FvtD,mDAjX+FutD,wBAqXwH8hf,GAJvN,gBAjX+F9hf,2BAiX/F/2B,GAjX+F+2B,6BAiX/FvtD,uCAAmY,WAAnY2uP,+CAjX+FphM,wBAiX/F,mCAjX+FA,wBAiX/F,uDAjX+FA,CAiX/F,mDAjX+FA,CAiX/F,wFAjX+FA,CAiX/F,wUAjX+FA,+BAiXwsB,CAC/xB,CAAEoJ,QAASk2e,EAAY//d,YAAakje,IACpC,CAAEr5e,QAASu5e,GAAsBpje,YAAakje,IAC9C,CAAEr5e,QAASw5e,GAAoBrje,YAAakje,MApX2Czif,wCAiX/FxvC,k1BAjX+FwvC,oCAqXqR,KArXrRA,uBAqXiW,2BArXjWA,uBAqXq6C,2BArXr6CA,2DAqXi6E,+BArXj6EA,qCAiX/F,OAjX+FA,uBAqXmS,2BArXnSA,sBAqXgX,GArXhXA,uBAqXgX,6BArXhXA,sBAqXo7C,GArXp7CA,uBAqXo7C,6BAJnhDuhM,YAIq9NugT,GAAsMhmI,KAAqEA,KAAiFA,KAA0GA,KAAwHA,MAJnhP/6W,kwGAIymP,CACjmPghf,GAAqBC,yBACrBD,GAAqBE,yBAN7BpnX;;;;;;;;AA2DA,iBAA6BkmX,GAE7BkC,GAAenjf,UAAf,qDA9a+FE,kCA8aYijf,MAA3GxwiB,IAA2GwwiB,KAA3G,GACAA,GAAeljf,UA/agFC,8BA+a/F,MAA+Fijf,GAA/Fx+jB,0HA/a+Fu7E,2BA+a/F,gDA/a+FA,0CA4b/F,iBAAiCghf,GAEjCkC,GAAmBpjf,UAAnB,qDA9b+FE,kCA8bgBkjf,MAA/GzwiB,IAA+GywiB,KAA/G,GACAA,GAAmBnjf,UA/b4EC,8BA+b/F,MAAmGkjf,GAAnGz+jB,kIA/b+Fu7E,2BA+b/F,gDA/b+FA;;;;;;;;AAmd/F,UAEAmjf,GAAiBrjf,UAAjB,4BAA6Gqjf,KAC7GA,GAAiBlif,UAtd8EjB,6BAsd/F,MAA8Gmjf,KAwB9GA,GAAiBjif,UA9e8ElB,6BA8e/F,WAA2I,CAACuhf,GAA2BnoD,MAAvK/uY,SAAqM,CACzLlpD,KACAy9Y,KACA9zc,KACAqkf,KACA8xD,EACA/tB,KACAllC,MACD7sb;;;;;;;;;;;;;;;;;;;;;oFC1fsFnB,2BA6V3F,UA7V2FA,mBA8VzF,GA9VyFA,+FA6VrD,yBA7VqDA,sBA8VzF,GA9VyFA,+BA8VzF,oDA9VyFA,2BAgW3F,UAhW2FA,mBAiWzF,GAjWyFA,+GAgWvD,yBAhWuDA,sBAiWzF,GAjWyFA,+BAiWzF,sCAnWR,SAEAojf,EAAetjf,UAAf,4BAA2Gsjf,IAC3GA,EAAerjf,UADkFC,8BACjG,MAA+Fojf,EAA/F3+jB,+FADiGu7E,+BAC4F,CAAC,CAAEoJ,QAASwiV,IAAyBt+Q,SAAU2+S,WAW5O,gBAAuB4O,KACnBj6c,cACI8rB,SAASinR,WAET5yS,KAAKqzc,eAAiB,mBAEtBrzc,KAAKszc,8BAA+B,GAG5CgvH,EAASvjf,UAAT,qDArBiGE,kCAqBIqjf,KAArG95iB,IAAqG85iB,IAArG,GACAA,EAAS1if,UAtBwFX,8BAsBjG,MAAyFqjf,EAAzF5+jB,2HAtBiGu7E,wBAsBjG,0EAtBiGA,+BAsB4J,CAGrP,CAAEoJ,QAASwiV,IAAyBt+Q,SAAUwtT,MAC9C,CAAE1xX,QAASyxX,KAAUt7W,YAAa8je,GAClC,CAAEj6e,QAASqjX,KAAWltW,YAAa8je,GACnC,CAAEj6e,QAAS6kX,KAA4B3gT,SAAUkhT,MAEjD,CAAEplX,QAAS8pX,KAA6B7pX,SAAU,QA9BuCrJ,wCAsBjGc,6LAtBiGd,4BAsBjG5+E,GAtBiG4+E,yBA+Bd,GA/BcA,yBA+BkC,KA/BlCA,+BA+BwF,IA/BxFA,CA+BwF,IA/BxFA,CA+BwF,IA/BxFA,CA+BwF,OATzLuhM,YASs4E9gM,KAA6DA,KAAqDA,KAA6DA,MATrjFM;;;;;;;;AAsCA,gBAAyB4rX,MAEzB22H,EAAWxjf,UAAX,qDA9DiGE,kCA8DMsjf,KAAvG/5iB,IAAuG+5iB,IAAvG,GACAA,EAAWvjf,UA/DsFC,8BA+DjG,MAA2Fsjf,EAA3F7+jB,2CA/DiGu7E,+BA+D2C,CAAC,CAAEoJ,QAASujX,KAAYptW,YAAa+je,KA/DhFtjf,0CA2EjG,gBAA+B4sX,MAE/B22H,EAAiBzjf,UAAjB,qDA7EiGE,kCA6EYujf,KAA7Gh6iB,IAA6Gg6iB,IAA7G,GACAA,EAAiBxjf,UA9EgFC,8BA8EjG,MAAiGujf,EAAjG9+jB,iDA9EiGu7E,+BA8E6D,CAAC,CAAEoJ,QAASwjX,KAAkBrtW,YAAagke,KA9ExGvjf,0CA0FjG,gBAA+B6sX,MAE/B22H,EAAiB1jf,UAAjB,qDA5FiGE,kCA4FYwjf,KAA7Gj6iB,IAA6Gi6iB,IAA7G,GACAA,EAAiBzjf,UA7FgFC,8BA6FjG,MAAiGwjf,EAAjG/+jB,iDA7FiGu7E,+BA6F6D,CAAC,CAAEoJ,QAASyjX,KAAkBttW,YAAaike,KA7FxGxjf,0CAyGjG,gBAA2BwtX,KAEnB7hZ,WACA,OAAO5qD,KAAKmsc,MAEZvhZ,SAAKA,IACL5qD,KAAKosc,cAAcxhZ,IAQvB0hZ,4BACI3gb,MAAM2gb,4BACNtsc,KAAKusc,oBAAoBppc,KAAM,cAAanD,KAAKwsc,yBAGzDk2H,EAAa3jf,UAAb,qDA5HiGE,kCA4HQyjf,KAAzGl6iB,IAAyGk6iB,IAAzG,GACAA,EAAa1jf,UA7HoFC,8BA6HjG,MAA6Fyjf,EAA7Fh/jB,mGA7HiGu7E,+BA6H+G,CACxM,CAAEoJ,QAASokX,KAAcjuW,YAAakke,GACtC,CAAEr6e,QAAS,6BAA8BmW,YAAakke,KA/HmCzjf,0CAgJjG,gBAA4B2tX,MAE5B+1H,EAAc5jf,UAAd,qDAlJiGE,kCAkJS0jf,KAA1Gn6iB,IAA0Gm6iB,IAA1G,GACAA,EAAc3jf,UAnJmFC,8BAmJjG,MAA8F0jf,EAA9Fj/jB,8EAA6L,eAA7L,+BAnJiGu7E,0CA+JjG,gBAA4B6tX,MAE5B81H,EAAc7jf,UAAd,qDAjKiGE,kCAiKS2jf,KAA1Gp6iB,IAA0Go6iB,IAA1G,GACAA,EAAc5jf,UAlKmFC,8BAkKjG,MAA8F2jf,EAA9Fl/jB,8EAA6L,WAA7L,+BAlKiGu7E,0CA8KjG,gBAAsB8tX,MAEtB81H,EAAQ9jf,UAAR,qDAhLiGE,kCAgLG4jf,KAApGr6iB,IAAoGq6iB,IAApG,GACAA,EAAQ7jf,UAjLyFC,8BAiLjG,MAAwF4jf,EAAxFn/jB,gEAAmK,WAAnK,wBAjLiGu7E;;;;;;;;AAwMjG,gBAA8B6uX,MAE9Bg1H,EAAgB/jf,UAAhB,qDA1MiGE,kCA0MW6jf,KAA5Gt6iB,IAA4Gs6iB,IAA5G,GACAA,EAAgB9jf,UA3MiFC,8BA2MjG,MAAgG6jf,EAAhGp/jB,yIA3MiGu7E,+BA2M4J,CAAC,CAAEoJ,QAASylX,KAAiBtvW,YAAaske,KA3MtM7jf,0CAwNjG,gBAA8B+uX,MAE9B+0H,EAAgBhkf,UAAhB,qDA1NiGE,kCA0NW8jf,KAA5Gv6iB,IAA4Gu6iB,IAA5G,GACAA,EAAgB/jf,UA3NiFC,8BA2NjG,MAAgG8jf,EAAhGr/jB,yIA3NiGu7E,+BA2N4J,CAAC,CAAEoJ,QAAS2lX,KAAiBxvW,YAAauke,KA3NtM9jf,0CAyOjG,gBAAwBovX,MAExB20H,EAAUjkf,UAAV,qDA3OiGE,kCA2OK+jf,KAAtGx6iB,IAAsGw6iB,IAAtG,GACAA,EAAUhkf,UA5OuFC,8BA4OjG,MAA0F+jf,EAA1Ft/jB,wHA5OiGu7E,+BA4O+H,CAAC,CAAEoJ,QAASgmX,KAAW7vW,YAAawke,KA5OnK/jf,0CAsPjG,gBAA2BwvX,MAE3Bw0H,EAAalkf,UAAb,qDAxPiGE,kCAwPQgkf,KAAzGz6iB,IAAyGy6iB,IAAzG,GACAA,EAAarjf,UAzPoFX,8BAyPjG,MAA6Fgkf,EAA7Fv/jB,4EAAyL,MAAzL,wDAzPiGu7E,+BAyPgJ,CAAC,CAAEoJ,QAASomX,KAAcjwW,YAAayke,KAzPvLhkf,wCAyPjGxvC,4EAzPiGwvC,+BAyPoR,MAArXuhM,YAAwc9gM,MAAxc26L,kBAmBA,gBAA2Bq0L,MAE3Bw0H,EAAankf,UAAb,qDA9QiGE,kCA8QQikf,KAAzG16iB,IAAyG06iB,IAAzG,GACAA,EAAatjf,UA/QoFX,8BA+QjG,MAA6Fikf,EAA7Fx/jB,4EAAyL,MAAzL,wDA/QiGu7E,+BA+QgJ,CAAC,CAAEoJ,QAASqmX,KAAclwW,YAAa0ke,KA/QvLjkf,wCA+QjGxvC,4EA/QiGwvC,+BA+QoR,MAArXuhM,YAAwc9gM,MAAxc26L,kBAmBA,gBAAqBs0L,MAErBw0H,EAAOpkf,UAAP,qDApSiGE,kCAoSEkkf,KAAnG36iB,IAAmG26iB,IAAnG,GACAA,EAAOvjf,UArS0FX,8BAqSjG,MAAuFkkf,EAAvFz/jB,8DAA+J,MAA/J,2CArSiGu7E,+BAqS+G,CAAC,CAAEoJ,QAASsmX,KAAQnwW,YAAa2ke,KArShJlkf,wCAqSjGxvC,4EArSiGwvC,+BAqSiO,MAAlUuhM,YAAqZ9gM,MAArZ26L,kBAmBA,iBAA2Bw0L,KACvBhvc,cACI8rB,SAASinR,WACT5yS,KAAK4uc,kBAAoB,mBAGjCw0H,GAAarkf,UAAb,qDA9TiGE,kCA8TQmkf,MAAzG56iB,IAAyG46iB,KAAzG,GACAA,GAAapkf,UA/ToFC,8BA+TjG,MAA6Fmkf,GAA7F1/jB,wDA/TiGu7E,+BA+T4D,CAAC,CAAEoJ,QAASwmX,KAAcrwW,YAAa4ke,MA/TnGnkf;;;;;;;;AAwVjG,iBAA4Bo7X,MAE5BgpH,GAActkf,UAAd,qDA1ViGE,kCA0VSokf,MAA1G76iB,IAA0G66iB,KAA1G,GACAA,GAAczjf,UA3VmFX,8BA2VjG,MAA8Fokf,GAA9F3/jB,0CA3ViGu7E,wCA2VjGxvC,4NA3ViGwvC,oCA4V7F,KA5V6FA,uBA6V3F,gBA7V2FA,uBAgW3F,gBAhW2FA,sCA2VjGuhM,YAS0CkiT,EAAwFF,EAA4DG,EAA2EJ,EAAgDM,GATzTxoT,kBAiEA,UAEAipT,GAAevkf,UAAf,4BAA2Gukf,KAC3GA,GAAepjf,UA/ZkFjB,6BA+ZjG,MAA4Gqkf,KA4C5GA,GAAenjf,UA3ckFlB,6BA2cjG,UAAsI,CAACq7X,KAAgBl6X,MAAkBA,QAuBzK,iBAAkC+wF,KAC9BtxK,YAAY0jkB,GAAc,IACtB53iB,QAEA3rB,KAAKwjkB,YAAc,IAAIziK,IAAgB,IAEvC/ga,KAAKyjkB,QAAU,IAAI1iK,IAAgB,IAEnC/ga,KAAK0jkB,qBAAuB,IAAI3njB,KAKhC/b,KAAK2jkB,2BAA6B,KAUlC3jkB,KAAKivD,oBAAsB,CAACvsD,GAAMkhkB,MAC9B,MAAM5/iB,EAAQthB,GAAKkhkB,IACnB,IAAIC,QAAe7/iB,GAAQ,CACvB,MAAM8/iB,GAAcppiB,OAAO1W,GAG3B,OAAO8/iB,GA/BE,iBA+B+BA,GAAc9/iB,EAE1D,OAAOA,GAWXhkB,KAAKmjH,SAAW,CAACzgH,GAAM8P,MACnB,MAAM2pI,EAAS3pI,GAAK2pI,OACd2E,GAAYtuI,GAAKsuI,UACvB,OAAK3E,GAAuB,IAAb2E,GAGRp+I,GAAK8P,KAAK,CAAC/C,GAAG8qQ,MACjB,IAAIwpT,GAAS/jkB,KAAKivD,oBAAoBx/C,GAAG0sI,GACrC6nb,GAAShkkB,KAAKivD,oBAAoBsrN,GAAGp+H,GAIzC,MAAM8nb,UAAoBF,GACpBG,UAAoBF,GACtBC,KAAeC,KACI,WAAfD,KACAF,IAAU,IAEK,WAAfG,KACAF,IAAU,KAOlB,IAAIG,GAAmB,EACvB,OAAc,MAAVJ,IAA4B,MAAVC,GAElBroiB,GAAaqoiB,GACTG,GAAmB,EAEdJ,GAASC,KACdG,IAAmB,GAGR,MAAdxoiB,GACDwoiB,GAAmB,EAEJ,MAAVH,KACLG,IAAmB,GAEhBA,IAAiC,OAAbrjb,GAAqB,GAAI,KAtC7Cp+I,EAsC6C,EAa5D1C,KAAK8sE,gBAAkB,CAACpqE,GAAMgE,MAE1B,MAAM09jB,EAAU76iB,OAAO+hB,KAAK5oC,IACvB8iN,OAAO,CAACihC,GAAanwN,KAOfmwN,GAAc/jP,GAAK4zB,IAAO,SAClC,IACEza,cAECwojB,GAAoB39jB,GAAO0iB,OAAOvN,cACxC,OAA6C,GAAtCuojB,EAAQhzjB,QAAQizjB,GAAsB,EAEjDrkkB,KAAKmgK,MAAQ,IAAI4gQ,IAAgBwiK,IACjCvjkB,KAAKskkB,4BAGL5hkB,WACA,OAAO1C,KAAKmgK,MAAMn8I,MAElBthB,SAAKA,IACLA,GAAOkT,MAAMukD,QAAQz3D,IAAQA,GAAO,GACpC1C,KAAKmgK,MAAM5+I,KAAK7e,IAGX1C,KAAK2jkB,4BACN3jkB,KAAKukkB,YAAY7hkB,IAOrBgE,aACA,OAAO1G,KAAKyjkB,QAAQz/iB,MAEpBtd,WAAOA,IACP1G,KAAKyjkB,QAAQlijB,KAAK7a,IAGb1G,KAAK2jkB,4BACN3jkB,KAAKukkB,YAAYvkkB,KAAK0C,MAO1B8P,WACA,OAAOxS,KAAKyS,MAEZD,SAAKA,IACLxS,KAAKyS,MAAQD,GACbxS,KAAKskkB,4BAYL3siB,gBACA,OAAO33B,KAAKszD,WAEZ37B,cAAUA,IACV33B,KAAKszD,WAAa37B,GAClB33B,KAAKskkB,4BAOTA,4BACI,IAAIzuQ,GAOJ,MAAM9oH,GAAa/sM,KAAKyS,OAClBmyX,OAAM5kY,KAAKyS,MAAMs6L,WAAY/sM,KAAKyS,MAAM4f,cACxCiyY,QAAG,MACH75I,GAAazqR,KAAKszD,YAClBsxU,OAAM5kY,KAAKszD,WAAWk/O,KAAMxyS,KAAK0jkB,qBAAsB1jkB,KAAKszD,WAAWjhC,cACvEiyY,QAAG,MACHyjC,EAAa/nc,KAAKmgK,MAElB/8C,IAAegkU,QAAc,CAAC2gB,EAAY/nc,KAAKyjkB,UAAUp7jB,MAAK4qB,OAAI,EAAEvwB,MAAU1C,KAAKukkB,YAAY7hkB,MAE/F8hkB,IAAcp9I,QAAc,CAAChkU,GAAc2pF,KAAa1kM,MAAK4qB,OAAI,EAAEvwB,MAAU1C,KAAKykkB,WAAW/hkB,MAE7FgikB,IAAgBt9I,QAAc,CAACo9I,GAAa/5S,KAAapiR,MAAK4qB,OAAI,EAAEvwB,MAAU1C,KAAK2kkB,UAAUjikB,MAExD,QAA1CmzT,GAAK71T,KAAK2jkB,kCAA+C,IAAP9tQ,IAAyBA,GAAGloS,cAC/E3tB,KAAK2jkB,2BAA6Be,GAAcv+jB,UAAUzD,IAAQ1C,KAAKwjkB,YAAYjijB,KAAK7e,KAO5F6hkB,YAAY7hkB,IAIR,YAAK0gH,aACc,MAAfpjH,KAAK0G,QAAkC,KAAhB1G,KAAK0G,OACtBhE,GACAA,GAAKgE,OAAOglJ,IAAO1rJ,KAAK8sE,gBAAgB4+E,GAAK1rJ,KAAK0G,SACxD1G,KAAK23B,WACL33B,KAAK4kkB,iBAAiB5kkB,KAAKojH,aAAa5/G,QAErCxD,KAAKojH,aAOhBqhd,WAAW/hkB,IAEP,OAAK1C,KAAKwS,KAGHxS,KAAKmjH,SAASzgH,GAAKuZ,QAASjc,KAAKwS,MAF7B9P,GAQfiikB,UAAUjikB,IACN,IAAK1C,KAAK23B,UACN,OAAOj1B,GAEX,MAAM69iB,GAAavgjB,KAAK23B,UAAUuvI,UAAYlnK,KAAK23B,UAAUqkD,SAC7D,OAAOt5E,GAAKuZ,MAAMskiB,GAAYA,GAAavgjB,KAAK23B,UAAUqkD,UAO9D4of,iBAAiBC,IACbxtd,QAAQi2O,UAAU51O,KAAK,KACnB,MAAM//E,GAAY33B,KAAK23B,UACvB,GAAKA,KAGLA,GAAUn0B,OAASqhkB,GAEfltiB,GAAUuvI,UAAY,GAAG,CACzB,MAAM49Z,GAAgBr9iB,KAAK+b,KAAK7L,GAAUn0B,OAASm0B,GAAUqkD,UAAY,GAAK,EACxE+of,EAAet9iB,KAAK+2C,IAAI7mC,GAAUuvI,UAAW49Z,IAC/CC,IAAiBptiB,GAAUuvI,YAC3BvvI,GAAUuvI,UAAY69Z,EAGtB/kkB,KAAK0jkB,qBAAqBnijB,WAS1CovY,UACI,OAAK3wZ,KAAK2jkB,4BACN3jkB,KAAKskkB,4BAEFtkkB,KAAKwjkB,YAMhBn7J,aACI,IAAIxyG,GACuC,QAA1CA,GAAK71T,KAAK2jkB,kCAA+C,IAAP9tQ,IAAyBA,GAAGloS,cAC/E3tB,KAAK2jkB,2BAA6B,MAgB1C,iBAAiCqB;;;;;;;;;;;;;;SAAoB;;;;;;;iCCvtBuC/lf,yBA+K28B,uUA/K38BA,uBA08CqpD,0CA18CrpDA,6DA08CkqD,gEA18ClqDA,mBA08Ck2D,kBA18Cl2DA,oEA08Ck2Dn4C,oDA18Cl2Dm4C,0DA08C6kB,WA18C7kBA,uBA08Cm3C,4BA18Cn3CA,0BA08Cm3Cn4C,mCA18Cn3Cm4C,4BA08Cm3Cr9C,GA18Cn3Cq9C,wBA08Cm3C,UAAUx9C,2BA18C73Cw9C,CA08Cm3C,yCA18Cn3CA,wBA08Cm3Cn4C,iBAAuE3kC,EA18C17C88E,0BA08C07Cgmf,0BA18C17Chmf,2BA08Ck+C,WA18Cl+CA,uBA08CqkD,0BA18CrkDA,uBA08Cu0D,6BA18Cv0DA,iMA08C+qC,8CA18C/qCA,uBA08CmwB,2BA18CnwBA,CA08CmwB,wBA18CnwBA,CA08CmwB,uBA18CnwBA,CA08CmwB,mDA18CnwBA,wBA08CsyB,kCA18CtyBA,CA08CsyB,qBA18CtyBA,CA08CsyB,+BA18CtyBA,CA08CsyB,wCA18CtyBA,CA08CsyB,sCA18CtyBA,CA08CsyB,gCA18CtyBA,CA08CsyB,2EA18CtyBA,sBA08CklD,GA18CllDA,uBA08CklD,wBA18CllDA,CA08CklD,qDA18CllDA,0DA08CujE,qBA18CvjEA,uBA08CoqF,yBA18CpqFA,iCA08CoqFn4C,IAAgB3kC,EA18CprF88E,0BA08CorFimf,+BA18CprFjmf,CA08CoqF,4BA18CpqFA,iCA08CoqFn4C,IAAiF3kC,EA18CrvF88E,0BA08CqvFkmf,+BA18CrvFlmf,6HA08C03E,6CA18C13EA,uBA08CkqE,6BA18ClqEA,CA08CkqE,uBA18ClqEA,CA08CkqE,qBA18ClqEA,CA08CkqE,uBA18ClqEA,CA08CkqE,mBA18ClqEA,CA08CkqE,0CA18ClqEA,wBA08C+sE,mFA18C/sEA,CA08C+sE,gDA3/CryEmmf,GAA0B,IAAI38a,iBAAe,sBAAuB,CACtEC,WAAY,OACZrmJ,QAMJ,cAKI,OAJgBu9F,KAAa,CACzBinL,KAAMjnL,IAAWA,GAAQyle,YAAc,GAAK,KAAO,IACnD1vjB,MAAOiqF,IAAWA,GAAQyjJ,aAAe,GAAK,KAAO,SAQ7D,SACIxjP,YAAYg/E,GAAa+8U,GAAS0pK,GAAmBj4D,IACjDrtgB,KAAK6+E,YAAcA,GACnB7+E,KAAK47Z,QAAUA,GACf57Z,KAAKslkB,kBAAoBA,GACzBtlkB,KAAKqtgB,eAAiBA,GAO1Bk4D,eAAe3le,IACX5/F,KAAK+kR,OACL/kR,KAAK47Z,QAAQgC,SAASv1Z,MAAKi5Q,OAAK,IAAIn7Q,UAAU,KAC1C,MAAMyla,GAAY5ra,KAAKslkB,kBAAkB1le,IACnC4le,GAASxlkB,KAAK6+E,YAAYhsE,cAChC2yjB,GAAOzyiB,MAAM8zP,KAAO+kJ,GAAU/kJ,KAC9B2+S,GAAOzyiB,MAAMpd,MAAQi2Z,GAAUj2Z,QAIvCovQ,OACI/kR,KAAK6+E,YAAYhsE,cAAckgB,MAAMg1B,WAAa,UAGtDi9N,OACIhlR,KAAK6+E,YAAYhsE,cAAckgB,MAAMg1B,WAAa,UAG1D09gB,GAAU1mf,UAAV,4BAAsG0mf,IAAVxmf,8BAAqCA,cAArCA,8BAA+DA,UAA/DA,8BAAqFmmf,IAArFnmf,8BAAyH4ub,KAArN,KACA43D,GAAUzmf,UADkFC,8BAC5F,MAA0Fwmf,GAA1F/hkB,sGAD4Fu7E,wBAC5F;;;;;;;;AAkCA,MAAMymf,GAAkB,IAAIj9a,iBAAe,iBAE3C,SACI5oJ,YAAwCq9F,IACpCl9F,KAAKk9F,SAAWA,IAGxByoe,GAAc5mf,UAAd,4BAA0G4mf,IA1Cd1mf,8BA0C6CA,iBACzI0mf,GAAc3mf,UA3C8EC,8BA2C5F,MAA8F0mf,GAA9FjikB,8CA3C4Fu7E,+BA2CyD,CAAC,CAAEoJ,QAASq9e,GAAiBlne,YAAamne;;;;;;;;AAqB/L,MAAMC,GAAgB,IAAIn9a,iBAAe,eAKnCo9a,GAAU,IAAIp9a,iBAAe,WAEnC,iBAA0B+4S,KACtB3hc,YAAYsqR,GAAapxI,GAAkB+sb,IACvCn6iB,MAAMw+P,GAAapxI,IACnB/4I,KAAK8lkB,YAAcA,IAG3BC,GAAYhnf,UAAZ,4BAAwGgnf,IA7EZ9mf,8BA6EyCA,eA7EzCA,8BA6EoEA,oBA7EpEA,8BA6EoG4mf,GAAhM,KACAE,GAAY/mf,UA9EgFC,8BA8E5F,MAA4F8mf,GAA5FrikB,oEA9E4Fu7E,+BA8EoE,CAAC,CAAEoJ,QAASu9e,GAAepne,YAAaune,MA9E5G9mf;;;;;;;;AAuG5F,MAAM+mf,IAAc54D,QAAc,SAM5B64D,GAAgB,IAAIx9a,iBAAe,iBACzC,iBAAqBu9a,GACjBnmkB,YAAYugK,GAAmB8la,IAC3Bv6iB,QACA3rB,KAAKogK,kBAAoBA,GACzBpgK,KAAKkmkB,iBAAmBA,GAExBlmkB,KAAKmmkB,UAAY,GAEjBnmkB,KAAKomkB,eAAiB,KAEtBpmkB,KAAKikb,cAAgB,IAAIloa,KAKzB/b,KAAKmU,SAAW,KAKhBnU,KAAKg0S,OAAS,KAIdh0S,KAAKg+Q,UAAW,EAGhBqoT,oBACA,OAAOrmkB,KAAK4gkB,eAEZyF,kBAAcrijB,IACdhkB,KAAKsmkB,uBAAuBtijB,IAG5BkuQ,cACA,OAAOlyR,KAAKomkB,eAEhBhyiB,YAAYorD,KACJA,GAAQnyC,eAAe,cAAgBmyC,GAAQnyC,eAAe,cAC9DrtC,KAAKikb,cAAc1ia,OAG3BrY,cACIlJ,KAAKikb,cAAcpqa,WAEvBrX,WACIxC,KAAKomkB,eAAiB,IAAIlqI,KAAel8b,KAAKumkB,kBAAoBvmkB,KAAKwmkB,iBAAkBxmkB,KAAKogK,mBAQlGkma,uBAAuBtijB,IAKfA,IAASA,GAAM8hjB,cAAgB9lkB,OAC/BA,KAAK4gkB,eAAiB58iB,KAIlCyijB,GAAO1nf,UAAP,4BAAmG0nf,IA9KPxnf,8BA8K+BA,oBA9K/BA,8BA8K+Dgnf,GAA3J,KACAQ,GAAO7mf,UA/KqFX,8BA+K5F,MAAuFwnf,GAAvF/ikB,oEA/K4Fu7E,2BA+K5Fl+C,GAAqc6kiB,GAArc,GA/K4F3mf,2BA+K5Fl+C,GAAqiB2kiB,GAAriB,EAA+kBzhe,gBAA/kB,aA/K4FhlB,2BA+K5F19C,GA/K4F09C,6BA+K5Fn4C,2BA/K4Fm4C,2BA+K5F19C,GA/K4F09C,6BA+K5Fn4C,mEA/K4Fm4C,wBA+K2lBglB,cAAvrB,gBA/K4FhlB,2BA+K5Fl+C,GA/K4Fk+C,6BA+K5Fn4C,kQA/K4Fm4C,+BA+KyP,CAAC,CAAEoJ,QAASw9e,GAASrne,YAAaioe,MA/K3Rxnf,yEA+K5Fc,oEA/K4Fd,qDA+K87B,yBAA1hCo7L;;;;;;;;AA8CA,MAAMqsT,GAAoB,CAEtBC,cAAct8e,QAAQ,eAAgB,EAElCsjQ,QAAM,yDAAyD56T,QAAM,CAAE7V,UAAW,WAKlFywU,QAAM,QAAQ56T,QAAM,CAAE7V,UAAW,2BAA4B5O,UAAW,UACxEq/U,QAAM,SAAS56T,QAAM,CAAE7V,UAAW,0BAA2B5O,UAAW,UACxE++gB,QAAW,0DAA0DjuQ,QAAQ,0DAC7EiuQ,QAAW,6BAA8B,EACrCt6f,QAAM,CAAE7V,UAAW,8BACnBkiQ,QAAQ,2DAEZiuQ,QAAW,8BAA+B,EACtCt6f,QAAM,CAAE7V,UAAW,6BACnBkiQ,QAAQ;;;;;;;SAgBpB,iBAA+B0iL,KAC3Bjic,YAAY+4I,GAA0BG,GAAkBmzS,GAAO9sW,IAC3DzzD,MAAMitH,GAA0BG,GAAkB35D,IAClDp/E,KAAKksb,MAAQA,GAEblsb,KAAK4mkB,cAAgB9vK,UAErB92Z,KAAK6mkB,YAAc/vK,UAGvBt0Z,WACImpB,MAAMnpB,WACNxC,KAAK4mkB,cAAgB5mkB,KAAKksb,MAAM46I,iBAC3Bz+jB,MAAK86a,OAAUnjb,KAAKksb,MAAM66I,kBAAkB/mkB,KAAKksb,MAAMkQ,aACvDj2b,UAAW6gkB,KACRA,KAAgBhnkB,KAAKsnF,eACrBtnF,KAAKwoF,OAAOxoF,KAAKksb,MAAMwjI,YAG/B1vjB,KAAK6mkB,YAAc7mkB,KAAKksb,MAAM+6I,oBAAoB9gkB,UAAU,KACxDnG,KAAK8oa,WAIb5/Z,cACIyiB,MAAMziB,cACNlJ,KAAK4mkB,cAAcj5iB,cACnB3tB,KAAK6mkB,YAAYl5iB,eAGzBu5iB,GAAiBnof,UAAjB,4BAA6Gmof,IA7RjBjof,8BA6RmDA,4BA7RnDA,8BA6R2FA,oBA7R3FA,+BA6R2HwlX,gBAAW,IAAM0iI,KA7R5Ilof,8BA6RoKU,QAChQunf,GAAiBlof,UA9R2EC,8BA8R5F,MAAiGiof,GAAjGxjkB,+CA9R4Fu7E,0CAiT5F,SACIp/E,YAAYg/E,GAAakpV,GAAMi3G,IAC3Bh/gB,KAAK6+E,YAAcA,GACnB7+E,KAAK+na,KAAOA,GAEZ/na,KAAK0yjB,uBAAyB57J,UAE9B92Z,KAAKonkB,sBAAwB,IAAIrrjB,KAEjC/b,KAAKqnkB,aAAe,IAAI/gK,eAExBtma,KAAK8mkB,iBAAmB,IAAIxgK,eAE5Btma,KAAKinkB,oBAAsB,IAAI3gK,eAE/Btma,KAAKsnkB,YAAc,IAAIhhK,gBAAa,GAIpCtma,KAAKunkB,kBAAoB,QACrBx/J,KACA/na,KAAK0yjB,uBAAyB3qJ,GAAKh6I,OAAO5nR,UAAW23I,KACjD99I,KAAKwnkB,+BAA+B1pb,IACpCkhY,GAAkBplU,kBAK1B55M,KAAKonkB,sBACA/+jB,MAAKo5Z,OAAqB,CAACjha,GAAGL,KACxBK,GAAEy+hB,YAAc9+hB,GAAE8+hB,WAAaz+hB,GAAEy4hB,UAAY94hB,GAAE84hB,UAErD9yhB,UAAU4+E,KAEP/kF,KAAK+mkB,kBAAkBhif,GAAMk0c,UAAYj5hB,KAAK+mkB,kBAAkB/mkB,KAAKo8b,YACrEp8b,KAAKsnkB,YAAY32iB,OAEjB3wB,KAAK+mkB,kBAAkBhif,GAAMk6c,aAAej/hB,KAAK+mkB,kBAAkB/mkB,KAAKo8b,YACxEp8b,KAAKinkB,oBAAoBt2iB,SAKjCxc,aAASA,IACTnU,KAAKynkB,eAAiBtzjB,GACtBnU,KAAKwnkB,iCAMThlkB,WAC0B,UAAlBxC,KAAKo8b,WAAwC,MAAfp8b,KAAKg0S,SACnCh0S,KAAKo8b,UAAYp8b,KAAK0nkB,2BAA2B1nkB,KAAKg0S,SAG9D9qS,cACIlJ,KAAK0yjB,uBAAuB/kiB,cAC5B3tB,KAAKonkB,sBAAsBvtjB,WAE/B8tjB,uBAAuB5if,IACnB,MAAMiif,GAAchnkB,KAAK+mkB,kBAAkBhif,GAAMk0c,SACjDj5hB,KAAK8mkB,iBAAiBn2iB,KAAKq2iB,IACvBA,IACAhnkB,KAAKqnkB,aAAa12iB,KAAK3wB,KAAK6+E,YAAYhsE,cAAcumE,cAI9Dwuf,sBACI,OAAO5nkB,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,MAAkB,MAAQ,MAG5D+ijB,kBAAkB5yjB,IACd,MAAoB,UAAZA,IAAoC,sBAAZA,IAAgD,uBAAZA,EAAY,CAGpFqzjB,+BAA+B1pb,GAAM99I,KAAK4nkB,uBAClC5nkB,KAAKynkB,eAAiB,EACtBznkB,KAAKo8b,UAAmB,OAAPt+S,GAAe,OAAS,QAExC99I,KAASynkB,eAAiB,EAC3BznkB,KAAKo8b,UAAmB,OAAPt+S,GAAe,QAAU,OAG1C99I,KAAKo8b,UAAY,SAOzBsrI,2BAA2B1zR,IACvB,MAAMl2J,GAAM99I,KAAK4nkB,sBACjB,MAAY,OAAP9pb,IAAgBk2J,IAAU,GAAc,OAAPl2J,IAAgBk2J,GAAS,EACpD,qBAEJ,uBAGf6zR,GAAgB9of,UAAhB,4BAA4G8of,IApZhB5of,8BAoZiDA,cApZjDA,8BAoZ2ES,KAAvK,GApZ4FT,8BAoZyHA,uBACrN4of,GAAgB7of,UArZ4EC,8BAqZ5F,MAAgG4of,GAAhGr+e,mQA6BA,iBAAyBq+e,GACrBhokB,YAAYq/E,GAAY4+D,GAAKkhY,IACzBrzf,MAAMuzD,GAAY4+D,GAAKkhY,KAG/BmoD,GAAWpof,UAAX,4BAAuGoof,IAvbXlof,8BAubuCA,cAvbvCA,8BAubiES,KAA7J,GAvb4FT,8BAub+GA,uBAC3Mkof,GAAWvnf,UAxbiFX,8BAwb5F,MAA2Fkof,GAA3FzjkB,gEAxb4Fu7E,wBAwboJ6iX,KAAhP,gBAxb4F7iX,2BAwb5Fl+C,GAxb4Fk+C,6BAwb5Fn4C,kEAxb4Fm4C,wCAwb5FxvC,2IAxb4FwvC,2BAwb2O,aAxb3OA,uBAwbqZ,0CAAwBn4C,+BAxb7am4C,CAwbqZ,yCAAsFn4C,oCAxb3em4C,uBAwbwiB,yBAxbxiBA,4BAwb5F,MAxb4FA,uBAwb8R,gBAxb9RA,4BAwb8R,kBAxb9RA,4BAwb8R,8BAA1XuhM,YAAs5B0mT,IAAt5Blnf,kOAAq9B,CAAC0mf,GAAkBC;;;;;;;;AAuBx+B,MAAMmB,GAAkB,IAAIr/a,iBAAe,mBAWrCs/a,IAA0B36D,QAAc;;;;;;;SAM9C,iBAAiC26D,GAC7BlokB,YAAYq/E,IACRvzD,QACA3rB,KAAKk/E,WAAaA,GAGtBpsE,QACI9S,KAAKk/E,WAAWrsE,cAAcC,QAElCk1jB,gBACI,OAAOhokB,KAAKk/E,WAAWrsE,cAAcwyjB,WAEzC4C,iBACI,OAAOjokB,KAAKk/E,WAAWrsE,cAAcwwO,aAG7C6kV,GAAmBnpf,UAAnB,4BAA+Gmpf,IAhfnBjpf,8BAgfuDA,gBACnJipf,GAAmBlpf,UAjfyEC,8BAif5F,MAAmGipf,GAAnGxkkB,wFAjf4Fu7E,wBAif5F,+BAjf4FA,wBAif5F,yEAjf4FA;;;;;;;;AAsgB5F,MAAM8tV,IAA8BrM,QAAgC,CAChE78F,SAAS,IAqBb,SACIhkU,YAAYg/E,GAAasjW,GAAoBhV,GAAgBpF,GAAMnM,GAASz8U,GAAWkub,IACnFrtgB,KAAK6+E,YAAcA,GACnB7+E,KAAKmib,mBAAqBA,GAC1Bnib,KAAKmta,eAAiBA,GACtBnta,KAAK+na,KAAOA,GACZ/na,KAAK47Z,QAAUA,GACf57Z,KAAKm/E,UAAYA,GACjBn/E,KAAKqtgB,eAAiBA,GAEtBrtgB,KAAKmokB,gBAAkB,EAEvBnokB,KAAKookB,uBAAwB,EAE7BpokB,KAAKsib,WAAa,IAAIvma,KAEtB/b,KAAKqokB,yBAA0B,EAE/BrokB,KAAKsokB,qBAAsB,EAE3BtokB,KAAKuokB,sBAAuB,EAE5BvokB,KAAK0za,eAAiB,IAAI33Z,KAK1B/b,KAAKwokB,mBAAoB,EACzBxokB,KAAK0+jB,eAAiB,EAEtB1+jB,KAAKyokB,mBAAqB,IAAIniK,eAE9Btma,KAAK0okB,aAAe,IAAIpiK,eAExB1K,GAAQc,kBAAkB,MACtB+oC,OAAU5mX,GAAYhsE,cAAe,cAChCxK,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,KACXnG,KAAK2okB,oBAKbj/F,oBACA,OAAO1pe,KAAK0+jB,eAEZh1F,kBAAc1ld,IACdA,IAAQ0/Z,QAAqB1/Z,IACzBhkB,KAAK0+jB,gBAAkB16iB,KACvBhkB,KAAKookB,uBAAwB,EAC7BpokB,KAAK0+jB,eAAiB16iB,GAClBhkB,KAAKykgB,aACLzkgB,KAAKykgB,YAAYlsG,iBAAiBv0Y,KAI9CpR,mBAEI6yb,OAAUzlc,KAAK4okB,mBAAmB/1jB,cAAe,aAAck6Z,IAC1D1ka,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,KACXnG,KAAK6okB,sBAAsB,aAE/BpjI,OAAUzlc,KAAK8okB,eAAej2jB,cAAe,aAAck6Z,IACtD1ka,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,KACXnG,KAAK6okB,sBAAsB,WAGnCljT,qBACI,MAAMojT,GAAY/okB,KAAK+na,KAAO/na,KAAK+na,KAAKh6I,QAASu2I,QAAG,OAC9C1vW,GAAS50D,KAAKmta,eAAep/I,OAAO,KACpCi7S,GAAU,KACZhpkB,KAAKipkB,mBACLjpkB,KAAKkpkB,6BAETlpkB,KAAKykgB,YAAc,IAAI6R,KAAgBt2gB,KAAKy2Z,QACvCoB,0BAA0B73Z,KAAK4nkB,uBAC/BvvK,iBACAX,WACL13Z,KAAKykgB,YAAYlsG,iBAAiBv4Z,KAAK0+jB,gBAKvC1+jB,KAAK47Z,QAAQgC,SAASv1Z,MAAKi5Q,OAAK,IAAIn7Q,UAAU6ikB,KAG9CpkM,OAAMmkM,GAAWn0gB,GAAQ50D,KAAKy2Z,OAAOj3U,QAASx/E,KAAKmpkB,iBAC9C9gkB,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,KAIXnG,KAAK47Z,QAAQpzJ,IAAI,KACbnxJ,QAAQi2O,UAAU51O,KAAK,KAEnB13G,KAAKmokB,gBAAkB1gjB,KAAKqgB,IAAI,EAAGrgB,KAAK+2C,IAAIx+D,KAAKopkB,wBAAyBppkB,KAAKmokB,kBAC/Ea,SAGRhpkB,KAAKykgB,YAAY5sG,0BAA0B73Z,KAAK4nkB,yBAKpD5nkB,KAAKykgB,YAAY12O,OAAO1lR,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAUkjkB,KAC/DrpkB,KAAK0okB,aAAa/3iB,KAAK04iB,IACvBrpkB,KAAKspkB,aAAaD,MAI1BF,gBACI,MAA8B,mBAAnBI,eACAjqO,IAEJt/V,KAAKy2Z,OAAOj3U,QAAQn3E,MAAK86a,OAAUnjb,KAAKy2Z,SAAS6uB,OAAWkkJ,IAAa,IAAItoJ,IAAYC,IAAanhb,KAAK47Z,QAAQc,kBAAkB,KACxI,MAAM+sK,GAAiB,IAAIF,eAAe,KACtCpoJ,GAAS5/Z,SAEbiojB,UAASjhkB,QAAQshC,KACb4/hB,GAAet4hB,QAAQtH,GAAKq1C,WAAWrsE,iBAEpC,KACH42jB,GAAephK,mBAKvBhnJ,OAAK,IAETqS,wBAEQ1zR,KAAK0pkB,gBAAkB1pkB,KAAKy2Z,OAAOjzZ,SACnCxD,KAAKipkB,mBACLjpkB,KAAK0pkB,eAAiB1pkB,KAAKy2Z,OAAOjzZ,OAClCxD,KAAKmib,mBAAmBvoO,gBAIxB55M,KAAKookB,wBACLpokB,KAAK2pkB,eAAe3pkB,KAAK0+jB,gBACzB1+jB,KAAK4pkB,0BACL5pkB,KAAKkpkB,4BACLlpkB,KAAKookB,uBAAwB,EAC7BpokB,KAAKmib,mBAAmBvoO,gBAIxB55M,KAAK6pkB,yBACL7pkB,KAAK8pkB,2BACL9pkB,KAAK6pkB,wBAAyB,EAC9B7pkB,KAAKmib,mBAAmBvoO,gBAGhC1wM,cACIlJ,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAChB7Z,KAAK0za,eAAe75Z,WAGxBkuf,eAAehjb,IAEX,OAAIs0U,MAAet0U,IAGnB,OAAQA,GAAMpxE,cACLy4Y,UACAinH,KACGrzgB,KAAK+pkB,aAAe/pkB,KAAK0pe,gBACzB1pe,KAAKyokB,mBAAmB93iB,KAAK3wB,KAAK+pkB,YAClC/pkB,KAAKgqkB,cAAcjlf,KAEvB,cAEA/kF,KAAKykgB,YAAY19a,UAAUhC,KAMvCklf,oBACI,MAAM3od,GAActhH,KAAK6+E,YAAYhsE,cAAcyuG,YAI/CA,KAAgBthH,KAAKkqkB,sBACrBlqkB,KAAKkqkB,oBAAsB5od,IAAe,GAG1CthH,KAAK47Z,QAAQpzJ,IAAI,KACbxoQ,KAAKipkB,mBACLjpkB,KAAKkpkB,4BACLlpkB,KAAKmib,mBAAmBvoO,kBAWpCqvX,mBACIjpkB,KAAKmqkB,0BACLnqkB,KAAK4pkB,0BACL5pkB,KAAK8pkB,2BAGLC,iBACA,OAAO/pkB,KAAKykgB,YAAczkgB,KAAKykgB,YAAYjrG,gBAAkB,EAG7DuwK,eAAW/ljB,KACNhkB,KAAKk3gB,cAAclzf,KAAUhkB,KAAK+pkB,aAAe/ljB,KAAUhkB,KAAKykgB,aAGrEzkgB,KAAKykgB,YAAYrsG,cAAcp0Y,IAMnCkzf,cAAcvke,IACV,IAAK3yC,KAAKy2Z,OACN,OAAO,EAEX,MAAMhnS,GAAMzvH,KAAKy2Z,OAASz2Z,KAAKy2Z,OAAO5yK,UAAUlxM,IAAS,KACzD,QAAS88E,KAAQA,GAAIniG,SAMzBg8iB,aAAav3c,IAIT,GAHI/xH,KAAKqokB,yBACLrokB,KAAK2pkB,eAAe53c,IAEpB/xH,KAAKy2Z,QAAUz2Z,KAAKy2Z,OAAOjzZ,OAAQ,CACnCxD,KAAKy2Z,OAAO5yK,UAAU9xH,IAAUj/G,QAIhC,MAAMs3jB,GAAcpqkB,KAAKqqkB,kBAAkBx3jB,cAEhC,OAAPirI,KADa8pb,sBAEbwC,GAAYlnQ,WAAa,EAGzBknQ,GAAYlnQ,WAAaknQ,GAAY9wf,YAAc8wf,GAAY/mV,aAK3EukV,sBACI,OAAO5nkB,KAAK+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,MAAkB,MAAQ,MAG5D8ljB,2BACI,GAAI9pkB,KAAKwokB,kBACL,OAEJ,MAAM8B,GAAiBtqkB,KAAKsqkB,eACtBC,GAA4C,QAA/BvqkB,KAAK4nkB,uBAAmC0C,GAAiBA,GAO5EtqkB,KAAKwqkB,SAAS33jB,cAAckgB,MAAM7V,UAAa,cAAauK,KAAKC,MAAM6ijB,UAKnEvqkB,KAAKm/E,UAAUm/W,SAAWt+b,KAAKm/E,UAAUk/W,QACzCr+b,KAAKqqkB,kBAAkBx3jB,cAAcqwT,WAAa,GAItDonQ,qBACA,OAAOtqkB,KAAKmokB,gBAEZmC,mBAAetmjB,IACfhkB,KAAKyqkB,UAAUzmjB,IAUnB0mjB,cAAc5pb,IACV,MAEM6pb,IAA8B,UAAb7pb,IAAwB,EAAK,GAFjC9gJ,KAAKqqkB,kBAAkBx3jB,cAAcwwO,YAEe,EACvE,OAAOrjP,KAAKyqkB,UAAUzqkB,KAAKmokB,gBAAkBwC,IAGjDC,sBAAsB9pb,IAClB9gJ,KAAK2okB,gBACL3okB,KAAK0qkB,cAAc5pb,IAQvB6ob,eAAekB,IACX,GAAI7qkB,KAAKwokB,kBACL,OAEJ,MAAMsC,GAAgB9qkB,KAAKy2Z,OAASz2Z,KAAKy2Z,OAAO5yK,UAAUgnV,IAAc,KACxE,IAAKC,GACD,OAGJ,MAAMC,GAAa/qkB,KAAKqqkB,kBAAkBx3jB,cAAcwwO,aAChDgiV,cAAYhiV,gBAAgBynV,GAAc5rf,WAAWrsE,cAC7D,IAAIm4jB,GAAgBC,GACc,OAA9BjrkB,KAAK4nkB,uBACLoD,GAAiB3F,GACjB4F,GAAgBD,GAAiB3nV,KAGjC4nV,GAAgBjrkB,KAAKkrkB,cAAcr4jB,cAAcwwO,YAAcgiV,GAC/D2F,GAAiBC,GAAgB5nV,IAErC,MAAM8nV,GAAmBnrkB,KAAKsqkB,eACxBc,GAAkBprkB,KAAKsqkB,eAAiBS,GAC1CC,GAAiBG,GAEjBnrkB,KAAKsqkB,gBAAkBa,GAAmBH,GA/VvB,GAiWdC,GAAgBG,KAErBprkB,KAAKsqkB,gBAAkBW,GAAgBG,GAnWpB,GAmWsCC,CAWjElB,0BACI,GAAInqkB,KAAKwokB,kBACLxokB,KAAKqokB,yBAA0B,MAE9B,CACD,MAAMhmS,GAAYriS,KAAKkrkB,cAAcr4jB,cAAcymE,YAAct5E,KAAK6+E,YAAYhsE,cAAcwwO,YAC3Fg/C,KACDriS,KAAKsqkB,eAAiB,GAEtBjoS,KAAcriS,KAAKqokB,yBACnBrokB,KAAKmib,mBAAmBvoO,eAE5B55M,KAAKqokB,wBAA0BhmS,IAYvCunS,0BACQ5pkB,KAAKwokB,kBACLxokB,KAAKsokB,oBAAsBtokB,KAAKuokB,sBAAuB,GAIvDvokB,KAAKuokB,qBAA8C,GAAvBvokB,KAAKsqkB,eACjCtqkB,KAAKsokB,oBAAsBtokB,KAAKsqkB,gBAAkBtqkB,KAAKopkB,wBACvDppkB,KAAKmib,mBAAmBvoO,gBAUhCwvX,wBAGI,OAFwBppkB,KAAKkrkB,cAAcr4jB,cAAcymE,YACtCt5E,KAAKqqkB,kBAAkBx3jB,cAAcwwO,aACjB,EAG3C6lV,4BACI,MAAMoC,GAAetrkB,KAAKy2Z,QAAUz2Z,KAAKy2Z,OAAOjzZ,OAASxD,KAAKy2Z,OAAO5yK,UAAU7jP,KAAK0pe,eAAiB,KAC/F6hG,GAAuBD,GAAeA,GAAapsf,WAAWrsE,cAAgB,KAChF04jB,GACAvrkB,KAAKwrkB,QAAQjG,eAAegG,IAG5BvrkB,KAAKwrkB,QAAQxmT,OAIrB2jT,gBACI3okB,KAAK0za,eAAenyZ,OAOxBsnjB,sBAAsB/nb,GAAW2qb,IAGzBA,IAAmC,MAArBA,GAAWtpQ,QAAwC,IAAtBspQ,GAAWtpQ,SAI1DniU,KAAK2okB,iBAEL+C,OArboB,IAKG,KAkblBrjkB,MAAK49Z,QAAUrhC,OAAM5kY,KAAK0za,eAAgB1za,KAAKsib,cAC/Cn8a,UAAU,KACX,MAAQwlkB,qBAAmBv7J,aAAapwa,KAAK0qkB,cAAc5pb,KAE1C,IAAbsvR,IAAkBA,IAAYu7J,KAC9B3rkB,KAAK2okB,mBASjB8B,UAAUt2jB,IACN,GAAInU,KAAKwokB,kBACL,MAAO,CAAEmD,kBAAmB,EAAGv7J,SAAU,GAE7C,MAAMu7J,GAAoB3rkB,KAAKopkB,wBAC/B,YAAKjB,gBAAkB1gjB,KAAKqgB,IAAI,EAAGrgB,KAAK+2C,IAAImtgB,GAAmBx3jB,KAG/DnU,KAAK6pkB,wBAAyB,EAC9B7pkB,KAAK4pkB,0BACE,CAAE+B,qBAAmBv7J,SAAUpwa,KAAKmokB,kBAGnDyD,GAAsB7sf,UAAtB,4BAAkH6sf,IAp+BtB3sf,8BAo+B6DA,cAp+B7DA,8BAo+BuFA,qBAp+BvFA,8BAo+BwHkkV,MAp+BxHlkV,8BAo+BuJS,KAAnP,GAp+B4FT,8BAo+BqMA,UAp+BrMA,8BAo+B2N6kW,MAp+B3N7kW,8BAo+BmP4ub,KAA/U,KACA+9D,GAAsB5sf,UAr+BsEC,8BAq+B5F,MAAsG2sf,GAAtGpif,iDAoBA,iBAAgCoif,GAC5B/rkB,YAAYq/E,GAAY8/b,GAAmBt4E,GAAe5oT,GAAK8iR,GAAQs8B,GAAU8wE,IAC7Erif,MAAMuzD,GAAY8/b,GAAmBt4E,GAAe5oT,GAAK8iR,GAAQs8B,GAAU8wE,IAC3EhugB,KAAKo5gB,gBAAiB,EAGtBzL,oBACA,OAAO3tgB,KAAKo5gB,eAEZzL,kBAAc3pf,IACdhkB,KAAKo5gB,gBAAiBj7G,QAAsBn6Y,IAEhDgmjB,cAAcjlf,IACVA,GAAM36C,kBAGdyhiB,GAAkB9sf,UAAlB,4BAA8G8sf,IAzgClB5sf,8BAygCqDA,cAzgCrDA,8BAygC+EA,qBAzgC/EA,8BAygCgHkkV,MAzgChHlkV,8BAygC+IS,KAA3O,GAzgC4FT,8BAygC6LA,UAzgC7LA,8BAygCmN6kW,MAzgCnN7kW,8BAygC2O4ub,KAAvU,KACAg+D,GAAkB7sf,UA1gC0EC,8BA0gC5F,MAAkG4sf,GAAlGrif,iDA1gC4FvK,0CAgiC5F,iBAA2B4sf,GACvBhskB,YAAYq/E,GAAY8/b,GAAmBt4E,GAAe5oT,GAAK8iR,GAAQs8B,GAAU8wE,IAC7Erif,MAAMuzD,GAAY8/b,GAAmBt4E,GAAe5oT,GAAK8iR,GAAQs8B,GAAU8wE,KAGnF89D,GAAa/sf,UAAb,4BAAyG+sf,IAriCb7sf,8BAqiC2CA,cAriC3CA,8BAqiCqEA,qBAriCrEA,8BAqiCsGkkV,MAriCtGlkV,8BAqiCqIS,KAAjO,GAriC4FT,8BAqiCmLA,UAriCnLA,8BAqiCyM6kW,MAriCzM7kW,8BAqiCiO4ub,KAA7T,KACAi+D,GAAalsf,UAtiC+EX,8BAsiC5F,MAA6F6sf,GAA7FpokB,0EAtiC4Fu7E,2BAsiC5Fl+C,GAAggBmniB,GAAhgB,gBAtiC4Fjpf,2BAsiC5F19C,GAtiC4F09C,6BAsiC5Fn4C,oDAtiC4Fm4C,wBAsiC4fwmf,GAAxlB,GAtiC4Fxmf,wBAsiC5FnpE,MAtiC4FmpE,wBAsiC5FlpE,MAtiC4FkpE,wBAsiC5FjpE,MAtiC4FipE,wBAsiC5FhpE,MAtiC4FgpE,wBAsiC5F/oE,oBAtiC4F+oE,2BAsiC5Fl+C,GAtiC4Fk+C,6BAsiC5Fn4C,qBAtiC4Fm4C,2BAsiC5Fl+C,GAtiC4Fk+C,6BAsiC5Fn4C,+BAtiC4Fm4C,2BAsiC5Fl+C,GAtiC4Fk+C,6BAsiC5Fn4C,sBAtiC4Fm4C,2BAsiC5Fl+C,GAtiC4Fk+C,6BAsiC5Fn4C,2BAtiC4Fm4C,2BAsiC5Fl+C,GAtiC4Fk+C,6BAsiC5Fn4C,4BAtiC4Fm4C,2BAsiC5Fl+C,GAtiC4Fk+C,6BAsiC5Fn4C,+GAtiC4Fm4C,wBAsiC5F,wEAtiC4FA,CAsiC5F,sLAtiC4FA,wCAsiC5Fc,8wBAtiC4Fd,yDAsiC+mC,gBAtiC/mCA,uBAsiCogD,0BAAUn4C,yBAAsB,WAtiCpiDm4C,CAsiCogD,gCAAgEn4C,yBAAsB,SAAtBvF,KAtiCpkD09C,CAsiCogD,6BAA6Hn4C,qBAtiCjoDm4C,sBAsiCupD,WAtiCvpDA,sDAsiC6tD,aAtiC7tDA,uBAsiCsxD,8BAAYn4C,wBAtiClyDm4C,2BAsiC+zD,aAtiC/zDA,uBAsiCs9D,sCAAsBn4C,yBAtiC5+Dm4C,2BAsiCwgE,aAtiCxgEA,yBAsiC4jE,GAtiC5jEA,iDAsiCumE,kBAtiCvmEA,wDAsiCwpE,kBAtiCxpEA,uBAsiCqiF,gCAAcn4C,yBAAsB,QAAtBvF,KAtiCnjF09C,CAsiCqiF,0BAAuEn4C,yBAAsB,UAtiCloFm4C,CAsiCqiF,6BAA2Hn4C,qBAtiChqFm4C,sBAsiCsrF,YAtiCtrFA,4BAsiC5F,OAtiC4FA,wBAsiCw4C,8DAtiCx4CA,uBAsiCo0C,8DAtiCp0CA,CAsiCo0C,0CAtiCp0CA,sBAsiCm3D,GAtiCn3DA,wBAsiCm3D,gEAtiCn3DA,sBAsiCq5E,GAtiCr5EA,wBAsiCq5E,6DAtiCr5EA,uBAsiCk1E,6DAtiCl1EA,CAsiCk1E,2CAA96EuhM,YAA2iL8kR,KAAiPvqG,KAAqL0qI,IAAj9Lzlf;;;;;;;;AAgDA,IAAIk0U,GAAS,EAEb,UAIA,MAAM63K,IAAwBntf,SAAW+kb,QAAmB,MACxD9jgB,YAAYg/E,IACR7+E,KAAK6+E,YAAcA,MAEvB,WAKJ,iBAA+Bktf,GAC3BlskB,YAAYq/E,GAAYijW,GAAoB+3I,GAAe7sD,IACvD,IAAIx3M,GACJlqS,MAAMuzD,IACNl/E,KAAKmib,mBAAqBA,GAC1Bnib,KAAKqtgB,eAAiBA,GAEtBrtgB,KAAKgskB,MAAQ,IAAI30K,YAEjBr3Z,KAAKiskB,eAAiB,EAEtBjskB,KAAKkskB,qBAAuB,KAE5BlskB,KAAKmskB,sBAAwB,EAE7BnskB,KAAKoskB,kBAAoBt1K,UAEzB92Z,KAAKqskB,sBAAwBv1K,UAC7B92Z,KAAK0+jB,eAAiB,KAEtB1+jB,KAAKsskB,eAAiB,QAEtBtskB,KAAKwvF,oBAAsB,IAAI82U,eAE/Btma,KAAKuskB,YAAc,IAAIjmK,eAEvBtma,KAAK8hkB,cAAgB,IAAIx7J,eAEzBtma,KAAKwskB,kBAAoB,IAAIlmK,gBAAa,GAC1Ctma,KAAK2+jB,SAAWzqK,KAChBl0Z,KAAKunkB,kBACDrN,IAAiBA,GAAcqN,kBAAoBrN,GAAcqN,kBAAoB,QACzFvnkB,KAAKwokB,qBACDtO,IAAoD,MAAnCA,GAAcsO,oBACzBtO,GAAcsO,kBAExBxokB,KAAKyskB,iBACDvS,IAAgD,MAA/BA,GAAcuS,gBAAwBvS,GAAcuS,cACzEzskB,KAAK0skB,gBAAyH,QAAtG72Q,GAAuB,MAAlBqkQ,QAAqD,EAASA,GAAcwS,uBAAoC,IAAP72Q,GAAgBA,GAAK,KAG3J42Q,oBACA,OAAOzskB,KAAK2skB,eAEZF,kBAAczojB,IACdhkB,KAAK2skB,gBAAiBxuK,QAAsBn6Y,IAG5C0ld,oBACA,OAAO1pe,KAAK0+jB,eAEZh1F,kBAAc1ld,IACdhkB,KAAKiskB,gBAAiBvoJ,QAAqB1/Z,GAAO,MAGlDujjB,wBACA,OAAOvnkB,KAAK4skB,mBAEZrF,sBAAkBvjjB,IAClBhkB,KAAK4skB,mBAAqB,QAAQniiB,KAAKzmB,GAAQ,IAAMA,GAAQ,KAAOA,GAQpE0ojB,sBACA,OAAO1skB,KAAK6skB,iBAEZH,oBAAgB1ojB,IAChBhkB,KAAK6skB,kBAAmBnpJ,QAAqB1/Z,GAAO,MAGpD6kE,sBACA,OAAO7oF,KAAK8skB,iBAEZjkf,oBAAgB7kE,IAChB,MAAMnR,GAAgB7S,KAAK6+E,YAAYhsE,cACvCA,GAAck4Y,UAAUrmI,OAAQ,kBAAiB1kR,KAAK6oF,mBAClD7kE,IACAnR,GAAck4Y,UAAUjjQ,IAAK,kBAAiB9jI,MAElDhkB,KAAK8skB,iBAAmB9ojB,GAQ5B0vQ,wBAGI,MAAMq5S,GAAiB/skB,KAAKiskB,eAAiBjskB,KAAKgtkB,eAAehtkB,KAAKiskB,gBAGtE,GAAIjskB,KAAK0+jB,gBAAkBqO,GAAe,CACtC,MAAME,GAAoC,MAAvBjtkB,KAAK0+jB,eACxB,IAAKuO,GAAY,CACbjtkB,KAAKwskB,kBAAkB77iB,KAAK3wB,KAAK01jB,mBAAmBqX,KAGpD,MAAM7zM,GAAUl5X,KAAKktkB,gBAAgBr6jB,cACrCqmX,GAAQnmW,MAAMzkB,UAAY4qX,GAAQ9/S,aAAe,KAIrDi+B,QAAQi2O,UAAU51O,KAAK,KACnB13G,KAAKgskB,MAAMzjkB,QAAQ,CAACknH,GAAK98E,KAAW88E,GAAIuuJ,SAAWrrO,KAAUo6hB,IACxDE,KACDjtkB,KAAKwvF,oBAAoB7+D,KAAKo8iB,IAG9B/skB,KAAKktkB,gBAAgBr6jB,cAAckgB,MAAMzkB,UAAY,MAKjEtO,KAAKgskB,MAAMzjkB,QAAQ,CAACknH,GAAK98E,MACrB88E,GAAIt7G,SAAWw+B,GAAQo6hB,GAGI,MAAvB/skB,KAAK0+jB,gBAA0C,GAAhBjvc,GAAIt7G,WAAkBs7G,GAAIukL,SACzDvkL,GAAIukL,OAAS+4R,GAAgB/skB,KAAK0+jB,kBAGtC1+jB,KAAK0+jB,iBAAmBqO,KACxB/skB,KAAK0+jB,eAAiBqO,GACtB/skB,KAAKkskB,qBAAuB,KAC5BlskB,KAAKmib,mBAAmBvoO,gBAGhC+rE,qBACI3lR,KAAKmtkB,4BACLntkB,KAAKotkB,wBAGLptkB,KAAKoskB,kBAAoBpskB,KAAKgskB,MAAMxsf,QAAQr5E,UAAU,KAClD,MAAM4mkB,GAAgB/skB,KAAKgtkB,eAAehtkB,KAAKiskB,gBAG/C,GAAIc,KAAkB/skB,KAAK0+jB,eAAgB,CACvC,MAAM7od,GAAO71G,KAAKgskB,MAAMnoV,UACxB,IAAI57O,GACJ,QAAS/H,GAAI,EAAGA,GAAI21G,GAAKryG,OAAQtD,KAC7B,GAAI21G,GAAK31G,IAAG89Q,SAAU,CAIlBh+Q,KAAKiskB,eAAiBjskB,KAAK0+jB,eAAiBx+jB,GAC5CF,KAAKkskB,qBAAuB,KAC5BjkkB,GAAc4tG,GAAK31G,IACnB,OAMH+H,IAAe4tG,GAAKk3d,KACrB11d,QAAQi2O,UAAU51O,KAAK,KACnB7B,GAAKk3d,IAAe/uT,UAAW,EAC/Bh+Q,KAAKwskB,kBAAkB77iB,KAAK3wB,KAAK01jB,mBAAmBqX,OAIhE/skB,KAAKmib,mBAAmBvoO,iBAIhCuzX,4BAIIntkB,KAAKqtkB,SAAS7tf,QAAQn3E,MAAK86a,OAAUnjb,KAAKqtkB,WAAWlnkB,UAAW0vG,KAC5D71G,KAAKgskB,MAAMjsc,MAAMlqB,GAAKnvG,OAAO+oH,IAClBA,GAAIy2c,mBAAqBlmkB,OAASyvH,GAAIy2c,mBAEjDlmkB,KAAKgskB,MAAMxqF,oBAGnBt4e,cACIlJ,KAAKgskB,MAAMlyT,UACX95Q,KAAKoskB,kBAAkBz+iB,cACvB3tB,KAAKqskB,sBAAsB1+iB,cAG/B2/iB,gBACQttkB,KAAKutkB,YACLvtkB,KAAKutkB,WAAWrE,4BAUxBD,mBACQjpkB,KAAKutkB,YACLvtkB,KAAKutkB,WAAWtE,mBAOxBuE,SAAS76hB,IACL,MAAM65B,GAASxsE,KAAKutkB,WAChB/ggB,KACAA,GAAOu9f,WAAap3hB,IAG5BkjgB,cAAcljgB,IACV3yC,KAAKkskB,qBAAuBv5hB,GAC5B3yC,KAAKuskB,YAAY57iB,KAAK3wB,KAAK01jB,mBAAmB/ihB,KAElD+ihB,mBAAmB/ihB,IACf,MAAMoyC,GAAQ,IAAI0of,GAClB1of,UAAMpyC,MAAQA,GACV3yC,KAAKgskB,OAAShskB,KAAKgskB,MAAMxokB,SACzBuhF,GAAM0qC,IAAMzvH,KAAKgskB,MAAMnoV,UAAUlxM,KAE9BoyC,GAQXqof,wBACQptkB,KAAKqskB,uBACLrskB,KAAKqskB,sBAAsB1+iB,cAE/B3tB,KAAKqskB,uBAAwBznM,UAAS5kY,KAAKgskB,MAAM/4iB,IAAIw8F,IAAOA,GAAIw0T,gBAAgB99a,UAAU,IAAMnG,KAAKmib,mBAAmBvoO,gBAG5HozX,eAAer6hB,IAIX,OAAOlrB,KAAK+2C,IAAIx+D,KAAKgskB,MAAMxokB,OAAS,EAAGikB,KAAKqgB,IAAI6K,IAAS,EAAG,IAGhE+6hB,eAAextkB,IACX,MAAQ,iBAAgBF,KAAK2+jB,YAAYz+jB,KAG7CytkB,iBAAiBztkB,IACb,MAAQ,mBAAkBF,KAAK2+jB,YAAYz+jB,KAM/CilkB,yBAAyBz1c,IACrB,IAAK1vH,KAAK2skB,iBAAmB3skB,KAAKmskB,sBAC9B,OAEJ,MAAMjzM,GAAUl5X,KAAKktkB,gBAAgBr6jB,cACrCqmX,GAAQnmW,MAAM7e,OAASlU,KAAKmskB,sBAAwB,KAGhDnskB,KAAKktkB,gBAAgBr6jB,cAAcwmE,eACnC6/S,GAAQnmW,MAAM7e,OAASw7G,GAAY,MAI3Cw1c,8BACI,MAAMhsM,GAAUl5X,KAAKktkB,gBAAgBr6jB,cACrC7S,KAAKmskB,sBAAwBjzM,GAAQ9/S,aACrC8/S,GAAQnmW,MAAM7e,OAAS,GACvBlU,KAAK8hkB,cAAcnxiB,OAGvB83e,aAAah5Y,GAAKm+c,GAAWj7hB,IACpB88E,GAAIniG,WACLttB,KAAK0pe,cAAgBkkG,GAAU7D,WAAap3hB,IAIpDmse,aAAarvZ,GAAK98E,IACd,IAAIkjR,GACJ,GAAIpmM,GAAIniG,SACJ,OAAO,KAGX,OAAOqlB,MADkD,QAApCkjR,GAAK71T,KAAKkskB,4BAAyC,IAAPr2Q,GAAgBA,GAAK71T,KAAK0pe,eAC5D,GAAI,EAGvCu7F,iBAAiB90D,GAAax9d,IAKtBw9d,IAA+B,UAAhBA,IAA2C,UAAhBA,KAC1CnwgB,KAAKutkB,WAAWxD,WAAap3hB,KAIzCk7hB,GAAiB9uf,UAAjB,4BAA6G8uf,IAn5CjB5uf,8BAm5CmDA,cAn5CnDA,8BAm5C6EA,qBAn5C7EA,8BAm5C8G6of,GAA1M,GAn5C4F7of,8BAm5C0J4ub,KAAtP,KACAggE,GAAiB7uf,UAp5C2EC,8BAo5C5F,MAAiG4uf,GAAjGrkf,iZAp5C4FvK,0CA+7C5F,iBAA0B4uf,GACtBhukB,YAAYq/E,GAAY8/b,GAAmBk7C,GAAelsD,IACtDrif,MAAMuzD,GAAY8/b,GAAmBk7C,GAAelsD,KAG5D8/D,GAAY/uf,UAAZ,4BAAwG+uf,IAp8CZ7uf,8BAo8CyCA,cAp8CzCA,8BAo8CmEA,qBAp8CnEA,8BAo8CoG6of,GAAhM,GAp8C4F7of,8BAo8CgJ4ub,KAA5O,KACAigE,GAAYluf,UAr8CgFX,8BAq8C5F,MAA4F6uf,GAA5FpqkB,yEAr8C4Fu7E,2BAq8C5Fl+C,GAKwD0liB,GALxD,gBAr8C4Fxnf,2BAq8C5F19C,GAr8C4F09C,6BAq8C5Fn4C,sDAr8C4Fm4C,wBAq8C5F9oE,MAr8C4F8oE,wBAq8C5F9uB,oBAr8C4F8uB,2BAq8C5Fl+C,GAr8C4Fk+C,6BAq8C5Fn4C,6BAr8C4Fm4C,2BAq8C5Fl+C,GAr8C4Fk+C,6BAq8C5Fn4C,sGAr8C4Fm4C,wBAq8C5F,gDAr8C4FA,CAq8C5F,sJAr8C4FA,+BAq8CwS,CAC5X,CACIoJ,QAAS49e,GACTzne,YAAasve,MAx8CmE7uf,wCAq8C5FxvC,2/BAr8C4FwvC,2BA08CkR,wBA18ClRA,uBA08Cge,mCAAiBn4C,sBA18Cjfm4C,CA08Cge,+DA18CheA,uBA08C6kB,mBA18C7kBA,sDA08C86D,aA18C96DA,uBA08CujE,4BA18CvjEA,4BAq8C5F,OAr8C4FA,uBA08C6T,oCA18C7TA,CA08C6T,iCA18C7TA,CA08C6T,0CA18C7TA,sBA08CiuB,GA18CjuBA,uBA08CiuB,oBA18CjuBA,sBA08Cw9D,GA18Cx9DA,wBA08Cw9D,gEA18Cx9DA,sBA08CwnE,GA18CxnEA,uBA08CwnE,sBALptEuhM,YAKo8IsrT,GAAgI3E,GAA8DxnB,KAA4GuoB,GAAsF5iC,KAAiPrY,KAA2H0yB,KAA6EA,KAAmFouB,MALh1K/tf,2iDA0CA,IAAI65W,GAAe,EAKnB,gBAA6B+xI,GACzB/rkB,YAAYq/E,GAAY4+D,GAAK8iR,GAAQo+G,GAAmBt4E,GAAexJ,GAAU8wE,IAC7Erif,MAAMuzD,GAAY8/b,GAAmBt4E,GAAe5oT,GAAK8iR,GAAQs8B,GAAU8wE,IAC3EhugB,KAAKo5gB,gBAAiB,EAEtBp5gB,KAAKsxF,MAAQ,UAGbzI,sBACA,OAAO7oF,KAAK8skB,iBAEZjkf,oBAAgB7kE,IAChB,MAAM+mY,GAAY/qZ,KAAK6+E,YAAYhsE,cAAck4Y,UACjDA,GAAUrmI,OAAQ,kBAAiB1kR,KAAK6oF,mBACpC7kE,IACA+mY,GAAUjjQ,IAAK,kBAAiB9jI,MAEpChkB,KAAK8skB,iBAAmB9ojB,GAGxB2pf,oBACA,OAAO3tgB,KAAKo5gB,eAEZzL,kBAAc3pf,IACdhkB,KAAKo5gB,gBAAiBj7G,QAAsBn6Y,IAEhDgmjB,gBAAgB,CAGhBrkT,qBAGI3lR,KAAKy2Z,OAAOj3U,QAAQn3E,MAAK86a,OAAU,OAAOld,OAAUjma,KAAKsib,aAAan8a,UAAU,KAC5EnG,KAAKgukB,qBAETrijB,MAAMg6P,qBAGVqoT,mBACI,IAAKhukB,KAAKy2Z,OACN,OAEJ,MAAM/hG,GAAQ10T,KAAKy2Z,OAAO5yK,UAC1B,QAAS3jP,GAAI,EAAGA,GAAIw0T,GAAMlxT,OAAQtD,KAC9B,GAAIw0T,GAAMx0T,IAAGi8I,OAMT,OALAn8I,KAAK0pe,cAAgBxpe,GACrBF,KAAKmib,mBAAmBvoO,oBACpB55M,KAAKiukB,WACLjukB,KAAKiukB,SAASC,aAAex5Q,GAAMx0T,IAAGmqE,KAMlDrqE,KAAK0pe,eAAgB,EACrB1pe,KAAKwrkB,QAAQxmT,OAEjBmpT,WACI,OAAOnukB,KAAKiukB,SAAW,UAAYjukB,KAAK6+E,YAAYhsE,cAAc+2B,aAAa,SAGvFwkiB,EAAervf,UAAf,4BAA2Gqvf,GAjjDfnvf,8BAijD+CA,cAjjD/CA,8BAijDyES,KAArK,GAjjD4FT,8BAijDuHA,UAjjDvHA,8BAijD6IA,qBAjjD7IA,8BAijD8KkkV,MAjjD9KlkV,8BAijD6M6kW,MAjjD7M7kW,8BAijDqO4ub,KAAjU,KACAugE,EAAepvf,UAljD6EC,8BAkjD5F,MAA+Fmvf,EAA/F5kf,qHAljD4FvK,0CA2kD5F,iBAAwBmvf,EACpBvukB,YAAYq/E,GAAY4+D,GAAK8iR,GAAQo+G,GAAmBt4E,GAAexJ,GAAU8wE,IAC7Erif,MAAMuzD,GAAY4+D,GAAK8iR,GAAQo+G,GAAmBt4E,GAAexJ,GAAU8wE,KAGnFqgE,GAAUtvf,UAAV,4BAAsGsvf,IAhlDVpvf,8BAglDqCA,cAhlDrCA,8BAglD+DS,KAA3J,GAhlD4FT,8BAglD6GA,UAhlD7GA,8BAglDmIA,qBAhlDnIA,8BAglDoKkkV,MAhlDpKlkV,8BAglDmM6kW,MAhlDnM7kW,8BAglD2N4ub,KAAvT,KACAwgE,GAAUzuf,UAjlDkFX,8BAilD5F,MAA0Fovf,GAA1F3qkB,iFAjlD4Fu7E,2BAilD5Fl+C,GAA6nButiB,GAA7nB,gBAjlD4Frvf,2BAilD5F19C,GAjlD4F09C,6BAilD5Fn4C,oDAjlD4Fm4C,wBAilDwoBwmf,GAApuB,GAjlD4Fxmf,wBAilD5FnpE,MAjlD4FmpE,wBAilD5FlpE,MAjlD4FkpE,wBAilD5FjpE,MAjlD4FipE,wBAilD5FhpE,MAjlD4FgpE,wBAilD5F/oE,oBAjlD4F+oE,2BAilD5Fl+C,GAjlD4Fk+C,6BAilD5Fn4C,qBAjlD4Fm4C,2BAilD5Fl+C,GAjlD4Fk+C,6BAilD5Fn4C,+BAjlD4Fm4C,2BAilD5Fl+C,GAjlD4Fk+C,6BAilD5Fn4C,sBAjlD4Fm4C,2BAilD5Fl+C,GAjlD4Fk+C,6BAilD5Fn4C,2BAjlD4Fm4C,2BAilD5Fl+C,GAjlD4Fk+C,6BAilD5Fn4C,4BAjlD4Fm4C,2BAilD5Fl+C,GAjlD4Fk+C,6BAilD5Fn4C,mIAjlD4Fm4C,wBAilD5F,sBAjlD4FA,wBAilD5F,wEAjlD4FA,CAilD5F,qDAjlD4FA,CAilD5F,qDAjlD4FA,CAilD5F,iCAjlD4FA,CAilD5F,uGAjlD4FA,wCAilD5F6iM,wxBAjlD4F7iM,yDAilDoyC,gBAjlDpyCA,uBAilDyrD,0BAAUn4C,yBAAsB,WAjlDztDm4C,CAilDyrD,gCAAgEn4C,yBAAsB,SAAtBvF,KAjlDzvD09C,CAilDyrD,6BAA6Hn4C,qBAjlDtzDm4C,sBAilD40D,WAjlD50DA,sDAilDk5D,aAjlDl5DA,uBAilD08D,8BAAYn4C,wBAjlDt9Dm4C,2BAilDm/D,aAjlDn/DA,uBAilDonE,sCAAsBn4C,yBAjlD1oEm4C,2BAilDsqE,aAjlDtqEA,yBAilDytE,GAjlDztEA,iDAilDowE,kBAjlDpwEA,wDAilDqzE,kBAjlDrzEA,uBAilDksF,gCAAcn4C,yBAAsB,QAAtBvF,KAjlDhtF09C,CAilDksF,0BAAuEn4C,yBAAsB,UAjlD/xFm4C,CAilDksF,6BAA2Hn4C,qBAjlD7zFm4C,sBAilDm1F,YAjlDn1FA,4BAilD5F,OAjlD4FA,wBAilD6jD,8DAjlD7jDA,uBAilDy/C,8DAjlDz/CA,CAilDy/C,0CAjlDz/CA,sBAilDyhE,GAjlDzhEA,wBAilDyhE,gEAjlDzhEA,sBAilDkjF,GAjlDljFA,wBAilDkjF,6DAjlDljFA,uBAilD++E,6DAjlD/+EA,CAilD++E,2CAA3kFuhM,YAAm1L8kR,KAAiPvqG,KAAqL0qI,IAAzvMzlf,w1FA4CA,MAAMuuf,GAAuB7+D,SAAc/L,SAAmByJ,QAAc,WAG5E,iBAA8BmhE,EAC1B1ukB,YAAY2ukB,GACStvf,GAAY0yb,GAAqB7/Y,GAAUq0S,GAAe4nG,IAC3Erif,QACA3rB,KAAKwukB,WAAaA,GAClBxukB,KAAKk/E,WAAaA,GAClBl/E,KAAKoma,cAAgBA,GAErBpma,KAAKuyjB,WAAY,EAEjBvyjB,KAAKqqE,GAAM,gBAAewvX,KAC1B75b,KAAKwygB,aAAeZ,IAAuB,GAC3C5xgB,KAAK+xH,SAAW9kH,SAAS8kH,KAAa,EAChB,mBAAlBi8Y,KACAhugB,KAAKwygB,aAAazwP,UAAY,CAAEs5P,cAAe,EAAGC,aAAc,IAIpEn/X,aACA,OAAOn8I,KAAKuyjB,UAEZp2a,WAAOn4H,IACP,MAAMwuW,IAAW2rC,QAAsBn6Y,IACnCwuW,KAAaxyX,KAAKuyjB,YAClBvyjB,KAAKuyjB,UAAY//L,GACjBxyX,KAAKwukB,WAAWR,oBAOpBt7D,qBACA,OAAQ1ygB,KAAKstB,UACTttB,KAAK2tgB,eACL3tgB,KAAKwukB,WAAW7gE,iBACd3tgB,KAAKwygB,aAAallf,SAG5Bxa,QACI9S,KAAKk/E,WAAWrsE,cAAcC,QAElCF,kBACI5S,KAAKoma,cAAchC,QAAQpka,KAAKk/E,YAEpCh2E,cACIlJ,KAAKoma,cAAcvB,eAAe7ka,KAAKk/E,YAE3Cspb,eAGIxogB,KAAKwukB,WAAWzE,WAAa/pkB,KAAKwukB,WAAW/3K,OAAO5yK,UAAUzyO,QAAQpR,MAE1E+ngB,eAAehjb,IACP/kF,KAAKwukB,WAAWP,UAAYlpf,GAAMpxE,UAAY0/f,MAC9CrzgB,KAAKk/E,WAAWrsE,cAAckd,QAGtC0+iB,mBACI,IAAI54Q,GACJ,OAAO71T,KAAKwukB,WAAWP,SACmB,QAAnCp4Q,GAAK71T,KAAKwukB,WAAWP,gBAA6B,IAAPp4Q,QAAgB,EAASA,GAAGxrP,GACxErqE,KAAKk/E,WAAWrsE,cAAc+2B,aAAa,iBAErDi1e,mBACI,OAAI7+gB,KAAKwukB,WAAWP,SACTjukB,KAAKm8I,OAAS,OAAS,QAGvBn8I,KAAKk/E,WAAWrsE,cAAc+2B,aAAa,iBAG1D8kiB,kBACI,OAAO1ukB,KAAKm8I,SAAWn8I,KAAKwukB,WAAWP,SAAW,OAAS,KAE/DE,WACI,OAAOnukB,KAAKwukB,WAAWP,SAAW,MAAQjukB,KAAKk/E,WAAWrsE,cAAc+2B,aAAa,QAEzFk1e,eACI,OAAI9+gB,KAAKwukB,WAAWP,SACTjukB,KAAKuyjB,UAAY,GAAI,EAGrBvyjB,KAAK+xH,UAIxB48c,GAAgB5vf,UAAhB,4BAA4G4vf,IAvtDhB1vf,8BAutDiDmvf,GAvtDjDnvf,8BAutD4EA,cAvtD5EA,8BAutDsGu0b,KAAlM,GAvtD4Fv0b,8BAutD4J,YAvtD5JA,8BAutDoMguc,MAvtDpMhuc,8BAutDgO4ub,KAA5T,KACA8gE,GAAgB3vf,UAxtD4EC,8BAwtD5F,MAAgG0vf,GAAhGnlf,2CAxtD4FvK,0CAkvD5F,iBAAyB0vf,GACrB9ukB,YAAY+ukB,GAAW1vf,GAAY0hV,GAAQs8B,GAAU00E,GAAqB7/Y,GAAUg8Y,GAAcC,IAC9Frif,MAAMijjB,GAAW1vf,GAAY0yb,GAAqB7/Y,GAAUg8Y,GAAcC,IAC1EhugB,KAAK6ukB,eAAiB,IAAIv8D,KAAetygB,KAAM4ga,GAAQ1hV,GAAYg+W,IACnEl9b,KAAK6ukB,eAAet8D,mBAAmBrzb,GAAWrsE,eAEtD3J,cACIyiB,MAAMziB,cACNlJ,KAAK6ukB,eAAe37D,wBAG5Bo7D,GAAWvvf,UAAX,4BAAuGuvf,IA7vDXrvf,8BA6vDuCovf,IA7vDvCpvf,8BA6vD6DA,cA7vD7DA,8BA6vDuFA,UA7vDvFA,8BA6vD6G6kW,MA7vD7G7kW,8BA6vDqIu0b,KAAjO,GA7vD4Fv0b,8BA6vD2L,YA7vD3LA,8BA6vDmOguc,MA7vDnOhuc,8BA6vD+P4ub,KAA3V,KACAygE,GAAWtvf,UA9vDiFC,8BA8vD5F,MAA2Fqvf,GAA3F5qkB,0JA9vD4Fu7E,uBA8vD5F,0BAA2Fn4C,mBA9vDCm4C,CA8vD5F,8BAA2Fn4C,wBAA3F,OA9vD4Fm4C,wBA8vD5F,sCA9vD4FA,CA8vD5F,oCA9vD4FA,CA8vD5F,4BA9vD4FA,CA8vD5F,sCA9vD4FA,CA8vD5F,WA9vD4FA,CA8vD5F,6BA9vD4FA,CA8vD5F,sBA9vD4FA,wBA8vD5F,+BA9vD4FA,CA8vD5F,qJA9vD4FA,0CAuyD5F,SACIp/E,cAEIG,KAAKqqE,GAAM,qBAAoBwvX,MAGvCi1I,GAAe/vf,UAAf,4BAA2G+vf,KAC3GA,GAAelvf,UA9yD6EX,8BA8yD5F,MAA+F6vf,GAA/FprkB,oDAAkM,WAAlM,qEA9yD4Fu7E,wBA8yD5F,kCA9yD4FA,CA8yD5F,8HA9yD4FA,uDA8yD2R,KAAvXo7L;;;;;;;;AA2BA,UAEA00T,GAAchwf,UAAd,4BAA0Ggwf,KAC1GA,GAAc7uf,UA50D8EjB,6BA40D5F,MAA2G8vf,KAwB3GA,GAAc5uf,UAp2D8ElB,6BAo2D5F,UAAoI,CACxH4+Y,KACAz9Y,KACAr2D,KACAkjf,KACA1lG,KACAD,MACDlnV;;;;;;;;;;;;;;;;;;;;;wRC35DL4uf,EAAc,gBAEdC,GAAyBvuK,QAAgC,CAAE78F,SAAS,IAc1E,MAAMqrQ,EAA8B,IAAIzmb,iBAAe,+BAMvD,MAAM0mb,EAA+C,CACjD9mf,QAAS6mf,EACT1ib,KAAM,CAACsuS,MACPzkL,WAPJ,WAA6C9uL,IACzC,MAAO,IAAMA,GAAQuyW,iBAAiBthJ,WAAW,CAAEwyI,eA1B5B,IA0B4CokJ,GASjEC,EAA8B,IAAI5mb,iBAAe,8BAA+B,CAClFC,WAAY,OACZrmJ,QAGJ,aACI,MAAO,CACHitkB,UAAW,EACXC,UAAW,EACXC,kBAAmB,SAG3B,QACI3vkB,YAAYu7b,GAAUv8W,GAAaujW,GAAmBhiR,GAAmBw7P,GAASz8U,EAAWw8e,GAAgBv1J,GAAeulB,GAAgB5jB,GAAMhG,GAAiB3iV,IAC/Jp/E,KAAKo7b,SAAWA,GAChBp7b,KAAK6+E,YAAcA,GACnB7+E,KAAKoib,kBAAoBA,GACzBpib,KAAKogK,kBAAoBA,GACzBpgK,KAAK47Z,QAAUA,GACf57Z,KAAKm/E,UAAYA,EACjBn/E,KAAK27jB,eAAiBA,GACtB37jB,KAAKoma,cAAgBA,GACrBpma,KAAK+na,KAAOA,GACZ/na,KAAK+ha,gBAAkBA,GACvB/ha,KAAKo8b,UAAY,QACjBp8b,KAAKmua,WAAY,EACjBnua,KAAKyvkB,kBAAmB,EACxBzvkB,KAAK0vkB,+BAAgC,EACrC1vkB,KAAKmwb,gBAAkB,EACvBnwb,KAAK2vkB,gBAAkB,MACvB3vkB,KAAK4vkB,WAAa5vkB,KAAK+ha,gBAAgButK,UACvCtvkB,KAAK6vkB,WAAa7vkB,KAAK+ha,gBAAgBwtK,UAevCvvkB,KAAK8vkB,cAAgB,OACrB9vkB,KAAK+vkB,SAAW,GAEhB/vkB,KAAKgwkB,kBAAoB,GAEzBhwkB,KAAKsib,WAAa,IAAIvma,KACtB/b,KAAKitb,gBAAkBtB,GACvB3rb,KAAKo/E,UAAYA,GACb2iV,KACIA,GAAgB5tZ,WAChBnU,KAAKmU,SAAW4tZ,GAAgB5tZ,UAEhC4tZ,GAAgB+tK,gBAChB9vkB,KAAK8vkB,cAAgB/tK,GAAgB+tK,gBAG7C/nK,GAAKh6I,OAAO1lR,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU,KAC/CnG,KAAKkqb,aACLlqb,KAAKiwkB,gBAAgBjwkB,KAAKkqb,eAKlC/1a,eACA,OAAOnU,KAAKo8b,UAEZjob,aAAS6P,IACT,IAAI6xS,GACA7xS,KAAUhkB,KAAKo8b,YACfp8b,KAAKo8b,UAAYp4a,GACbhkB,KAAKkqb,cACLlqb,KAAKiwkB,gBAAgBjwkB,KAAKkqb,aACO,QAAhCr0H,GAAK71T,KAAKkwkB,wBAAqC,IAAPr6Q,IAAyBA,GAAG9wC,KAAK,GAC1E/kR,KAAKkqb,YAAYE,mBAKzB98Z,eACA,OAAOttB,KAAKmua,UAEZ7gZ,aAAStJ,IACThkB,KAAKmua,WAAYhQ,QAAsBn6Y,IAEvChkB,KAASmua,UACLnua,KAAKglR,KAAK,GAGVhlR,KAAKmwkB,mCAITb,gBACA,OAAOtvkB,KAAK4vkB,WAEZN,cAAUtrjB,IACVhkB,KAAK4vkB,YAAalsJ,QAAqB1/Z,IAGvCurjB,gBACA,OAAOvvkB,KAAK6vkB,WAEZN,cAAUvrjB,IACVhkB,KAAK6vkB,YAAansJ,QAAqB1/Z,IACnChkB,KAAKkwkB,mBACLlwkB,KAAKkwkB,iBAAiBE,qBAAuBpwkB,KAAK6vkB,YAItDpijB,cACA,OAAOztB,KAAK+vkB,SAEZtijB,YAAQzJ,IACRhkB,KAAK27jB,eAAe3mK,kBAAkBh1Z,KAAK6+E,YAAYhsE,cAAe7S,KAAK+vkB,SAAU,WAIrF/vkB,KAAK+vkB,SAAoB,MAAT/rjB,GAAgB+nB,OAAO/nB,IAAOoF,OAAS,IAClDppB,KAAK+vkB,UAAY/vkB,KAAKqwkB,oBACvBrwkB,KAAKglR,KAAK,IAGVhlR,KAAKmwkB,mCACLnwkB,KAAKswkB,wBACLtwkB,KAAK47Z,QAAQc,kBAAkB,KAK3BrlT,QAAQi2O,UAAU51O,KAAK,KACnB13G,KAAK27jB,eAAernK,SAASt0Z,KAAK6+E,YAAYhsE,cAAe7S,KAAKytB,QAAS,gBAMvF8ijB,mBACA,OAAOvwkB,KAAKwwkB,cAEZD,iBAAavsjB,IACbhkB,KAAKwwkB,cAAgBxsjB,GACjBhkB,KAAKkwkB,kBACLlwkB,KAAKywkB,iBAAiBzwkB,KAAKwwkB,eAGnC59jB,kBAEI5S,KAAKyvkB,kBAAmB,EACxBzvkB,KAAKmwkB,mCACLnwkB,KAAKoma,cACAhC,QAAQpka,KAAK6+E,aACbx2E,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU6tS,KAENA,GAGe,aAAXA,IACLh0S,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAK+kR,QAH5B/kR,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKglR,KAAK,MAU7C97Q,cACI,MAAM2J,GAAgB7S,KAAK6+E,YAAYhsE,cACvC0rF,aAAav+F,KAAK0wkB,oBACd1wkB,KAAKkqb,cACLlqb,KAAKkqb,YAAY/iW,UACjBnnF,KAAKkwkB,iBAAmB,MAG5BlwkB,KAAKgwkB,kBAAkBznkB,QAAQ,EAAEw8E,GAAO0lV,OACpC53Z,GAAcm8P,oBAAoBjqL,GAAO0lV,GAAUwkK,KAEvDjvkB,KAAKgwkB,kBAAkBxskB,OAAS,EAChCxD,KAAKsib,WAAW/ga,OAChBvhB,KAAKsib,WAAWzoa,WAChB7Z,KAAK27jB,eAAe3mK,kBAAkBniZ,GAAe7S,KAAKytB,QAAS,WACnEztB,KAAKoma,cAAcvB,eAAehyZ,IAGtCkyQ,KAAK9tK,GAAQj3G,KAAKsvkB,WACd,GAAItvkB,KAAKstB,WACJttB,KAAKytB,SACLztB,KAAKqwkB,sBACDrwkB,KAAKkwkB,iBAAiBS,iBACtB3wkB,KAAKkwkB,iBAAiBU,eAC3B,OAEJ,MAAM1pf,GAAalnF,KAAKy8b,iBACxBz8b,KAAKiqb,UACLjqb,KAAKqpgB,QACDrpgB,KAAKqpgB,SAAW,IAAI/oE,KAAgBtgc,KAAK6wkB,kBAAmB7wkB,KAAKogK,mBACrE,MAAM4iE,GAAYhjO,KAAKkwkB,iBAAmBhpf,GAAWsB,OAAOxoF,KAAKqpgB,SAASrmS,SAC1EA,GAASi6S,gBAAkBj9gB,KAAK6+E,YAAYhsE,cAC5CmwN,GAASotW,qBAAuBpwkB,KAAK6vkB,WACrC7sW,GACK8tW,cACAzokB,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,IAAMnG,KAAKiqb,WAC1Bjqb,KAAKywkB,iBAAiBzwkB,KAAKwwkB,eAC3BxwkB,KAAKswkB,wBACLttW,GAAS+hD,KAAK9tK,IAGlB+tK,KAAK/tK,GAAQj3G,KAAKuvkB,WACVvvkB,KAAKkwkB,kBACLlwkB,KAAKkwkB,iBAAiBlrT,KAAK/tK,IAInC7Z,SACIp9F,KAAKqwkB,oBAAsBrwkB,KAAKglR,OAAShlR,KAAK+kR,OAGlDsrT,oBACI,QAASrwkB,KAAKkwkB,kBAAoBlwkB,KAAKkwkB,iBAAiB3oT,YAG5Dk1K,iBACI,IAAI5mI,GACJ,GAAI71T,KAAKkqb,YACL,OAAOlqb,KAAKkqb,YAEhB,MAAM6mJ,GAAsB/wkB,KAAKoib,kBAAkBmB,4BAA4Bvjb,KAAK6+E,aAE9E+3O,GAAW52T,KAAKo7b,SACjBjnb,WACAqzE,oBAAoBxnF,KAAK6+E,aACzBk1W,sBAAuB,IAAG/zb,KAAK2vkB,2BAC/Bt8I,wBAAuB,GACvBD,mBAAmBpzb,KAAKmwb,iBACxB+C,yBAAyB69I,IAC9Bn6Q,UAAS85H,gBAAgBrob,MAAK49Z,OAAUjma,KAAKsib,aAAan8a,UAAU4nR,KAChE/tR,KAAKgxkB,4BAA4BjjT,GAAOg+J,gBACpC/rb,KAAKkwkB,kBACDniT,GAAOi+J,yBAAyBuL,kBAAoBv3b,KAAKkwkB,iBAAiB3oT,aAG1EvnR,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKglR,KAAK,MAI7ChlR,KAAKkqb,YAAclqb,KAAKo7b,SAASjzW,OAAO,CACpC24D,UAAW9gJ,KAAK+na,KAChB3/U,iBAAkBwuO,GAClB3iT,WAAa,GAAEjU,KAAK2vkB,mBAAmBX,IACvCrjJ,eAAgB3rb,KAAKitb,oBAEzBjtb,KAAKiwkB,gBAAgBjwkB,KAAKkqb,aAC1Blqb,KAAKkqb,YACA+D,cACA5lb,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,IAAMnG,KAAKiqb,WAC1Bjqb,KAAKkqb,YACAiE,uBACA9lb,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU,KAAQ,IAAI0vT,GAAI,OAAwC,QAAhCA,GAAK71T,KAAKkwkB,wBAAqC,IAAPr6Q,QAAgB,EAASA,GAAGo7Q,2BAC3GjxkB,KAAKkqb,YACAgE,gBACA7lb,MAAK49Z,OAAUjma,KAAKsib,aACpBn8a,UAAU4+E,KACP/kF,KAAKqwkB,qBAAuBtrf,GAAMpxE,UAAY04Y,QAAWgN,QAAet0U,MACxEA,GAAM36C,iBACN26C,GAAMn6C,kBACN5qC,KAAK47Z,QAAQpzJ,IAAI,IAAMxoQ,KAAKglR,KAAK,QAGL,QAA/B6wC,GAAK71T,KAAK+ha,uBAAoC,IAAPlsG,QAAgB,EAASA,GAAGq7Q,8BACpElxkB,KAAKkqb,YAAYuE,cAAe,GAAEzub,KAAK2vkB,iDAEpC3vkB,KAAKkqb,YAGhBD,UACQjqb,KAAKkqb,aAAelqb,KAAKkqb,YAAY5iW,eACrCtnF,KAAKkqb,YAAYphB,SAErB9oa,KAAKkwkB,iBAAmB,KAG5BD,gBAAgB/of,IACZ,MAAM/yE,GAAW+yE,GAAWknW,YAAYhmW,iBAClC4rN,GAASh0S,KAAKmxkB,aACd5pf,GAAUvnF,KAAKwpgB,sBACrBr1f,GAASwzE,cAAc,CACnB3nF,KAAKoxkB,WAAW7njB,OAAOC,OAAOD,OAAOC,OAAO,GAAIwqR,GAAOq9R,MAAO9pf,GAAQ8pf,OACtErxkB,KAAKoxkB,WAAW7njB,OAAOC,OAAOD,OAAOC,OAAO,GAAIwqR,GAAO89I,UAAWvqW,GAAQuqW,aAIlFs/I,WAAWj9jB,IACP,OAAOA,GAMXg9jB,aACI,MAAMG,IAAStxkB,KAAK+na,MAA2B,OAAnB/na,KAAK+na,KAAK/jZ,MAChC7P,GAAWnU,KAAKmU,SACtB,IAAIo9jB,GACY,SAAZp9jB,IAAmC,SAAZA,GACvBo9jB,GAAiB,CAAEzpf,QAAS,SAAUC,QAAqB,SAAZ5zE,GAAsB,MAAQ,UAE5D,UAAhBgC,IACY,QAAZhC,IAAsBm9jB,IACV,SAAZn9jB,KAAwBm9jB,GACzBC,GAAiB,CAAEzpf,QAAS,QAASC,QAAS,WAE7B,SAAZ5zE,IACQ,SAAZA,IAAuBm9jB,IACX,QAAZn9jB,KAAuBm9jB,MACxBC,GAAiB,CAAEzpf,QAAS,MAAOC,QAAS,WAKhD,MAAQvnF,KAAGL,MAAMH,KAAKwxkB,gBAAgBD,GAAezpf,QAASypf,GAAexpf,SAC7E,MAAO,CACHspf,KAAME,GACNz/I,SAAU,CAAEhqW,QAAStnF,GAAGunF,QAAS5nF,KAIzCqpgB,sBACI,MAAM8nE,IAAStxkB,KAAK+na,MAA2B,OAAnB/na,KAAK+na,KAAK/jZ,MAChC7P,GAAWnU,KAAKmU,SACtB,IAAIs9jB,GACY,SAAZt9jB,GACAs9jB,GAAkB,CAAEzpf,SAAU,SAAUC,SAAU,UAEjC,SAAhB9xE,GACDs7jB,GAAkB,CAAEzpf,SAAU,SAAUC,SAAU,OAEjC,UAAhB9xE,IACY,QAAZhC,IAAsBm9jB,IACV,SAAZn9jB,KAAwBm9jB,GACzBG,GAAkB,CAAEzpf,SAAU,MAAOC,SAAU,WAE9B,SAAZ9zE,IACQ,SAAZA,IAAuBm9jB,IACX,QAAZn9jB,KAAuBm9jB,MACxBG,GAAkB,CAAEzpf,SAAU,QAASC,SAAU,WAKrD,MAAQznF,KAAGL,MAAMH,KAAKwxkB,gBAAgBC,GAAgBzpf,SAAUypf,GAAgBxpf,UAChF,MAAO,CACHopf,KAAMI,GACN3/I,SAAU,CAAE9pW,SAAUxnF,GAAGynF,SAAU9nF,KAI3CmwkB,wBAGQtwkB,KAAKkwkB,mBACLlwkB,KAAKkwkB,iBAAiBzijB,QAAUztB,KAAKytB,QACrCztB,KAAKkwkB,iBAAiB5kE,gBACtBtrgB,KAAK47Z,QAAQw0J,iBAAiB/njB,MAAKi5Q,OAAK,IAAI2kJ,OAAUjma,KAAKsib,aAAan8a,UAAU,KAC1EnG,KAAKkwkB,kBACLlwkB,KAAKkqb,YAAYE,oBAMjCqmJ,iBAAiBF,IACTvwkB,KAAKkwkB,mBACLlwkB,KAAKkwkB,iBAAiBK,aAAeA,GACrCvwkB,KAAKkwkB,iBAAiB5kE,iBAI9BkmE,gBAAgBhxkB,GAAGL,IACf,MAAsB,UAAlBH,KAAKmU,UAA0C,UAAlBnU,KAAKmU,SACxB,QAAVgC,GACIhW,GAAI,SAEO,WAANA,KACLA,GAAI,OAIE,QAAV+V,GACI1V,GAAI,QAEO,UAANA,KACLA,GAAI,OAGL,CAAEA,KAAGL,MAGhB6wkB,4BAA4BjlJ,IACxB,MAAQ9jW,YAAUH,WAASC,YAAYgkW,GACvC,IAAIxN,GAiBJ,GATQA,GALS,WAAjBpoa,GAIInW,KAAS+na,MAA4B,QAApB/na,KAAK+na,KAAK/jZ,MACG,QAAZ8jE,GAAoB,OAAS,QAGjB,UAAZA,GAAsB,OAAS,QAItB,WAAbG,IAAqC,QAAZF,GAAoB,QAAU,QAErEw2V,KAAgBv+a,KAAK0xkB,iBAAkB,CACvC,MAAMxqf,EAAalnF,KAAKkqb,YACxB,GAAIhjW,EAAY,CACZ,MAAMyqf,GAAe,GAAE3xkB,KAAK2vkB,mBAAmBX,KAC/C9nf,EAAWwnW,iBAAiBijJ,GAAc3xkB,KAAK0xkB,kBAC/Cxqf,EAAWunW,cAAckjJ,GAAcpzJ,IAE3Cv+a,KAAK0xkB,iBAAmBnzJ,IAIhC4xJ,mCAEQnwkB,KAAKmua,YACJnua,KAAKytB,UACLztB,KAAKyvkB,kBACNzvkB,KAAKgwkB,kBAAkBxskB,SAKvBxD,KAAK4xkB,+BACL5xkB,KAAKgwkB,kBAAkB7skB,KAAK,CACxB,aACA,KACInD,KAAK6xkB,kCACL7xkB,KAAK+kR,UAIe,QAAvB/kR,KAAK8vkB,gBACV9vkB,KAAK8xkB,oCACL9xkB,KAAKgwkB,kBAAkB7skB,KAAK,CACxB,aACA,KAGInD,KAAK6xkB,kCACLtze,aAAav+F,KAAK0wkB,oBAClB1wkB,KAAK0wkB,mBAAqB7ikB,WAAW,IAAM7N,KAAK+kR,OAne5C,IAmeoDgtT,KAIpE/xkB,KAAKgykB,cAAchykB,KAAKgwkB,oBAE5B6B,kCACI,GAAI7xkB,KAAK0vkB,8BACL,OAEJ1vkB,KAAK0vkB,+BAAgC,EACrC,MAAMuC,GAAgB,GACtB,GAAIjykB,KAAK4xkB,+BACLK,GAAc9ukB,KAAK,CACf,aACA4hF,KACI,IAAI8wO,GACJ,MAAMq8Q,GAAYntf,GAAMq9O,gBACnB8vQ,MAA2C,QAA3Br8Q,GAAK71T,KAAKkqb,mBAAgC,IAAPr0H,QAAgB,EAASA,GAAGs1H,eAAe/jW,SAAS8qf,OACxGlykB,KAAKglR,SAGd,CAAC,QAASjgM,IAAS/kF,KAAKmykB,eAAeptf,cAEd,QAAvB/kF,KAAK8vkB,cAAyB,CACnC9vkB,KAAK8xkB,oCACL,MAAMM,GAAmB,KACrB7ze,aAAav+F,KAAK0wkB,oBAClB1wkB,KAAKglR,KAAKhlR,KAAK+ha,gBAAgBytK,oBAEnCyC,GAAc9ukB,KAAK,CAAC,WAAYivkB,IAAmB,CAAC,cAAeA,KAEvEpykB,KAAKgykB,cAAcC,IACnBjykB,KAAKgwkB,kBAAkB7skB,QAAQ8ukB,IAEnCD,cAAc3nF,IACVA,GAAU9hf,QAAQ,EAAEw8E,GAAO0lV,OACvBzqa,KAAK6+E,YAAYhsE,cAAc43P,iBAAiB1lL,GAAO0lV,GAAUwkK,KAGzE2C,+BACI,OAAQ5xkB,KAAKm/E,UAAU07U,MAAQ76Z,KAAKm/E,UAAUq/W,QAGlD2zI,eAAeptf,IACX,GAAI/kF,KAAKqwkB,oBAAqB,CAC1B,MAAMgC,GAAsBrykB,KAAKo/E,UAAUo0L,iBAAiBzuL,GAAM+gM,QAAS/gM,GAAMgyO,SAC3En3N,GAAU5/F,KAAK6+E,YAAYhsE,cAK7Bw/jB,KAAwBzye,KAAYA,GAAQxY,SAASirf,KACrDrykB,KAAKglR,QAKjB8sT,oCACI,MAAMQ,GAAWtykB,KAAK8vkB,cACtB,GAAiB,QAAbwC,GAAoB,CACpB,MAAM1ye,GAAU5/F,KAAK6+E,YAAYhsE,cAC3BkgB,GAAQ6sE,GAAQ7sE,OAGL,OAAbu/iB,IAA2C,UAArB1ye,GAAQv5D,UAA6C,aAArBu5D,GAAQv5D,YAC9DtT,GAAMm4Y,WACFn4Y,GAAMw/iB,aACFx/iB,GAAMy/iB,iBACFz/iB,GAAM0/iB,cACF,SAIH,OAAbH,KAAsB1ye,GAAQs1U,aAC9BniZ,GAAM2/iB,eAAiB,QAE3B3/iB,GAAM4/iB,YAAc,OACpB5/iB,GAAMygZ,wBAA0B,gBAI5Co/J,EAAgB7zf,UAAhB,aAAkGE,gCAClG2zf,EAAgB5zf,UADkFC,8BAClG,MAAgG2zf,EAAhGppf,wUAoCA,iBAAyBopf,EACrB/ykB,YAAY0nF,GAASrI,GAAYymX,GAAkB5sT,GAAkB6nR,GAAQs8B,EAAU21I,GAAe9kE,GAAcpiF,GAAgB7tS,GAAKqkR,GAAgB/iV,IACrJzzD,MAAM47D,GAASrI,GAAYymX,GAAkB5sT,GAAkB6nR,GAAQs8B,EAAU21I,GAAe9kE,GAAcpiF,GAAgB7tS,GAAKqkR,GAAgB/iV,IACnJp/E,KAAK6wkB,kBAAoBiC,IAGjCC,GAAWh0f,UAAX,4BAAuGg0f,IA3CL9zf,8BA2CiCS,MA3CjCT,8BA2CwDA,cA3CxDA,8BA2CkF+mX,MA3ClF/mX,8BA2CkHA,oBA3ClHA,8BA2CkJA,UA3ClJA,8BA2CwK6kW,MA3CxK7kW,8BA2CgMqmd,MA3ChMrmd,8BA2C6Nqmd,MA3C7Nrmd,8BA2CyPiwf,GA3CzPjwf,8BA2CiS87W,KAAnY,GA3CkG97W,8BA2C+Uowf,EAAjb,GA3CkGpwf,8BA2CuYU,QACzeozf,GAAW/zf,UA5CuFC,8BA4ClG,MAA2F8zf,GAA3FrvkB,uGA5CkGu7E,0CAsElG,SACIp/E,YAAYsib,GAAoB6rF,IAC5BhugB,KAAKmib,mBAAqBA,GAE1Bnib,KAAKgzkB,YAAc,UAEnBhzkB,KAAKizkB,qBAAsB,EAE3BjzkB,KAAKkzkB,YAAa,EAElBlzkB,KAAKmzkB,QAAU,IAAIp3jB,KACnB/b,KAAKyygB,oBAAwC,mBAAlBzE,EAAkB,CAMjDjpP,KAAK9tK,IAED1Y,aAAav+F,KAAK4wkB,gBAClB5wkB,KAAK2wkB,eAAiB9ikB,WAAW,KAC7B7N,KAAKozkB,mBAAkB,GACvBpzkB,KAAK2wkB,oBAAiB/3N,GACvB3hQ,IAMP+tK,KAAK/tK,IAED1Y,aAAav+F,KAAK2wkB,gBAClB3wkB,KAAK4wkB,eAAiB/ikB,WAAW,KAC7B7N,KAAKozkB,mBAAkB,GACvBpzkB,KAAK4wkB,oBAAiBh4N,GACvB3hQ,IAGP65d,cACI,OAAO9wkB,KAAKmzkB,QAGhB5rT,YACI,OAAOvnR,KAAKkzkB,WAEhBhqkB,cACIq1F,aAAav+F,KAAK2wkB,gBAClBpye,aAAav+F,KAAK4wkB,gBAClB5wkB,KAAKmzkB,QAAQt5jB,WACb7Z,KAAKi9gB,gBAAkB,KAO3Bg0D,yBACQjxkB,KAAKizkB,qBACLjzkB,KAAKglR,KAAK,GAQlBsmP,gBACItrgB,KAAKmib,mBAAmBvoO,eAE5By5X,mBAAoBjxQ,qBACXA,KAAkBpiU,KAAKi9gB,gBAAgB71b,SAASg7O,MACjDpiU,KAAKglR,KAAKhlR,KAAKowkB,sBAQvBkD,UAAU,CAEVC,qBAAsBjhC,oBACdA,KAAkBtyiB,KAAKwzkB,gBAAkBlhC,KAAkBtyiB,KAAKyzkB,iBAChEzzkB,KAAK0zkB,mBAAmBphC,KAAkBtyiB,KAAKwzkB,gBAIvDE,mBAAmBC,IACXA,GACA3zkB,KAAKizkB,qBAAsB,EAErBjzkB,KAAKunR,aACXvnR,KAAKmzkB,QAAQ5xjB,OAIrB6xjB,kBAAkB7rT,IAId,MAAMqsT,GAAU5zkB,KAAK6zkB,SAAShhkB,cACxBihkB,GAAY9zkB,KAAKwzkB,eACjBO,GAAY/zkB,KAAKyzkB,eAMvB,GALAG,GAAQ7oL,UAAUrmI,OAAO6C,GAAYwsT,GAAYD,IACjDF,GAAQ7oL,UAAUjjQ,IAAIy/H,GAAYusT,GAAYC,IAC9C/zkB,KAAKkzkB,WAAa3rT,GAGdA,KAAcvnR,KAAKyygB,qBAAmD,mBAArB15b,iBAAiC,CAClF,MAAMiH,GAASjH,iBAAiB66f,KAEsB,OAAlD5zf,GAAO/G,iBAAiB,uBACsB,SAA9C+G,GAAO/G,iBAAiB,qBACxBj5E,KAAKyygB,qBAAsB,GAG/BlrP,IACAvnR,KAAKszkB,UAELtzkB,KAAKyygB,sBACLmhE,GAAQ7oL,UAAUjjQ,IAAI,2BACtB9nJ,KAAK0zkB,mBAAmBnsT,MAIpCysT,GAAsBj1f,UAAtB,4BAAkHi1f,IAnMhB/0f,8BAmMuDA,qBAnMvDA,8BAmMwF4ub,KAA1L,KACAmmE,GAAsBh1f,UApM4EC,8BAoMlG,MAAsG+0f,KAetG,iBAA+BA,GAC3Bn0kB,YAAYm/gB,GAAmB85C,GAAqB9qD,IAChDrif,MAAMqzf,GAAmBhR,IACzBhugB,KAAK84jB,oBAAsBA,GAE3B94jB,KAAKi0kB,WAAaj0kB,KAAK84jB,oBAAoB3nhB,QAAQq2Y,cACnDxnb,KAAKwzkB,eAAiB,mBACtBxzkB,KAAKyzkB,eAAiB,oBAG9BX,GAAiB/zf,UAAjB,4BAA6G+zf,IA7NX7zf,8BA6N6CA,qBA7N7CA,8BA6N8E+7W,MA7N9E/7W,8BA6NgH4ub,KAAlN,KACAilE,GAAiBlzf,UA9NiFX,8BA8NlG,MAAiG6zf,GAAjGpvkB,yEA9NkGu7E,wBA8NlGv9E,kBA9NkGu9E,2BA8NlG9uB,GA9NkG8uB,6BA8NlG9oE,iDAA2L,QAA3LkqQ,8CA9NkGphM,uBA8NlG,iCAAiG9oE,2BAAjG,MA9NkG8oE,wBA8NlG,yCA9NkGA,wCA8NlGxvC,uHA9NkGwvC,2BA8N0X,aA9N1XA,uBA8N0a,mCAAiB9oE,6BA9N3b8oE,mBA8NlG,WA9NkGA,mBA8N8jB,GA9N9jBA,4BA8NlG,aA9NkGA,wBA8NggB,gCA9NhgBA,wBA8NggB,qCA9NhgBA,uBA8N+d,2BA9N/dA,sBA8N8jB,GA9N9jBA,8BA8N8jB9oE,cAAhqBqqQ,YAA4gDysQ,MAA5gDp0Z,OAAkmDo0Z,MAAlmDjtc;;;;;;;;AAiCA,UAEAyie,GAAiB1je,UAAjB,4BAA6G0je,KAC7GA,GAAiBvie,UAlQiFjB,6BAkQlG,MAA8Gwje,KAC9GA,GAAiBtie,UAnQiFlB,6BAmQlG,WAA2I,CAACkwf,GAA5I7lc,SAAqM,CAACg+R,KAAYu2D,KAAc7gC,KAAe58W,MAAkBA,KAAiBslW;;;;;;;;CAwBhQr7V,QAAQ,QAAS,EAC3BsjQ,QAAM,yBAAyB56T,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,eAC9DywU,QAAM,WAAW56T,QAAM,CAAE7V,UAAW,eACpCmwgB,QAAW,gBAAgBjuQ,QAAQ,oCAAoCkuQ,QAAU,EAC7Ev6f,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,WAAY02R,OAAQ,KACnD7gR,QAAM,CAAE+3Q,QAAS,GAAK5tR,UAAW,cAAe02R,OAAQ,MACxD7gR,QAAM,CAAE+3Q,QAAS,EAAG5tR,UAAW,WAAY02R,OAAQ,SAEvDy5O,QAAW,eAAejuQ,QAAQ,oCAAoCrsP,QAAM,CAAE+3Q,QAAS;;;;;;;;;;;;;;SAAA;;;;;;;;;;;;SC92B/F,MAAMopS,GAAoD,EAE1D,WAA4B1qC,IACxB,OAAO,IAAInvE,qBAAc,IAAiC65G,EAA+C1qC,CAsI7G,cAMI,MAA0B,oBAAZz6Q,SAAyD,qBAA9B,GAAGloR,SAASqjB,KAAK6kQ,QAAa,CAE3E,YAA6BolT,IACzB,OAAQA,GAAQ3wkB,aACP,EACD,OAAO,IAAI4wkB,UACV,EACD,OAAOD,GAAQ,WAEf,OAAO,IAAIE,KAAsBF,KAG7C,YAA4BG,GAAQC,GAAY30e,GAAS0tb,GAAWknD,GAAY,GAAIC,GAAa,IAC7F,MAAM1xkB,GAAS,GACT2xkB,GAAsB,GAC5B,IAAIC,IAAiB,EACjBC,GAAmB,KA+BvB,GA9BAtnD,GAAU/khB,QAAQ24e,KACd,MAAMttM,GAASstM,GAAGttM,OACZihS,GAAejhS,IAAU+gS,GACzBG,GAAsBD,IAAgBD,IAAqB,GACjErrjB,OAAO+hB,KAAK41c,IAAI34e,QAAQs1I,KACpB,IAAIk3b,GAAiBl3b,GACjBwwW,GAAkBnN,GAAGrjW,IACzB,GAAa,WAATA,GAEA,OADAk3b,GAAiBR,GAAWS,sBAAsBD,GAAgBhykB,IAC1Dsrf,SACC4mF,KACD5mF,GAAkBmmF,GAAU32b,IAC5B,WACCq3b,KACD7mF,GAAkBomF,GAAW52b,IAC7B,cAEAwwW,GACIkmF,GAAWY,oBAAoBt3b,GAAMk3b,GAAgB1mF,GAAiBtrf,IAItF+xkB,GAAmBC,IAAkB1mF,KAEpCwmF,IACDH,GAAoBvxkB,KAAK2xkB,IAE7BF,GAAmBE,GACnBH,GAAiB/gS,KAEjB7wS,GAAOS,OACP,MA9GR,WAAyBT,IACrB,OAAO,IAAIs3d,qBAAc,KAA6B65G,EACgDkB,CA4G5FC,GAEV,OAAOX,GAEX,YAAwBY,GAAQ93I,GAAWz4W,GAAO+iL,IAC9C,OAAQ01L,QACC,QACD83I,GAAOriL,QAAQ,IAAMnrJ,GAAS/iL,IAASwwf,GAAmBxwf,GAAO,QAASuwf,MAC1E,UACC,OACDA,GAAOpiL,OAAO,IAAMprJ,GAAS/iL,IAASwwf,GAAmBxwf,GAAO,OAAQuwf,MACxE,UACC,UACDA,GAAOniL,UAAU,IAAMrrJ,GAAS/iL,IAASwwf,GAAmBxwf,GAAO,UAAWuwf,MAC9E,CAGZ,YAA4B30kB,GAAG60kB,GAAWF,IACtC,MAAMp8C,GAAYo8C,GAAOp8C,UACnB5rgB,KAAWgojB,GAAOhojB,SAClBy3D,GAAQ0wf,GAAmB90kB,GAAEi/F,QAASj/F,GAAE+0kB,YAAa/0kB,GAAEs+hB,UAAWt+hB,GAAEs4hB,QAASu8C,IAAa70kB,GAAE60kB,UAAwB58N,MAAbsgL,GAAyBv4hB,GAAEu4hB,UAAYA,GAAW5rgB,IACzJ5qB,GAAO/B,GAAEw/J,MACf,OAAY,MAARz9J,KACAqiF,GAAMo7E,MAAWz9J,IAEdqiF,GAEX,YAA4B6a,GAAS81e,GAAaz2C,GAAWhG,GAASu8C,GAAY,GAAIt8C,GAAY,EAAG5rgB,IACjG,MAAO,CAAEsyE,WAAS81e,eAAaz2C,aAAWhG,WAASu8C,aAAWt8C,aAAW5rgB,WAAYA,IAEzF,YAAyB2F,GAAKqD,GAAKm7Q,IAC/B,IAAIztR,GACJ,OAAIiP,cAAe06U,KACf3pV,GAAQiP,GAAIpyB,IAAIy1B,IACXtS,IACDiP,GAAIqsO,IAAIhpO,GAAKtS,GAAQytR,MAIzBztR,GAAQiP,GAAIqD,IACPtS,KACDA,GAAQiP,GAAIqD,IAAOm7Q,KAGpBztR,GAEX,YAA8B2xjB,IAC1B,MAAMC,GAAeD,GAAQvkkB,QAAQ,KAGrC,MAAO,CAFIukkB,GAAQx8jB,UAAU,EAAGy8jB,IACjBD,GAAQl+f,OAAOm+f,GAAe,GACjC7zY,CAEhB,IAAI8zY,GAAY,CAACC,GAAMC,MAAS,EAC5BC,GAAS,CAACp2e,GAASoyT,GAAUvzT,KACtB,GAEPw3e,GAAmB,KACvB,YAA0Br2e,IACtB,MAAMkhC,GAASlhC,GAAQiqP,YAAcjqP,GAAQrmB,KAC7C,OAAIunD,KAAWm1c,GACJ,KAEJn1c,IAIKo1c,MACkB,oBAAZtpY;;;;;;;;AA5HtB,aACI,MAA0B,oBAAXrxJ,aAAqD,IAApBA,OAAO9U,QAAa,CA4H/D44C,IAMD42f,GAAoC,KAAMxviB,SAASqtQ,gBAAf,GACpC+hS,GAAY,CAACC,GAAMC,MACf,KAAOA,IAAM,CACT,GAAIA,KAASD,GACT,OAAO,EAEXC,GAAOI,GAAiBJ,IAE5B,OAAO,IAbXF,GAAY,CAACC,GAAMC,KAASD,GAAK1uf,SAAS2uf,IAgB9CC,GAAS,CAACp2e,GAASoyT,GAAUvzT,MACzB,GAAIA,GACA,OAAO7oF,MAAM6zB,KAAKm2D,GAAQV,iBAAiB8yT,KAE/C,MAAMy/I,GAAO7xc,GAAQ29T,cAAcvL,IACnC,OAAOy/I,GAAO,CAACA,IAAQ,KAQ/B,IAAI2kC,GAAe,KACfC,IAAa,EACjB,YAA+Bx4b,IACtBu4b,KACDA,GAaR,cACI,MAAuB,oBAAZ3viB,SACAA,SAASsI,KAEb,KAjBYuniB,IAAiB,GAChCD,KAAaD,GAAarjjB,OAAS,qBAAsBqjjB,GAAarjjB,OAE1E,IAAIszD,IAAS,EACb,OAAI+vf,GAAarjjB,QAbrB,YAA8B8qH,IAG1B,MAA+B,SAAxBA,GAAK1kI,UAAU,EAAG,EAAM,CAUJo9jB,CAAqB14b,MAC5Cx3D,GAASw3D,MAAQu4b,GAAarjjB,OACzBszD,IAAUgwf,KAEXhwf,GAASmwf,SADoB34b,GAAK1pG,OAAO,GAAGptC,cAAgB82I,GAAKpmE,OAAO,KAClD2+f,GAAarjjB,QAGpCszD,GAQX,MAAMowf,GAAkBZ,GAClBa,GAAcV;;;;;;;;AAoBpB,SACIW,sBAAsB94b,IAClB,OAAO84b,GAAsB94b,IAEjC+4b,eAAel7K,GAAUm7K,IAErB,OAAO,EAEXJ,gBAAgBX,GAAMC,IAClB,OAAOU,GAAgBX,GAAMC,IAEjCI,iBAAiBv2e,IACb,OAAOu2e,GAAiBv2e,IAE5B1nE,MAAM0nE,GAASoyT,GAAUvzT,IACrB,OAAOi4e,GAAY92e,GAASoyT,GAAUvzT,IAE1Cq4e,aAAal3e,GAASi+C,GAAM4zJ,IACxB,OAAOA,IAAgB,GAE3BryB,QAAQx/K,GAAS0tb,GAAW7hZ,GAAUx0B,GAAO8/d,GAAQC,GAAkB,GAAIC,IACvE,OAAO,IAAI7C,KAAoB3oc,GAAUx0B,KAGjDige,GAAoBn4f,UAApB,4BAAiHm4f,KACjHA,GAAoBlrb,WADmF/sE,+BACvG,OAAqHi4f,GAArH70kB,QAAqH60kB,GAArH,YAOA,UAEAC,GAAgBC,KAAwB,IAAIF;;;;;;;;AAS5C,MAGMG,GAAkB,WAClBC,GAAkB,WAClBC,GAAuB,aACvBC,GAAsB,cACtBC,GAAyB,eACzBC,GAAwB,gBAC9B,YAA4B1zjB,IACxB,GAAoB,iBAATA,GACP,OAAOA,GACX,MAAM4tR,GAAU5tR,GAAMvV,MAAM,qBAC5B,OAAKmjS,IAAWA,GAAQpuS,OAAS,EACtB,EACJm0kB,GAAsBxyiB,WAAWysQ,GAAQ,IAAKA,GAAQ,IAEjE,YAA+B5tR,GAAO8rT,IAClC,MACS,MADDA,GAlBO,IAoBA9rT,GAEAA,GAGnB,WAAuB4zjB,GAAS70kB,GAAQ80kB,IACpC,OAAOD,GAAQvqiB,eAAe,YAC1BuqiB,GAGR,YAA6BpuC,GAAKzmiB,GAAQ80kB,IACtC,MAAM94e,GAAQ,2EACd,IAAI0sC,GACAx0B,GAAQ,EACR8/d,GAAS,GACb,GAAmB,iBAARvtC,GAAkB,CACzB,MAAM53P,GAAU43P,GAAI/6hB,MAAMswF,IAC1B,GAAgB,OAAZ6yM,GACA7uS,UAAOI,KAAK20kB,KACL,CAAErsc,SAAU,EAAGx0B,MAAO,EAAG8/d,OAAQ,IAE5Ctrc,GAAWksc,GAAsBxyiB,WAAWysQ,GAAQ,IAAKA,GAAQ,IACjE,MAAMmmS,GAAanmS,GAAQ,GACT,MAAdmmS,KACA9ge,GAAQ0ge,GAAsBxyiB,WAAW4yiB,IAAanmS,GAAQ,KAElE,MAAMomS,GAAYpmS,GAAQ,GACtBomS,KACAjB,GAASiB,SAIbvsc,GAAW+9Z,GAEf,IAAKquC,GAAqB,CACtB,IAAII,IAAiB,EACjB13B,GAAax9iB,GAAOS,OACpBioI,GAAW,IACX1oI,GAAOI,KA7anB,aACI,OAAO,IAAIk3d,qBAAc,KAAgC65G,EAAiB,CA4atDgE,IACZD,IAAiB,GAEjBhhe,GAAQ,IACRl0G,GAAOI,KA9anB,aACI,OAAO,IAAIk3d,qBAAc,KAAiC65G,EAAiB,CA6avDiE,IACZF,IAAiB,GAEjBA,IACAl1kB,GAAOyqB,OAAO+yhB,GAAY,EAAGu3B,IAAmBtuC,CAGxD,MAAO,CAAE/9Z,YAAUx0B,SAAO8/d,WAzCtBqB,CAAoBR,GAAS70kB,GAAQ80kB,IA2C7C,WAAiBnsb,GAAKqkQ,GAAc,IAChCxmY,cAAO+hB,KAAKogH,IAAKnjJ,QAAQs1I,KACrBkyQ,GAAYlyQ,IAAQ6N,GAAI7N,MAErBkyQ,GAYX,YAAoB/vU,GAAQq4f,GAAetoL,GAAc,IACrD,GAAIsoL,GAIA,QAASx6b,MAAQ79D,GACb+vU,GAAYlyQ,IAAQ79D,GAAO69D,SAI/By6b,EAAQt4f,GAAQ+vU,IAEpB,OAAOA,GAEX,YAAiCnwT,GAAStpE,GAAKtS,IAG3C,OAAIA,GACOsS,GAAM,IAAMtS,GAAQ,IAGpB,GAGf,YAA6B47E,IAKzB,IAAI24e,GAAiB,GACrB,QAASr4kB,GAAI,EAAGA,GAAI0/F,GAAQ7sE,MAAMvvB,OAAQtD,KAAK,CAC3C,MAAMo2B,GAAMspE,GAAQ7sE,MAAM8W,KAAK3pC,IAC/Bq4kB,IAAkBC,GAAwB54e,EAAStpE,GAAKspE,GAAQ7sE,MAAMkmD,iBAAiB3iD,KAE3F,UAAWA,MAAOspE,GAAQ7sE,MAAO,CAE7B,IAAK6sE,GAAQ7sE,MAAMsa,eAAe/W,KAAQA,GAAI7T,WAAW,KACrD,SAGJ81jB,IAAkBC,GAAwB54e,EAD1B64e,GAAoBnijB,IACwBspE,GAAQ7sE,MAAMuD,KAE9EspE,GAAQj5D,aAAa,QAAS4xiB,IAElC,YAAmB34e,GAAS5f,GAAQ04f,IAC5B94e,GAAQ7sE,QACRxJ,OAAO+hB,KAAK00C,IAAQz3E,QAAQs1I,KACxB,MAAM24b,GAAYmC,GAAoB96b,IAClC66b,KAAiBA,GAAarriB,eAAewwG,MAC7C66b,GAAa76b,IAAQj+C,GAAQ7sE,MAAMyjjB,KAEvC52e,GAAQ7sE,MAAMyjjB,IAAax2f,GAAO69D,MAGlCq4b,MACA0C,GAAoBh5e,KAIhC,YAAqBA,GAAS5f,IACtB4f,GAAQ7sE,QACRxJ,OAAO+hB,KAAK00C,IAAQz3E,QAAQs1I,KACxB,MAAM24b,GAAYmC,GAAoB96b,IACtCj+C,GAAQ7sE,MAAMyjjB,IAAa,KAG3BN,MACA0C,GAAoBh5e,KAIhC,YAAiCrzB,IAC7B,OAAI32D,MAAMukD,QAAQoS,IACM,GAAhBA,GAAM/oE,OACC+oE,GAAM,IACVi0D,QAASj0D,IAEbA,GAEX,YAA6BvoD,GAAOm+P,GAASp/Q,IACzC,MAAMm5c,GAAS/5L,GAAQ+5L,QAAU,GAC3BtqK,GAAUinS,GAAmB70jB,IAC/B4tR,GAAQpuS,QACRouS,GAAQrpS,QAAQuwkB,KACP58H,GAAO7ua,eAAeyriB,KACvB/1kB,GAAOI,KAzhBvB,WAA4B21kB,IACxB,OAAO,IAAIz+G,qBAAc,KAAiC65G,EACP4E,CAuhB3BC,GAAmBD,GAK/C,MAAME,GAAc,IAAI/8iB,OAAQ,oBAAkE,KAClG,YAA4BjY,IACxB,IAAIk4b,GAAS,GACb,GAAqB,iBAAVl4b,GAAoB,CAC3B,IAAIvV,GACJ,KAAOA,GAAQuqkB,GAAYpnY,KAAK5tL,KAC5Bk4b,GAAO/4c,KAAKsL,GAAM,IAEtBuqkB,GAAYz1N,UAAY,EAE5B,OAAO24F,GAEX,YAA2Bl4b,GAAOk4b,GAAQn5c,IACtC,MAAMk2kB,GAAWj1jB,GAAMnd,WACjB0md,GAAM0rH,GAAS/8iB,QAAQ88iB,GAAa,CAAC3pQ,GAAGypQ,MAC1C,IAAII,GAAWh9H,GAAO48H,IAEtB,OAAK58H,GAAO7ua,eAAeyriB,MACvB/1kB,GAAOI,KA5iBnB,WAA2B21kB,IACvB,OAAO,IAAIz+G,qBAAc,KAAgC65G,EAAmE4E,CA2iBxGK,IACZD,GAAW,IAERA,GAASrykB,aAGpB,OAAO0md,IAAO0rH,GAAWj1jB,GAAQupc,GAErC,YAAyB5+I,IACrB,MAAMyqQ,GAAM,GACZ,IAAIvviB,GAAO8kS,GAASptT,OACpB,MAAQsoB,GAAK05V,MACT61M,GAAIj2kB,KAAK0mC,GAAK7lB,OACd6lB,GAAO8kS,GAASptT,OAEpB,OAAO63jB,GAEX,MAAMC,GAAmB,gBACzB,YAA6Bx7e,IACzB,OAAOA,GAAM3hE,QAAQm9iB,GAAkB,IAAI7/Q,KAAMA,GAAE,GAAGzyT,eAE1D,YAA6B82F,IACzB,OAAOA,GAAM3hE,QAAQ,kBAAmB,SAASrgB,cA4BrD,YAAsBy9jB,GAASluL,GAAM9qP,IACjC,OAAQ8qP,GAAKxjZ,WACJ,EACD,OAAO0xkB,GAAQC,aAAanuL,GAAM9qP,SACjC,EACD,OAAOg5a,GAAQE,WAAWpuL,GAAM9qP,SAC/B,EACD,OAAOg5a,GAAQG,gBAAgBruL,GAAM9qP,SACpC,EACD,OAAOg5a,GAAQI,cAActuL,GAAM9qP,SAClC,EACD,OAAOg5a,GAAQK,WAAWvuL,GAAM9qP,SAC/B,EACD,OAAOg5a,GAAQM,aAAaxuL,GAAM9qP,SACjC,EACD,OAAOg5a,GAAQO,eAAezuL,GAAM9qP,SACnC,EACD,OAAOg5a,GAAQQ,WAAW1uL,GAAM9qP,SAC/B,EACD,OAAOg5a,GAAQS,eAAe3uL,GAAM9qP,SACnC,EACD,OAAOg5a,GAAQU,kBAAkB5uL,GAAM9qP,SACtC,GACD,OAAOg5a,GAAQW,gBAAgB7uL,GAAM9qP,SACpC,GACD,OAAOg5a,GAAQY,WAAW9uL,GAAM9qP,SAC/B,GACD,OAAOg5a,GAAQa,aAAa/uL,GAAM9qP,YAElC,MAxnBZ,WAAyB0jJ,IACrB,OAAO,IAAIq2K,qBAAc,KAA8B65G,EAA+DlwR,CAunBxGo2R,CAAgBhvL,GAAKxjZ,OAGvC,YAAsBg4F,GAASi+C,IAC3B,OAAOtiG,OAAOw9B,iBAAiB6mB,IAASi+C;;;;;;;;;;;;;;;AA2C5C,MAAMw8b,EAAY,IAClB,YAA6BC,GAAiBv3kB,IAC1C,MAAMw3kB,GAAc,GACpB,MAA8B,iBAAnBD,GACPA,GAAgBnxjB,MAAM,WAAW5gB,QAAQgld,IAOjD,YAAiCitH,GAAUD,GAAax3kB,IACpD,GAAmB,KAAfy3kB,GAAS,GAAW,CACpB,MAAMn0f,GAqBd,YAA6Bk8P,GAAOx/U,IAChC,OAAQw/U,QACC,SACD,MAAO,gBACN,SACD,MAAO,gBACN,aACD,MAAO,CAAC08M,GAAWhG,KAAY9zf,WAAW8zf,IAAW9zf,WAAW85f,QAC/D,aACD,MAAO,CAACA,GAAWhG,KAAY9zf,WAAW8zf,IAAW9zf,WAAW85f,YAEhEl8hB,UAAOI,KAlqBnB,WAAgCo/U,IAC5B,OAAO,IAAI83I,qBAAc,KAAqC65G,EAAgD3xP,CAiqB1Fk4P,IACL,UAjCIC,CAAoBF,GAAUz3kB,IAC7C,GAAqB,mBAAVsjF,GAEP,YADAk0f,GAAYp3kB,KAAKkjF,IAGrBm0f,GAAWn0f,GAEf,MAAM53E,GAAQ+rkB,GAAS/rkB,MAAM,2CAC7B,GAAa,MAATA,IAAiBA,GAAMjL,OAAS,EAChCT,UAAOI,KA9oBf,WAA2Bw3kB,IACvB,OAAO,IAAItgH,qBAAc,KAA+B65G,EAAwDyG,CA6oBhGC,IACLL,GAEX,MAAMt7C,GAAYxwhB,GAAM,GAClBu1R,GAAYv1R,GAAM,GAClBwqhB,GAAUxqhB,GAAM,GACtB8rkB,GAAYp3kB,KAAK03kB,GAAqB57C,GAAWhG,KACjD,MAAM6hD,GAAqB77C,IAAao7C,GAAaphD,IAAWohD,EAC5C,KAAhBr2S,GAAU,KAAc82S,IACxBP,GAAYp3kB,KAAK03kB,GAAqB5hD,GAASgG,KA3BC87C,CAAwBxtH,GAAKgtH,GAAax3kB,KAG1Fw3kB,GAAYp3kB,KAAKm3kB,IAEdC,GA4CX,MAAMS,GAAsB,IAAIv1X,IAAI,CAAC,OAAQ,MACvCw1X,GAAuB,IAAIx1X,IAAI,CAAC,QAAS,MAC/C,YAA8By1X,GAAKC,IAC/B,MAAMC,GAAoBJ,GAAoBl4N,IAAIo4N,KAAQD,GAAqBn4N,IAAIo4N,IAC7EG,GAAoBL,GAAoBl4N,IAAIq4N,KAAQF,GAAqBn4N,IAAIq4N,IACnF,MAAO,CAACl8C,GAAWhG,MACf,IAAIqiD,GAAWJ,IAAOb,GAAaa,IAAOj8C,GACtCs8C,GAAWJ,IAAOd,GAAac,IAAOliD,GAC1C,OAAKqiD,IAAYF,IAA0C,kBAAdn8C,KACzCq8C,GAAWr8C,GAAY+7C,GAAoBl4N,IAAIo4N,IAAOD,GAAqBn4N,IAAIo4N,MAE9EK,IAAYF,IAAwC,kBAAZpiD,KACzCsiD,GAAWtiD,GAAU+hD,GAAoBl4N,IAAIq4N,IAAOF,GAAqBn4N,IAAIq4N,KAE1EG,IAAYC;;;;;;;SAW3B,MAAMC,GAAa,QACbC,GAAmB,IAAIx/iB,OAAQ,cAAwB,KAqC7D,YAA2Bq4iB,GAAQj/P,GAAUtyU,GAAQ24kB,IACjD,OAAO,IAAIC,GAA2BrH,IAAQrvG,MAAM5vJ,GAAUtyU,GAAQ24kB,IAG1E,SACI77kB,YAAY+7kB,IACR57kB,KAAK47kB,QAAUA,GAEnB32G,MAAM5vJ,GAAUtyU,GAAQ24kB,IACpB,MAAMp7a,GAAU,IAAIu7a,GAA2B94kB,IAC/C/C,KAAK87kB,8BAA8Bx7a,IACnC,MAAMkyL,GAAMupP,GAAa/7kB,KAAMg8kB,GAAwB3mQ,IAAW/0K,IAClE,OAAIA,GAAQ27a,8BAA8Bl2f,MACUu6E,GAAQ27a,8BAA8B3wiB,OAEnFknT,GAEXspP,8BAA8Bx7a,IAC1BA,GAAQ47a,qBAfM,GAgBd57a,GAAQ67a,gBAAkB,GAC1B77a,GAAQ67a,gBAjBM,IAiB2B,GACzC77a,GAAQ87a,YAAc,EAE1B7C,aAAalkQ,GAAU/0K,IACnB,IAAI+7a,GAAa/7a,GAAQ+7a,WAAa,EAClCC,GAAWh8a,GAAQg8a,SAAW,EAClC,MAAMtrI,GAAS,GACTurI,GAAc,GACpB,MAA+B,KAA3BlnQ,GAASzqR,KAAKzW,OAAO,IACrBmsH,GAAQv9J,OAAOI,KAlzB3B,aACI,OAAO,IAAIk3d,qBAAc,KAA4B65G,EACjD,CAgzBwBsI,IAExBnnQ,GAASonQ,YAAYl0kB,QAAQktc,KAEzB,GADAz1c,KAAK87kB,8BAA8Bx7a,IACnB,GAAZm1S,GAAI7tc,KAAuB,CAC3B,MAAM80kB,GAAWjnI,GACX7qZ,GAAO8xhB,GAAS9xhB,KACtBA,GAAK/jD,WAAWsiB,MAAM,WAAW5gB,QAAQ8J,KACrCqqkB,GAAS9xhB,KAAOv4C,GAChB2+b,GAAO7tc,KAAKnD,KAAKw5kB,WAAWkD,GAAUp8a,OAE1Co8a,GAAS9xhB,KAAOA,WAEC,GAAZ6qZ,GAAI7tc,KAA4B,CACrC,MAAMylhB,GAAarthB,KAAKy5kB,gBAAgBhkI,GAAKn1S,IAC7C+7a,IAAchvD,GAAWgvD,WACzBC,IAAYjvD,GAAWivD,SACvBC,GAAYp5kB,KAAKkqhB,SAGjB/sX,GAAQv9J,OAAOI,KAl0B/B,aACI,OAAO,IAAIk3d,qBAAc,KAA+B65G,EAAiB,CAi0BzCyI,MAGrB,CACH/0kB,KAAM,EACNgjD,KAAMyqR,GAASzqR,KACfomZ,UACAurI,eACAF,cACAC,YACAn6T,QAAS,MAGjBq3T,WAAWnkQ,GAAU/0K,IACjB,MAAMs8a,GAAW58kB,KAAK85kB,WAAWzkQ,GAASr1P,OAAQsgF,IAC5Cu8a,GAAaxnQ,GAASlzD,SAAWkzD,GAASlzD,QAAQ+5L,QAAW,KACnE,GAAI0gI,GAASE,sBAAuB,CAChC,MAAMC,GAAc,IAAIt3X,IAClBy2P,GAAS2gI,IAAa,GAa5B,GAZAD,GAAS58f,OAAOz3E,QAAQyb,KACpB,GAAI2jW,GAAS3jW,IAAQ,CACjB,MAAMg5jB,GAAYh5jB,GAClBuF,OAAO+hB,KAAK0xiB,IAAWz0kB,QAAQs1I,KAC3Bg7b,GAAmBmE,GAAUn/b,KAAOt1I,QAAQilZ,KACnC0uD,GAAO7ua,eAAemgX,KACvBuvL,GAAYj1b,IAAI0lQ,WAMhCuvL,GAAYh3f,KAAM,CACKy9S,GAAgBu5M,GAAY1qf,UACnDiuE,GAAQv9J,OAAOI,KAh2B/B,WAAsB85kB,GAAcF,IAChC,OAAO,IAAI1iH,qBAAc,KAA0B65G,EACyE,CA81B5FgJ,CAAa7nQ,GAASzqR,MAAMuyhB,EAGxD,MAAO,CACHv1kB,KAAM,EACNgjD,KAAMyqR,GAASzqR,KACf73B,MAAO6pjB,GACPz6T,QAAS06T,GAAY,CAAE3gI,OAAQ2gI,IAAc,MAGrDpD,gBAAgBpkQ,GAAU/0K,IACtBA,GAAQ+7a,WAAa,EACrB/7a,GAAQg8a,SAAW,EACnB,MAAMv6T,GAAYg6T,GAAa/7kB,KAAMg8kB,GAAwB3mQ,GAAStzD,WAAYzhH,IAElF,MAAO,CACH14J,KAAM,EACN6mZ,SAHa2uL,GAAoB/nQ,GAASslQ,KAAMr6a,GAAQv9J,QAIxDg/Q,aACAs6T,WAAY/7a,GAAQ+7a,WACpBC,SAAUh8a,GAAQg8a,SAClBn6T,QAASk7T,GAA0BhoQ,GAASlzD,UAGpDu3T,cAAcrkQ,GAAU/0K,IACpB,MAAO,CACH14J,KAAM,EACN2kE,MAAO8oQ,GAAS9oQ,MAAMt5C,IAAIrsB,IAAKm1kB,GAAa/7kB,KAAM4G,GAAG05J,KACrD6hH,QAASk7T,GAA0BhoQ,GAASlzD,UAGpDw3T,WAAWtkQ,GAAU/0K,IACjB,MAAM87a,GAAc97a,GAAQ87a,YAC5B,IAAIkB,GAAe,EACnB,MAAM/wgB,GAAQ8oQ,GAAS9oQ,MAAMt5C,IAAIqyP,KAC7BhlH,GAAQ87a,YAAcA,GACtB,MAAMmB,GAAWxB,GAAa/7kB,KAAMslR,GAAMhlH,IAC1Cg9a,UAAe71jB,KAAKqgB,IAAIw1iB,GAAch9a,GAAQ87a,aACvCmB,KAEXj9a,UAAQ87a,YAAckB,GACf,CACH11kB,KAAM,EACN2kE,SACA41M,QAASk7T,GAA0BhoQ,GAASlzD,UAGpDy3T,aAAavkQ,GAAU/0K,IACnB,MAAMk9a,GAoSd,YAA4Bx5jB,GAAOjhB,IAC/B,GAAIihB,GAAMqpB,eAAe,YACrB,OAAOrpB,GAEX,GAAoB,iBAATA,GAAmB,CAE1B,OAAOy5jB,GADUC,EAAc15jB,GAAOjhB,IAAQ0oI,SACf,EAAG,IAEtC,MAAMkyc,GAAW35jB,GAEjB,GADkB25jB,GAASx0jB,MAAM,OAAOq/G,KAAKnoI,IAAoB,KAAfA,GAAE8zC,OAAO,IAA4B,KAAf9zC,GAAE8zC,OAAO,IAClE,CACX,MAAMq+S,GAAMirP,GAAc,EAAG,EAAG,IAChCjrP,UAAIorP,SAAU,EACdprP,GAAImrP,SAAWA,GACRnrP,GAEX,MAAMolP,GAAU8F,EAAcC,GAAU56kB,IACxC,OAAO06kB,GAAc7F,GAAQnsc,SAAUmsc,GAAQ3ge,MAAO2ge,GAAQb,QArTxC8G,CAAmBxoQ,GAASuiQ,QAASt3a,GAAQv9J,QAC/Du9J,GAAQw9a,sBAAwBN,GAChC,IAAIZ,GACAmB,GAAgB1oQ,GAASr1P,OAASq1P,GAASr1P,QAASjtD,QAAM,IAC9D,GAA0B,GAAtBgrjB,GAAcn2kB,KACdg1kB,GAAW58kB,KAAK65kB,eAAekE,GAAez9a,QAE7C,CACD,IAAIy9a,GAAgB1oQ,GAASr1P,OACzB2zM,IAAU,EACd,IAAKoqT,GAAe,CAChBpqT,IAAU,EACV,MAAMqqT,GAAe,GACjBR,GAAUzG,SACViH,GAAajH,OAAYyG,GAAUzG,QAEvCgH,IAAgBhrjB,QAAMirjB,IAE1B19a,GAAQ87a,aAAeoB,GAAU/xc,SAAW+xc,GAAUvme,MACtD,MAAMgne,GAAYj+kB,KAAK85kB,WAAWiE,GAAez9a,IACjD29a,GAAUC,YAAcvqT,GACxBipT,GAAWqB,GAEf39a,UAAQw9a,sBAAwB,KACzB,CACHl2kB,KAAM,EACNgwkB,QAAS4F,GACTzqjB,MAAO6pjB,GACPz6T,QAAS,MAGjB23T,WAAWzkQ,GAAU/0K,IACjB,MAAMkyL,GAAMxyV,KAAKm+kB,cAAc9oQ,GAAU/0K,IACzC,YAAK89a,kBAAkB5rP,GAAKlyL,IACrBkyL,GAEX2rP,cAAc9oQ,GAAU/0K,IACpB,MAAMtgF,GAAS,GACXpqE,MAAMukD,QAAQk7Q,GAASr1P,QACvBq1P,GAASr1P,OAAOz3E,QAAQ81kB,KACK,iBAAdA,GACP1+X,IAAkBu1X,KACdl1f,GAAO78E,KAAKk7kB,IAGZ/9a,GAAQv9J,OAAOI,KAz7BvC,WAA2B6gB,IACvB,OAAO,IAAIq2c,qBAAc,KAAgC65G,EAAoDlwjB,CAw7BrEs6jB,IAIxBt+f,GAAO78E,KAAKk7kB,MAKpBr+f,GAAO78E,KAAKkyU,GAASr1P,QAEzB,IAAI88f,IAAwB,EACxByB,GAAkB,KACtBv+f,UAAOz3E,QAAQi2kB,KACX,GAAI72N,GAAS62N,IAAY,CACrB,MAAMC,GAAWD,GACXzH,GAAS0H,GAAS1H,OAKxB,GAJIA,KACAwH,GAAkBxH,UACX0H,GAAS1H,SAEf+F,GACD,QAASj/b,MAAQ4gc,GAEb,GAAIz6jB,GADmB65H,IACbh3I,WAAWuK,QA3nBb,OA2nBiD,EAAG,CACxD0rkB,IAAwB,EACxB,UAMb,CACHl1kB,KAAM,EACNo4E,UACA+2f,OAAQwH,GACR3qS,OAAQyhC,GAASzhC,OACjBkpS,yBACA36T,QAAS,MAGjBi8T,kBAAkB5rP,GAAKlyL,IACnB,MAAMs3a,GAAUt3a,GAAQw9a,sBACxB,IAAIY,GAAUp+a,GAAQ87a,YAClBuC,GAAYr+a,GAAQ87a,YACpBxE,IAAW+G,GAAY,IACvBA,IAAa/G,GAAQnsc,SAAWmsc,GAAQ3ge,OAE5Cu7O,GAAIxyQ,OAAOz3E,QAAQq2kB,KACK,iBAATA,IAEXr1jB,OAAO+hB,KAAKsziB,IAAOr2kB,QAAQs1I,KACvB,IAAK79I,KAAK47kB,QAAQjF,sBAAsB94b,IAGpC,cAFO+gc,GAAM/gc,SACbyiB,GAAQ27a,8BAA8Bn0b,IAAIjK,IAG9C,MAAMs+b,GAAkB77a,GAAQ67a,gBAAgB77a,GAAQ47a,sBAClD2C,GAAiB1C,GAAgBt+b,IACvC,IAAIihc,IAAuB,EACvBD,KACIF,IAAaD,IAAWC,IAAaE,GAAeF,WACpDD,IAAWG,GAAeH,UAC1Bp+a,GAAQv9J,OAAOI,KAj/BvC,WAAkC06I,GAAMkhc,GAAYC,GAAUC,GAAaC,IACvE,OAAO,IAAI7kH,qBAAc,KAAuC65G,EACqIgL,CA++B7JC,CAAyBthc,EAAMghc,GAAeF,UAAWE,GAAeH,UAC5FI,IAAuB,GAK3BH,GAAYE,GAAeF,WAE3BG,KACA3C,GAAgBt+b,IAAQ,CAAE8gc,aAAWD,aAErCp+a,GAAQ6hH,SACRi9T,GAAoBR,GAAM/gc,IAAOyiB,GAAQ6hH,QAAS7hH,GAAQv9J,YAK1E82kB,eAAexkQ,GAAU/0K,IACrB,MAAMkyL,GAAM,CAAE5qV,KAAM,EAAmBo4E,OAAQ,GAAImiM,QAAS,MAC5D,IAAK7hH,GAAQw9a,sBACTx9a,UAAQv9J,OAAOI,KAjgC3B,aACI,OAAO,IAAIk3d,qBAAc,KAA8B65G,EAAkB,CAggC7CmL,IACb7sP,GAGX,IAAI8sP,GAA4B,EAChC,MAAM14R,GAAU,GAChB,IAAI24R,IAAoB,EACpBC,IAAsB,EACtB7K,GAAiB,EACrB,MAAMrnD,GAAYj4M,GAAS9oQ,MAAMt5C,IAAI+sD,KACjC,MAAMjtD,GAAQ/yB,KAAKm+kB,cAAcn+f,GAAQsgF,IACzC,IAAIm/a,GAA4B,MAAhB1sjB,GAAM6gR,OAAiB7gR,GAAM6gR,OAkIzD,YAAuB5zN,IACnB,GAAqB,iBAAVA,GACP,OAAO,KACX,IAAI4zN,GAAS,KACb,GAAIh+R,MAAMukD,QAAQ6lB,IACdA,GAAOz3E,QAAQ81kB,KACX,GAAI12N,GAAS02N,KAAeA,GAAWhxiB,eAAe,UAAW,CAC7D,MAAMq+G,GAAM2yb,GACZzqS,GAASzuQ,WAAWumH,GAAIkoJ,eACjBloJ,GAAIkoJ,kBAId+zE,GAAS3nS,KAAWA,GAAO3yC,eAAe,UAAW,CAC1D,MAAMq+G,GAAM1rE,GACZ4zN,GAASzuQ,WAAWumH,GAAIkoJ,eACjBloJ,GAAIkoJ,OAEf,OAAOA,GApJuD8rS,CAAc3sjB,GAAMitD,QACtE4zN,GAAS,EACb,OAAiB,MAAb6rS,KACAH,KACA1rS,GAAS7gR,GAAM6gR,OAAS6rS,IAE5BD,GAAsBA,IAAuB5rS,GAAS,GAAKA,GAAS,EACpE2rS,GAAoBA,IAAqB3rS,GAAS+gS,GAClDA,GAAiB/gS,GACjBgT,GAAQzjT,KAAKywS,IACN7gR,KAEPysjB,IACAl/a,GAAQv9J,OAAOI,KAthC3B,aACI,OAAO,IAAIk3d,qBAAc,KAA2B65G,EAAkB,CAqhC1CyL,IAEpBJ,IACAj/a,GAAQv9J,OAAOI,KAthC3B,aACI,OAAO,IAAIk3d,qBAAc,KAA0C65G,EAAkB,CAqhCzD0L,IAExB,MAAMp8kB,GAAS6xU,GAAS9oQ,MAAM/oE,OAC9B,IAAIq8kB,GAAkB,EAClBP,GAA4B,GAAKA,GAA4B97kB,GAC7D88J,GAAQv9J,OAAOI,KAxhC3B,aACI,OAAO,IAAIk3d,qBAAc,KAAsC65G,EAAkB,CAuhCrD4L,IAEc,GAA7BR,KACLO,GAhCwB,GAgCiBr8kB,GAAS,IAEtD,MAAM6nY,GAAQ7nY,GAAS,EACjB44kB,GAAc97a,GAAQ87a,YACtB0B,GAAwBx9a,GAAQw9a,sBAChCiC,GAAkBjC,GAAsBryc,SAC9C6hZ,UAAU/khB,QAAQ,CAAC24e,GAAIhhf,MACnB,MAAM0zS,GAASisS,GAAkB,EAAK3/kB,IAAKmrY,GAAQ,EAAKw0M,GAAkB3/kB,GAAM0mT,GAAQ1mT,IAClF8/kB,GAAwBpsS,GAASmsS,GACvCz/a,GAAQ87a,YAAcA,GAAc0B,GAAsB7me,MAAQ+oe,GAClElC,GAAsBryc,SAAWu0c,GACjChglB,KAAKo+kB,kBAAkBl9F,GAAI5gV,IAC3B4gV,GAAGttM,OAASA,GACZ4+C,GAAIxyQ,OAAO78E,KAAK+9e,MAEb1uJ,GAEXunP,eAAe1kQ,GAAU/0K,IACrB,MAAO,CACH14J,KAAM,EACNm6Q,UAAWg6T,GAAa/7kB,KAAMg8kB,GAAwB3mQ,GAAStzD,WAAYzhH,IAC3E6hH,QAASk7T,GAA0BhoQ,GAASlzD,UAGpD63T,kBAAkB3kQ,GAAU/0K,IACxBA,UAAQg8a,WACD,CACH10kB,KAAM,EACNu6Q,QAASk7T,GAA0BhoQ,GAASlzD,UAGpD83T,gBAAgB5kQ,GAAU/0K,IACtB,MAAO,CACH14J,KAAM,GACNm6Q,UAAW/hR,KAAK+5kB,eAAe1kQ,GAAStzD,UAAWzhH,IACnD6hH,QAASk7T,GAA0BhoQ,GAASlzD,UAGpD+3T,WAAW7kQ,GAAU/0K,IACjB,MAAM2/a,GAAiB3/a,GAAQ47a,qBACzB/5T,GAAWkzD,GAASlzD,SAAW,GACrC7hH,GAAQ+7a,aACR/7a,GAAQtyI,aAAeqnT,GACvB,MAAO28E,GAAUkuL,IAiCzB,YAA2BluL,IACvB,MAAMmuL,KAAenuL,GAAS7oY,MAAM,WAAWnmB,KAAKy8P,IAASA,IAAS+7U,IACtE,OAAI2E,KACAnuL,GAAWA,GAAS91X,QAAQu/iB,GAAkB,KAIlDzpL,GAAWA,GAAS91X,QAAQ,OAAQs7iB,IAC/Bt7iB,QAAQ,QAASztB,IAAS+okB,GAAsB,IAAM/okB,GAAMgpE,OAAO,IACnEv7C,QAAQ,cAAew7iB,IACrB,CAAC1lL,GAAUmuL,IA3CkBC,CAAkB/qQ,GAAS28E,UAC3D1xP,GAAQ47a,qBACJ+D,GAAez8kB,OAAUy8kB,GAAiB,IAAMjuL,GAAYA,GAChEquL,GAAgB//a,GAAQ67a,gBAAiB77a,GAAQ47a,qBAAsB,IACvE,MAAMn6T,GAAYg6T,GAAa/7kB,KAAMg8kB,GAAwB3mQ,GAAStzD,WAAYzhH,IAClFA,UAAQtyI,aAAe,KACvBsyI,GAAQ47a,qBAAuB+D,GACxB,CACHr4kB,KAAM,GACNoqZ,YACA3mB,MAAOlpH,GAAQkpH,OAAS,EACxBwgG,WAAY1pN,GAAQ0pN,SACpBq0G,eACAn+T,aACAu+T,iBAAkBjrQ,GAAS28E,SAC3B7vI,QAASk7T,GAA0BhoQ,GAASlzD,UAGpDg4T,aAAa9kQ,GAAU/0K,IACdA,GAAQtyI,cACTsyI,GAAQv9J,OAAOI,KAvlC3B,aACI,OAAO,IAAIk3d,qBAAc,KAA4B65G,EAAkB,CAslC3CqM,IAExB,MAAM3I,GAA+B,SAArBviQ,GAASuiQ,QACrB,CAAEnsc,SAAU,EAAGx0B,MAAO,EAAG8/d,OAAQ,QACjC2G,EAAcroQ,GAASuiQ,QAASt3a,GAAQv9J,QAAQ,GACpD,MAAO,CACH6E,KAAM,GACNm6Q,UAAWg6T,GAAa/7kB,KAAMg8kB,GAAwB3mQ,GAAStzD,WAAYzhH,IAC3Es3a,WACAz1T,QAAS,OAmBrB,SACItiR,YAAYkD,IACR/C,KAAK+C,OAASA,GACd/C,KAAKq8kB,WAAa,EAClBr8kB,KAAKs8kB,SAAW,EAChBt8kB,KAAKwglB,kBAAoB,KACzBxglB,KAAKguB,aAAe,KACpBhuB,KAAKk8kB,qBAAuB,KAC5Bl8kB,KAAK89kB,sBAAwB,KAC7B99kB,KAAKo8kB,YAAc,EACnBp8kB,KAAKm8kB,gBAAkB,GACvBn8kB,KAAKmiR,QAAU,KACfniR,KAAKi8kB,8BAAgC,IAAIx2X,KAuBjD,YAAkBzhM,IACd,OAAQpO,MAAMukD,QAAQn2C,KAA0B,iBAATA,EAAS,CAqBpD,YAAmCm+P,IAC/B,OAAIA,IACAA,GAAUm2T,EAAQn2T,KACN+5L,SACR/5L,GAAQ+5L,OAhEpB,YAAyBxwT,IACrB,OAAOA,GAAM4sb,EAAQ5sb,IAAO,KA+DA+0b,CAAgBt+T,GAAQ+5L,SAIhD/5L,GAAU,GAEPA,GAEX,YAAuB12I,GAAUx0B,GAAO8/d,IACpC,MAAO,CAAEtrc,YAAUx0B,SAAO8/d,WAG9B,YAAmCn3e,GAAS0tb,GAAWozD,GAAeC,GAAgBl1c,GAAUx0B,GAAO8/d,GAAS,KAAM6J,IAAc,GAChI,MAAO,CACHh5kB,KAAM,EACNg4F,WACA0tb,aACAozD,iBACAC,kBACAl1c,YACAx0B,SACAiib,UAAWztZ,GAAWx0B,GACtB8/d,UACA6J,gBAIR,SACI/glB,cACIG,KAAK6glB,KAAO,IAAIlzO,IAEpB9sW,IAAI++F,IACA,OAAO5/F,KAAK6glB,KAAKhglB,IAAI++F,KAAY,GAErC+0N,OAAO/0N,GAASkhf,IACZ,IAAIC,GAAuB/glB,KAAK6glB,KAAKhglB,IAAI++F,IACpCmhf,IACD/glB,KAAK6glB,KAAKvhV,IAAI1/J,GAASmhf,GAAuB,IAElDA,GAAqB59kB,QAAQ29kB,IAEjCh+N,IAAIljR,IACA,OAAO5/F,KAAK6glB,KAAK/9N,IAAIljR,IAEzBnP,QACIzwF,KAAK6glB,KAAKpwf;;;;;;;SAWlB,MAEMuwf,GAAoB,IAAI/kjB,OADV,SAC8B,KAE5CgljB,GAAoB,IAAIhljB,OADV,SAC8B,KAqFlD,YAAiCq4iB,GAAQ1iK,GAAap/E,GAAK0uP,GAAgBC,GAAgBC,GAAiB,GAAIC,GAAc,GAAIl/T,GAASm/T,GAAiBv+kB,GAAS,IACjK,OAAO,IAAIw+kB,IAAkCC,eAAelN,GAAQ1iK,GAAap/E,GAAK0uP,GAAgBC,GAAgBC,GAAgBC,GAAal/T,GAASm/T,GAAiBv+kB,IAEjL,SACIy+kB,eAAelN,GAAQ1iK,GAAap/E,GAAK0uP,GAAgBC,GAAgBC,GAAgBC,GAAal/T,GAASm/T,GAAiBv+kB,GAAS,IACrIu+kB,GAAkBA,IAAmB,IAAIG,GACzC,MAAMnhb,GAAU,IAAIohb,GAAyBpN,GAAQ1iK,GAAa0vK,GAAiBJ,GAAgBC,GAAgBp+kB,GAAQ,IAC3Hu9J,GAAQ6hH,QAAUA,GAClB7hH,GAAQqhb,gBAAgBC,UAAU,CAACR,IAAiB,KAAM9gb,GAAQv9J,OAAQo/Q,IAC1E45T,GAAa/7kB,KAAMwyV,GAAKlyL,IAExB,MAAMuhb,GAAYvhb,GAAQuhb,UAAUn7kB,OAAOo7kB,IAAYA,GAASC,qBAChE,GAAIx4jB,OAAO+hB,KAAK+1iB,IAAa79kB,OAAQ,CAKjC,IAAIw+kB,GACJ,QAAS9hlB,GAAI2hlB,GAAUr+kB,OAAS,EAAGtD,IAAK,EAAGA,KAAK,CAC5C,MAAM4hlB,GAAWD,GAAU3hlB,IAC3B,GAAI4hlB,GAASlif,UAAYgyU,GAAa,CAClCowK,GAAmBF,GACnB,OAGJE,KAAqBA,GAAiBC,2BACtCD,GAAiBJ,UAAU,CAACP,IAAc,KAAM/gb,GAAQv9J,OAAQo/Q,IAGxE,OAAO0/T,GAAUr+kB,OAASq+kB,GAAU5ujB,IAAI6ujB,IAAYA,GAASN,kBACzD,CAACU,GAA0BtwK,GAAa,GAAI,GAAI,GAAI,EAAG,EAAG,IAAI,IAEtE2nK,aAAa/mP,GAAKlyL,IAAS,CAG3Bk5a,WAAWhnP,GAAKlyL,IAAS,CAGzBm5a,gBAAgBjnP,GAAKlyL,IAAS,CAG9B05a,kBAAkBxnP,GAAKlyL,IACnB,MAAM6hb,GAAsB7hb,GAAQghb,gBAAgBzglB,IAAIy/J,GAAQ1gE,SAChE,GAAIuif,GAAqB,CACrB,MAAMC,GAAe9hb,GAAQ+hb,iBAAiB7vP,GAAIrwE,SAC5Cw8T,GAAYr+a,GAAQqhb,gBAAgBvF,YACpCsC,GAAU1+kB,KAAKsilB,sBAAsBH,GAAqBC,GAAcA,GAAajgU,SACvFw8T,IAAaD,IAGbp+a,GAAQiib,yBAAyB7D,IAGzCp+a,GAAQkib,aAAehwP,GAE3BynP,gBAAgBznP,GAAKlyL,IACjB,MAAM8hb,GAAe9hb,GAAQ+hb,iBAAiB7vP,GAAIrwE,SAClDigU,GAAaG,2BACbvilB,KAAK+5kB,eAAevnP,GAAIzwE,UAAWqgU,IACnC9hb,GAAQiib,yBAAyBH,GAAaT,gBAAgBvF,aAC9D97a,GAAQkib,aAAehwP,GAE3B8vP,sBAAsBxB,GAAcxgb,GAAS6hH,IAEzC,IAAIm7T,GADch9a,GAAQqhb,gBAAgBvF,YAI1C,MAAM3wc,GAA+B,MAApB02I,GAAQ12I,SAAmBg3c,GAAmBtgU,GAAQ12I,UAAY,KAC7Ex0B,GAAyB,MAAjBkrK,GAAQlrK,MAAgBwre,GAAmBtgU,GAAQlrK,OAAS,KAC1E,OAAiB,IAAbw0B,IACAq1c,GAAav4kB,QAAQm6kB,KACjB,MAAMC,GAAqBrib,GAAQsib,4BAA4BF,GAAaj3c,GAAUx0B,IACtFqme,GACI71jB,KAAKqgB,IAAIw1iB,GAAcqF,GAAmBl3c,SAAWk3c,GAAmB1re,SAG7Eqme,GAEXvD,eAAevnP,GAAKlyL,IAChBA,GAAQuib,cAAcrwP,GAAIrwE,SAAS,GACnC45T,GAAa/7kB,KAAMwyV,GAAIzwE,UAAWzhH,IAClCA,GAAQkib,aAAehwP,GAE3BknP,cAAclnP,GAAKlyL,IACf,MAAMwib,GAAkBxib,GAAQwib,gBAChC,IAAIh5P,GAAMxpL,GACV,MAAM6hH,GAAUqwE,GAAIrwE,QACpB,GAAIA,KAAYA,GAAQ+5L,QAAU/5L,GAAQlrK,SACtC6yO,GAAMxpL,GAAQ+hb,iBAAiBlgU,IAC/B2nE,GAAIy4P,2BACiB,MAAjBpgU,GAAQlrK,OAAe,CACM,GAAzB6yO,GAAI04P,aAAa56kB,OACjBkiV,GAAI63P,gBAAgBoB,wBACpBj5P,GAAI04P,aAAeQ,IAEvB,MAAM/re,GAAQwre,GAAmBtgU,GAAQlrK,OACzC6yO,GAAIm5P,cAAchse,IAGtBu7O,GAAIjmR,MAAM/oE,SACVgvV,GAAIjmR,MAAMhkE,QAAQ3B,IAAKm1kB,GAAa/7kB,KAAM4G,GAAGkjV,KAE7CA,GAAI63P,gBAAgBuB,wBAIhBp5P,GAAIg5P,gBAAkBA,IACtBh5P,GAAIy4P,4BAGZjib,GAAQkib,aAAehwP,GAE3BmnP,WAAWnnP,GAAKlyL,IACZ,MAAM6ib,GAAiB,GACvB,IAAI7F,GAAeh9a,GAAQqhb,gBAAgBvF,YAC3C,MAAMnle,GAAQu7O,GAAIrwE,SAAWqwE,GAAIrwE,QAAQlrK,MAAQwre,GAAmBjwP,GAAIrwE,QAAQlrK,OAAS,EACzFu7O,GAAIjmR,MAAMhkE,QAAQ3B,KACd,MAAMw7kB,GAAe9hb,GAAQ+hb,iBAAiB7vP,GAAIrwE,SAC9ClrK,IACAmre,GAAaa,cAAchse,IAE/B8ke,GAAa/7kB,KAAM4G,GAAGw7kB,IACtB9E,GAAe71jB,KAAKqgB,IAAIw1iB,GAAc8E,GAAaT,gBAAgBvF,aACnE+G,GAAehglB,KAAKi/kB,GAAaT,mBAKrCwB,GAAe56kB,QAAQu5kB,IAAYxhb,GAAQqhb,gBAAgByB,6BAA6BtB,KACxFxhb,GAAQiib,yBAAyBjF,IACjCh9a,GAAQkib,aAAehwP,GAE3B6wP,aAAa7wP,GAAKlyL,IACd,GAAIkyL,GAAIorP,QAAS,CACb,MAAMD,GAAWnrP,GAAImrP,SAErB,OAAOD,EADap9a,GAAQ47S,OAASonI,GAAkB3F,GAAUr9a,GAAQ47S,OAAQ57S,GAAQv9J,QAAU46kB,GACjEr9a,GAAQv9J,QAG1C,MAAO,CAAE0oI,SAAU+mN,GAAI/mN,SAAUx0B,MAAOu7O,GAAIv7O,MAAO8/d,OAAQvkP,GAAIukP,QAGvE6C,aAAapnP,GAAKlyL,IACd,MAAMs3a,GAAUt3a,GAAQw9a,sBAAwB99kB,KAAKqjlB,aAAa7wP,GAAIolP,QAASt3a,IACzEwhb,GAAWxhb,GAAQqhb,gBACrB/J,GAAQ3ge,QACRqpD,GAAQijb,cAAc3L,GAAQ3ge,OAC9B6qe,GAASiB,yBAEb,MAAMhwjB,GAAQy/T,GAAIz/T,MACA,GAAdA,GAAMnrB,KACN5H,KAAK65kB,eAAe9mjB,GAAOutI,KAG3BA,GAAQijb,cAAc3L,GAAQnsc,UAC9BzrI,KAAK85kB,WAAW/mjB,GAAOutI,IACvBwhb,GAASoB,yBAEb5ib,GAAQw9a,sBAAwB,KAChCx9a,GAAQkib,aAAehwP,GAE3BsnP,WAAWtnP,GAAKlyL,IACZ,MAAMwhb,GAAWxhb,GAAQqhb,gBACnB/J,GAAUt3a,GAAQw9a,uBAGnBlG,IAAWkK,GAAS0B,4BAA4BhglB,QACjDs+kB,GAAS2B,eAEb,MAAM1M,GAAUa,IAAWA,GAAQb,QAAWvkP,GAAIukP,OAC9CvkP,GAAI0rP,YACJ4D,GAAS4B,eAAe3M,IAGxB+K,GAASF,UAAUpvP,GAAIxyQ,OAAQ+2f,GAAQz2a,GAAQv9J,OAAQu9J,GAAQ6hH,SAEnE7hH,GAAQkib,aAAehwP,GAE3BqnP,eAAernP,GAAKlyL,IAChB,MAAMw9a,GAAwBx9a,GAAQw9a,sBAChCa,GAAar+a,GAAQqhb,gBAAiBl2c,SACtCA,GAAWqyc,GAAsBryc,SAEjCk4c,GAAgBvB,GADOC,mBACMV,gBACnCgC,GAAc5M,OAAS+G,GAAsB/G,OAC7CvkP,GAAIxyQ,OAAOz3E,QAAQ+8Q,KACf,MAAMsuB,GAAStuB,GAAKsuB,QAAU,EAC9B+vS,GAAcC,YAAYhwS,GAASnoK,IACnCk4c,GAAc/B,UAAUt8T,GAAKtlM,OAAQslM,GAAKyxT,OAAQz2a,GAAQv9J,OAAQu9J,GAAQ6hH,SAC1EwhU,GAAcT,0BAIlB5ib,GAAQqhb,gBAAgByB,6BAA6BO,IAGrDrjb,GAAQiib,yBAAyB5D,GAAYlzc,IAC7C60B,GAAQkib,aAAehwP,GAE3B0nP,WAAW1nP,GAAKlyL,IAGZ,MAAMq+a,GAAYr+a,GAAQqhb,gBAAgBvF,YACpCj6T,GAAWqwE,GAAIrwE,SAAW,GAC1BlrK,GAAQkrK,GAAQlrK,MAAQwre,GAAmBtgU,GAAQlrK,OAAS,EAC9DA,KAC+B,IAA9BqpD,GAAQkib,aAAa56kB,MACJ,GAAb+2kB,IAAkBr+a,GAAQqhb,gBAAgB6B,4BAA4BhglB,UAC3E88J,GAAQqhb,gBAAgBoB,wBACxBzib,GAAQkib,aAAeQ,IAE3B,IAAI1F,GAAeqB,GACnB,MAAMkF,GAAOvjb,GAAQo2a,YAAYlkP,GAAIw/D,SAAUx/D,GAAI8tP,iBAAkB9tP,GAAI64C,MAAO74C,GAAI0tP,cAAa/9T,GAAQ0pN,SAAyBvrU,GAAQv9J,QAC1Iu9J,GAAQwjb,kBAAoBD,GAAKrglB,OACjC,IAAIuglB,GAAsB,KAC1BF,GAAKt7kB,QAAQ,CAACq3F,GAAS1/F,MACnBogK,GAAQ2pU,kBAAoB/pe,GAC5B,MAAMkilB,GAAe9hb,GAAQ+hb,iBAAiB7vP,GAAIrwE,QAASviL,IACvDqX,IACAmre,GAAaa,cAAchse,IAE3BrX,KAAY0gE,GAAQ1gE,UACpBmkf,GAAsB3B,GAAaT,iBAEvC5F,GAAa/7kB,KAAMwyV,GAAIzwE,UAAWqgU,IAIlCA,GAAaT,gBAAgBuB,wBAC7B,MAAMxE,GAAU0D,GAAaT,gBAAgBvF,YAC7CkB,GAAe71jB,KAAKqgB,IAAIw1iB,GAAcoB,MAE1Cp+a,GAAQ2pU,kBAAoB,EAC5B3pU,GAAQwjb,kBAAoB,EAC5Bxjb,GAAQiib,yBAAyBjF,IAC7ByG,KACAzjb,GAAQqhb,gBAAgByB,6BAA6BW,IACrDzjb,GAAQqhb,gBAAgBoB,yBAE5Bzib,GAAQkib,aAAehwP,GAE3B2nP,aAAa3nP,GAAKlyL,IACd,MAAM0jb,GAAgB1jb,GAAQ0jb,cACxBlxS,GAAKxyI,GAAQqhb,gBACb/J,GAAUplP,GAAIolP,QACdnsc,GAAWhkH,KAAK24E,IAAIw3e,GAAQnsc,UAC5Bw4c,GAAUx4c,IAAY60B,GAAQwjb,kBAAoB,GACxD,IAAI7se,GAAQw0B,GAAW60B,GAAQ2pU,kBAE/B,OADyB2tG,GAAQnsc,SAAW,EAAI,UAAYmsc,GAAQb,YAE3D,UACD9/d,GAAQgte,GAAUhte,GAClB,UACC,OACDA,GAAQ+se,GAAcE,mBAG9B,MAAMpC,GAAWxhb,GAAQqhb,gBACrB1qe,IACA6qe,GAASmB,cAAchse,IAE3B,MAAMkte,GAAerC,GAAS1F,YAC9BL,GAAa/7kB,KAAMwyV,GAAIzwE,UAAWzhH,IAClCA,GAAQkib,aAAehwP,GAKvBwxP,GAAcE,mBACTpxS,GAAGspS,YAAc+H,IAAiBrxS,GAAG6rS,UAAYqF,GAAcrC,gBAAgBhD,YAG5F,MAAMqE,GAA6B,GACnC,SACInjlB,YAAY+7kB,GAASh8e,GAAS0hf,GAAiB8C,GAAiBC,GAAiBthlB,GAAQ8+kB,GAAWyC,IAChGtklB,KAAK47kB,QAAUA,GACf57kB,KAAK4/F,QAAUA,GACf5/F,KAAKshlB,gBAAkBA,GACvBthlB,KAAKoklB,gBAAkBA,GACvBpklB,KAAKqklB,gBAAkBA,GACvBrklB,KAAK+C,OAASA,GACd/C,KAAK6hlB,UAAYA,GACjB7hlB,KAAKgklB,cAAgB,KACrBhklB,KAAK89kB,sBAAwB,KAC7B99kB,KAAKwilB,aAAeQ,GACpBhjlB,KAAK8ilB,gBAAkB,EACvB9ilB,KAAKmiR,QAAU,GACfniR,KAAKiqe,kBAAoB,EACzBjqe,KAAK8jlB,kBAAoB,EACzB9jlB,KAAKkklB,mBAAqB,EAC1BlklB,KAAK2hlB,gBAAkB2C,IAAmB,IAAIC,GAAgBvklB,KAAK47kB,QAASh8e,GAAS,GACrFiif,GAAU1+kB,KAAKnD,KAAK2hlB,iBAEpBzlI,aACA,OAAOl8c,KAAKmiR,QAAQ+5L,OAExB2mI,cAAc1gU,GAASqiU,IACnB,IAAKriU,GACD,OACJ,MAAMsiU,GAAatiU,GACnB,IAAIuiU,GAAkB1klB,KAAKmiR,QAEA,MAAvBsiU,GAAWh5c,WACXi5c,GAAgBj5c,SAAWg3c,GAAmBgC,GAAWh5c,WAErC,MAApBg5c,GAAWxte,QACXyte,GAAgBzte,MAAQwre,GAAmBgC,GAAWxte,QAE1D,MAAM0te,GAAYF,GAAWvoI,OAC7B,GAAIyoI,GAAW,CACX,IAAIC,GAAiBF,GAAgBxoI,OAChC0oI,KACDA,GAAiB5klB,KAAKmiR,QAAQ+5L,OAAS,IAE3C3yb,OAAO+hB,KAAKq5iB,IAAWp8kB,QAAQqiD,OACtB45hB,KAAiBI,GAAev3iB,eAAeud,OAChDg6hB,GAAeh6hB,IAAQ04hB,GAAkBqB,GAAU/5hB,IAAOg6hB,GAAgB5klB,KAAK+C,YAK/F8hlB,eACI,MAAM1iU,GAAU,GAChB,GAAIniR,KAAKmiR,QAAS,CACd,MAAM2iU,GAAY9klB,KAAKmiR,QAAQ+5L,OAC/B,GAAI4oI,GAAW,CACX,MAAM5oI,GAAS/5L,GAAQ+5L,OAAY,GACnC3yb,OAAO+hB,KAAKw5iB,IAAWv8kB,QAAQqiD,KAC3BsxZ,GAAOtxZ,IAAQk6hB,GAAUl6hB,OAIrC,OAAOu3N,GAEXkgU,iBAAiBlgU,GAAU,KAAMviL,GAASmlf,IACtC,MAAM96iB,GAAS21D,IAAW5/F,KAAK4/F,QACzB0gE,GAAU,IAAIohb,GAAyB1hlB,KAAK47kB,QAAS3xiB,GAAQjqC,KAAKshlB,gBAAiBthlB,KAAKoklB,gBAAiBpklB,KAAKqklB,gBAAiBrklB,KAAK+C,OAAQ/C,KAAK6hlB,UAAW7hlB,KAAK2hlB,gBAAgBqD,KAAK/6iB,GAAQ86iB,IAAW,IAC/Mzkb,UAAQkib,aAAexilB,KAAKwilB,aAC5Blib,GAAQw9a,sBAAwB99kB,KAAK89kB,sBACrCx9a,GAAQ6hH,QAAUniR,KAAK6klB,eACvBvkb,GAAQuib,cAAc1gU,IACtB7hH,GAAQ2pU,kBAAoBjqe,KAAKiqe,kBACjC3pU,GAAQwjb,kBAAoB9jlB,KAAK8jlB,kBACjCxjb,GAAQ0jb,cAAgBhklB,KACxBA,KAAK8ilB,kBACExib,GAEXiib,yBAAyBwC,IACrB,YAAKvC,aAAeQ,GACpBhjlB,KAAK2hlB,gBAAkB3hlB,KAAK2hlB,gBAAgBqD,KAAKhllB,KAAK4/F,QAASmlf,IAC/D/klB,KAAK6hlB,UAAU1+kB,KAAKnD,KAAK2hlB,iBAClB3hlB,KAAK2hlB,gBAEhBiB,4BAA4BF,GAAaj3c,GAAUx0B,IAC/C,MAAMgue,GAAiB,CACnBx5c,SAAsB,MAAZA,GAAmBA,GAAWi3c,GAAYj3c,SACpDx0B,MAAOj3G,KAAK2hlB,gBAAgBvF,aAAwB,MAATnle,GAAgBA,GAAQ,GAAKyre,GAAYzre,MACpF8/d,OAAQ,IAENmO,GAAU,IAAIC,GAAmBnllB,KAAK47kB,QAAS8G,GAAY9if,QAAS8if,GAAYp1D,UAAWo1D,GAAYhC,cAAegC,GAAY/B,eAAgBsE,GAAgBvC,GAAY0C,yBACpL,YAAKvD,UAAU1+kB,KAAK+hlB,IACbD,GAEX1B,cAAc7hN,IACV1hY,KAAK2hlB,gBAAgBiC,YAAY5jlB,KAAK2hlB,gBAAgBl2c,SAAWi2P,IAErEuhN,cAAchse,IAENA,GAAQ,GACRj3G,KAAK2hlB,gBAAgBsB,cAAchse,IAG3Cy/d,YAAY1kL,GAAUsuL,GAAkBj1M,GAAO60M,GAAar0G,GAAU9oe,IAClE,IAAIg9B,GAAU,GAId,GAHImgjB,IACAngjB,GAAQ58B,KAAKnD,KAAK4/F,SAElBoyT,GAASxuZ,OAAS,EAAG,CAErBwuZ,IADAA,GAAWA,GAAS91X,QAAQ8kjB,GAAmB,IAAMhhlB,KAAKoklB,kBACtClojB,QAAQ+kjB,GAAmB,IAAMjhlB,KAAKqklB,iBAC1D,MAAM5lf,GAAiB,GAAT4sS,GACd,IAAI/9L,GAAWttM,KAAK47kB,QAAQ1jjB,MAAMl4B,KAAK4/F,QAASoyT,GAAUvzT,IAC5C,IAAV4sS,KACA/9L,GAAW+9L,GAAQ,EAAI/9L,GAASrxL,MAAMqxL,GAAS9pM,OAAS6nY,GAAO/9L,GAAS9pM,QACpE8pM,GAASrxL,MAAM,EAAGovX,KAE1BtrW,GAAQ58B,QAAQmqM,IAEpB,OAAKu+R,IAA8B,GAAlB9rc,GAAQv8B,QACrBT,GAAOI,KAnsDnB,WAAsB6uZ,IAClB,OAAO,IAAIqoE,qBAAc,KAA0B65G,EACmBliL,CAisDlDqzL,IAETtljB,IAGf,SACIlgC,YAAY+7kB,GAASh8e,GAAS++e,GAAW2G,IACrCtllB,KAAK47kB,QAAUA,GACf57kB,KAAK4/F,QAAUA,GACf5/F,KAAK2+kB,UAAYA,GACjB3+kB,KAAKsllB,6BAA+BA,GACpCtllB,KAAKyrI,SAAW,EAChBzrI,KAAKullB,kBAAoB,GACzBvllB,KAAKwllB,iBAAmB,GACxBxllB,KAAKyllB,WAAa,IAAI93O,IACtB3tW,KAAK0llB,cAAgB,GACrB1llB,KAAK2llB,eAAiB,GACtB3llB,KAAK4llB,UAAY,GACjB5llB,KAAK6llB,0BAA4B,KAC5B7llB,KAAKsllB,+BACNtllB,KAAKsllB,6BAA+B,IAAI33O,KAE5C3tW,KAAK8llB,qBAAuBv8jB,OAAO4+D,OAAOnoF,KAAK4llB,UAAW,IAC1D5llB,KAAK+llB,sBAAwB/llB,KAAKsllB,6BAA6BzklB,IAAI++F,IAC9D5/F,KAAK+llB,wBACN/llB,KAAK+llB,sBAAwB/llB,KAAK8llB,qBAClC9llB,KAAKsllB,6BAA6BhmV,IAAI1/J,GAAS5/F,KAAK8llB,uBAExD9llB,KAAKgmlB,gBAETjE,oBACI,OAAQ/hlB,KAAKyllB,WAAW1/f,WACf,EACD,OAAO,OACN,EACD,OAAO/lF,KAAKwjlB,4BAA4BhglB,OAAS,UAEjD,OAAO,GAGnBgglB,4BACI,OAAOj6jB,OAAO+hB,KAAKtrC,KAAKwllB,kBAExBpJ,kBACA,OAAOp8kB,KAAK2+kB,UAAY3+kB,KAAKyrI,SAEjCw3c,cAAchse,IAKV,MAAMgve,GAA0C,GAAxBjmlB,KAAKyllB,WAAW1/f,MAAax8D,OAAO+hB,KAAKtrC,KAAK2llB,gBAAgBnilB,OAClFxD,KAAKyrI,UAAYw6c,IACjBjmlB,KAAK4jlB,YAAY5jlB,KAAKo8kB,YAAcnle,IAChCgve,IACAjmlB,KAAK+ilB,yBAIT/ilB,KAAK2+kB,WAAa1ne,GAG1B+te,KAAKplf,GAASw8e,IACV,YAAK8G,wBACE,IAAIqB,GAAgBvklB,KAAK47kB,QAASh8e,GAASw8e,IAAep8kB,KAAKo8kB,YAAap8kB,KAAKsllB,8BAE5FU,gBACQhmlB,KAAKwllB,mBACLxllB,KAAKullB,kBAAoBvllB,KAAKwllB,kBAElCxllB,KAAKwllB,iBAAmBxllB,KAAKyllB,WAAW5klB,IAAIb,KAAKyrI,UAC5CzrI,KAAKwllB,mBACNxllB,KAAKwllB,iBAAmBj8jB,OAAO4+D,OAAOnoF,KAAK4llB,UAAW,IACtD5llB,KAAKyllB,WAAWnmV,IAAIt/P,KAAKyrI,SAAUzrI,KAAKwllB,mBAGhD/B,eACIzjlB,KAAKyrI,UA3iBqB,EA4iB1BzrI,KAAKgmlB,gBAETpC,YAAYliN,IACR1hY,KAAKkjlB,wBACLljlB,KAAKyrI,SAAWi2P,GAChB1hY,KAAKgmlB,gBAETE,aAAaroc,GAAM75H,IACfhkB,KAAK8llB,qBAAqBjoc,IAAQ75H,GAClChkB,KAAK+llB,sBAAsBloc,IAAQ75H,GACnChkB,KAAK0llB,cAAc7nc,IAAQ,CAAE6jP,KAAM1hY,KAAKo8kB,YAAap4jB,UAEzDi+jB,0BACI,OAAOjilB,KAAK6llB,4BAA8B7llB,KAAKwllB,iBAEnD9B,eAAe3M,IACPA,KACA/2kB,KAAKullB,kBAAkBxO,OAAYA,IAQvCxtjB,OAAO+hB,KAAKtrC,KAAK+llB,uBAAuBx9kB,QAAQs1I,KAC5C79I,KAAK4llB,UAAU/nc,IAAQ79I,KAAK+llB,sBAAsBloc,KAASq3b,KAC3Dl1kB,KAAKwllB,iBAAiB3nc,IAAQq3b,OAElCl1kB,KAAK6llB,0BAA4B7llB,KAAKwllB,iBAE1C5D,UAAU/jf,GAAOk5e,GAAQh0kB,GAAQo/Q,IACzB40T,KACA/2kB,KAAKullB,kBAAkBxO,OAAYA,IAEvC,MAAM76H,GAAU/5L,IAAWA,GAAQ+5L,QAAW,GACxCl8X,GAuJd,YAAuB6d,GAAOsof,IAC1B,MAAMnmgB,GAAS,GACf,IAAIomgB,GACJvof,UAAMt1F,QAAQk3P,KACI,MAAVA,IACA2mV,GAAgBA,IAAiB78jB,OAAO+hB,KAAK66iB,IAC7CC,GAAc79kB,QAAQs1I,KAClB79D,GAAO69D,IAAQq3b,QAInBmR,GAAW5mV,IAAO,EAAOz/K,MAG1BA,GArKYsmgB,CAAczof,GAAO79F,KAAK+llB,uBACzCx8jB,OAAO+hB,KAAK00C,IAAQz3E,QAAQs1I,KACxB,MAAM6vM,GAAM41P,GAAkBtjgB,GAAO69D,IAAOq+T,GAAQn5c,IACpD/C,KAAK2llB,eAAe9nc,IAAQ6vM,GACvB1tV,KAAK8llB,qBAAqBz4iB,eAAewwG,MAC1C79I,KAAK4llB,UAAU/nc,IAAQ79I,KAAK+llB,sBAAsB14iB,eAAewwG,IAC7D79I,KAAK+llB,sBAAsBloc,IAC3Bq3b,MAERl1kB,KAAKkmlB,aAAaroc,GAAM6vM,MAGhCw1P,wBACI,MAAMljgB,GAAShgF,KAAK2llB,eACd/iO,GAAQr5V,OAAO+hB,KAAK00C,IACN,GAAhB4iS,GAAMp/W,SAEVxD,KAAK2llB,eAAiB,GACtB/iO,GAAMr6W,QAAQs1I,KACV,MAAM6vM,GAAM1tQ,GAAO69D,IACnB79I,KAAKwllB,iBAAiB3nc,IAAQ6vM,KAElCnkU,OAAO+hB,KAAKtrC,KAAK8llB,sBAAsBv9kB,QAAQs1I,KACtC79I,KAAKwllB,iBAAiBn4iB,eAAewwG,MACtC79I,KAAKwllB,iBAAiB3nc,IAAQ79I,KAAK8llB,qBAAqBjoc,QAIpEklc,wBACIx5jB,OAAO+hB,KAAKtrC,KAAK8llB,sBAAsBv9kB,QAAQs1I,KAC3C,MAAM6vM,GAAM1tV,KAAK8llB,qBAAqBjoc,IACtC79I,KAAK2llB,eAAe9nc,IAAQ6vM,GAC5B1tV,KAAKkmlB,aAAaroc,GAAM6vM,MAGhC64P,mBACI,OAAOvmlB,KAAKyllB,WAAW5klB,IAAIb,KAAKyrI,UAEhC+8P,iBACA,MAAMA,GAAa,GACnB,QAAS3qP,MAAQ79I,KAAKwllB,iBAClBh9M,GAAWrlY,KAAK06I,IAEpB,OAAO2qP,GAEX46M,6BAA6BtB,IACzBv4jB,OAAO+hB,KAAKw2iB,GAAS4D,eAAen9kB,QAAQs1I,KACxC,MAAM2oc,GAAWxmlB,KAAK0llB,cAAc7nc,IAC9B4oc,GAAW3E,GAAS4D,cAAc7nc,MACnC2oc,IAAYC,GAAS/kN,KAAO8kN,GAAS9kN,OACtC1hY,KAAKkmlB,aAAaroc,GAAM4oc,GAASzikB,SAI7Cw9jB,iBACIxhlB,KAAKkjlB,wBACL,MAAMxC,GAAgB,IAAIj7X,IACpBk7X,GAAiB,IAAIl7X,IACrBkuE,GAAmC,IAAzB3zR,KAAKyllB,WAAW1/f,MAAgC,IAAlB/lF,KAAKyrI,SACnD,IAAIi7c,GAAiB,GACrB1mlB,KAAKyllB,WAAWl9kB,QAAQ,CAACo+kB,GAAUjlN,MAC/B,MAAMklN,GAAgBP,GAAWM,IAAU,GAC3Cp9jB,OAAO+hB,KAAKs7iB,IAAer+kB,QAAQs1I,KAC/B,MAAM75H,GAAQ4ikB,GAAc/oc,IACxB75H,IAASixjB,KACTyL,GAAc54b,IAAIjK,IAEb75H,IAASkxjB,MACdyL,GAAe74b,IAAIjK,MAGtB81I,KACDizT,GAAchzS,OAAY8tF,GAAO1hY,KAAKyrI,UAE1Ci7c,GAAevjlB,KAAKyjlB,MAExB,MAAMC,GAAWnG,GAAc36f,KAAOy9S,GAAgBk9M,GAAcruf,UAAY,GAC1Ey0f,GAAYnG,GAAe56f,KAAOy9S,GAAgBm9M,GAAetuf,UAAY,GAEnF,GAAIshM,GAAS,CACT,MAAMozT,GAAML,GAAe,GACrBM,GAAM1O,EAAQyO,IACpBA,GAAInzS,OAAY,EAChBozS,GAAIpzS,OAAY,EAChB8yS,GAAiB,CAACK,GAAKC,IAE3B,OAAO9E,GAA0BlilB,KAAK4/F,QAAS8mf,GAAgBG,GAAUC,GAAW9mlB,KAAKyrI,SAAUzrI,KAAK2+kB,UAAW3+kB,KAAK+2kB,QAAQ,IAGxI,iBAAiCwN,GAC7B1klB,YAAYy0kB,GAAQ10e,GAAS0tb,GAAWozD,GAAeC,GAAgB/I,GAASqP,IAA2B,GACvGt7jB,MAAM2ojB,GAAQ10e,GAASg4e,GAAQ3ge,OAC/Bj3G,KAAKsthB,UAAYA,GACjBtthB,KAAK0glB,cAAgBA,GACrB1glB,KAAK2glB,eAAiBA,GACtB3glB,KAAKinlB,yBAA2BA,GAChCjnlB,KAAK43kB,QAAU,CAAEnsc,SAAUmsc,GAAQnsc,SAAUx0B,MAAO2ge,GAAQ3ge,MAAO8/d,OAAQa,GAAQb,QAEvFgL,oBACI,OAAO/hlB,KAAKsthB,UAAU9phB,OAAS,EAEnCg+kB,iBACI,IAAIl0D,GAAYtthB,KAAKsthB,WACfr2a,SAAOw0B,YAAUsrc,WAAW/2kB,KAAK43kB,QACvC,GAAI53kB,KAAKinlB,0BAA4Bhwe,GAAO,CACxC,MAAMiwe,GAAe,GACfhuD,GAAYztZ,GAAWx0B,GACvBkwe,GAAclwe,GAAQiib,GAEtBkuD,GAAmBf,GAAW/4D,GAAU,IAAI,GAClD85D,GAAiBxzS,OAAY,EAC7BszS,GAAa/jlB,KAAKiklB,IAClB,MAAMC,GAAmBhB,GAAW/4D,GAAU,IAAI,GAClD+5D,GAAiBzzS,OAAY0zS,GAAYH,IACzCD,GAAa/jlB,KAAKkklB,IAgBlB,MAAMh8M,GAAQiiJ,GAAU9phB,OAAS,EACjC,QAAStD,GAAI,EAAGA,IAAKmrY,GAAOnrY,KAAK,CAC7B,IAAIghf,GAAKmlG,GAAW/4D,GAAUpthB,KAAI,GAClC,MACMqnlB,GAAiBtwe,GADLiqY,GAAGttM,OACsBnoK,GAC3Cy1W,GAAGttM,OAAY0zS,GAAYC,GAAiBruD,IAC5CguD,GAAa/jlB,KAAK+9e,IAGtBz1W,GAAWytZ,GACXjib,GAAQ,EACR8/d,GAAS,GACTzpD,GAAY45D,GAEhB,OAAOhF,GAA0BlilB,KAAK4/F,QAAS0tb,GAAWtthB,KAAK0glB,cAAe1glB,KAAK2glB,eAAgBl1c,GAAUx0B,GAAO8/d,IAAQ,IAGpI,YAAqBnjS,GAAQ4zS,GAAgB,GACzC,MAAMC,GAAOhgkB,KAAKojU,IAAI,GAAI28P,GAAgB,GAC1C,OAAO//jB,KAAKC,MAAMksR,GAAS6zS,IAAQA;;;;;;;;AA0DvC;;;;;;;;AAqBA,iBAA2CC,GACvC1S,sBAAsBj9J,GAAch1a,IAChC,OAAO41kB,GAAoB5gK,IAE/Bo9J,oBAAoBwS,GAAsBC,GAAoB5jkB,GAAOjhB,IACjE,IAAI+sU,GAAO,GACX,MAAM+3Q,GAAS7jkB,GAAMnd,WAAWuiB,OAChC,GAAI0+jB,GAAqBF,KAAiC,IAAV5jkB,IAAyB,MAAVA,GAC3D,GAAqB,iBAAVA,GACP8rT,GAAO,SAEN,CACD,MAAMi4Q,GAAoB/jkB,GAAMvV,MAAM,0BAClCs5kB,IAAoD,GAA/BA,GAAkB,GAAGvklB,QAC1CT,GAAOI,KA/kE3B,WAA6BwklB,GAAsB3jkB,IAC/C,OAAO,IAAIq2c,qBAAc,KAAmC65G,EAAgFlwjB,CA8kEhHgkkB,GAA0ChkkB,CAIlE,OAAO6jkB,GAAS/3Q,IAGxB,MAAMg4Q,GAEN,YAAwBx8iB,IACpB,MAAMrY,GAAM,GACZqY,UAAK/iC,QAAQ+tB,IAAOrD,GAAIqD,KAAO,GACxBrD,GALyBg1jB,CAAe,iUAC9C9+jB,MAAM,MAOX,YAAqCy2E,GAAS81e,GAAaz2C,GAAWhG,GAASivD,GAAqBC,GAAYC,GAAUvG,GAAWwG,GAAiB3H,GAAeC,GAAgBznD,GAAWn2hB,IAC5L,MAAO,CACH6E,KAAM,EACNg4F,WACA81e,eACAwS,uBACAjpD,aACAkpD,cACAlvD,WACAmvD,YACAvG,aACAwG,mBACA3H,iBACAC,kBACAznD,aACAn2hB,WAIR,MAAMullB,GAAe,GACrB,SACIzolB,YAAY0olB,GAAc/1P,GAAKg2P,IAC3BxolB,KAAKuolB,aAAeA,GACpBvolB,KAAKwyV,IAAMA,GACXxyV,KAAKwolB,aAAeA,GAExB/5kB,MAAMg6kB,GAAcC,GAAW9of,GAASs8W,IACpC,OA4CR,YAAmCysI,GAAUF,GAAcC,GAAW9of,GAASs8W,IAC3E,OAAOysI,GAASngd,KAAK1kG,IAAMA,GAAG2kjB,GAAcC,GAAW9of,GAASs8W,KA7CrD0sI,CAA0B5olB,KAAKwyV,IAAIi8D,SAAUg6L,GAAcC,GAAW9of,GAASs8W,IAE1F2sI,YAAYC,GAAW5sI,GAAQn5c,IAC3B,MAAMgmlB,GAAoB/olB,KAAKwolB,aAAa,KACtCQ,GAAchplB,KAAKwolB,aAAaM,IAChCG,GAAeF,GAAoBA,GAAkBF,YAAY3sI,GAAQn5c,IAAU,GACzF,OAAOimlB,GAAcA,GAAYH,YAAY3sI,GAAQn5c,IAAUkmlB,GAEnEhkH,MAAMqvG,GAAQ10e,GAAS6of,GAAcC,GAAWxH,GAAgBC,GAAgB+H,GAAgBC,GAAa7H,GAAiB8H,IAC1H,MAAMrmlB,GAAS,GACTsmlB,GAA4BrplB,KAAKwyV,IAAIrwE,SAAWniR,KAAKwyV,IAAIrwE,QAAQ+5L,QAAUosI,GAC3EgB,GAAyBJ,IAAkBA,GAAehtI,QAAUosI,GACpEiB,GAAqBvplB,KAAK6olB,YAAYJ,GAAca,GAAwBvmlB,IAC5EymlB,GAAsBL,IAAeA,GAAYjtI,QAAUosI,GAC3DmB,GAAkBzplB,KAAK6olB,YAAYH,GAAWc,GAAqBzmlB,IACnEsllB,GAAkB,IAAI5iY,IACtBikY,GAAc,IAAI/7O,IAClBg8O,GAAe,IAAIh8O,IACnBi8O,GAA0B,SAAdlB,GACZmB,GAAmB,CAAE3tI,OAAQ3yb,OAAOC,OAAOD,OAAOC,OAAO,GAAI6/jB,IAA4BG,KACzF3H,GAAYuH,GACd,GACAU,GAAwBxV,GAAQ10e,GAAS5/F,KAAKwyV,IAAIzwE,UAAWm/T,GAAgBC,GAAgBoI,GAAoBE,GAAiBI,GAAkBvI,GAAiBv+kB,IACzK,IAAIm2hB,GAAY,EAIhB,GAHA2oD,GAAUt5kB,QAAQuqS,KACdomP,GAAYzxgB,KAAKqgB,IAAIgrQ,GAAGrnK,SAAWqnK,GAAG77L,MAAOiib,MAE7Cn2hB,GAAOS,OACP,OAAOumlB,GAA4Bnqf,GAAS5/F,KAAKuolB,aAAcE,GAAcC,GAAWkB,GAAWL,GAAoBE,GAAiB,GAAI,GAAIC,GAAaC,GAAczwD,GAAWn2hB,IAE1L8+kB,GAAUt5kB,QAAQuqS,KACd,MAAMmzB,GAAMnzB,GAAGlzM,QACTinf,GAAWxG,GAAgBqJ,GAAazjR,GAAK,IACnDnzB,GAAG4tS,cAAcn4kB,QAAQs1I,IAAQgpc,GAAShpc,KAAQ,GAClD,MAAMipc,GAAYzG,GAAgBsJ,GAAc1jR,GAAK,IACrDnzB,GAAG6tS,eAAep4kB,QAAQs1I,IAAQipc,GAAUjpc,KAAQ,GAChDooL,KAAQrmO,IACRyof,GAAgBvgc,IAAIm+K,MAG5B,MAAM+jR,GAAsBxmN,GAAgB6kN,GAAgBh2f,UAC5D,OAAO03f,GAA4Bnqf,GAAS5/F,KAAKuolB,aAAcE,GAAcC,GAAWkB,GAAWL,GAAoBE,GAAiB5H,GAAWmI,GAAqBN,GAAaC,GAAczwD,KAM3M,SACIr5hB,YAAYmgF,GAAQiqgB,GAAe1V,IAC/Bv0kB,KAAKggF,OAASA,GACdhgF,KAAKiqlB,cAAgBA,GACrBjqlB,KAAKu0kB,WAAaA,GAEtBsU,YAAY3sI,GAAQn5c,IAChB,MAAMs+kB,GAAc,GACd6I,GAAiB5R,EAAQt4kB,KAAKiqlB,eACpC1gkB,cAAO+hB,KAAK4wa,IAAQ3zc,QAAQ+tB,KACxB,MAAMtS,GAAQk4b,GAAO5lb,IACR,MAATtS,KACAkmkB,GAAe5zjB,IAAOtS,MAG9BhkB,KAAKggF,OAAOA,OAAOz3E,QAAQyb,KACvB,GAAqB,iBAAVA,GAAoB,CAC3B,MAAMmmkB,GAAWnmkB,GACjBuF,OAAO+hB,KAAK6+iB,IAAU5hlB,QAAQs1I,KAC1B,IAAI6vM,GAAMy8P,GAAStsc,IACf6vM,GAAIlqV,OAAS,IACbkqV,GAAM41P,GAAkB51P,GAAKw8P,GAAgBnnlB,KAEjD,MAAMgykB,GAAiB/0kB,KAAKu0kB,WAAWS,sBAAsBn3b,GAAM96I,IACnE2qV,GAAM1tV,KAAKu0kB,WAAWY,oBAAoBt3b,GAAMk3b,GAAgBrnP,GAAK3qV,IACrEs+kB,GAAYtM,IAAkBrnP,QAInC2zP,IAOf,SACIxhlB,YAAY+qD,GAAM4nS,GAAK43P,IACnBpqlB,KAAK4qD,KAAOA,GACZ5qD,KAAKwyV,IAAMA,GACXxyV,KAAKoqlB,YAAcA,GACnBpqlB,KAAKqqlB,oBAAsB,GAC3BrqlB,KAAKgxc,OAAS,GACdx+G,GAAIw+G,OAAOzoc,QAAQiqV,KACf,MAAMy3P,GAAiBz3P,GAAIrwE,SAAWqwE,GAAIrwE,QAAQ+5L,QAAW,GAC7Dl8c,KAAKgxc,OAAOx+G,GAAI5nS,MAAQ,IAAI0/hB,GAAqB93P,GAAIz/T,MAAOk3jB,GAAeG,MAE/EG,GAAkBvqlB,KAAKgxc,OAAQ,OAAQ,KACvCu5I,GAAkBvqlB,KAAKgxc,OAAQ,QAAS,KACxCx+G,GAAI+pP,YAAYh0kB,QAAQiqV,KACpBxyV,KAAKqqlB,oBAAoBlnlB,KAAK,IAAIqnlB,GAA2B5/hB,GAAM4nS,GAAKxyV,KAAKgxc,WAEjFhxc,KAAKyqlB,mBAab,YAAkC/U,GAAa1kI,GAAQujI,IAWnD,OAAO,IAAIiW,GAA2B9U,GARnB,CACf9tkB,KAAM,EACNm6Q,UAHc,CAAEn6Q,KAAM,EAAkB2kE,MAAO,GAAI41M,QAAS,MAI5DssI,SALa,CAAC,CAACwwI,GAAWhG,MAAY,GAMtC92Q,QAAS,KACTk6T,WAAY,EACZC,SAAU,GAEiDtrI,IAxBjC05I,CAAyB9/hB,GAAM5qD,KAAKgxc,OAAQhxc,KAAKoqlB,aAE3EO,sBACA,OAAO3qlB,KAAKwyV,IAAI6pP,WAAa,EAEjCuO,gBAAgBnC,GAAcC,GAAW9of,GAASs8W,IAE9C,OAAO1zF,KADY6hO,oBAAoBrnlB,KAAKusU,IAAKA,GAAE9gU,MAAMg6kB,GAAcC,GAAW9of,GAASs8W,MAC3E,KAEpB2uI,YAAYpC,GAAcvsI,GAAQn5c,IAC9B,OAAO/C,KAAKyqlB,mBAAmB5B,YAAYJ,GAAcvsI,GAAQn5c,KAgBzE,YAA2B2oJ,GAAKo/b,GAAMC,IAC9Br/b,GAAIr+G,eAAey9iB,IACdp/b,GAAIr+G,eAAe09iB,MACpBr/b,GAAIq/b,IAAQr/b,GAAIo/b,KAGfp/b,GAAIr+G,eAAe09iB,MACxBr/b,GAAIo/b,IAAQp/b,GAAIq/b;;;;;;;SAWxB,MAAMC,GAAwB,IAAIvJ,GAClC,SACI5hlB,YAAYorlB,GAAUrP,GAASwO,IAC3BpqlB,KAAKirlB,SAAWA,GAChBjrlB,KAAK47kB,QAAUA,GACf57kB,KAAKoqlB,YAAcA,GACnBpqlB,KAAKkrlB,YAAc,GACnBlrlB,KAAKmrlB,aAAe,GACpBnrlB,KAAKm0kB,QAAU,GAEnB5iS,SAASlnO,GAAIgrQ,IACT,MAAMtyU,GAAS,GACT24kB,GAAW,GACXlpP,GAAM44P,GAAkBprlB,KAAK47kB,QAASvmQ,GAAUtyU,GAAQ24kB,IAC9D,GAAI34kB,GAAOS,OACP,MAvtEZ,YAAwBT,IACpB,OAAO,IAAIs3d,qBAAc,KAAgC65G,EAC6C,CAqtExFmX,GAGF3P,GAASl4kB,OAGbxD,KAAKkrlB,YAAY7ghB,IAAMmoR,GAG/B84P,aAAaprlB,GAAGs0kB,GAAWC,IACvB,MAAM70e,GAAU1/F,GAAE0/F,QACZ0tb,GAAYi+D,GAAmBvrlB,KAAK47kB,QAAS57kB,KAAKoqlB,YAAaxqf,EAAS1/F,GAAEothB,UAAWknD,GAAWC,IACtG,OAAOz0kB,KAAK47kB,QAAQx8T,QAAQx/K,GAAS0tb,GAAWpthB,GAAEurI,SAAUvrI,GAAE+2G,MAAO/2G,GAAE62kB,OAAQ,IAAI,GAEvF5uf,OAAO9d,GAAIu1B,GAASuiL,GAAU,IAC1B,MAAMp/Q,GAAS,GACTyvV,GAAMxyV,KAAKkrlB,YAAY7ghB,IAC7B,IAAIy2gB,GACJ,MAAM0K,GAAgB,IAAI79O,IAY1B,GAXA9vJ,IACIijY,GAAegJ,GAAwB9plB,KAAK47kB,QAASh8e,GAAS4yP,GAAK6kP,GAAiBC,GAAiB,GAAI,GAAIn1T,GAAS6oU,GAAuBjolB,IAC7I+9kB,GAAav4kB,QAAQkjlB,KACjB,MAAMzrgB,GAASqggB,GAAgBmL,GAAeC,GAAK7rf,QAAS,IAC5D6rf,GAAK9K,eAAep4kB,QAAQs1I,IAAQ79D,GAAO69D,IAAQ,UAIvD96I,GAAOI,KA9uEnB,cACI,OAAO,IAAIk3d,qBAAc,KAA2C65G,EAAiB,CA6uEjEwX,IACZ5K,GAAe,IAEf/9kB,GAAOS,OACP,MA/uEZ,YAA+BT,IAC3B,OAAO,IAAIs3d,qBAAc,KAAoC65G,EACyC,CA6uExFyX,GAEVH,GAAcjjlB,QAAQ,CAACy3E,GAAQ4f,MAC3Br2E,OAAO+hB,KAAK00C,IAAQz3E,QAAQs1I,KACxB79D,GAAO69D,IAAQ79I,KAAK47kB,QAAQ9E,aAAal3e,GAASi+C,GAAMq3b,UAGhE,MAIMI,GAASsW,GAJC9K,GAAa7tjB,IAAI/yB,KAC7B,MAAM8/E,GAASwrgB,GAAc3qlB,IAAIX,GAAE0/F,SACnC,OAAO5/F,KAAKsrlB,aAAaprlB,GAAG,GAAI8/E,OAGpC,YAAKmrgB,aAAa9ghB,IAAMirgB,GACxBA,GAAOniL,UAAU,IAAMnzZ,KAAK85Q,QAAQzvM,KACpCrqE,KAAKm0kB,QAAQhxkB,KAAKmykB,IACXA,GAEXx7T,QAAQzvM,IACJ,MAAMirgB,GAASt1kB,KAAK6rlB,WAAWxhhB,IAC/BirgB,GAAOx7T,iBACA95Q,KAAKmrlB,aAAa9ghB,IACzB,MAAM13B,GAAQ3yC,KAAKm0kB,QAAQ/ikB,QAAQkkkB,IAC/B3iiB,IAAS,GACT3yC,KAAKm0kB,QAAQ3mjB,OAAOmlB,GAAO,GAGnCk5iB,WAAWxhhB,IACP,MAAMirgB,GAASt1kB,KAAKmrlB,aAAa9ghB,IACjC,IAAKirgB,GACD,MAxwEZ,YAAuBjrgB,IACnB,OAAO,IAAIgwZ,qBAAc,KAA2B65G,EAAqE7pgB,CAuwE3GyhhB,GAEV,OAAOxW,GAEX5qK,OAAOrgW,GAAIu1B,GAAS49V,GAAW11L,IAE3B,MAAMikV,GAAYtW,GAAmB71e,GAAS,GAAI,GAAI,IACtDosf,UAAehslB,KAAK6rlB,WAAWxhhB,IAAKmzX,GAAWuuJ,GAAWjkV,IACnD,MAAM,CAEjB6tU,QAAQtrgB,GAAIu1B,GAAS+1e,GAASj2U,IAC1B,GAAe,YAAXi2U,GAEA,YADA31kB,KAAKuxS,SAASlnO,GAAIq1L,GAAK,IAG3B,GAAe,UAAXi2U,GAAqB,CACrB,MAAMxzT,GAAWziB,GAAK,IAAM,GAE5B,YADA1/P,KAAKmoF,OAAO9d,GAAIu1B,GAASuiL,GACzB,CAEJ,MAAMmzT,GAASt1kB,KAAK6rlB,WAAWxhhB,IAC/B,OAAQsrgB,QACC,OACDL,GAAOt9R,OACP,UACC,QACDs9R,GAAO/hL,QACP,UACC,QACD+hL,GAAOv1c,QACP,UACC,UACDu1c,GAAO9hL,UACP,UACC,SACD8hL,GAAO7hL,SACP,UACC,OACD6hL,GAAOt1X,OACP,UACC,cACDs1X,GAAO5hL,YAAYvuX,WAAWu6N,GAAK,KACnC,UACC,UACD1/P,KAAK85Q,QAAQzvM,IACb;;;;;;;SAYhB,MAAM4hhB,GAAmB,oBAEnBC,GAAqB,sBAIrBC,GAAqB,GACrBC,GAAqB,CACvBC,YAAa,GACbC,eAAe,EACfC,YAAY,EACZC,cAAc,EACdC,sBAAsB,GAEpBC,GAA6B,CAC/BL,YAAa,GACbE,YAAY,EACZD,eAAe,EACfE,cAAc,EACdC,sBAAsB,GAEpBE,GAAe,eACrB,SACI9slB,YAAYg+F,GAAOwuf,GAAc,IAC7BrslB,KAAKqslB,YAAcA,GACnB,MAAMO,GAAQ/uf,IAASA,GAAMxwD,eAAe,SACtCrpB,GAAQ4okB,GAAQ/uf,GAAM75E,MAAW65E,GAEvC,GADA79F,KAAKgkB,MAk2Cb,YAA+BA,IAI3B,OAAgB,MAATA,GAAgBA,GAAQ,KAt2Cd6okB,CAAsB7okB,IAC/B4okB,GAAO,CACP,MAAMzqU,GAAUm2T,EAAQz6e,WACjBskL,GAAQn+P,MACfhkB,KAAKmiR,QAAUA,QAGfniR,KAAKmiR,QAAU,GAEdniR,KAAKmiR,QAAQ+5L,SACdl8c,KAAKmiR,QAAQ+5L,OAAS,IAG1BA,aACA,OAAOl8c,KAAKmiR,QAAQ+5L,OAExB4wI,cAAc3qU,IACV,MAAMwiU,GAAYxiU,GAAQ+5L,OAC1B,GAAIyoI,GAAW,CACX,MAAMG,GAAY9klB,KAAKmiR,QAAQ+5L,OAC/B3yb,OAAO+hB,KAAKq5iB,IAAWp8kB,QAAQs1I,KACJ,MAAnBinc,GAAUjnc,MACVinc,GAAUjnc,IAAQ8mc,GAAU9mc,SAMhD,MAAMkvc,GAAa,OACbC,GAAsB,IAAIC,GAAWF,IAC3C,SACIltlB,YAAYwqE,GAAIkqV,GAAa24L,IACzBltlB,KAAKqqE,GAAKA,GACVrqE,KAAKu0Z,YAAcA,GACnBv0Z,KAAKktlB,QAAUA,GACfltlB,KAAKm0kB,QAAU,GACfn0kB,KAAKmtlB,UAAY,GACjBntlB,KAAKotlB,OAAS,GACdptlB,KAAKqtlB,kBAAoB,IAAI1/O,IAC7B3tW,KAAKstlB,eAAiB,UAAYjjhB,GAClC+qZ,GAAS7gE,GAAav0Z,KAAKstlB,gBAE/B5iL,OAAO9qU,GAASh1C,GAAM2iiB,GAAOzlV,IACzB,IAAK9nQ,KAAKmtlB,UAAU9/iB,eAAeud,IAC/B,MAr4EZ,YAAwB2iiB,GAAO3iiB,IAC3B,OAAO,IAAIyva,qBAAc,KAA4B65G,EAC4CtphB,CAm4EnF4iiB,GAEV,GAAa,MAATD,IAAiC,GAAhBA,GAAM/plB,OACvB,MAp4EZ,YAAsBonD,IAClB,OAAO,IAAIyva,qBAAc,KAA0B65G,EACDtphB,CAk4EpC6iiB,GAEV,IA0zCR,YAA6BjwJ,IACzB,MAAoB,SAAbA,IAAqC,QAAbA,EAAa,CA3zCnCkwJ,CAAoBH,IACrB,MAn4EZ,YAAiCA,GAAO3iiB,IACpC,OAAO,IAAIyva,qBAAc,KAAsC65G,EACmBtphB,CAi4EpE+iiB,GAEV,MAAMtjG,GAAYg2F,GAAgBrglB,KAAKqtlB,kBAAmBztf,GAAS,IAC7Dl9F,GAAO,CAAEkoD,QAAM2iiB,SAAOzlV,aAC5BuiP,GAAUlnf,KAAKT,IACf,MAAMkrlB,GAAqBvN,GAAgBrglB,KAAKktlB,QAAQW,gBAAiBjuf,GAAS,IAClF,OAAKguf,GAAmBvgjB,eAAeud,MACnCwqa,GAASx1X,GAAS23e,IAClBniH,GAASx1X,GAAS23e,GAAuB,IAAM3shB,IAC/CgjiB,GAAmBhjiB,IAAQoiiB,IAExB,KAIHhtlB,KAAKktlB,QAAQY,WAAW,KACpB,MAAMn7iB,GAAQ03c,GAAUj5e,QAAQ1O,IAC5BiwC,IAAS,GACT03c,GAAU78d,OAAOmlB,GAAO,GAEvB3yC,KAAKmtlB,UAAUviiB,YACTgjiB,GAAmBhjiB,OAK1C2mP,SAAS3mP,GAAM4nS,IACX,OAAIxyV,KAAKmtlB,UAAUviiB,MAKf5qD,KAAKmtlB,UAAUviiB,IAAQ4nS,IAChB,GAGfu7P,YAAYnjiB,IACR,MAAMy/B,GAAUrqF,KAAKmtlB,UAAUviiB,IAC/B,IAAKy/B,GACD,MAt6EZ,YAA6Bz/B,IACzB,OAAO,IAAIyva,qBAAc,KAAiC65G,EAAoDtphB,CAq6EhGojiB,GAEV,OAAO3jgB,GAEXA,QAAQuV,GAAS81e,GAAa1xjB,GAAOiqkB,IAAoB,GACrD,MAAM5jgB,GAAUrqF,KAAK+tlB,YAAYrY,IAC3BJ,GAAS,IAAI4Y,GAA0BlulB,KAAKqqE,GAAIqrgB,GAAa91e,IACnE,IAAIguf,GAAqB5tlB,KAAKktlB,QAAQW,gBAAgBhtlB,IAAI++F,IACrDguf,KACDx4H,GAASx1X,GAAS23e,IAClBniH,GAASx1X,GAAS23e,GAAuB,IAAM7B,IAC/C11kB,KAAKktlB,QAAQW,gBAAgBvuV,IAAI1/J,GAASguf,GAAqB,KAEnE,IAAI3uD,GAAY2uD,GAAmBlY,IACnC,MAAMz8C,GAAU,IAAIg0D,GAAWjpkB,GAAOhkB,KAAKqqE,IAgB3C,KAfcrmD,IAASA,GAAMqpB,eAAe,WAC9B4xf,IACVhG,GAAQ6zD,cAAc7tD,GAAU98Q,SAEpCyrU,GAAmBlY,IAAez8C,GAC7BgG,KACDA,GAAY+tD,IAEE/zD,GAAQj1gB,QAAU+okB,IAOlB9tD,GAAUj7gB,QAAUi1gB,GAAQj1gB,MAAO,CAGjD,IAw1CZ,YAAmBvU,GAAG8qQ,IAClB,MAAM4zU,GAAK5kkB,OAAO+hB,KAAK77B,IACjB2+kB,GAAK7kkB,OAAO+hB,KAAKivO,IACvB,GAAI4zU,GAAG3qlB,QAAU4qlB,GAAG5qlB,OAChB,OAAO,EACX,QAAStD,GAAI,EAAGA,GAAIiulB,GAAG3qlB,OAAQtD,KAAK,CAChC,MAAM29I,GAAOswc,GAAGjulB,IAChB,IAAKq6Q,GAAEltO,eAAewwG,KAASpuI,GAAEouI,MAAU08H,GAAE18H,IACzC,OAAO,EAEf,OAAO,EAl2CMwwc,CAAUpvD,GAAU/iF,OAAQ+8E,GAAQ/8E,QAAS,CAC9C,MAAMn5c,GAAS,GACTollB,GAAa99f,GAAQwggB,YAAY5rD,GAAUj7gB,MAAOi7gB,GAAU/iF,OAAQn5c,IACpEqllB,GAAW/9f,GAAQwggB,YAAY5xD,GAAQj1gB,MAAOi1gB,GAAQ/8E,OAAQn5c,IAChEA,GAAOS,OACPxD,KAAKktlB,QAAQoB,YAAYvrlB,IAGzB/C,KAAKktlB,QAAQY,WAAW,KACpBS,GAAY3uf,GAASuof,IACrBvG,GAAUhif,GAASwof,MAI/B,OAEJ,MAAMoG,GAAmBnO,GAAgBrglB,KAAKktlB,QAAQuB,iBAAkB7uf,GAAS,IACjF4uf,GAAiBjmlB,QAAQ+skB,KAKjBA,GAAO+W,aAAerslB,KAAKqqE,IAAMirgB,GAAOI,aAAeA,IAAeJ,GAAOoZ,QAC7EpZ,GAAOx7T,YAGf,IAAIuzQ,GAAahjc,GAAQuggB,gBAAgB3rD,GAAUj7gB,MAAOi1gB,GAAQj1gB,MAAO47E,GAASq5b,GAAQ/8E,QACtFyyI,IAAuB,EAC3B,IAAKthE,GAAY,CACb,IAAK4gE,GACD,OACJ5gE,GAAahjc,GAAQoggB,mBACrBkE,IAAuB,EAE3B,YAAKzB,QAAQ0B,qBACb5ulB,KAAKotlB,OAAOjqlB,KAAK,CAAEy8F,WAAS81e,eAAaroD,cAAY4R,aAAWhG,WAASq8C,UAAQqZ,0BAC5EA,KACDv5H,GAASx1X,GAASqsf,IAClB3W,GAAOriL,QAAQ,KACXoiE,GAAYz1X,GAASqsf,OAG7B3W,GAAOpiL,OAAO,KACV,IAAIvgX,GAAQ3yC,KAAKm0kB,QAAQ/ikB,QAAQkkkB,IAC7B3iiB,IAAS,GACT3yC,KAAKm0kB,QAAQ3mjB,OAAOmlB,GAAO,GAE/B,MAAMwhiB,GAAUn0kB,KAAKktlB,QAAQuB,iBAAiB5tlB,IAAI++F,IAClD,GAAIu0e,GAAS,CACT,IAAIxhiB,GAAQwhiB,GAAQ/ikB,QAAQkkkB,IACxB3iiB,IAAS,GACTwhiB,GAAQ3mjB,OAAOmlB,GAAO,MAIlC3yC,KAAKm0kB,QAAQhxkB,KAAKmykB,IAClBkZ,GAAiBrrlB,KAAKmykB,IACfA,GAEXz2K,WAAWj0W,WACA5qD,KAAKmtlB,UAAUviiB,IACtB5qD,KAAKktlB,QAAQW,gBAAgBtllB,QAAQ,CAACsmlB,GAAUjvf,aACrCivf,GAASjkiB,MAEpB5qD,KAAKqtlB,kBAAkB9klB,QAAQ,CAAC8hf,GAAWzqZ,MACvC5/F,KAAKqtlB,kBAAkB/tV,IAAI1/J,GAASyqZ,GAAU3jf,OAAO8hX,IAC1CA,GAAM59T,MAAQA,OAIjCkkiB,kBAAkBlvf,IACd5/F,KAAKktlB,QAAQW,gBAAgBtgkB,OAAOqyE,IACpC5/F,KAAKqtlB,kBAAkB9/jB,OAAOqyE,IAC9B,MAAMmvf,GAAiB/ulB,KAAKktlB,QAAQuB,iBAAiB5tlB,IAAI++F,IACrDmvf,KACAA,GAAexmlB,QAAQ+skB,IAAUA,GAAOx7T,WACxC95Q,KAAKktlB,QAAQuB,iBAAiBlhkB,OAAOqyE,KAG7Covf,+BAA+Bp9K,GAAatxQ,IACxC,MAAMgtC,GAAWttM,KAAKktlB,QAAQ5Y,OAAOp8iB,MAAM05Y,GAAa4lK,IAAqB,GAI7ElqY,GAAS/kM,QAAQ09T,KAGb,GAAIA,GAAI0mR,IACJ,OACJ,MAAMsC,GAAajvlB,KAAKktlB,QAAQgC,yBAAyBjpR,IACrDgpR,GAAWlpgB,KACXkpgB,GAAW1mlB,QAAQmqX,IAAMA,GAAGy8N,sBAAsBlpR,GAAK3lK,IAAS,GAAO,IAGvEtgK,KAAK8ulB,kBAAkB7oR,MAK/BjmU,KAAKktlB,QAAQkC,yBAAyB,IAAM9hZ,GAAS/kM,QAAQ09T,IAAOjmU,KAAK8ulB,kBAAkB7oR,MAE/FkpR,sBAAsBvvf,GAAS0gE,GAAS+ub,GAAsBpB,IAC1D,MAAMqB,GAAgBtvlB,KAAKktlB,QAAQW,gBAAgBhtlB,IAAI++F,IACjD2vf,GAAyB,IAAI5hP,IACnC,GAAI2hP,GAAe,CACf,MAAMnb,GAAU,GAYhB,GAXA5qjB,OAAO+hB,KAAKgkjB,IAAe/mlB,QAAQmtkB,KAI/B,GAHA6Z,GAAuBjwV,IAAIo2U,GAAa4Z,GAAc5Z,IAAa1xjB,OAG/DhkB,KAAKmtlB,UAAUzX,IAAc,CAC7B,MAAMJ,GAASt1kB,KAAKqqF,QAAQuV,GAAS81e,GAAaqX,GAAYkB,IAC1D3Y,IACAnB,GAAQhxkB,KAAKmykB,OAIrBnB,GAAQ3wkB,OACR,YAAK0plB,QAAQsC,qBAAqBxvlB,KAAKqqE,GAAIu1B,IAAS,EAAM0gE,GAASivb,IAC/DF,IACAzD,GAAoBzX,IAASjhL,OAAO,IAAMlzZ,KAAKktlB,QAAQuC,iBAAiB7vf,MAErE,EAGf,OAAO,EAEX8vf,+BAA+B9vf,IAC3B,MAAMyqZ,GAAYrqf,KAAKqtlB,kBAAkBxslB,IAAI++F,IACvC+vf,GAAgB3vlB,KAAKktlB,QAAQW,gBAAgBhtlB,IAAI++F,IAGvD,GAAIyqZ,IAAaslG,GAAe,CAC5B,MAAMC,GAAkB,IAAInqY,IAC5B4kS,GAAU9hf,QAAQkia,KACd,MAAMirK,GAAcjrK,GAAS7/W,KAC7B,GAAIgliB,GAAgB9sO,IAAI4yN,IACpB,OACJka,GAAgB9nc,IAAI4tb,IAEpB,MAAMroD,GAAahjc,KADE8igB,UAAUzX,IACJ+U,mBACrBxrD,GAAY0wD,GAAcja,KAAgBsX,GAC1C/zD,GAAU,IAAIg0D,GAAWF,IACzBzX,GAAS,IAAI4Y,GAA0BlulB,KAAKqqE,GAAIqrgB,GAAa91e,IACnE5/F,KAAKktlB,QAAQ0B,qBACb5ulB,KAAKotlB,OAAOjqlB,KAAK,CACby8F,WACA81e,eACAroD,cACA4R,aACAhG,WACAq8C,UACAqZ,sBAAsB,OAKtCkB,WAAWjwf,GAAS0gE,IAChB,MAAMwvb,GAAS9vlB,KAAKktlB,QAKpB,GAJIttf,GAAQmwf,mBACR/vlB,KAAKgvlB,+BAA+Bpvf,GAAS0gE,IAG7CtgK,KAAKmvlB,sBAAsBvvf,GAAS0gE,IAAS,GAC7C,OAGJ,IAAI0vb,IAAoC,EACxC,GAAIF,GAAOG,gBAAiB,CACxB,MAAMC,GAAiBJ,GAAO3b,QAAQ3wkB,OAASsslB,GAAOK,wBAAwBtvlB,IAAI++F,IAAW,GAK7F,GAAIswf,IAAkBA,GAAe1slB,OACjCwslB,IAAoC,MAEnC,CACD,IAAIlvd,GAASlhC,GACb,KAAOkhC,GAASA,GAAO+oN,YAEnB,GADiBimQ,GAAOjC,gBAAgBhtlB,IAAIigI,IAC9B,CACVkvd,IAAoC,EACpC,QAYhB,GAHAhwlB,KAAK0vlB,+BAA+B9vf,IAGhCowf,GACAF,GAAON,qBAAqBxvlB,KAAKqqE,GAAIu1B,IAAS,EAAO0gE,QAEpD,CACD,MAAM8vb,GAAcxwf,GAAQ+sf,MACvByD,IAAeA,KAAgBhE,MAGhC0D,GAAOhC,WAAW,IAAM9tlB,KAAK8ulB,kBAAkBlvf,KAC/Ckwf,GAAOO,uBAAuBzwf,IAC9Bkwf,GAAOQ,mBAAmB1wf,GAAS0gE,MAI/Ciwb,WAAW3wf,GAASkhC,IAChBs0V,GAASx1X,GAAS5/F,KAAKstlB,gBAE3BkD,uBAAuBC,IACnB,MAAM3P,GAAe,GACrB,YAAKsM,OAAO7klB,QAAQigX,KAChB,MAAM8sN,GAAS9sN,GAAM8sN,OACrB,GAAIA,GAAOj1a,UACP,OACJ,MAAMzgE,GAAU4oR,GAAM5oR,QAChByqZ,GAAYrqf,KAAKqtlB,kBAAkBxslB,IAAI++F,IACzCyqZ,IACAA,GAAU9hf,QAASkia,KACf,GAAIA,GAAS7/W,MAAQ49T,GAAMktN,YAAa,CACpC,MAAMqW,GAAYtW,GAAmB71e,GAAS4oR,GAAMktN,YAAaltN,GAAMy2K,UAAUj7gB,MAAOwkW,GAAMywK,QAAQj1gB,OACtG+nkB,GAAU5rb,MAAWswb,GACrBzE,GAAexjO,GAAM8sN,OAAQ7qK,GAAS8iL,MAAOxB,GAAWthL,GAAS3iK,aAI7ElqD,GAAW8yY,iBACP1wlB,KAAKktlB,QAAQY,WAAW,KAGpBxY,GAAOx7T,YAIXgnU,GAAa39kB,KAAKqlX,MAG1BxoX,KAAKotlB,OAAS,GACPtM,GAAatukB,KAAK,CAAC/C,GAAG8qQ,MAGzB,MAAMo2U,GAAKlhlB,GAAE49gB,WAAW76L,IAAI8pP,SACtBr+F,GAAK1jO,GAAE8yQ,WAAW76L,IAAI8pP,SAC5B,OAAU,GAANqU,IAAiB,GAAN1yG,GACJ0yG,GAAK1yG,GAETj+e,KAAKktlB,QAAQ5Y,OAAOmC,gBAAgBhnkB,GAAEmwF,QAAS26K,GAAE36K,SAAW,GAAI,IAG/Ek6K,QAAQx5G,IACJtgK,KAAKm0kB,QAAQ5rkB,QAAQ+mU,IAAKA,GAAEx1D,WAC5B95Q,KAAKgvlB,+BAA+BhvlB,KAAKu0Z,YAAaj0P,IAE1Dswb,oBAAoBhxf,IAChB,IAAIixf,IAAe,EACnB,OAAI7wlB,KAAKqtlB,kBAAkBvqO,IAAIljR,MAC3Bixf,IAAe,GACnBA,KACK7wlB,KAAKotlB,OAAOpqlB,KAAKwlX,IAASA,GAAM5oR,UAAYA,KAA4Bixf,GACtEA,IAGf,SACIhxlB,YAAYorlB,GAAU3W,GAAQ8V,IAC1BpqlB,KAAKirlB,SAAWA,GAChBjrlB,KAAKs0kB,OAASA,GACdt0kB,KAAKoqlB,YAAcA,GACnBpqlB,KAAKm0kB,QAAU,GACfn0kB,KAAK8wlB,gBAAkB,IAAInjP,IAC3B3tW,KAAKyulB,iBAAmB,IAAI9gP,IAC5B3tW,KAAKmwlB,wBAA0B,IAAIxiP,IACnC3tW,KAAK6tlB,gBAAkB,IAAIlgP,IAC3B3tW,KAAK+wlB,cAAgB,IAAItrY,IACzBzlN,KAAKiwlB,gBAAkB,EACvBjwlB,KAAK4ulB,mBAAqB,EAC1B5ulB,KAAKgxlB,iBAAmB,GACxBhxlB,KAAKixlB,eAAiB,GACtBjxlB,KAAKkxlB,UAAY,GACjBlxlB,KAAKmxlB,cAAgB,GACrBnxlB,KAAKoxlB,wBAA0B,IAAIzjP,IACnC3tW,KAAKqxlB,uBAAyB,GAC9BrxlB,KAAKsxlB,uBAAyB,GAE9BtxlB,KAAKuxlB,kBAAoB,CAAC3xf,GAAS0gE,MAAV,CAAsB,CAGnDgwb,mBAAmB1wf,GAAS0gE,IACxBtgK,KAAKuxlB,kBAAkB3xf,GAAS0gE,IAEhCkxb,oBACA,MAAMrd,GAAU,GAChB,YAAK8c,eAAe1olB,QAAQmqX,KACxBA,GAAGyhN,QAAQ5rkB,QAAQ+skB,KACXA,GAAOoZ,QACPva,GAAQhxkB,KAAKmykB,QAIlBnB,GAEXsd,gBAAgBpF,GAAa93L,IACzB,MAAM7hC,GAAK,IAAIg/N,GAA6BrF,GAAa93L,GAAav0Z,MACtE,OAAIA,KAAKirlB,UAAYjrlB,KAAKs0kB,OAAOmC,gBAAgBz2kB,KAAKirlB,SAAU12L,IAC5Dv0Z,KAAK2xlB,sBAAsBj/N,GAAI6hC,KAM/Bv0Z,KAAK8wlB,gBAAgBxxV,IAAIi1J,GAAa7hC,IAMtC1yX,KAAK4xlB,oBAAoBr9L,KAEtBv0Z,KAAKgxlB,iBAAiB3E,IAAe35N,GAEhDi/N,sBAAsBj/N,GAAI6hC,IACtB,MAAMs9L,GAAgB7xlB,KAAKixlB,eACrBG,GAA0BpxlB,KAAKoxlB,wBAC/B/lN,GAAQwmN,GAAcrulB,OAAS,EACrC,GAAI6nY,IAAS,EAAG,CACZ,IAAIymN,IAAQ,EACZ,QAAqCl5O,IAAjC54W,KAAKs0kB,OAAO6B,iBAAgC,CAI5C,IAAI4b,GAAW/xlB,KAAKs0kB,OAAO6B,iBAAiB5hL,IAC5C,KAAOw9L,IAAU,CACb,MAAMC,GAAaZ,GAAwBvwlB,IAAIkxlB,IAC/C,GAAIC,GAAY,CAGZ,MAAMr/iB,GAAQk/iB,GAAczglB,QAAQ4glB,IACpCH,GAAcrkkB,OAAOmlB,GAAQ,EAAG,EAAG+/U,IACnCo/N,IAAQ,EACR,MAEJC,GAAW/xlB,KAAKs0kB,OAAO6B,iBAAiB4b,UAM5C,QAAS7xlB,GAAImrY,GAAOnrY,IAAK,EAAGA,KAAK,CAC7B,MAAM+xlB,GAAgBJ,GAAc3xlB,IACpC,GAAIF,KAAKs0kB,OAAOmC,gBAAgBwb,GAAc19L,YAAaA,IAAc,CACrEs9L,GAAcrkkB,OAAOttB,GAAI,EAAG,EAAGwyX,IAC/Bo/N,IAAQ,EACR,OAIPA,IAIDD,GAAchikB,QAAQ6iW,SAI1Bm/N,GAAc1ulB,KAAKuvX,IAEvB0+N,UAAwB9xV,IAAIi1J,GAAa7hC,IAClCA,GAEXnhF,SAAS86S,GAAa93L,IAClB,IAAI7hC,GAAK1yX,KAAKgxlB,iBAAiB3E,IAC/B,OAAK35N,KACDA,GAAK1yX,KAAKyxlB,gBAAgBpF,GAAa93L,KAEpC7hC,GAEXw/N,gBAAgB7F,GAAazhiB,GAAMy/B,IAC/B,IAAIqoS,GAAK1yX,KAAKgxlB,iBAAiB3E,IAC3B35N,IAAMA,GAAGnhF,SAAS3mP,GAAMy/B,KACxBrqF,KAAKiwlB,kBAGbn2U,QAAQuyU,GAAa/rb,IACjB,IAAK+rb,GACD,OACJ,MAAM35N,GAAK1yX,KAAKmylB,gBAAgB9F,IAChCrslB,KAAK8tlB,WAAW,KACZ9tlB,KAAKoxlB,wBAAwB7jkB,OAAOmlW,GAAG6hC,oBAChCv0Z,KAAKgxlB,iBAAiB3E,IAC7B,MAAM15iB,GAAQ3yC,KAAKixlB,eAAe7/kB,QAAQshX,IACtC//U,IAAS,GACT3yC,KAAKixlB,eAAezjkB,OAAOmlB,GAAO,KAG1C3yC,KAAKovlB,yBAAyB,IAAM18N,GAAG54G,QAAQx5G,KAEnD6xb,gBAAgB9nhB,IACZ,OAAOrqE,KAAKgxlB,iBAAiB3mhB,IAEjC6khB,yBAAyBtvf,IAMrB,MAAMqvf,GAAa,IAAIxpY,IACjBkqY,GAAgB3vlB,KAAK6tlB,gBAAgBhtlB,IAAI++F,IAC/C,GAAI+vf,GAAe,CACf,MAAMrkjB,GAAO/hB,OAAO+hB,KAAKqkjB,IACzB,QAASzvlB,GAAI,EAAGA,GAAIorC,GAAK9nC,OAAQtD,KAAK,CAClC,MAAMkylB,GAAOzC,GAAcrkjB,GAAKprC,KAAImslB,YACpC,GAAI+F,GAAM,CACN,MAAM1/N,GAAK1yX,KAAKmylB,gBAAgBC,IAC5B1/N,IACAu8N,GAAWnnc,IAAI4qO,MAK/B,OAAOu8N,GAEX5kgB,QAAQgigB,GAAazsf,GAASh1C,GAAM5mC,IAChC,GAAIqukB,GAAczyf,IAAU,CACxB,MAAM8yR,GAAK1yX,KAAKmylB,gBAAgB9F,IAChC,GAAI35N,GACAA,UAAGroS,QAAQuV,GAASh1C,GAAM5mC,KACnB,EAGf,OAAO,EAEXuskB,WAAWlE,GAAazsf,GAASkhC,GAAQsxK,IACrC,IAAKigT,GAAczyf,IACf,OAGJ,MAAMwjK,GAAUxjK,GAAQ+sf,IACxB,GAAIvpV,IAAWA,GAAQkpV,cAAe,CAClClpV,GAAQkpV,eAAgB,EACxBlpV,GAAQmpV,YAAa,EACrB,MAAM55iB,GAAQ3yC,KAAKsxlB,uBAAuBlglB,QAAQwuF,IAC9CjtD,IAAS,GACT3yC,KAAKsxlB,uBAAuB9jkB,OAAOmlB,GAAO,GAMlD,GAAI05iB,GAAa,CACb,MAAM35N,GAAK1yX,KAAKmylB,gBAAgB9F,IAO5B35N,IACAA,GAAG69N,WAAW3wf,GAASkhC,IAI3BsxK,IACApyS,KAAK4xlB,oBAAoBhyf,IAGjCgyf,oBAAoBhyf,IAChB5/F,KAAKqxlB,uBAAuBlulB,KAAKy8F,IAErC0yf,sBAAsB1yf,GAAS57E,IACvBA,GACKhkB,KAAK+wlB,cAAcjuO,IAAIljR,MACxB5/F,KAAK+wlB,cAAcjpc,IAAIloD,IACvBw1X,GAASx1X,GAASssf,KAGjBlslB,KAAK+wlB,cAAcjuO,IAAIljR,MAC5B5/F,KAAK+wlB,cAAcxjkB,OAAOqyE,IAC1By1X,GAAYz1X,GAASssf,KAG7B2D,WAAWxD,GAAazsf,GAAS2yf,GAAejyb,IAC5C,GAAI+xb,GAAczyf,IAAU,CACxB,MAAM8yR,GAAK25N,GAAcrslB,KAAKmylB,gBAAgB9F,IAAe,KAO7D,GANAxuY,GACI60K,GAAGm9N,WAAWjwf,GAAS0gE,IAGvBtgK,KAAKwvlB,qBAAqBnD,GAAazsf,IAAS,EAAO0gE,IAEvDiyb,GAAe,CACf,MAAMC,GAASxylB,KAAKoxlB,wBAAwBvwlB,IAAI++F,IAC5C4yf,IAAUA,GAAOnohB,KAAOgihB,IACxBmG,GAAO3C,WAAWjwf,GAAS0gE,UAKnCtgK,KAAKswlB,mBAAmB1wf,GAAS0gE,IAGzCkvb,qBAAqBnD,GAAazsf,GAAS4sf,GAAclsb,GAASivb,IAC9DvvlB,KAAKsxlB,uBAAuBnulB,KAAKy8F,IACjCA,GAAQ+sf,IAAgB,CACpBN,eACAC,cAAehsb,GACfksb,gBACAC,sBAAsB,EACtB8C,2BAGR7kL,OAAO2hL,GAAazsf,GAASh1C,GAAM2iiB,GAAOzlV,IACtC,OAAIuqV,GAAczyf,IACP5/F,KAAKmylB,gBAAgB9F,IAAa3hL,OAAO9qU,GAASh1C,GAAM2iiB,GAAOzlV,IAEnE,MAAM,CAEjB2qV,kBAAkBjqO,GAAOkqO,GAAcxR,GAAgBC,GAAgBwR,IACnE,OAAOnqO,GAAM6kK,WAAWpoD,MAAMjle,KAAKs0kB,OAAQ9rN,GAAM5oR,QAAS4oR,GAAMy2K,UAAUj7gB,MAAOwkW,GAAMywK,QAAQj1gB,MAAOk9jB,GAAgBC,GAAgB34N,GAAMy2K,UAAU98Q,QAASqmG,GAAMywK,QAAQ92Q,QAASuwU,GAAcC,IAExMtC,uBAAuBuC,IACnB,IAAItlZ,GAAWttM,KAAKs0kB,OAAOp8iB,MAAM06jB,GAAkBpb,IAAqB,GACxElqY,GAAS/kM,QAAQq3F,IAAW5/F,KAAK6ylB,kCAAkCjzf,KAC1B,GAArC5/F,KAAKmwlB,wBAAwBpqgB,OAEjCunH,GAAWttM,KAAKs0kB,OAAOp8iB,MAAM06jB,GAAkBlb,IAAuB,GACtEpqY,GAAS/kM,QAAQq3F,IAAW5/F,KAAK8ylB,sCAAsClzf,MAE3Eizf,kCAAkCjzf,IAC9B,MAAMu0e,GAAUn0kB,KAAKyulB,iBAAiB5tlB,IAAI++F,IACtCu0e,IACAA,GAAQ5rkB,QAAQ+skB,KAIRA,GAAOoZ,OACPpZ,GAAOob,kBAAmB,EAG1Bpb,GAAOx7T,YAKvBg5U,sCAAsClzf,IAClC,MAAMu0e,GAAUn0kB,KAAKmwlB,wBAAwBtvlB,IAAI++F,IAC7Cu0e,IACAA,GAAQ5rkB,QAAQ+skB,IAAUA,GAAO7hL,UAGzCs/L,oBACI,OAAO,IAAI17e,QAAQi2O,KACf,GAAIttV,KAAKm0kB,QAAQ3wkB,OACb,OAAOoolB,GAAoB5rlB,KAAKm0kB,SAASjhL,OAAO,IAAM5lE,MAGtDA,OAIZmiQ,iBAAiB7vf,IACb,IAAIi2N,GACJ,MAAMzyD,GAAUxjK,GAAQ+sf,IACxB,GAAIvpV,IAAWA,GAAQkpV,cAAe,CAGlC,GADA1sf,GAAQ+sf,IAAgBP,GACpBhpV,GAAQipV,YAAa,CACrBrslB,KAAKqwlB,uBAAuBzwf,IAC5B,MAAM8yR,GAAK1yX,KAAKmylB,gBAAgB/uV,GAAQipV,aACpC35N,IACAA,GAAGo8N,kBAAkBlvf,IAG7B5/F,KAAKswlB,mBAAmB1wf,GAASwjK,GAAQkpV,gBAEZ,QAA5Bz2R,GAAKj2N,GAAQmrT,iBAA8B,IAAPl1F,QAAgB,EAASA,GAAGzuO,SAAS8kgB,MAC1ElslB,KAAKsylB,sBAAsB1yf,IAAS,GAExC5/F,KAAKs0kB,OAAOp8iB,MAAM0nE,GArtBA,wBAqtB4B,GAAMr3F,QAAQ6iZ,KACxDprZ,KAAKsylB,sBAAsBlnM,IAAM,KAGzCjxI,MAAMs2U,IAAc,GAChB,IAAItc,GAAU,GAKd,GAJIn0kB,KAAK8wlB,gBAAgB/qgB,OACrB/lF,KAAK8wlB,gBAAgBvolB,QAAQ,CAACmqX,GAAI9yR,KAAY5/F,KAAK2xlB,sBAAsBj/N,GAAI9yR,KAC7E5/F,KAAK8wlB,gBAAgBrggB,SAErBzwF,KAAKiwlB,iBAAmBjwlB,KAAKqxlB,uBAAuB7tlB,OACpD,QAAStD,GAAI,EAAGA,GAAIF,KAAKqxlB,uBAAuB7tlB,OAAQtD,KAAK,CAEzDk1d,GADYp1d,KAAKqxlB,uBAAuBnxlB,IAhuBjC,mBAiuBO8ylB,CAGtB,GAAIhzlB,KAAKixlB,eAAeztlB,SACnBxD,KAAK4ulB,oBAAsB5ulB,KAAKsxlB,uBAAuB9tlB,QAAS,CACjE,MAAMyvlB,GAAa,GACnB,IACI9e,GAAUn0kB,KAAKkzlB,iBAAiBD,GAAYxC,GAI7BvwlB,CAJ6BuwlB,QAG5C,QAASvwlB,GAAI,EAAGA,GAAI+ylB,GAAWzvlB,OAAQtD,KACnC+ylB,GAAW/ylB,YAKnB,QAASA,GAAI,EAAGA,GAAIF,KAAKsxlB,uBAAuB9tlB,OAAQtD,KAAK,CACzD,MAAM0/F,GAAU5/F,KAAKsxlB,uBAAuBpxlB,IAC5CF,KAAKyvlB,iBAAiB7vf,IAQ9B,GALA5/F,KAAK4ulB,mBAAqB,EAC1B5ulB,KAAKqxlB,uBAAuB7tlB,OAAS,EACrCxD,KAAKsxlB,uBAAuB9tlB,OAAS,EACrCxD,KAAKkxlB,UAAU3olB,QAAQu7B,IAAMA,MAC7B9jC,KAAKkxlB,UAAY,GACblxlB,KAAKmxlB,cAAc3tlB,OAAQ,CAI3B,MAAM2vlB,GAAWnzlB,KAAKmxlB,cACtBnxlB,KAAKmxlB,cAAgB,GACrBzzY,GAAYl6M,OACRoolB,GAAoBzX,IAASjhL,OAAO,KAChCigM,GAAS5qlB,QAAQu7B,IAAMA,QAI3BqvjB,GAAS5qlB,QAAQu7B,IAAMA,OAInCwqjB,YAAYvrlB,IACR,MA/jGR,YAAkCA,IAC9B,OAAO,IAAIs3d,qBAAc,KAAuC65G,EAC0D,CA6jGhHkf,EAAyBrwlB,CAEnCmwlB,iBAAiBD,GAAYxC,IACzB,MAAMiC,GAAe,IAAIjR,GACnB4R,GAAiB,GACjBC,GAAoB,IAAI3lP,IACxB4lP,GAAqB,GACrBlL,GAAkB,IAAI16O,IACtB6lP,GAAsB,IAAI7lP,IAC1B8lP,GAAuB,IAAI9lP,IAC3B+lP,GAAsB,IAAIjuY,IAChCzlN,KAAK+wlB,cAAcxolB,QAAQ6iZ,KACvBsoM,GAAoB5rc,IAAIsjQ,IACxB,MAAMuoM,GAAuB3zlB,KAAKs0kB,OAAOp8iB,MAAMkzX,GA5xBnC,sBA4xB0D,GACtE,QAASlrZ,GAAI,EAAGA,GAAIyzlB,GAAqBnwlB,OAAQtD,KAC7CwzlB,GAAoB5rc,IAAI6rc,GAAqBzzlB,OAGrD,MAAM+qlB,GAAWjrlB,KAAKirlB,SAChB2I,GAAqBh+kB,MAAM6zB,KAAKzpC,KAAK6tlB,gBAAgBvijB,QACrDuojB,GAAeC,GAAaF,GAAoB5zlB,KAAKqxlB,wBAIrD0C,GAAkB,IAAIpmP,IAC5B,IAAIztW,GAAI,EACR2zlB,GAAatrlB,QAAQ,CAAC8gC,GAAO8pR,MACzB,MAAM5/C,GAAY8jU,GAAkBn3kB,KACpC6zlB,GAAgBz0V,IAAI6zD,GAAM5/C,IAC1BlqO,GAAM9gC,QAAQ6iZ,IAAQgqE,GAAShqE,GAAM73I,OAEzC,MAAMygV,GAAgB,GAChBC,GAAmB,IAAIxuY,IACvByuY,GAA8B,IAAIzuY,IACxC,QAASvlN,GAAI,EAAGA,GAAIF,KAAKsxlB,uBAAuB9tlB,OAAQtD,KAAK,CACzD,MAAM0/F,GAAU5/F,KAAKsxlB,uBAAuBpxlB,IACtCkjQ,GAAUxjK,GAAQ+sf,IACpBvpV,IAAWA,GAAQkpV,gBACnB0H,GAAc7wlB,KAAKy8F,IACnBq0f,GAAiBnsc,IAAIloD,IACrB8nG,GAAY8kZ,aACRxslB,KAAKs0kB,OAAOp8iB,MAAM0nE,GApzBhB,qBAozBwC,GAAMr3F,QAAQ09T,IAAOguR,GAAiBnsc,IAAIm+K,KAGpFiuR,GAA4Bpsc,IAAIloD,KAI5C,MAAMu0f,GAAkB,IAAIxmP,IACtBymP,GAAeN,GAAaF,GAAoBh+kB,MAAM6zB,KAAKwqjB,KACjEG,GAAa7rlB,QAAQ,CAAC8gC,GAAO8pR,MACzB,MAAM5/C,GAAY+jU,GAAkBp3kB,KACpCi0lB,GAAgB70V,IAAI6zD,GAAM5/C,IAC1BlqO,GAAM9gC,QAAQ6iZ,IAAQgqE,GAAShqE,GAAM73I,OAEzC0/U,GAAW9vlB,KAAK,KACZ0wlB,GAAatrlB,QAAQ,CAAC8gC,GAAO8pR,MACzB,MAAM5/C,GAAYwgV,GAAgBlzlB,IAAIsyT,IACtC9pR,GAAM9gC,QAAQ6iZ,IAAQiqE,GAAYjqE,GAAM73I,OAE5C6gV,GAAa7rlB,QAAQ,CAAC8gC,GAAO8pR,MACzB,MAAM5/C,GAAY4gV,GAAgBtzlB,IAAIsyT,IACtC9pR,GAAM9gC,QAAQ6iZ,IAAQiqE,GAAYjqE,GAAM73I,OAE5CygV,GAAczrlB,QAAQq3F,KAClB5/F,KAAKyvlB,iBAAiB7vf,QAG9B,MAAMy0f,GAAa,GACbC,GAAuB,GAC7B,QAASp0lB,GAAIF,KAAKixlB,eAAeztlB,OAAS,EAAGtD,IAAK,EAAGA,KACtCF,KAAKixlB,eAAe/wlB,IAC5BswlB,uBAAuBC,IAAalolB,QAAQigX,KAC3C,MAAM8sN,GAAS9sN,GAAM8sN,OACf11e,GAAU4oR,GAAM5oR,QAEtB,GADAy0f,GAAWlxlB,KAAKmykB,IACZt1kB,KAAKqxlB,uBAAuB7tlB,OAAQ,CACpC,MAAM4/P,GAAUxjK,GAAQ+sf,IAGxB,GAAIvpV,IAAWA,GAAQmpV,WAAY,CAC/B,GAAInpV,GAAQmsV,wBACRnsV,GAAQmsV,uBAAuBzsO,IAAI0F,GAAMktN,aAAc,CACvD,MAAMxxW,GAAgBk/B,GAAQmsV,uBAAuB1ulB,IAAI2nX,GAAMktN,aAGzDkY,GAAqB5tlB,KAAK6tlB,gBAAgBhtlB,IAAI2nX,GAAM5oR,SACtDguf,IAAsBA,GAAmBplO,GAAMktN,eAC/CkY,GAAmBplO,GAAMktN,aAAa1xjB,MAAQkgN,IAItD,YADAoxW,GAAOx7T,SACP,EAGR,MAAMy6U,IAAkBtJ,KAAajrlB,KAAKs0kB,OAAOmC,gBAAgBwU,GAAUrrf,IACrEuhf,EAAiBgT,GAAgBtzlB,IAAI++F,IACrCshf,GAAiB6S,GAAgBlzlB,IAAI++F,IACrC8if,GAAc1ilB,KAAKyylB,kBAAkBjqO,GAAOkqO,GAAcxR,GAAgBC,EAAgBoT,IAChG,GAAI7R,GAAY3/kB,QAAU2/kB,GAAY3/kB,OAAOS,OAEzC,YADA8wlB,GAAqBnxlB,KAAKu/kB,IAO9B,GAAI6R,GAIA,OAHAjf,GAAOriL,QAAQ,IAAMs7L,GAAY3uf,GAAS8if,GAAYyF,aACtD7S,GAAOniL,UAAU,IAAMyuL,GAAUhif,GAAS8if,GAAY0F,gBACtDiL,GAAelwlB,KAAKmykB,IAMxB,GAAI9sN,GAAMmmO,qBAIN,OAHArZ,GAAOriL,QAAQ,IAAMs7L,GAAY3uf,GAAS8if,GAAYyF,aACtD7S,GAAOniL,UAAU,IAAMyuL,GAAUhif,GAAS8if,GAAY0F,gBACtDiL,GAAelwlB,KAAKmykB,IAQxB,MAAMuM,GAAY,GAClBa,GAAYb,UAAUt5kB,QAAQuqS,KAC1BA,GAAGsyS,yBAA0B,EACxBpllB,KAAK+wlB,cAAcjuO,IAAIhwE,GAAGlzM,UAC3Biif,GAAU1+kB,KAAK2vS,MAGvB4vS,GAAYb,UAAYA,GACxB6Q,GAAa/9R,OAAO/0N,GAAS8if,GAAYb,WACzC,MAAMjD,GAAQ,CAAE8D,eAAapN,UAAQ11e,YACrC2zf,GAAmBpwlB,KAAKy7kB,IACxB8D,GAAY2F,gBAAgB9/kB,QAAQq3F,IAAWygf,GAAgBgI,GAAiBzof,GAAS,IAAIz8F,KAAKmykB,KAClGoN,GAAYhC,cAAcn4kB,QAAQ,CAACislB,GAAW50f,MAC1C,MAAMgjR,GAAQr5V,OAAO+hB,KAAKkpjB,IAC1B,GAAI5xO,GAAMp/W,OAAQ,CACd,IAAIixlB,GAASjB,GAAoB3ylB,IAAI++F,IAChC60f,IACDjB,GAAoBl0V,IAAI1/J,GAAS60f,GAAS,IAAIhvY,KAElDm9J,GAAMr6W,QAAQs1I,IAAQ42c,GAAO3sc,IAAIjK,QAGzC6kc,GAAY/B,eAAep4kB,QAAQ,CAACislB,GAAW50f,MAC3C,MAAMgjR,GAAQr5V,OAAO+hB,KAAKkpjB,IAC1B,IAAIC,GAAShB,GAAqB5ylB,IAAI++F,IACjC60f,IACDhB,GAAqBn0V,IAAI1/J,GAAS60f,GAAS,IAAIhvY,KAEnDm9J,GAAMr6W,QAAQs1I,IAAQ42c,GAAO3sc,IAAIjK,SAI7C,GAAIy2c,GAAqB9wlB,OAAQ,CAC7B,MAAMT,GAAS,GACfuxlB,GAAqB/rlB,QAAQm6kB,KACzB3/kB,GAAOI,KAztGvB,YAA0BynD,GAAM7nD,IAC5B,OAAO,IAAIs3d,qBAAc,KAA8B65G,EACkB,CAutGjDwgB,CAAiBhS,GAAYhN,YAAagN,GAAY3/kB,WAEtEsxlB,GAAW9rlB,QAAQ+skB,IAAUA,GAAOx7T,WACpC95Q,KAAKsulB,YAAYvrlB,IAErB,MAAM4xlB,GAAwB,IAAIhnP,IAK5BinP,GAAsB,IAAIjnP,IAChC4lP,GAAmBhrlB,QAAQigX,KACvB,MAAM5oR,GAAU4oR,GAAM5oR,QAClB8yf,GAAa5vO,IAAIljR,MACjBg1f,GAAoBt1V,IAAI1/J,GAASA,IACjC5/F,KAAK60lB,sBAAsBrsO,GAAM8sN,OAAO+W,YAAa7jO,GAAMk6N,YAAaiS,OAGhFtB,GAAe9qlB,QAAQ+skB,KACnB,MAAM11e,GAAU01e,GAAO11e,QACC5/F,KAAK80lB,oBAAoBl1f,IAAS,EAAO01e,GAAO+W,YAAa/W,GAAOI,YAAa,MACzFntkB,QAAQwslB,KACpB1U,GAAgBsU,GAAuB/0f,GAAS,IAAIz8F,KAAK4xlB,IACzDA,GAAWj7U,cAUnB,MAAMk7U,GAAehB,GAActtlB,OAAO0kZ,IAC/B6pM,GAAuB7pM,GAAMooM,GAAqBC,KAGvDyB,GAAgB,IAAIvnP,IACGwnP,GAAsBD,GAAel1lB,KAAKs0kB,OAAQ4f,GAA6BT,GAAsBve,MAC7G3skB,QAAQ6iZ,KACrB6pM,GAAuB7pM,GAAMooM,GAAqBC,KAClDuB,GAAa7xlB,KAAKioZ,MAI1B,MAAMgqM,GAAe,IAAIznP,IACzBkmP,GAAatrlB,QAAQ,CAAC8gC,GAAO8pR,MACzBgiS,GAAsBC,GAAcp1lB,KAAKs0kB,OAAQ,IAAI7uX,IAAIp8K,IAAQmqjB,GAAqBve,QAE1F+f,GAAazslB,QAAQ6iZ,KACjB,MAAM1qZ,GAAOw0lB,GAAcr0lB,IAAIuqZ,IACzBiqM,GAAMD,GAAav0lB,IAAIuqZ,IAC7B8pM,GAAc51V,IAAI8rJ,GAAM7hY,OAAOC,OAAOD,OAAOC,OAAO,GAAI9oB,IAAO20lB,OAEnE,MAAMC,GAAc,GACdC,GAAa,GACbC,GAAuC,GAC7CjC,GAAmBhrlB,QAAQigX,KACvB,MAAQ5oR,WAAS01e,UAAQoN,gBAAgBl6N,GAGzC,GAAIkqO,GAAa5vO,IAAIljR,IAAU,CAC3B,GAAI8zf,GAAoB5wO,IAAIljR,IAKxB,OAJA01e,GAAOniL,UAAU,IAAMyuL,GAAUhif,GAAS8if,GAAY0F,WACtD9S,GAAOhojB,UAAW,EAClBgojB,GAAOmgB,kBAAkB/S,GAAYxpD,gBACrCm6D,GAAelwlB,KAAKmykB,IASxB,IAAIogB,GAAsBF,GAC1B,GAAIZ,GAAoB7ugB,KAAO,EAAG,CAC9B,IAAIkgP,EAAMrmO,GACV,MAAM+1f,GAAe,GACrB,KAAO1vR,EAAMA,EAAI4jB,YAAY,CACzB,MAAM+rQ,GAAiBhB,GAAoB/zlB,IAAIolU,GAC/C,GAAI2vR,GAAgB,CAChBF,GAAsBE,GACtB,MAEJD,GAAaxylB,KAAK8iU,GAEtB0vR,GAAaptlB,QAAQu4H,IAAU8zd,GAAoBt1V,IAAIx+H,GAAQ40d,KAEnE,MAAMG,GAAc71lB,KAAK81lB,gBAAgBxgB,GAAO+W,YAAa3J,GAAaiS,GAAuBrB,GAAmB8B,GAAcF,IAElI,GADA5f,GAAOygB,cAAcF,IACjBH,KAAwBF,GACxBF,GAAYnylB,KAAKmykB,QAEhB,CACD,MAAM0gB,EAAgBh2lB,KAAKyulB,iBAAiB5tlB,IAAI60lB,IAC5CM,GAAiBA,EAAcxylB,SAC/B8xkB,GAAO2gB,aAAerK,GAAoBoK,IAE9C3C,GAAelwlB,KAAKmykB,UAIxBiZ,GAAY3uf,GAAS8if,GAAYyF,YACjC7S,GAAOniL,UAAU,IAAMyuL,GAAUhif,GAAS8if,GAAY0F,WAItDmN,GAAWpylB,KAAKmykB,IACZoe,GAAoB5wO,IAAIljR,KACxByzf,GAAelwlB,KAAKmykB,MAKhCigB,GAAWhtlB,QAAQ+skB,KAGf,MAAM4gB,GAAoB5C,GAAkBzylB,IAAIy0kB,GAAO11e,SACvD,GAAIs2f,IAAqBA,GAAkB1ylB,OAAQ,CAC/C,MAAMqylB,GAAcjK,GAAoBsK,IACxC5gB,GAAOygB,cAAcF,OAM7BxC,GAAe9qlB,QAAQ+skB,KACfA,GAAO2gB,aACP3gB,GAAO6gB,iBAAiB7gB,GAAO2gB,cAG/B3gB,GAAOx7T,YAMf,QAAS55Q,GAAI,EAAGA,GAAI8zlB,GAAcxwlB,OAAQtD,KAAK,CAC3C,MAAM0/F,GAAUo0f,GAAc9zlB,IACxBkjQ,GAAUxjK,GAAQ+sf,IAKxB,GAJAt3H,GAAYz1X,GAAS03e,IAIjBl0U,IAAWA,GAAQopV,aACnB,SACJ,IAAIrY,GAAU,GAId,GAAIkU,GAAgBtigB,KAAM,CACtB,IAAIqwgB,GAAuB/N,GAAgBxnlB,IAAI++F,IAC3Cw2f,IAAwBA,GAAqB5ylB,QAC7C2wkB,GAAQhxkB,QAAQizlB,IAEpB,IAAIC,EAAuBr2lB,KAAKs0kB,OAAOp8iB,MAAM0nE,GAAS83e,IAAuB,GAC7E,QAAS51V,GAAI,EAAGA,GAAIu0W,EAAqB7ylB,OAAQs+O,KAAK,CAClD,IAAIw0W,GAAiBjO,GAAgBxnlB,IAAIw1lB,EAAqBv0W,KAC1Dw0W,IAAkBA,GAAe9ylB,QACjC2wkB,GAAQhxkB,QAAQmzlB,KAI5B,MAAMC,GAAgBpiB,GAAQztkB,OAAO4oU,KAAMA,GAAEjvK,WACzCk2b,GAAc/ylB,OACdgzlB,GAA8Bx2lB,KAAM4/F,GAAS22f,IAG7Cv2lB,KAAKyvlB,iBAAiB7vf,IAI9Bo0f,UAAcxwlB,OAAS,EACvB8xlB,GAAY/slB,QAAQ+skB,KAChBt1kB,KAAKm0kB,QAAQhxkB,KAAKmykB,IAClBA,GAAOpiL,OAAO,KACVoiL,GAAOx7T,UACP,MAAMnnO,GAAQ3yC,KAAKm0kB,QAAQ/ikB,QAAQkkkB,IACnCt1kB,KAAKm0kB,QAAQ3mjB,OAAOmlB,GAAO,KAE/B2iiB,GAAOt9R,SAEJs9S,GAEX1E,oBAAoBvE,GAAazsf,IAC7B,IAAIixf,IAAe,EACnB,MAAMztV,GAAUxjK,GAAQ+sf,IACxB,OAAIvpV,IAAWA,GAAQkpV,gBACnBuE,IAAe,GACf7wlB,KAAKyulB,iBAAiB3rO,IAAIljR,MAC1Bixf,IAAe,GACf7wlB,KAAKmwlB,wBAAwBrtO,IAAIljR,MACjCixf,IAAe,GACf7wlB,KAAK6tlB,gBAAgB/qO,IAAIljR,MACzBixf,IAAe,GACZ7wlB,KAAKmylB,gBAAgB9F,IAAauE,oBAAoBhxf,KAAYixf,GAE7E/C,WAAWhmV,IACP9nQ,KAAKkxlB,UAAU/tlB,KAAK2kQ,IAExBsnV,yBAAyBtnV,IACrB9nQ,KAAKmxlB,cAAchulB,KAAK2kQ,IAE5BgtV,oBAAoBl1f,GAAS62f,GAAkBpK,GAAa3W,GAAaghB,IACrE,IAAIviB,GAAU,GACd,GAAIsiB,GAAkB,CAClB,MAAME,GAAwB32lB,KAAKmwlB,wBAAwBtvlB,IAAI++F,IAC3D+2f,KACAxiB,GAAUwiB,QAGb,CACD,MAAM5H,GAAiB/ulB,KAAKyulB,iBAAiB5tlB,IAAI++F,IACjD,GAAImvf,GAAgB,CAChB,MAAM6H,IAAsBF,IAAgBA,IAAgB3J,GAC5DgC,GAAexmlB,QAAQ+skB,KACfA,GAAOoZ,SAENkI,IAAsBthB,GAAOI,aAAeA,IAEjDvB,GAAQhxkB,KAAKmykB,OAIzB,OAAI+W,IAAe3W,MACfvB,GAAUA,GAAQztkB,OAAO4ukB,MACjB+W,IAAeA,IAAe/W,GAAO+W,aAErC3W,IAAeA,IAAeJ,GAAOI,eAK1CvB,GAEX0gB,sBAAsBxI,GAAa3J,GAAaiS,IAC5C,MAAMjf,GAAcgN,GAAYhN,YAC1B9jK,GAAc8wK,GAAY9if,QAG1Bi3f,GAAoBnU,GAAYwF,yBAAsBtvO,EAAYyzO,GAClEyK,GAAoBpU,GAAYwF,yBAAsBtvO,EAAY88N,GACxE,UAAWqhB,MAAuBrU,GAAYb,UAAW,CACrD,MAAMjif,GAAUm3f,GAAoBn3f,QAC9B62f,GAAmB72f,KAAYgyU,GAC/BuiK,GAAUkM,GAAgBsU,GAAuB/0f,GAAS,IACxC5/F,KAAK80lB,oBAAoBl1f,GAAS62f,GAAkBI,GAAmBC,GAAmBpU,GAAYzpD,SAC9G1whB,QAAQ+skB,KACpB,MAAM0hB,GAAa1hB,GAAO2hB,gBACtBD,GAAWljM,eACXkjM,GAAWljM,gBAEfwhL,GAAOx7T,UACPq6T,GAAQhxkB,KAAKmykB,MAKrBiZ,GAAY38K,GAAa8wK,GAAYyF,YAEzC2N,gBAAgBzJ,GAAa3J,GAAaiS,GAAuBrB,GAAmB8B,GAAcF,IAC9F,MAAMxf,GAAcgN,GAAYhN,YAC1B9jK,GAAc8wK,GAAY9if,QAG1Bs3f,GAAoB,GACpBC,GAAsB,IAAI1xY,IAC1B2xY,GAAiB,IAAI3xY,IACrB4xY,GAAgB3U,GAAYb,UAAU5ujB,IAAI8jkB,KAC5C,MAAMn3f,GAAUm3f,GAAoBn3f,QACpCu3f,GAAoBrvc,IAAIloD,IAExB,MAAMwjK,GAAUxjK,GAAQ+sf,IACxB,GAAIvpV,IAAWA,GAAQqpV,qBACnB,OAAO,IAAIrY,KAAoB2iB,GAAoBtrd,SAAUsrd,GAAoB9/e,OACrF,MAAMw/e,GAAmB72f,KAAYgyU,GAC/BolK,GAsRlB,YAA6B7C,IACzB,MAAMmjB,GAAe,GACrBC,UAA0BpjB,GAASmjB,IAC5BA,GAzRyBE,EAAqB7C,GAAsB9zlB,IAAI++F,KAAYusf,IAC9El5jB,IAAIq8S,IAAKA,GAAE2nR,kBACXvwlB,OAAO4oU,KAKR,MAAM4vK,GAAK5vK,GACX,QAAO4vK,GAAGt/Y,SAAUs/Y,GAAGt/Y,UAAYA,EAAU,GAE3C40e,GAAY4gB,GAAav0lB,IAAI++F,IAC7B60e,GAAaygB,GAAcr0lB,IAAI++F,IAC/B0tb,GAAYi+D,GAAmBvrlB,KAAKs0kB,OAAQt0kB,KAAKoqlB,YAAaxqf,EAASm3f,GAAoBzpE,UAAWknD,GAAWC,IACjHa,GAASt1kB,KAAKsrlB,aAAayL,GAAqBzpE,GAAW0pD,IAMjE,GAHI+f,GAAoBnW,aAAe0S,IACnC8D,GAAetvc,IAAIloD,IAEnB62f,GAAkB,CAClB,MAAMgB,GAAgB,IAAIvJ,GAA0B7B,GAAa3W,GAAa91e,IAC9E63f,GAAc1B,cAAczgB,IAC5B4hB,GAAkB/zlB,KAAKs0lB,IAE3B,OAAOniB,KAEX4hB,GAAkB3ulB,QAAQ+skB,KACtB+K,GAAgBrglB,KAAKmwlB,wBAAyB7a,GAAO11e,QAAS,IAAIz8F,KAAKmykB,IACvEA,GAAOpiL,OAAO,IA8H1B,YAA4BjgY,GAAKqD,GAAKtS,IAClC,IAAI0zkB,GACJ,GAAIzkkB,cAAe06U,KAEf,GADA+pP,GAAgBzkkB,GAAIpyB,IAAIy1B,IACpBohkB,GAAe,CACf,GAAIA,GAAcl0lB,OAAQ,CACtB,MAAMmvC,GAAQ+kjB,GAActmlB,QAAQ4S,IACpC0zkB,GAAclqkB,OAAOmlB,GAAO,GAEJ,GAAxB+kjB,GAAcl0lB,QACdyvB,GAAI1F,OAAO+I,aAKnBohkB,GAAgBzkkB,GAAIqD,IAChBohkB,GAAe,CACf,GAAIA,GAAcl0lB,OAAQ,CACtB,MAAMmvC,GAAQ+kjB,GAActmlB,QAAQ4S,IACpC0zkB,GAAclqkB,OAAOmlB,GAAO,GAEJ,GAAxB+kjB,GAAcl0lB,eACPyvB,GAAIqD,IAIvB,OAAOohkB,GAxJqBC,CAAmB33lB,KAAKmwlB,wBAAyB7a,GAAO11e,QAAS01e,OAEzF6hB,GAAoB5ulB,QAAQq3F,IAAWw1X,GAASx1X,GAAS63e,KACzD,MAAMnC,GAASsW,GAAoByL,IACnC/hB,UAAOniL,UAAU,KACbgkM,GAAoB5ulB,QAAQq3F,IAAWy1X,GAAYz1X,GAAS63e,KAC5DmK,GAAUhwK,GAAa8wK,GAAY0F,YAIvCgP,GAAe7ulB,QAAQq3F,KACnBygf,GAAgBiT,GAAmB1zf,GAAS,IAAIz8F,KAAKmykB,MAElDA,GAEXgW,aAAa5I,GAAap1D,GAAW0pD,IACjC,OAAI1pD,GAAU9phB,OAAS,EACZxD,KAAKs0kB,OAAOl1T,QAAQsjU,GAAY9if,QAAS0tb,GAAWo1D,GAAYj3c,SAAUi3c,GAAYzre,MAAOyre,GAAY3L,OAAQC,IAIrH,IAAI5C,KAAoBsO,GAAYj3c,SAAUi3c,GAAYzre,QAGzE,SACIp3G,YAAYwslB,GAAa3W,GAAa91e,IAClC5/F,KAAKqslB,YAAcA,GACnBrslB,KAAK01kB,YAAcA,GACnB11kB,KAAK4/F,QAAUA,GACf5/F,KAAK43lB,QAAU,IAAIxjB,KACnBp0kB,KAAK63lB,qBAAsB,EAC3B73lB,KAAK83lB,iBAAmB,GACxB93lB,KAAKqgK,WAAY,EACjBrgK,KAAK0wlB,kBAAmB,EACxB1wlB,KAAKstB,UAAW,EAChBttB,KAAK0ulB,QAAS,EACd1ulB,KAAKk5hB,UAAY,EAErB68D,cAAczgB,IACNt1kB,KAAK63lB,sBAET73lB,KAAK43lB,QAAUtiB,GACf/rjB,OAAO+hB,KAAKtrC,KAAK83lB,kBAAkBvvlB,QAAQgllB,KACvCvtlB,KAAK83lB,iBAAiBvK,IAAOhllB,QAAQu/P,IAAYkkV,GAAe1W,GAAQiY,QAAO30O,EAAW9wG,OAE9F9nQ,KAAK83lB,iBAAmB,GACxB93lB,KAAK63lB,qBAAsB,EAC3B73lB,KAAKy1lB,kBAAkBngB,GAAOp8C,WAC9Bl5hB,KAAK0ulB,QAAS,GAElBuI,gBACI,OAAOj3lB,KAAK43lB,QAEhBnC,kBAAkBv8D,IACdl5hB,KAAKk5hB,UAAYA,GAErBi9D,iBAAiB7gB,IACb,MAAMhmQ,GAAItvU,KAAK43lB,QACXtoR,GAAEskF,iBACF0hL,GAAOriL,QAAQ,IAAM3jF,GAAEskF,gBAAgB,UAE3C0hL,GAAOpiL,OAAO,IAAMlzZ,KAAKyzZ,UACzB6hL,GAAOniL,UAAU,IAAMnzZ,KAAK85Q,WAEhCi+U,YAAYntiB,GAAMk9M,IACdu4U,GAAgBrglB,KAAK83lB,iBAAkBltiB,GAAM,IAAIznD,KAAK2kQ,IAE1DorJ,OAAOpvX,IACC9jC,KAAK0ulB,QACL1ulB,KAAK+3lB,YAAY,OAAQj0jB,IAE7B9jC,KAAK43lB,QAAQ1kM,OAAOpvX,IAExBmvX,QAAQnvX,IACA9jC,KAAK0ulB,QACL1ulB,KAAK+3lB,YAAY,QAASj0jB,IAE9B9jC,KAAK43lB,QAAQ3kM,QAAQnvX,IAEzBqvX,UAAUrvX,IACF9jC,KAAK0ulB,QACL1ulB,KAAK+3lB,YAAY,UAAWj0jB,IAEhC9jC,KAAK43lB,QAAQzkM,UAAUrvX,IAE3Bk8K,OACIhgN,KAAK43lB,QAAQ53Y,OAEjBozM,aACI,OAAOpzZ,KAAK0ulB,QAAiB1ulB,KAAK43lB,QAAQxkM,aAE9Cp7G,QACKh4S,KAAK0ulB,QAAU1ulB,KAAK43lB,QAAQ5/S,OAEjCu7G,SACKvzZ,KAAK0ulB,QAAU1ulB,KAAK43lB,QAAQrkM,QAEjCC,WACKxzZ,KAAK0ulB,QAAU1ulB,KAAK43lB,QAAQpkM,UAEjCC,SACIzzZ,KAAK43lB,QAAQnkM,SAEjB35I,UACI95Q,KAAKqgK,WAAY,EACjBrgK,KAAK43lB,QAAQ99U,UAEjB/5I,SACK//H,KAAK0ulB,QAAU1ulB,KAAK43lB,QAAQ73d,QAEjC2zR,YAAYpkF,IACHtvU,KAAK0ulB,QACN1ulB,KAAK43lB,QAAQlkM,YAAYpkF,IAGjCqkF,cACI,OAAO3zZ,KAAK0ulB,OAAS,EAAI1ulB,KAAK43lB,QAAQjkM,cAG1CC,gBAAgB4hL,IACZ,MAAMlmQ,GAAItvU,KAAK43lB,QACXtoR,GAAEskF,iBACFtkF,GAAEskF,gBAAgB4hL,KAsC9B,YAAuBpqL,IACnB,OAAOA,IAA6B,IAArBA,GAAKpnG,QAAgB,CAKxC,YAAsBpkN,GAAS57E,IAC3B,MAAMs7E,GAAWM,GAAQ7sE,MAAM9O,QAC/B27E,UAAQ7sE,MAAM9O,QAAmB,MAATD,GAAgBA,GAAQ,OACzCs7E,GAEX,YAA+B04f,GAAW1jB,GAAQhnY,GAAU2qZ,GAAiBC,IACzE,MAAMC,GAAY,GAClB7qZ,GAAS/kM,QAAQq3F,IAAWu4f,GAAUh1lB,KAAKi1lB,GAAax4f,MACxD,MAAMy4f,GAAiB,GACvBJ,GAAgB1vlB,QAAQ,CAACq6W,GAAOhjR,MAC5B,MAAM5f,GAAS,GACf4iS,GAAMr6W,QAAQs1I,KACV,MAAM75H,GAAQg8D,GAAO69D,IAAQy2b,GAAOwC,aAAal3e,GAASi+C,GAAMq6c,MAG3Dl0kB,IAAyB,GAAhBA,GAAMxgB,UAChBo8F,GAAQ+sf,IAAgBD,GACxB2L,GAAel1lB,KAAKy8F,OAG5Bo4f,GAAU14V,IAAI1/J,GAAS5f,MAI3B,IAAI9/E,GAAI,EACRotM,UAAS/kM,QAAQq3F,IAAWw4f,GAAax4f,GAASu4f,GAAUj4lB,QACrDm4lB,GAYX,YAAsBC,GAAOjvjB,IACzB,MAAMkvjB,GAAU,IAAI5qP,IAEpB,GADA2qP,GAAM/vlB,QAAQ4qT,IAAQolS,GAAQj5V,IAAI6zD,GAAM,KACpB,GAAhB9pR,GAAM7lC,OACN,OAAO+0lB,GACX,MACMC,GAAU,IAAI/yY,IAAIp8K,IAClBovjB,GAAe,IAAI9qP,IACzB,YAAiBy9C,IACb,IAAKA,GACD,OALU,EAMd,IAAIj4F,GAAOslS,GAAa53lB,IAAIuqZ,IAC5B,GAAIj4F,GACA,OAAOA,GACX,MAAMryL,GAASsqR,GAAKvhE,WACpB,OACI12B,GADAolS,GAAQz1O,IAAIhiP,IACLA,GAEN88E,GAAYklK,IAAIhiP,IAbP,EAiBH43d,GAAQ53d,IAEnB23d,GAAan5V,IAAI8rJ,GAAMj4F,IAChBA,GAEX9pR,UAAM9gC,QAAQ6iZ,KACV,MAAMj4F,GAAOulS,GAAQttM,IAvBP,IAwBVj4F,IACAolS,GAAQ13lB,IAAIsyT,IAAMhwT,KAAKioZ,MAGxBmtM,GAEX,YAAkB34f,GAAS2zK,IACvB,IAAIsiD,GACyB,QAA5BA,GAAKj2N,GAAQmrT,iBAA8B,IAAPl1F,IAAyBA,GAAG/tK,IAAIyrH,IAEzE,YAAqB3zK,GAAS2zK,IAC1B,IAAIsiD,GACyB,QAA5BA,GAAKj2N,GAAQmrT,iBAA8B,IAAPl1F,IAAyBA,GAAGnxC,OAAOnR,IAE5E,YAAuCu8U,GAAQlwf,GAASu0e,IACpDyX,GAAoBzX,IAASjhL,OAAO,IAAM48L,GAAOL,iBAAiB7vf,KAOtE,YAAmCu0e,GAASmjB,IACxC,QAASp3lB,GAAI,EAAGA,GAAIi0kB,GAAQ3wkB,OAAQtD,KAAK,CACrC,MAAMo1kB,GAASnB,GAAQj0kB,IACnBo1kB,cAAkBjB,KAClBkjB,GAA0BjiB,GAAOnB,QAASmjB,IAG1CA,GAAan0lB,KAAKmykB,KAgB9B,YAAgC11e,GAAS4zf,GAAqBC,IAC1D,MAAMkF,GAAYlF,GAAqB5ylB,IAAI++F,IAC3C,IAAK+4f,GACD,OAAO,EACX,IAAIC,GAAWpF,GAAoB3ylB,IAAI++F,IACvC,OAAIg5f,GACAD,GAAUpwlB,QAAQ7F,IAAQk2lB,GAAS9wc,IAAIplJ,KAGvC8wlB,GAAoBl0V,IAAI1/J,GAAS+4f,IAErClF,GAAqBlmkB,OAAOqyE,KACrB,EAGX,SACI//F,YAAYorlB,GAAUrP,GAASwO,IAC3BpqlB,KAAKirlB,SAAWA,GAChBjrlB,KAAK47kB,QAAUA,GACf57kB,KAAKoqlB,YAAcA,GACnBpqlB,KAAK64lB,cAAgB,GAErB74lB,KAAKuxlB,kBAAoB,CAAC3xf,GAAS0gE,MAAV,EACzBtgK,KAAK84lB,kBAAoB,IAAIC,GAA0B9N,GAAUrP,GAASwO,IAC1EpqlB,KAAKg5lB,gBAAkB,IAAIC,GAAwBhO,GAAUrP,GAASwO,IACtEpqlB,KAAK84lB,kBAAkBvH,kBAAoB,CAAC3xf,GAAS0gE,KAAYtgK,KAAKuxlB,kBAAkB3xf,GAAS0gE,IAErG4xb,gBAAgBgH,GAAa7M,GAAa93L,GAAa3pW,GAAMyqR,IACzD,MAAM8jR,GAAWD,GAAc,IAAMtuiB,GACrC,IAAIy/B,GAAUrqF,KAAK64lB,cAAcM,IACjC,IAAK9ugB,GAAS,CACV,MAAMtnF,GAAS,GACT24kB,GAAW,GACXlpP,GAAM44P,GAAkBprlB,KAAK47kB,QAASvmQ,GAAUtyU,GAAQ24kB,IAC9D,GAAI34kB,GAAOS,OACP,MAh3HhB,WAA4BonD,GAAM7nD,IAC9B,OAAO,IAAIs3d,qBAAc,KAAiC65G,EACsE,CA82H9GklB,GAEN1d,GAASl4kB,OAGb6mF,GApuDZ,WAAsBz/B,GAAM4nS,GAAK+hP,IAC7B,OAAO,IAAI8kB,GAAiBzuiB,GAAM4nS,GAAK+hP,IAmuDrB+kB,CAAa1uiB,GAAM4nS,GAAKxyV,KAAKoqlB,aACvCpqlB,KAAK64lB,cAAcM,IAAY9ugB,GAEnCrqF,KAAK84lB,kBAAkB5G,gBAAgB7F,GAAazhiB,GAAMy/B,IAE9DknN,SAAS86S,GAAa93L,IAClBv0Z,KAAK84lB,kBAAkBvnT,SAAS86S,GAAa93L,IAEjDz6I,QAAQuyU,GAAa/rb,IACjBtgK,KAAK84lB,kBAAkBh/U,QAAQuyU,GAAa/rb,IAEhDi5b,SAASlN,GAAazsf,GAASkhC,GAAQsxK,IACnCpyS,KAAK84lB,kBAAkBvI,WAAWlE,GAAazsf,GAASkhC,GAAQsxK,IAEpEonT,SAASnN,GAAazsf,GAAS0gE,GAASiyb,IACpCvylB,KAAK84lB,kBAAkBjJ,WAAWxD,GAAazsf,GAAS2yf,KAAiB,EAAOjyb,IAEpFm5b,kBAAkB75f,GAAS8pV,IACvB1pb,KAAK84lB,kBAAkBxG,sBAAsB1yf,GAAS8pV,IAE1D36J,QAAQs9T,GAAazsf,GAAS4xR,GAAUxtW,IACpC,GAA0B,KAAtBwtW,GAASr9U,OAAO,GAAW,CAC3B,MAAOk2B,GAAI03H,IAAU23Z,GAAqBloO,IACpC9xH,GAAO17O,GACbhkB,KAAKg5lB,gBAAgBrjB,QAAQtrgB,GAAIu1B,GAASmiG,GAAQ29D,SAGlD1/P,KAAK84lB,kBAAkBzugB,QAAQgigB,GAAazsf,GAAS4xR,GAAUxtW,IAGvE0mZ,OAAO2hL,GAAazsf,GAAS49V,GAAWm8J,GAAY7xV,IAEhD,GAA2B,KAAvB01L,GAAUrpZ,OAAO,GAAW,CAC5B,MAAOk2B,GAAI03H,IAAU23Z,GAAqBl8J,IAC1C,OAAOx9b,KAAKg5lB,gBAAgBtuL,OAAOrgW,GAAIu1B,GAASmiG,GAAQ+lE,IAE5D,OAAO9nQ,KAAK84lB,kBAAkBpuL,OAAO2hL,GAAazsf,GAAS49V,GAAWm8J,GAAY7xV,IAEtFqS,MAAMs2U,IAAc,GAChBzwlB,KAAK84lB,kBAAkB3+U,MAAMs2U,IAE7Btc,cACA,OAAOn0kB,KAAK84lB,kBAAkB3kB,QACzBnmkB,OAAOhO,KAAKg5lB,gBAAgB7kB,SAErC4e,oBACI,OAAO/ylB,KAAK84lB,kBAAkB/F;;;;;;;SA6CtC,SACIlzlB,YAAY67Z,GAAUk+L,GAAcC,IAChC75lB,KAAK07Z,SAAWA,GAChB17Z,KAAK45lB,aAAeA,GACpB55lB,KAAK65lB,WAAaA,GAClB75lB,KAAK09f,OAAS,EACd,IAAIo8F,GAAgBC,GAAmBC,uBAAuBn5lB,IAAI66Z,IAC7Do+L,IACDC,GAAmBC,uBAAuB16V,IAAIo8J,GAAUo+L,GAAgB,IAE5E95lB,KAAKi6lB,eAAiBH,GAE1BjxjB,QACQ7oC,KAAK09f,OAAS,IACV19f,KAAK45lB,cACLhY,GAAU5hlB,KAAK07Z,SAAU17Z,KAAK45lB,aAAc55lB,KAAKi6lB,gBAErDj6lB,KAAK09f,OAAS,GAGtBjqG,SACIzzZ,KAAK6oC,QACD7oC,KAAK09f,OAAS,IACdkkF,GAAU5hlB,KAAK07Z,SAAU17Z,KAAKi6lB,gBAC1Bj6lB,KAAK65lB,aACLjY,GAAU5hlB,KAAK07Z,SAAU17Z,KAAK65lB,YAC9B75lB,KAAK65lB,WAAa,MAEtB75lB,KAAK09f,OAAS,GAGtB5jP,UACI95Q,KAAKyzZ,SACDzzZ,KAAK09f,OAAS,IACdq8F,GAAmBC,uBAAuBzskB,OAAOvtB,KAAK07Z,UAClD17Z,KAAK45lB,eACLrL,GAAYvulB,KAAK07Z,SAAU17Z,KAAK45lB,cAChC55lB,KAAK65lB,WAAa,MAElB75lB,KAAK65lB,aACLtL,GAAYvulB,KAAK07Z,SAAU17Z,KAAK65lB,YAChC75lB,KAAK65lB,WAAa,MAEtBjY,GAAU5hlB,KAAK07Z,SAAU17Z,KAAKi6lB,gBAC9Bj6lB,KAAK09f,OAAS,IAK1B,YAAmC19a,IAC/B,IAAIqG,GAAS,KACb,MAAMu8R,GAAQr5V,OAAO+hB,KAAK00C,IAC1B,QAAS9/E,GAAI,EAAGA,GAAI0iX,GAAMp/W,OAAQtD,KAAK,CACnC,MAAM29I,GAAO+kO,GAAM1iX,IACfg6lB,GAAqBr8c,MACrBx3D,GAASA,IAAU,GACnBA,GAAOw3D,IAAQ79D,GAAO69D,KAG9B,OAAOx3D,GAEX,YAA8Bw3D,IAC1B,MAAgB,YAATA,IAA+B,aAATA,EAAS,CAd1Ck8c,GAAmBC,uBAA0C,IAAIzzO,QAiBjE,SACI1mX,YAAY+/F,GAAS0tb,GAAWnrQ,GAASg4U,IACrCn6lB,KAAK4/F,QAAUA,GACf5/F,KAAKsthB,UAAYA,GACjBtthB,KAAKmiR,QAAUA,GACfniR,KAAKm6lB,eAAiBA,GACtBn6lB,KAAKo6lB,WAAa,GAClBp6lB,KAAKq6lB,YAAc,GACnBr6lB,KAAKs6lB,cAAgB,GACrBt6lB,KAAKwhjB,cAAe,EACpBxhjB,KAAKu6lB,WAAY,EACjBv6lB,KAAKw6lB,UAAW,EAChBx6lB,KAAKsib,YAAa,EAClBtib,KAAK0hY,KAAO,EACZ1hY,KAAKi2lB,aAAe,KACpBj2lB,KAAKy6lB,gBAAkB,GACvBz6lB,KAAK06lB,UAAYv4U,GAAQ12I,SACzBzrI,KAAK26lB,OAASx4U,GAAQlrK,OAAY,EAClCj3G,KAAK0hY,KAAO1hY,KAAK06lB,UAAY16lB,KAAK26lB,OAEtC3nM,YACShzZ,KAAKu6lB,YACNv6lB,KAAKu6lB,WAAY,EACjBv6lB,KAAKo6lB,WAAW7xlB,QAAQu7B,IAAMA,MAC9B9jC,KAAKo6lB,WAAa,IAG1Bp6Y,OACIhgN,KAAKsrlB,eACLtrlB,KAAK46lB,4BAETtP,eACI,GAAItrlB,KAAKwhjB,aACL,OACJxhjB,KAAKwhjB,cAAe,EACpB,MAAMl0B,GAAYtthB,KAAKsthB,UACvBtthB,KAAK66lB,UACD76lB,KAAK86lB,qBAAqB96lB,KAAK4/F,QAAS0tb,GAAWtthB,KAAKmiR,SAC5DniR,KAAK+6lB,eAAiBztE,GAAU9phB,OAAS8phB,GAAUA,GAAU9phB,OAAS,GAAK,GAC3ExD,KAAK66lB,UAAUpwV,iBAAiB,SAAU,IAAMzqQ,KAAKgzZ,aAEzD4nM,4BAEQ56lB,KAAK26lB,OACL36lB,KAAKg7lB,uBAGLh7lB,KAAK66lB,UAAUtnM,QAIvBunM,qBAAqBl7f,GAAS0tb,GAAWnrQ,IAGrC,OAAOviL,GAAQw/K,QAAWkuQ,GAAWnrQ,IAEzC8wI,QAAQnvX,IACJ9jC,KAAKq6lB,YAAYl3lB,KAAK2gC,IAE1BovX,OAAOpvX,IACH9jC,KAAKo6lB,WAAWj3lB,KAAK2gC,IAEzBqvX,UAAUrvX,IACN9jC,KAAKs6lB,cAAcn3lB,KAAK2gC,IAE5Bk0Q,OACIh4S,KAAKsrlB,eACAtrlB,KAAKozZ,eACNpzZ,KAAKq6lB,YAAY9xlB,QAAQu7B,IAAMA,MAC/B9jC,KAAKq6lB,YAAc,GACnBr6lB,KAAKw6lB,UAAW,EACZx6lB,KAAKm6lB,gBACLn6lB,KAAKm6lB,eAAetxjB,SAG5B7oC,KAAK66lB,UAAU7iT,OAEnBu7G,QACIvzZ,KAAKggN,OACLhgN,KAAK66lB,UAAUtnM,QAEnBE,SACIzzZ,KAAKggN,OACDhgN,KAAKm6lB,gBACLn6lB,KAAKm6lB,eAAe1mM,SAExBzzZ,KAAKgzZ,YACLhzZ,KAAK66lB,UAAUpnM,SAEnB1zR,QACI//H,KAAKg7lB,uBACLh7lB,KAAKsib,YAAa,EAClBtib,KAAKu6lB,WAAY,EACjBv6lB,KAAKw6lB,UAAW,EAEpBQ,uBACQh7lB,KAAK66lB,WACL76lB,KAAK66lB,UAAUx9kB,SAGvBm2Y,UACIxzZ,KAAK+/H,QACL//H,KAAKg4S,OAETo7G,aACI,OAAOpzZ,KAAKw6lB,SAEhB1gV,UACS95Q,KAAKsib,aACNtib,KAAKsib,YAAa,EAClBtib,KAAKg7lB,uBACLh7lB,KAAKgzZ,YACDhzZ,KAAKm6lB,gBACLn6lB,KAAKm6lB,eAAergV,UAExB95Q,KAAKs6lB,cAAc/xlB,QAAQu7B,IAAMA,MACjC9jC,KAAKs6lB,cAAgB,IAG7B5mM,YAAYpkF,SACespC,IAAnB54W,KAAK66lB,WACL76lB,KAAKggN,OAEThgN,KAAK66lB,UAAUze,YAAc9sQ,GAAItvU,KAAK0hY,KAE1CiyB,cACI,OAAO3zZ,KAAK66lB,UAAUze,YAAcp8kB,KAAK0hY,KAEzCw3J,gBACA,OAAOl5hB,KAAK26lB,OAAS36lB,KAAK06lB,UAE9B5mM,gBACI,MAAM9zU,GAAS,GACf,GAAIhgF,KAAKozZ,aAAc,CAInB,MAAMwzL,GAAgB5mlB,KAAK+6lB,eAC3BxxkB,OAAO+hB,KAAKs7iB,IAAer+kB,QAAQs1I,KACnB,UAARA,KACA79D,GAAO69D,IAAQ79I,KAAKu6lB,UAAY3T,GAAc/oc,IAAQi5b,GAAa92kB,KAAK4/F,QAASi+C,OAI7F79I,KAAKy6lB,gBAAkBz6gB,GAG3B4zU,gBAAgB4hL,IACZ,MAAMylB,GAAuB,SAAbzlB,GAAuBx1kB,KAAKq6lB,YAAcr6lB,KAAKo6lB,WAC/Da,GAAQ1ylB,QAAQu7B,IAAMA,MACtBm3jB,GAAQz3lB,OAAS,GAIzB,SACImzkB,sBAAsB94b,IAClB,OAAO84b,GAAsB94b,IAEjC+4b,eAAel7K,GAAUm7K,IAErB,OAAO,EAEXJ,gBAAgBX,GAAMC,IAClB,OAAOU,GAAgBX,GAAMC,IAEjCI,iBAAiBv2e,IACb,OAAOu2e,GAAiBv2e,IAE5B1nE,MAAM0nE,GAASoyT,GAAUvzT,IACrB,OAAOi4e,GAAY92e,GAASoyT,GAAUvzT,IAE1Cq4e,aAAal3e,GAASi+C,GAAM4zJ,IACxB,OAAOl2P,OAAOw9B,iBAAiB6mB,IAASi+C,IAE5CuhI,QAAQx/K,GAAS0tb,GAAW7hZ,GAAUx0B,GAAO8/d,GAAQC,GAAkB,IACnE,MACMkkB,GAAgB,CAAEzvd,YAAUx0B,SAAOypI,KADnB,GAATzpI,GAAa,OAAS,YAI/B8/d,KACAmkB,GAAcnkB,OAAYA,IAE9B,MAAMokB,GAAiB,GACjBC,GAA8BpkB,GAAgBtwkB,OAAO4ukB,IAAUA,cAAkB+lB,KAlsH/F,YAAwC5vd,GAAUx0B,IAC9C,OAAoB,IAAbw0B,IAA4B,IAAVx0B,EAAU,EAksH3Bqkf,CAA+B7vd,GAAUx0B,KACzCmkf,GAA4B7ylB,QAAQ+skB,KAChC,IAAIt1f,GAASs1f,GAAOmlB,gBACpBlxkB,OAAO+hB,KAAK00C,IAAQz3E,QAAQs1I,IAAQs9c,GAAet9c,IAAQ79D,GAAO69D,OAI1EyvY,GAvsHR,YAA4C1tb,GAAS0tb,GAAW6tE,IAC5D,MAAMI,GAAqBhykB,OAAO+hB,KAAK6vjB,IACvC,GAAII,GAAmB/3lB,QAAU8phB,GAAU9phB,OAAQ,CAC/C,IAAIg4lB,GAAmBluE,GAAU,GAC7BmuE,GAAoB,GAOxB,GANAF,GAAmBhzlB,QAAQs1I,KAClB29c,GAAiBnujB,eAAewwG,KACjC49c,GAAkBt4lB,KAAK06I,IAE3B29c,GAAiB39c,IAAQs9c,GAAet9c,MAExC49c,GAAkBj4lB,OAElB,QAAStD,GAAI,EAAGA,GAAIothB,GAAU9phB,OAAQtD,KAAK,CACvC,IAAIghf,GAAKosC,GAAUpthB,IACnBu7lB,GAAkBlzlB,QAAQ,SAAUs1I,IAChCqjW,GAAGrjW,IAAQi5b,GAAal3e,GAASi+C,OAKjD,OAAOyvY,GAkrHSouE,CAAmC97f,GAD/C0tb,GAAYA,GAAUr6f,IAAI+sD,IAAUqmgB,GAAWrmgB,IAAQ,IACYm7gB,IACnE,MAAMQ,GAxRd,YAAoC/7f,GAAS5f,IACzC,IAAI47gB,GAAc,KACdC,GAAY,KAChB,OAAIjmlB,MAAMukD,QAAQ6lB,KAAWA,GAAOx8E,QAChCo4lB,GAAcE,GAA0B97gB,GAAO,IAC3CA,GAAOx8E,OAAS,IAChBq4lB,GAAYC,GAA0B97gB,GAAOA,GAAOx8E,OAAS,MAG5Dw8E,KACL47gB,GAAcE,GAA0B97gB,KAEpC47gB,IAAeC,GAAa,IAAI9B,GAAmBn6f,GAASg8f,GAAaC,IAC7E,KA2QsBE,CAA2Bn8f,GAAS0tb,IAC1D,OAAO,IAAI+tE,GAAoBz7f,GAAS0tb,GAAW4tE,GAAeS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SC3xI1E,iBAAsCK,KAClCn8lB,YAAYo8lB,GAAcz2L,IACtB75Y,QACA3rB,KAAKk8lB,iBAAmB,EACxB,MAAMC,GAAW,CAAE9xhB,GAAI,IAAKgwM,cAAe+hV,yBAAwBp8gB,OAAQ,GAAIt9E,KAAM,CAAEq/Q,UAAW,KAClG/hR,KAAKg+F,UAAYi+f,GAAa7yH,eAAe5jE,GAAIz2X,KAAMotjB,IAE3Dl3H,MAAMljN,IACF,MAAM13M,GAAKrqE,KAAKk8lB,iBAAiBr1lB,WACjC7G,KAAKk8lB,mBACL,MAAM1zO,GAAQ5yW,MAAMukD,QAAQ4nN,KAAavhJ,QAASuhJ,IAAaA,GAC/Ds6U,UAAsBr8lB,KAAKg+F,UAAW,KAAM3zB,GAAI,WAAY,CAACm+S,KACtD,IAAI8zO,GAAwBjyhB,GAAIrqE,KAAKg+F,YAGpDu+f,GAAwBx9gB,UAAxB,4BAAqHw9gB,IAAVt9gB,qBAAmDA,oBAAnDA,qBAAmFU,SAC9L48gB,GAAwBvwc,WADmF/sE,+BAC3G,OAAyHs9gB,GAAzHl6lB,QAAyHk6lB,GAAzH,YASA,iBAAsCC,KAClC38lB,YAAYw0Z,GAAKr2T,IACbryE,QACA3rB,KAAKq0Z,IAAMA,GACXr0Z,KAAKg+F,UAAYA,GAErB7V,OAAOyX,GAASuiL,IACZ,OAAO,IAAIs6U,GAAwBz8lB,KAAKq0Z,IAAKz0T,GAASuiL,IAAW,GAAIniR,KAAKg+F,YAGlF,SACIn+F,YAAYwqE,GAAIu1B,GAASuiL,GAASnkL,IAC9Bh+F,KAAKqqE,GAAKA,GACVrqE,KAAK4/F,QAAUA,GACf5/F,KAAKg+F,UAAYA,GACjBh+F,KAAKi2lB,aAAe,KACpBj2lB,KAAKw6lB,UAAW,EAChBx6lB,KAAKk5hB,UAAY,EACjBl5hB,KAAK08lB,SAAS,SAAUv6U,IAE5Bw6U,QAAQn/J,GAAW11L,IACf,OAAO9nQ,KAAKg+F,UAAU0sU,OAAO1qa,KAAK4/F,QAAU,KAAI5/F,KAAKqqE,MAAMmzX,KAAa11L,IAE5E40V,SAAS/mB,MAAYj2U,IACjB,OAAO28V,GAAsBr8lB,KAAKg+F,UAAWh+F,KAAK4/F,QAAS5/F,KAAKqqE,GAAIsrgB,GAASj2U,IAEjFwzJ,OAAOpvX,IACH9jC,KAAK28lB,QAAQ,OAAQ74jB,IAEzBmvX,QAAQnvX,IACJ9jC,KAAK28lB,QAAQ,QAAS74jB,IAE1BqvX,UAAUrvX,IACN9jC,KAAK28lB,QAAQ,UAAW74jB,IAE5Bk8K,OACIhgN,KAAK08lB,SAAS,QAElBtpM,aACI,OAAOpzZ,KAAKw6lB,SAEhBxiT,OACIh4S,KAAK08lB,SAAS,QACd18lB,KAAKw6lB,UAAW,EAEpBjnM,QACIvzZ,KAAK08lB,SAAS,SAElBlpM,UACIxzZ,KAAK08lB,SAAS,WAElBjpM,SACIzzZ,KAAK08lB,SAAS,UAElB5iV,UACI95Q,KAAK08lB,SAAS,WAElB38d,QACI//H,KAAK08lB,SAAS,SACd18lB,KAAKw6lB,UAAW,EAEpB9mM,YAAYpkF,IACRtvU,KAAK08lB,SAAS,cAAeptR,IAEjCqkF,cACI,IAAI99F,GAAI4/F,GACR,OAAuH,QAA/GA,GAAwD,QAAlD5/F,GAAK71T,KAAKg+F,UAAU8xf,OAAO3b,SAASn0kB,KAAKqqE,WAAwB,IAAPwrP,QAAgB,EAASA,GAAG89F,qBAAkC,IAAP8B,GAAgBA,GAAK,GAG5J,YAA+Bs4F,GAAUnuZ,GAASv1B,GAAIsrgB,GAASj2U,IAC3D,OAAOquP,GAAS9vZ,YAAY2B,GAAU,KAAIv1B,MAAMsrgB,KAAWj2U,IAG/D,MACMk9V,GAA0B,aAChC,SACI/8lB,YAAYg9lB,GAAU/M,GAAQppK,IAC1B1mb,KAAK68lB,SAAWA,GAChB78lB,KAAK8vlB,OAASA,GACd9vlB,KAAK0mb,MAAQA,GACb1mb,KAAK88lB,WAAa,EAClB98lB,KAAK+8lB,aAAe,EACpB/8lB,KAAKg9lB,0BAA4B,GACjCh9lB,KAAKi9lB,eAAiB,IAAItvP,IAC1B3tW,KAAKk9lB,cAAgB,EACrBl9lB,KAAKm9lB,QAAU9lf,QAAQi2O,QAAQ,GAC/BwiQ,GAAOyB,kBAAoB,CAAC3xf,GAASi9f,MAKjC,MAAMhzQ,GAA0B,MAAbgzQ,QAA2C,EAASA,GAAShzQ,WAAWjqP,IACvFiqP,IACAgzQ,GAAS1tjB,YAAY06S,GAAYjqP,KAI7CwpY,eAAe70E,GAAa3sZ,IACxB,MAGMi1lB,GAAW78lB,KAAK68lB,SAASzzH,eAAe70E,GAAa3sZ,IAC3D,KAAK2sZ,IAAgB3sZ,IAASA,GAAKlF,MAASkF,GAAKlF,KAAKq/Q,WAAc,CAChE,IAAIgsO,GAAW/tf,KAAKi9lB,eAAep8lB,IAAIg8lB,IACvC,OAAK9uG,KACDA,GAAW,IAAIqvG,GAPI,GAOsCP,GAAU78lB,KAAK8vlB,QAExE9vlB,KAAKi9lB,eAAe39V,IAAIu9V,GAAU9uG,KAE/BA,GAEX,MAAMmrG,GAActxlB,GAAKyiE,GACnBgihB,GAAczklB,GAAKyiE,GAAK,IAAMrqE,KAAK88lB,WACzC98lB,KAAK88lB,aACL98lB,KAAK8vlB,OAAOv+S,SAAS86S,GAAa93L,IAClC,MAAM29L,GAAmB7ngB,KACjBz0E,MAAMukD,QAAQkwB,IACdA,GAAQ9hF,QAAQ2plB,IAGhBlylB,KAAK8vlB,OAAOoC,gBAAgBgH,GAAa7M,GAAa93L,GAAalqU,GAAQz/B,KAAMy/B,KAIzFgzgB,OAD0Bz1lB,GAAKlF,KAAKq/Q,UAClBx5Q,QAAQ2plB,IACnB,IAAIoL,GAAkBt9lB,KAAMqslB,GAAawQ,GAAU78lB,KAAK8vlB,QAEnE3jQ,QACInsV,KAAKk9lB,gBACDl9lB,KAAK68lB,SAAS1wQ,OACdnsV,KAAK68lB,SAAS1wQ,QAGtBoxQ,qBAEIv9lB,KAAKm9lB,QAAQzlf,KAAK,KACd13G,KAAK+8lB,iBAIbS,yBAAyBh9b,GAAO18H,GAAIphC,IAC5B89J,IAAS,GAAKA,GAAQxgK,KAAK+8lB,aAC3B/8lB,KAAK0mb,MAAMl+K,IAAI,IAAM1kO,GAAGphC,MAGiB,GAAzC1C,KAAKg9lB,0BAA0Bx5lB,QAC/B6zG,QAAQi2O,QAAQ,MAAM51O,KAAK,KACvB13G,KAAK0mb,MAAMl+K,IAAI,KACXxoQ,KAAKg9lB,0BAA0Bz0lB,QAAQq2kB,KACnC,MAAO96iB,GAAIphC,IAAQk8kB,GACnB96iB,GAAGphC,MAEP1C,KAAKg9lB,0BAA4B,OAI7Ch9lB,KAAKg9lB,0BAA0B75lB,KAAK,CAAC2gC,GAAIphC,MAE7ComC,MACI9oC,KAAKk9lB,gBAGqB,GAAtBl9lB,KAAKk9lB,eACLl9lB,KAAK0mb,MAAMhqB,kBAAkB,KACzB18Z,KAAKu9lB,qBACLv9lB,KAAK8vlB,OAAO31U,MAAMn6Q,KAAK+8lB,gBAG3B/8lB,KAAK68lB,SAAS/zjB,KACd9oC,KAAK68lB,SAAS/zjB,MAGtBiqjB,oBACI,OAAO/ylB,KAAK8vlB,OAAOiD,qBAG3B0K,GAAyB1+gB,UAAzB,4BAAsH0+gB,IA1LXx+gB,qBA0LqDA,oBA1LrDA,qBA0LqFS,IA1LrFT,qBA0LqHA,YAChOw+gB,GAAyBzxc,WA3LkF/sE,+BA2L3G,OAA0Hw+gB,GAA1Hp7lB,QAA0Ho7lB,GAA1H,YAIA,SACI59lB,YAAYwslB,GAAawQ,GAAU/M,IAC/B9vlB,KAAKqslB,YAAcA,GACnBrslB,KAAK68lB,SAAWA,GAChB78lB,KAAK8vlB,OAASA,GACd9vlB,KAAK09lB,YAAc19lB,KAAK68lB,SAASa,YAAerrlB,IAAMwqlB,GAASa,YAAYrrlB,IAAK,KAEhF3P,WACA,OAAO1C,KAAK68lB,SAASn6lB,KAEzBo3Q,UACI95Q,KAAK8vlB,OAAOh2U,QAAQ95Q,KAAKqslB,YAAarslB,KAAK68lB,UAC3C78lB,KAAK68lB,SAAS/iV,UAElBpzO,cAAckkB,GAAMghf,IAChB,OAAO5riB,KAAK68lB,SAASn2jB,cAAckkB,GAAMghf,IAE7Cz3H,cAAcnwZ,IACV,OAAOhkB,KAAK68lB,SAAS1oL,cAAcnwZ,IAEvC25kB,WAAW35kB,IACP,OAAOhkB,KAAK68lB,SAASc,WAAW35kB,IAEpCslB,YAAYw3F,GAAQ88d,IAChB59lB,KAAK68lB,SAASvzjB,YAAYw3F,GAAQ88d,IAClC59lB,KAAK8vlB,OAAOyJ,SAASv5lB,KAAKqslB,YAAauR,GAAU98d,IAAQ,GAE7DsxK,aAAatxK,GAAQ88d,GAAUC,GAAUC,IAAS,GAC9C99lB,KAAK68lB,SAASzqT,aAAatxK,GAAQ88d,GAAUC,IAE7C79lB,KAAK8vlB,OAAOyJ,SAASv5lB,KAAKqslB,YAAauR,GAAU98d,GAAQg9d,IAE7D3ujB,YAAY2xF,GAAQi9d,GAAUxL,IAC1BvylB,KAAK8vlB,OAAO0J,SAASx5lB,KAAKqslB,YAAa0R,GAAU/9lB,KAAK68lB,SAAUtK,IAEpEyL,kBAAkBC,GAAgBC,IAC9B,OAAOl+lB,KAAK68lB,SAASmB,kBAAkBC,GAAgBC,IAE3Dr0Q,WAAWuhE,IACP,OAAOprZ,KAAK68lB,SAAShzQ,WAAWuhE,IAEpC58D,YAAY48D,IACR,OAAOprZ,KAAK68lB,SAASruQ,YAAY48D,IAErCzkX,aAAas4D,GAAIr0C,GAAM5mC,GAAO4nhB,IAC1B5riB,KAAK68lB,SAASl2jB,aAAas4D,GAAIr0C,GAAM5mC,GAAO4nhB,IAEhDr2I,gBAAgBt2T,GAAIr0C,GAAMghf,IACtB5riB,KAAK68lB,SAAStnM,gBAAgBt2T,GAAIr0C,GAAMghf,IAE5Cx2E,SAASn2X,GAAIr0C,IACT5qD,KAAK68lB,SAASznI,SAASn2X,GAAIr0C,IAE/Byqa,YAAYp2X,GAAIr0C,IACZ5qD,KAAK68lB,SAASxnI,YAAYp2X,GAAIr0C,IAElCkva,SAAS76X,GAAIlsE,GAAO/O,GAAOozT,IACvBp3U,KAAK68lB,SAAS/iI,SAAS76X,GAAIlsE,GAAO/O,GAAOozT,IAE7C2iJ,YAAY96X,GAAIlsE,GAAOqkT,IACnBp3U,KAAK68lB,SAAS9iI,YAAY96X,GAAIlsE,GAAOqkT,IAEzCn5O,YAAYgB,GAAIr0C,GAAM5mC,IA1KD,KA2Kb4mC,GAAKzW,OAAO,IAA0ByW,IAAQgyiB,GAC9C58lB,KAAKy5lB,kBAAkBx6f,KAAMj7E,IAG7BhkB,KAAK68lB,SAAS5+f,YAAYgB,GAAIr0C,GAAM5mC,IAG5CqrE,SAAS+7T,GAAMpnY,IACXhkB,KAAK68lB,SAASxtgB,SAAS+7T,GAAMpnY,IAEjC0mZ,OAAOzgY,GAAQuzZ,GAAW11L,IACtB,OAAO9nQ,KAAK68lB,SAASnyL,OAAOzgY,GAAQuzZ,GAAW11L,IAEnD2xV,kBAAkB75f,GAAS57E,IACvBhkB,KAAK8vlB,OAAO2J,kBAAkB75f,GAAS57E,KAG/C,iBAAgCo5kB,GAC5Bv9lB,YAAYwC,GAASgqlB,GAAawQ,GAAU/M,IACxCnkkB,MAAM0gkB,GAAawQ,GAAU/M,IAC7B9vlB,KAAKqC,QAAUA,GACfrC,KAAKqslB,YAAcA,GAEvBpuf,YAAYgB,GAAIr0C,GAAM5mC,IAlMD,KAmMb4mC,GAAKzW,OAAO,GACU,KAAtBupK,GAASvpK,OAAO,IAAayW,IAAQgyiB,IACjC54kB,QAAkB40V,IAAV50V,MAA+BA,GACvChkB,KAAKy5lB,kBAAkBx6f,GAAIj7E,KAG3BhkB,KAAK8vlB,OAAO/gU,QAAQ/uR,KAAKqslB,YAAaptf,GAAIr0C,GAAK6sB,OAAO,GAAIzzD,IAI9DhkB,KAAK68lB,SAAS5+f,YAAYgB,GAAIr0C,GAAM5mC,IAG5C0mZ,OAAOzgY,GAAQuzZ,GAAW11L,IACtB,GAjNiB,KAiNb01L,GAAUrpZ,OAAO,GAAwB,CACzC,MAAMyrD,GAgBlB,YAAkC31D,IAC9B,OAAQA,QACC,OACD,OAAOxD,SAASsI,SACf,WACD,OAAOtI,aACN,SACD,OAAO8U,eAEP,OAAOtR,IAzBSk0jB,CAAyBl0jB,IACzC,IAAI2gB,GAAO4yY,GAAU/lX,OAAO,GACxB81gB,GAAQ,GAGZ,MAvNa,KAuNT3iiB,GAAKzW,OAAO,MACXyW,GAAM2iiB,IAsBvB,YAAkC7X,IAC9B,MAAM0oB,GAAW1oB,GAAYtkkB,QAAQ,KAC/Bi5E,GAAUqrf,GAAYv8jB,UAAU,EAAGillB,IACnC7Q,GAAQ7X,GAAYj+f,OAAO2mhB,GAAW,GAC5C,MAAO,CAAC/zgB,GAASkjgB;;;;;;;SA1BW8Q,CAAyBzziB,KAEtC5qD,KAAK8vlB,OAAOplL,OAAO1qa,KAAKqslB,YAAazsf,GAASh1C,GAAM2iiB,GAAOxogB,KAC9D,MAAMu5gB,GAAUv5gB,GAAMo7E,QAAY,EAClCngK,KAAKqC,QAAQm7lB,yBAAyBc,GAASx2V,GAAU/iL,MAGjE,OAAO/kF,KAAK68lB,SAASnyL,OAAOzgY,GAAQuzZ,GAAW11L,KA6BvD,iBAAwCy2V,GACpC1+lB,YAAY2la,GAAK8uK,GAAQC,IACrB5ojB,MAAM65Y,GAAIz2X,KAAMuliB,GAAQC,IAE5BrrkB,cACIlJ,KAAKm6Q,SAGbqkV,GAA0Bz/gB,UAA1B,4BAAuHy/gB,IAvVZv/gB,qBAuVuDU,OAvVvDV,qBAuV4ES,IAvV5ET,qBAuV2GS,MACtN8+gB,GAA0Bxyc,WAxViF/sE,+BAwV3G,OAA2Hu/gB,GAA3Hn8lB,QAA2Hm8lB,GAA3H,YAkBA,MAAM3wF,GAAwB,IAAIplX,iBAAe,uBAC3Cg2c,GAA6B,CAC/B,CAAEp2gB,QAAS2zgB,KAAkBzvc,SAAUgwc,IACvC,CAAEl0gB,QAASq2gB,GAA2BroV,WAZ1C,cACI,OAAO,IAAIsoV,KAYX,CAAEt2gB,QAASk2gB,GAAkBhyc,SAAUiyc,IAA6B,CAChEn2gB,QAASu2gB,mBACTvoV,WAZR,YAAoC03O,GAAU+hG,GAAQvnV,IAClD,OAAO,IAAIk1V,GAAyB1vG,GAAU+hG,GAAQvnV,KAYlD/7G,KAAM,CAACqyc,4BAAsBN,GAAkBroJ,YAOjD4oJ,GAA+B,CACjC,CAAEz2gB,QAAS8uf,GAAiB9gU,WAAY,IAAM,IAAI0oV,IAClD,CAAE12gB,QAASwlb,GAAuBvlb,SAAU,wBAA0Bm2gB,IAMpEO,GAAoC,CACtC,CAAE32gB,QAAS8uf,GAAiB5qb,SAAU0yc,IACtC,CAAE52gB,QAASwlb,GAAuBvlb,SAAU,qBAAuBm2gB;;;;;;;SAevE,SAA8BpnhB,kBAiBRhgB,IACd,MAAO,CACH+xE,SAAU81d,GACV71d,UAAWhyE,GAAOoiiB,kBAAoBuF,GAClCF,KAIhBI,GAAwBnghB,UAAxB,4BAAqHmghB,KACrHA,GAAwBh/gB,UA3amFjB,6BA2a3G,MAAsHighB,KACtHA,GAAwB/+gB,UA5amFlB,6BA4a3G,WAA0J6/gB,GAA1Jx1d,SAAkM61d,mBAYlM,UAEAC,GAAqBrghB,UAArB,4BAAkHqghB,KAClHA,GAAqBl/gB,UA3bsFjB,6BA2b3G,MAAmHmghB,KACnHA,GAAqBj/gB,UA5bsFlB,6BA4b3G,WAAoJ+/gB,GAApJ11d,SAAiM61d;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SCxcjM,gBAAuCE,KACnCx/lB,cACI8rB,SAASinR,WACT5yS,KAAKs/lB,mBAAoB;;;;;;;SAkBjC,gBAAgCC,EAAyBlohB,sBAEjDmohB,QAAmB,IAAIC,GAE3BC,YAAYzggB,GAAI0ggB,GAAKl1L,IACjBxrU,UAAGwrK,iBAAiBk1V,GAAKl1L,IAAU,GAG5B,KACHxrU,GAAG+vK,oBAAoB2wV,GAAKl1L,IAAU,IAG9Cv7X,cAAc+vD,GAAI0ggB,IACd1ggB,GAAG/vD,cAAcywjB,IAErBj7U,OAAO0mI,IACCA,GAAKvhE,YACLuhE,GAAKvhE,WAAW16S,YAAYi8W,IAGpC1kX,cAAcgoT,GAAS82E,IACnBA,UAAMA,IAAOxla,KAAK4/lB,sBACPl5jB,cAAcgoT,IAE7BmxQ,qBACI,OAAOp5jB,SAASo6W,eAAe4jF,mBAAmB,aAEtDm7H,qBACI,OAAOn5jB,SAEX4rjB,cAAcjnM,IACV,OAAOA,GAAKpnG,WAAauqG,KAAKgI,aAElCupM,aAAa10M,IACT,OAAOA,cAAgB20M,iBAG3BxkJ,qBAAqB/1C,GAAKv7X,IACtB,MAAe,WAAXA,GACOsR,OAEI,aAAXtR,GACOu7X,GAEI,SAAXv7X,GACOu7X,GAAIz2X,KAER,KAEXssa,YAAY71C,IACR,MAAMlqX,GAcd,aACI0kjB,SAAcA,GAAev5jB,SAAS82X,cAAc,QAC7CyiM,EAAcA,EAAYp2jB,aAAa,QAAU,KAhBvCq2jB,GACb,OAAe,MAAR3kjB,GAAe,KAmB9B,WAAsB3wB,IAClBu1kB,EAAiBA,GAAkBz5jB,SAASC,cAAc,KAC1Dw5jB,EAAev5jB,aAAa,OAAQhc,IACpC,MAAMw1kB,GAAWD,EAAe1mhB,SAChC,MAA8B,MAAvB2mhB,GAAShsjB,OAAO,GAAagsjB,GAAY,IAAGA;;;;;;;SAvBlBC,CAAa9kjB,IAE9C+kjB,mBACIL,EAAc,KAElB7xG,eACI,OAAO5yc,OAAOs9B,UAAUC,UAE5BwnhB,UAAU11iB,IACN,OAAOi8a,QAAkBpgc,SAASi+N,OAAQ95M,KAGlD,IAMIs1iB,EANAF,EAAc,KAyBlB,MAAMO,EAAgB,IAAI93c,iBAAe,iBAczC,MAAM+3c,EAA8B,CAChC,CACIn4gB,QAASo4gB,kBACTpqV,WAhBR,WAA+BqqV,GAAcj6jB,GAAU8hD,IACnD,MAAO,KAGHA,GAAS1nF,IAAI8/lB,yBAAuBC,YAAYlpf,KAAK,KACjD,MAAMmpf,IAAM3yG,SACNlua,GAASv5C,GAASy4D,iBAAkB,wBAAuBwhgB,QACjE,QAASxgmB,GAAI,EAAGA,GAAI8/E,GAAOx8E,OAAQtD,KAC/B2gmB,GAAIn8U,OAAO1kM,GAAO9/E,SAS1BssJ,KAAM,CAAC+zc,EAAe5ghB,KAAUuhX,YAChCziW,OAAO;;;;;;;SAWf,QAA4BpnB,eAEpByphB,0BAAqB,IAAIC,GAE7Bj4G,YAAYk4G,IACRC,qCAAmC,CAACxvD,GAAMyvD,IAAkB,KACxD,MAAMC,GAAcH,GAASn4G,sBAAsB4oD,GAAMyvD,IACzD,GAAmB,MAAfC,GACA,MAAM,IAAIjhX,MAAM,2CAEpB,OAAOihX,IAEXF,0CAAwC,IAAMD,GAASr4G,sBACvDs4G,yCAAuC,IAAMD,GAASp4G,qBAgBjDq4G,sCACDA,oCAAkC,IAEtCA,yCAlBuBn5V,KACnB,MAAMs5V,GAAgBH,4CACtB,IAAIzgc,GAAQ4gc,GAAc59lB,OACtB69lB,IAAU,EACd,MAAMl8T,GAAY,SAAUm8T,IACxBD,GAAUA,IAAWC,GACrB9gc,KACa,GAATA,IACAsnG,GAASu5V,KAGjBD,GAAc74lB,QAAQ,SAAU44lB,IAC5BA,GAAYj5G,WAAW/iN,OAMMo8T,CAEzC14G,sBAAsBm4G,GAAUvvD,GAAMyvD,IAClC,GAAY,MAARzvD,GACA,OAAO,KAEX,MAAMrviB,GAAI4+lB,GAASt4G,eAAe+oD,IAClC,OAAS,MAALrviB,GACOA,GAED8+lB,IAGNhzG,SAAU4xG,aAAaruD,IAChBzxiB,KAAK6of,sBAAsBm4G,GAAUvvD,GAAKl4d,MAAM,GAEpDv5E,KAAK6of,sBAAsBm4G,GAAUvvD,GAAK/pd,eAAe,GALrD,MAYnB,QACIu9Y,QACI,OAAO,IAAInvN,gBAGnB0rV,EAAWzihB,UAAX,4BAAwGyihB,IACxGA,EAAWx1c,WADmF/sE,+BAC9F,OAA4GuihB,EAA5Gn/lB,QAA4Gm/lB,EAA5G;;;;;;;;AAiBA,MAAMC,EAAwB,IAAIh5c,iBAAe,uBAOjD,QAII5oJ,YAAY6hmB,GAASh7K,IACjB1mb,KAAK0mb,MAAQA,GACb1mb,KAAK2hmB,mBAAqB,IAAIh0P,IAC9B+zP,GAAQn5lB,QAAQ+mU,IAAKA,GAAEypO,QAAU/4iB,MACjCA,KAAK4hmB,SAAWF,GAAQzllB,QAAQ8kG,UAWpC0pJ,iBAAiB7qK,GAAS49V,GAAWzxC,IAEjC,OAAO81M,KADaC,eAAetkK,IACrB/yL,iBAAiB7qK,GAAS49V,GAAWzxC,IAYvDg2M,uBAAuB93jB,GAAQuzZ,GAAWzxC,IAEtC,OAAO81M,KADaC,eAAetkK,IACrBukK,uBAAuB93jB,GAAQuzZ,GAAWzxC,IAK5Di2M,UACI,OAAOhimB,KAAK0mb,MAGhBo7K,eAAetkK,IACX,MAAMqkK,GAAS7hmB,KAAK2hmB,mBAAmB9gmB,IAAI28b,IAC3C,GAAIqkK,GACA,OAAOA,GAEX,MAAMH,GAAU1hmB,KAAK4hmB,SACrB,QAAS1hmB,GAAI,EAAGA,GAAIwhmB,GAAQl+lB,OAAQtD,KAAK,CACrC,MAAM2hmB,GAASH,GAAQxhmB,IACvB,GAAI2hmB,GAAOlkI,SAASngC,IAChB,YAAKmkK,mBAAmBriW,IAAIk+L,GAAWqkK,IAChCA,GAGf,MAAM,IAAI3hX,MAAO,2CAA0Cs9M,OAGnEykK,EAAaljhB,UAAb,4BAA0GkjhB,GArFZhjhB,qBAqF0CwihB,GArF1CxihB,qBAqF4EA,YAC1KgjhB,EAAaj2c,WAtFiF/sE,+BAsF9F,OAA8GgjhB,EAA9G5/lB,QAA8G4/lB,EAA9G,YASA,QACIpimB,YAAYm7c,IACRh7c,KAAKg7c,KAAOA,GAEhB+mJ,uBAAuBnigB,GAAS49V,GAAWzxC,IACvC,MAAM9hX,IAASikd,SAAU3yC,qBAAqBv7c,KAAKg7c,KAAMp7W,IACzD,IAAK31D,GACD,MAAM,IAAIi2M,MAAO,4BAA2Bj2M,gBAAoBuzZ,MAEpE,OAAOx9b,KAAKyqQ,iBAAiBxgO,GAAQuzZ,GAAWzxC;;;;;;;SAWxD,QACIlsZ,cAEIG,KAAKkimB,WAAa,IAAIz8Y,IAE1B08Y,UAAUnihB,IACN,MAAMoihB,GAAY,IAAI38Y,IACtBzlI,GAAOz3E,QAAQwqB,KACN/yB,KAAKkimB,WAAWp/O,IAAI/vV,MACrB/yB,KAAKkimB,WAAWp6c,IAAI/0H,IACpBqvkB,GAAUt6c,IAAI/0H,OAGtB/yB,KAAKqimB,cAAcD,IAEvBC,cAAcD,IAAW,CACzBE,eACI,OAAO1slB,MAAM6zB,KAAKzpC,KAAKkimB,aAG/BK,EAAiBxjhB,UAAjB,4BAA8GwjhB,IAC9GA,EAAiBv2c,WAxI6E/sE,+BAwI9F,OAAkHsjhB,EAAlHlgmB,QAAkHkgmB,EAAlH,YAIA,gBAAkCA,EAC9B1imB,YAAYm7c,IACRrvb,QACA3rB,KAAKg7c,KAAOA,GAEZh7c,KAAKwimB,WAAa,IAAI70P,IACtB3tW,KAAKwimB,WAAWljW,IAAI07M,GAAKtzJ,KAAM,IAEnC+6S,iBAAiBzihB,GAAQzG,GAAMmphB,IAC3B1ihB,GAAOz3E,QAASwqB,KACZ,MAAM4vkB,GAAU3imB,KAAKg7c,KAAKt0a,cAAc,SACxCi8jB,GAAQrhf,YAAcvuF,GACtB2vkB,GAAWv/lB,KAAKo2E,GAAKjwC,YAAYq5jB,OAGzCC,QAAQC,IACJ,MAAMH,GAAa,GACnB1imB,KAAKyimB,iBAAiBzimB,KAAKkimB,WAAYW,GAAUH,IACjD1imB,KAAKwimB,WAAWljW,IAAIujW,GAAUH,IAElCI,WAAWD,IACP,MAAMH,GAAa1imB,KAAKwimB,WAAW3hmB,IAAIgimB,IACnCH,IACAA,GAAWn6lB,QAAQwxd,GAEvB/5d,KAAKwimB,WAAWj1kB,OAAOs1kB,IAE3BR,cAAcD,IACVpimB,KAAKwimB,WAAWj6lB,QAAQ,CAACm6lB,GAAYG,MACjC7imB,KAAKyimB,iBAAiBL,GAAWS,GAAUH,MAGnDx5lB,cACIlJ,KAAKwimB,WAAWj6lB,QAAQm6lB,IAAcA,GAAWn6lB,QAAQwxd,KAajE,WAAqBgpI,KACjB70G,SAAUxpO,OAAOq+U;;;;;;;SAXrBC,EAAoBjkhB,UAApB,4BAAiHikhB,GAhLnB/jhB,qBAgLwDU,QACtJqjhB,EAAoBh3c,WAjL0E/sE,+BAiL9F,OAAqH+jhB,EAArH3gmB,QAAqH2gmB,EAArH,YAoBA,MAAMC,EAAiB,CACnB71D,IAAO,6BACP81D,MAAS,+BACTC,MAAS,+BACTC,IAAO,uCACPC,MAAS,gCACTC,KAAQ,kCAENC,EAAkB,UAElBC,EAAqB,SACrBC,EAAa,WAAUD,IACvBE,EAAgB,cAAaF,IACnC,WAA8BG,IAC1B,OAAOD,EAAaxnkB,QAAQqnkB,EAAiBI,IAEjD,WAA2BA,IACvB,OAAOF,EAAUvnkB,QAAQqnkB,EAAiBI,IAE9C,WAAuBC,GAAQ5jhB,GAAQ/1C,IACnC,QAAS/pC,GAAI,EAAGA,GAAI8/E,GAAOx8E,OAAQtD,KAAK,CACpC,IAAI6yB,GAAQitD,GAAO9/E,IACf0V,MAAMukD,QAAQpnC,IACduzjB,EAAcsd,GAAQ7wkB,GAAOkX,KAG7BlX,GAAQA,GAAMmJ,QAAQqnkB,EAAiBK,IACvC35jB,GAAO9mC,KAAK4vB,KAGpB,OAAOkX,GAEX,WAAgC45jB,IAK5B,OAAQ9+gB,KAKJ,GAAc,iBAAVA,GACA,OAAO8+gB,IAGkB,IAAzBC,GADsC/+gB,MAGtCA,GAAM36C,iBACN26C,GAAMmqL,aAAc,IAMhC,SACIrvQ,YAAYkkmB,GAAcC,GAAkBC,IACxCjkmB,KAAK+jmB,aAAeA,GACpB/jmB,KAAKgkmB,iBAAmBA,GACxBhkmB,KAAKikmB,MAAQA,GACbjkmB,KAAKkkmB,iBAAmB,IAAIv2P,IAC5B3tW,KAAKmkmB,gBAAkB,IAAIC,GAAoBL,IAEnD36H,eAAexpY,GAASh4F,IACpB,IAAKg4F,KAAYh4F,GACb,OAAO5H,KAAKmkmB,gBAEhB,OAAQv8lB,GAAKyyQ,oBACJ+hV,6BAA4B,CAC7B,IAAIruG,GAAW/tf,KAAKkkmB,iBAAiBrjmB,IAAI+G,GAAKyiE,IAC9C,OAAK0jb,KACDA,GAAW,IAAIs2G,GAAkCrkmB,KAAK+jmB,aAAc/jmB,KAAKgkmB,iBAAkBp8lB,GAAM5H,KAAKikmB,OACtGjkmB,KAAKkkmB,iBAAiB5kW,IAAI13P,GAAKyiE,GAAI0jb,KAEvCA,GAASu2G,YAAY1kgB,IACdmuZ,QAIN,OACAquG,8BAUD,OAAO,IAAImI,GAAkBvkmB,KAAK+jmB,aAAc/jmB,KAAKgkmB,iBAAkBpkgB,GAASh4F,YAEhF,IAAK5H,KAAKkkmB,iBAAiBphP,IAAIl7W,GAAKyiE,IAAK,CACrC,MAAM2V,GAASsmgB,EAAc1+kB,GAAKyiE,GAAIziE,GAAKo4E,OAAQ,IACnDhgF,KAAKgkmB,iBAAiB7B,UAAUnihB,IAChChgF,KAAKkkmB,iBAAiB5kW,IAAI13P,GAAKyiE,GAAIrqE,KAAKmkmB,iBAE5C,OAAOnkmB,KAAKmkmB,iBAIxBh4Q,QAAQ,CACRrjT,MAAM,EAEV07jB,GAAoBzlhB,UAApB,4BAAiHylhB,IA7SnBvlhB,qBA6SwDgjhB,GA7SxDhjhB,qBA6SiF+jhB,GA7SjF/jhB,qBA6SiHwlhB,YAC/MD,GAAoBx4c,WA9S0E/sE,+BA8S9F,OAAqHulhB,GAArHnimB,QAAqHmimB,GAArH,YASA,SACI3kmB,YAAYkkmB,IACR/jmB,KAAK+jmB,aAAeA,GACpB/jmB,KAAK0C,KAAO6mB,OAAO4+D,OAAO,MAC1BnoF,KAAK09lB,YAAc,KAEvB5jV,UAAU,CACVpzO,cAAckkB,GAAMghf,IAChB,OAAIA,GAUOnlgB,SAASq5T,gBAAgBmjQ,EAAer3D,KAAcA,GAAWhhf,IAErEnkB,SAASC,cAAckkB,IAElCupX,cAAcnwZ,IACV,OAAOyiB,SAAS0tY,cAAcnwZ,IAElC25kB,WAAW35kB,IACP,OAAOyiB,SAAS6nT,eAAetqU,IAEnCslB,YAAYw3F,GAAQ88d,IAChB98d,GAAOx3F,YAAYs0jB,IAEvBxrT,aAAatxK,GAAQ88d,GAAUC,IACvB/8d,IACAA,GAAOsxK,aAAawrT,GAAUC,IAGtC1ujB,YAAY2xF,GAAQi9d,IACZj9d,IACAA,GAAO3xF,YAAY4ujB,IAG3BC,kBAAkBC,GAAgBC,IAC9B,IAAIj/f,GAA+B,iBAAnBg/f,GAA8Bx3jB,SAAS82X,cAAc0gM,IACjEA,GACJ,IAAKh/f,GACD,MAAM,IAAIihJ,MAAO,iBAAgB+9W,kCAErC,OAAKC,KACDj/f,GAAGqiB,YAAc,IAEdriB,GAEX4qP,WAAWuhE,IACP,OAAOA,GAAKvhE,WAEhB2E,YAAY48D,IACR,OAAOA,GAAK58D,YAEhB7nT,aAAas4D,GAAIr0C,GAAM5mC,GAAO4nhB,IAC1B,GAAIA,GAAW,CACXhhf,GAAOghf,GAAY,IAAMhhf,GACzB,MAAM85iB,GAAezB,EAAer3D,IAChC84D,GACAzlgB,GAAG0lgB,eAAeD,GAAc95iB,GAAM5mC,IAGtCi7E,GAAGt4D,aAAaikB,GAAM5mC,SAI1Bi7E,GAAGt4D,aAAaikB,GAAM5mC,IAG9BuxY,gBAAgBt2T,GAAIr0C,GAAMghf,IACtB,GAAIA,GAAW,CACX,MAAM84D,GAAezB,EAAer3D,IAChC84D,GACAzlgB,GAAG2lgB,kBAAkBF,GAAc95iB,IAGnCq0C,GAAGs2T,gBAAiB,GAAEq2I,MAAahhf,WAIvCq0C,GAAGs2T,gBAAgB3qW,IAG3Bwqa,SAASn2X,GAAIr0C,IACTq0C,GAAG8rT,UAAUjjQ,IAAIl9F,IAErByqa,YAAYp2X,GAAIr0C,IACZq0C,GAAG8rT,UAAUrmI,OAAO95N,IAExBkva,SAAS76X,GAAIlsE,GAAO/O,GAAOozT,IACnBA,IAASytR,+BAA+BA,iCACxC5lgB,GAAGlsE,MAAMkrE,YAAYlrE,GAAO/O,GAAOozT,GAAQytR,gCAAgC,YAAc,IAGzF5lgB,GAAGlsE,MAAMA,IAAS/O,GAG1B+1c,YAAY96X,GAAIlsE,GAAOqkT,IACfA,GAAQytR,+BACR5lgB,GAAGlsE,MAAMi4Y,eAAej4Y,IAKxBksE,GAAGlsE,MAAMA,IAAS,GAG1BkrE,YAAYgB,GAAIr0C,GAAM5mC,IAElBi7E,GAAGr0C,IAAQ5mC,GAEfqrE,SAAS+7T,GAAMpnY,IACXonY,GAAKvlX,UAAY7hB,GAErB0mZ,OAAOzgY,GAAQ86C,GAAO+iL,IAElB,MAAsB,iBAAX79N,GACAjqC,KAAK+jmB,aAAahC,uBAAuB93jB,GAAQ86C,GAAO+/gB,EAAuBh9V,KAEnF9nQ,KAAK+jmB,aAAat5V,iBAAiBxgO,GAAQ86C,GAAO+/gB,EAAuBh9V,MAG7D,IAAIl8N,WAAW,GAQ1C,iBAAgDw4jB,GAC5CvkmB,YAAYkkmB,GAAcC,GAAkBx6f,GAAWy6f,IACnDt4kB,MAAMo4kB,IACN/jmB,KAAKwpG,UAAYA,GACjB,MAAMxpB,GAASsmgB,EAAc2d,GAAQ,IAAMz6f,GAAUn/B,GAAIm/B,GAAUxpB,OAAQ,IAC3EgkhB,GAAiB7B,UAAUnihB,IAC3BhgF,KAAK+kmB,YAAcC,EAAqBf,GAAQ,IAAMz6f,GAAUn/B,IAChErqE,KAAKilmB,SAAWC,EAAkBjB,GAAQ,IAAMz6f,GAAUn/B,IAE9Di6hB,YAAY1kgB,IACRj0E,MAAMgb,aAAai5D,GAAS5/F,KAAKilmB,SAAU,IAE/Cv+jB,cAAco6F,GAAQl2E,IAClB,MAAMq0C,GAAKtzE,MAAM+a,cAAco6F,GAAQl2E,IACvC,aAAMjkB,aAAas4D,GAAIj/F,KAAK+kmB,YAAa,IAClC9lgB,IAGf,iBAAgCmlgB,GAC5BvkmB,YAAYkkmB,GAAcC,GAAkBmB,GAAQ37f,IAChD79E,MAAMo4kB,IACN/jmB,KAAKgkmB,iBAAmBA,GACxBhkmB,KAAKmlmB,OAASA,GACdnlmB,KAAKo0a,WAAa+wL,GAAO3lK,aAAa,CAAEj9K,KAAM,SAC9CviR,KAAKgkmB,iBAAiBpB,QAAQ5imB,KAAKo0a,YACnC,MAAMp0V,GAASsmgB,EAAc98e,GAAUn/B,GAAIm/B,GAAUxpB,OAAQ,IAC7D,QAAS9/E,GAAI,EAAGA,GAAI8/E,GAAOx8E,OAAQtD,KAAK,CACpC,MAAMyimB,GAAUl8jB,SAASC,cAAc,SACvCi8jB,GAAQrhf,YAActhC,GAAO9/E,IAC7BF,KAAKo0a,WAAW9qY,YAAYq5jB,KAGpCyC,iBAAiBh6M,IACb,OAAOA,KAASprZ,KAAKmlmB,OAASnlmB,KAAKo0a,WAAahpB,GAEpDtxI,UACI95Q,KAAKgkmB,iBAAiBlB,WAAW9imB,KAAKo0a,YAE1C9qY,YAAYw3F,GAAQ88d,IAChB,OAAOjykB,MAAM2d,YAAYtpC,KAAKolmB,iBAAiBtke,IAAS88d,IAE5DxrT,aAAatxK,GAAQ88d,GAAUC,IAC3B,OAAOlykB,MAAMymR,aAAapyS,KAAKolmB,iBAAiBtke,IAAS88d,GAAUC,IAEvE1ujB,YAAY2xF,GAAQi9d,IAChB,OAAOpykB,MAAMwjB,YAAYnvC,KAAKolmB,iBAAiBtke,IAASi9d,IAE5Dl0Q,WAAWuhE,IACP,OAAOprZ,KAAKolmB,iBAAiBz5kB,MAAMk+T,WAAW7pV,KAAKolmB,iBAAiBh6M;;;;;;;SAW5E,iBAA8Bi6M,EAC1BxlmB,YAAY2la,IACR75Y,MAAM65Y,IAIVm4D,SAASngC,IACL,OAAO,EAEX/yL,iBAAiB7qK,GAAS49V,GAAWzxC,IACjCnsT,UAAQ6qK,iBAAiB+yL,GAAWzxC,IAAS,GACtC,IAAM/rZ,KAAKgvQ,oBAAoBpvK,GAAS49V,GAAWzxC,IAE9D/8I,oBAAoB/kO,GAAQuzZ,GAAW11L,IACnC,OAAO79N,GAAO+kO,oBAAoBwuL,GAAW11L,KAGrDw9V,GAAgBvmhB,UAAhB,4BAA6GumhB,IAzgBfrmhB,qBAygBgDU,QAC9I2lhB,GAAgBt5c,WA1gB8E/sE,+BA0gB9F,OAAiHqmhB,GAAjHjjmB,QAAiHijmB,GAAjH;;;;;;;;AAoBA,MAAMC,GAAgB,CAAC,MAAO,UAAW,OAAQ,SAG3CC,GAAU,CAGZ,KAAM,YACN,KAAM,MACN,OAAQ,SACR,OAAQ,SACRC,IAAO,SACPC,IAAO,SACPC,KAAQ,YACRC,MAAS,aACTtwH,GAAM,UACNuwH,KAAQ,YACRC,KAAQ,cACRz7M,OAAU,aACV07M,IAAO,MAKLC,GAAsB,CACxBvimB,EAAK,IACL2lQ,EAAK,IACL97P,EAAK,IACL6C,EAAK,IACLoB,EAAK,IACLjC,EAAK,IACLwB,EAAK,IACLyG,EAAK,IACL7G,EAAK,IACL2/C,EAAK,IACLphC,EAAK,IACLtpB,EAAK,IACLjE,EAAK,IACL+tU,EAAK,IACL,IAAQ,IACR,OAAQ,WAKNw2R,EAAuB,CACzBC,IAAQnhhB,IAAUA,GAAMkyO,OACxB9lO,QAAYpM,IAAUA,GAAMsvL,QAC5BvnD,KAAS/nI,IAAUA,GAAMm9O,QACzB/N,MAAUpvO,IAAUA,GAAMuvL,UAM9B,iBAA8B+wV,EAK1BxlmB,YAAY2la,IACR75Y,MAAM65Y,IAOVm4D,SAASngC,IACL,OAAoD,MAA7C2oK,GAAgBC,eAAe5oK,GAAc,CAUxD/yL,iBAAiB7qK,GAAS49V,GAAWzxC,IACjC,MAAMs6M,GAAcF,GAAgBC,eAAe5oK,IAC7C8oK,GAAiBH,GAAgBI,cAAcF,GAAYG,QAAYz6M,GAAS/rZ,KAAK+4iB,QAAQipD,WACnG,OAAOhimB,KAAK+4iB,QAAQipD,UAAUtlM,kBAAkB,KACrCwxF,SAAUwxG,YAAY9/f,GAASymgB,GAAYI,aAAiBH,2BAGrD9oK,IAClB,MAAMstB,GAAQttB,GAAU3hb,cAAcsN,MAAM,KACtCs9kB,GAAe37I,GAAM32J,QAC3B,GAAsB,IAAjB22J,GAAMtnd,QAAoC,YAAjBijmB,IAA+C,UAAjBA,GACxD,OAAO,KAEX,MAAMnwkB,GAAM6vkB,GAAgBO,cAAc57I,GAAM5kY,OAChD,IAAIsghB,GAAU,GASd,GARAjB,GAAch9lB,QAAQo+lB,KAClB,MAAMh0jB,GAAQm4a,GAAM15c,QAAQu1lB,IACxBh0jB,IAAQ,IACRm4a,GAAMt9b,OAAOmlB,GAAO,GACpB6zjB,IAAWG,GAAe,OAGlCH,IAAWlwkB,GACS,GAAhBw0b,GAAMtnd,QAA8B,IAAf8yB,GAAI9yB,OAEzB,OAAO,KAKX,MAAM6iF,GAAS,GACfA,UAAOoghB,aAAkBA,GACzBpghB,GAAOmghB,QAAaA,GACbnghB,0BAEYtB,IACnB,IAAIyhhB,GAAU,GACVlwkB,GAsDZ,YAAqByuD,IACjB,IAAIzuD,GAAMyuD,GAAMzuD,IAChB,GAAW,MAAPA,GAAa,CAKb,GAJAA,GAAMyuD,GAAM6hhB,cAID,MAAPtwkB,GACA,MAAO,eAEPA,GAAI7T,WAAW,QACf6T,GAAMyV,OAAOC,aAAa/+B,SAASqpB,GAAInd,UAAU,GAAI,KAnLjC,IAoLhB4rE,GAAM/pB,UAAwCgriB,GAAoB34jB,eAAe/W,MAIjFA,GAAM0vkB,GAAoB1vkB,MAItC,OAAOkvkB,GAAQlvkB,KAAQA;;;;;;;SA1ETuwkB,CAAY9hhB,IACtBzuD,UAAMA,GAAIza,cACE,MAAZglB,GACIvK,GAAM,QAEO,MAARA,KACLA,GAAM,OAEVivkB,GAAch9lB,QAAQo+lB,KACdA,IAAgBrwkB,IAEZwwkB,EADwCH,IACzB5hhB,MACfyhhB,IAAWG,GAAe,OAItCH,IAAWlwkB,GACJkwkB,wBASUA,GAASz6M,GAASxjJ,IACnC,OAAQxjL,KACAohhB,GAAgBY,gBAAgBhihB,MAAWyhhB,IAC3Cj+V,GAAKg/O,WAAW,IAAMx7F,GAAQhnU,2BAKrBiihB,IAEjB,MACS,QADDA,GAEO,SAEAA,IA4CvB,cACIvH,EAAkBwH,cAClBlG,EAAsB/gZ,OA1C1BmmZ,GAAgBpnhB,UAAhB,4BAA6GonhB,IA7rBflnhB,qBA6rBgDU,QAC9IwmhB,GAAgBn6c,WA9rB8E/sE,+BA8rB9F,OAAiHknhB,GAAjH9jmB,QAAiH8jmB,GAAjH,YAmDA,MAAMe,GAAsC,CACxC,CAAE7+gB,QAASs2W,cAAar2W,SAAU6+gB,MAClC,CAAE9+gB,QAAS++gB,uBAAsB9+gB,SAAU++gB,GAAgB5ogB,OAAO,GAClE,CAAEpW,QAAS1I,KAAU02L,WARzB,cAEIixV,8BAAa7gkB,UACNA,UAKqC+lH,KAAM,KAQhD+6c,IAAkBC,2BAAsBC,eAAc,UAAWP,IACjEQ,GAA2B,CAC7B,CAAEr/gB,QAASs/gB,uBAAiBr/gB,SAAU,QACtC,CAAED,QAASond,eAAcp5R,WAtB7B,cACI,OAAO,IAAIo5R,gBAqBwCjjZ,KAAM,IACzD,CACInkE,QAASo5gB,EACTl1c,SAAU+4c,GACV7mgB,OAAO,EACP+tD,KAAM,CAAC7sE,KAAUu2X,SAAQvX,gBAE7B,CAAEt2W,QAASo5gB,EAAuBl1c,SAAU45c,GAAiB1ngB,OAAO,EAAM+tD,KAAM,CAAC7sE,OACjF,CACI0I,QAASm8gB,GACTj4c,SAAUi4c,GACVh4c,KAAM,CAACy1c,EAAce,EAAqByB,WAE9C,CAAEp8gB,QAASu2gB,mBAAkBpggB,YAAagmgB,IAC1C,CAAEn8gB,QAASk6gB,EAAkB/jgB,YAAawkgB,GAC1C,CAAE36gB,QAAS26gB,EAAqBz2c,SAAUy2c,EAAqBx2c,KAAM,CAAC7sE,OACtE,CAAE0I,QAASu/gB,cAAar7c,SAAUq7c,cAAap7c,KAAM,CAAC0pT,WACtD,CAAE7tX,QAAS45gB,EAAc11c,SAAU01c,EAAcz1c,KAAM,CAACi1c,EAAuBvrJ,WAC/E,CAAE7tX,QAASw/gB,KAAYt7c,SAAUi1c,EAAYh1c,KAAM,KAWvD,SACI3sJ,YAAYi2d,IACR,GAAIA,GACA,MAAM,IAAI51O,MAAO,6LAWGg8N,IACxB,MAAO,CACH9yU,SAAU+1d,GACV91d,UAAW,CACP,CAAEhhD,QAASo8gB,SAAQn8gB,SAAU4zX,GAAO+nJ,OACpC,CAAE57gB,QAASk4gB,EAAe/hgB,YAAaimgB,UACvCjE,KAKhBrB,GAAcpghB,UAAd,4BAA2GoghB,IArzBblghB,qBAqzB4CkghB,GAA1I,MACAA,GAAcj/gB,UAtzBgFjB,6BAszB9F,MAA4GkghB,KAC5GA,GAAch/gB,UAvzBgFlB,6BAuzB9F,WAAsIyohB,GAAtIp+d,SAA0Ku0V,KAAciqI,uBAkDxL,SACIjomB,YAAYm7c,IACRh7c,KAAKg7c,KAAOA,GACZh7c,KAAK+nmB,MAAO75G,SAYhB85G,OAAO/wU,GAAKgxU,IAAgB,GACxB,OAAKhxU,GAEEj3R,KAAKkomB,oBAAoBjxU,GAAKgxU,IAD1B,KAWfE,QAAQ5vU,GAAM0vU,IAAgB,GAC1B,OAAK1vU,GAEEA,GAAK/yE,OAAO,CAACn/H,GAAQ4wM,MACpBA,IACA5wM,GAAOljF,KAAKnD,KAAKkomB,oBAAoBjxU,GAAKgxU,KAEvC5hhB,IACR,IANQ,GAcfgkS,OAAO+9O,IACH,OAAKA,IAEEpomB,KAAKg7c,KAAKz9C,cAAe,QAAO6qM,QAAoB,KAQ/DC,QAAQD,IACJ,IAAKA,GACD,MAAO,GACX,MAAMlkf,GAAoBlkH,KAAKg7c,KAAK97W,iBAAkB,QAAOkpgB,OAC7D,OAAOlkf,GAAO,GAAGjoG,MAAMiO,KAAKg6F,IAAQ,GAWxCokf,UAAUrxU,GAAK+6H,IACX,IAAK/6H,GACD,OAAO,KACX+6H,GAAWA,IAAYhyZ,KAAKuomB,eAAetxU,IAC3C,MAAMnqE,GAAO9sN,KAAKqqX,OAAO2nC,IACzB,OAAIllM,GACO9sN,KAAKwomB,0BAA0BvxU,GAAKnqE,IAExC9sN,KAAKkomB,oBAAoBjxU,IAAK,GAOzCwF,UAAU2rU,IACNpomB,KAAKyomB,iBAAiBzomB,KAAKqqX,OAAO+9O,KAMtCK,iBAAiB37Y,IACTA,IACA9sN,KAAK+nmB,KAAKrjV,OAAO53D,IAGzBo7Y,oBAAoBp7Y,GAAMm7Y,IAAgB,GACtC,IAAKA,GAAe,CAChB,MAAMj2M,GAAWhyZ,KAAKuomB,eAAez7Y,IAI/B2kV,GAAOzxiB,KAAKqomB,QAAQr2M,IAAUtrZ,OAAO+qiB,IAAQzxiB,KAAK0omB,oBAAoB57Y,GAAM2kV,KAAO,GACzF,QAAa74L,IAAT64L,GACA,OAAOA,GAEf,MAAM7xc,GAAU5/F,KAAK+nmB,KAAKrhkB,cAAc,QACxC,YAAK8hkB,0BAA0B17Y,GAAMltH,IAErC8nN,KADkBszJ,KAAK1hb,qBAAqB,QAAQ,GAC/CgQ,YAAYs2D,IACVA,GAEX4ogB,0BAA0BvxU,GAAKh4L,IAC3B11E,cAAO+hB,KAAK2rP,IAAK1uR,QAASs1I,IAAS5+C,GAAGt4D,aAAa3mC,KAAK2omB,eAAe9qd,IAAOo5I,GAAIp5I,MAC3E5+C,GAEXspgB,eAAetxU,IACX,MAAM88H,GAAO98H,GAAIrsO,KAAO,OAAS,WACjC,MAAQ,GAAEmpW,OAAS98H,GAAI88H,OAE3B20M,oBAAoBzxU,GAAKw6Q,IACrB,OAAOlohB,OAAO+hB,KAAK2rP,IAAKvuJ,MAAOpyG,IAAQm7gB,GAAK7ngB,aAAa5pC,KAAK2omB,eAAerykB,OAAU2gQ,GAAI3gQ,KAE/FqykB,eAAe9qd,IACX,OAAO+qd,GAAc/qd,KAASA,IAGtCgrd,GAAK9phB,UAAL,4BAAkG8phB,IAz+BJ5phB,qBAy+B0BU,QACxHkphB,GAAK78c,WA1+ByF/sE,+BA0+B9F,OAAsG4phB,GAAtGxmmB;;;;;;;;AA1JA,cACI,OAAO,IAAIwmmB,IAAKjuJ,wBAASj7X,OAyJ+GmphB,GAA5IprkB,eAAwH,SAaxH,MAAMkrkB,GAAgB,CAClBG,UAAW;;;;;;;SA0Bf,SACIlpmB,YAAYm7c,IACRh7c,KAAKg7c,KAAOA,GAKhBguJ,WACI,OAAOhpmB,KAAKg7c,KAAKzwY,MAMrB0+hB,SAASC,IACLlpmB,KAAKg7c,KAAKzwY,MAAQ2+hB,IAAY,IAGtC1wiB,GAAMumB,UAAN,4BAAmGvmB,IApiCLymB,qBAoiC4BU,QAC1HnnB,GAAMwzF,WAriCwF/sE,+BAqiC9F,OAAuGzmB,GAAvGn2D,qDAhCA,cACI,OAAO,IAAIm2D,IAAMoiZ,wBAASj7X,OA+BgHwphB,GAA9IzrkB,eAA0H,SAiC1H,YAAqBktB,GAAM5mC,IACvB,GAAwB,oBAAbollB,WAA6BA,SAAU,EAKnCnI,kBAAgBA,mBAAiB,IACzCr2iB,IAAQ5mC;;;;;;;SAWnB,MAAMqllB,GAAwB,oBAAX9tjB,QAA0BA,QAAU;;;;;;;SASvD,SACI17C,YAAYypmB,GAAWC,IACnBvpmB,KAAKspmB,UAAYA,GACjBtpmB,KAAKupmB,SAAWA,IAOxB,SACI1pmB,YAAY4nZ,IACRznZ,KAAKwpmB,OAAS/hN,GAAIl/T,SAAS1nF,IAAI+5b,kBAmBnC6uK,oBAAoBpyiB,IAChB,MAAMsxW,GAAStxW,IAAUA,GAAOsxW,OAC1B+gM,GAAc,mBAEdC,GAA6C,MAAvBN,GAAIxwkB,QAAQ2pG,QACpCmmS,IAAUghM,IACVN,GAAIxwkB,QAAQ2pG,QAAQkne,IAExB,MAAM7gkB,GAAQ+gkB,KACd,IAAIL,GAAW,EACf,KAAOA,GAAW,GAAMK,KAAmB/gkB,GAAS,KAChD7oC,KAAKwpmB,OAAO3/G,OACZ0/G,KAEJ,MAAMzgkB,GAAM8gkB,KACRjhM,IAAUghM,IACVN,GAAIxwkB,QAAQgxkB,WAAWH,IAE3B,MAAMJ,IAAaxgkB,GAAMD,IAAS0gkB,GAClCF,UAAIxwkB,QAAQC,IAAK,OAAMywkB,8BACvBF,GAAIxwkB,QAAQC,IAAK,GAAEwwkB,GAAUlpe,QAAQ,mBAC9B,IAAI0pe,GAA0BR,GAAWC,KAGxD,cACI,OAAOF,GAAI1vhB,aAAe0vhB,GAAI1vhB,YAAYC,IAAMyvhB,GAAI1vhB,YAAYC,OAC5D,IAAIn0E,MAAOkiB;;;;;;;SAUnB,MAAMoilB,GAAuB,WAc7B,YAA0BtiN,IACtBuiN,UAAYD,GAAsB,IAAIE,GAAgBxiN,KAC/CA,GAOX,cACIuiN,GAAYD,GAAsB;;;;;;;SAUtC,YAAoBxggB,IAChB,MAAM2ggB,GAAc,CAChB,IAAK,MACL,IAAK,MACL,IAAM,MACN,IAAK,MACL,IAAK,OAET,OAAO3ggB,GAAKrtE,QAAQ,WAAYt1B,IAAKsjmB,GAAYtjmB,KA0BrD,YAAsB0vB,IAClB,OAAOA,GAeX,SACIz2B,cACIG,KAAKmqmB,MAAQ,GACbnqmB,KAAKoqmB,qBAAuB,eAGpBC,IACR,MAAMC,GAAgB,IAAIC,GAC1BD,UAAcH,MAAQE,GACfC,GAKXzpmB,IAAIy1B,GAAKm7Q,IACL,YAA2BmnE,IAApB54W,KAAKmqmB,MAAM7zkB,IAAqBt2B,KAAKmqmB,MAAM7zkB,IAAOm7Q,GAK7DnyC,IAAIhpO,GAAKtS,IACLhkB,KAAKmqmB,MAAM7zkB,IAAOtS,GAKtB0gQ,OAAOpuP,WACIt2B,KAAKmqmB,MAAM7zkB,IAKtBk0kB,OAAOl0kB,IACH,OAAOt2B,KAAKmqmB,MAAM98jB,eAAe/W,IAKrCm0kB,YAAYn0kB,GAAKwxO,IACb9nQ,KAAKoqmB,qBAAqB9zkB,IAAOwxO,GAKrC4iW,SAEI,UAAWp0kB,MAAOt2B,KAAKoqmB,qBACnB,GAAIpqmB,KAAKoqmB,qBAAqB/8jB,eAAe/W,IACzC,IACIt2B,KAAKmqmB,MAAM7zkB,IAAOt2B,KAAKoqmB,qBAAqB9zkB,KAGQ31B,CAHR21B,MAEzC31B,IACHk4B,QAAQuO,KAAK,sCAAuCzmC,IAIhE,OAAOugC,KAAKoE,UAAUtlC,KAAKmqmB,QAGnCI,GAAcxrhB,UAAd,4BAA2GwrhB,KAC3GA,GAAcv+c,WApzCgF/sE,+BAozC9F,OAA+GsrhB,GAA/GlomB,QAA+GkomB,GAA/G,YA0BA,UAEAI,GAA2B5rhB,UAA3B,4BAAwH4rhB,KACxHA,GAA2BzqhB,UAj1CmEjB,6BAi1C9F,MAAyH0rhB,KACzHA,GAA2BxqhB,UAl1CmElB,6BAk1C9F,WAAgK,CAAC,CAAEoJ,QAASkihB,GAAel0V,WA1B3L,YAA2BmvJ,GAAKy+L,IAG5B,MAAMvjN,GAAS8kB,GAAI11W,eAAem0iB,GAAQ,UAC1C,IAAI2G,GAAe,GACnB,GAAIlqN,IAAUA,GAAOp/R,YACjB,IAEIspf,GAAe1pkB,KAAKC,MAhHhC,YAAsBooE,IAClB,MAAMshgB,GAAgB,CAClB,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,KAEX,OAAOthgB,GAAKrtE,QAAQ,WAAYt1B,IAAKikmB,GAAcjkmB,KAwGjBkkmB,CAAapqN,GAAOp/R,aAG2B3gH,CAH3B2gH,MAE3C3gH,IACHk4B,QAAQuO,KAAK,mDAAqD68jB,GAAOtjmB,IAGjF,OAAO4pmB,GAAcvqZ,KAAK4qZ,KAY4Lp+c,KAAM,CAAC7sE,KAAU8khB;;;;;;;;AAoB3O,SAASpthB,aAUD,MAAO,KAAM,aAUN26U,IACP,OAAQ+4M,IACiC,MAA9BA,GAAal4lB,eAiBhC,YAAwBR,GAAG2/Y,IACvB,SAAIk8F,SAAUmkG,cAAchglB,MACjBA,GAAEu/R,SAAWv/R,GAAEu/R,QAAQogH,KAC1B3/Y,GAAE24lB,mBAAqB34lB,GAAE24lB,kBAAkBh5M,KAC3C3/Y,GAAE44lB,uBAAyB54lB,GAAE44lB,sBAAsBj5M,IAEpD;;;;;;;SAtBKk5M,CAAeH,GAAal4lB,cAAem/Y,GAC3C,kBAWKpqZ,IACb,OAAQujmB,KAAyD,IAA3CA,GAAU5gH,eAAen5e,QAAQxJ,GAAU,EAsBzE,MAAMwjmB,EAAc,CAEhBC,KAAO,EACPC,UAAY,EACZC,SAAW,EACXC,QAAU,EACVC,WAAa,EACbC,SAAW,EACXC,UAAY,EACZC,OAAS,EACTC,SAAW,EAEXC,OAAS,EACTC,YAAc,EACdC,WAAa,EACbC,UAAY,EACZC,aAAe,EACfC,SAAW,EACXC,UAAY,EAEZ/yV,OAAS,EACTgzV,SAAW,EAEX/rT,QAAU,EACVgsT,aAAe,EACfC,YAAc,EACdC,WAAa,EACbC,cAAgB,EAEhB/qT,OAAS,EACTgrT,WAAa,EACbC,YAAc,EACdC,SAAW,EACXC,WAAa,EAEblhO,KAAO,EACPmhO,WAAa,GASXC,GAAwB,IAAItkd,iBAAe,uBAM3Cukd,EAAgB,IAAIvkd,iBAAe,gBAMzC,SACI5oJ,cAMIG,KAAKo+B,OAAS,GAiBdp+B,KAAKitmB,UAAY,GAQrBC,YAAYttgB,IACR,MAAMywL,GAAK,IAAI88U,OAAOvtgB,GAAS5/F,KAAKmiR,SACpCkO,GAAGxvR,IAAI,SAASy+P,IAAI,CAAE2rK,QAAQ,IAC9B56I,GAAGxvR,IAAI,UAAUy+P,IAAI,CAAE2rK,QAAQ,IAC/B,UAAWuyB,MAAax9b,KAAKitmB,UACzB58U,GAAGxvR,IAAI28b,IAAWl+L,IAAIt/P,KAAKitmB,UAAUzvK,KAEzC,OAAOntK,IAGf+8U,GAAoBruhB,UAApB,4BAAiHquhB,KACjHA,GAAoBphd,WApgD0E/sE,+BAogD9F,OAAqHmuhB,GAArH/qmB,QAAqH+qmB,GAArH,YASA,iBAAmC/H,EAC/BxlmB,YAAY2la,GAAK0H,GAASr0Y,GAASu9O,IAC/BzqP,MAAM65Y,IACNxla,KAAKkta,QAAUA,GACflta,KAAK64B,QAAUA,GACf74B,KAAKo2Q,OAASA,GACdp2Q,KAAKqtmB,eAAiB,KAE1B1vI,SAASngC,IAIL,SAHK4tK,EAAY/9jB,eAAemwZ,GAAU3hb,iBAAmB7b,KAAKstmB,cAAc9vK,MAG3EjiZ,OAAO4xjB,SAAWntmB,KAAKo2Q,QAShC3L,iBAAiB7qK,GAAS49V,GAAWzxC,IACjC,MAAMxjJ,GAAOvoQ,KAAK+4iB,QAAQipD,UAI1B,GAHAxkK,GAAYA,GAAU3hb,eAGjB0/B,OAAO4xjB,QAAUntmB,KAAKo2Q,OAAQ,CAC/Bp2Q,KAAKqtmB,eAAiBrtmB,KAAKqtmB,gBAAkBrtmB,KAAKo2Q,SAIlD,IAAIm3V,IAAqB,EACrB1uM,GAAa,KACb0uM,IAAqB,GAEzB,YAAKF,eACA31f,KAAK,KAEDn8D,OAAO4xjB,OAOPI,KAGD1uM,GAAa7+Z,KAAKyqQ,iBAAiB7qK,GAAS49V,GAAWzxC,KANvD8S,GAAa,MAM0C9S,GAG1Dn1I,MAAM,KAKPioJ,GAAa,MAAM,GAKhB,KACHA,MAGR,OAAOt2J,GAAKm0J,kBAAkB,KAE1B,MAAMrsI,GAAKrwR,KAAKkta,QAAQggM,YAAYttgB,IAC9BkoK,GAAW,SAAU0lW,IACvBjlW,GAAKg/O,WAAW,WACZx7F,GAAQyhN,OAGhBn9U,UAAG2X,GAAGw1J,GAAW11L,IACV,KACHuoB,GAAGo9U,IAAIjwK,GAAW11L,IAEQ,mBAAfuoB,GAAGvW,SACVuW,GAAGvW,aAKnBwzV,cAAc9vK,IACV,OAAOx9b,KAAKkta,QAAQ9uY,OAAOhtB,QAAQosb,KAAa,GAGxDkwK,GAAqB3uhB,UAArB,4BAAkH2uhB,IApmDpBzuhB,qBAomD0DU,MApmD1DV,qBAomD+E8thB,IApmD/E9thB,qBAomDiHA,iBApmDjHA,qBAomDyI+thB,EAAvO,KACAU,GAAqB1hd,WArmDyE/sE,+BAqmD9F,OAAsHyuhB,GAAtHrrmB,QAAsHqrmB,GAAtH,YA4BA,UAEAC,GAAa5uhB,UAAb,4BAA0G4uhB,KAC1GA,GAAazthB,UApoDiFjB,6BAooD9F,MAA2G0uhB,KAC3GA,GAAaxthB,UAroDiFlB,6BAqoD9F,WAAoI,CAC5H,CACIoJ,QAASo5gB,EACTl1c,SAAUmhd,GACVjvgB,OAAO,EACP+tD,KAAM,CAAC7sE,KAAUothB,GAAuBa,gBAAU,CAAC,IAAIrqF,WAAYypF,KAEvE,CAAE3khB,QAAS0khB,GAAuBxgd,SAAU6gd,GAAqB5gd,KAAM;;;;;;;;AAuD/E,UAEAgjZ,GAAazwd,UAAb,4BAA0Gywd,KAC1GA,GAAaxjZ,WAtsDiF/sE,+BAssD9F,OAA8Guwd,GAA9GntiB,sDAA8GmtiB,IAtsDhBvwd,qBAssDkG4uhB,IAAhMnwkB,eAAwI,SAQxI,iBAA+B8xgB,GAC3B3viB,YAAYm7c,IACRrvb,QACA3rB,KAAKg7c,KAAOA,GAEhB97V,SAAS4qO,GAAK9lU,IACV,GAAa,MAATA,GACA,OAAO,KACX,OAAQ8lU,SACCmiN,uBACD,OAAOjohB,QACNiohB,uBACD,OAAI6hE,2CAAiC9plB,GAAO,SACjC+plB,2BAAiB/plB,KAErBgqlB,yBAAehumB,KAAKg7c,KAAMjva,OAAO/nB,KAAQnd,gBAC/ColiB,wBACD,OAAI6hE,2CAAiC9plB,GAAO,UACjC+plB,2BAAiB/plB,IAErBA,QACNiohB,yBACD,IAAI6hE,2CAAiC9plB,GAAO,UACxC,OAAO+plB,2BAAiB/plB,IAE5B,MAAM,IAAIk8N,MAAM,8CACf+rT,uBACYgiE,qCAA2BjqlB,IACxC,OAAI8plB,2CAAiC9plB,GAAO,QACjC+plB,2BAAiB/plB,KAErBkqlB,wBAAcnikB,OAAO/nB,UAC3BiohB,+BACD,IAAI6hE,2CAAiC9plB,GAAO,eACxC,OAAO+plB,2BAAiB/plB,IAE5B,MAAM,IAAIk8N,MAAM,0FAEhB,MAAM,IAAIA,MAAO,8BAA6B4pG,0CAG1DzpN,wBAAwBr8G,IACpB,OAAOmqlB,uCAA6BnqlB,IAExCoqlB,yBAAyBpqlB,IACrB,OAAOqqlB,wCAA8BrqlB,IAEzCsqlB,0BAA0BtqlB,IACtB,OAAOuqlB,yCAA+BvqlB,IAE1CwqlB,uBAAuBxqlB,IACnB,OAAOyqlB,sCAA4BzqlB,IAEvCwuF,+BAA+BxuF,IAC3B,OAAO0qlB,8CAAoC1qlB,KAGnD6plB,GAAiB9uhB,UAAjB,4BAA8G8uhB,IAvwDhB5uhB,qBAuwDkDU,QAChJkuhB,GAAiB7hd,WAxwD6E/sE,+BAwwD9F,OAAkH4uhB,GAAlHxrmB,qDA7DA,YAAiCkmF,IAC7B,OAAO,IAAIslhB,GAAiBtlhB,GAAS1nF,IAAI8+E,OA4DuHgvhB,CAxwDtE1vhB,qBAwwD+GiiX,aAA7Mxja,eAAgJ;;;;;;;;;;;;;;;AA6BhJ,MAAMm1W,GAAU,IAAIpnO,UAAQ;;;;;;;;;;;;;;;;;;;;;SAAA;;;;;;;;;;;;SCx9D5B,SACI5rK,YAEAwqE,GAEA1/C,IACI3qB,KAAKqqE,GAAKA,GACVrqE,KAAK2qB,IAAMA,IAQnB,iBAA8BiklB,GAC1B/umB,YAEAwqE,GAEA1/C,GAEAkklB,GAAoB,aAEpBC,GAAgB,MACZnjlB,MAAM0+C,GAAI1/C,IACV3qB,KAAK6umB,kBAAoBA,GACzB7umB,KAAK8umB,cAAgBA,GAGzBjomB,WACI,MAAQ,uBAAsB7G,KAAKqqE,aAAarqE,KAAK2qB,SAY7D,iBAA4BiklB,GACxB/umB,YAEAwqE,GAEA1/C,GAEA2T,IACI3S,MAAM0+C,GAAI1/C,IACV3qB,KAAKs+B,kBAAoBA,GAG7Bz3B,WACI,MAAQ,qBAAoB7G,KAAKqqE,aAAarqE,KAAK2qB,6BAA6B3qB,KAAKs+B,uBAc7F,iBAA+BswkB,GAC3B/umB,YAEAwqE,GAEA1/C,GAEAwzhB,IACIxyhB,MAAM0+C,GAAI1/C,IACV3qB,KAAKm+iB,OAASA,GAGlBt3iB,WACI,MAAQ,wBAAuB7G,KAAKqqE,aAAarqE,KAAK2qB,SAY9D,iBAA8BiklB,GAC1B/umB,YAEAwqE,GAEA1/C,GAEAqM,IACIrL,MAAM0+C,GAAI1/C,IACV3qB,KAAKg3B,MAAQA,GAGjBnwB,WACI,MAAQ,uBAAsB7G,KAAKqqE,aAAarqE,KAAK2qB,gBAAgB3qB,KAAKg3B,UAQlF,iBAA+B43kB,GAC3B/umB,YAEAwqE,GAEA1/C,GAEA2T,GAEAqvT,IACIhiU,MAAM0+C,GAAI1/C,IACV3qB,KAAKs+B,kBAAoBA,GACzBt+B,KAAK2tV,MAAQA,GAGjB9mV,WACI,MAAQ,wBAAuB7G,KAAKqqE,aAAarqE,KAAK2qB,6BAA6B3qB,KAAKs+B,8BAA8Bt+B,KAAK2tV,UAUnI,iBAA+BihR,GAC3B/umB,YAEAwqE,GAEA1/C,GAEA2T,GAEAqvT,IACIhiU,MAAM0+C,GAAI1/C,IACV3qB,KAAKs+B,kBAAoBA,GACzBt+B,KAAK2tV,MAAQA,GAEjB9mV,WACI,MAAQ,wBAAuB7G,KAAKqqE,aAAarqE,KAAK2qB,6BAA6B3qB,KAAKs+B,8BAA8Bt+B,KAAK2tV,UAUnI,iBAA6BihR,GACzB/umB,YAEAwqE,GAEA1/C,GAEA2T,GAEAqvT,GAEAohR,IACIpjlB,MAAM0+C,GAAI1/C,IACV3qB,KAAKs+B,kBAAoBA,GACzBt+B,KAAK2tV,MAAQA,GACb3tV,KAAK+umB,eAAiBA,GAE1BlomB,WACI,MAAQ,sBAAqB7G,KAAKqqE,aAAarqE,KAAK2qB,6BAA6B3qB,KAAKs+B,8BAA8Bt+B,KAAK2tV,0BAA0B3tV,KAAK+umB,mBAahK,gBAA2BH,GACvB/umB,YAEAwqE,GAEA1/C,GAEA2T,GAEAqvT,IACIhiU,MAAM0+C,GAAI1/C,IACV3qB,KAAKs+B,kBAAoBA,GACzBt+B,KAAK2tV,MAAQA,GAEjB9mV,WACI,MAAQ,oBAAmB7G,KAAKqqE,aAAarqE,KAAK2qB,6BAA6B3qB,KAAKs+B,8BAA8Bt+B,KAAK2tV,UAS/H,iBAAyBihR,GACrB/umB,YAEAwqE,GAEA1/C,GAEA2T,GAEAqvT,IACIhiU,MAAM0+C,GAAI1/C,IACV3qB,KAAKs+B,kBAAoBA,GACzBt+B,KAAK2tV,MAAQA,GAEjB9mV,WACI,MAAQ,kBAAiB7G,KAAKqqE,aAAarqE,KAAK2qB,6BAA6B3qB,KAAKs+B,8BAA8Bt+B,KAAK2tV,UAU7H,SACI9tV,YAEAs0D,IACIn0D,KAAKm0D,MAAQA,GAEjBttD,WACI,MAAQ,8BAA6B7G,KAAKm0D,MAAM6zH,SAUxD,SACInoL,YAEAs0D,IACIn0D,KAAKm0D,MAAQA,GAEjBttD,WACI,MAAQ,4BAA2B7G,KAAKm0D,MAAM6zH,SAWtD,SACInoL,YAEA4yN,IACIzyN,KAAKyyN,SAAWA,GAEpB5rN,WAEI,MAAQ,+BADK7G,KAAKyyN,SAASu8Y,aAAehvmB,KAAKyyN,SAASu8Y,YAAYhnb,MAAQ,QAWpF,SACInoL,YAEA4yN,IACIzyN,KAAKyyN,SAAWA,GAEpB5rN,WAEI,MAAQ,6BADK7G,KAAKyyN,SAASu8Y,aAAehvmB,KAAKyyN,SAASu8Y,YAAYhnb,MAAQ,QAYpF,SACInoL,YAEA4yN,IACIzyN,KAAKyyN,SAAWA,GAEpB5rN,WAEI,MAAQ,0BADK7G,KAAKyyN,SAASu8Y,aAAehvmB,KAAKyyN,SAASu8Y,YAAYhnb,MAAQ,QAYpF,SACInoL,YAEA4yN,IACIzyN,KAAKyyN,SAAWA,GAEpB5rN,WAEI,MAAQ,wBADK7G,KAAKyyN,SAASu8Y,aAAehvmB,KAAKyyN,SAASu8Y,YAAYhnb,MAAQ,QASpF,SACInoL,YAEAovmB,GAEA96lB,GAEA89Q,IACIjyR,KAAKivmB,YAAcA,GACnBjvmB,KAAKmU,SAAWA,GAChBnU,KAAKiyR,OAASA,GAElBprR,WACI,MAAMy6V,GAAMthW,KAAKmU,SAAY,GAAEnU,KAAKmU,SAAS,OAAOnU,KAAKmU,SAAS,KAAO,KACzE,MAAQ,mBAAkBnU,KAAKiyR,uBAAuBqvE;;;;;;;SAgB9D,MAAM4tQ,GAAiB,UACvB,SACIrvmB,YAAYq8c,IACRl8c,KAAKk8c,OAASA,IAAU,GAE5Bp5F,IAAIl4T,IACA,OAAOrhC,OAAOU,UAAUojB,eAAenjB,KAAKlqB,KAAKk8c,OAAQtxZ,IAE7D/pD,IAAI+pD,IACA,GAAI5qD,KAAK8iX,IAAIl4T,IAAO,CAChB,MAAMvqD,GAAIL,KAAKk8c,OAAOtxZ,IACtB,OAAOh1C,MAAMukD,QAAQ95D,IAAKA,GAAE,GAAKA,GAErC,OAAO,KAEXg/P,OAAOz0M,IACH,GAAI5qD,KAAK8iX,IAAIl4T,IAAO,CAChB,MAAMvqD,GAAIL,KAAKk8c,OAAOtxZ,IACtB,OAAOh1C,MAAMukD,QAAQ95D,IAAKA,GAAI,CAACA,IAEnC,MAAO,GAEPirC,WACA,OAAO/hB,OAAO+hB,KAAKtrC,KAAKk8c,SAUhC,YAA2BA,IACvB,OAAO,IAAIizJ,GAAYjzJ,IAE3B,MAAMkzJ,GAA6B,6BACnC,YAAkC3hlB,IAC9B,MAAMuJ,GAAQkpN,MAAM,6BAA+BzyN,IACnDuJ,UAAMo4kB,KAA8B,EAC7Bp4kB,GAMX,YAA2BsqS,GAAU+tS,GAAcl7iB,IAC/C,MAAM22Z,GAAQ32Z,GAAM6zH,KAAK7+J,MAAM,KAK/B,GAJI2hc,GAAMtnd,OAAS89T,GAAS99T,QAIJ,SAApB2wD,GAAM61M,YACLqlW,GAAa1ue,eAAiBmqV,GAAMtnd,OAAS89T,GAAS99T,QAEvD,OAAO,KAEX,MAAM8rmB,GAAY,GAElB,QAAS38jB,GAAQ,EAAGA,GAAQm4a,GAAMtnd,OAAQmvC,KAAS,CAC/C,MAAM04X,GAAOy/C,GAAMn4a,IACb81R,GAAUnH,GAAS3uR,IAEzB,GADoB04X,GAAK5oZ,WAAW,KAEhC6slB,GAAUjkM,GAAKlyZ,UAAU,IAAMsvT,WAE1B4iG,KAAS5iG,GAAQzgJ,KAEtB,OAAO,KAGf,MAAO,CAAEunb,SAAUjuS,GAASrlT,MAAM,EAAG6uc,GAAMtnd,QAAS8rmB;;;;;;;SAmBxD,YAAsB7/lB,GAAG8qQ,IAGrB,MAAM4zU,GAAK1+kB,GAAI8Z,OAAO+hB,KAAK77B,SAAKmpW,EAC1Bw1O,GAAK7zU,GAAIhxP,OAAO+hB,KAAKivO,SAAKq+F,EAChC,IAAKu1O,KAAOC,IAAMD,GAAG3qlB,QAAU4qlB,GAAG5qlB,OAC9B,OAAO,EAEX,IAAI8yB,GACJ,QAASp2B,GAAI,EAAGA,GAAIiulB,GAAG3qlB,OAAQtD,KAE3B,GADAo2B,GAAM63jB,GAAGjulB,KACJsvmB,GAAoB//lB,GAAE6mB,IAAMikP,GAAEjkP,KAC/B,OAAO,EAGf,OAAO,EAKX,YAA6B7mB,GAAG8qQ,IAC5B,GAAI3kQ,MAAMukD,QAAQ1qD,KAAMmG,MAAMukD,QAAQogN,IAAI,CACtC,GAAI9qQ,GAAEjM,SAAW+2Q,GAAE/2Q,OACf,OAAO,EACX,MAAMismB,GAAU,IAAIhgmB,IAAG+C,OACjBk9lB,GAAU,IAAIn1V,IAAG/nQ,OACvB,OAAOi9lB,GAAQ/me,MAAM,CAACglN,GAAK/6S,KAAU+8jB,GAAQ/8jB,MAAW+6S,IAGxD,OAAOj+U,KAAM8qQ,GAMrB,YAAiB6+T,IACb,OAAOxjkB,MAAMqU,UAAUjc,OAAOywD,MAAM,GAAI26gB,IAK5C,YAAc3pkB,IACV,OAAOA,GAAEjM,OAAS,EAAIiM,GAAEA,GAAEjM,OAAS,GAAK,KAQ5C,YAAiByvB,GAAK60O,IAClB,UAAWjqH,MAAQ5qH,GACXA,GAAIoa,eAAewwG,KACnBiqH,GAAS70O,GAAI4qH,IAAOA,IAIhC,YAA4B75H,IACxB,OAAIise,wBAAcjse,IACPA,IAEPg3c,qBAAWh3c,KAIJylB,OAAK4tE,QAAQi2O,QAAQtpU,MAEzBsgZ,QAAGtgZ;;;;;;;SAad,MAAM2rlB,GAAiB,CACnBC,MAiBJ,YAA4B5tgB,GAAW6tgB,GAAWC,IAM9C,IALKC,GAAU/tgB,GAAUs/N,SAAUuuS,GAAUvuS,YAExC0uS,GAAkBhugB,GAAUs/N,SAAUuuS,GAAUvuS,SAAUwuS,KAG3D9tgB,GAAUiugB,mBAAqBJ,GAAUI,iBACzC,OAAO,EACX,UAAWxrT,MAAKorT,GAAUv8kB,SAGtB,IAFK0uE,GAAU1uE,SAASmxR,MAEnByrT,GAAmBlugB,GAAU1uE,SAASmxR,IAAIorT,GAAUv8kB,SAASmxR,IAAIqrT,IAClE,OAAO,EAEf,OAAO,GA9BPx2Q,OAAU62Q,IAERC,GAAkB,CACpBR,MASJ,YAAqB5tgB,GAAW6tgB,IAE5B,OAAOQ,GAAarugB,GAAW6tgB,KAV/Bv2Q,OA4BJ,YAAwBt3P,GAAW6tgB,IAC/B,OAAOtmlB,OAAO+hB,KAAKukkB,IAAWrsmB,QAAU+lB,OAAO+hB,KAAK02D,IAAWx+F,QAC3D+lB,OAAO+hB,KAAKukkB,IAAWnne,MAAMpyG,IAAOk5kB,GAAoBxtgB,GAAU1rE,IAAMu5kB,GAAUv5kB,OA7BtFg6kB,QAAW,KAAM,GAErB,YAAsBtugB,GAAW6tgB,GAAW1tV,IACxC,OAAOwtV,GAAextV,GAAQ0nG,OAAO7nR,GAAUmxN,KAAM08S,GAAU18S,KAAMhxC,GAAQ2tV,eACzEM,GAAgBjuV,GAAQr0D,aAAa9rH,GAAU8rH,YAAa+hZ,GAAU/hZ,gBAC/C,UAArBq0D,GAAQouV,UAAwBvugB,GAAUuugB,WAAaV,GAAUU,UA0B3E,YAA8BvugB,GAAW6tgB,GAAWC,IAChD,OAAOU,GAA2BxugB,GAAW6tgB,GAAWA,GAAUvuS,SAAUwuS,IAEhF,YAAoC9tgB,GAAW6tgB,GAAWY,GAAgBX,IACtE,GAAI9tgB,GAAUs/N,SAAS99T,OAASitmB,GAAejtmB,OAAQ,CACnD,MAAMwrR,GAAUhtL,GAAUs/N,SAASrlT,MAAM,EAAGw0lB,GAAejtmB,QAK3D,SAJKusmB,GAAU/gV,GAASyhV,KAEpBZ,GAAUlve,gBAETqve,GAAkBhhV,GAASyhV,GAAgBX,QAI3C9tgB,GAAUs/N,SAAS99T,SAAWitmB,GAAejtmB,OAAQ,CAG1D,IAFKusmB,GAAU/tgB,GAAUs/N,SAAUmvS,MAE9BT,GAAkBhugB,GAAUs/N,SAAUmvS,GAAgBX,IACvD,OAAO,EACX,UAAWrrT,MAAKorT,GAAUv8kB,SAGtB,IAFK0uE,GAAU1uE,SAASmxR,MAEnB0rT,GAAqBnugB,GAAU1uE,SAASmxR,IAAIorT,GAAUv8kB,SAASmxR,IAAIqrT,IACpE,OAAO,EAGf,OAAO,EAEN,CACD,MAAM9gV,GAAUyhV,GAAex0lB,MAAM,EAAG+lF,GAAUs/N,SAAS99T,QACrD+d,GAAOkvlB,GAAex0lB,MAAM+lF,GAAUs/N,SAAS99T,QAKrD,SAJKusmB,GAAU/tgB,GAAUs/N,SAAUtyC,KAE9BghV,GAAkBhugB,GAAUs/N,SAAUtyC,GAAS8gV,KAE/C9tgB,GAAU1uE,SAAS47kB,MAEjBsB,GAA2BxugB,GAAU1uE,SAAS47kB,IAAiBW,GAAWtulB,GAAMuulB,KAG/F,YAA2BY,GAAgBD,GAAgBtuV,IACvD,OAAOsuV,GAAe/ne,MAAM,CAACioe,GAAkBzwmB,KACpCkwmB,GAAgBjuV,IAASuuV,GAAexwmB,IAAGyhC,WAAYgvkB,GAAiBhvkB,aAiCvF,SAEI9hC,YAEAszT,GAEArlG,GAEAyiZ,IACIvwmB,KAAKmzT,KAAOA,GACZnzT,KAAK8tN,YAAcA,GACnB9tN,KAAKuwmB,SAAWA,GAEhBn8iB,oBACA,OAAKp0D,KAAK4wmB,iBACN5wmB,KAAK4wmB,eAAiBC,GAAkB7wmB,KAAK8tN,cAE1C9tN,KAAK4wmB,eAGhB/pmB,WACI,OAAOiqmB,GAAmBC,UAAU/wmB,OAY5C,QACIH,YAEAyhU,GAEAhuS,IACItzB,KAAKshU,SAAWA,GAChBthU,KAAKszB,SAAWA,GAEhBtzB,KAAK8gI,OAAS,KACdv4H,GAAQ+qB,GAAU,CAACjzB,GAAG6+T,KAAM7+T,GAAEygI,OAAS9gI,MAG3C2gI,cACI,OAAO3gI,KAAKiwmB,iBAAmB,EAG/BA,uBACA,OAAO1mlB,OAAO+hB,KAAKtrC,KAAKszB,UAAU9vB,OAGtCqD,WACI,OAAOmqmB,GAAehxmB,OA6B9B,SACIH,YAEAmoL,GAEArmJ,IACI3hC,KAAKgoL,KAAOA,GACZhoL,KAAK2hC,WAAaA,GAElBsvkB,mBACA,OAAKjxmB,KAAKkxmB,gBACNlxmB,KAAKkxmB,cAAgBL,GAAkB7wmB,KAAK2hC,aAEzC3hC,KAAKkxmB,cAGhBrqmB,WACI,OAAOsqmB,GAAcnxmB,OAM7B,YAAmBuyV,GAAII,IACnB,OAAIJ,GAAG/uV,SAAWmvV,GAAGnvV,QAEd+uV,GAAG7pN,MAAM,CAACj5H,GAAGvP,KAAMuP,GAAEu4K,OAAS2qK,GAAGzyV,IAAG8nL,MA4B/C,UAoBA,SAEI7mJ,MAAMxW,IACF,MAAM2kT,GAAI,IAAI8hS,GAAUzmlB,IACxB,OAAO,IAAI0mlB,GAAQ/hS,GAAEgiS,mBAAoBhiS,GAAEiiS,mBAAoBjiS,GAAEkiS,iBAGrET,UAAUU,IACN,MAAMhpS,GAAW,IAAGipS,GAAiBD,GAAKt+S,MAAM,KAC1Cj7R,GAgGd,YAA8Bgkb,IAC1B,MAAMy1J,GAAYpolB,OAAO+hB,KAAK4wa,IACzBjpb,IAAK23B,KACN,MAAM5mC,GAAQk4b,GAAOtxZ,IACrB,OAAOh1C,MAAMukD,QAAQn2C,IACjBA,GAAMiP,IAAI5yB,IAAM,GAAEuxmB,GAAehnjB,OAASgnjB,GAAevxmB,OAAM06B,KAAK,KACnE,GAAE62kB,GAAehnjB,OAASgnjB,GAAe5tlB,QAE7Ctd,OAAOE,MAAOA,IACnB,OAAO+qmB,GAAUnumB,OAAU,IAAGmumB,GAAU52kB,KAAK,OAAS,GAzGpC82kB,CAAqBJ,GAAK3jZ,aAExC,MAAQ,GAAE26G,KAAUvwS,KADuB,iBAAnBu5kB,GAAKlB,SAAyB,IAkE9D,YAA2B3pmB,IACvB,OAAOkrmB,UAAUlrmB,IAnE4CmrmB,CAAkBN,GAAKlB,YAAc,IAClEA,EAGpC,MAAMO,GAAqB,IAAIkB,GAC/B,YAAwBvpS,IACpB,OAAOA,GAAQnH,SAASruS,IAAIq8S,IAAK6hS,GAAc7hS,KAAIv0S,KAAK,KAE5D,YAA0B0tS,GAAStV,IAC/B,IAAKsV,GAAQ9nM,cACT,OAAOqwe,GAAevoS,IAE1B,GAAItV,GAAM,CACN,MAAM8+S,GAAUxpS,GAAQn1S,SAAS47kB,IAC7BwC,GAAiBjpS,GAAQn1S,SAAS47kB,KAAiB,GACnD,GACE57kB,GAAW,GACjB/qB,UAAQkgU,GAAQn1S,SAAU,CAACjzB,GAAG6+T,MACtBA,KAAMgwS,IACN57kB,GAASnwB,KAAM,GAAE+7T,MAAKwyS,GAAiBrxmB,IAAG,QAG3CizB,GAAS9vB,OAAS,EAAK,GAAEyumB,MAAW3+kB,GAASyH,KAAK,SAAWk3kB,GAEnE,CACD,MAAM3+kB,GAjFd,YAA8Bm1S,GAAS3kS,IACnC,IAAIyjb,GAAM,GACVh/c,UAAQkgU,GAAQn1S,SAAU,CAAC42c,GAAOgoI,MAC1BA,KAAgBhD,KAChB3nJ,GAAMA,GAAIv5c,OAAO81B,GAAGomc,GAAOgoI,QAGnC3pmB,GAAQkgU,GAAQn1S,SAAU,CAAC42c,GAAOgoI,MAC1BA,KAAgBhD,KAChB3nJ,GAAMA,GAAIv5c,OAAO81B,GAAGomc,GAAOgoI,QAG5B3qJ,GAqEc4qJ,CAAqB1pS,GAAS,CAACpoU,GAAG6+T,KAC3CA,KAAMgwS,GACC,CAACwC,GAAiBjpS,GAAQn1S,SAAS47kB,KAAiB,IAExD,CAAE,GAAEhwS,MAAKwyS,GAAiBrxmB,IAAG,OAGxC,OAA6C,IAAzCkpB,OAAO+hB,KAAKm9R,GAAQn1S,UAAU9vB,QAAoD,MAApCilU,GAAQn1S,SAAS47kB,IACvD,GAAE8B,GAAevoS,OAAYn1S,GAAS,KAE1C,GAAE09kB,GAAevoS,QAAan1S,GAASyH,KAAK,UAS5D,YAAyBn0B,IACrB,OAAOimC,mBAAmBjmC,IACrBs1B,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KAQ1B,YAAwBt1B,IACpB,OAAOwrmB,GAAgBxrmB,IAAGs1B,QAAQ,QAAS,KAkB/C,YAA0Bt1B,IACtB,OAAOwrmB,GAAgBxrmB,IAAGs1B,QAAQ,MAAO,OAAOA,QAAQ,MAAO,OAAOA,QAAQ,QAAS,KAE3F,YAAgBt1B,IACZ,OAAOitd,mBAAmBjtd,IAI9B,YAAqBA,IACjB,OAAOg+S,GAAOh+S,GAAEs1B,QAAQ,MAAO,QAEnC,YAAuB8rJ,IACnB,MAAQ,GAAEqqb,GAAiBrqb,GAAKA,QAEpC,YAA+Bk0R,IAC3B,OAAO3yb,OAAO+hB,KAAK4wa,IACdjpb,IAAIqD,IAAQ,IAAG+7kB,GAAiB/7kB,OAAQ+7kB,GAAiBn2J,GAAO5lb,QAChEyE,KAAK,IAL8Bu3kB,CAAsBtqb,GAAKrmJ,cAkBvE,MAAM4wkB,GAAa,gBACnB,YAAuBhlJ,IACnB,MAAM9+c,GAAQ8+c,GAAI9+c,MAAM8jmB,IACxB,OAAO9jmB,GAAQA,GAAM,GAAK,GAE9B,MAAM+jmB,GAAiB,YAMvB,MAAMC,GAAuB,UAM7B,SACI5ymB,YAAY8qB,IACR3qB,KAAK2qB,IAAMA,GACX3qB,KAAKk+X,UAAYvzW,GAErB2mlB,mBAEI,OADAtxmB,KAAK0ymB,gBAAgB,KACE,KAAnB1ymB,KAAKk+X,WAAoBl+X,KAAK2ymB,eAAe,MAAQ3ymB,KAAK2ymB,eAAe,KAClE,IAAIC,EAAgB,GAAI,IAG5B,IAAIA,EAAgB,GAAI5ymB,KAAK6ymB,iBAExCtB,mBACI,MAAMr1J,GAAS,GACf,GAAIl8c,KAAK0ymB,gBAAgB,KACrB,GACI1ymB,KAAK8ymB,gBAAgB52J,UAChBl8c,KAAK0ymB,gBAAgB,MAElC,OAAOx2J,GAEXs1J,gBACI,OAAOxxmB,KAAK0ymB,gBAAgB,KAAO7+I,mBAAmB7zd,KAAKk+X,WAAa,KAE5E20O,gBACI,GAAuB,KAAnB7ymB,KAAKk+X,UACL,MAAO,GAEXl+X,KAAK0ymB,gBAAgB,KACrB,MAAMpxS,GAAW,GAIjB,IAHKthU,KAAK2ymB,eAAe,MACrBrxS,GAASn+T,KAAKnD,KAAK+ymB,gBAEhB/ymB,KAAK2ymB,eAAe,OAAS3ymB,KAAK2ymB,eAAe,QAAU3ymB,KAAK2ymB,eAAe,OAClF3ymB,KAAK2ga,QAAQ,KACbr/F,GAASn+T,KAAKnD,KAAK+ymB,gBAEvB,IAAIz/kB,GAAW,GACXtzB,KAAK2ymB,eAAe,QACpB3ymB,KAAK2ga,QAAQ,KACbrtY,GAAWtzB,KAAKgzmB,aAAY,IAEhC,IAAIzrJ,GAAM,GACV,OAAIvnd,KAAK2ymB,eAAe,OACpBprJ,GAAMvnd,KAAKgzmB,aAAY,KAEvB1xS,GAAS99T,OAAS,GAAK+lB,OAAO+hB,KAAKhY,IAAU9vB,OAAS,KACtD+jd,GAAI2nJ,IAAkB,IAAI0D,EAAgBtxS,GAAUhuS,KAEjDi0b,GAIXwrJ,eACI,MAAM/qb,GAAOirb,GAAcjzmB,KAAKk+X,WAChC,GAAa,KAATl2M,IAAehoL,KAAK2ymB,eAAe,KACnC,MAAM,IAAIzyX,MAAO,mDAAkDlgP,KAAKk+X,eAE5E,YAAKyiC,QAAQ34O,IACN,IAAIkrb,GAAWtuT,GAAO58H,IAAOhoL,KAAKmzmB,qBAE7CA,oBACI,MAAMj3J,GAAS,GACf,KAAOl8c,KAAK0ymB,gBAAgB,MACxB1ymB,KAAKozmB,WAAWl3J,IAEpB,OAAOA,GAEXk3J,WAAWl3J,IACP,MAAM5lb,GAAM28kB,GAAcjzmB,KAAKk+X,WAC/B,IAAK5nW,GACD,OAEJt2B,KAAK2ga,QAAQrqY,IACb,IAAItS,GAAQ,GACZ,GAAIhkB,KAAK0ymB,gBAAgB,KAAM,CAC3B,MAAMW,GAAaJ,GAAcjzmB,KAAKk+X,WAClCm1O,KACArvlB,GAAQqvlB,GACRrzmB,KAAK2ga,QAAQ38Y,KAGrBk4b,GAAOt3J,GAAOtuR,KAAQsuR,GAAO5gS,IAGjC8ulB,gBAAgB52J,IACZ,MAAM5lb,GAjGd,YAA0Bi3b,IACtB,MAAM9+c,GAAQ8+c,GAAI9+c,MAAM+jmB,IACxB,OAAO/jmB,GAAQA,GAAM,GAAK,GA+FV6kmB,CAAiBtzmB,KAAKk+X,WAClC,IAAK5nW,GACD,OAEJt2B,KAAK2ga,QAAQrqY,IACb,IAAItS,GAAQ,GACZ,GAAIhkB,KAAK0ymB,gBAAgB,KAAM,CAC3B,MAAMW,GAlGlB,YAAiC9lJ,IAC7B,MAAM9+c,GAAQ8+c,GAAI9+c,MAAMgkmB,IACxB,OAAOhkmB,GAAQA,GAAM,GAAK,GAgGC8kmB,CAAwBvzmB,KAAKk+X,WAC5Cm1O,KACArvlB,GAAQqvlB,GACRrzmB,KAAK2ga,QAAQ38Y,KAGrB,MAAMwvlB,GAAaC,GAAYn9kB,IACzBo9kB,GAAaD,GAAYzvlB,IAC/B,GAAIk4b,GAAO7ua,eAAemmkB,IAAa,CAEnC,IAAIG,GAAaz3J,GAAOs3J,IACnB59lB,MAAMukD,QAAQw5iB,MACfA,GAAa,CAACA,IACdz3J,GAAOs3J,IAAcG,IAEzBA,GAAWxwmB,KAAKuwmB,SAIhBx3J,GAAOs3J,IAAcE,GAI7BV,YAAYY,IACR,MAAMtyS,GAAW,GAEjB,IADAthU,KAAK2ga,QAAQ,MACL3ga,KAAK0ymB,gBAAgB,MAAQ1ymB,KAAKk+X,UAAU16X,OAAS,GAAG,CAC5D,MAAMwkL,GAAOirb,GAAcjzmB,KAAKk+X,WAC1B38W,GAAOvhB,KAAKk+X,UAAUl2M,GAAKxkL,QAGjC,GAAa,MAAT+d,IAAyB,MAATA,IAAyB,MAATA,GAChC,MAAM,IAAI2+N,MAAO,qBAAoBlgP,KAAK2qB,QAE9C,IAAIkplB,GACA7rb,GAAK52K,QAAQ,MAAO,GACpByimB,GAAa7rb,GAAKvwG,OAAO,EAAGuwG,GAAK52K,QAAQ,MACzCpR,KAAK2ga,QAAQkzM,IACb7zmB,KAAK2ga,QAAQ,MAERizM,KACLC,GAAa3E,IAEjB,MAAM57kB,GAAWtzB,KAAK6ymB,gBACtBvxS,GAASuyS,IAA+C,IAAjCtqlB,OAAO+hB,KAAKhY,IAAU9vB,OAAe8vB,GAAS47kB,IACjE,IAAI0D,EAAgB,GAAIt/kB,IAC5BtzB,KAAK0ymB,gBAAgB,MAEzB,OAAOpxS,GAEXqxS,eAAeplJ,IACX,OAAOvtd,KAAKk+X,UAAUz7W,WAAW8qc,IAGrCmlJ,gBAAgBnlJ,IACZ,QAAIvtd,KAAK2ymB,eAAeplJ,MACpBvtd,KAAKk+X,UAAYl+X,KAAKk+X,UAAU/kX,UAAUo0c,GAAI/pd,SACvC,EAEJ,CAEXm9Z,QAAQ4sD,IACJ,IAAKvtd,KAAK0ymB,gBAAgBnlJ,IACtB,MAAM,IAAIrtO,MAAO,aAAYqtO;;;;;;;SAYzC,SACI1td,YAAYszT,IACRnzT,KAAK8zmB,MAAQ3gT,GAEbA,WACA,OAAOnzT,KAAK8zmB,MAAM9vlB,MAKtB88G,OAAO1+H,IACH,MAAMktU,GAAItvU,KAAK+zmB,aAAa3xmB,IAC5B,OAAOktU,GAAE9rU,OAAS,EAAI8rU,GAAEA,GAAE9rU,OAAS,GAAK,KAK5C8vB,SAASlxB,IACL,MAAMiQ,GAAImqQ,GAASp6Q,GAAGpC,KAAK8zmB,OAC3B,OAAOzhmB,GAAIA,GAAEihB,SAASL,IAAI7wB,IAAKA,GAAE4hB,OAAS,GAK9ColB,WAAWhnC,IACP,MAAMiQ,GAAImqQ,GAASp6Q,GAAGpC,KAAK8zmB,OAC3B,OAAOzhmB,IAAKA,GAAEihB,SAAS9vB,OAAS,EAAI6O,GAAEihB,SAAS,GAAGtP,MAAQ,KAK9Do6Z,SAASh8a,IACL,MAAMktU,GAAI0kS,GAAS5xmB,GAAGpC,KAAK8zmB,OAC3B,OAAIxkS,GAAE9rU,OAAS,EACJ,GAEJihT,GADK6qB,GAAE9rU,OAAS,GAAG8vB,SAASL,IAAIwxR,IAAKA,GAAEzgS,OACrCtd,OAAOoqH,IAAMA,KAAO1uH,IAKjC2xmB,aAAa3xmB,IACT,OAAO4xmB,GAAS5xmB,GAAGpC,KAAK8zmB,OAAO7glB,IAAIrsB,IAAKA,GAAEod,QAIlD,YAAkBA,GAAOonY,IACrB,GAAIpnY,KAAUonY,GAAKpnY,MACf,OAAOonY,GACX,UAAW8+E,MAAS9+E,GAAK93X,SAAU,CAC/B,MAAM83X,GAAO5uI,GAASx4P,GAAOkmd,IAC7B,GAAI9+E,GACA,OAAOA,GAEf,OAAO,KAGX,YAAkBpnY,GAAOonY,IACrB,GAAIpnY,KAAUonY,GAAKpnY,MACf,MAAO,CAAConY,IACZ,UAAW8+E,MAAS9+E,GAAK93X,SAAU,CAC/B,MAAM00J,GAAOgsb,GAAShwlB,GAAOkmd,IAC7B,GAAIliT,GAAKxkL,OACLwkL,UAAKn4J,QAAQu7X,IACNpjO,GAGf,MAAO,GAEX,QACInoL,YAAYmkB,GAAOsP,IACftzB,KAAKgkB,MAAQA,GACbhkB,KAAKszB,SAAWA,GAEpBzsB,WACI,MAAQ,YAAW7G,KAAKgkB,UAIhC,YAA2BonY,IACvB,MAAMn4X,GAAM,GACZ,OAAIm4X,IACAA,GAAK93X,SAAS/qB,QAAQ2he,IAASj3c,GAAIi3c,GAAMlmd,MAAMm1b,QAAU+wB,IAEtDj3c;;;;;;;SAAAA,CAyCX,iBAA0BghlB,GAEtBp0mB,YAAYszT,GAEZ1gG,IACI9mM,MAAMwnS,IACNnzT,KAAKyyN,SAAWA,GAChByhZ,GAAel0mB,KAAMmzT,IAEzBtsT,WACI,OAAO7G,KAAKyyN,SAAS5rN,YAG7B,YAA0BstmB,GAASC,IAC/B,MAAM3hZ,GAUV,YAAkC0hZ,GAASC,IACvC,MAIMC,GAAY,IAAIC,GAAuB,GAJzB,GAEK,GACR,GAFC,GAGmFpF,GAAgBkF,GAAe,KAAMD,GAAQhhT,MAAM,EAAI,IAC5J,OAAO,IAAIohT,GAAoB,GAAI,IAAIC,EAASH,GAAW,KAhB1CI,CAAyBN,GAASC,IAC7CM,GAAW,IAAI3zM,IAAgB,CAAC,IAAImyM,GAAW,GAAI,MACnDyB,GAAc,IAAI5zM,IAAgB,IAClC6zM,GAAY,IAAI7zM,IAAgB,IAChC8zM,GAAmB,IAAI9zM,IAAgB,IACvCwvM,GAAW,IAAIxvM,IAAgB,IAC/BszM,GAAY,IAAIS,GAAeJ,GAAUC,GAAaE,GAAkBtE,GAAUqE,GAAW1F,GAAgBkF,GAAe3hZ,GAAS0gG,MAC3IkhT,UAAU5hZ,SAAWA,GAAS0gG,KACvB,IAAI4hT,GAAY,IAAIP,EAASH,GAAW,IAAK5hZ,IA6BxD,SAEI5yN,YAEA8qB,GAEAuxb,GAEApuP,GAEAyiZ,GAEA7tmB,GAEAy2c,GAGA3vW,GAAWwrgB,IACPh1mB,KAAK2qB,IAAMA,GACX3qB,KAAKk8c,OAASA,GACdl8c,KAAK8tN,YAAcA,GACnB9tN,KAAKuwmB,SAAWA,GAChBvwmB,KAAK0C,KAAOA,GACZ1C,KAAKm5c,OAASA,GACdn5c,KAAKwpG,UAAYA,GACjBxpG,KAAKi1mB,gBAAkBD,GAGvBhG,kBACA,OAAOhvmB,KAAKi1mB,gBAAgBjG,YAG5B77S,WACA,OAAOnzT,KAAKk1mB,aAAa/hT,KAGzBryL,aACA,OAAO9gI,KAAKk1mB,aAAap0e,OAAO9gI,MAGhCopC,iBACA,OAAOppC,KAAKk1mB,aAAa9rkB,WAAWppC,MAGpCszB,eACA,OAAOtzB,KAAKk1mB,aAAa5hlB,SAAStzB,MAGlC+zmB,mBACA,OAAO/zmB,KAAKk1mB,aAAanB,aAAa/zmB,MAOtC0yN,eACA,OAAK1yN,KAAKm1mB,YACNn1mB,KAAKm1mB,UAAYn1mB,KAAKk8c,OAAO7zc,MAAK4qB,OAAKq8S,IAAMuhS,GAAkBvhS,OAE5DtvU,KAAKm1mB,UAMZ/gjB,oBACA,OAAKp0D,KAAK4wmB,iBACN5wmB,KAAK4wmB,eACD5wmB,KAAK8tN,YAAYzlN,MAAK4qB,OAAKq8S,IAAMuhS,GAAkBvhS,OAEpDtvU,KAAK4wmB,eAEhB/pmB,WACI,OAAO7G,KAAKyyN,SAAWzyN,KAAKyyN,SAAS5rN,WAAc,UAAS7G,KAAKi1mB,oBAQzE,YAAoC9gjB,GAAOihjB,GAA4B,aACnE,MAAMrB,GAAe5/iB,GAAM4/iB,aAC3B,IAAIsB,GAAyB,EAC7B,GAAkC,WAA9BD,GAEA,IADAC,GAAyBtB,GAAavwmB,OAAS,EACxC6xmB,IAA0B,GAAG,CAChC,MAAMrmV,GAAU+kV,GAAasB,IACvBv0e,GAASize,GAAasB,GAAyB,GAErD,GAAIrmV,GAAQggV,aAA4C,KAA7BhgV,GAAQggV,YAAYhnb,KAC3Cqtb,aAGMv0e,GAAOt3B,UAIb,MAHA6rgB,IAGA,EAIZ,OAGJ,YAA0BtB,IACtB,OAAOA,GAAavuZ,OAAO,CAAC+hQ,GAAK+tJ,MAItB,CAAEp5J,OAHM3yb,OAAOC,OAAOD,OAAOC,OAAO,GAAI+9b,GAAIrL,QAASo5J,GAAKp5J,QAGhDx5c,KAFJ6mB,OAAOC,OAAOD,OAAOC,OAAO,GAAI+9b,GAAI7kd,MAAO4ymB,GAAK5ymB,MAEtC4qV,QADP/jU,OAAOC,OAAOD,OAAOC,OAAO,GAAI+9b,GAAIj6H,SAAUgoR,GAAKC,iBAEpE,CAAEr5J,OAAQ,GAAIx5c,KAAM,GAAI4qV,QAAS,KAT7BkoR,CAAiBzB,GAAa93lB,MAAMo5lB,KAkC/C,SAEIx1mB,YAEA8qB,GAoBAuxb,GAEApuP,GAEAyiZ,GAEA7tmB,GAEAy2c,GAEA3vW,GAAWwlgB,GAAayG,GAAYC,GAAepoR,IAC/CttV,KAAK2qB,IAAMA,GACX3qB,KAAKk8c,OAASA,GACdl8c,KAAK8tN,YAAcA,GACnB9tN,KAAKuwmB,SAAWA,GAChBvwmB,KAAK0C,KAAOA,GACZ1C,KAAKm5c,OAASA,GACdn5c,KAAKwpG,UAAYA,GACjBxpG,KAAKgvmB,YAAcA,GACnBhvmB,KAAK21mB,YAAcF,GACnBz1mB,KAAK41mB,eAAiBF,GACtB11mB,KAAK61mB,SAAWvoR,GAGhBn6B,WACA,OAAOnzT,KAAKk1mB,aAAa/hT,KAGzBryL,aACA,OAAO9gI,KAAKk1mB,aAAap0e,OAAO9gI,MAGhCopC,iBACA,OAAOppC,KAAKk1mB,aAAa9rkB,WAAWppC,MAGpCszB,eACA,OAAOtzB,KAAKk1mB,aAAa5hlB,SAAStzB,MAGlC+zmB,mBACA,OAAO/zmB,KAAKk1mB,aAAanB,aAAa/zmB,MAEtC0yN,eACA,OAAK1yN,KAAKm1mB,YACNn1mB,KAAKm1mB,UAAYtE,GAAkB7wmB,KAAKk8c,SAErCl8c,KAAKm1mB,UAEZ/gjB,oBACA,OAAKp0D,KAAK4wmB,iBACN5wmB,KAAK4wmB,eAAiBC,GAAkB7wmB,KAAK8tN,cAE1C9tN,KAAK4wmB,eAEhB/pmB,WAGI,MAAQ,cAFI7G,KAAK2qB,IAAIsI,IAAIw1S,IAAWA,GAAQ5hU,YAAYk0B,KAAK,gBAC7C/6B,KAAKgvmB,YAAchvmB,KAAKgvmB,YAAYhnb,KAAO,MACvBswS,EA8B5C,iBAAkC27I,GAE9Bp0mB,YAEA8qB,GAAKwoS,IACDxnS,MAAMwnS,IACNnzT,KAAK2qB,IAAMA,GACXuplB,GAAel0mB,KAAMmzT,IAEzBtsT,WACI,OAAOivmB,GAAc91mB,KAAK8zmB,QAGlC,YAAwBnmR,GAAOy9D,IAC3BA,GAAKpnY,MAAMkxlB,aAAevnR,GAC1By9D,GAAK93X,SAAS/qB,QAAQk8S,IAAKyvT,GAAevmR,GAAOlpC,KAErD,YAAuB2mG,IACnB,MAAM3mG,GAAI2mG,GAAK93X,SAAS9vB,OAAS,EAAK,MAAK4nZ,GAAK93X,SAASL,IAAI6ilB,IAAe/6kB,KAAK,WAAa,GAC9F,MAAQ,GAAEqwX,GAAKpnY,QAAQygS,KAO3B,YAA+BtwP,IAC3B,GAAIA,GAAMs+J,SAAU,CAChB,MAAMgoY,GAAkBtmiB,GAAMs+J,SACxBsjZ,GAAe5hjB,GAAM8gjB,gBAC3B9gjB,GAAMs+J,SAAWsjZ,GACZ1F,GAAa5V,GAAgB3sY,YAAaioZ,GAAajoZ,cACxD35J,GAAM25J,YAAYvsM,KAAKw0lB,GAAajoZ,aAEpC2sY,GAAgB8V,WAAawF,GAAaxF,UAC1Cp8iB,GAAMo8iB,SAAShvlB,KAAKw0lB,GAAaxF,UAEhCF,GAAa5V,GAAgBv+I,OAAQ65J,GAAa75J,SACnD/nZ,GAAM+nZ,OAAO36b,KAAKw0lB,GAAa75J,QArmC3C,YAA4Bzsc,GAAG8qQ,IAC3B,GAAI9qQ,GAAEjM,SAAW+2Q,GAAE/2Q,OACf,OAAO,EACX,QAAStD,GAAI,EAAGA,GAAIuP,GAAEjM,SAAUtD,GAC5B,IAAKmwmB,GAAa5gmB,GAAEvP,IAAIq6Q,GAAEr6Q,KACtB,OAAO,EAEf,OAAO,EAgmCE81mB,CAAmBvb,GAAgB9vkB,IAAKorlB,GAAaprlB,MACtDwpC,GAAMxpC,IAAIpJ,KAAKw0lB,GAAaprlB,KAE3B0llB,GAAa5V,GAAgB/3lB,KAAMqzmB,GAAarzmB,OACjDyxD,GAAMzxD,KAAK6e,KAAKw0lB,GAAarzmB,WAIjCyxD,GAAMs+J,SAAWt+J,GAAM8gjB,gBAEvB9gjB,GAAMzxD,KAAK6e,KAAK4yC,GAAM8gjB,gBAAgBvymB,MAG9C,YAAmC+M,GAAG8qQ,IAClC,MAAM07V,GAAiB5F,GAAa5gmB,GAAEysc,OAAQ3hM,GAAE2hM,SAn0BpD,WAAuB3pH,GAAII,IACvB,OAAOo9Q,GAAUx9Q,GAAII,KAAOJ,GAAG7pN,MAAM,CAACj5H,GAAGvP,KAAMmwmB,GAAa5gmB,GAAEkyB,WAAYgxT,GAAGzyV,IAAGyhC,aAk0BrBu0kB,CAAczmmB,GAAEkb,IAAK4vP,GAAE5vP,KAC5EwrlB,IAAmB1mmB,GAAEqxH,SAAYy5I,GAAEz5I,OACzC,OAAOm1e,KAAmBE,MACpB1mmB,GAAEqxH,QAAUs1e,GAA0B3mmB,GAAEqxH,OAAQy5I,GAAEz5I;;;;;;;SAc5D,YAAoBu1e,GAAoBf,GAAMgB,IAE1C,GAAIA,IAAaD,GAAmBE,iBAAiBjB,GAAKtxlB,MAAOsylB,GAAUtylB,MAAMyuM,UAAW,CACxF,MAAMzuM,GAAQsylB,GAAUtylB,MACxBA,GAAMixlB,gBAAkBK,GAAKtxlB,MAC7B,MAAMsP,GAmBd,YAA+B+ilB,GAAoBf,GAAMgB,IACrD,OAAOhB,GAAKhilB,SAASL,IAAIi3c,KACrB,UAAW56J,MAAKgnS,GAAUhjlB,SACtB,GAAI+ilB,GAAmBE,iBAAiBrsI,GAAMlmd,MAAOsrT,GAAEtrT,MAAMyuM,UACzD,OAAO+jZ,GAAWH,GAAoBnsI,GAAO56J,IAGrD,OAAOknS,GAAWH,GAAoBnsI,MA1BrBusI,CAAsBJ,GAAoBf,GAAMgB,IACjE,OAAO,IAAI9B,EAASxwlB,GAAOsP,IAE1B,CACD,GAAI+ilB,GAAmBK,aAAapB,GAAKtxlB,OAAQ,CAE7C,MAAM2ylB,GAAsBN,GAAmBO,SAAStB,GAAKtxlB,OAC7D,GAA4B,OAAxB2ylB,GAA8B,CAC9B,MAAMlF,GAAOkF,GAAoBxijB,MACjCs9iB,UAAKztlB,MAAMixlB,gBAAkBK,GAAKtxlB,MAClCytlB,GAAKn+kB,SAAWgilB,GAAKhilB,SAASL,IAAIwxR,IAAK+xT,GAAWH,GAAoB5xT,KAC/DgtT,IAGf,MAAMztlB,GAed,YAA8BygS,IAC1B,OAAO,IAAIqwT,GAAe,IAAI/zM,IAAgBt8G,GAAE95R,KAAM,IAAIo2Y,IAAgBt8G,GAAEy3J,QAAS,IAAIn7C,IAAgBt8G,GAAE32F,aAAc,IAAIizM,IAAgBt8G,GAAE8rT,UAAW,IAAIxvM,IAAgBt8G,GAAE/hT,MAAO+hT,GAAE00J,OAAQ10J,GAAEj7M,UAAWi7M;;;;;;;SAhB5LoyT,CAAqBvB,GAAKtxlB,OAClCsP,GAAWgilB,GAAKhilB,SAASL,IAAIwxR,IAAK+xT,GAAWH,GAAoB5xT,KACvE,OAAO,IAAI+vT,EAASxwlB,GAAOsP,KAwBnC,YAAuB6gC,GAAOggjB,GAAS2C,GAAUhpZ,GAAayiZ,IAC1D,GAAwB,IAApBuG,GAAStzmB,OACT,OAAOiumB,GAAK0C,GAAQhhT,KAAMghT,GAAQhhT,KAAMghT,GAAQhhT,KAAMrlG,GAAayiZ,IAEvE,MAAMwG,GA+DV,YAA2BD,IACvB,GAA4B,iBAAhBA,GAAS,IAAwC,IAApBA,GAAStzmB,QAAgC,MAAhBszmB,GAAS,GACvE,OAAO,IAAIE,IAAW,EAAM,EAAGF,IAEnC,IAAIG,GAAqB,EACrBC,IAAa,EACjB,MAAM3vJ,GAAMuvJ,GAAStxZ,OAAO,CAAC+hQ,GAAKrjE,GAAKizN,MACnC,GAAmB,iBAARjzN,IAA2B,MAAPA,GAAa,CACxC,GAAIA,GAAIs1D,QAAS,CACb,MAAMA,GAAU,GAChBjxc,UAAQ27Y,GAAIs1D,QAAS,CAACs9J,GAAUlsjB,MAC5B4uZ,GAAQ5uZ,IAA4B,iBAAbksjB,GAAwBA,GAAS3tlB,MAAM,KAAO2tlB,KAElE,IAAIvvJ,GAAK,CAAE/N,aAEtB,GAAIt1D,GAAIkzN,YACJ,MAAO,IAAI7vJ,GAAKrjE,GAAIkzN,aAG5B,MAAqB,iBAARlzN,GACF,IAAIqjE,GAAKrjE,IAEL,IAAXizN,IACAjzN,GAAI/6X,MAAM,KAAK5gB,QAAQ,CAAC8umB,GAASC,MACZ,GAAbA,IAA8B,MAAZD,KAGA,GAAbC,IAA8B,KAAZD,GACvBH,IAAa,EAEI,OAAhBphT,GACDmhT,KAEgB,IAAXI,IACL9vJ,GAAIpkd,KAAKk0mB,OAGV9vJ,IAEJ,IAAIA,GAAKrjE,KACjB,IACH,OAAO,IAAI8yN,GAAWE,GAAYD,GAAoB1vJ,IAxG1CgwJ,CAAkBT,IAC9B,GAAIC,GAAIS,SACJ,OAAO/F,GAAK0C,GAAQhhT,KAAMghT,GAAQhhT,KAAM,IAAIy/S,EAAgB,GAAI,IAAK9kZ,GAAayiZ,IAEtF,MAAMkH,GA6GV,YAA8BV,GAAKtF,GAAMt9iB,IACrC,GAAI4ijB,GAAIG,WACJ,OAAO,IAAIp7kB,GAAS21kB,GAAKt+S,MAAM,EAAM,GAEzC,IAAsC,IAAlCh/P,GAAMs+J,SAASmjZ,eAAuB,CACtC,MAAMvG,GAAel7iB,GAAMs+J,SAASkjZ,YAI9B+B,GAAkBrI,KAAiBoC,GAAKt+S,KAC9C,OAAO,IAAIr3R,GAASuzkB,GAAcqI,GAAiB,GAEvD,MAAMh/M,GAAWi/M,GAAeZ,GAAID,SAAS,IAAM,EAAI,EACjDnkkB,GAAQwhB,GAAMs+J,SAASmjZ,eAAiBl9M,GAC9C,OAEJ,YAA0C7mH,GAAOl/P,GAAOskkB,IACpD,IAAI72mB,GAAIyxS,GACJ5qQ,GAAK0L,GACLg8P,GAAKsoU,GACT,KAAOtoU,GAAK1nQ,IAAI,CAGZ,GAFA0nQ,IAAM1nQ,GACN7mC,GAAIA,GAAE0gI,QACD1gI,GACD,MAAM,IAAI8/O,MAAM,2BAEpBj5M,GAAK7mC,GAAEkhU,SAAS99T,OAEpB,OAAO,IAAIs4B,GAAS17B,IAAG,EAAO6mC,GAAK0nQ,IAd5BipU,CAAiCzjjB,GAAMs+J,SAASkjZ,YAAahjkB,GAAOokkB,GAAIE,oBA3HtDY,CAAqBd,GAAK5C,GAAShgjB,IACtDk7iB,GAAeoI,GAAiBC,gBAClCI,GAA2BL,GAAiBpI,aAAcoI,GAAiB9kkB,MAAOokkB,GAAID,UACtFiB,GAAmBN,GAAiBpI,aAAcoI,GAAiB9kkB,MAAOokkB,GAAID,UAClF,OAAOrF,GAAK0C,GAAQhhT,KAAMskT,GAAiBpI,aAAcA,GAAcvhZ,GAAayiZ,IAExF,YAAwB56B,IACpB,MAA0B,iBAAZA,IAAmC,MAAXA,KAAoBA,GAAQn8H,UAAYm8H,GAAQyhC,YAM1F,YAA8BzhC,IAC1B,MAA0B,iBAAZA,IAAmC,MAAXA,IAAmBA,GAAQn8H,QAErE,YAAcw+J,GAASC,GAAiBC,GAAiBpqZ,GAAayiZ,IAClE,IAAI4H,GAAK,GAMT,GALIrqZ,IACAvlN,GAAQulN,GAAa,CAAC9pM,GAAO4mC,MACzButjB,GAAGvtjB,IAAQh1C,MAAMukD,QAAQn2C,IAASA,GAAMiP,IAAK5yB,IAAO,GAAEA,MAAQ,GAAE2jB,OAGpEg0lB,KAAYC,GACZ,OAAO,IAAI5G,GAAQ6G,GAAiBC,GAAI5H,IAE5C,MAAM6H,GAAUC,GAAeL,GAASC,GAAiBC,IACzD,OAAO,IAAI7G,GAAQ+G,GAASD,GAAI5H,IAEpC,YAAwBvhV,GAASspV,GAAYC,IACzC,MAAMjllB,GAAW,GACjB/qB,UAAQymR,GAAQ17P,SAAU,CAACmxR,GAAGovT,MAEtBvglB,GAASuglB,IADTpvT,KAAM6zT,GACiBC,GAGAF,GAAe5zT,GAAG6zT,GAAYC,MAGtD,IAAI3F,EAAgB5jV,GAAQsyC,SAAUhuS,IAEjD,SACIzzB,YAAYq3mB,GAAYD,GAAoBH,IAIxC,GAHA92mB,KAAKk3mB,WAAaA,GAClBl3mB,KAAKi3mB,mBAAqBA,GAC1Bj3mB,KAAK82mB,SAAWA,GACZI,IAAcJ,GAAStzmB,OAAS,GAAKm0mB,GAAeb,GAAS,IAC7D,MAAM,IAAI52X,MAAM,8CAEpB,MAAMs4X,GAAgB1B,GAAS9zmB,KAAKy1mB,IACpC,GAAID,IAAiBA,KAAkBn3e,GAAKy1e,IACxC,MAAM,IAAI52X,MAAM,2CAGxBs3X,SACI,OAAOx3mB,KAAKk3mB,YAAuC,IAAzBl3mB,KAAK82mB,SAAStzmB,QAAoC,KAApBxD,KAAK82mB,SAAS,EAAM,EA+CpF,SACIj3mB,YAAYwvmB,GAAcqI,GAAiB/kkB,IACvC3yC,KAAKqvmB,aAAeA,GACpBrvmB,KAAK03mB,gBAAkBA,GACvB13mB,KAAK2yC,MAAQA,IAuCrB,YAA4B08jB,GAAc9uD,GAAYu2D,IAIlD,GAHKzH,KACDA,GAAe,IAAIuD,EAAgB,GAAI,KAEN,IAAjCvD,GAAa/tS,SAAS99T,QAAgB6rmB,GAAa1ue,cACnD,OAAOm3e,GAA2BzI,GAAc9uD,GAAYu2D,IAEhE,MAAMt9S,GA4CV,YAAsB61S,GAAc9uD,GAAYu2D,IAC5C,IAAI4B,GAAsB,EACtBC,GAAmBp4D,GACvB,MAAMq4D,GAAU,CAAEnqmB,OAAO,EAAOoqmB,UAAW,EAAGC,aAAc,GAC5D,KAAOH,GAAmBtJ,GAAa/tS,SAAS99T,QAAQ,CACpD,GAAIk1mB,IAAuB5B,GAAStzmB,OAChC,OAAOo1mB,GACX,MAAM5wb,GAAOqnb,GAAa/tS,SAASq3S,IAC7BhjC,GAAUmhC,GAAS4B,IAIzB,GAAID,GAAqB9iC,IACrB,MAEJ,MAAM2/B,GAAQ,GAAE3/B,KACVp0jB,GAAOm3lB,GAAsB5B,GAAStzmB,OAAS,EAAIszmB,GAAS4B,GAAsB,GAAK,KAC7F,GAAIC,GAAmB,QAAc//P,IAAT08P,GACxB,MACJ,GAAIA,IAAQ/zlB,IAAyB,iBAATA,SAAuCq3V,IAAjBr3V,GAAKi4b,QAAuB,CAC1E,IAAKhsR,GAAQ8nb,GAAM/zlB,GAAMymK,IACrB,OAAO4wb,GACXF,IAAuB,MAEtB,CACD,IAAKlrb,GAAQ8nb,GAAM,GAAIttb,IACnB,OAAO4wb,GACXF,KAEJC,KAEJ,MAAO,CAAElqmB,OAAO,EAAMoqmB,UAAWF,GAAkBG,aAAcJ,IA3EvDK,CAAa1J,GAAc9uD,GAAYu2D,IAC3CkC,GAAiBlC,GAAS76lB,MAAMu9S,GAAEs/S,cACxC,GAAIt/S,GAAE/qT,OAAS+qT,GAAEq/S,UAAYxJ,GAAa/tS,SAAS99T,OAAQ,CACvD,MAAMpD,GAAI,IAAIwymB,EAAgBvD,GAAa/tS,SAASrlT,MAAM,EAAGu9S,GAAEq/S,WAAY,IAC3Ez4mB,UAAEkzB,SAAS47kB,IACP,IAAI0D,EAAgBvD,GAAa/tS,SAASrlT,MAAMu9S,GAAEq/S,WAAYxJ,GAAa/7kB,UACxEwklB,GAA2B13mB,GAAG,EAAG44mB,IAEvC,OAAIx/S,GAAE/qT,OAAmC,IAA1BuqmB,GAAex1mB,OACxB,IAAIovmB,EAAgBvD,GAAa/tS,SAAU,IAE7C9H,GAAE/qT,QAAU4gmB,GAAa1ue,cACvBs4e,GAAsB5J,GAAc9uD,GAAYu2D,IAElDt9S,GAAE/qT,MACAqpmB,GAA2BzI,GAAc,EAAG2J,IAG5CC,GAAsB5J,GAAc9uD,GAAYu2D,IAG/D,YAAoCzH,GAAc9uD,GAAYu2D,IAC1D,GAAwB,IAApBA,GAAStzmB,OACT,OAAO,IAAIovmB,EAAgBvD,GAAa/tS,SAAU,IAEjD,CACD,MAAMk4I,GAvCd,YAAoBs9J,IAChB,OAAI2B,GAAqB3B,GAAS,IACvBA,GAAS,GAAGt9J,QAEhB,EAAG01J,IAAiB4H,IAmCPoC,CAAWpC,IACrBxjlB,GAAW,GACjB/qB,UAAQixc,GAAS,CAACs9J,GAAU39J,MACA,iBAAb29J,KACPA,GAAW,CAACA,KAEC,OAAbA,KACAxjlB,GAAS6lb,IAAU4+J,GAAmB1I,GAAa/7kB,SAAS6lb,IAASonG,GAAYu2D,OAGzFvumB,GAAQ8mmB,GAAa/7kB,SAAU,CAAC42c,GAAOgoI,WACNt5P,IAAzB4gG,GAAQ04J,MACR5+kB,GAAS4+kB,IAAehoI,MAGzB,IAAI0oI,EAAgBvD,GAAa/tS,SAAUhuS,KAoC1D,YAA+B+7kB,GAAc9uD,GAAYu2D,IACrD,MAAMjtP,GAAQwlP,GAAa/tS,SAASrlT,MAAM,EAAGskiB,IAC7C,IAAIrgjB,GAAI,EACR,KAAOA,GAAI42mB,GAAStzmB,QAAQ,CACxB,MAAMmykB,GAAUmhC,GAAS52mB,IACzB,GAAIu4mB,GAAqB9iC,IAAU,CAC/B,MAAMrijB,GAAW6llB,GAAyBxjC,GAAQn8H,SAClD,OAAO,IAAIo5J,EAAgB/oP,GAAOv2V,IAGtC,GAAU,IAANpzB,IAAWy3mB,GAAeb,GAAS,IAAK,CACxC,MAAMxnS,GAAI+/R,GAAa/tS,SAASi/O,IAChC12L,GAAM1mX,KAAK,IAAI+vmB,GAAW5jS,GAAEtnJ,KAAM1iJ,GAAUwxkB,GAAS,MACrD52mB,KACA,SAEJ,MAAMo1mB,GAAOmD,GAAqB9iC,IAAWA,GAAQn8H,QAAQ01J,IAAmB,GAAEv5B,KAC5Ep0jB,GAAQrhB,GAAI42mB,GAAStzmB,OAAS,EAAKszmB,GAAS52mB,GAAI,GAAK,KACvDo1mB,IAAQ/zlB,IAAQo2lB,GAAep2lB,KAC/BsoW,GAAM1mX,KAAK,IAAI+vmB,GAAWoC,GAAMhwkB,GAAU/jB,MAC1CrhB,IAAK,IAGL2pX,GAAM1mX,KAAK,IAAI+vmB,GAAWoC,GAAM,KAChCp1mB,MAGR,OAAO,IAAI0ymB,EAAgB/oP,GAAO,IAEtC,YAAkC2vF,IAC9B,MAAMlmb,GAAW,GACjB/qB,UAAQixc,GAAS,CAACs9J,GAAU39J,MACA,iBAAb29J,KACPA,GAAW,CAACA,KAEC,OAAbA,KACAxjlB,GAAS6lb,IAAU8/J,GAAsB,IAAIrG,EAAgB,GAAI,IAAK,EAAGkE,OAG1ExjlB,GAEX,YAAmB4ob,IACf,MAAMqL,GAAM,GACZh/c,UAAQ2zc,GAAQ,CAAC77c,GAAG6+T,KAAMqoJ,GAAIroJ,IAAM,GAAE7+T,MAC/Bknd,GAEX,YAAiBv/R,GAAMk0R,GAAQzzI,IAC3B,OAAOzgJ,IAAQygJ,GAAQzgJ,MAAQqob,GAAan0J,GAAQzzI,GAAQ9mS;;;;;;;SAehE,SACI9hC,YAAYw2mB,GAAoB+C,GAAaC,GAAWC,IACpDt5mB,KAAKq2mB,mBAAqBA,GAC1Br2mB,KAAKo5mB,YAAcA,GACnBp5mB,KAAKq5mB,UAAYA,GACjBr5mB,KAAKs5mB,aAAeA,GAExB/7V,SAASg8V,IACL,MAAMC,GAAax5mB,KAAKo5mB,YAAYtF,MAC9B2F,GAAWz5mB,KAAKq5mB,UAAYr5mB,KAAKq5mB,UAAUvF,MAAQ,KACzD9zmB,KAAK05mB,sBAAsBF,GAAYC,GAAUF,IACjDI,GAAsB35mB,KAAKo5mB,YAAYjmT,MACvCnzT,KAAK45mB,oBAAoBJ,GAAYC,GAAUF,IAGnDG,sBAAsBG,GAAYC,GAAUC,IACxC,MAAMzmlB,GAAW0mlB,GAAkBF,IAEnCD,GAAWvmlB,SAAS/qB,QAAQ0xmB,KACxB,MAAMC,GAAkBD,GAAYj2lB,MAAMm1b,OAC1Cn5c,KAAKm6mB,iBAAiBF,GAAa3mlB,GAAS4mlB,IAAkBH,WACvDzmlB,GAAS4mlB,MAGpB3xmB,GAAQ+qB,GAAU,CAACjzB,GAAG+5mB,MAClBp6mB,KAAKq6mB,8BAA8Bh6mB,GAAG05mB,MAG9CI,iBAAiBN,GAAYC,GAAU91B,IACnC,MAAM3uM,GAASwkO,GAAW71lB,MACpBsxlB,GAAOwE,GAAWA,GAAS91lB,MAAQ,KACzC,GAAIqxX,KAAWigO,GAEX,GAAIjgO,GAAO7rS,UAAW,CAElB,MAAM82D,GAAU0jb,GAAc1hQ,WAAW+yD,GAAO8jE,QAC5C74S,IACAtgK,KAAK05mB,sBAAsBG,GAAYC,GAAUx5c,GAAQhtI,eAK7DtzB,KAAK05mB,sBAAsBG,GAAYC,GAAU91B,SAIjDsxB,IAEAt1mB,KAAKq6mB,8BAA8BP,GAAU91B,IAIzDq2B,8BAA8BlmjB,GAAOoljB,IAG7BpljB,GAAMnwC,MAAMwlF,WAAaxpG,KAAKq2mB,mBAAmBiE,aAAanmjB,GAAMnwC,MAAMyuM,UAC1EzyN,KAAKu6mB,2BAA2BpmjB,GAAOoljB,IAGvCv5mB,KAAKw6mB,yBAAyBrmjB,GAAOoljB,IAG7CgB,2BAA2BpmjB,GAAOoljB,IAC9B,MAAMj5c,GAAUi5c,GAAej3R,WAAWnuR,GAAMnwC,MAAMm1b,QAChD4gK,GAAWz5c,IAAWnsG,GAAMnwC,MAAMwlF,UAAY82D,GAAQhtI,SAAWimlB,GACjEjmlB,GAAW0mlB,GAAkB7ljB,IACnC,UAAW+9iB,MAAe3olB,OAAO+hB,KAAKhY,IAClCtzB,KAAKq6mB,8BAA8B/mlB,GAAS4+kB,IAAc6H,IAE9D,GAAIz5c,IAAWA,GAAQ64S,OAAQ,CAC3B,MAAMr0L,GAAexkH,GAAQ64S,OAAOrwC,SAC9BixM,GAAWz5c,GAAQhtI,SAASmnlB,sBAClCz6mB,KAAKq2mB,mBAAmBlM,MAAMh2iB,GAAMnwC,MAAMyuM,SAAU,CAAEqyD,gBAAc3wN,SAAO4ljB,eAGnFS,yBAAyBrmjB,GAAOoljB,IAC5B,MAAMj5c,GAAUi5c,GAAej3R,WAAWnuR,GAAMnwC,MAAMm1b,QAGhD4gK,GAAWz5c,IAAWnsG,GAAMnwC,MAAMwlF,UAAY82D,GAAQhtI,SAAWimlB,GACjEjmlB,GAAW0mlB,GAAkB7ljB,IACnC,UAAW+9iB,MAAe3olB,OAAO+hB,KAAKhY,IAClCtzB,KAAKq6mB,8BAA8B/mlB,GAAS4+kB,IAAc6H,IAE1Dz5c,IAAWA,GAAQ64S,SAEnB74S,GAAQ64S,OAAOv7L,aAEft9G,GAAQhtI,SAASmnlB,sBAGjBn6c,GAAQo6c,UAAY,KACpBp6c,GAAQiiO,SAAW,KACnBjiO,GAAQnsG,MAAQ,MAGxByljB,oBAAoBC,GAAYC,GAAUC,IACtC,MAAMzmlB,GAAW0mlB,GAAkBF,IACnCD,GAAWvmlB,SAAS/qB,QAAQk8S,KACxBzkT,KAAK26mB,eAAel2T,GAAGnxR,GAASmxR,GAAEzgS,MAAMm1b,QAAS4gK,IACjD/5mB,KAAKs5mB,aAAa,IAAIsB,GAAcn2T,GAAEzgS,MAAMyuM,aAE5ConZ,GAAWvmlB,SAAS9vB,QACpBxD,KAAKs5mB,aAAa,IAAIuB,GAAmBhB,GAAW71lB,MAAMyuM,WAGlEkoZ,eAAed,GAAYC,GAAUP,IACjC,MAAMlkO,GAASwkO,GAAW71lB,MACpBsxlB,GAAOwE,GAAWA,GAAS91lB,MAAQ,KAGzC,GAFA21lB,GAAsBtkO,IAElBA,KAAWigO,GACX,GAAIjgO,GAAO7rS,UAAW,CAElB,MAAM82D,GAAUi5c,GAAeuB,mBAAmBzlO,GAAO8jE,QACzDn5c,KAAK45mB,oBAAoBC,GAAYC,GAAUx5c,GAAQhtI,eAIvDtzB,KAAK45mB,oBAAoBC,GAAYC,GAAUP,YAI/ClkO,GAAO7rS,UAAW,CAElB,MAAM82D,GAAUi5c,GAAeuB,mBAAmBzlO,GAAO8jE,QACzD,GAAIn5c,KAAKq2mB,mBAAmBK,aAAarhO,GAAO5iL,UAAW,CACvD,MAAMsoZ,GAAS/6mB,KAAKq2mB,mBAAmBO,SAASvhO,GAAO5iL,UACvDzyN,KAAKq2mB,mBAAmBlM,MAAM90N,GAAO5iL,SAAU,MAC/CnyD,GAAQhtI,SAAS0nlB,mBAAmBD,GAAOhB,UAC3Cz5c,GAAQo6c,UAAYK,GAAOj2V,aAC3BxkH,GAAQnsG,MAAQ4mjB,GAAO5mjB,MAAMnwC,MACzBs8I,GAAQ64S,QAGR74S,GAAQ64S,OAAO3wX,OAAOuyhB,GAAOj2V,aAAci2V,GAAO5mjB,MAAMnwC,OAE5D21lB,GAAsBoB,GAAO5mjB,MAAMnwC,OACnChkB,KAAK45mB,oBAAoBC,GAAY,KAAMv5c,GAAQhtI,cAElD,CACD,MAAM+jC,GAoB1B,YAA4Bo7J,IACxB,QAAS7rN,GAAI6rN,GAAS3xF,OAAQl6H,GAAGA,GAAIA,GAAEk6H,OAAQ,CAC3C,MAAM3sE,GAAQvtD,GAAEoomB,YAChB,GAAI76iB,IAASA,GAAM8mjB,cACf,OAAO9mjB,GAAM8mjB,cACjB,GAAI9mjB,IAASA,GAAMq1C,UACf,OAAO,KAEf,OAAO;;;;;;;SA5BwB0xgB,CAAmB7lO,GAAO5iL,UACnC0oZ,GAAqB9jjB,GAASA,GAAO2xI,OAAOpwD,yBAA2B,KAC7E0nB,GAAQo6c,UAAY,KACpBp6c,GAAQnsG,MAAQkhV,GAChB/0O,GAAQiiO,SAAW44O,GACf76c,GAAQ64S,QAGR74S,GAAQ64S,OAAOiiK,aAAa/lO,GAAQ8lO,IAExCn7mB,KAAK45mB,oBAAoBC,GAAY,KAAMv5c,GAAQhtI,gBAKvDtzB,KAAK45mB,oBAAoBC,GAAY,KAAMN,KAuB3D,SACI15mB,YAAYw7mB,GAAQrya,IAChBhpM,KAAKq7mB,OAASA,GACdr7mB,KAAKgpM,OAASA;;;;;;;SAwBtB,YAAoB3oM,IAChB,MAAoB,mBAANA,EAAM,CAKxB,YAAmBA,IACf,OAAOA,cAAagxmB;;;;;;;;AAsBxB,MAAMiK,GAAgBtiW,OAAO,iBAC7B,cACI,OAAOssK,OAAU0qE,KACN5oE,QAAc4oE,GAAI/8d,IAAIk2O,IAAKA,GAAE9gQ,MAAKi5Q,OAAK,IAAI6hK,OAAUm4L,OACvDjzmB,MAAKkzmB,OAAK,CAAC3iK,GAAK10V,MACjB,IAAIs3f,IAAY,EAChB,OAAOt3f,GAAKshG,OAAO,CAACi2Z,GAAU/tR,GAAKxtV,KAC3Bu7mB,KAAaH,GACNG,IAEP/tR,KAAQ4tR,KACRE,IAAY,GAKXA,KAGW,IAAR9tR,IAEAxtV,KAAMgkH,GAAK1gH,OAAS,IAAKk4mB,GAAUhuR,IAIpC+tR,GAHQ/tR,IAIhBkrH,KACJ0iK,KAAgB50mB,OAAOmjC,IAAQA,KAASyxkB,KAAgBrolB,OAAI4W,IAAQ6xkB,GAAU7xkB,IAAQA,IAAgB,IAATA,KAChGy3O,OAAK;;;;;;;SAgBb,SACIzhR,cACIG,KAAKm5c,OAAS,KACdn5c,KAAKm0D,MAAQ,KACbn0D,KAAKuiY,SAAW,KAChBviY,KAAKszB,SAAW,IAAIqolB,GACpB37mB,KAAK06mB,UAAY,MAQzB,SACI76mB,cAEIG,KAAK+5mB,SAAW,IAAIpsQ,IAGxBiuQ,qBAAqBxB,GAAWjhK,IAC5B,MAAM74S,GAAUtgK,KAAK86mB,mBAAmBV,IACxC95c,GAAQ64S,OAASA,GACjBn5c,KAAK+5mB,SAASz6W,IAAI86W,GAAW95c,IAOjCu7c,uBAAuBzB,IACnB,MAAM95c,GAAUtgK,KAAKsiV,WAAW83R,IAC5B95c,KACAA,GAAQ64S,OAAS,KACjB74S,GAAQo6c,UAAY,MAO5BD,sBACI,MAAMV,GAAW/5mB,KAAK+5mB,SACtB,YAAKA,SAAW,IAAIpsQ,IACbosQ,GAEXiB,mBAAmBjB,IACf/5mB,KAAK+5mB,SAAWA,GAEpBe,mBAAmBV,IACf,IAAI95c,GAAUtgK,KAAKsiV,WAAW83R,IAC9B,OAAK95c,KACDA,GAAU,IAAIw7c,GACd97mB,KAAK+5mB,SAASz6W,IAAI86W,GAAW95c,KAE1BA,GAEXgiL,WAAW83R,IACP,OAAOp6mB,KAAK+5mB,SAASl5mB,IAAIu5mB,KAAc;;;;;;;SA8D/C,SACIv6mB,YAAY05mB,GAAgBv+iB,GAAUunU,GAAU33U,GAAMp6B,IAClDxwB,KAAKu5mB,eAAiBA,GACtBv5mB,KAAKg7D,SAAWA,GAChBh7D,KAAKuiY,SAAWA,GAChBviY,KAAKwwB,eAAiBA,GACtBxwB,KAAKq0mB,UAAY,KACjBr0mB,KAAK+7mB,gBAAkB,KACvB/7mB,KAAKg8mB,eAAiB,IAAI11M,eAC1Btma,KAAKi8mB,iBAAmB,IAAI31M,eAK5Btma,KAAKk8mB,aAAe,IAAI51M,eAKxBtma,KAAKm8mB,aAAe,IAAI71M,eACxBtma,KAAK4qD,KAAOA,IAAQskjB,GACpBqK,GAAeqC,qBAAqB57mB,KAAK4qD,KAAM5qD,MAGnDkJ,cACIlJ,KAAKu5mB,eAAesC,uBAAuB77mB,KAAK4qD,MAGpDpoD,WACI,IAAKxC,KAAKq0mB,UAAW,CAGjB,MAAM/zc,GAAUtgK,KAAKu5mB,eAAej3R,WAAWtiV,KAAK4qD,MAChD01G,IAAWA,GAAQnsG,QACfmsG,GAAQo6c,UAER16mB,KAAKwoF,OAAO83E,GAAQo6c,UAAWp6c,GAAQnsG,OAIvCn0D,KAAKo7mB,aAAa96c,GAAQnsG,MAAOmsG,GAAQiiO,UAAY,QAKjE65O,kBACA,QAASp8mB,KAAKq0mB,UAMd7qgB,gBACA,IAAKxpG,KAAKq0mB,UACN,MAAM,IAAIn0X,MAAM,2BACpB,OAAOlgP,KAAKq0mB,UAAUrxY,SAEtBnV,qBACA,IAAK7tN,KAAKq0mB,UACN,MAAM,IAAIn0X,MAAM,2BACpB,OAAOlgP,KAAK+7mB,gBAEZM,yBACA,OAAIr8mB,KAAK+7mB,gBACE/7mB,KAAK+7mB,gBAAgBtpZ,SAAS/vN,KAElC,GAKXoma,SACI,IAAK9oa,KAAKq0mB,UACN,MAAM,IAAIn0X,MAAM,2BACpBlgP,KAAKg7D,SAAS8tW,SACd,MAAMwzM,GAAMt8mB,KAAKq0mB,UACjB,YAAKA,UAAY,KACjBr0mB,KAAK+7mB,gBAAkB,KACvB/7mB,KAAKm8mB,aAAaxrlB,KAAK2rlB,GAAIt5Y,UACpBs5Y,GAKX9zhB,OAAOi/T,GAAK55L,IACR7tN,KAAKq0mB,UAAY5sN,GACjBznZ,KAAK+7mB,gBAAkBluZ,GACvB7tN,KAAKg7D,SAASiiN,OAAOwqI,GAAI25C,UACzBphc,KAAKk8mB,aAAavrlB,KAAK82X,GAAIzkL,UAE/B46C,aACI,GAAI59Q,KAAKq0mB,UAAW,CAChB,MAAM5vT,GAAIzkT,KAAKwpG,UACfxpG,KAAKq0mB,UAAUv6V,UACf95Q,KAAKq0mB,UAAY,KACjBr0mB,KAAK+7mB,gBAAkB,KACvB/7mB,KAAKi8mB,iBAAiBtrlB,KAAK8zR,KAGnC22T,aAAavtZ,GAAgB00K,IACzB,GAAIviY,KAAKo8mB,YACL,MAAM,IAAIl8X,MAAM,+CAEpBlgP,KAAK+7mB,gBAAkBluZ,GAEvB,MAAMrkH,GAAYipH,GADcwiZ,gBACLjG,YAAYxlgB,UAEjCnnG,IADNkgY,GAAWA,IAAYviY,KAAKuiY,UACH1pP,wBAAwBrvC,IAC3C+ygB,GAAgBv8mB,KAAKu5mB,eAAeuB,mBAAmB96mB,KAAK4qD,MAAMt3B,SAClEi1D,GAAW,IAAIi0hB,GAAe3uZ,GAAgB0uZ,GAAev8mB,KAAKg7D,SAASutB,UACjFvoF,KAAKq0mB,UAAYr0mB,KAAKg7D,SAASg+E,gBAAgB32I,GAASrC,KAAKg7D,SAASx3D,OAAQ+kF,IAG9EvoF,KAAKwwB,eAAeopL,eACpB55M,KAAKg8mB,eAAerrlB,KAAK3wB,KAAKq0mB,UAAUrxY,WAGhDy5Y,GAAa19hB,UAAb,4BAA0G09hB,IAAVx9hB,8BAAwC08hB,IAAxC18hB,8BAA2EA,oBAA3EA,8BAA2GA,4BAA3GA,8BAAmJ,QAAnJA,8BAAuLA,uBACvRw9hB,GAAaz9hB,UADmFC,8BAChG,MAA8Fw9hB,GAA9F/4mB,kKAsBA,SACI7D,YAAYs0D,GAAOoojB,GAAez7e,IAC9B9gI,KAAKm0D,MAAQA,GACbn0D,KAAKu8mB,cAAgBA,GACrBv8mB,KAAK8gI,OAASA,GAElBjgI,IAAI4+P,GAAOuiM,IACP,OAAIviM,KAAUq1W,GACH90mB,KAAKm0D,MAEZsrM,KAAUk8W,GACH37mB,KAAKu8mB,cAETv8mB,KAAK8gI,OAAOjgI,IAAI4+P,GAAOuiM;;;;;;;SAoBtC;;;;;;;;AAgBA,YAAwB3qY,GAAQqljB,GAAa,IAEzC,QAASx8mB,GAAI,EAAGA,GAAIm3D,GAAO7zD,OAAQtD,KAAK,CACpC,MAAMi0D,GAAQkD,GAAOn3D,IAErBy8mB,GAAaxojB,GADIyojB,GAAYF,GAAYvojB,IACrBugN,EAG5B,YAAsBvgN,GAAOugN,IA0DrBvgN,GAAM7gC,UACNuplB,GAAe1ojB,GAAM7gC,SAAUohP,IAGvC,YAAqBgoW,GAAYI,IAC7B,OAAKA,GAGAJ,IAAeI,GAAa90b,KAGxB00b,KAAeI,GAAa90b,KACzB,GAAE00b,OAEJA,IAAcI,GAAa90b,KAC1B80b,GAAa90b,KAGZ,GAAE00b,MAAcI,GAAa90b,OAT9B,GAHA00b,GAkBf,YAA2Bv6mB,IACvB,MAAMmxB,GAAWnxB,GAAEmxB,UAAYnxB,GAAEmxB,SAASL,IAAI8plB,IACxCt4T,GAAInxR,GAAW/J,OAAOC,OAAOD,OAAOC,OAAO,GAAIrnB,IAAI,CAAEmxB,cAAc/J,OAAOC,OAAO,GAAIrnB,IAC3F,OAAKsiT,GAAEj7M,YAAcl2E,IAAYmxR,GAAEv7C,eAAkBu7C,GAAE00J,QAAU10J,GAAE00J,SAAW+1J,KAC1EzqT,GAAEj7M,UAAYwzgB,IAEXv4T,GAGX,YAAmBtwP,IACf,OAAOA,GAAMglZ,QAAU+1J,GAM3B,YAA+BmM,GAAQxH,IACnC,MAAMoJ,GAAe5B,GAAO30mB,OAAOvE,IAAK+6mB,GAAU/6mB,MAAO0xmB,IACzDoJ,UAAa95mB,QAAQk4mB,GAAO30mB,OAAOvE,IAAK+6mB,GAAU/6mB,MAAO0xmB,KAClDoJ;;;;;;;SAAAA,CA3HXD,GAAsBj+hB,UAAtB,4BAAmHi+hB,KACnHA,GAAsBp9hB,UA3D0EX,8BA2DhG,MAAuG+9hB,GAAvGt5mB,2EA3DgGu7E,sBA2DiF,oBAAjLuhM,YAAwPi8V,IAAxPpiW,kBAoIA,MAAM8iW,GAAY,CACd7kJ,SAAS,EACT8kJ,iBAAkB,GAClBC,kBAAmB,GACnB17kB,WAAY,GACZ27kB,wBAAyB,IAE7B,YAAejO,GAAcl7iB,GAAOmtQ,IAChC,IAAIzL,GACJ,GAAmB,KAAf1hQ,GAAM6zH,KACN,MAAwB,SAApB7zH,GAAM61M,YAAyBqlW,GAAa1ue,eAAiB2gM,GAAS99T,OAAS,GACxE+lB,OAAOC,OAAO,GAAI2zlB,IAEtB,CACH7kJ,SAAS,EACT8kJ,iBAAkB,GAClBC,kBAAmB/7S,GACnB3/R,WAAY,GACZ27kB,wBAAyB,IAIjC,MAAM/1J,IADUpzZ,GAAMmld,SAAWikG,IACbj8S,GAAU+tS,GAAcl7iB,IAC5C,IAAKozZ,GACD,OAAOh+b,OAAOC,OAAO,GAAI2zlB,IAC7B,MAAM7N,GAAY,GAClB/mmB,GAAQg/c,GAAI+nJ,UAAW,CAACjvmB,GAAG6+T,MACvBowS,GAAUpwS,IAAK7+T,GAAE2nL,OAErB,MAAMrmJ,GAAa4lb,GAAIgoJ,SAAS/rmB,OAAS,EAAI+lB,OAAOC,OAAOD,OAAOC,OAAO,GAAI8llB,IAAY/nJ,GAAIgoJ,SAAShoJ,GAAIgoJ,SAAS/rmB,OAAS,GAAGm+B,YAC3H2tkB,GACJ,MAAO,CACHh3I,SAAS,EACT8kJ,iBAAkB71J,GAAIgoJ,SACtB8N,kBAAmB/7S,GAASrlT,MAAMsrc,GAAIgoJ,SAAS/rmB,QAE/Cm+B,cACA27kB,wBAAkD,QAAxBznT,GAAK0xJ,GAAI+nJ,iBAA8B,IAAPz5S,GAAgBA,GAAK,IAGvF,YAAew5S,GAAc+N,GAAkBI,GAAgBnmjB,GAAQ6yM,GAAyB,aAC5F,GAAIszW,GAAeh6mB,OAAS,GAmDhC,YAAkD6rmB,GAAcmO,GAAgBnC,IAC5E,OAAOA,GAAO7ye,KAAKrmI,IAAKs7mB,GAAepO,GAAcmO,GAAgBr7mB,KAAM+6mB,GAAU/6mB,MAAO+smB,IAnDxFwO,CAAyCrO,GAAcmO,GAAgBnmjB,IAAS,CAChF,MAAMzwD,GAAI,IAAIgsmB,EAAgBwK,GAkCtC,YAAqC/N,GAAc+N,GAAkB/B,GAAQsC,IACzE,MAAMp2J,GAAM,GACZA,GAAI2nJ,IAAkByO,GACtBA,GAAeC,eAAiBvO,GAChCsO,GAAeE,mBAAqBT,GAAiB55mB,OACrD,UAAWrB,MAAKk5mB,GACZ,GAAe,KAAXl5mB,GAAE6lL,MAAek1b,GAAU/6mB,MAAO+smB,GAAgB,CAClD,MAAMtomB,GAAI,IAAIgsmB,EAAgB,GAAI,IAClChsmB,GAAEg3mB,eAAiBvO,GACnBzomB,GAAEi3mB,mBAAqBT,GAAiB55mB,OACxC+jd,GAAI21J,GAAU/6mB,KAAMyE,GAG5B,OAAO2gd,GA/C6Cu2J,CAA4BzO,GAAc+N,GAAkB/ljB,GAAQ,IAAIu7iB,EAAgB4K,GAAgBnO,GAAa/7kB,YACrK1sB,UAAEg3mB,eAAiBvO,GACnBzomB,GAAEi3mB,mBAAqBT,GAAiB55mB,OACjC,CAAE6rmB,aAAczomB,GAAG42mB,eAAgB,IAE9C,GAA8B,IAA1BA,GAAeh6mB,QA+CvB,YAAkC6rmB,GAAcmO,GAAgBnC,IAC5D,OAAOA,GAAO7ye,KAAKrmI,IAAKs7mB,GAAepO,GAAcmO,GAAgBr7mB,KA/CjE47mB,CAAyB1O,GAAcmO,GAAgBnmjB,IAAS,CAChE,MAAMzwD,GAAI,IAAIgsmB,EAAgBvD,GAAa/tS,SAUnD,YAAyC+tS,GAAc+N,GAAkBI,GAAgBnC,GAAQ/nlB,GAAU42O,IACvG,MAAMq9M,GAAM,GACZ,UAAWpld,MAAKk5mB,GACZ,GAAIoC,GAAepO,GAAcmO,GAAgBr7mB,MAAOmxB,GAAS4plB,GAAU/6mB,KAAK,CAC5E,MAAMyE,GAAI,IAAIgsmB,EAAgB,GAAI,IAClChsmB,GAAEg3mB,eAAiBvO,GAEfzomB,GAAEi3mB,mBADyB,WAA/B51U,GAC2BonU,GAAa/tS,SAAS99T,OAGtB45mB,GAAiB55mB,OAE5C+jd,GAAI21J,GAAU/6mB,KAAMyE,GAG5B,OAAO2iB,OAAOC,OAAOD,OAAOC,OAAO,GAAI8J,IAAWi0b,IAzBOy2J,CAAgC3O,GAAc+N,GAAkBI,GAAgBnmjB,GAAQg4iB,GAAa/7kB,SAAU42O,KACpKtjQ,UAAEg3mB,eAAiBvO,GACnBzomB,GAAEi3mB,mBAAqBT,GAAiB55mB,OACjC,CAAE6rmB,aAAczomB,GAAG42mB,mBAE9B,MAAM52mB,GAAI,IAAIgsmB,EAAgBvD,GAAa/tS,SAAU+tS,GAAa/7kB,UAClE1sB,UAAEg3mB,eAAiBvO,GACnBzomB,GAAEi3mB,mBAAqBT,GAAiB55mB,OACjC,CAAE6rmB,aAAczomB,GAAG42mB,mBAwC9B,YAAwBnO,GAAcmO,GAAgBr7mB,IAClD,SAAKktmB,GAAa1ue,eAAiB68e,GAAeh6mB,OAAS,IAAsB,SAAhBrB,GAAE6nQ,YAGjD,KAAX7nQ,GAAE6lL,IAAS,CAOtB,YAA0B7zH,GAAO8pjB,GAAY38S,GAAU63I,IAYnD,SAAI+jK,GAAU/ojB,MAAWglZ,IACpBA,KAAW+1J,IAAmBuO,GAAeQ,GAAY38S,GAAUntQ,OAGrD,OAAfA,GAAM6zH,MAGHv5K,GAAMwvmB,GAAY9pjB,GAAOmtQ,IAAUg3J,SAE9C,YAA0B+2I,GAAc/tS,GAAU63I,IAC9C,OAA2B,IAApB73I,GAAS99T,SAAiB6rmB,GAAa/7kB,SAAS6lb;;;;;;;SAU3D,SACIt5c,YAAYwvmB,IACRrvmB,KAAKqvmB,aAAeA,IAAgB,MAG5C,SACIxvmB,YAAYs0mB,IACRn0mB,KAAKm0mB,QAAUA,IAGvB,YAAiB9E,IACb,OAAO1hE,OAAW,IAAIuwE,GAAU7O,KAEpC,YAA0B8O,IACtB,OAAOxwE,OAAW,IAAIywE,GAAiBD,KAgB3C,SACIt+mB,YAAYw+mB,GAAgBC,GAAcC,GAAepK,GAAS98iB,IAC9Dr3D,KAAKs+mB,aAAeA,GACpBt+mB,KAAKu+mB,cAAgBA,GACrBv+mB,KAAKm0mB,QAAUA,GACfn0mB,KAAKq3D,OAASA,GACdr3D,KAAKw+mB,gBAAiB,EACtBx+mB,KAAKopI,SAAWi1e,GAAex9mB,IAAIk1d,eAEvCt3Z,QACI,MAAMggjB,GAAat1lB,GAAMnpB,KAAKm0mB,QAAQhhT,KAAM,GAAI,GAAInzT,KAAKq3D,QAAQg4iB,aAO3DqP,GAAmB,IAAI9L,EAAgB6L,GAAWn9S,SAAUm9S,GAAWnrlB,UAK7E,OAAOqrlB,KAJgBC,mBAAmB5+mB,KAAKopI,SAAUppI,KAAKq3D,OAAQqnjB,GAAkBxP,IAC5D7mmB,MAAK4qB,OAAKyrlB,IAC3B1+mB,KAAKqlH,cAAcw5f,GAAmBH,IAAmB1+mB,KAAKm0mB,QAAQrmZ,YAAa9tN,KAAKm0mB,QAAQ5D,YAE1FlomB,MAAK8liB,OAAYxtiB,KAC9B,GAAIA,cAAay9mB,GAGb,YAAKI,gBAAiB,EAEfx+mB,KAAKyO,MAAM9N,GAAEwzmB,SAExB,MAAIxzmB,cAAau9mB,GACPl+mB,KAAK8+mB,aAAan+mB,IAEtBA,MAGd8N,MAAMgjmB,IAKF,OAAOsN,KAJgBH,mBAAmB5+mB,KAAKopI,SAAUppI,KAAKq3D,OAAQo6iB,GAAKt+S,KAAM+7S,IACvD7mmB,MAAK4qB,OAAKyrlB,IACzB1+mB,KAAKqlH,cAAcw5f,GAAmBH,IAAmBjN,GAAK3jZ,YAAa2jZ,GAAKlB,YAE5ElomB,MAAK8liB,OAAYxtiB,KAC5B,MAAIA,cAAau9mB,GACPl+mB,KAAK8+mB,aAAan+mB,IAEtBA,MAGdm+mB,aAAan+mB,IACT,OAAO,IAAIu/O,MAAO,0CAAyCv/O,GAAE0umB,iBAEjEhqf,cAAc25f,GAAelxZ,GAAayiZ,IACtC,MAAMp9S,GAAO6rT,GAAc19S,SAAS99T,OAAS,EACzC,IAAIovmB,EAAgB,GAAI,EAAG1D,IAAiB8P,KAC5CA,GACJ,OAAO,IAAI3N,GAAQl+S,GAAMrlG,GAAayiZ,IAE1CqO,mBAAmBx1e,GAAUiye,GAAQhM,GAAcl2J,IAC/C,OAAqC,IAAjCk2J,GAAa/tS,SAAS99T,QAAgB6rmB,GAAa1ue,cAC5C3gI,KAAKi/mB,eAAe71e,GAAUiye,GAAQhM,IACxChnmB,MAAK4qB,OAAKK,IAAa,IAAIs/kB,EAAgB,GAAIt/kB,MAEjDtzB,KAAKk/mB,cAAc91e,GAAUime,GAAcgM,GAAQhM,GAAa/tS,SAAU63I,IAAQ,GAG7F8lK,eAAe71e,GAAUiye,GAAQhM,IAG7B,MAAM8P,GAAe,GACrB,UAAWj1I,MAAS3gd,OAAO+hB,KAAK+jkB,GAAa/7kB,UAC3B,YAAV42c,GACAi1I,GAAatvlB,QAAQq6c,IAGrBi1I,GAAah8mB,KAAK+me,IAG1B,OAAOzgc,OAAK01kB,IACP92mB,MAAKk7d,OAAU2uI,KAChB,MAAMhoI,GAAQmlI,GAAa/7kB,SAAS4+kB,IAI9BkN,GAAeC,GAAsBhE,GAAQnJ,IACnD,OAAOlymB,KAAK4+mB,mBAAmBx1e,GAAUg2e,GAAcl1I,GAAOgoI,IACzD7pmB,MAAK4qB,OAAIrsB,KAAM,CAAE6hU,QAAS7hU,GAAGuyc,OAAQ+4J,UAC1CqJ,OAAK,CAACjolB,GAAUgslB,MAChBhslB,GAASgslB,GAAcnmK,QAAUmmK,GAAc72S,QACxCn1S,IACR,IC55FJ,kBACP,6BACA,uBAA+C,OAAM,uBAAsC7jB,KAAU,OAAQ,OAAuB,OAAc02M,KAAiB,OAAY,QAAWrmN,MD05F1Ky/mB,IAEZL,cAAc91e,GAAUime,GAAcgM,GAAQ/5S,GAAU63I,GAAQqlK,IAC5D,OAAO/0kB,OAAK4xkB,IAAQhzmB,MAAKk7d,OAAWphe,IAEzBq9mB,KADgBC,0BAA0Br2e,GAAUime,GAAcgM,GAAQl5mB,GAAGm/T,GAAU63I,GAAQqlK,IACrFn2mB,MAAK8liB,OAAYxtiB,KAC9B,GAAIA,cAAau9mB,GACb,OAAO55M,QAAG,MAEd,MAAM3ja,QAEVygI,OAAOx6H,MAAQA,KAAIuniB,OAAW,CAACxtiB,GAAG0uU,MAClC,GAAI1uU,cAAa++mB,KAAyB,eAAX/+mB,GAAEiqD,KAC7B,OAAI+0jB,GAAiBtQ,GAAc/tS,GAAU63I,KAClC70C,QAAG,IAAIsuM,EAAgB,GAAI,KAE/BgG,GAAQvJ,IAEnB,MAAM1umB,MAGd8+mB,0BAA0Br2e,GAAUime,GAAcgM,GAAQlnjB,GAAO01T,GAAOsvF,GAAQqlK,IAC5E,OAAKoB,GAAiBzrjB,GAAOk7iB,GAAcxlP,GAAOsvF,SAGzBvgG,IAArBzkT,GAAM41M,WACC/pQ,KAAK6/mB,yBAAyBz2e,GAAUime,GAAcl7iB,GAAO01T,GAAOsvF,IAE3EqlK,IAAkBx+mB,KAAKw+mB,eAChBx+mB,KAAK8/mB,uCAAuC12e,GAAUime,GAAcgM,GAAQlnjB,GAAO01T,GAAOsvF,IAE9Fy/J,GAAQvJ,IARJuJ,GAAQvJ,IAUvByQ,uCAAuC12e,GAAUime,GAAcgM,GAAQlnjB,GAAOmtQ,GAAU63I,IACpF,MAAmB,OAAfhlZ,GAAM6zH,KACChoL,KAAK+/mB,kDAAkD32e,GAAUiye,GAAQlnjB,GAAOglZ,IAEpFn5c,KAAKggnB,8CAA8C52e,GAAUime,GAAcgM,GAAQlnjB,GAAOmtQ,GAAU63I,IAE/G4mK,kDAAkD32e,GAAUiye,GAAQlnjB,GAAOglZ,IACvE,MAAMglK,GAAUn+mB,KAAKignB,sBAAsB,GAAI9rjB,GAAM41M,WAAY,IACjE,OAAI51M,GAAM41M,WAAWtnP,WAAW,KACrBy9lB,GAAiB/B,IAErBn+mB,KAAKmgnB,mBAAmBhsjB,GAAOgqjB,IAAS91mB,MAAK+3mB,QAAUC,KAC1D,MAAMxuU,GAAQ,IAAI+gU,EAAgByN,GAAa,IAC/C,OAAOrgnB,KAAKk/mB,cAAc91e,GAAUyoK,GAAOwpU,GAAQgF,GAAalnK,IAAQ,MAGhF6mK,8CAA8C52e,GAAUime,GAAcgM,GAAQlnjB,GAAOmtQ,GAAU63I,IAC3F,MAAQmf,WAAS8kJ,oBAAkBC,qBAAmBC,4BAA4B7umB,GAAM4gmB,GAAcl7iB,GAAOmtQ,IAC7G,IAAKg3J,GACD,OAAOsgJ,GAAQvJ,IACnB,MAAM8O,GAAUn+mB,KAAKignB,sBAAsB7C,GAAkBjpjB,GAAM41M,WAAYuzW,IAC/E,OAAInpjB,GAAM41M,WAAWtnP,WAAW,KACrBy9lB,GAAiB/B,IAErBn+mB,KAAKmgnB,mBAAmBhsjB,GAAOgqjB,IAAS91mB,MAAK+3mB,QAAUC,IACnDrgnB,KAAKk/mB,cAAc91e,GAAUime,GAAcgM,GAAQgF,GAAYrymB,OAAOqvmB,IAAoBlkK,IAAQ,KAGjH0mK,yBAAyBz2e,GAAUk3e,GAAiBnsjB,GAAOmtQ,GAAU63I,IACjE,GAAmB,OAAfhlZ,GAAM6zH,KACN,OAAI7zH,GAAM+0M,cACU/0M,GAAM8mjB,eAAgB32M,QAAGnwW,GAAM8mjB,eAC3Cj7mB,KAAKs+mB,aAAa17W,KAAKx5H,GAAS7gD,SAAUp0B,KAC/B9rD,MAAK4qB,OAAKstlB,KACrBpsjB,GAAM8mjB,cAAgBsF,GACf,IAAI3N,EAAgBtxS,GAAU,QAGtCgjG,QAAG,IAAIsuM,EAAgBtxS,GAAU,KAE5C,MAAQg3J,WAAS8kJ,oBAAkBC,sBAAsB5umB,GAAM6xmB,GAAiBnsjB,GAAOmtQ,IACvF,OAAKg3J,GAGEkoJ,KADmBC,eAAer3e,GAAUj1E,GAAOmtQ,IACtCj5T,MAAK+3mB,QAAUM,KAC/B,MAAMC,GAAcD,GAAa13a,OAC3B43a,GAAcF,GAAarF,QACzBhM,aAAcwR,GAAmBrD,mBAAmBr0lB,GAAMm3lB,GAAiBlD,GAAkBC,GAAmBuD,IAElHvR,GAAe,IAAIuD,EAAgBiO,GAAkBv/S,SAAUu/S,GAAkBvtlB,UACvF,GAA8B,IAA1BkqlB,GAAeh6mB,QAAgB6rmB,GAAa1ue,cAE5C,OAAO6+e,KADgBP,eAAe0B,GAAaC,GAAavR,IAC/ChnmB,MAAK4qB,OAAKK,IAAa,IAAIs/kB,EAAgBwK,GAAkB9plB,MAElF,GAA2B,IAAvBstlB,GAAYp9mB,QAA0C,IAA1Bg6mB,GAAeh6mB,OAC3C,OAAO8ga,QAAG,IAAIsuM,EAAgBwK,GAAkB,KAEpD,MAAM0D,GAAkB5D,GAAU/ojB,MAAWglZ,GAE7C,OAAOqmK,KADgBN,cAAcyB,GAAatR,GAAcuR,GAAapD,GAAgBsD,GAAkB5R,GAAiB/1J,IAAQ,GACvH9wc,MAAK4qB,OAAKwuT,IAAO,IAAImxR,EAAgBwK,GAAiBpvmB,OAAOyzU,GAAGngB,UAAWmgB,GAAGnuT,eAjBxFsllB,GAAQ0H,IAoBvBG,eAAer3e,GAAUj1E,GAAOmtQ,IAC5B,OAAIntQ,GAAM7gC,UAECgxY,QAAG,IAAIy8M,GAAmB5sjB,GAAM7gC,SAAU81G,KAEjDj1E,GAAM+0M,kBAEsB0vG,IAAxBzkT,GAAM8mjB,eACC32M,QAAGnwW,GAAM8mjB,eAEbj7mB,KAAKghnB,iBAAiB53e,GAAS7gD,SAAUp0B,GAAOmtQ,IAClDj5T,MAAK+3mB,QAAUa,IACZA,GACOjhnB,KAAKs+mB,aAAa17W,KAAKx5H,GAAS7gD,SAAUp0B,IAC5C9rD,MAAK4qB,OAAKstlB,KACXpsjB,GAAM8mjB,cAAgBsF,GACfA,MAnN/B,YAAsBpsjB,IAClB,OAAOw5e,OAAWuzE,GAA0B,+DAA8D/sjB,GAAM6zH,0BAqN7Fm5b,CAAahtjB,OAGrBmwW,QAAG,IAAIy8M,GAAmB,GAAI33e,KAEzC43e,iBAAiB3C,GAAgBlqjB,GAAOmtQ,IACpC,MAAM8/S,GAAUjtjB,GAAMitjB,QACtB,IAAKA,IAA8B,IAAnBA,GAAQ59mB,OACpB,OAAO8ga,SAAG,GACd,MAAM+8M,GAAqBD,GAAQnulB,IAAKqulB,KACpC,MAAM9wW,GAAQ6tW,GAAex9mB,IAAIygnB,IACjC,IAAIC,GACJ,GA92BZ,YAAmB/wW,IACf,OAAOA,IAAS49G,GAAW59G,GAAM4wW,SA62BrBI,CAAUhxW,IACV+wW,GAAW/wW,GAAM4wW,QAAQjtjB,GAAOmtQ,aAE3B8sD,GAAW59G,IAIhB,MAAM,IAAItwB,MAAM,yBAHhBqhY,GAAW/wW,GAAMr8M,GAAOmtQ,GAGR,CAEpB,OAAOmgT,GAAmBF,MAE9B,OAAOj9M,QAAG+8M,IACLh5mB,KAAKq5mB,MAAyB/1O,OAAKtlT,KACpC,IAAKq1hB,GAAUr1hB,IACX,OACJ,MAAMrvD,GAAQkqlB,GAA0B,mBAAkBlhnB,KAAKu+mB,cAAcxN,UAAU1qhB,QACvFrvD,SAAMrM,IAAM07D,GACNrvD,MACN/D,OAAIozD,KAAqB,IAAXA,IAAW,CAEjC85hB,mBAAmBhsjB,GAAOggjB,IACtB,IAAI5sJ,GAAM,GACN9iK,GAAI0vT,GAAQhhT,KAChB,OAAa,CAET,GADAo0J,GAAMA,GAAIv5c,OAAOy2S,GAAE6c,UACQ,IAAvB7c,GAAEwrT,iBACF,OAAO3rM,QAAGijD,IAEd,GAAI9iK,GAAEwrT,iBAAmB,IAAMxrT,GAAEnxR,SAAS47kB,IACtC,OAlQcnlW,GAkQc51M,GAAM41M,YAjQvC4jS,OAAW,IAAIztT,MAAO,gEAA+D6pB,QAmQpF06C,GAAIA,GAAEnxR,SAAS47kB,IApQ3B,IAA8BnlW,EAoQHmlW,CAGvB+Q,sBAAsB3+S,GAAUv3D,GAAYulW,IACxC,OAAOtvmB,KAAK2hnB,4BAA4B53W,GAAY/pQ,KAAKu+mB,cAAcp9kB,MAAM4oO,IAAau3D,GAAUguS,IAExGqS,4BAA4B53W,GAAYoqW,GAAS7yS,GAAUguS,IACvD,MAAM8I,GAAUp4mB,KAAK4hnB,mBAAmB73W,GAAYoqW,GAAQhhT,KAAMmO,GAAUguS,IAC5E,OAAO,IAAI+B,GAAQ+G,GAASp4mB,KAAK6hnB,kBAAkB1N,GAAQrmZ,YAAa9tN,KAAKm0mB,QAAQrmZ,aAAcqmZ,GAAQ5D,UAE/GsR,kBAAkBC,GAAkBC,IAChC,MAAMx6J,GAAM,GACZh/c,UAAQu5mB,GAAkB,CAACzhnB,GAAG6+T,MAE1B,GADqC,iBAAN7+T,IAAkBA,GAAEoiB,WAAW,KACzC,CACjB,MAAMu/lB,GAAa3hnB,GAAE8Y,UAAU,GAC/Bouc,GAAIroJ,IAAK6iT,GAAaC,SAGtBz6J,GAAIroJ,IAAK7+T,KAGVknd,GAEXq6J,mBAAmB73W,GAAY8nC,GAAOyvB,GAAUguS,IAC5C,MAAM2S,GAAkBjinB,KAAKkinB,eAAen4W,GAAY8nC,GAAMyvB,SAAUA,GAAUguS,IAClF,IAAIh8kB,GAAW,GACf/qB,UAAQspS,GAAMv+Q,SAAU,CAAC42c,GAAOt/a,MAC5Bt3B,GAASs3B,IAAQ5qD,KAAK4hnB,mBAAmB73W,GAAYmgO,GAAO5oK,GAAUguS,MAEnE,IAAIsD,EAAgBqP,GAAiB3ulB,IAEhD4ulB,eAAen4W,GAAYo4W,GAAoBC,GAAgB9S,IAC3D,OAAO6S,GAAmBlvlB,IAAIrsB,IAAKA,GAAEohL,KAAKvlK,WAAW,KAAOziB,KAAKqinB,aAAat4W,GAAYnjQ,GAAG0omB,IACzFtvmB,KAAKsinB,aAAa17mB,GAAGw7mB,KAE7BC,aAAat4W,GAAYw4W,GAAsBjT,IAC3C,MAAMhuQ,GAAMguQ,GAAUiT,GAAqBv6b,KAAK7uK,UAAU,IAC1D,IAAKmoV,GACD,MAAM,IAAIphH,MAAO,uBAAsB6pB,qBAA6Bw4W,GAAqBv6b,UAC7F,OAAOs5K,GAEXghR,aAAaC,GAAsBH,IAC/B,IAAI7iT,GAAM,EACV,UAAW34T,MAAKw7mB,GAAgB,CAC5B,GAAIx7mB,GAAEohL,OAASu6b,GAAqBv6b,KAChCo6b,UAAe50lB,OAAO+xS,IACf34T,GAEX24T,KAEJ,OAAOgjT,IAuBf,YAA4BlT,IACxB,MAAMmT,GAAc,GACpB,UAAWtQ,MAAe3olB,OAAO+hB,KAAK+jkB,GAAa/7kB,UAAW,CAC1D,MACMmvlB,GAAiB5D,GADTxP,GAAa/7kB,SAAS4+kB,MAGhCuQ,GAAenhT,SAAS99T,OAAS,GAAKi/mB,GAAe9hf,iBACrD6hf,GAAYtQ,IAAeuQ,IAInC,OAvBJ,YAA8B77mB,IAC1B,GAA2B,IAAvBA,GAAEqpmB,kBAA0BrpmB,GAAE0sB,SAAS47kB,IAAiB,CACxD,MAAMzqT,GAAI79S,GAAE0sB,SAAS47kB,IACrB,OAAO,IAAI0D,EAAgBhsmB,GAAE06T,SAAStzT,OAAOy2S,GAAE6c,UAAW7c,GAAEnxR,UAEhE,OAAO1sB,GAkBA87mB,CADG,IAAI9P,EAAgBvD,GAAa/tS,SAAUkhT,IACzB57mB;;;;;;;SAUhC,YAAwBy3mB,GAAgBC,GAAcC,GAAelnjB,IACjE,OAAOiuX,OAAUljb,IAzVrB,YAA0Bi8mB,GAAgBC,GAAcC,GAAepK,GAAS98iB,IAC5E,OAAO,IAAIsrjB,GAAetE,GAAgBC,GAAcC,GAAepK,GAAS98iB,IAAQoH,QAwVlEmkjB,CAAiBvE,GAAgBC,GAAcC,GAAen8mB,GAAEygnB,aAAcxrjB,IAC/FhvD,MAAK4qB,OAAIqL,IAAsB/U,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAEk8B;;;;;;;SAU9E,SACIz+B,YAAYmoL,IACRhoL,KAAKgoL,KAAOA,GACZhoL,KAAKm0D,MAAQn0D,KAAKgoL,KAAKhoL,KAAKgoL,KAAKxkL,OAAS,IAGlD,SACI3D,YAAY2pG,GAAWr1C,IACnBn0D,KAAKwpG,UAAYA,GACjBxpG,KAAKm0D,MAAQA,IAGrB,YAA2BkhV,GAAQigO,GAAMiE,IACrC,MAAMC,GAAankO,GAAOy+N,MAE1B,OAAOgP,GAAoBtJ,GADVlE,GAAOA,GAAKxB,MAAQ,KACYyF,GAAgB,CAACC,GAAWx1lB,QAQjF,YAAkBy7O,GAAOhtC,GAAU4rZ,IAC/B,MAAMhnjB,GAIV,YAAgCo7J,IAC5B,IAAKA,GACD,OAAO,KACX,QAAS7rN,GAAI6rN,GAAS3xF,OAAQl6H,GAAGA,GAAIA,GAAEk6H,OAAQ,CAC3C,MAAM3sE,GAAQvtD,GAAEoomB,YAChB,GAAI76iB,IAASA,GAAM8mjB,cACf,OAAO9mjB,GAAM8mjB,cAErB,OAAO,KAZQ8H,CAAuBtwZ,IAEtC,OADiBp7J,GAASA,GAAO2xI,OAAOzgH,SAAW81hB,IACnCx9mB,IAAI4+P,IAYxB,YAA6Bo6W,GAAYC,GAAUC,GAAUiJ,GAAYC,GAAS,CAC9EC,oBAAqB,GACrBC,kBAAmB,KAEnB,MAAMC,GAAepJ,GAAkBF,IAEvCD,UAAWvmlB,SAAS/qB,QAAQk8S,MAQhC,YAAwBo1T,GAAYC,GAAUP,GAAgByJ,GAAYC,GAAS,CAC/EC,oBAAqB,GACrBC,kBAAmB,KAEnB,MAAM9tO,GAASwkO,GAAW71lB,MACpBsxlB,GAAOwE,GAAWA,GAAS91lB,MAAQ,KACnCs8I,GAAUi5c,GAAiBA,GAAej3R,WAAWu3R,GAAW71lB,MAAMm1b,QAAU,KAEtF,GAAIm8J,IAAQjgO,GAAO25N,cAAgBsG,GAAKtG,YAAa,CACjD,MAAMqU,GAqCd,YAAqC/N,GAAMjgO,GAAQ9yH,IAC/C,GAAoB,mBAATA,GACP,OAAOA,GAAK+yV,GAAMjgO,IAEtB,OAAQ9yH,QACC,mBACD,OAAQwtV,GAAUuF,GAAK3qlB,IAAK0qX,GAAO1qX,SAClC,gCACD,OAAQollB,GAAUuF,GAAK3qlB,IAAK0qX,GAAO1qX,OAC9B0llB,GAAaiF,GAAKxnZ,YAAaunL,GAAOvnL,iBAC1C,SACD,OAAO,MACN,4BACD,OAAQsoZ,GAA0Bd,GAAMjgO,MACnCg7N,GAAaiF,GAAKxnZ,YAAaunL,GAAOvnL,aAC1C,QAED,OAAQsoZ,GAA0Bd,GAAMjgO,KAtD1BiuO,CAA4BhO,GAAMjgO,GAAQA,GAAO25N,YAAYuU,uBAC3EF,GACAJ,GAAOE,kBAAkBhgnB,KAAK,IAAIqgnB,GAAYR,MAI9C3tO,GAAO3yY,KAAO4ymB,GAAK5ymB,KACnB2yY,GAAOkgO,cAAgBD,GAAKC,eAGhCttU,GAAWz+L,UACPs5gB,GAAoBjJ,GAAYC,GAAUx5c,GAAUA,GAAQhtI,SAAW,KAAM0vlB,GAAYC,IAIzFH,GAAoBjJ,GAAYC,GAAUP,GAAgByJ,GAAYC,IAEtEI,IAAa/id,IAAWA,GAAQ64S,QAAU74S,GAAQ64S,OAAOijK,aACzD6G,GAAOC,oBAAoB//mB,KAAK,IAAIsgnB,GAAcnjd,GAAQ64S,OAAO3vW,UAAW8rgB,UAI5EA,IACA+E,GAA8BP,GAAUx5c,GAAS2id,IAErDA,GAAOE,kBAAkBhgnB,KAAK,IAAIqgnB,GAAYR,KAE9C/6U,GAAWz+L,UACPs5gB,GAAoBjJ,GAAY,KAAMv5c,GAAUA,GAAQhtI,SAAW,KAAM0vlB,GAAYC,IAIrFH,GAAoBjJ,GAAY,KAAMN,GAAgByJ,GAAYC,IAG1E,OAAOA,IAnDHS,CAAej/T,GAAG2+T,GAAa3+T,GAAEzgS,MAAMm1b,QAAS4gK,GAAUiJ,GAAWh1mB,OAAO,CAACy2S,GAAEzgS,QAASi/lB,WACjFG,GAAa3+T,GAAEzgS,MAAMm1b,UAGhC5wc,GAAQ66mB,GAAc,CAAC/inB,GAAG6+T,KAAMm7S,GAA8Bh6mB,GAAG05mB,GAASz3R,WAAWpjB,IAAI+jT,KAClFA,GAoEX,YAAuC9ujB,GAAOmsG,GAAS2id,IACnD,MAAM3vlB,GAAW0mlB,GAAkB7ljB,IAC7BhyD,GAAIgyD,GAAMnwC,MAChBzb,GAAQ+qB,GAAU,CAAC83X,GAAMgvN,MAChBj4mB,GAAEqnG,UAIH6wgB,GAA8BjvN,GAD7BjlM,GACmC7lD,GAAQhtI,SAASgvT,WAAW83R,IAG5B,KAHwC6I,IAH5E5I,GAA8BjvN,GAAM9qP,GAAS2id,MASrDz4Z,GAAOhhH,WAGF28G,IAAe7lD,GAAQ64S,QAAU74S,GAAQ64S,OAAOijK,YACjD6G,GAAOC,oBAAoB//mB,KAAK,IAAIsgnB,GAAcnjd,GAAQ64S,OAAO3vW,UAAWrnG,KAH5E8gnB,GAAOC,oBAAoB//mB,KAAK,IAAIsgnB,GAAc,KAAMthnB;;;;;;;SAiBhE,YAAqBk8mB,GAAgB/E,IACjC,OAAO8G,QAASh+mB,KACZ,MAAQuhnB,kBAAgBlpB,mBAAiBpvH,QAAU83I,qBAAmBD,yBAA0B9gnB,GAChG,OAAmC,IAA/B8gnB,GAAoB1/mB,QAA6C,IAA7B2/mB,GAAkB3/mB,QAC/C8ga,QAAG/6Y,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAEwhnB,cAAc,KAU1E,YAAgCX,GAAQY,GAAWC,GAASzF,IACxD,OAAO50kB,OAAKw5kB,IAAQ56mB,MAAK+3mB,QAASjhX,IAwFtC,YAA0B31J,GAAWu6gB,GAASD,GAASD,GAAWxF,IAC9D,MAAMn5f,GAAgB6+f,IAAWA,GAAQ/U,YAAc+U,GAAQ/U,YAAY9pf,cAAgB,KAC3F,IAAKA,IAA0C,IAAzBA,GAAc1hH,OAChC,OAAO8ga,SAAG,GACd,MAAM0/M,GAA2B9+f,GAAcjyF,IAAKwxR,KAChD,MAAMj0C,GAAQm2N,GAASliL,GAAGs/T,GAAS1F,IACnC,IAAIn3L,GACJ,GAnvCR,WAAyB12K,IACrB,OAAOA,IAAS49G,GAAW59G,GAAMtrJ,eAkvCzB++f,CAAgBzzW,IAChB02K,GAAau6L,GAAmBjxW,GAAMtrJ,cAAc1b,GAAWu6gB,GAASD,GAASD,cAE5Ez1P,GAAW59G,IAIhB,MAAM,IAAItwB,MAAM,+BAHhBgnM,GAAau6L,GAAmBjxW,GAAMhnK,GAAWu6gB,GAASD,GAASD,IAGnD,CAEpB,OAAO38L,GAAW7+a,MAAK+4H,YAE3B,OAAOkjS,QAAG0/M,IAA0B37mB,KAAKq5mB;;;;;;;SA1GEwC,CAAiB/kX,GAAM31J,UAAW21J,GAAMhrM,MAAO2vjB,GAASD,GAAWxF,MAAkBj9e,OAAM/6C,KAChH,IAAXA,IACR,IAXQ89hB,CAAuBjB,GAAqBS,GAAgBlpB,GAAiB4jB,IAC/Eh2mB,MAAK+3mB,QAASl7f,IACRA,IA5pCnB,YAAmB7kH,IACf,MAAoB,kBAANA,EAAM,CA2pCY8tY,CAAUjpR,IAW9C,YAA8B8vf,GAAgBiO,GAAQ5E,GAAgB/E,IAClE,OAAO7vkB,OAAKw5kB,IAAQ56mB,MAAKk7d,OAAWpkO,KACzBnxP,OA2Bf,YAAkCykN,GAAU6mZ,IACxC,OAAiB,OAAb7mZ,IAAqB6mZ,IACrBA,GAAa,IAAI8K,GAAqB3xZ,MAEnC6xM,SAAG,GA/BQ+/M,CAAyBllX,GAAMhrM,MAAM2sE,OAAQw4e,IAanE,YAA6B7mZ,GAAU6mZ,IACnC,OAAiB,OAAb7mZ,IAAqB6mZ,IACrBA,GAAa,IAAIgL,GAAgB7xZ,MAE9B6xM,SAAG,GAjBoEigN,CAAoBplX,GAAMhrM,MAAOmljB,IAuDnH,YAA6BuK,GAAW77b,GAAMq2b,IAC1C,MAAMmG,GAAYx8b,GAAKA,GAAKxkL,OAAS,GAK/BihnB,GAA+BC,GAJDzomB,MAAM,EAAG+rK,GAAKxkL,OAAS,GACtDu9G,UACA9tF,IAAIq8S,IArNb,YAA6BA,IACzB,MAAMq1S,GAAmBr1S,GAAE0/R,YAAc1/R,GAAE0/R,YAAY2V,iBAAmB,KAC1E,OAAKA,IAAgD,IAA5BA,GAAiBnhnB,OAEnC,CAAE4nZ,KAAM97E,GAAG+7J,OAAQs5I,IADf,IACeA,CAiNZC,CAAoBt1S,KAC7B5oU,OAAO2oU,IAAW,OAANA,IAC2Cp8S,IAAK9hB,KACtDkxX,OAAM,KACT,MAAMwiP,GAAe1zmB,GAAEk6d,OAAOp4c,IAAKwxR,KAC/B,MAAMj0C,GAAQm2N,GAASliL,GAAGtzS,GAAEi6Y,KAAMizN,IAClC,IAAIn3L,GACJ,GA/tChB,YAA4B12K,IACxB,OAAOA,IAAS49G,GAAW59G,GAAMm0W,kBA8tCjBG,CAAmBt0W,IACnB02K,GAAau6L,GAAmBjxW,GAAMm0W,iBAAiBH,GAAWX,cAE7Dz1P,GAAW59G,IAIhB,MAAM,IAAItwB,MAAM,kCAHhBgnM,GAAau6L,GAAmBjxW,GAAMg0W,GAAWX,IAGjC,CAEpB,OAAO38L,GAAW7+a,MAAK+4H,YAE3B,OAAOkjS,QAAGugN,IAAcx8mB,KAAKq5mB,SAGrC,OAAOp9M,QAAGmgN,IAA8Bp8mB,KAAKq5mB,MAhFiFqD,CAAoB/P,GAAgB71W,GAAMn3E,KAAMq2b,IAiClL,YAAwBwF,GAAWW,GAAWnG,IAC1C,MAAMr8lB,GAAcwimB,GAAUxV,YAAcwV,GAAUxV,YAAYhtlB,YAAc,KAChF,IAAKA,IAAsC,IAAvBA,GAAYxe,OAC5B,OAAO8ga,SAAG,GACd,MAAM0gN,GAAyBhjmB,GAAYiR,IAAKwxR,KACrC49E,OAAM,KACT,MAAM7xH,GAAQm2N,GAASliL,GAAG+/T,GAAWnG,IACrC,IAAIn3L,GACJ,GAzsCZ,YAAuB12K,IACnB,OAAOA,IAAS49G,GAAW59G,GAAMxuP,aAwsCrBijmB,CAAcz0W,IACd02K,GAAau6L,GAAmBjxW,GAAMxuP,YAAYwimB,GAAWX,cAExDz1P,GAAW59G,IAIhB,MAAM,IAAItwB,MAAM,6BAHhBgnM,GAAau6L,GAAmBjxW,GAAMg0W,GAAWX,IAGjC,CAEpB,OAAO38L,GAAW7+a,MAAK+4H,aAG/B,OAAOkjS,QAAG0gN,IAAwB38mB,KAAKq5mB,MArDwJwD,CAAelQ,GAAgB71W,GAAMhrM,MAAOkqjB,OACvOj9e,OAAM/6C,KACY,IAAXA,IACR,IAfS8+hB,CAAqBxB,GAAgBR,GAAmB9E,GAAgB/E,KACxEh1M,QAAGp/S,MACPjyF,OAAI2wlB,IAAiBr6lB,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAEwhnB,sBAwHvE,UAEA,YAA4BjjnB,IAExB,OAAO,IAAIugb,IAAY8uE,IAAQA,GAAIh5d,MAAMr2B,KAmB7C,SACId,YAAYulnB,GAAmB/tjB,GAAQ88iB,GAASxplB,GAAKyqlB,GAA2BlrW,IAC5ElqQ,KAAKolnB,kBAAoBA,GACzBplnB,KAAKq3D,OAASA,GACdr3D,KAAKm0mB,QAAUA,GACfn0mB,KAAK2qB,IAAMA,GACX3qB,KAAKo1mB,0BAA4BA,GACjCp1mB,KAAKkqQ,uBAAyBA,GAElCm7W,YACI,MAAM3G,GAAmBv1lB,GAAMnpB,KAAKm0mB,QAAQhhT,KAAM,GAAI,GAAInzT,KAAKq3D,OAAO3wD,OAAO+9S,SAAsBm0D,IAAjBn0D,GAAE16C,YAA2B/pQ,KAAKkqQ,wBAC/GmlW,aACC/7kB,GAAWtzB,KAAKslnB,oBAAoBtlnB,KAAKq3D,OAAQqnjB,GAAkBxP,IACzE,GAAiB,OAAb57kB,GACA,OAAO,KAIX,MAAM6/R,GAAO,IAAImhT,GAAuB,GAAI/qlB,OAAOg8lB,OAAO,IAAKh8lB,OAAOg8lB,OAAOh8lB,OAAOC,OAAO,GAAIxpB,KAAKm0mB,QAAQrmZ,cAAe9tN,KAAKm0mB,QAAQ5D,SAAU,GAAIrB,GAAgBlvmB,KAAKolnB,kBAAmB,KAAMplnB,KAAKm0mB,QAAQhhT,MAAM,EAAI,IACrNoxG,GAAW,IAAIiwM,EAASrhT,GAAM7/R,IAC9BkylB,GAAa,IAAIjR,GAAoBv0mB,KAAK2qB,IAAK45Y,IACrD,YAAKkhN,qBAAqBD,GAAW1R,OAC9B0R,GAEXC,qBAAqBC,IACjB,MAAMvxjB,GAAQuxjB,GAAU1hmB,MAClB9jB,GAAIylnB,GAA2BxxjB,GAAOn0D,KAAKo1mB,2BACjDjhjB,GAAM+nZ,OAAS3yb,OAAOg8lB,OAAOrlnB,GAAEg8c,QAC/B/nZ,GAAMzxD,KAAO6mB,OAAOg8lB,OAAOrlnB,GAAEwC,MAC7BgjnB,GAAUpylB,SAAS/qB,QAAQ8J,IAAKrS,KAAKylnB,qBAAqBpzmB,KAE9DizmB,oBAAoBjujB,GAAQg4iB,GAAcl2J,IACtC,OAAqC,IAAjCk2J,GAAa/tS,SAAS99T,QAAgB6rmB,GAAa1ue,cAC5C3gI,KAAK03mB,gBAAgBrgjB,GAAQg4iB,IAEjCrvmB,KAAK4lnB,eAAevujB,GAAQg4iB,GAAcA,GAAa/tS,SAAU63I,IAU5Eu+J,gBAAgBrgjB,GAAQg4iB,IACpB,MAAM/7kB,GAAW,GACjB,UAAW4+kB,MAAe3olB,OAAO+hB,KAAK+jkB,GAAa/7kB,UAAW,CAC1D,MAAM42c,GAAQmlI,GAAa/7kB,SAAS4+kB,IAG9B+K,GAAeoC,GAAsBhojB,GAAQ66iB,IAC7C2T,GAAiB7lnB,KAAKslnB,oBAAoBrI,GAAc/yI,GAAOgoI,IACrE,GAAuB,OAAnB2T,GAGA,OAAO,KAEXvylB,GAASnwB,QAAQ0inB,IAKrB,MAAMC,GAAiBC,GAAsBzylB,IAM7C0ylB,OAkER,YAAqC38kB,IACjCA,GAAM72B,KAAK,CAAC/C,GAAG8qQ,KACP9qQ,GAAEuU,MAAMm1b,SAAW+1J,IACZ,EACP30V,GAAEv2P,MAAMm1b,SAAW+1J,GACZ,EACJz/lB,GAAEuU,MAAMm1b,OAAOhvb,cAAcowP,GAAEv2P,MAAMm1b,SAxE5C6sK,CAA4BF,IACrBA,GAEXF,eAAevujB,GAAQg4iB,GAAc/tS,GAAU63I,IAC3C,UAAWh3c,MAAKk1D,GAAQ,CACpB,MAAM/jC,GAAWtzB,KAAKimnB,2BAA2B9jnB,GAAGktmB,GAAc/tS,GAAU63I,IAC5E,GAAiB,OAAb7lb,GACA,OAAOA,GAGf,OAAIqslB,GAAiBtQ,GAAc/tS,GAAU63I,IAClC,GAEJ,KAEX8sK,2BAA2B9xjB,GAAO8pjB,GAAY38S,GAAU63I,IACpD,GAAIhlZ,GAAM41M,aAAe61W,GAAiBzrjB,GAAO8pjB,GAAY38S,GAAU63I,IACnE,OAAO,KACX,IAAI1mP,GACA2qZ,GAAmB,GACnBC,GAAoB,GACxB,GAAmB,OAAflpjB,GAAM6zH,KAAe,CACrB,MAAMk0R,GAAS56I,GAAS99T,OAAS,EAAI69H,GAAKigM,IAAU3/R,WAAa,GACjE8wL,GAAW,IAAI6hZ,GAAuBhzS,GAAU46I,GAAQ3yb,OAAOg8lB,OAAOh8lB,OAAOC,OAAO,GAAIxpB,KAAKm0mB,QAAQrmZ,cAAe9tN,KAAKm0mB,QAAQ5D,SAAUv+Q,GAAQ79R,IAAQ+ojB,GAAU/ojB,IAAQA,GAAMq1C,UAAWr1C,GAAO+xjB,GAAsBjI,IAAakI,GAAkBlI,IAAc38S,GAAS99T,OAAQ4inB,GAAWjyjB,SAEnS,CACD,MAAMkyB,GAAS53E,GAAMwvmB,GAAY9pjB,GAAOmtQ,IACxC,IAAKj7O,GAAOiyY,QACR,OAAO,KAEX8kJ,GAAmB/2hB,GAAO+2hB,iBAC1BC,GAAoBh3hB,GAAOg3hB,kBAC3B5qZ,GAAW,IAAI6hZ,GAAuB8I,GAAkB/2hB,GAAO1kD,WAAYpY,OAAOg8lB,OAAOh8lB,OAAOC,OAAO,GAAIxpB,KAAKm0mB,QAAQrmZ,cAAe9tN,KAAKm0mB,QAAQ5D,SAAUv+Q,GAAQ79R,IAAQ+ojB,GAAU/ojB,IAAQA,GAAMq1C,UAAWr1C,GAAO+xjB,GAAsBjI,IAAakI,GAAkBlI,IAAcb,GAAiB55mB,OAAQ4inB,GAAWjyjB,KAEnU,MAAMysjB,GAyCd,YAAwBzsjB,IACpB,OAAIA,GAAM7gC,SACC6gC,GAAM7gC,SAEb6gC,GAAM+0M,aACC/0M,GAAM8mjB,cAAcI,OAExB,GAhDiBoF,CAAetsjB,KAC3Bk7iB,gBAAcmO,mBAAmBr0lB,GAAM80lB,GAAYb,GAAkBC,GAI7EuD,GAAYl6mB,OAAO+9S,SAAsBm0D,IAAjBn0D,GAAE16C,YAA2B/pQ,KAAKkqQ,wBAC1D,GAA8B,IAA1BszW,GAAeh6mB,QAAgB6rmB,GAAa1ue,cAAe,CAC3D,MAAMrtG,GAAWtzB,KAAK03mB,gBAAgBkJ,GAAavR,IACnD,OAAiB,OAAb/7kB,GACO,KAEJ,CAAC,IAAIkhlB,EAAS/hZ,GAAUn/L,KAEnC,GAA2B,IAAvBstlB,GAAYp9mB,QAA0C,IAA1Bg6mB,GAAeh6mB,OAC3C,MAAO,CAAC,IAAIgxmB,EAAS/hZ,GAAU,KAEnC,MAAMquZ,GAAkB5D,GAAU/ojB,MAAWglZ,GASvC7lb,GAAWtzB,KAAK4lnB,eAAehF,GAAavR,GAAcmO,GAAgBsD,GAAkB5R,GAAiB/1J,IACnH,OAAiB,OAAb7lb,GACO,KAEJ,CAAC,IAAIkhlB,EAAS/hZ,GAAUn/L,MAqBvC,YAA4B83X,IACxB,MAAM/zV,GAAS+zV,GAAKpnY,MAAMgrlB,YAC1B,OAAO33iB,IAA0B,KAAhBA,GAAO2wH,WAAqC4wL,IAAtBvhT,GAAO0yM,UAAe6uG,CAOjE,YAA+BvvU,IAC3B,MAAMg9C,GAAS,GAETggiB,GAAc,IAAI5ga,IACxB,UAAW2lM,MAAQ/hX,GAAO,CACtB,IAAKi9kB,GAAmBl7N,IAAO,CAC3B/kU,GAAOljF,KAAKioZ,IACZ,SAEJ,MAAMm7N,GAAyBlgiB,GAAOrjF,KAAKwjnB,IAAcp7N,GAAKpnY,MAAMgrlB,cAAgBwX,GAAWximB,MAAMgrlB,kBACtEp2P,IAA3B2tQ,IACAA,GAAuBjzlB,SAASnwB,QAAQioZ,GAAK93X,UAC7C+ylB,GAAYv+d,IAAIy+d,KAGhBlgiB,GAAOljF,KAAKioZ,IAOpB,UAAWq7N,MAAcJ,GAAa,CAClC,MAAMP,GAAiBC,GAAsBU,GAAWnzlB,UACxD+yD,GAAOljF,KAAK,IAAIqxmB,EAASiS,GAAWzimB,MAAO8hmB,KAE/C,OAAOz/hB,GAAO3/E,OAAO2L,KAAMg0mB,GAAYvjQ,IAAIzwW,KAc/C,YAA+Bg9lB,IAC3B,IAAIzomB,GAAIyomB,GACR,KAAOzomB,GAAEg3mB,gBACLh3mB,GAAIA,GAAEg3mB,eAEV,OAAOh3mB,GAEX,YAA2ByomB,IACvB,IAAIzomB,GAAIyomB,GACJ9nJ,GAAO3gd,GAAEi3mB,mBAAqBj3mB,GAAEi3mB,mBAAqB,EACzD,KAAOj3mB,GAAEg3mB,gBACLh3mB,GAAIA,GAAEg3mB,eACNr2J,IAAQ3gd,GAAEi3mB,mBAAqBj3mB,GAAEi3mB,mBAAqB,EAE1D,OAAOt2J,GAAM,EAEjB,YAAiBpzZ,IACb,OAAOA,GAAMzxD,MAAQ,GAEzB,YAAoByxD,IAChB,OAAOA,GAAMm5R,SAAW;;;;;;;SAU5B,YAAmB83R,GAAmB/tjB,GAAQqvjB,GAAYtR,GAA2BlrW,IACjF,OAAOk2W,QAASh+mB,IA1PpB,YAAqBgjnB,GAAmB/tjB,GAAQ88iB,GAASxplB,GAAKyqlB,GAA4B,YAAalrW,GAAyB,UAC5H,IACI,MAAM7jL,GAAS,IAAIsgiB,GAAWvB,GAAmB/tjB,GAAQ88iB,GAASxplB,GAAKyqlB,GAA2BlrW,IAC7Fm7W,YACL,OAAe,OAAXh/hB,GACOugiB,GAAmB,IAAIC,KAGvBviN,QAAGj+U,GAMY1lF,CANZ0lF,MAGX1lF,IAGH,OAAOimnB,GAAmBjmnB,KA4OTmmnB,CAAY1B,GAAmB/tjB,GAAQj1D,GAAEk8B,kBAAmBoolB,GAAWtknB,GAAEk8B,mBAAoB82kB,GAA2BlrW,IACxI7hQ,MAAK4qB,OAAI0wlB,IAAmBp6lB,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAEuhnB;;;;;;;SAU3E,YAAqBvO,GAA2BiJ,IAC5C,OAAO+B,QAASh+mB,KACZ,MAAQuhnB,kBAAgBt4I,QAAU83I,uBAAwB/gnB,GAC1D,IAAK+gnB,GAAkB3/mB,OACnB,OAAO8ga,QAAGlia,IAEd,IAAI2knB,GAA4B,EAChC,OAAOt9kB,OAAK05kB,IACP96mB,MAAKk7d,OAAUpkO,IAG5B,YAAoBqlX,GAAWX,GAAWzO,GAA2BiJ,IAEjE,OAOJ,YAAqB/wR,GAASk3R,GAAWX,GAAWxF,IAChD,MAAM/ykB,GAAO07kB,GAAY15R,IACzB,GAAoB,IAAhBhiT,GAAK9nC,OACL,OAAO8ga,QAAG,IAEd,MAAM5ha,GAAO,GACb,OAAO+mC,OAAK6B,IAAMjjC,MAAK+3mB,QAAS9plB,IAepC,YAAqBgrlB,GAAgBkD,GAAWX,GAAWxF,IACvD,MAAM97O,GAAWokG,GAAS26I,GAAgBkD,GAAWnG,IACrD,OAAO97O,GAASj1C,QAAUm0R,GAAmBl/O,GAASj1C,QAAQk3R,GAAWX,KACrEpC,GAAmBl/O,GAASiiP,GAAWX;;;;;;;SAlBJoD,CAAY35R,GAAQh3T,IAAMkulB,GAAWX,GAAWxF,IAClFh2mB,MAAKsjY,OAAK3nX,KACXthB,GAAK4zB,IAAOtS,QACVkjmB,OAAS,IAAI9G,QAAS,IAGpB4G,GAAYtknB,IAAMc,SAAW8nC,GAAK9nC,QAC3B8ga,QAAG5ha,IAEP48V,MAtBJ6nR,CADS3C,GAAU3O,SACE2O,GAAWX,GAAWxF,IAC7Ch2mB,MAAK4qB,OAAKm0lB,KACX5C,GAAUjP,cAAgB6R,GAC1B5C,GAAU9hnB,KAAO6mB,OAAOC,OAAOD,OAAOC,OAAO,GAAIg7lB,GAAU9hnB,MAAOijnB,GAA2BnB,GAAWpP,IAA2B9nR,SAC5H,QATsB+5R,CAAWloX,GAAMhrM,MAAOwvjB,GAAgBvO,GAA2BiJ,MAAkB1yO,OAAI,IAAMo7O,OAA8BG,OAAS,IAAI9G,QAAS/wS,IAAK03S,KAA8B5D,GAAkB3/mB,QAAS8ga,QAAGlia,IAAKk9V,QA8B9P,YAAqB5zM,IACjB,MAAO,IAAIniI,OAAO+hB,KAAKogH,OAASniI,OAAOo8V,sBAAsBj6N,KAqBjE,YAAmBnqI,IACf,OAAO+ja,OAAUjlb,KACb,MAAMinnB,GAAa/lmB,GAAKlhB,IACxB,OAAIinnB,IACO79kB,OAAK69kB,IAAYj/mB,MAAK4qB,OAAI,IAAM5yB,MAEpCika,QAAGjka;;;;;;;SAkElB,iBA7BA,SAKIi6mB,aAAanmjB,IACT,OAAO,EAKXg2iB,MAAMh2iB,GAAOozjB,IAAc,CAE3B7Q,aAAavijB,IACT,OAAO,EAGXyijB,SAASzijB,IACL,OAAO,KAOXoijB,iBAAiBlhO,GAAQigO,IACrB,OAAOjgO,GAAO25N,cAAgBsG,GAAKtG;;;;;;;SAuB3C,MAAMwY,GAAS,IAAI/+d,iBAAe,UAClC,SACI5oJ,YAAY0oF,GAAUk/hB,GAAUC,GAAqBC,IACjD3nnB,KAAKuoF,SAAWA,GAChBvoF,KAAKynnB,SAAWA,GAChBznnB,KAAK0nnB,oBAAsBA,GAC3B1nnB,KAAK2nnB,kBAAoBA,GAE7B/kX,KAAKgzN,GAAgBzha,IACjB,GAAIA,GAAMyzjB,SACN,OAAOzzjB,GAAMyzjB,SAEb5nnB,KAAK0nnB,qBACL1nnB,KAAK0nnB,oBAAoBvzjB,IAG7B,MAAM0zjB,GAAaC,KADSC,kBAAkB5zjB,GAAM+0M,cAClB7gQ,MAAK4qB,OAAK5wB,KACpCrC,KAAK2nnB,mBACL3nnB,KAAK2nnB,kBAAkBxzjB,IAE3B,MAAM60I,GAAS3mM,GAAQ8lF,OAAOytY,IAK9B,OAAO,IAAImrJ,GAAmBpyV,GAAQ3lF,GAAOzgH,SAAS1nF,IAAI2mnB,QAAQ5uQ,EAAWg8K,mBAAmBA,yBAC3F3hgB,IAAI8plB,IAAoB/za,OAC7BmlW,OAAYC,KACZj6e,SAAMyzjB,cAAWhvQ,EACXw1L,MAGVj6e,UAAMyzjB,SAAW,IAAII,IAAsBH,GAAY,IAAM,IAAI9rmB,MAC5D1T,MAAKuoZ,UACHz8V,GAAMyzjB,SAEjBG,kBAAkB7+W,IACd,OAAOu4W,GAAmBv4W,MAAgB7gQ,MAAK+3mB,QAAUh+mB,IACjDA,cAAa6lnB,mBACN3jN,QAAGlia,KAGHqnC,OAAKzpC,KAAKynnB,SAASvhI,mBAAmB9jf;;;;;;;SAyB7D,SACI8lnB,iBAAiBv9lB,IACb,OAAO,EAEXw9lB,QAAQx9lB,IACJ,OAAOA,GAEXi6W,MAAMwjP,GAAYC,IACd,OAAOD,IAIf,YAA6BpxlB,IACzB,MAAMA,GAEV,YAAyCA,GAAOunlB,GAAe5zlB,IAC3D,OAAO4zlB,GAAcp9kB,MAAM,KAK/B,YAA2BsxL,GAAU61Z,IACjC,OAAOhkN,QAAG,MAMd,MAAMikN,GAAoB,CACtB1+P,MAAO,QACP0mP,SAAU,UACVT,aAAc,UACdhiZ,YAAa,SAMX06Z,GAAqB,CACvB3+P,MAAO,SACP0mP,SAAU,UACVT,aAAc,UACdhiZ,YAAa,UAcjB,SAKIjuN,YAAYulnB,GAAmB7G,GAAekK,GAAcztjB,GAAUutB,GAAUk/hB,GAAUpwjB,IACtFr3D,KAAKolnB,kBAAoBA,GACzBplnB,KAAKu+mB,cAAgBA,GACrBv+mB,KAAKyonB,aAAeA,GACpBzonB,KAAKg7D,SAAWA,GAChBh7D,KAAKq3D,OAASA,GACdr3D,KAAK0onB,yBAA2B,KAChC1onB,KAAK2onB,kBAAoB,KACzB3onB,KAAK4onB,UAAW,EAChB5onB,KAAK6onB,aAAe,EASpB7onB,KAAK8onB,cAAgB,EACrB9onB,KAAK+onB,iBAAkB,EAIvB/onB,KAAKo+B,OAAS,IAAIriB,KAIlB/b,KAAKgpnB,aAAeC,GAOpBjpnB,KAAKkpnB,yBAA2BC,GAKhCnpnB,KAAKopnB,WAAY,EACjBppnB,KAAKqpnB,kBAAmB,EAQxBrpnB,KAAKspnB,MAAQ,CAAEC,oBAAqBC,GAAmBC,mBAAoBD,IAK3ExpnB,KAAK0pnB,oBAAsB,IAAIC,GAI/B3pnB,KAAKq2mB,mBAAqB,IAAIuT,GAc9B5pnB,KAAKiqQ,oBAAsB,SAU3BjqQ,KAAKo1mB,0BAA4B,YAQjCp1mB,KAAK6pnB,kBAAoB,WAKzB7pnB,KAAKkqQ,uBAAyB,YAuB9BlqQ,KAAK8pnB,6BAA+B,UAGpC9pnB,KAAKopI,SAAW7gD,GAAS1nF,IAAIk1d,eAC7B/1d,KAAK64B,QAAU0vD,GAAS1nF,IAAI+smB,iBAC5B,MAAMhtM,GAASr4U,GAAS1nF,IAAIq1c,UAC5Bl2c,KAAK+onB,gBAAkBnoN,cAAkBs1C,UAAUA,2BACnDl2c,KAAK+pnB,YAAY1yjB,IACjBr3D,KAAKgqnB,eAhhHb,cACI,OAAO,IAAI3Y,GAAQ,IAAIuB,EAAgB,GAAI,IAAK,GAAI,MA+gH1BqX,GACtBjqnB,KAAKkqnB,WAAalqnB,KAAKgqnB,eACvBhqnB,KAAKmqnB,eAAiBnqnB,KAAKgqnB,eAC3BhqnB,KAAKs+mB,aAAe,IAAI8L,GAAmB7hiB,GAAUk/hB,GAVhCtlnB,IAAMnC,KAAKi1jB,aAAa,IAAIo1D,GAAqBlonB,KACnDA,IAAMnC,KAAKi1jB,aAAa,IAAIq1D,GAAmBnonB,MAUlEnC,KAAKuqnB,YAAcC,GAAiBxqnB,KAAKgqnB,eAAgBhqnB,KAAKolnB,mBAC9DplnB,KAAKu8kB,YAAc,IAAIx7K,IAAgB,CACnC12V,GAAI,EACJogjB,aAAc,EACdT,eAAgBhqnB,KAAKgqnB,eACrBU,cAAe1qnB,KAAKgqnB,eACpBnH,aAAc7inB,KAAK0pnB,oBAAoBvB,QAAQnonB,KAAKgqnB,gBACpD1rlB,kBAAmBt+B,KAAK0pnB,oBAAoBvB,QAAQnonB,KAAKgqnB,gBACzDW,OAAQ3qnB,KAAKgqnB,eACbY,OAAQ,GACRt9R,QAAS,KACTm9C,OAAQ,KACR0yN,QAAS9lf,QAAQi2O,SAAQ,GACzBr2T,OAAQ,aACR63kB,cAAe,KACfrU,gBAAiBz6lB,KAAKuqnB,YAAY93Z,SAClCkxZ,eAAgB,KAChBkH,mBAAoB7qnB,KAAKuqnB,YACzBO,kBAAmB,KACnBz/I,OAAQ,CAAE83I,kBAAmB,GAAID,oBAAqB,IACtDU,aAAc,OAElB5jnB,KAAK+qnB,YAAc/qnB,KAAKgrnB,iBAAiBhrnB,KAAKu8kB,aAC9Cv8kB,KAAKirnB,qBAOLC,oBACA,IAAIr1T,GACJ,OAA2C,QAAnCA,GAAK71T,KAAKg7D,SAAS8gZ,kBAA+B,IAAPjmJ,QAAgB,EAASA,GAAGs1T,mBAEnFH,iBAAiBzuC,IACb,MAAM6uC,GAAgBprnB,KAAKo+B,OAC3B,OAAOm+iB,GAAYl0kB,MAAK3B,OAAOtE,IAAc,IAATA,GAAEioE,KAEtCp3C,OAAI7wB,IAAMmnB,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAEygnB,aAAc7inB,KAAK0pnB,oBAAoBvB,QAAQ/lnB,GAAEuonB,YAEjGrlM,OAAUljb,KACN,IAAI47jB,IAAY,EACZqtD,IAAU,EACd,OAAO/mN,QAAGlia,IAAGiG,MAEbsjY,OAAIvpY,KACApC,KAAK2onB,kBAAoB,CACrBt+iB,GAAIjoE,GAAEioE,GACNihjB,WAAYlpnB,GAAEsonB,cACd7H,aAAczgnB,GAAEygnB,aAChBx4hB,QAASjoF,GAAE60B,OACX2zlB,OAAQxonB,GAAEwonB,OACVW,mBAAoBvrnB,KAAK0onB,yBAA2Bn/lB,OAAOC,OAAOD,OAAOC,OAAO,GAAIxpB,KAAK0onB,0BAA2B,CAAE6C,mBAAoB,OACtI,SAERjmM,OAAUljb,KACV,MAAM+nnB,GAAiBnqnB,KAAKmqnB,eAAetjnB,WACrC2knB,IAAiBxrnB,KAAKopnB,WACxBhnnB,GAAEygnB,aAAah8mB,aAAesjnB,IAK9BA,KAAmBnqnB,KAAKgqnB,eAAenjnB,WAG3C,IAFwD,WAA7B7G,KAAKiqQ,qBAA0CuhX,KACtExrnB,KAAK0pnB,oBAAoBxB,iBAAiB9lnB,GAAEuonB,QAI5C,OAAIc,GAA6BrpnB,GAAE60B,UAC/Bj3B,KAAKmqnB,eAAiB/nnB,GAAEygnB,eAErBv+M,QAAGlia,IAAGiG,MAEbi9a,OAAUljb,KACN,MAAMirhB,GAAarthB,KAAKu8kB,YAAY5pf,WAEpC,OADAy4hB,GAAc7pmB,KAAK,IAAImqmB,GAAgBtpnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAezgnB,GAAE60B,OAAQ70B,GAAE0smB,gBACxFzhF,KAAerthB,KAAKu8kB,YAAY5pf,WACzB2sQ,IAIJjoP,QAAQi2O,QAAQlrV,MAG3BwpnB,GAAe5rnB,KAAKopI,SAAS7gD,SAAUvoF,KAAKs+mB,aAAct+mB,KAAKu+mB,cAAev+mB,KAAKq3D,SAGnFs0U,OAAIvpY,KACApC,KAAK2onB,kBAAoBp/lB,OAAOC,OAAOD,OAAOC,OAAO,GAAIxpB,KAAK2onB,mBAAoB,CAAEkD,SAAUzpnB,GAAEk8B,sBAGpG+mlB,GAAUrlnB,KAAKolnB,kBAAmBplnB,KAAKq3D,OAAS1sC,IAAQ3qB,KAAK2rnB,aAAahhmB,IAAM3qB,KAAKo1mB,0BAA2Bp1mB,KAAKkqQ,yBAErHyhI,OAAIvpY,KACA,GAA+B,UAA3BpC,KAAK6pnB,kBAA+B,CACpC,IAAKznnB,GAAEwonB,OAAOkB,mBAAoB,CAC9B,MAAMnB,GAAS3qnB,KAAK0pnB,oBAAoB9kP,MAAMxiY,GAAEk8B,kBAAmBl8B,GAAEuonB,QACrE3qnB,KAAK+rnB,cAAcpB,GAAQvonB,IAE/BpC,KAAKmqnB,eAAiB/nnB,GAAEk8B,kBAG5B,MAAM0tlB,GAAmB,IAAIC,GAAiB7pnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAe7inB,KAAK2rnB,aAAavpnB,GAAEk8B,mBAAoBl8B,GAAEuhnB,gBACjIyH,GAAc7pmB,KAAKyqmB,OASvB,GAL2BR,IAAiBxrnB,KAAKkqnB,YAC7ClqnB,KAAK0pnB,oBAAoBxB,iBAAiBlonB,KAAKkqnB,YAI3B,CACpB,MAAQ7/iB,MAAIw4iB,gBAAc5rlB,UAAQ63kB,iBAAe8b,WAAWxonB,GACtD8pnB,GAAW,IAAIR,GAAgBrhjB,GAAIrqE,KAAK2rnB,aAAa9I,IAAe5rlB,GAAQ63kB,IAClFsc,GAAc7pmB,KAAK2qmB,IACnB,MAAMvI,GAAiB6G,GAAiB3H,GAAc7inB,KAAKolnB,mBAAmB3yZ,SAC9E,OAAO6xM,QAAG/6Y,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAEuhnB,kBAAgBrllB,kBAAmBuklB,GAAc+H,OAAQrhmB,OAAOC,OAAOD,OAAOC,OAAO,GAAIohmB,IAAS,CAAEkB,oBAAoB,EAAOK,YAAY,OAQ3L,YAAKjC,WAAa9nnB,GAAEuonB,OACpBvonB,GAAEkrV,QAAQ,MACHgS,MAKnB8sR,GAAUhqnB,KACN,MAAQuhnB,kBAAgBt5iB,GAAIw+iB,GAAchG,aAAcwJ,GAAgB1B,OAAQT,GAAYU,QAAUkB,sBAAoBK,gBAAiB/pnB,GAC3I,OAAOpC,KAAKspnB,MAAMC,oBAAoB5F,GAAgB,CAClDkF,gBACAwD,kBACAnC,cACA4B,qBAAsBA,GACtBK,aAAcA,QAItBxgP,OAAIvpY,KACA,MAAMkqnB,GAAc,IAAIC,GAAiBnqnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAe7inB,KAAK2rnB,aAAavpnB,GAAEk8B,mBAAoBl8B,GAAEuhnB,gBAC5H3jnB,KAAKi1jB,aAAaq3D,OAClBr5lB,OAAI7wB,IAAMmnB,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAEipe,OAAQmhJ,GAAkBpqnB,GAAEuhnB,eAAgBvhnB,GAAEq4lB,gBAAiBz6lB,KAAKyonB,iBAAoBgE,GAAYzsnB,KAAKopI,SAAS7gD,SAAWo3gB,IAAQ3/lB,KAAKi1jB,aAAa0qC,MAAOh0N,OAAIvpY,KAClN,GAAIs5mB,GAAUt5mB,GAAEwhnB,cAAe,CAC3B,MAAM5slB,GAAQkqlB,GAA0B,mBAAkBlhnB,KAAK2rnB,aAAavpnB,GAAEwhnB,kBAC9E5slB,SAAMrM,IAAMvoB,GAAEwhnB,aACR5slB,GAEV,MAAM01lB,GAAY,IAAIC,GAAevqnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAe7inB,KAAK2rnB,aAAavpnB,GAAEk8B,mBAAoBl8B,GAAEuhnB,iBAAkBvhnB,GAAEwhnB,cAC5I5jnB,KAAKi1jB,aAAay3D,OAClBhmnB,OAAOtE,MACFA,GAAEwhnB,eACH5jnB,KAAK4snB,eAAexqnB,IACpBpC,KAAK6snB,2BAA2BzqnB,GAAG,KAC5B,IAKfgqnB,GAAUhqnB,KACN,GAAIA,GAAEipe,OAAO83I,kBAAkB3/mB,OAC3B,OAAO8ga,QAAGlia,IAAGiG,MAAKsjY,OAAIvpY,KAClB,MAAM0qnB,GAAe,IAAIC,EAAa3qnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAe7inB,KAAK2rnB,aAAavpnB,GAAEk8B,mBAAoBl8B,GAAEuhnB,gBACzH3jnB,KAAKi1jB,aAAa63D,OAClBxnM,OAAUljb,KACV,IAAI4qnB,IAAe,EACnB,OAAO1oN,QAAGlia,IAAGiG,KAAK4knB,GAAYjtnB,KAAKo1mB,0BAA2Bp1mB,KAAKopI,SAAS7gD,WAAWojT,OAAI,CACvFpqX,KAAM,IAAMyrmB,IAAe,EAC3BnzmB,SAAU,KACDmzmB,KACDhtnB,KAAK4snB,eAAexqnB,IACpBpC,KAAK6snB,2BAA2BzqnB,GAAI,8DAIhDupY,OAAIvpY,KACJ,MAAM8qnB,GAAa,IAAIC,GAAW/qnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAe7inB,KAAK2rnB,aAAavpnB,GAAEk8B,mBAAoBl8B,GAAEuhnB,gBACrH3jnB,KAAKi1jB,aAAai4D,SAM9Bd,GAAWhqnB,KACP,MAAQuhnB,kBAAgBt5iB,GAAIw+iB,GAAchG,aAAcwJ,GAAgB1B,OAAQT,GAAYU,QAAUkB,sBAAoBK,gBAAiB/pnB,GAC3I,OAAOpC,KAAKspnB,MAAMG,mBAAmB9F,GAAgB,CACjDkF,gBACAwD,kBACAnC,cACA4B,qBAAsBA,GACtBK,aAAcA,QAElBl5lB,OAAK7wB,KACL,MAAM0onB,GA9qFtB,YAA2BzU,GAAoBf,GAAMgB,IACjD,MAAMnjT,GAAOqjT,GAAWH,GAAoBf,GAAKxB,MAAOwC,GAAYA,GAAUxC,WAAQl7P,GACtF,OAAO,IAAIm8P,GAAY5hT,GAAMmiT,IA4qFS8X,CAAkBptnB,KAAKq2mB,mBAAoBj0mB,GAAEuhnB,eAAgBvhnB,GAAEyonB,oBACzF,OAAQthmB,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,IAAI,CAAE0onB,0BAOlDn/O,OAAKvpY,KACDpC,KAAKgqnB,eAAiB5nnB,GAAEk8B,kBACxBt+B,KAAKkqnB,WACDlqnB,KAAK0pnB,oBAAoB9kP,MAAMxiY,GAAEk8B,kBAAmBl8B,GAAEuonB,QAC1D3qnB,KAAKuqnB,YAAcnonB,GAAE0onB,kBACU,aAA3B9qnB,KAAK6pnB,oBACAznnB,GAAEwonB,OAAOkB,oBACV9rnB,KAAK+rnB,cAAc/rnB,KAAKkqnB,WAAY9nnB,IAExCpC,KAAKmqnB,eAAiB/nnB,GAAEk8B,qBAx2ErB,EAACmqlB,GAAcpS,GAAoBiD,MAAiBrmlB,OAAI7wB,KAC3E,IAAIirnB,GAAehX,GAAoBj0mB,GAAE0onB,kBAAmB1onB,GAAEyonB,mBAAoBvR,IAC7E/7V,SAASkrW,IACPrmnB,KAu2EKu4mB,CAAe36mB,KAAKyonB,aAAczonB,KAAKq2mB,mBAAqB1W,IAAQ3/lB,KAAKi1jB,aAAa0qC,MAAOh0N,OAAI,CACjGpqX,OACIy8iB,IAAY,GAEhBnkjB,WACImkjB,IAAY,MAEhB7uB,QAAS,KACT,IAAIt5O,GAQJ,IAAKmoQ,KAAcqtD,GAAS,CACxB,MAAMiC,GAAqB,iBAAgBlrnB,GAAEioE,gDAAgDrqE,KAAK6onB,eAClG7onB,KAAK6snB,2BAA2BzqnB,GAAGkrnB,KAIA,QAAjCz3T,GAAK71T,KAAK2onB,yBAAsC,IAAP9yT,QAAgB,EAASA,GAAGxrP,MAAQjoE,GAAEioE,KACjFrqE,KAAK2onB,kBAAoB,SAE7Bx6E,OAAYxtiB,KAeZ,GAHA0qnB,IAAU,EA/4H1B,YAAoCr0lB,IAChC,OAAOA,IAASA,GAAMo4kB,IAi5HNme,CAA2B5snB,IAAI,CAC/B,MAAM6snB,GAAc9R,GAAU/6mB,GAAEgqB,KAC3B6imB,KAMDxtnB,KAAKopnB,WAAY,EACjBppnB,KAAK4snB,eAAexqnB,IAAG,IAE3B,MAAMqrnB,GAAY,IAAIC,GAAiBtrnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAelinB,GAAE8sB,SAClF29lB,GAAc7pmB,KAAKksmB,IAGnB33T,GAQIjoT,WAAW,KACP,MAAM8/mB,GAAa3tnB,KAAK0pnB,oBAAoB9kP,MAAMjkY,GAAEgqB,IAAK3qB,KAAKkqnB,YACxDU,GAAS,CACXkB,mBAAoB1pnB,GAAEwonB,OAAOkB,mBAK7BK,WAAuC,UAA3BnsnB,KAAK6pnB,mBACb4B,GAA6BrpnB,GAAE60B,SAEvCj3B,KAAK4tnB,mBAAmBD,GAAY,aAAc,KAAM/C,GAAQ,CAAEt9R,QAASlrV,GAAEkrV,QAASm9C,OAAQroY,GAAEqoY,OAAQ0yN,QAAS/6lB,GAAE+6lB,WACpH,GAnBH/6lB,GAAEkrV,SAAQ,OAwBb,CACDttV,KAAK4snB,eAAexqnB,IAAG,GACvB,MAAMyrnB,GAAW,IAAIC,GAAgB1rnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAelinB,IAC9EyqnB,GAAc7pmB,KAAKssmB,IACnB,IACIzrnB,GAAEkrV,QAAQttV,KAAKgpnB,aAAaronB,IAGnBm6U,CAHmBn6U,MAEzBm6U,IACH14U,GAAEqoY,OAAO3vD,KAGjB,OAAOwkB,UASnByuR,uBAAuB3I,IACnBplnB,KAAKolnB,kBAAoBA,GAGzBplnB,KAAKuqnB,YAAYp3T,KAAK3pN,UAAYxpG,KAAKolnB,kBAE3C4I,cAAc5rnB,IACVpC,KAAKu8kB,YAAYh7jB,KAAKgI,OAAOC,OAAOD,OAAOC,OAAO,GAAIxpB,KAAKu8kB,YAAYv4jB,OAAQ5hB,KAKnF6rnB,oBACIjunB,KAAKkunB,8BACqB,IAAtBlunB,KAAK6onB,cACL7onB,KAAKsrB,cAActrB,KAAKg7D,SAASgtH,MAAK,GAAO,CAAEmkc,YAAY,IAQnE+B,8BAISlunB,KAAKmunB,uBACNnunB,KAAKmunB,qBAAuBnunB,KAAKg7D,SAAS70D,UAAU4+E,KAChD,MAAM9tD,GAA2B,aAAlB8tD,GAAMn9E,KAAyB,WAAa,aAC5C,aAAXqvB,IAGAppB,WAAW,KACP,IAAIgoT,GACJ,MAAM+0T,GAAS,CAAEuB,YAAY,GAGvBx+R,IAAgC,QAAtB93B,GAAK9wO,GAAM4oQ,aAA0B,IAAP93B,QAAgB,EAASA,GAAGgzT,cAAgB9jiB,GAAM4oQ,MAAQ,KACxG,GAAIA,GAAO,CACP,MAAMygS,GAAY7kmB,OAAOC,OAAO,GAAImkU,WAC7BygS,GAAUvF,oBACVuF,GAAUjD,mBACqB,IAAlC5hmB,OAAO+hB,KAAK8ilB,IAAW5qnB,SACvBonnB,GAAOj9R,MAAQygS,IAGvB,MAAMja,GAAUn0mB,KAAKqunB,SAAStpiB,GAAMp6D,KACpC3qB,KAAK4tnB,mBAAmBzZ,GAASl9kB,GAAQ02T,GAAOi9R,KACjD,MAMfjgmB,UACA,OAAO3qB,KAAK2rnB,aAAa3rnB,KAAKgqnB,gBAMlCsE,uBACI,OAAOtunB,KAAK2onB,kBAGhB1zD,aAAalwe,IACT/kF,KAAKo+B,OAAO7c,KAAKwjE,IAkBrBgliB,YAAY1yjB,IACRwljB,GAAexljB,IACfr3D,KAAKq3D,OAASA,GAAOpkC,IAAI8plB,IACzB/8mB,KAAKopnB,WAAY,EACjBppnB,KAAKqpnB,kBAAmB,EAG5BngnB,cACIlJ,KAAKmnF,UAGTA,UACInnF,KAAKu8kB,YAAY1ikB,WACb7Z,KAAKmunB,uBACLnunB,KAAKmunB,qBAAqBxgmB,cAC1B3tB,KAAKmunB,0BAAuBv1Q,GAEhC54W,KAAK4onB,UAAW,EAkDpBvjgB,cAAcyxf,GAAUyX,GAAmB,IACvC,MAAQC,cAAY1ga,eAAayiZ,YAAUke,uBAAqBC,qBAAqBH,GAC/E9+mB,GAAI++mB,IAAcxunB,KAAKuqnB,YAAYp3T,KACnCoc,GAAIm/S,GAAmB1unB,KAAKgqnB,eAAezZ,SAAWA,GAC5D,IAAIvud,GAAI,KACR,OAAQyse,QACC,QACDzse,GAAIz4H,OAAOC,OAAOD,OAAOC,OAAO,GAAIxpB,KAAKgqnB,eAAel8Z,aAAcA,IACtE,UACC,WACD9rE,GAAIhiJ,KAAKgqnB,eAAel8Z,YACxB,cAEA9rE,GAAI8rE,IAAe,KAE3B,OAAU,OAAN9rE,KACAA,GAAIhiJ,KAAK2unB,iBAAiB3se,KAEvB38B,GAAc51G,GAAGzP,KAAKgqnB,eAAgBlT,GAAU90d,GAAS,MAANutL,GAA6BA,GAAI,MA0B/FjkT,cAAcX,GAAKigmB,GAAS,CACxBkB,oBAAoB,IAMpB,MAAM3X,GAAUuH,GAAU/wlB,IAAOA,GAAM3qB,KAAKqunB,SAAS1jmB,IAC/CgjmB,GAAa3tnB,KAAK0pnB,oBAAoB9kP,MAAMuvO,GAASn0mB,KAAKkqnB,YAChE,OAAOlqnB,KAAK4tnB,mBAAmBD,GAAY,aAAc,KAAM/C,IAgCnEpomB,SAASs0lB,GAAU8T,GAAS,CAAEkB,oBAAoB,IAC9C8C,OAiNR,YAA0B9X,IACtB,QAAS52mB,GAAI,EAAGA,GAAI42mB,GAAStzmB,OAAQtD,KAAK,CACtC,MAAMgkZ,GAAM4yN,GAAS52mB,IACrB,GAAW,MAAPgkZ,GACA,MAAM,IAAIhkK,MAAO,+BAA8BgkK,uBAAwBhkZ,OArN3E0unB,CAAiB9X,IACV92mB,KAAKsrB,cAActrB,KAAKqlH,cAAcyxf,GAAU8T,IAASA,IAGpEe,aAAahhmB,IACT,OAAO3qB,KAAKu+mB,cAAcxN,UAAUpmlB,IAGxC0jmB,SAAS1jmB,IACL,IAAIwplB,GACJ,IACIA,GAAUn0mB,KAAKu+mB,cAAcp9kB,MAAMxW,GAG4BA,CAH5BA,MAEhChqB,IACHwzmB,GAAUn0mB,KAAKkpnB,yBAAyBvonB,GAAGX,KAAKu+mB,cAAe5zlB,IAEnE,OAAOwplB,GAEXn2V,SAASrzP,GAAKkkmB,IACV,IAAI1sW,GAUJ,GARIA,IADiB,IAArB/3D,GACc7gM,OAAOC,OAAO,GAAI++lB,KAEN,IAArBn+Z,GACS7gM,OAAOC,OAAO,GAAIg/lB,IAGlBqG,GAEVnT,GAAU/wlB,IACV,OAAOmkmB,GAAa9unB,KAAKgqnB,eAAgBr/lB,GAAKw3P,IAElD,MAAMgyV,GAAUn0mB,KAAKqunB,SAAS1jmB,IAC9B,OAAOmkmB,GAAa9unB,KAAKgqnB,eAAgB7V,GAAShyV,IAEtDwsW,iBAAiBzyK,IACb,OAAO3yb,OAAO+hB,KAAK4wa,IAAQ12P,OAAO,CAACn/H,GAAQ/vD,MACvC,MAAMtS,GAAQk4b,GAAO5lb,IACrB,OAAc,MAAVtS,KACAqiE,GAAO/vD,IAAOtS,IAEXqiE,IACR,IAEP4kiB,qBACIjrnB,KAAK+qnB,YAAY5knB,UAAU/D,KACvBpC,KAAKopnB,WAAY,EACjBppnB,KAAKqpnB,iBAAmBjnnB,GAAEioE,GAC1BrqE,KAAK8onB,cAAgB1mnB,GAAEqonB,aACvBzqnB,KAAKo+B,OACA7c,KAAK,IAAIwtmB,GAAc3snB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAe7inB,KAAK2rnB,aAAa3rnB,KAAKgqnB,kBAC5FhqnB,KAAK0onB,yBAA2B1onB,KAAK2onB,kBACrCvmnB,GAAEkrV,SAAQ,IACX3sV,KACCX,KAAK64B,QAAQuO,KAAM,+BAA8BzmC,QAGzDitnB,mBAAmBjD,GAAQ1zlB,GAAQ63kB,GAAe8b,GAAQoE,IACtD,IAAIn5T,GAAI4/F,GACR,GAAIz1Z,KAAK4onB,SACL,OAAOvxgB,QAAQi2O,SAAQ,GAE3B,IAAIA,GACAm9C,GACA0yN,GACA6xB,IACA1hS,GAAU0hS,GAAa1hS,QACvBm9C,GAASukP,GAAavkP,OACtB0yN,GAAU6xB,GAAa7xB,SAGvBA,GAAU,IAAI9lf,QAAQ,CAACkwW,GAAK0nK,MACxB3hS,GAAUi6H,GACV98E,GAASwkP,KAGjB,MAAM5kjB,KAAOrqE,KAAK6onB,aAClB,IAAI4B,GACJ,MAA0C,aAAtCzqnB,KAAK8pnB,8BACwC,IAAvB9pnB,KAAK8onB,gBAEvBha,GAAgB9umB,KAAKg7D,SAAS8gZ,YAM9B2uK,GADJpga,IAAqBykZ,GAAcqc,mBAChBrc,GAAcqc,mBAK7B3ga,GAAW2ha,YAAcvB,GAAOkB,mBACiB,QAA7Bj2T,GAAK71T,KAAKkrnB,qBAAkC,IAAPr1T,GAAgBA,GAAK,GAG5B,QAA7B4/F,GAAKz1Z,KAAKkrnB,qBAAkC,IAAPz1N,GAAgBA,GAAK,GAAK,GAMxFg1N,GAAe,EAEnBzqnB,KAAKgunB,cAAc,CACf3jjB,MACAogjB,gBACAxzlB,UACA63kB,iBACAkb,eAAgBhqnB,KAAKgqnB,eACrBU,cAAe1qnB,KAAKkqnB,WACpBS,UACAC,UACAt9R,WACAm9C,UACA0yN,WACA1C,gBAAiBz6lB,KAAKuqnB,YAAY93Z,SAClCo4Z,mBAAoB7qnB,KAAKuqnB,cAItBptB,GAAQvmV,MAAOj2Q,IACX02G,QAAQozR,OAAO9pY,KAG9BornB,cAAcphmB,GAAKvoB,IACf,MAAM4lL,GAAOhoL,KAAKu+mB,cAAcxN,UAAUpmlB,IACpCgjU,GAAQpkU,OAAOC,OAAOD,OAAOC,OAAO,GAAIpnB,GAAEwonB,OAAOj9R,OAAQ3tV,KAAKkvnB,sBAAsB9snB,GAAEioE,GAAIjoE,GAAEqonB,eAC9FzqnB,KAAKg7D,SAASwiZ,qBAAqBx1R,KAAW5lL,GAAEwonB,OAAOuB,WACvDnsnB,KAAKg7D,SAASupM,aAAav8E,GAAM,GAAI2lK,IAGrC3tV,KAAKg7D,SAASsqD,GAAG0iE,GAAM,GAAI2lK,IAOnCi/R,eAAexqnB,GAAG+snB,IAA2B,GACzC,IAAIt5T,GAAI4/F,GACR,GAA0C,aAAtCz1Z,KAAK8pnB,6BAA6C,CAClD,MAAMsF,GAAqBpvnB,KAAK8onB,cAAgB1mnB,GAAEqonB,aAMH,aAAbronB,GAAE60B,QAAoD,UAA3Bj3B,KAAK6pnB,mBAC9D7pnB,KAAKgqnB,kBAAsD,QAAjCn0T,GAAK71T,KAAK2onB,yBAAsC,IAAP9yT,QAAgB,EAASA,GAAGg2T,WAC5C,IAAvBuD,GAGvBpvnB,KAAKgqnB,kBAAsD,QAAjCv0N,GAAKz1Z,KAAK2onB,yBAAsC,IAAPlzN,QAAgB,EAASA,GAAGo2N,WAAoC,IAAvBuD,KAIjHpvnB,KAAKqvnB,WAAWjtnB,IAGhBpC,KAAKmqnB,eAAiB/nnB,GAAE4nnB,eACxBhqnB,KAAKsvnB,4BAVLtvnB,KAAKg7D,SAASy/Y,UAAU20K,GAUnBE,KAOkC,YAAtCtvnB,KAAK8pnB,+BAKNqF,IACAnvnB,KAAKqvnB,WAAWjtnB,IAEpBpC,KAAKsvnB,4BAGbD,WAAWjtnB,IACPpC,KAAKuqnB,YAAcnonB,GAAEyonB,mBACrB7qnB,KAAKgqnB,eAAiB5nnB,GAAE4nnB,eAMxBhqnB,KAAKkqnB,WAAalqnB,KAAK0pnB,oBAAoB9kP,MAAM5kY,KAAKgqnB,eAAgB5nnB,GAAEuonB,QAE5E2E,2BACItvnB,KAAKg7D,SAASupM,aAAavkQ,KAAKu+mB,cAAcxN,UAAU/wmB,KAAKkqnB,YAAa,GAAIlqnB,KAAKkvnB,sBAAsBlvnB,KAAKqpnB,iBAAkBrpnB,KAAK8onB,gBAEzI+D,2BAA2BzqnB,GAAG+7iB,IAC1B,MAAMsvE,GAAY,IAAIC,GAAiBtrnB,GAAEioE,GAAIrqE,KAAK2rnB,aAAavpnB,GAAEygnB,cAAe1kE,IAChFn+iB,KAAKi1jB,aAAaw4D,IAClBrrnB,GAAEkrV,SAAQ,GAEd4hS,sBAAsBrG,GAAc0G,IAChC,MAA0C,aAAtCvvnB,KAAK8pnB,6BACE,CAAEjB,gBAAcsC,mBAAeoE,IAEnC,CAAE1G,kBAgBjB,YAAsC5xlB,IAClC,MAAkB,eAAXA,EAAW,CAdtBu4lB,GAAOzwiB,UAAP,aA/3EgGE,gCAg4EhGuwiB,GAAOxje,WAh4EyF/sE,+BAg4EhG,OAAwGuwiB,GAAxGntnB,QAAwGmtnB,GAAxG,YAiHA,SACI3vnB,YAAY6qB,GAAQypC,GAAOs7jB,GAAmB1hI,GAAU9uZ,IACpDj/F,KAAK0qB,OAASA,GACd1qB,KAAKm0D,MAAQA,GACbn0D,KAAKyvnB,kBAAoBA,GACzBzvnB,KAAK+tf,SAAWA,GAChB/tf,KAAKi/F,GAAKA,GACVj/F,KAAK82mB,SAAW,KAEhB92mB,KAAK6qD,UAAY,IAAI9uC,KACrB/b,KAAK0vnB,2BAA2B,KAMpCA,2BAA2BC,IACvB,GAA8B,MAA1B3vnB,KAAKyvnB,kBACL,OAEJ,MAAM1hI,GAAW/tf,KAAK+tf,SAChBl7e,GAAgB7S,KAAKi/F,GAAGpsF,cACV,OAAhB88mB,GACA5hI,GAASpnd,aAAa9zB,GAAe,WAAY88mB,IAGjD5hI,GAASx4F,gBAAgB1iZ,GAAe,YAIhDuhB,YAAYorD,IAGRx/E,KAAK6qD,UAAUtpC,KAAKvhB,MASpB4vnB,eAAW9Y,IACK,MAAZA,IACA92mB,KAAK82mB,SAAWlhmB,MAAMukD,QAAQ28iB,IAAYA,GAAW,CAACA,IACtD92mB,KAAK0vnB,2BAA2B,OAGhC1vnB,KAAK82mB,SAAW,KAChB92mB,KAAK0vnB,2BAA2B,OAIxChpiB,UACI,GAAqB,OAAjB1mF,KAAKm0mB,QACL,OAAO,EAEX,MAAMyW,GAAS,CACXkB,mBAAoB+D,GAAc7vnB,KAAK8rnB,oBACvCK,WAAY0D,GAAc7vnB,KAAKmsnB,YAC/Bx+R,MAAO3tV,KAAK2tV,OAEhB,YAAKjjU,OAAOY,cAActrB,KAAKm0mB,QAASyW,KACjC,EAEPzW,cACA,OAAsB,OAAlBn0mB,KAAK82mB,SACE,KAEJ92mB,KAAK0qB,OAAO26F,cAAcrlH,KAAK82mB,SAAU,CAG5C0X,gBAAgC51Q,IAApB54W,KAAKwunB,WAA2BxunB,KAAKwunB,WAAaxunB,KAAKm0D,MACnE25J,YAAa9tN,KAAK8tN,YAClByiZ,SAAUvwmB,KAAKuwmB,SACfke,oBAAqBzunB,KAAKyunB,oBAC1BC,iBAAkBmB,GAAc7vnB,KAAK0unB,qBAIjDoB,GAAW/wiB,UAAX,4BAAwG+wiB,IAjkFR7wiB,8BAikFoCuwiB,IAjkFpCvwiB,8BAikFuD61hB,IAjkFvD71hB,8BAikFkF,YAjkFlFA,8BAikF0HA,aAjkF1HA,8BAikFmJA,gBACnP6wiB,GAAW9wiB,UAlkFqFC,8BAkkFhG,MAA4F6wiB,GAA5FpsnB,mFAlkFgGu7E,uBAkkFhG,0BAA4FmrI,gBAA5F5gI,6QAlkFgGvK,oCA4mFhG,SACIp/E,YAAY6qB,GAAQypC,GAAO47jB,IACvB/vnB,KAAK0qB,OAASA,GACd1qB,KAAKm0D,MAAQA,GACbn0D,KAAK+vnB,iBAAmBA,GACxB/vnB,KAAK82mB,SAAW,KAIhB92mB,KAAKs7C,KAAO,KAEZt7C,KAAK6qD,UAAY,IAAI9uC,KACrB/b,KAAKsS,aAAeoY,GAAO0T,OAAOj4B,UAAWS,KACrCA,cAAamonB,IACb/unB,KAAKgwnB,2BAWbJ,eAAW9Y,IAEP92mB,KAAK82mB,SADO,MAAZA,GACgBlhmB,MAAMukD,QAAQ28iB,IAAYA,GAAW,CAACA,IAGtC,KAIxB1ilB,YAAYorD,IACRx/E,KAAKgwnB,yBACLhwnB,KAAK6qD,UAAUtpC,KAAKvhB,MAGxBkJ,cACIlJ,KAAKsS,aAAaqb,cAGtB+4D,QAAQy7O,GAAQ9tD,GAASC,GAAU2iD,GAAQiL,IAIvC,GAHe,IAAXC,IAAgB9tD,IAAWC,IAAY2iD,IAAUiL,IAG1B,iBAAhBliU,KAAKiqC,QAAsC,SAAfjqC,KAAKiqC,QAAsC,OAAjBjqC,KAAKm0mB,QAClE,OAAO,EAEX,MAAMyW,GAAS,CACXkB,mBAAoB+D,GAAc7vnB,KAAK8rnB,oBACvCK,WAAY0D,GAAc7vnB,KAAKmsnB,YAC/Bx+R,MAAO3tV,KAAK2tV,OAEhB,YAAKjjU,OAAOY,cAActrB,KAAKm0mB,QAASyW,KACjC,EAEXoF,yBACIhwnB,KAAKs7C,KAAwB,OAAjBt7C,KAAKm0mB,QACbn0mB,KAAK+vnB,iBAAiBpzK,mBAAmB38c,KAAK0qB,OAAOihmB,aAAa3rnB,KAAKm0mB,UACvE,KAEJA,cACA,OAAsB,OAAlBn0mB,KAAK82mB,SACE,KAEJ92mB,KAAK0qB,OAAO26F,cAAcrlH,KAAK82mB,SAAU,CAG5C0X,gBAAgC51Q,IAApB54W,KAAKwunB,WAA2BxunB,KAAKwunB,WAAaxunB,KAAKm0D,MACnE25J,YAAa9tN,KAAK8tN,YAClByiZ,SAAUvwmB,KAAKuwmB,SACfke,oBAAqBzunB,KAAKyunB,oBAC1BC,iBAAkBmB,GAAc7vnB,KAAK0unB,qBAwCjD,YAAuB9nnB,IACnB,MAAa,KAANA,MAAcA;;;;;;;SArCzBqpnB,GAAmBlxiB,UAAnB,4BAAgHkxiB,IA1rFhBhxiB,8BA0rFoDuwiB,IA1rFpDvwiB,8BA0rFuE61hB,IA1rFvE71hB,8BA0rFkG6kW,SAClMmsM,GAAmBjxiB,UA3rF6EC,8BA2rFhG,MAAoGgxiB,GAApGvsnB,yGA3rFgGu7E,uBA2rFhG,4BAAoGmrI,oEAApG,MA3rFgGnrI,wBA2rFhG,mBA3rFgGA,CA2rFhG,eA3rFgGA,4BA2rFhGuK,6RA3rFgGvK,oCAoyFhG,SACIp/E,YAAY6qB,GAAQk1E,GAASmuZ,GAAUvhQ,GAAK45F,GAAM8pS,IAC9ClwnB,KAAK0qB,OAASA,GACd1qB,KAAK4/F,QAAUA,GACf5/F,KAAK+tf,SAAWA,GAChB/tf,KAAKwsP,IAAMA,GACXxsP,KAAKomV,KAAOA,GACZpmV,KAAKkwnB,aAAeA,GACpBlwnB,KAAKuoD,QAAU,GACfvoD,KAAKg+Q,UAAW,EAQhBh+Q,KAAKmwnB,wBAA0B,CAAEvgB,OAAO,GAiBxC5vmB,KAAKownB,eAAiB,IAAI9pN,eAC1Btma,KAAKqwnB,yBAA2B3lmB,GAAO0T,OAAOj4B,UAAWS,KACjDA,cAAamonB,IACb/unB,KAAKwyF,WAKjBmzL,sBAEI2+I,QAAGtka,KAAKmsD,MAAMqzB,QAASx/E,KAAKswnB,eAAe9wiB,SAAS8kV,QAAG,OAAOj8Z,MAAKkonB,WAAYpqnB,UAAUkpU,KACrFrvU,KAAKwyF,SACLxyF,KAAKwwnB,iCAGbA,+BACI,IAAI36T,GACyC,QAA5CA,GAAK71T,KAAKywnB,oCAAiD,IAAP56T,IAAyBA,GAAGloS,cACjF,MAAM+imB,GAAiB,IAAI1wnB,KAAKmsD,MAAM03L,aAAc7jP,KAAKswnB,eAAezsY,UAAW7jP,KAAKomV,KAAMpmV,KAAKkwnB,cAC9FxpnB,OAAQ0/U,MAAWA,IACnBnzT,IAAImzT,IAAQA,GAAKv7R,WACtB7qD,KAAKywnB,8BAA+BhnlB,OAAKinlB,IAAgBronB,MAAKkonB,WAAYpqnB,UAAUigV,KAC5EpmV,KAAKg+Q,WAAah+Q,KAAK2wnB,aAAa3wnB,KAAK0qB,OAAvB1qB,CAA+BomV,KACjDpmV,KAAKwyF,WAIbo+hB,qBAAiBlunB,IACjB,MAAM6lD,GAAU3yC,MAAMukD,QAAQz3D,IAAQA,GAAOA,GAAKymB,MAAM,KACxDnpB,KAAKuoD,QAAUA,GAAQ7hD,OAAO+9S,MAAOA,IAGzCrwR,YAAYorD,IACRx/E,KAAKwyF,SAGTtpF,cACI,IAAI2sT,GACJ71T,KAAKqwnB,yBAAyB1imB,cACe,QAA5CkoS,GAAK71T,KAAKywnB,oCAAiD,IAAP56T,IAAyBA,GAAGloS,cAErF6kE,UACSxyF,KAAKmsD,QAAUnsD,KAAKswnB,iBAAmBtwnB,KAAK0qB,OAAO0+lB,WAExD/xgB,QAAQi2O,UAAU51O,KAAK,KACnB,MAAMm5gB,GAAiB7wnB,KAAK6wnB,iBACxB7wnB,KAAKg+Q,WAAa6yW,KAClB7wnB,KAAKg+Q,SAAW6yW,GAChB7wnB,KAAKwsP,IAAI5yC,eACT55M,KAAKuoD,QAAQhgD,QAASk8S,KACdosU,GACA7wnB,KAAK+tf,SAAS34B,SAASp1d,KAAK4/F,QAAQ/sF,cAAe4xS,IAGnDzkT,KAAK+tf,SAAS14B,YAAYr1d,KAAK4/F,QAAQ/sF,cAAe4xS,MAI9DzkT,KAAKownB,eAAez/lB,KAAKkgmB,OAIrCF,aAAajmmB,IACT,MAAMy3P,GA2Cd,YAA8BA,IAC1B,QAASA,GAAQ0nG;;;;;;;SA5CGinQ,CAAqB9wnB,KAAKmwnB,yBACtCnwnB,KAAKmwnB,wBAEJnwnB,KAAKmwnB,wBAAwBvgB,QAAS,EAC3C,OAAQxpR,MAASA,GAAK+tR,SAAUzplB,GAAOszP,SAASooE,GAAK+tR,QAAShyV,GAAW,CAE7E0uW,iBACI,MAAME,GAAkB/wnB,KAAK2wnB,aAAa3wnB,KAAK0qB,QAC/C,OAAO1qB,KAAKomV,MAAQ2qS,GAAgB/wnB,KAAKomV,OACrCpmV,KAAKkwnB,cAAgBa,GAAgB/wnB,KAAKkwnB,eAC1ClwnB,KAAKmsD,MAAMq8E,KAAKuof,KAAoB/wnB,KAAKswnB,eAAe9nf,KAAKuof,KAGzEC,GAAiBjyiB,UAAjB,4BAA8GiyiB,IAl5Fd/xiB,8BAk5FgDuwiB,IAl5FhDvwiB,8BAk5FmEA,cAl5FnEA,8BAk5F6FA,aAl5F7FA,8BAk5FsHA,qBAl5FtHA,8BAk5FuJ6wiB,GAAvP,GAl5FgG7wiB,8BAk5F8LgxiB,GAA9R,KACAe,GAAiBhyiB,UAn5F+EC,8BAm5FhG,MAAkG+xiB,GAAlGttnB,mFAn5FgGu7E,2BAm5FhGorI,GAAuVyla,GAAvV,GAn5FgG7wiB,2BAm5FhGorI,GAAqa4la,GAAra,iBAn5FgGhxiB,2BAm5FhGurI,GAn5FgGvrI,6BAm5FhGmrI,aAn5FgGnrI,2BAm5FhGurI,GAn5FgGvrI,6BAm5FhGmrI,yMAn5FgGnrI,oCAk8FhG,UA2BA,SACIgyiB,QAAQ98jB,GAAOrwB,IACX,OAAOwgY,QAAG,OAelB,SACIzka,YAAY6qB,GAAQ+8lB,GAAUl/hB,GAAU2oiB,IACpClxnB,KAAK0qB,OAASA,GACd1qB,KAAKuoF,SAAWA,GAChBvoF,KAAKkxnB,mBAAqBA,GAG1BlxnB,KAAKo2Q,OAAS,IAAIg0W,GAAmB7hiB,GAAUk/hB,GAF1BtlnB,IAAMuoB,GAAOuqiB,aAAa,IAAIo1D,GAAqBlonB,KACrDA,IAAMuoB,GAAOuqiB,aAAa,IAAIq1D,GAAmBnonB,KACEgvnB,CAE1EC,kBACIpxnB,KAAKsS,aACDtS,KAAK0qB,OAAO0T,OACP/1B,MAAK3B,OAAQ/F,IAAMA,cAAaounB,KAAgBxrJ,OAAU,IAAMvje,KAAKixnB,YACrE9qnB,UAAU,OAAM,CAE7B8qnB,UACI,MAAM7nf,GAAWppI,KAAKuoF,SAAS1nF,IAAIk1d,eACnC,OAAO/1d,KAAKqxnB,cAAcjof,GAAUppI,KAAK0qB,OAAO2sC,QAGpDnuD,cACQlJ,KAAKsS,cACLtS,KAAKsS,aAAaqb,cAG1B0jmB,cAAcjof,GAAUiye,IACpB,MAAM9zJ,GAAM,GACZ,UAAWpzZ,MAASknjB,GAEhB,GAAIlnjB,GAAM+0M,eAAiB/0M,GAAMitjB,SAAWjtjB,GAAM8mjB,cAAe,CAC7D,MAAM2F,GAAczsjB,GAAM8mjB,cAC1B1zJ,GAAIpkd,KAAKnD,KAAKqxnB,cAAczQ,GAAY53a,OAAQ43a,GAAYvF,cAGvDlnjB,GAAM+0M,eAAiB/0M,GAAMitjB,QAClC75J,GAAIpkd,KAAKnD,KAAKsxnB,cAAclof,GAAUj1E,KAGjCA,GAAM7gC,UACXi0b,GAAIpkd,KAAKnD,KAAKqxnB,cAAcjof,GAAUj1E,GAAM7gC,WAGpD,OAAOmW,OAAK89a,IAAKl/c,MAAKkonB,WAAYt9lB,OAAKo8S,QAAD,CAE1CiiT,cAAclof,GAAUj1E,IACpB,OAAOn0D,KAAKkxnB,mBAAmBD,QAAQ98jB,GAAO,KAC1BA,GAAM8mjB,eAAgB32M,QAAGnwW,GAAM8mjB,eAC3Cj7mB,KAAKo2Q,OAAOxT,KAAKx5H,GAAS7gD,SAAUp0B,KACzB9rD,MAAK+3mB,QAAU/ojB,KAC1BlD,GAAM8mjB,cAAgB5jjB,GACfr3D,KAAKqxnB,cAAch6jB,GAAO2xI,OAAQ3xI,GAAOgkjB,aAKhEkW,GAAgBxyiB,UAAhB,4BAA6GwyiB,IAriGbtyiB,qBAqiG8CuwiB,IAriG9CvwiB,qBAqiGiEA,YAriGjEA,qBAqiGyFA,YAriGzFA,qBAqiGiHuyiB,MACjND,GAAgBvle,WAtiGgF/sE,+BAsiGhG,OAAiHsyiB,GAAjHlvnB,QAAiHkvnB,GAAjH,YAKA,SACI1xnB,YAAY6qB,GACY+mmB,GAAkBtvW,GAAU,IAChDniR,KAAK0qB,OAASA,GACd1qB,KAAKyxnB,iBAAmBA,GACxBzxnB,KAAKmiR,QAAUA,GACfniR,KAAK0xnB,OAAS,EACd1xnB,KAAK2xnB,WAAa,aAClB3xnB,KAAK4xnB,WAAa,EAClB5xnB,KAAKmqmB,MAAQ,GAEbhoV,GAAQ0vW,0BAA4B1vW,GAAQ0vW,2BAA6B,WACzE1vW,GAAQ2vW,gBAAkB3vW,GAAQ2vW,iBAAmB,WAEzD9xa,OAImD,aAA3ChgN,KAAKmiR,QAAQ0vW,2BACb7xnB,KAAKyxnB,iBAAiBryJ,4BAA4B,UAEtDp/d,KAAKqwnB,yBAA2BrwnB,KAAK+xnB,qBACrC/xnB,KAAKgynB,yBAA2BhynB,KAAKiynB,sBAEzCF,qBACI,OAAO/xnB,KAAK0qB,OAAO0T,OAAOj4B,UAAUxF,KAC5BA,cAAa+qnB,IAEb1rnB,KAAKmqmB,MAAMnqmB,KAAK0xnB,QAAU1xnB,KAAKyxnB,iBAAiBntT,oBAChDtkU,KAAK2xnB,WAAahxnB,GAAEkumB,kBACpB7umB,KAAK4xnB,WAAajxnB,GAAEmumB,cAAgBnumB,GAAEmumB,cAAc+Z,aAAe,GAE9DlonB,cAAaounB,KAClB/unB,KAAK0xnB,OAAS/wnB,GAAE0pE,GAChBrqE,KAAKkynB,oBAAoBvxnB,GAAGX,KAAK0qB,OAAO2jmB,SAAS1tnB,GAAE29B,mBAAmBiykB,aAIlF0hB,sBACI,OAAOjynB,KAAK0qB,OAAO0T,OAAOj4B,UAAUxF,KAC1BA,cAAa0pZ,KAGf1pZ,GAAEwT,SAC6C,QAA/CnU,KAASmiR,QAAQ0vW,0BACb7xnB,KAAKyxnB,iBAAiBjzJ,iBAAiB,CAAC,EAAG,IAEK,YAA3Cx+d,KAAKmiR,QAAQ0vW,2BAClB7xnB,KAAKyxnB,iBAAiBjzJ,iBAAiB79d,GAAEwT,UAK7CgyM,GAAM8rE,QAA2C,YAAjCjyR,KAAKmiR,QAAQ2vW,gBACzB9xnB,KAAKyxnB,iBAAiBhzJ,eAAe99d,GAAEsxR,QAES,aAA3CjyR,KAAKmiR,QAAQ0vW,2BAClB7xnB,KAAKyxnB,iBAAiBjzJ,iBAAiB,CAAC,EAAG,OAK3D0zJ,oBAAoBjjB,GAAah9U,IAC7BjyR,KAAK0qB,OAAOuqiB,aAAa,IAAI5qK,GAAO4kN,GAAiC,aAApBjvmB,KAAK2xnB,WAA4B3xnB,KAAKmqmB,MAAMnqmB,KAAK4xnB,YAAc,KAAM3/V,KAG1H/oR,cACQlJ,KAAKqwnB,0BACLrwnB,KAAKqwnB,yBAAyB1imB,cAE9B3tB,KAAKgynB,0BACLhynB,KAAKgynB,yBAAyBrkmB,eAI1CwkmB,GAAepziB,UAAf,aAtnGgGE,gCAunGhGkziB,GAAenme,WAvnGiF/sE,+BAunGhG,OAAgHkziB,GAAhH9vnB,QAAgH8vnB,GAAhH;;;;;;;;AAeA,MAMMC,GAAuB,IAAI3pe,iBAAe,wBAI1C4pe,GAAuB,IAAI5pe,iBAAe,wBAC1C6pe,GAAmB,CACrBxwiB,MACA,CAAEuG,QAASkqiB,GAAehme,SAAUyld,IACpC,CACI3phB,QAASmniB,GACTn5W,WAwKR,YAAqBkoW,GAAexE,GAAU/+iB,GAAUutB,GAAUk/hB,GAAUpwjB,GAAQy/b,GAAO,GAAI4yH,GAAqBrT,IAChH,MAAM3rlB,GAAS,IAAI8kmB,GAAO,KAAMjR,GAAexE,GAAU/+iB,GAAUutB,GAAUk/hB,GAAU94V,GAAQt3N,KAC/F,OAAIqyjB,KACAh/lB,GAAOg/lB,oBAAsBA,IAE7BrT,KACA3rlB,GAAO2rlB,mBAAqBA,IAgBpC,YAAoCv/G,GAAMpse,IAClCose,GAAKkyH,eACLt+lB,GAAOs+lB,aAAelyH,GAAKkyH,cAE3BlyH,GAAKoyH,2BACLx+lB,GAAOw+lB,yBAA2BpyH,GAAKoyH,0BAEvCpyH,GAAK7sP,sBACLv/O,GAAOu/O,oBAAsB6sP,GAAK7sP,qBAElC6sP,GAAKs+G,4BACL1qlB,GAAO0qlB,0BAA4Bt+G,GAAKs+G,2BAExCt+G,GAAK5sP,yBACLx/O,GAAOw/O,uBAAyB4sP,GAAK5sP,wBAErC4sP,GAAK+yH,oBACLn/lB,GAAOm/lB,kBAAoB/yH,GAAK+yH,mBAEhC/yH,GAAKgzH,+BACLp/lB,GAAOo/lB,6BAA+BhzH,GAAKgzH,8BAlC/C0I,CAA2B17H,GAAMpse,IAC7Bose,GAAK27H,eACL/nmB,GAAO0T,OAAOj4B,UAAWxF,KACrB,IAAIk1T,GAAI4/F,GAEiB,QAAxB5/F,GAAKh9R,QAAQg5Q,aAA0B,IAAPgkB,IAAyBA,GAAG3rS,KAAK2O,QAAU,iBAAgBl4B,GAAEd,YAAY+qD,QAC1G/xB,QAAQC,IAAIn4B,GAAEkG,YACdgyB,QAAQC,IAAIn4B,IACgB,QAA3B80Z,GAAK58X,QAAQ65lB,gBAA6B,IAAPj9N,IAAyBA,GAAGvrY,KAAK2O,WAItEnO,IA3LH8hI,KAAM,CACF+le,GAAe5W,GAAwB75hB,MAAUo/W,WAAUyxL,WAAUnL,GACrE4K,GAAsB,CAptDlC,WAotDwD,IAAI7uG,YAChD,CAv1DZ,WAu1DiC,IAAIA,cAGjCo4F,GACA,CAAEtzhB,QAASyshB,GAAgBz+V,WA6M/B,YAAmB3rP,IACf,OAAOA,GAAO6/lB,YAAYp3T,MA9MwB3mK,KAAM,CAACgje,KACzD+B,GACAqB,GAjNJ,SACI3B,QAAQ98jB,GAAOrwB,IACX,OAAOA,KAAKz7B,MAAK8liB,OAAW,KAAM7pI,QAAG,UAiNzC,CAAEj8U,QAAS+piB,GAAsB9piB,SAAU,CAAEmqiB,eAAe,KAEhE,aACI,OAAO,IAAII,eAAa,SAAUrD,IAuBtC,SAEI3vnB,YAAY2wQ,GAAO9lP,IAAQ,gBAmBZ2wlB,GAAQhkjB,IACnB,MAAO,CACH+xE,SAAU0pf,GACVzpf,UAAW,CACPipf,GACAS,GAAc1X,IACd,CACIhzhB,QAASgqiB,GACTh8W,WAAY28W,GACZxme,KAAM,CAAC,CAACgje,GAAQ,IAAIjsG,WAAY,IAAIC,cAExC,CAAEn7b,QAAS+piB,GAAsB9piB,SAAUjxB,IAAkB,IAC7D,CACIgxB,QAAS+zX,MACT/lM,WAAYkmM,GACZ/vT,KAAM,CAACmuT,MAAkB,CAAC,IAAIs4K,SAAOz2K,OAAgB,IAAI+mE,YAAa6uG,KAE1E,CACI/piB,QAAS8piB,GACT97W,WAAY68W,GACZ1me,KAAM,CAACgje,GAAQvxJ,MAAkBm0J,KAErC,CACI/piB,QAASmpiB,GACThzhB,YAAannC,IAAUA,GAAO65jB,mBAAqB75jB,GAAO65jB,mBACtD0B,IAER,CAAEvqiB,QAASwqiB,eAAcp0hB,OAAO,EAAM43K,WAAY88W,GAoOvD,CACHC,GACA,CACI/qiB,QAASo4gB,kBACThigB,OAAO,EACP43K,WAAYg9W,GACZ7me,KAAM,CAAC4me,KAEX,CAAE/qiB,QAASiriB,GAAoBj9W,WAAYk9W,GAAsB/me,KAAM,CAAC4me,KACxE,CAAE/qiB,QAASmriB,yBAAwB/0hB,OAAO,EAAMD,YAAa80hB,MA5OrDG,iBAoBIpY,IACZ,MAAO,CAAEjye,SAAU0pf,GAAczpf,UAAW,CAAC0pf,GAAc1X,OAsBnE,YAA8B3wlB,GAAQ+mmB,GAAkBp6jB,IACpD,OAAIA,GAAOssY,cACP8tL,GAAiBrzJ,UAAU/ma,GAAOssY,cAE/B,IAAIwuL,GAAeznmB,GAAQ+mmB,GAAkBp6jB,IAExD,YAAiCq8jB,GAA0Bj2K,GAAUt7L,GAAU,IAC3E,OAAOA,GAAQwxW,QAAU,IAAI32K,MAAqB02K,GAA0Bj2K,IACxE,IAAInB,MAAqBo3K,GAA0Bj2K,IAE3D,YAA6B/yb,IAIzB,MAAO,UAkBX,YAAuB2wlB,IACnB,MAAO,CACH,CAAEhzhB,QAASuriB,+BAA8Bn1hB,OAAO,EAAMnW,SAAU+yhB,IAChE,CAAEhzhB,QAASm/hB,GAAQ/ohB,OAAO,EAAMnW,SAAU+yhB,KAtDlDyX,GAAa/ziB,UAAb,4BAA0G+ziB,IArwGV7ziB,qBAqwGwCoziB,GAAxI,GArwGgGpziB,qBAqwGyFuwiB,GAAzL,KACAsD,GAAa5yiB,UAtwGmFjB,6BAswGhG,MAA2G6ziB,KAC3GA,GAAa3yiB,UAvwGmFlB,6BAuwGhG,IAkHA,SACIp/E,YAAY0oF,IACRvoF,KAAKuoF,SAAWA,GAChBvoF,KAAK6znB,gBAAiB,EACtB7znB,KAAKqgK,WAAY,EACjBrgK,KAAK8znB,0BAA4B,IAAI/3mB,KAEzCg4mB,iBAEI,OAAOzkT,KADQ/mP,SAAS1nF,IAAIk6c,MAAsB1jW,QAAQi2O,QAAQ,OACzD51O,KAAK,KAEV,GAAI13G,KAAKqgK,UACL,OAAOhpD,QAAQi2O,SAAQ,GAE3B,IAAIA,GAAU,KACd,MAAMi6H,GAAM,IAAIlwW,QAAQl1G,IAAKmrV,GAAUnrV,IACjCuoB,GAAS1qB,KAAKuoF,SAAS1nF,IAAI2unB,IAC3B14H,GAAO92f,KAAKuoF,SAAS1nF,IAAIuxnB,IAC/B,MAA+B,aAA3Bt7H,GAAKm3H,mBACLvjmB,GAAOwjmB,8BACP5gS,IAAQ,IAIe,YAFtBrlD,GAEAgmV,mBAA8D,oBAA3Bn3H,GAAKm3H,mBACzCvjmB,GAAO4+lB,MAAMG,mBAAqB,IAEzBzpnB,KAAK6znB,gBAOCvvN,QAAG,OANVtka,KAAK6znB,gBAAiB,EACtBvmS,IAAQ,GACDttV,KAAK8znB,2BAOpBppmB,GAAOujmB,qBAGP3gS,IAAQ,GAELi6H,KAGfysK,kBAAkBC,IACd,MAAMn9H,GAAO92f,KAAKuoF,SAAS1nF,IAAIuxnB,IACzB8B,GAAYl0nB,KAAKuoF,SAAS1nF,IAAI0wnB,IAC9B4C,GAAiBn0nB,KAAKuoF,SAAS1nF,IAAIsxnB,IACnCznmB,GAAS1qB,KAAKuoF,SAAS1nF,IAAI2unB,IAC3B/nO,GAAMznZ,KAAKuoF,SAAS1nF,IAAI+5b,kBAC1Bq5L,KAA6BxsO,GAAIykF,WAAW,MAIjB,uBAA3B4qB,GAAKm3H,wBAAyEr1Q,IAA3Bk+I,GAAKm3H,oBACxDvjmB,GAAOujmB,oBAEXiG,GAAU9C,kBACV+C,GAAen0a,OACft1L,GAAOqjmB,uBAAuBtmO,GAAI2sO,eAAe,IACjDp0nB,KAAK8znB,0BAA0BvymB,KAAK,MACpCvhB,KAAK8znB,0BAA0Bj6mB,YAEnC3Q,cACIlJ,KAAKqgK,WAAY,GAQzB,YAA2Bl+J,IACvB,OAAOA,GAAE4xnB,eAAe1nhB,KAAKlqG,IAEjC,YAA8BA,IAC1B,OAAOA,GAAE6xnB,kBAAkB3nhB,KAAKlqG,IATpCixnB,GAAkBr0iB,UAAlB,4BAA+Gq0iB,IA77Gfn0iB,qBA67GkDA,cAClJm0iB,GAAkBpne,WA97G8E/sE,+BA87GhG,OAAmHm0iB,GAAnH/wnB,QAAmH+wnB,GAAnH,YAgBA,MAAME,GAAqB,IAAI7qe,iBAAe;;;;;;;;AAyB9B,IAAIgjB,UAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAA,mDEt8L5B,IAA2kCprK,IAA3kCM,ikCAA2kCN,EAAuJM,EAAvJL,EAAuJ,IAAxH,YAAkC,UAAmBD,kBAA2CE,MAAyC,oBAAkE,QAAxBF,MAAyD,sBAA+hB+B,qBAA0F,QAApDV,EAAniB,YAAsL,YAApJigB,8BAAmIle,KAAiBkC,QAAwD2H,iBAA2CA,oEAAsKA,EAA7Z,oEAA6Z8D,WAA2C,SAAyD5Q,IAAmCmhB,KAAiBle,eAAoDA,IAAoBA,IAAake,qDAA2F,8BAAsCvf,YAAqBA,YAAyB,kBAA2C,uDAA6IwE,GAAalE,eAAc2P,UAAmD,cAAoC,6BAAsD,yBAAmG,gCAA8D,0KAAg5J,gBAA2C,mBAAyC,sBAA4C,oCAA2E,CAA+D,iBAAiC,kCAAgE,yDAA4H,GAAejQ,uBAAuC,yDAA6H,GAA1iLrC,iBAA4Y,QAAyB,0BAAoM,MAAgL4hB,GAAgB/Z,kDAA8ExF,qBAAsC,MAAwO,wBAAwiJ,aAA0B,kCAAlkJjC,iBAA8F,yBAA8CyH,yEAA2H,CAA0B,SAA8CxH,6BAAqE,yBAA2D,MAA6BuhB,GAAgB/Z,yGAArtBxF,sBAA2D,MAAgEuf,GAAgB/Z,8CAA6vB,CAAqC,CAA2E,gCAA+C,uBAAyD,KAA8B,CAAK,iFAAuI,KAAc,kDAAyE,CAAmD,SAAujBxF,+CAAwE,CAA0B,CAAuJ,GAAjDy2B,mBAAsV,cAAgC,8CAAkF,mBAAoC,qIAAuN,CAAqC,CAA8H,mBAAoC,qFAAwI,CAA0B,SAA2L,gBAAoC,yCAAgE,CAA0B,SAAkC,gBAAoC,yBAA8P,MAA6Bv4B,YAAkC,qDAAxuDR,KAAiD6F,EAAc,uBAAoE,MAA0EkzB,oBAAkC,SAAyB,qCAAsyE,cAA8B,uBAAwG,gBAAwC,WAA8L,SAA9L,wEAA8L;;ACI7qR,IAKAxmB,EALA1R,GACAA,kBACAyB,cAKAD,yEAEAgP,GACA,OACA,QACA,QACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,SAGArR,eAAyC,kBAAyC8G,WAGlF,kBAAuCxE,IAAuBtC,MAC9D,aAAsBI,QAHtB,aAAwBJ,QAGYC,GAEpC,cAAuF,QAA9By5T,KAA8B8V,eAAkCA,MAASA,uBAAgC,SAElK,cAEA,QADA9V,KACA8V,IAAgBA,gBAAsBA,uEACtC,kBAOA,cAEA,QADA9V,KACA8V,IAAgBA,gBAAsBA,uEACtC,kBAGA,kBACA,wCACA,oCACA,6BACA,oBACA7qB,GAGAjjT,cAAwD,+BACxDC,cAAwD,+BAkBxD,WAEAkE,sEACA,cAGA,QAFA6zT,KACA8V,gCACAtnC,KAAkBA,aAElB8yC,IADAxL,uBACA,EAEAyjB,aADAvjB,uBACA,EAEA6zK,cADA5zK,uBACA,EACAoG,QACAl7S,SACA0od,SACM1od,WACNk7S,OAEArc,uDAEA,SAgDA,cACA,SACA8V,2BACA7qB,+CAAiD,+BACjD,aAAkBzc,aAGlBsnC,EAFA3pU,2BAEA,GADAotV,+BACA,EACAv5B,0BAEAgW,cADA6zK,+BACA,EACA,UACA7pL,2BAGAiW,aADAoG,8BAEA,UACArc,2BAGA,SAEA,iBAAyC,kHAAzC,GAEAjiT,aACA,+BACA,mBACA,UAAkBsqV,yBAAyC,CAAzC,MAA8BroC,GAAW/U,KAC3D,uBAAqC,wCAAyDo9C,yBAE9F,oBANA,GAQAryV,aACA,uCACA,gBACA,WAEA,GADAi1S,sBACAjhT,OALA,GASA,cAEA,oDACA,8DAIA,cAEA,gEACA,8DAIA,mBACA,uBACAg2T,4BAA2D,8BAG3D,eACA,gDAEA,QADAA,gDACAgW,IAAeA,cAAaA,2BAC5B,SAGA,eACA,6CAAuD,gCAAgCz0S,SACxD,QAA/By+R,KAA+B8V,IAAeA,aAAiBA,iCAA0C,kBAQzG,eACA,kEACA,yDAGA,QADA9V,sBACA8V,IAAgBA,aAAiBA,YACjC,SAGA,qBAAyC,uCAA8C,qCAA6D,YACpJ,mCACA,YACA,QAAa9V,aAAiBA,iBAC9B,wBACAiW,IACA,YAAyBjW,WAAiB8V,SAC1CG,cACAhrB,wCACA,wDACA+qB,8BAEA,SAEA,4CAAqD,kDAmCrD,uCAqBA,eAAwE,QAA5BhW,kBAA4B8V,uBAAgC,SACxG,iBAAiD,WAAY,0CAC7D,gBAAiD,WAAW,0CAC5D,iBAAkD,WAAY,0CAG9D,sBACA,iBAAkD,mBAHlD,iBAAmD,uBAAwB,0CAGzB/+Q,MAFlD,iBAAmD,WAAY,0CAEoD/4B,CAAvB/P,cAAuB+xS,GAEnH,iBAAkE,cAAY/U,sNAC9E,QACA,iBACA,iBACA,kBACA,oBACA,mBACA,iBACA,oBAEApsR,IACA,sBACA,uBACA,oBACA,oBACA,kBACA,mBACA,mBACA,qBACA,wBACA,sBACA,uBACA,wBAoCA,QACA,YACA,MACA,SACA,UACA,aACA,OACA,WACA,cACA,WACA,aACA,YACA,cACA,WACA,YACA,gBACA,mBACA,UACA,aACA,iBACA,oBACA,yBACA,yBACA,8BACA,WACA,eACA,YACA,cACA,OACA,kEAMAmX,IACA,oBAEA,oBAEA,8BAEA,8BACA,wBACA,oBAEA,WACA,kBACA,wBACA,kBACA,kBACA,MAKA/9B,IAEA,8BACA,+BAGA,mCACA,oCAGA,oCACA,qCAGA,yCACA,0CAGA,iDAGA,0DAGA,yDAGA,mEAGA,mBAMA,QALA+9T,WACAC,MACAqL,eACAjF,eACAw+S,iBACArsV,OAEAq7M,IADAgxI,kBACAthS,MACAoxJ,cACA10K,aACAA,WACAqL,MAAaiY,MACbld,MAAa7tC,MAGb,GADAm8M,OAAan8M,MAAcm8M,MAASd,QAAkBc,MAASd,SAC/D/zK,oBACA,2BACA,yBAEA,mBACA,8BACA,yCACAyjB,MACAswJ,IAAUlze,qDAOV,GANAsX,8BACA+xS,yBACA6pL,aACAA,OACA,aAAwBA,WAAkB7zK,IAAQ6zK,OAElD,OAAkBtwJ,8BAAwCjY,aAC1D,MAAsBiY,4BAAsCjY,SAC5D,CACAtL,UAEA,0BACAqG,6BACAkd,mDACAjY,eACAtL,oBACAF,OAuEA,iBAEA9V,UACA,iBACA,yBACA8V,EA5EA7gS,SAEA,kBAAkB40c,WAAiBA,WACnCA,UAAoB5zK,mBACpB4zK,UAAoB5zK,mBACpB4zK,OACAA,QACAA,GAKA,eACA,sEAuBA,eACA,sDAEA,0CACA57d,eAjBA,eACA,gBACA6nT,oBACwB,OADmBA,cAC3CA,qBAAwB9rU,YACxBihT,mBAaAr2Q,IACA,kCAVA,eACA,wBACA,kEASAD,IAEAH,GA3BA,eACA,2BACAy2Q,+EAyBAx2Q,mBAcA,iBACA,qBACA,sBACA,sCACA,kDACA,yBACA,SACA,oBACA,yDAEA,2DAWA,qBACA,kCACA,eACA,GACAo1c,gBAEA,IACA,sBACA,mBAAkCr7M,KAAU,cAC5C6tC,UAA6B7tC,KACzB,WACJ,IACA,sBACA,gBAAgCA,YAAmB,WACnD,2BACA,8BACA,oBACI,WACJ,IACA,sBACA,gBAAgCA,YAAmB,WACnD,4BACA,kBACI,WACJ,IACA,sBACA,0BAA0CA,YAAmB,cAC7D,2BACI,WACJ,GACA,sBACA,gBAAgCA,YAAmB,cACnD,2BACI,WACJ,GACA,sBACA,gBAAgCA,YAAmB,cACnD,6BACI,WACJ,IACA,8EACA,iCAEA+qD,sBACA,YACAjY,8BACA,cACA,6BACArL,aACA,uBACA,6BATAr/Q,iBASA,KACA,GACA,cACA,+BAAkD,UAClD,wCAA6D,UAC7D,iEAA0F,cAC1F,8BACI43O,oBAAiC,WACrC,IACA6tC,MAAY7tC,KAGZ,OADAA,iBACA,CAMA,eAEA,aADA,EACA,SAEA,QADAsnC,WAFA,EAEAE,gBACOF,YAAaA,GAHpB,EAGoBE,kCAHpB,GAIA,SAEA,YAYA,iBACA,MACAA,kCACA,2BACA,uBACA,0BACA,sBAAiC,0BACjC,6CAGA,GAFAsL,eAEA,KADAxL,iDACAl+T,cACA,2CAGA,KAFA,uEACAk+T,gBACA,sBAEAA,GADAA,+CACApzS,iDAEAozS,uBAEAA,6DAAmE,gEAChEA,qBACH,mGACA7qB,yDACA6qB,mBAEA,gCASA,wBACA59S,cACAw2B,yBACA,eAEA,QADAonR,OACAE,IAAgBA,cAAiBA,iCACjC,cACA,UAAoB,WACpB,UAAoB,cACpBhW,0BAEA,SAEA,gBAAwD,qBAAyB,2BACjF,iBACA,uCACA,uCACA/xS,gBAYA,mBACA,uCACA,8DACA,wBACA,qBAEA,wCA5EA,mBAEA,QADA+nT,aACA,4BACA,yDAyEA79T,QACA,8BAlFA,mBACA,2CACA,4CAgFAi9B,QACA,sCACA,yEACA,MACAksS,sCACA,8CACA,sBACA,MAAoB,OAApBrL,aAAoBA,MACpBA,wDAEA,yBAtDA,mBACA,6DACAsjB,eACA,6HAmDAjhV,WACA,8DACA,kBACA,iIAAyI,mDACzI,4CAGA,GADA0nT,8BACAshB,2BACA,+HAEA,mCAA2B,uBAC3B,mCACA,+CAvCA,gBACA,kEACA,EAEA,EAmCA7rT,2DAEA,gEACA,yCACA,4CACA8jU,KACAvqU,wDAA4E,qDAE5E,eACA,MACA,KADAinT,wBACAh4P,+CAEA,UACA,6CACA,mCACA4ra,+BACA5zK,QAEA,MADA00K,wBACAhwc,uDACAs7R,uBACA00K,iBACA3gf,sEACAisU,MAGA,+CACA,0DAEAznC,KADAq7M,gCACA,kHAEA,0BAEA,OADA5zK,UACAjW,qBACA1qS,oCAEA,sCACA2gT,oEACAsjB,kBACA,iDACA,kDAEA,oCACA,6BACAzjB,sBA5EA,eACA,uDACA,iBA0EApgT,0BAA+F,oCAAyC,oDAAiE,wBAEzM,cACA,2CACA,cACA,aACA,4BAAiD,4BACjD,iEACA,yDAGA,8CAWA,iBACA,MACAsgT,kCACA,2BACA,uBACA,0BACA,sBAAiC,0BACjC,6CAGA,GAFAsL,gBACAxL,iDACA7gU,eACA,4CACA,uEACA6gU,gBACAA,uBAEAA,6DAAmE,gEAChEA,qBACH,mGACA7qB,yDACA6qB,mBAEA,mBACA,uCACA,8DACA,wBACA,qBAEA,wCArCA,mBAEA,QADAE,aACA,4BACA,yDAkCAp/S,QACA,8BAjCA,mBACA,2CACA,4CA+BAE,QACA,sCACA,yEACA,MACAwqT,sCACA,8CACA,sBACA,cAAgB,cAChBrL,wDAEA,yBArKA,mBACA,2DAoKAr9T,WACA,8DACA,kBAEA,OACAq9T,GADAA,6EACAvzS,mCAEA,mDACA,4CAGA,GADAs9R,8BACAshB,2BACA,oHAEA,mCAA2B,oBAC3B,mCACA,4DAEA,gEACA,yCACA,4CACAiY,KACAvqU,wDAA4E,qDAE5E,eACA,MACA,KADAinT,wBACAh4P,+CAEA,UACA,6CACA,mCACA4ra,+BACA5zK,QAEA,MADA00K,wBACAhwc,uDACAs7R,uBACA00K,iBACA3gf,sEACAisU,MAGA,+CACA,0DAEAznC,KADAq7M,gCACA,kHAEA,0BAEA,OADA5zK,OACAjW,qBACA1qS,oCAEA,qCACA2gT,oEACAsjB,kBACA,iDACA,kDAEA,oCACA,wDAA6F,oCAAyC,oDAAiE,uBAEvM,cACA,cACA,aACA,yBAA2C,gCAE3C,qGAEA,8CAEA,mBACA,oCAmBA,yCACA,eAEA,QADAv5B,cACAA,YACA,0BACA,oBAA8CA,IAAK,UACnD,SAAkB,uCAAmEA,EAAK,UAC1F,KAAoB,IACpB,SAAmB,UACnB,QAAkB,UAClB,YACA,yDAEA,gDAEA,iEACA,yBAGA,GAFA,qCACA,uCACA,qEACAA,EAAS,UACT,IAEA,IADAgW,IACA,gDACA,wBACA,UACA,QAEA,YACA,0HACA,UACA,6BAAuD,UACvD,SAAkB,yCAAsD,UACxE,gBAA4B,UAC5B,oEACA,0DAAqF,MACnE,UAClBhW,EAGA,SAmNA,+CACA,iBACA,oBACA,uBACA,iBACA,qBAA0C,UAC1C,oBAA0C,UAC1C,oBAA0C,UAC1C,sBAA0C,UAC1C,sBAA0C,UAC1C,sBAEA,SAEA,iBACA,MA3RA,eAGA,QAFAA,KACA8V,KACAE,QAAuBA,aAAgBA,+BACvC,GACAF,KAAqB,WACrB,qBACAE,EAAQ,WACR,GACAhW,4BACAiW,MAGA,GADAjW,yBACA,6DACA,SA6QAz4R,IACAyuS,iCAEA,GADAA,eACAF,6EACA,qEACA,sBACA,mEAAoG,WACpG,oDAA2F,WAC3F,oDAGA,8BACA,+DACA,6DACA,sBACA+zK,kBACA,yEAEA,aAEA,mBACA,gBACA,SACA,qBACA,SACA7zK,iCACA/qB,EACA,UACA,SAGA,OAFA+qB,4BACA,gCACAA,sCACA,8BAGA,0BACAhW,wCACA,cACA,2BACA,4BAA4B,wBAC5B,yBACA,OAxQA,qBAIA,QAHAxxB,sCACAssV,OAEAvhS,aACA,4BACA,IACA,oEACAtjB,aAAuBrtU,mBAAqB2wV,MAAM,UAClD,IACA,UAAa,2CAAkDjY,4BAC/DrL,aAAuBrtU,cAAa2wV,GAAK,UACzC,wDACAtjB,aAAuBrtU,aAAW2wV,GAAK,UACvC,iBAAgC3wV,aAAe2wV,MAAM,UACrD,IACAtjB,aAAuBrtU,aAAa2wV,GAAK,UACzC,YACA,+CACA,aAA8E,OAA1D/qD,iCAA0D,SAC9EynC,aAAwBrtU,wBAA2ByzU,MAASkd,MAAM,UAGlE,4CACAswJ,wBAEA,oDAEA,GADA7pL,KACA,UAAoD,OAAjCxxB,YAAiC,SACzC,IAAX8yC,QAAWiY,qDACX,2CACA,kBACAtjB,aAAuBrtU,WAAWyzU,MAAS,UAC3C,yBACA,QAAWzzU,WAMX,GALA,uBACA,sCAAmD,4CAAqDmynB,SAAWD,OAAOvhS,OAC1H,wCAAyD,oCAA6CwhS,SAAWxhS,MAAMuhS,QACvH,4DAAyD,wDAA6CC,SAAWxhS,MAAMuhS,SAC5GC,WAAWxhS,IACtB,8BACAtjB,eAAyBoG,MAAS,UAClC,IAEA,IADAiF,MACA,oDACA,8DACA,iBACA,aAAqD,OAAjC9yC,YAAiC,SACrDynC,aAAwBrtU,0BACxByzU,qBACMiF,qBACNA,2CACAp9S,qBAA8Ct7B,cAE9C,UAEA,IACA,aACY,IAAZ04U,QAAYiY,6CACZtjB,aAAwBrtU,YAAa,UAGrC,YACW,IAAX04U,QAAWiY,6DACXtjB,aAAuBrtU,YAAa,UACpC,IACW,IAAX04U,MAAWr2B,4BACXgrB,aAAuBrtU,WAAWyzU,MAAS,UAC3C,UAAkB,4CAAsD,UACxE,yBAA0CzzU,uBAA0B2wV,GAAK,UACzE,oEACW,IAAXjY,MAAWiY,uEACXtjB,aAAuBrtU,YAAa,UACpC,iBAAgCA,aAAW2wV,GAAK,UAChD,iBAAgC3wV,eAAe2wV,GAAK,cAEpD,IAAuB,IAAvB,6CAAuB3hV,mEACvBq+T,aAAuBrtU,cAAa2wV,GAKpC,iBACA,yBAA8BA,QAAQA,GACtC,oBACA,uBAAsCld,OAAS2+S,aAAmB,UAClE,KACA7/R,6DACA6/R,iBAEA,uCAAyD,UACzD,eAA+B/kT,YAAgB+kT,cAAqB,UACpE,IACA,UACA,IACAA,oCACAA,oCACAA,oCAIA,gBACA,aACA,EAEAxsV,WAAqBA,SAAUA,MAC/BA,WAAqBA,SAAUA,MAC/BA,WAAqBA,SAAUA,MAC/B,WACA,EAEAA,WAAqBA,SAAUA,MAC/BA,WAAqBA,SAAUA,MAK/B,aACA,SAAU+qD,cAAgBA,GAC1B,oBACA,sCACA,eAA4BtjB,YAAgB,UAC5C,4EAEAA,gDACAA,YAAoB,UACpB,YAEA,IADAglT,QACA,cACA,+BACA,yFACA,+CACA,0EAEAhlT,iBACAA,OAAgBpvU,cAAco0nB,GAE9BtgS,YACApB,QAAc,UACd,gBAA6BtjB,gBAG7B,gBACA,gBACA,sBACAg0K,mCACAixI,mBAGAA,aADAjxI,kBAEAA,0BACAixI,gBACAjlT,oBAGAglT,eACA,gBACA,SAAW1hS,cAAgBA,0DAA2E4hS,MAAW,MACjH,gBACA,wCACA,kBAAuB5hS,QAAMA,GAC7B,0CACA0hS,sBAAgCA,mBAAuBhlT,wCACvDglT,iBACWhlT,0BAAiCglT,OAC5ChlT,YACAm0K,OAEA6wI,gEAEAE,qCAEA,IADAF,qBACA1hS,MAAgBA,QAAOA,GACvB,2CAGA,KAFAoxJ,4EACAb,wBACUa,QAAMA,GAChBswI,qFAEAhlT,WACAA,YACAm0K,MAIA,IAFA6wI,wDACAA,qBACA1hS,MAAgBA,cAAcA,GAC9B,uDAGA,KAFAoxJ,6DACAb,wBACUa,oBAAmBA,GAC7BswI,oCAEAhlT,WACAA,YACAm0K,QAIA,SAAU7wJ,cAAcA,2CACxB0wJ,wCACAh0K,+BACAA,aAEA,UACA,SAAUsjB,gBAAkBA,8BAC5B,UA2DAlyT,gBAEA,iBACA,uBACA24R,SAEA,YAAiB8V,QAAYA,EAE7B,gBACA,aAA6B9V,IAAS,YADHA,WAInCA,aAGA,eACAA,EAEA,eACA,YAAc,SAAWA,OACzB,qBAGA,cACA5+R,GAh7BA,eACA,iBACA6pR,eACAA,SACAA,YACAA,aACAA,gBACAA,UACAA,cACAA,iBACAA,cACAA,gBACAA,eACAA,iBACAA,cACAA,eACAA,mBACAA,sBACAA,aACAA,gBACAA,oBACAA,uBACAA,4BACAA,4BACAA,iCACAA,cACAA,kBACAA,eACAA,iBACAA,UACAA,oEACAA,EAi5BA5pR,GAGA,QACA/zB,UACA87P,QACAqpM,UACA2oL,cACAC,mBACAC,WACAC,qBAAmC,sBAGnC5mf,GAAkC,CAClC,8BACA,mCACA,oCACA,yCACA,oDACA,4DACA,oDACA,YACA,6CACA,sDACA,qDACA,8DACA,4DACA,gDACA,OACA,UACA,WACA,cACA,+BACA,oCACA,qCACA,0CACA,QACA,WACA,WACA,aACA,YACA,YACA,cACA,WACA,YACA,UACA,aACA,iBACA,WACA,eACA,aAIAE,sCA6BA,QACA,eAGA,iBACA,sBA4CA,IAsyDAusC,GAtyDA9rC,cACA,SACA21K,kBAsBA,MAnBA,aAGA,QAFAiwU,uBAEA9wI,KAAe,UAAUA,GASzB8wI,MADAA,MADAA,MADAA,MADAA,MADAA,MADAA,MADAA,MADAA,QACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,wBACAC,UAGA,2DAGAn7T,GAaA,MAZA,eACA,0FAEA,SAAY,UAAUw7T,iBACtB,SAAY,UAAUA,GAEtB,IADApxI,UACA+wI,UAAmBA,QAAUA,oCAE7B,UACA,SAAY,SAASK,sIACrB,UAEAxlT,IACAsL,wCACAqpK,wCACAowI,6CA6CA,iBACA9vU,OA7CA,mBAEA,QADAm/L,SACAoxI,kBAAiCA,OAAMpxI,0CACvC,WA2CAn/L,MAxCA,mBAEA,QADAm/L,8BACOK,OAAML,GACbzvJ,oBACAQ,uBACA6uJ,wBACAgxI,qBACAD,oDACAF,oDACAhxI,mDAEA,IADA2xI,OACA/wI,sCACA,WA6BAx/L,MA1BA,mBAEA,QADAm/L,SACAoxI,4BAA8CA,QAC9CC,wBACA,IACArxI,yBACIqxI,QAEJrxI,IADAA,wCACA,0BACIqxI,qBACJA,gBAAoBhiS,4BAIpB2wJ,IADAA,IADAA,IADAA,uCACA,gCACA,0CACA,2BAIAA,IADAA,IADAA,yCACA,gCACA,0BAGA,WAMAn/L,EAzFA,GA4FAziK,aACA,IA8FA6zL,GA9FArc,KAWA,eACA,2FACA,2BACA,kCAGA,eACA,wDACA,2BACA,gCAUA,mBACA,uCACA,qBAEA07T,IADAA,2BACA,sBACAthS,qBACA,6BAEA00J,IADAA,2BACA,eACA10J,qBAqBA,gBACA9lO,SAGA,QAFAqngB,MACAD,KACAthS,oBACA,wBACAm1J,+BACAC,MACA,gBAEA,MAEA,GADAksI,uBACAlsI,2BAEAD,OACA,kCACA,mCAEAC,yCACK,WAEL,EACA,4CACAA,4BACAosI,oBAA8BC,oBAC9BrsI,4BAIAp1J,QACAuhS,UAEA,UAGA,cAAoB,mBACpB,mBACA,yCACA,2CA87CA,mBACA,+FACA,uBAEA7sI,uEACAS,WAGA,SAAaA,eAAkBA,GAE/B,GADAh2M,UACA,iCACAA,gCACAmiV,2CACAniV,2BACA,mBAEAmiV,IADAA,4BACAj5mB,+BACA82R,6BAIA,6CACA,mDACA,wBAGAuiV,IACAC,UAFA,GAGAC,UAHA,IAKAd,OACA,YACA,SAAa3rI,eAAkBA,IAC/B,cACA0sI,wBACAC,gCACAxhS,OAEA,UAp+CA6yJ,QACA,sEACA,OAEAgC,GACAh2M,GACAi2M,GACAosI,GACAC,GALA/sI,OAOAqtI,MAGAL,mBACAxngB,SAGA,OAmFA,gBACA,4CAEA8lO,gCAIAA,SAGA,4BAEA,gCA/FAygS,KAEA,OADAa,UACA,KACA,SAAoB,WAAO,UAAoB,WAC/C,uCAEA,0DAIA,UAA+DpngB,GAA7CwngB,kBAA6C,IAE/D,uBAqFA,mBACA,SAOA,OAHA1hS,QAGAshS,0BACA,+DAAqF,WACrF,iEAAsF,cACtF,0DAIAthS,qCAGAA,oCArGA0gS,QAGA,4BACA,6EAGAgB,QAGAtsI,wBAGAssI,QAGAA,+CAGAF,wBAGArsI,wBAGAssI,wBAGAtiV,wBAGA,mBAAuB6iV,WACvB3sI,yBACA,KAFgC2sI,GAGhCD,UAIA,OAmEA,mBAGA,QAFAT,6BACA5sI,MACAS,KAAcA,QAAcA,sCAC5B,gCACAT,GAxEA/E,QAEAixI,mBAGA,OA+JA,yBACA,uBACAxrI,kBACA2sI,4BACA,SAAUL,QAAQA,GAGlB,GAFAF,OACAM,WAAuB3sI,cACvBC,OACA,OACA,UACA,UAAW90J,OAAK,CAChB+0J,UACAD,UACAosI,iBACAC,gBACA,+BAEA,SADAI,YACA,sDAGA,IAFA7hS,QAEAq1J,GADA/0J,kBACA,MAEAnhD,QAAqB1pQ,wBAErB,UAvLAsrT,cAEAq0J,yCACAD,wCACAa,sBACAA,gBACAA,UAGA,IAA2B3of,mBAkL3B,qCAIA,QADAw0nB,GAFAJ,sBACAC,eACAphS,UACOA,aAAmBA,SAC1B,2BACApmO,UACA4ngB,oBACAD,kBACAntI,YACA,QACA19b,QACAhjD,sBACA0pF,uBACAmpL,uBACAh5Q,uBACA6L,uBACAuonB,wBACAloS,2BACA9kT,QACAk9C,QAGA,IADAkja,sEACA2sI,qBAEA,IADA3sI,sEACA2sI,qBACAA,8BACAA,6BACAA,wBAAkCA,kBAAqBA,YAAsBA,YAC7E,aACAP,YACAtsI,4CAEI6sI,eACJA,sBACA,qEACAT,0BACAS,gDAEAA,qBACAA,oBACAP,iCACAO,0CAAyFlznB,QAGzFkznB,6BACA7iV,UACAi2M,cAhOA70J,gBADA,GACA2hS,OA6DA,sBAIA,QAHAxtI,sCACAqtI,YAEOrtI,QAAQA,GAAOqtI,iBAAeR,cAErC,KAAOC,eAAcA,GACrB9sI,UACAS,YAAeh2M,YAAai2M,YAC5B2sI,eACA,sCACA,uCAEA,qBACA,qBAAgCA,cAAiBL,qCACjD,qBAAgCK,cAAiBL,oCAEjD,SAAUhtI,QAAQA,kBAClB,mCACA,sCAGA,SAAUA,QAAQA,GAClB,mBAEA,KADA8sI,QACAO,UACAP,UACAD,+BACI,iCACJQ,UAIA,IADAR,WACA7sI,KAAUA,QAAQA,GAClB,+BA7FAytI,WACA90nB,WAEA,QACAs0nB,aACAC,cAIA,4BAAoChpjB,uBACpCg9a,GAuFA,sBAKA,QAJAlB,uBAEAv1M,MACAi2M,MACAksI,iBACAniV,kCACAg2M,OACAC,eAEA,2BACA/ye,wBAKA,4BACA,UACA,YACA,wEACG,QACH,4BACA,cACA,aAAiBo/mB,QACjBtiV,uBADwBsiV,GAExBtsI,YAEAosI,sCAKA,4BACA,gBACApsI,YACA,sBACA,UAAcssI,OAAK,CACnBtsI,UACAh2M,iBACAi2M,gBACA,+BAEA,SADA2sI,YACA,sDACA,iBACAN,iBAEA,OAAShslB,wBAmFT,mBACA,gFAqBA,mBACA,cAAmBi/c,yBAGnB,GAFA10J,gCACAA,gCACAA,wFACA,0BACAA,uBACAA,iBAAwBhpS,iBAExBsqkB,2CAGA,gBACA,qBACA,sBACA,cAAqBA,SAAWA,eAAkBA,SAClDthS,mBAAuBhpS,kDACvBgpS,sCACAgwJ,QARA+wI,KAUA,mBACAD,OAEA,QADAQ,YACAnsI,yBAAuCA,QAAQA,IAC/C,wBACA,qBACA,EACAT,UACW10J,mBAAqBA,oBAChC,WACA,gBACA00J,MACA3td,+BACAo4Q,sCACA,cACAmiV,MAAuB,CAGvB,UAEA,iCAEAG,wCACAM,MACA,SAAY5sI,yBAA0BA,GACtCssI,wBACA,2BACAM,6CAEA,SAAY5sI,eAAiBA,IAC7B,oBAEA,IADAT,WACAA,KACA,iCAEAqtI,aACA/qkB,2BACAhjD,OACAiunB,SACAzne,YACA8jI,gBAIAmjW,UAGA/sI,MADAgtI,gBACA,EAMA,IAFAK,wBAA2B,OApf3B,kBAEA,QADAT,kCACAnsI,2CAAyDA,QAAOA,IAChE,4CACA,4CAEA,2BA8e2Bz5K,gBAC3BskB,gBAAqBA,gBACrBm1J,KAAYA,eAAiBA,GAAOn1J,2BAA+BA,2BACnE,SAAYm1J,eAAiBA,IAC7B,wBACA2sI,oBAOA,GALAxhS,8BACAA,6BACAA,uCACAA,WACAA,sBACA,OACAA,sBACAA,UACAA,kBACI,mBACJ,YAAakhS,cAAiB5lT,8BAE9B,IADA0kB,yBACAkhS,QAAaA,cAAiB5lT,iCAC9B0kB,yBACAA,eAEA1kB,8CACA0kB,YAMA,mBACA,cAEA,6BAijCA,mBAcA,IAbA,cACAo0J,0BAGAS,IACA,oBACA,+CAJAT,iBAIoCrse,aACpC,GACA,GACA,IAGA82R,4CACAsiV,KAAgBA,yBAA0BA,GAG1C,GAFArsI,sCACAosI,qBACArviB,oCAGA,qEACA,+CACG7pD,wCACH,+CAUA,QANAy5lB,cAEAL,uDAGAphS,sCACA+0J,KAAmBA,SAAUA,4CAC7B,kBAEAF,YACAA,kEACAA,wEACAA,oCACAA,YAEAA,0BAEA,4BACAA,gBA9lCA1B,QAEA,GACA,SAFAzD,OACAsxI,aACA,OAsyBA,mBACA,cACA5sI,YACAv1M,SACAi2M,2BAGA,cAEA90J,UACAuhS,4CACAO,MACApsI,KAEA,SAAY+rI,yBAA0BA,GAEtC,GADA1sI,sCAA4C2sI,qBAC5C7viB,oCACA,WAGA9kF,iBACA,SAAaq0nB,eAAeA,2CAC5Br0nB,oBACA+0nB,8EAEA,6DACA,oBAGAjjV,WACAkjV,wBACAljV,qBACAA,qBACAA,qBAEA6iV,mBACA7iV,oBACAA,iCACAA,mCACAA,2CACAA,4BACAA,oBAEAmhD,cACAo0J,YACAp0J,cACAo0J,YAMAp0J,cACAo0J,YAGA,QACAv1M,WACAkjV,uBACAljV,4BACAA,oCACAmhD,SACAo0J,cAIAv1M,WACAkjV,wBACAljV,oBACAA,qBACAA,qBACAA,qBACAA,oBACAA,0BAEAA,4BACAA,oCACAA,4BACAA,oBACAA,oBACAA,oBACAA,oBACAA,oBACAA,qBAEA62M,SACAb,YACAa,cACAb,cACA2sI,GAIA,kBACAO,yBACAljV,oBACAA,oBACAA,qBACAA,qBACAA,qBACAA,qBACAA,oBAEA98R,uBA74BAignB,QAGA,oBAEA,QADAjtI,UACA+sI,KAAiBA,yBAA0BA,IAC3C,wBACA,cACA,0BACA3sI,OACAA,qBACAusI,gBASA,QANA30nB,4BAEA8of,aACAP,IAFAP,SAEA2sI,SACAO,aACAC,qCACA5sI,2DACA,+BACA,kCACAS,+EACAA,GArBA,CAsBEr2J,IACFm1J,gBACAh2M,UAEA,SAAaA,OAAOA,4BACpB,SAAaA,OAAOA,uBAMpB,IALAg2M,qBACAA,oBACAA,wBACAA,oBACAA,oBACAh2M,KAAaA,OAAOA,uBAUpB,IATAg2M,oBACAA,wBACAA,4CACAA,oBACAA,uBACAA,+CACAA,wBACAA,oCACAA,wBACAh2M,KAAaA,SAASA,2CAEtB,SACA,SAAai2M,WAAUA,IACvB,KAASj2M,gBAAmBA,2CAC5Bg2M,wCAGA,oBACA,WAAch2M,UAAOA,2BACrB0iV,OAAU1iV,GAAKg2M,wBAGf,IADAC,QACAA,UAAcj2M,QAAKA,iCACnB,cAAcA,QAAKA,iCACnBqiV,UACAA,UAGA,QAFAC,UACAC,mBACOD,yBAA0BA,IACjCC,qBACApjW,aAEAyjW,sBACA,QACAL,YACAF,gBAGA,IADAA,eACA,2CAEA,IADApsI,QACAqsI,KAAYA,yBAA0BA,IACtCC,qBACApjW,WAEAyjW,yBACAA,YACAL,YA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rc,CACrB,CADqB,MAChCxxB,IAAW,uDACd,uCAgBA,eAEA,QADAwxB,sBACAgW,IAAgBA,aAAeA,6DAC/B,SAGA,iBAEA,QADAF,aACAG,IAAgBA,eAAgBA,4CAChC,SAGA,eAEA,QADAjW,aACAgW,IAAgBA,eAAgBA,kBAChC,SAGA,eAEA,QADAhW,aACAgW,IAAgBA,eAAgBA,+BAChC,SAYA,kCACAvzL,8BACA7kH,4BACA,iBACA,IACAo4S,GADA/qB,YACA78Q,UACA,UAAgB4nS,UAAa,WAC7BA,WAEA,eACA,wBACA,eACA,+CACAhW,EAIA,eACA,iBACAiW,wFACA,4DACA,aAAgBqL,eAAeA,GAC/B,SAGA,QAFAxL,IACAwL,aACArL,iCACA,IACA,oFACA,cAEA,cAEA,IACA,2DACAH,MAIA9V,wBAEA,SAIA,sCACAhgS,yBACAwC,uDAEA,iBACA,8BACA,kBACA,kKACAszS,eACA,iDAEAA,eACA,4HACA,WACA,CAGA,iBACA,0BACA,SAEA,kEACA,oEAEA,4BAGA,uCACA,MACA,kFACA,kFAEA,OACA,8DACA,8DACA,4DACA,8DACA,gEACA,8DACA,2CAEA,+CACA,iOAAuG,kBACpG,CADoG,MACpGwL,KAEH,aAEA,IACA,QAAarL,iBAAwBA,iEACrCD,+CAK0B,CAL1B,MACGsL,IAAW,IACd,KAASrL,iBAAwBA,iEACjCD,+CAE0B,CAF1B,MACIujB,IACJ,KAAStjB,cAAiBA,qCAG1B,kBAGA,eACA,oFACA,wCACA,kDACA,SACA,0EACA,SAGA,iBAAkE,QAAZH,KAAYA,iBAA0B,SAG5F,eACA,gBACA,sCACA,0BACA,QACAE,kFAA6F,cAAW,KAGxG,OAFA70S,qBACA60S,wCAAiD,YAAUsL,KAC3DngT,oBACA6+R,EADAA,GACA,CAIA,oGACA91R,wFACAN,0DAGAQ,qDAmBA,uHACA,eAEA,mEACA,sBACA0rS,+BACAE,cACA,YAzBA,eACA,YACA/qB,KACAA,+FACA,+EAEAA,sGACA,mEANA,+DAwBA5gR,IAEA,GADA2rS,cACA,OAlBA,eACA,YACA/qB,KACAA,2EACA,kEAEAA,kF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SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,YAGA,eAA6E,yBAA6B,mCAI1G,IA4FAoxI,MA5FAvxI,IAEA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,EACA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAKA5M,IACA,WACA,YACA,aACA,WACA,YACA,WACA,UACA,mBACA,aAGAC,IACA,WACA,YACA,aACA,WACA,YACA,WACA,UACA,mBACA,aAGAoB,IACA,yBACA,kBACA,mBACA,gBACA,iBACA,iBACA,mBACA,qBACA,iBACA,kBACA,sBACA,wBACA,oBACA,yBAOAhB,GAA8B,CAE9B,yFACA,mEACA,sEACA,mEACA,4FAGA,qFACA,8CACA,6CAGA,sFACA,+CAGA,mDACA,+CACA,iDACA,6CAGA,wFACA,iDAGA,uFACA,gDAGA,kFACA,2CAGA,yEACA,kFACA,mFAGA,+EACA,oFAGA,sFACA,+CACA,mEACA,+CAGA,2FACA,oDAGA,6CACA,oFAGA,2EAGA,uDAGA,kDAGA,+CAGA,kDACA,yFAGA,qFAGA,2CACA,+CAGA,mDAGA,8CACA,qFAGA,gDACA,uFAGA,uDACA,oDACA,8FACA,2FAGA,6CACA,oFAGA,4CACA,kDACA,8CACA,yFACA,qFACA,mFAGA,mDACA,0FAGA,yCACA,8CACA,6CACA,kDAGA,4CAGA,wCACA,+EAGA,mEAGA,yEAGA,+CACA,oDAGA,6CACA,uDAGA,wDACA,8FAGA,wDAGA,kEAGA,6CAGA,uEACA,iFACA,mFACA,iFACA,mFACA,kFAGA,kEAEA,kEACA,iEAGA,mBAEA03R,YAGAz2R,IACA6pe,WACAC,kFACAC,4DACAC,+DACAC,4DACAC,sFAEAC,MACAL,qFACAE,+CAEAI,UACAN,gFACAE,0CAEAK,QACAP,iFACAE,2CAEAM,QACAR,kFACAE,4CAEA39F,SACAy9F,mFACAE,6CAEAO,QACAT,+CACAE,4CAEApkT,UACAkkT,qFACAE,+CAEAz5iB,QACAu5iB,8EACAE,yCAqCA,mBACA,IAEA3+S,GAFAtL,EAx/DA,eAEA,QADAhW,aACAgW,IAAgBA,eAAgBA,EAChC,kCACAhW,sBAEA,SAk/DsCx9K,KAEtCyzL,KAEAH,IACAG,eACAA,6BACA4zR,YACA,mBACA,qBAEA5zR,YACA,0BACA,kEACA,mEACA,oEAEA,oBACA,oBACA,oBACA,sBACA,sBACA,2CACA,2CACA,0BACA,qEACAx8S,iBACA,0BAAsCgnmB,wCAKtC,oBACAx1U,wBACAq2B,YACArL,gCACAyqT,gCACAC,gDAMA92I,iBACA5+L,gCACAgrB,gCACAyqT,gCACAC,iDAMAtkT,iBACApxB,gCACAgrB,gCACAyqT,gCACAC,0BAKA,uBACA92I,aACAA,aACAxtK,aACA,8BACA,iDACAA,UACAA,eACAA,uBACAA,eACAwtK,eACAxtK,cACAvG,gBAAyBG,uBAA4BA,6BACrDA,WAGA,QACA2qT,wFACAC,2FACAC,sFACAC,qFACAC,6FACAC,gGACAC,yFACAC,qFACAC,2FACAC,oFACAC,mGACAC,oGACAC,mGACAC,wFACAC,iFACAC,kFACAC,kFACAC,yEACA3sU,oFACA+9L,IACA,gFACA,qEAEA6uI,qFACApxI,yEACAqxI,gFACAC,mFACAC,2FACAC,kFACAC,0EACAC,uFACAC,yEAIA,eACA,yBACA,oDAGA,iBACA,OAAa,UACb,eACA,oBACAriU,SAEA,SAEA,4CACA,aAEA,4BACA,UAAiBu5B,gBAAmBA,wBAAoCA,YAAejY,6CACvF,4DACAxL,SACAE,eAGAF,WACAA,EAKA,eACA,mCAEA+zR,iBAEA,wCACA7pS,kDAEAA,aAAiBA,+BAAoCA,6BACrDA,WAGA,0BAIA,GAHAiW,UACAhrB,wBACAA,yBACA+U,oBAAqC/U,oBAA0B+U,GAO/D,GANA/U,cACAgrB,aACAA,SACAA,WACAqL,mBACA,2EACAr2B,wDACA,wBACAA,sCACA+U,EAmCA,mBACA,OACA,0CACA,sGACA,0BACAz+R,SAEA,iBACA,OACA,0CACA,2GACA,0BACAA,SAaA,iBACA,+WAIA,QACA,2BACA,qCACA,2BACA,mCACA,iCACA,4BACA,yBACA,wBACA,8BACA,+BACA,2BACA,yBACA,qBACA,yCACA,4CAGA0zQ,cAEA,QADAgW,uBACA+U,IAAgBA,cAAuBA,GACvC,YACAgW,6EACA/qB,oDAEA,SAPA,GAUA,eACA,SACAA,QAEA,YAAgB6qB,cAAuBA,GACvC,6BACA,wCACA,8CAGA,SAGA,uBACA,8BACAG,OACAjW,QACAgW,iCAGA,iBACA,YACAA,mCAEA,yBACA,iBACA,2BACA,6BACA,sBACEC,KACF,kCAEAhrB,IACA,gHAAuJ,6BAA4B+qB,KACnL,qHAA4J,6BAA4BA,MAGxL,aAAgBsL,gBAAwBA,IACxC,cACAuoK,iEACA,eACA,cACA,qCACA,gCAEA,oBAAiB7zK,mCAAwCA,6BACzDA,WAIA,QACA,uCACA,qCACA,+BACA,uCACA,+BACA,iDACA,iCACA,yCACA,iCACA,sCACA,yCAGAn6D,IACA,0BACA,6BACA,4BAEA,qBACA,SACA,qCACA,aAAqBylE,cAAeA,qCAA2C,OAAQz6U,SACvF,mDAAkF,cAAam5T,EAC/F6pL,UACA,4BAAqCr7M,cAAgBA,OAErD,OADA6tC,cACApG,aACA,iBACA,yBACA,qCACA,oEACA,2CACA,gFACA,wBACA,0CACA,yBACA,sBACA,2BACA,gBACA,eACA,0BACA,aACAH,gBACAA,gCACA,UAEA,mBACA,wBACA,2CACA,wBACA,uBACAA,iBACAA,kCACA,UAEA,aACA,YACAA,iBACAA,gCAGA+zK,QAyBA,eACA,cACA,iBACA5+L,wBACA+U,eACAA,kCACA6pS,mBACA,mBAGAz0T,uBACA,oBACA,OACA,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sC,cAAU6qB,EAIvF,mBACA,IAEAwL,IAAa34U,EAFbsiT,gBAEaA,EADbA,gBACam4U,QACb,uBAEA,uBACA9hT,cACAr2B,YAMGq2B,wBACH,UAEA,qBACA,oBACAtL,mBACAA,mBACAA,sBACAA,EAgBA,mBACA,mBAEA,OADA/qB,wDACA,CAIA,eAGA,OAFAA,gBACAr/G,MACA,CAgBA,eACA,sBACAkqI,kBAGA,OAAS1oU,GAAG69S,EAFZA,gBAEYtiT,KAAsBxB,GAAK8jT,EADvCA,gBACuCtiT,MAEvC,iBACA,oBACAq3T,uBACAA,uBACAA,uBACAA,uBACAA,EAIA,eACA,sBACA8V,kBAGA,OAAS1oU,GAAG69S,EAFZA,gBAEYtiT,KAAsBxB,GAAK8jT,EADvCA,gBACuCtiT,MAIvC,UAGA,eACAsiT,OACA,sBACA6qB,kBACAE,kBACA,eACA,QAsBA,eAA8B/qB,OAAaA,qBAC3C,QACA,KACA,KACA,KACA,KACA,EAdA,eAEA,cACAA,qBAFA,EAGA,EAWA,KACA,KACA,MACA,MACA,MACA,GA9BA,eACA,SACA,cACAA,QACA+U,8BACA/U,OACA+U,GAyBA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAmBA,iBACA,OAAUqjU,gBAGV,OAFAvtT,2BAAiC9V,OACjC,IAAmB8V,qBAA2B7qB,QAC9C6qB,gBACA,UACA,UACA,UACA,SACA,SACA,SACA,cACA,yDAGA,uBACAA,EAEA,mBACA,gBACA,uBACA,QAImC,IACnC,YALA,IACA,eAA4BG,IAAO,UACnC,YAA4BA,IAAO,UACnC,YAA4BA,IAAO,UACnC,YAA4BA,IAAO,MACnC,QACA,4CAEA,aACA,2BACAqL,oBACArL,6BACAA,4BACAA,MACAqL,wBACAA,oBACAA,uBACAA,qBAEAA,GA2DA,iBACA,wBACAtL,wBACAA,uBACAA,yBACAA,sBACAA,+BACAhW,8BACAgW,gEACA,qBACA,eAAcC,EAwEd,mBACA,QACAH,eACAE,mBAEA,sBAKA,OAJAF,eACAE,YAAyBC,UAGzB,CADA,CAAWqtT,4DACXrtT,GAiHA,qBACA,mBACAD,qCACAA,mBACAA,8BACAC,sBACAD,qDACA,qCACA,oCACAsL,GAEA,UAgBA,mBACA,YACArL,wBACAqL,sCACAuoK,sCACA,aACA,CAASz8e,GAAIzE,WAASxB,GAAMwB,YAgG5B,qBACA,mBACAqtU,mBACAA,mBACA/qB,SACA+qB,+BACAA,yBAEAA,+BACAA,uBAEA,SACA,mCACAA,oBACAA,mBACAC,sBACAD,mBACAA,EAiBA,eACA,aACA,aACAhW,4BACAA,QACAA,EAGA,UAyCA,0BACA,aACA,oBACA6pC,YACAtQ,GAkBA,OAvpBA,mBAAwD,2BAyqBxD,mBACA,IACAtjB,EADAD,kBAEAsL,IACAiiT,aACAC,oBACAC,kBACAC,aACAC,iBACAC,cACAC,gBAEA,2BApqBA,mBACA54U,OAAc+U,KACd,YACAiW,YACAqL,mBAEA,SADAtL,QACA,8DACA,eACAC,EA4pBA6tT,WAEAxiT,6BACA,gCACAA,GAIA,mBACA,YACArL,kBACAqL,mBACAiY,mBACAswJ,kCACAxtK,OACAvG,gBACA,oBACAuG,mBACA,oBACApxB,QAEA,kBACA,gCACA,aAA+B6qB,mBAE/B,4BAk+MA,qBACA,IAEAyjB,GAFAtjB,QACAqL,aAEA,sCACA,QAv+MAw/J,eAEA,OACAijJ,SACAnqnB,QACAoqnB,QACAC,SAKA,mBAGA,GAFAnuT,YAEAA,gDAOA,mBACA,sBACA,gBACA,uCAVAj5C,QAEA,QADAm5C,2CACA,gCAEA,4DACA,SA4BA,mBACA,cAEA,oBACA,QAAqBhW,KAAa,WAClC,gBAA+BA,KAAa,cAC5C/U,OAAwB+U,MAExB,oBA+BA,qBACA,0BACA,0BACAiW,mBACAA,6BACAA,iCACAA,EAyBA,QACA,gBACA,YACAhrB,QACA,sBACAA,OACAA,OACAA,OACAA,OACAA,OACA,sBACA,cACAA,MACA,CAAUi5U,SAwEV,eACA,aACApuT,WACA9V,qBAA0BA,qBAC1BA,qBAA0BA,qBAE1B,QADAgW,+DACAC,IAAgBA,OAAQA,qCACxB,wBAYA,eACA,mBACAH,wBACAA,sBACA,eACAA,qBAA0BA,qBAC1BA,qBAA0BA,qBAC1B,YAAgBG,aAAeA,mCAC/B,0BACAH,EA4CA,mBACA,gCACA,wBACAG,kBACAqL,mBACAiY,mBACAswJ,mBACAxtK,mBACA,eACA,QAAWjvU,gCACX,+CACAohS,GA4CA,UACA3N,MACAC,MAYA,uBACA,oBACAmqB,mBACAA,mBACAA,sBACAA,sBACAA,mBACAA,EAoFC,mCACD3nB,cACA,OAEA,YACA,aACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBACA,mBACA,oBACA,kBACA,kBAGA,cACA,aACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,gBACA,gBACA,gBACA,iBAEA,WAEA08B,MACA,YACA,aACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBACA,mBACA,oBACA,kBACA,kBACA,UA8KA,kBACA,cACAxxB,kCACA,UA9KA,kBACA,UACAm8M,QACA,oBACA,sBAA8C,UAC9C,mBAA+B,UAC/B,aACA,cAEAr2X,SAGA,wBACAwmgB,cACA/wI,YACA,gBACA,OACA,EAEsC,KAGtC,SACA,IACwB,KAExB,UATA,KACA,GAAsC,KACtC,SAAyB+wI,MAAa,MAItC,KACA,UAAwB,MAExB,QAEA,6DAGA,gBACA,6BACAnwI,QACA,6BACAowI,qBAEA,6BACA,wBAEA5/R,qBACA,QACAwvJ,SACAA,iBAIA,+BACAA,QAEAA,SAEA4xI,eAMA,QAHA5hS,YACAmvJ,kDACAG,YACAU,uBAWA,OAVAswI,MACAA,yHACAtwI,SACAswI,8CACA,yCACAA,wBACA,oCACAA,wBACAA,4BACA,wBACAA,aACA,MACAlxI,qEACA,UACA,QACA,IACA1tK,qDACA,UACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,IACA,cACA,gDAKA,GADA,2BACA,qFACAsuK,QAGA,cAEA,IADAn8M,SACA2sV,KAAYA,gBAAoBA,yBAChC,cACA,iBAOA,MAFAxwI,KACAn8M,YAAiB2sV,KACjBA,KAAaA,gBAAoBA,IACjC,sCAA6CxwI,iBAC7Cr2X,SACA,+CACA,wBACA,IAEAkngB,qDACA,UACA,IACA,eACAhtV,sFACA6tC,aAAgC7tC,4BAEhCA,cACA,UACA,qCAAgD,UAChD,gFAAsG,UACtG,wCACA,0BAA2C,UAC3C,0BAA4C,UAC5C,yBACA,+CACO,UACP,IACA,wEACAA,mEACA,UACA,KACAgtV,qCAEA,6BAA4C,UAC5C,IAEAhtV,uDACA,UACA,IACA,4CACA,sBACAA,2CACA6tC,wCACM,UACN,gFAAiG,UACjG,sCAAmD,UACnD,0BAA8C7tC,gCAAkC,UAEhF,6BAA+C,UAC/C,IACA,4CAEA,gEAvDAm8M,SA2DA,0IACA,uDACAtuK,UACA7tC,GAMAsnC,YACA,2CAA2C,OAC3CquT,WACAC,iBAEA51V,OACAm8M,GAYA,QAAc/6O,8BAkId,OACAy0X,YA5IA,kBACA,IACA,uBACA,yBACA71V,EACc,CADd,MACGm8M,IAAW,uBACd,OAAU1iY,0BAuIVq8gB,WACAC,WApIA,mBACA,cACA55I,KAEA,IADAn8M,gCACA,mEACA,YACAssV,UAAsC9njB,+BACtC+2a,2CACAixI,oBACA,SAAYA,eAAoBA,GAChC,iBAAkBoJ,SAAShzkB,KAAU24b,yBAA+B5uJ,QACpE,gBAGA,MAFAA,GACA,sDACA,kGACA,oCAAiD6uJ,UAAOA,GACxD,kCAAqDD,eAAuB,OAE5E,sBACAD,MACAG,MACAixI,MACA,SAAYF,oBAA4BA,IACxC,qBACAvwI,MACA,SAAWT,eAAiBA,GAC5B,sCAEA,+BACA,SAAaA,eAAgBA,IAC7B,0BAEA,gBAAiC,UACjC,SAEgE,QAChEI,aAHiC,IACjC,iBAAkC,UAClC,0CAIAoxI,qGACAL,qBAGAK,iBAGA,MAFApxI,iBAAwBg6I,SAASh2nB,OAGjC2snB,uCAEA,mBACAI,OACAD,sBACAM,mBAEAvxI,qCACAtvJ,WACAmvJ,SA5BiE,MAAnBA,UA4B9C,CAGA,mBAKA,IAJA2xI,4BACAA,4BACAA,4BACAA,qBACAT,KAAUA,OAAOA,uBACjB,gBAOA,IANAS,0BACAxwU,sBACAzc,yEACA5lS,QAGAoynB,UAAmBA,eAAoBA,GACvC,gBACA,oBAEA8B,4DACA70S,4BACAA,gDACAA,qBACAA,wCACAA,4BACAA,oBACAA,oBACAA,oBACAA,oBACAA,oBACA+hK,0BAGA,oBAEA,IADA7wJ,qBACA6hS,KAAUA,QAAOA,uBACjB,SAAUA,eAAiBA,IAC3B,mBAEA,IADA+B,oBACA/yI,KAAWA,eAAkBA,GAC7B,gBACA,mBACA,2DAAyF,UACzF,wCAAuD,UACvD,IACA,WAGA,IAFA,gEACAO,0CACApvJ,KAAiBA,sBAA+BA,wBAChD4hS,4BACA,UACA,IACAR,YAEAQ,qEACAA,oEACAA,gEAJAA,oCAKO,UACP,IACA,YACAyH,0DAGA,IAFAzH,6BACAryI,gBACAvvJ,KAAiBA,QAAWA,wBAAmC,CAK/D,YACA0/R,6BACAA,UAKA,CAhYA,GAoYAl3V,cAEA,OACA8gW,sDACAC,wCACAC,wCACAC,+CACAC,wCACAv7Y,sDACA/sO,wCACAggnB,wCACAuI,+CACA7/V,wCACA8/V,4DACAC,qBACAl+nB,2BACA,kBACA,kBACA,gDACA,yDACA,YAAa,wCAA6C,KAE1Dk5T,0GACA8V,kBAAqC,aAA0B,oCAC/DE,qBAA+C,kDAAwE,wBACvH/qB,WAaA,mBACA,IAIAwwU,GAJAV,mDACAjxI,MACAG,QACAixI,MAAcC,kBACd1wI,KACAhxJ,IAAawrS,UAAYC,WAAWp0U,WAEpC,KADAyrU,gCACSphS,iBAAuBA,IAChCsvJ,KACA,IAEAsyI,GAFA90S,2EACA60S,oBAA8B,iBAAsBrjmB,iBAAqB,mCACzE0/T,SACA,8BACA,SACA,QACA,IAQK,IACL,UATA,IACA,IACA,SAAawB,eAAkBA,MAC/B,MAD+BmiS,kBAE/B,oCAEAvyI,+CACM,CACD,MACL,IACA,IACA,GACA,MADAuyI,gBACAhzI,kCAAqD,MAC/C,UACN,KACA,QAAcq7I,SACd,SAAcxqS,eAAkBA,gCAChC,4BAA8C,UAC9C,4DAEAlB,2BACK,UAGL,IACA,qDACA2rS,MACA,SAAazqS,eAAkBA,gCAC/B,uBAA0C,UAC1C,sCAAuDkiS,MAAiB,UACxE,IAEA,IADA7B,kCAA8C6B,WAC9CpB,aAAyBA,SAAQA,aACjC,UACA,IAEA,OADAsB,oBACApilB,WAAiCoilB,2BAAmCc,QACpE,2BAAkDd,eAAsBc,QACxE18lB,gBACA47lB,UAA2Bc,OAC3B,kCACuEA,oBAAvEd,gDAAuE,eAGvE,4BAA+E,WAA/ER,QAA+EnunB,eAAgCi3nB,8CAC/Gb,MACA,UACA,IACAzoP,MACA6hP,uBAA8Cj1nB,YAC9C,UACA,IACA28nB,MACA,UACA,cACA,sCAAwD,UACxD,sCAAwD,cAGxD,qDASA,GAPAd,KACAvJ,YACWA,gBAAsBA,iBADjCA,YAAiCrynB,WAEjCqhf,uBACA,iEAAyGs7I,yCACzGt7I,SAEAq7I,IACA,qEACA,yBACA,uEACA1H,aAA6Cj1nB,kBAE7Ci1nB,KACA3C,WACAA,gBADAA,YAAiCrynB,aAGjCw8nB,KACAnK,yBAAiCrynB,QACjCqynB,eAAoBhlnB,uBAEpB,UACA,IACA,SACA,SAAa0kV,eAAkBA,gCAC/B,wCAAuDd,GAAU,UACjE,IAEA,IADAmhS,kCACAS,aAAyBA,SAAQA,aACjC,UACA,uCAA6D,UAC7D,QACA,IAGA,IACA,QACA,QACA,UANA,IACA,IACAxxI,oCACA,MAGA,IACA,IAEA,IADAuxI,8BACAC,sBAAkCA,yBAA0BA,GAC5DhxI,sBACAL,iBAAmCp0d,WAAY,CAAGmumB,QAC3C,UACP,IAEA/5I,GADAJ,qCACAI,WACA,UACA,IAEA+wI,GADAH,qCACAG,WACA1wI,MAAoB0wI,cAAuBA,mBAC3C,2BACA,cAGA,qDAEAthS,gBAA2C,cAC3C,sDAGA,qCACAuwJ,8BACAA,wBAAkCo7I,SAClCjJ,gDACA,WAeA,+BACA,cAAaxB,YAAeC,WAC5B,iBACA,IACArgS,YACAovJ,uBAAiC07I,SAAuB98nB,aAAY,UACpE,4BAA6C,UAC7C,mBAAoC,UACpC,2BAAkE,UAClE,uEAA0F,MAAO,IAEjG,UAGA,sBACA,cAAa4znB,YAAexB,WAE5B,WA3LA,aAAsC,0DA2LtC9kT,qBAA8C,cAAa10S,SAC3D,CA4EA,OACA8imB,YA3GA,mBACA,OA7JA,mBACA,oBACA,iCACA,8BACA,+EACA,6BAEA,8CAsJA/iT,QACA05S,2BACArgS,UAAyBA,uBAA0BsqS,cAAgBC,aAAeK,SAClF,iBACA1kf,4BAAiCo6e,gBACjC,iBACA,mCAAiCnxI,gBACjCA,mBACAA,IAmGAy6I,WApDA,sBACAhI,YAAuBA,wBAEvB,IACA5hS,GADAqgS,uBAAmDhxI,MACnD7uJ,kBACA8/R,qBACAnxI,UACAG,cAAuBg7I,cAAcC,aAAaK,SAGlDvK,sBAEA,8BACA,cAAiBG,aAAYA,GAC7B,wBAEA,KADAK,MACApxI,UAAkBA,aAAYA,IAC9BzvJ,8CACAA,MACA6gS,wBAEAA,gCAEA,cAAiBL,aAAYA,GAC7B,wBAEA,KADAK,MACApxI,UAAkBA,aAAYA,GAE9B,IADAzvJ,+CACA,yBACA,IApBA,YAoBAA,qCACA,kCACA,QAAsB4hS,uBAA4B9xI,wBAAiCuwI,cAAiBrgS,kBAAsB,QAC1H6gS,cAAe/wI,SAAc0wI,YAAe/wI,OAE5CoxI,6BAEAxxI,qBAGA,kCACAD,aA/DA,mBACAwyI,2BACA,cAAgBvB,qBAChBD,mBAEA,0DACA,sDACA,mDAEA,2CAsDApwI,iBACAZ,aAnDA,mBACAwyI,2BACA,YACAxB,oBACAA,6BACAA,oCACA/wI,sCA6CA6wI,iBAEAG,eAAmB7/R,uBAA6BA,sBAA6B,yCAC7E6/R,mBAAuB/wI,SAAgB,8BAEvCsyI,YACAvB,sCAKA,CArSA,GAySAr+V,cAUA,kBAEA,QADA6R,yCACSssV,iBAAuBA,GAChC,0BACA,WACA,CAIA,IAJA,gCACAC,kBAEA/wI,QADA8wI,KACA,GACA,mEAEA,OADA9wI,cACA+wI,SACA,EACA,eAA2BhxI,YAAe8wI,KAAO,YACjD,mEACA,WACA,EACA,0BACA,2BACA15lB,cACAA,wBAIA4od,eAHAA,kBACA1tK,aAAgC0tK,4BAHhCA,oBAMA8wI,GAAU,WACV,GAEA7wI,IADAA,4BACAtnd,qBACAsnd,yCACAD,6BAGA,0BA9BuCA,YAAe8wI,KAgCtD,uDACA9wI,GAGA,kBAA6D,UAhD7D,kBACA,oBACA,gCACA,6BACA,8EACA,4BAEA,8CAyC6D9+L,YAO7D,kBAA8D,gCAC9D,gBAAoD,2CAgDpD,OACAo5U,YAxDA,kBACA,uBACA,yBACA71V,IAsDA81V,WACAC,WAlDA,gBAUA,QARA/1V,kBACAm8M,qBACAkwI,IACA,gCACA,+CACA,8CACA,yBAEAC,UAAqBA,aAAYA,IAGjC,QAFA/wI,yBACAwyI,qBACAxB,UAAsBA,aAAYA,IAClC,4BAAkEpynB,aAClE,aACA,iBACA,IAEA,iCACA,2BACA,iBACA4znB,gBADAA,iBAMA,UACA,IACAA,kCACA,UACA,IACAA,wCACA,UACA,IACAvB,2CACAuB,gBAEA,cACAA,gBAEAA,UA1BgD,MAAzBA,mBA0BvB,CAEA1B,YAEA,kCAKA,CA5GA,GAgHApnJ,cACA,eAA4C,wEAC5C,eAA4C,wEA2B5C,kBAA2D,UAzB3D,kBAEA,QADAsW,yCACSixI,iBAAuBA,IAChC,gCACA,kBACA,kBACA,oCAAgDuB,WAAaA,uBAE7D,OADAA,QAAexB,QACf5/R,WACA,wBAA6C,UAC7C,sBAAsC,UACtC,iCAEA,MAEA,OADAA,MACA6uJ,oBACAA,kBAEA,6CAGA,uDACAA,GAG2Dl0K,YAG3D,QACA,yBACA,oBACA,4EACAv0S,WAEAg4T,IACA,qCACA,2CACAh4T,gBAGAsod,IACA,wCACA,cACAtod,WAEA86S,0CAEA,gBACA,6BAIA,QAHAkgT,qBACAvB,kBACAhxI,qBACA7uJ,UAAqBA,aAAYA,GACjC,kBAAsBR,aAAYA,GAGlC,GAFAogS,OAAyBpynB,aACzB4znB,yCACA,uBAEA,QADAxyI,mBACAwyI,UACA,+BAAoD,UACpD,IACAA,MACaxyI,YAAaA,UAAWA,WAAcA,gBAD/BA,UAAWA,YAE/B,UACA,IACAA,0BAAqCA,WAAYA,mBACjDA,qCACA,UACA,IACA,oBACAA,YAAqBA,WAAcA,YACnCA,gCACA,UACA,aAEA+wI,sBAGA,8EACAA,mCAEAA,cAQA,OACAuJ,YAhEA,kBAA6D,wBAiE7DC,WACAC,WARA,gBACA,0CAOA,CAhGA,GAoGA3gW,cACA,2BACA24V,qBACA,UACA,0BACA,2BACAp7lB,cACAA,wBACA05lB,cADAA,kBADAA,mBAgCA,OACA,OACA,OACA,OACA,SAIA7kT,GACA,KACA,IACA,KACA,OAGA,eAEA,QADA6kT,MAAcC,gBACP/wI,eAAiBA,GACxB,mCACA+wI,oCAIA,UADAyB,MACA1B,gDACA0B,qBAGA,cAEA,UADA1B,KACA9qmB,6CACAwsmB,qBAIA,+BAA2B,wCAE3BzmT,mBAGA,mBACA,cACAi0K,MAEAwyI,MACAzB,2BACA,QAA0B1tnB,GAAI69S,SAAS9jT,GAAM8jT,UAE7C,sBAEA,4CACA8+L,gBAAyBY,gBAGzB,4CACAZ,gBAAyBY,gBAEzBZ,uBAEAA,mBACA9zK,oBACA,mBACA0kB,6DACAyvJ,mBA3xOA,eACA,iCACA,gCACAv1W,eACA,sBAuxOAO,iBACA,cAEA,uBAAkC,wCAClC,UAGA,GAFA,wFACA,2BACA,+BACA0lf,OAAoBW,SAAcA,gBAClC,qBAAoCA,SAAcA,gBAClD,qBACA,sDAAwEA,SAAcA,wCAygItF,eACA,mBAzgIAvkJ,MAA4BukJ,SAAcA,mBAC/BA,SAAcA,iBACzB,WAA0BA,SAAcA,gBACxC,YAA2BA,SAAcA,gBACzCt6lB,iBAAoD,IACpDA,gDAEA,GADAs6lB,uBACArxI,kBAA6B,OAxyO7B,mBACA,uCACApqL,yCACA,4BACA,uCACA,SAAoB,UAAO,UAAiB,UAC5C,UAAoB,UAAO,UAAiB,UAC5C,gBAA+BiW,KAAY,GAG3CphM,eACAwnM,sBAAmCwtK,KAAO5zK,MAC1C,0HACA,0BACA,2BACA,yGACA,iCACA,uBACAznC,UAsxO6BnrQ,+BAAsD83T,UAAqB2/R,kCACxGA,2BACA,+CACAA,cAAsBW,SAAcA,UACzBA,SAAcA,aACzBX,4BAEAW,SACAA,aAXsCA,SAAcA,QAmBpD,GANA,YACAX,UAAsByB,sCAAyCA,wBAC/DA,OAAwBtxU,aAAQwwU,IAChC9gS,QAAkBwgS,qBAClBJ,uBACAA,uBACAG,oBAA+BlxI,OAAOgxI,GAAKF,wCAE3C3znB,OAAc8znB,eAAiBA,qCAC/B,qBAAmD,WACnD,GACA,YACA,mCAEAnxI,gCAGA,qBAEAyyI,kBACAA,GAGA,mBAIA,OAHA1B,aACAA,OACA,uBACAlwI,0DAAsE,YACtEn+R,GAlJA,kBACA,cACAu9R,MACA,gCAGA,QAFAwyI,sBACAxB,eACAA,+BAGA,QAFAC,WACA7/R,KACQA,SAAQA,IAEhB,IADA6uJ,wBACAA,iBAAwCA,KACxCgxI,mBAEA,SAAa7/R,SAAQA,IACrB4uJ,UAEA,SAEA,IADA9+L,yCACA0vC,KAAcA,8BAAuCA,GACrD1vC,0DAEA,mDACA8+L,GA2HA/pL,YAGA,mBACA,mDACA,oBACA,kBAA0C,UAC1C,SAMkC,IAClC,eAA2B,MAPA,IAC3B,SACA86T,0CACAD,uDACA3jnB,oDACA,UACA,kBAAkC,MACP,QAC3B,8CAKA,OAHA,sDACA,mEACA,sGACA,kFACAqiV,UAwBA,OACA8qS,YAtBA,mBAA8D,yBAuB9DC,YACAC,WAtBA,gBAIA,QAFAx6I,GADA8wI,MACAC,kBACAyB,qBACAxB,UAAqBA,aAAYA,IAEjC,QADAC,MACAhxI,UAAsBA,aAAYA,IAClC,WAA6Brhf,YAE7B,IADAohf,yCACA,YAEA,QADApvJ,yCACAA,sBACAqgS,2BAHyD,MAAvBA,qBAGlC,CAEAH,qBAEA,sBAMA,CA7MA,GA+NA,kBACA,qBACA,MACA,gBAEA,QADAhhS,eACAgkS,iBACA,wBACA6H,qBACAt6I,oBACAC,WACAC,wBAEA,GADAuyI,QACAuH,sBAeA,OACA,OACA,cACA,SACA,WACA,IACA,QACA,iBACA,cACA,aACA,QACA,WACA,SAGA,kBACA,iBACA,cAEAvrS,MAA2ByB,uBAC3B+vJ,MAAiBC,kBACjBN,8BAEA,QAAkB59e,GAAIzE,SAASxB,GAAMwB,UACrCgjf,mBACAg6I,MAEA,0CAq6BA,mBACArxgB,SACA,cAEA,UAAsC02X,2BACtC,gBACAK,IAAej+e,GAAGzE,WAAUxB,GAAKwB,YACjC2if,oBACAK,IAAa1jY,yBACb09gB,MACAx+nB,wBACA,4CACA20V,0BAEA,OADAxnO,SACA0pgB,SACA,EACA,oDACA,WACA,eAEA,EAcM,KAGN,UACA,KASM,KACN,KAyGM,QAEN,MAvIA,KAEA,GAGA,QAFA4H,oBACA7H,yBACA8H,KAAuBA,QAAaA,IACpC,eACA/H,MACAhiS,QACAgiS,6BACAH,wCACA7hS,QACA6pS,YAEM,MAIN,KAEA,KAEA,IADA7pS,SACAA,gBACAwvJ,oBACAE,oBACAlwJ,kCAEM,MAOA,KAEN,KACA,wBACAzB,MAAuBmxJ,2BACvBK,wBACAA,wBACAA,wBACAA,wBACAvvJ,QACAA,mBACAwvJ,oBACAE,oBACAk6I,sCAEAA,gBAEM,WACN,KAEA,mCACAr6I,+BACAA,+BACAxxJ,kBACAisS,aACM,WAEN,KACApoP,oBACA2tG,uBACAA,uBACAK,oBACAL,uBACAK,oBACAL,uBACM,WAEN,KACAK,wCACAL,uBACAA,iCAEA,QADAY,UACAnwJ,iBACA,QAAmBlzV,OACnBujf,0BACA,8BACA,kCACA,mBACA,OACA,aACA,MAAwBvjf,0BAA8B,WACtD,MAAwBA,8BAAmC,WAC3D,MAAwBA,gBAAgC,WACxD,MAAwBA,8BAAmC,WAC3D,MAAwBA,mCAA8C,WACtE,MAAwBA,8BAAmCkzV,QAAiDA,QAAa,cACzH,4CAEA,sBAA8C55F,qBAC9C,SACA,4BACA,EAC6C,KAC7C,sBAAwC,MAFA,KACxC,0BAA6C,MACL,QACxC,oDAEA,6BACA,cACA,0CACAoqP,cAAqCA,oCAErC,mBACAzyJ,sCACAA,wBACSA,iBAGT,MADA6xJ,KAAWJ,GACX2yI,iBACA,4BACA,MAAyBr1nB,uBAAwC,WACjE,OAAyBA,wBAAwC/B,uBAAuC,WACxG,MAAyB+B,0BAA+C,cACxE,0DACS,mBACT,MAAyBA,OAAU,WACnC,MAAyBA,0BAA8B,WACvD,MAAyBA,mCAA8C,cACvE,uDAGAoif,2BACA,mBACAnxJ,sCACAA,wBACUA,oBAEV6xJ,KAAYJ,KAOZuyI,SAEA,UApkCAD,QACA,cACA,qBACAC,2FAIA,YACA7yI,WACA//L,wBAAyC,gBACzC,EACA+/L,WACA46I,uBACA,WACA,IACA56I,WACAA,YACA,WACA,QAA+B,WAC/B,gBAAqC,WACrC,UAA6B,WAC7B,QACA,KACAA,mFACAA,mEAEA,QACA,QACA,GAEA,gDACA46I,2CACA56I,eAAwB46I,oBAA8BA,2CAGtD56I,SACA46I,WACA/rS,kBACAwxJ,UACAC,YACAzxJ,MAAyBmxJ,8BACzBU,IAAmBt+e,GAAIzE,SAASxB,GAAMwB,UACtCyif,SAAsB9vJ,sBAAoCoqS,OAI1D,yDACA,OACA35I,aAA4BA,aAC5B,8BACA,8BACA45I,MACA,MAEA36I,UACAttG,8BACAA,4BACO7jD,oBACP8rS,SACA,WACA,mBAAkC,WAClC,MAEA,WACAA,gBACA36I,0BACA26I,cAAyCA,qCAGnC,EACD36I,YACD,qBAuCA,iDAtCJA,WACA,YAAsBA,WAAe6yI,QACrC5yU,wBAAyC,gBACzC,UAAwB,WACxB,GACA26U,qDAEAA,8CAA0D,kDAAsDljmB,2BAEhH,QACA,QACA,QACA,QACA,QACA,GASA,GARAkjmB,WACA/rS,kBACAwxJ,UACAC,YACAzxJ,MAAwBmxJ,8BACxBU,IAAkBt+e,GAAIzE,SAASxB,GAAMwB,UACrCyif,SAAqB9vJ,mBAErBqwJ,wBACAX,UACAttG,8BACAA,4BACO7jD,oBACP6xJ,iCACAA,iCACA,WACA,GACAk6I,wCACA,WACA,KACAp6I,gBAAiCo6I,sBACjC,EACK56I,GACD,CAIJ,GAHAnxJ,kBACAwxJ,cACAC,iBACAE,iBAAiCvjY,yBAGjC,QAFA+1gB,MAAkBpyI,MAElB9vJ,KAAiBA,eAAsBA,eACvC8vJ,wBACAoyI,oCAEApyI,gBACAoyI,YAA8B,cAE9B,OAAW/1gB,yBAqJX,sBACA,SAAYgjM,SAAQ,CAAGriT,WAAU,KACjC,gCACAixV,yBACAA,uBACAA,yBACAgkS,SACI7yI,UACJnxJ,yBAAgCA,yBAChCA,yBAEAA,uBACAA,yBAAgCA,0BAEhCA,GAGA,gBAEA,sBACA,2BAEA,IAgBA,sBAEA,uBACAA,sBACAA,qBACAA,qBACAA,qBACA,aAAiByB,eAAcA,IAC/B,yBACAzB,gCAEA,2BACAA,GAoBA,sBACA,aACA,gCACAA,qBACAA,qBACAA,2BACAA,GAQA,sBACA,cACA,gCACAA,qBACAA,qBACAA,2BACAA,GAiBA,sBACA,gBACA,OACAurS,eADAA,aACA,mBACAvrS,8BAOA,QACA,YAEA,aACA,eACA,cACA,aACA,YACA,YACA,aACA,aACA,aACA,eACA,cACA,cACA,cACA,aACA,aAEA,cACA,eACA,eACA,cACA,cACA,cASA,eACA,cAIA,kBACA,gBACA,aACA,eAEA,aACA,cAMA,cACA,mBACA,iBACA,eACA,eAkBA,gBACA,gBAIA,iBAEA,eAEA,aAGAowJ,IACA,wBACA,gCACA,8BACA,0BAmEA,gBACA,SAAYh/L,SAAQ,CAAGriT,WAAU,GACjC,gCAA+Bw8nB,iBAAuBA,mBACtDA,GASA,yBAEA,uBACA9pS,qBACAA,qBACAA,qBACAA,qBACA,aAAiBoqS,eAAcA,IAC/B,yBACApqS,gCAEA,2BACAA,GAuBA,mBACA,cACAzB,oBACAyB,oBACAoqS,oBACA,aACA,gCAAuC16I,YAAcA,YACrD,yBAA4CA,YAAcA,YAC1DA,UACAA,GAEA,gBAAsB,2BACtBA,0DACAA,GAEA,yBACA,cAIA,GAHA1vJ,qBACAA,qBACAA,qBACA,MACA,2BACAA,oBACAA,wBACAA,GAEA,sBACA,cAAcoqS,KAAO7rS,QACrBuxJ,mBAGA,gBADAE,IADAzxJ,yBACA,QACmCuxJ,GAAKE,IAAXzxJ,SAAW,GACxCA,OACAyxJ,eACAA,QAEAD,IADAxxJ,sBACA,EACAyB,qBACAA,qBACA8vJ,uBACA9vJ,qBACAA,GAgBA,mBACA,cACAzB,wBACA,kBACAmxJ,GASA,mBACA,oDAiCA,mBACA,uBACAA,uBACAA,qBACA,aAAiBnxJ,eAAiBA,IAClC,yBACAmxJ,wBAEA,oBACAA,GAGA,QACA,GAA0Bnye,cAC1B,GAA0BA,SAC1B,GAA0BA,cAC1B,GAA0BA,eAC1B,GAA0BA,WAC1B,GAA0BA,UAC1B,GAA0BA,YAxd1B,sBACA,QAAWzL,GAAG69S,SAAQ9jT,GAAI8jT,UAC1B,uBACA4uC,wBACAgkS,OACAhkS,wBACAA,wBACAgkS,OACAhkS,wBACAA,KAEAA,wBACAA,wBACA,2BACAA,wBACAA,wBACA,2BACA,+CACAA,MAucA,GAA0BhhV,aAC1B,GAA0BA,WAC1B,GAA0BA,YAC1B,IAA0BA,WAC1B,IAA0BA,UAC1B,IAA0BA,WAC1B,IAA0BA,cAjY1B,sBACA,mBACA,oCACAghV,KA+XA,IAA0BhhV,aApX1B,sBACA,mBACA,oCACAghV,KAkXA,IAA0BhhV,YA5a1B,sBACA,eACAyiV,eAEA,GADAA,YACA,wBACAuiS,OACA,wBACA,wCACAviS,GAEA,uBACAA,sCACAA,KAiaA,IAA0BziV,cAxW1B,sBACA,eACAyiV,eAGA,GADAA,6BACA0vJ,oBACA,CACA,yBA6GA,mBACA12X,SAEA,QADA02X,mCACA6yI,iBACA,kBACA,gBACA,gCAAkD,WAClD,EACA6H,mCACApqS,mCACA0vJ,eACM,WACN,EACA,uCACAttG,mCACAgoP,mCACApqS,mCACA0vJ,yBACM,WACN,EACA,kBAA4E,YAA5C3rd,2CAChC,WACA,4BAAgD,WAChD,4BAA6C,WAC7C,EAEiB,QAAjBqsd,MAAiBJ,2CACjBN,uCACM,WAEN,wBAA0C,WAC1C,yBAA0C,WAC1C,gCAAmD,WAEnD,WACAK,YAAuBD,YACvBJ,+CACM,cAGN,iBACAK,YAAwBD,YACxBJ,+BACOlB,OAQP,kEACAwB,4DACAA,4DACAA,0EAEAjsd,0DAVA,GADA,KADAw6T,gBACAA,eACAA,aAAwH,YAA1Fx6T,gFAC9B,qBACA2rd,cACAA,uCAOA,GAGA,8BACA3rd,2DAxKA67lB,4BACA2C,SAEA,YA8VA,IAA0BhlnB,WAC1B,IAA0BA,YAC1B,IAA0BA,YAC1B,IAA0BA,YAC1B,IAA0BA,YAC1B,IAA0BA,aAC1B,IAA0BA,YAC1B,IAA0BA,aAC1B,IAA0BA,YAC1B,IAA0BA,YAC1B,IAA0BA,YAC1B,IAA0BA,WAC1B,IAA0BA,aAC1B,IAA0BA,cAC1B,IAA0BA,YAC1B,IAA0BA,aAC1B,IAA0BA,WAC1B,IAA0BA,YAC1B,IAA0BA,eAC1B,IAA0BA,iBAC1B,IAA0BA,eAC1B,IAA0BA,YAC1B,IAA0BA,aAxa1B,sBACA,eACAyiV,eAEA,GADAA,YACA,gBACA,wBACA,wCACAA,GAEA,6CACAA,KA+ZA,IAA0BziV,cAC1B,IAA0BA,YAC1B,IAA0BA,WAC1B,IAA0BA,eAC1B,IAA0BA,WAC1B,IAA0BA,eAC1B,IAA0BA,YAC1B,IAA0BA,eAC1B,IAA0BA,UAC1B,IAA0BA,cAC1B,IAA0BA,YAC1B,IAA0BA,YAC1B,IAA0BA,WAC1B,IAA0BA,WAC1B,IAA0BA,WAC1B,IAA0BA,YAC1B,IAA0BA,WAE1B,KAA0BA,eAC1B,KAA0BA,eAC1B,KAA0BA,aAC1B,KAA0BA,eAS1B,KAA0BA,sBAE1B,KAA0BA,kBAnH1B,mBACA,kBACAmye,mBACc,QAAdnxJ,MAAcA,kDACd,YAgHA,KAA0BhhV,cAC1B,OAA0BA,gBAC1B,OAA0BA,OAG1BisnB,IACA,GAA0BjsnB,SAC1B,GAA0BA,SAC1B,GAA0BA,cAC1B,GAA0BA,aAC1B,GAA0BA,eAC1B,GAA0BA,kBAC1B,GAA0BA,iBAC1B,GAA0BA,iBAC1B,GAA0BA,kBAC1B,GAA0BA,eAC1B,IAA0BA,iBAC1B,IAA0BA,eAC1B,IAA0BA,gBAC1B,IAA0BA,cAC1B,IAA0BA,kBAC1B,IAA0BA,eAC1B,IAA0BA,iBAC1B,IAA0BA,eAC1B,IAA0BA,iBAC1B,IAA0BA,QAC1B,IAA0BA,aAC1B,IAA0BA,YAC1B,IAA0BA,cAnQ1B,mBACA,cACA,mBACAmye,mCACAA,KAgQA,IAA0Bnye,mBAC1B,IAA0BA,eAhP1B,mBACA,cACAmye,yBACA,kBACA,aACA,kBACA,iBAAiC,WACjC,iBAAgC,WAChC,gBAA+B,WAC/B,iBAAgC,WAChC,iBAAiC,WACjC,iBAAkC,WAClC,gBAA+B,WAC/B,gBAGA,kBACAA,KAgOA,IAA0Bnye,gBAjL1B,mBACA,cACA,mBACAmye,KA+KA,IAA0Bnye,eAC1B,IAA0BA,cApI1B,mBAEA,QADAmye,MAAYnxJ,WACZgkS,UACA,wBACA,aAGA,IAFA7yI,cACAA,2BACA6yI,UAA0B7yI,yCAA+C6yI,OAAYA,QAIrF,YA0HA,IAA0BhlnB,iBAC1B,IAA0BA,iBAC1B,IAA0BA,iBAC1B,IAA0BA,SAC1B,IAA0BA,aAC1B,IAA0BA,WAC1B,IAA0BA,iBAC1B,IAA0BA,QAC1B,IAA0BA,eAtL1B,mBACA,cACAghV,oBACA,qBACAmxJ,KAmLA,IAA0Bnye,QAC1B,IAA0BA,mBAC1B,IAA0BA,gBA3K1B,mBACA,cACA,mBACAmye,KAyKA,KAA0Bnye,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,sBAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,KAA0BA,QAC1B,MAA0BA,kBA7N1B,sBACA,qBACA,yBAKA,OAJAglnB,SACAA,QACAA,QAEA,IADAA,4BACA,IAuNA,MAA0BhlnB,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,MAA0BA,QAC1B,OAA0BA,QAC1B,OAA0BA,QAC1B,OAA0BA,QAC1B,OAA0BA,QAC1B,OAA0BA,OAI1B8knB,IACA,cACA,WACA,WACA,aACA,oBACA,iBACA,iBACA,cAEA,UACA,oBACA,iBACA,sBAEA,+BAqKA,OACAoI,aAz8BA,kBACA,cAEA,IADA/6I,gCACA,mEACA,YACA1vJ,kBACAoqS,qBACAt6I,MAEAvI,QA0EA,gBACA,aACA,4BACAuiJ,GA7EA7rS,QACAspJ,QA+HA,gBACA,aACA,gCACAuiJ,yBACAA,yBACAA,yBACAA,GArIA52V,MAEA,QADA68M,yBACAC,UAAyBA,aAAgBA,iBACzC,kBAAyBE,SAAYA,IACrC,cACA,cAAsBF,aAAgBA,IACtC,kDACA,iBAEA,iBACA,KACA,gEACAzI,uBACA,UACA,IACA,iBACA,oDAAiGj6e,6BACjGi6e,mBAAuDj6e,6BACvD,cAGAi6e,kBADAjyN,OACAnuQ,iBAKA,gBACAo3U,UAq6BAmsS,YAl6BA,mBACA,cAEA,IADAh7I,gCACA,mEACA,YAEAnI,QA2CA,gBACA,cACAuiJ,uBACAA,oBACAA,oBAEA,QADAp6I,eACA06I,KAAiBA,0BAA0BA,IAC3C,yBACAr6I,iBACA,kBACA,MACA,sBACAL,uBACAnxJ,wBAEA,0BACAurS,qBACAA,qBACAA,qBACAA,oBACAA,oBACAA,oBACAA,oBACAA,oBACAA,oBACAA,GApEAv7I,MAEA,kBAA0BvuJ,0BAA0BA,sCAA0C,8CAE9F,SACA,SAAaA,0BAA0BA,IACvC,oCACA,kBAKA,SAJAgwJ,kBACAE,qBACA9tG,MACAguG,yBACAC,UAA0BA,SAAYA,GAEtC,QADAg6I,UACA3H,UAA2BA,aAAgBA,IAC3CryI,6BACA,iBACA7vJ,uCACA,iBAEA,aACA+mJ,gCACO,CAGPA,qBAFAjyN,OAEAnuQ,kBAIA2oe,IAGA,gBACAvxJ,UA43BAwqS,YAhnCA,kBACA,oBACA,oCACA,iCACA,aACA,wBAEA,kCAymCA,CAhoCA,GA+uCA,kBACA,0BAEA,eAEA,mBACA,cAAiBz7nB,YAEjB,QAAqBA,mBACrByzU,eACA,iBArHA,eACA,SAAcvG,kBACdG,KACA,UAAYD,cAAaA,GACzB,gBACA,sCAGA,gBAGA,oBAGA,UACA,qBAEA,eACA,uBAAsC,UACtC,sBAGA,WACA,qBACAhW,4BACA,UAGA,WACA,qBAEA,gBACA,yBAAwC,UACxC,uBAGA,uBAAqC,UAGrC,kBAAgC,UAGhC,UACA,qBAEA,eACA,uBAAsC,UACtC,sBAGA,KACA,iBACA,mBACA,yBAA0C,UAC1C,8CAA+D,UAC/D,8CAA+D,IAG/D,UACA,aAA4B,UAC5B,iBAGA,KACA,yBAEA,UACA,aAA4B,UAC5B,iBAGA,KACA,yBAEA,UACA,aAA4B,UAC5B,iBAGA,SACAshB,oCACA,UACA,kDAGA,0BAAwC,UACxC,qDAGA,6BAA2C,UAC3C,wDAGA,cACA,+CAGA,mDACA,YAA6B,UAC7B,cAAgC,cAEhC,oFAGA,SAaAp9C,SACA2lN,GAEA,yCACA,oBACA,4DAA6E,eAf7E,GAqBAllN,cACA,mBAyBA,cACA,mBACA,YAEAsxC,KA5BA,oBACA,UAEAA,4CACAA,oDACAA,uCACAA,4CACAA,wCACAqL,0CAEArL,MAAeqL,eAAmBiY,iBAClCtjB,MAAeqL,eAAmBiY,iBAClCtjB,WAAoBqL,eAAmBiY,iBAEvC,oBACA,8CACA,4BACA,SAAoBjY,oBAA+BiY,sBAEnDA,mBACAtjB,EAQAH,kBAEAwL,wDAJA,GAOA,oBACA,2BApCA,GAyCA45J,sEACAn2M,kDACA,iBACA,qBACAixC,KACA,UAIA/qB,kCACA+qB,wEACAA,UACAF,kBAGA7qB,cACA+qB,UACAA,wEACAF,sBAIAE,GAjBA,CAAiBptU,MAqBjB,wDACAs8R,gCACAyuM,iCAiBA,0BAgEA,OA/pLA,iBAEA,SAAoB,iBAAiB79J,KAAc9V,uBACnDA,mBACArzG,UACAmpH,oBA4pLA,eACA,WACAxlD,SAXA,iBACA,oBACA0vC,yBACAA,0BACAA,EAOA16B,KACA,YAAgBwwC,aAAgBA,oBAEhC,iBACA9V,QAEA,eACA,yCAEA,QADAA,mBACAgW,IAAgBA,aAAeA,0BAC/B,SAIA,iBACA,SACA,+BACAF,wBAEA9V,iBACA8V,EAcA,cAOA,QANA9V,kBACA8V,UACAE,KACAC,kBACAqL,GAAuC,GAEvCrL,iBAA+BrtU,6CAG/B,GAFAotU,8BACAA,WACA/qB,+DACA,SAkCA,eAEA,MAdA,eACA,SACA,uBACAA,OACA+U,4BACAA,8BACAA,YACAA,YACAA,YACAA,EAKA3+C,IAKA,GAHA2+C,gCACAA,wBACAA,wBACA,0DACA,SAIA,iBACA,YACAgW,KACAA,2BACA/qB,OACA+qB,wBACA,SACA,qBACA,0CAAoE,WACpE,mBAA0C,WAC1C,yCAA2E,cAC3E,mDAEA,yDACA,mCACAA,0BACAA,+BACA/qB,OACA+qB,2CACA/qB,MACA+qB,EAIA,iBACA,SAAWA,QACX,cACAF,2BAAyC7qB,QACzC6qB,+BAA6C7qB,QAC7CA,gBACA6qB,8BAA2C7qB,MAC3C6qB,EAeA,eAEA,WADA7qB,iBACA,2CACA,sBAIA,OAAUriT,UAFVu4Q,QAEUt6Q,EADVi6Q,mBACU,CAGV,cAA8C,mEAE9C,eACA,mHACAmqC,OACA,wCACA+qB,KACA,iCACA,cACA,sBACA,YACA,kCAG+D,IAC/D,mBAEwC,IACxC,wBAPA,IACA,kCAAkDA,eAAiB,UACnE,wDAAmEA,2CAA6C,UAChH,iDAA+D,MAC/D,IAEA,6BAAwC,MACxC,IACA,gCAAyC,cACzC,eAGAA,EA2BA,eACA,MAEAsL,GAFAthB,IACAgW,QACAC,aAIA,KAFAH,QACA,YACAwL,KAAYA,QAAUA,iBACtB,WAAgBA,QAAQA,GAKxBthB,IAHA,kBACAA,YAFA8V,MAMA,eAIA,kBACA,4DACA9V,0FACA8V,8lBAEAG,kBAAuC,OADvC,aAA4B,yBACWD,SAavC,oBAKA,QAJA6zK,UACAxtK,GAdA,aAGA,QAFAwtK,kBACAxtK,OACA7tC,eAAiCA,QAAQA,GAEzC,QADAm8M,UACAkwI,KAAkB,QAAQA,GAC1B,mBACAlwI,QAAetuK,GAGf,UAIAiF,KACA9yC,aACAm8M,SACAkwI,KAAiB,SAASA,YAC1B,aASA,IARA,YACAC,SACAnwI,oBACAn8M,GACAssV,UACA/wI,mBACAY,iBAEAn8M,MAEAssV,SACAnwI,KAFAn8M,IAEAynC,aAEA6kT,UACAnwI,KAFAn8M,IAEAynC,aAIA,IAFAznC,MACA+tV,gBACAA,MACAzB,SACAnwI,qBAEA4xI,GACAzB,UACAnwI,KAHAn8M,IAGAynC,eACAznC,KACA+tV,GAEA,WArDA,GAyEA3+I,eACA,gBACA,mBACA,MAlBA,oBAIA,UACA,IAHA3nK,SACAD,aAEAsL,KAAgBA,eAAsBA,GACtCiY,SAEAA,SADAA,WACA,SACAtjB,WACAH,EAEA,cAMA74C,WACA,cACAg5C,OAcA,mBACA,YAAmB,8BAA6BhrB,OAChD,kBA5HA,eACA,SACA6qB,kCACA,kFACA,+BACA9V,qCACAA,yCACAA,EAqHA/xC,IACA+nD,OAzIA,iBACA,SACAA,kCACA,GADoEhW,KACpE,wEACA,qFACA8V,wBAA+B9V,KAC/B,sBAA8B,YAC9B8V,2BAAwD9V,KACxD8V,6BACAA,EAgIAmwT,MACAjwT,EAuBA,iBACA,YACAA,KACAC,UACAA,IACAD,eACA,0CACA,OACA,qCACA,QAAgB5oU,GAAK69S,SAAY9jT,GAAO8jT,oBACxC4+L,MACA,kCACA5zK,IACA4zK,sBAMA,QAHAixI,GAFAnwI,kBACAkwI,KAEA9wI,MACAwyI,MACA,yBACA,8CAKA,OAJA,uBACAxB,gBACAA,WACAwB,YACAzB,WACA,SAEA,KADA/wI,GACAwyI,WACA,QAAyB11nB,qBACzB,6BACAm0nB,kBACAA,UACc75lB,kBACd65lB,UACA,iBACAA,WACAA,eAEA/kT,EACA4zK,UAEA7zK,MAA+BrtU,aAAYqynB,GAE3CuB,MACA,UACA,QACAA,cAGA1B,gBAEA9wI,YACAxwJ,aAEAvjB,iBACAA,EAEA,iBACA,SAxEA,iBACA,mBACA,SACA,sBACA,SACA,mBACA,SACA,kEACA,QACA,mBAEA,6CA6DAqxK,SACA,wBACAvxK,EAiCA,eACA,gBAAkB,OAAM9V,uCACxB,6CAqCA,iBACA,kBACA,MApCA,eACA,qCACAiW,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qBAynU,GArBAxsS,IACA,OACA,QACA,aACA,WACA,YACA,iBACA,eACA,WACA,SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,YAIAniG,MACA,iBACAknE,cACAynU,gBACA,wBACA,gBACAznU,mBACA,QACA,SAMA,IAJA7xH,IAAkBohG,QAAOywB,GAEzB7xH,IAAkBohG,QAAOywB,GAEjBgW,OAAQA,yBACb,CACH,KAAQA,MAAOA,qBAEf,KAAQA,OAAQA,qBAUhB,qCAWA,mBACAF,cACAA,sBACAA,+BACAA,mBACAA,mBACAA,mBACAA,mBACAA,mBAEA,uBADA,GAEAA,mBACAA,mBACAA,mBACAA,EAIA,iBACA,qBACA9V,mBACAA,mBACAA,mBACAA,mBACAA,EAGA,UA2IA,eAIA1vC,YAHA,IAIAA,QA/IA,iBACA,qBACA0vC,mBACA0nU,QACAA,QACAA,QACAA,QACAA,QACA1nU,8BAuIA2nU,IAEAr3W,UAuBA,eAGAA,YAFA,IAGAA,QAhKA,iBACA,qBACA0vC,wBACAA,mBACAA,8BACAA,mBACAxD,iBACAwD,8BAyJA4nU,EACAC,OACAC,YACA12kB,iBAGAk/N,UAWA,eAGAA,SAzKA,mBACA,eACA,0BACAksC,QACAA,QACAwZ,8BAoKA+xT,CAFA,EAEA,0CAEAz3W,UASA,iBACA,WACA,iBA/GA,iBACA,KACA,SACA,qDAEA,eAAoB2lD,UAAWA,oBAG/B,OACA3lD,gBACA,qDAEA,eAAoB2lD,UAAWA,oCAE/B3lD,YAkGA03W,UA/FA,eAIA13W,YAHA,IAIAA,YACAirE,MACAzjQ,OAAU6vT,SACVv2V,eACA62kB,SACAC,kBAGA53W,UAmFA6yH,IAhFA,eAIA7yH,YAHA,IAIAA,YAAuD63W,sBACvD73W,YAAuD63W,yBAEvD73W,UAyEA83W,IACAC,MA7DA,eAEA/3W,YADA,IAEAA,YACAsvW,WACA0I,SACAC,SACAC,YACE,QAEFl4W,UAoDAm4W,IAjDA,iBACAn4W,uBACA0vC,sBAA4B1vC,mBAE5BA,UA8CAo4W,cACAlzJ,MA/BA,eAGAllN,YAFA,IAIAA,UA2BA6kN,IACAO,MAGAplN,UACAwlD,QAGA,QACA,4CACA,6CACA,6CACA,8BAGA,mBACA9V,6BACA,UACA/U,wCACA,aACA,kBAEA,8CAGA,aACA+qB,aAAuB,UAGvB,YACAA,iBAA2B,UAc3B,6BACA,6BACA,6BACA,6BACA,qCACA,qCACA,qCACA,qCACA,qCACA,qCACA,iCACA,mCACA,uBACAhW,+CACAgW,MAEAA,qCAEA,cAEA,sEAMA,eAGA,eAEA,oDACAgiK,kDACA9C,gDAqBA,4DAGA,mBAEAjqL,2BAEA,MACA+qB,KAGA,wEACA,OA9BA,mBAGA,MAFAhW,mBAIA,CAEA,oBAEA,qBAEA,qBACAjxT,oBACA,0EACAknU,cAgBAgmB,WACAjmB,QACAA,EAGA,iBACA,qCACA,0CACA,WACA,mHACAF,gCAEAA,0CACAA,2EACAA,uEACAA,uDACAA,uDACAA,+DACAA,+DACAA,+DACAA,+DACAA,+DACAA,+DACAA,2DACAA,iEACAA,6BAEAA,2CACAA,4BACAA,4CACAA,kCACAA,kCACAA,6FACAA,2EACAA,8DACAA,0EACAA,iEACAA,iEACAA,wDACAA,uDACAA,wDACAA,wDACAA,2DACAA,uDACAA,uDACAA,0DACAA,sEACAA,oEACAA,oEACAA,yDACAA,wDACAA,yDACAA,uDACAA,mEACAA,yDACAA,yDACAA,2DACAA,8DACAA,iEACAA,iEACAA,kEACAA,yDACAA,6BACAA,4BACAA,4CACAA,kCACAA,kCACAA,6FACAA,2EACAA,8DACAA,0EACAA,uDACAA,uDACAA,wDACAA,uDACAA,wDACAA,wDACAA,0DACAA,uDACAA,uDACAA,0DACAA,sEACAA,oEACAA,oEACAA,yDACAA,wDACAA,yDACAA,uDACAA,mEACAA,yDACAA,yDACAA,2DACAA,8DACAA,iEACAA,uDACAA,kEACAA,yDACAA,6BACAA,8BAEAA,0CACAA,+BACAA,oEACAA,4CACAA,wBACAA,wHACAA,4HACAA,6HACAA,yBACAA,iDACAA,4BACAA,4CACAA,wBACAA,gJACAA,oJACAA,yBACAA,iDACAA,4BACAA,gCACAA,6BACAA,+MACAA,qJACAA,qJACAA,8BACAA,iCACAA,8BACAA,4BACAA,gKACAA,6BACAA,+BACAA,8BACAA,4BACAA,gKACAA,6BACAA,+BACAA,8BACAA,4BACAA,gKACAA,6BACAA,yMACAA,+DACAA,+BACAA,kCACAA,iCACAA,oEACAA,4CACAA,wBACAA,wHACAA,kJACAA,8HACAA,yBACAA,uGACAA,4BACAA,4CACAA,wBACAA,wHACAA,8HACAA,yBACAA,qGACAA,4BACAA,kCACAA,6BACAA,iCAEAA,iCACAA,wBACAA,+SACAA,yBACAA,wBACAA,+SACAA,yBACAA,kCACAA,qCACAA,yBACAA,WAoBA,eACA,SAGA,OAFA9V,2BACAA,6BACAA,iBACA,EAGmD,KACnD,SAAuB,MAJA,KACvB,cAUA,iBACA,eAXA7iE,MAA8C,WAC9C,oBAAiD,WACjD,cAXA,eAAgD,uBAWhD24O,IAGA,cACA91K,EAcA,eACA,sBACA8V,oBACAE,MACA,eACA,4BACA,0BACAA,WAAwC,WACxC,OAbA,iBACA,eAYA15E,MAAmD,WACnD,wCAAkE,cAClE,uDAEA,SAgBA,iBACA0jE,sBACA8V,IAYA,GA4FA,cACA,WACA,iBACAxlD,gBACAA,SApFA,eACA,6BACA,gCACA0vC,2BACArzG,aACAqzG,eA+EA5lE,EACAhpM,cACAqwN,aACAm8D,oBAEAttD,UACAA,SAnEA,iBACA,uBACA,0BACA3jE,QACAmpH,eA+DA6yT,cACAr4W,SACAA,iBACAA,iBACAA,iBACAA,SACAA,SACAA,UACAA,SAjEA,iBACA,YACA,0BACAwlD,uBACAA,EA6DA8yT,QACAt4W,QArFA,eACA,uBACA0vC,0BACA,YAAkB8V,aAAgBA,EAClC9V,yBACAA,yBAEA,SA8EAo3K,WACA9mN,UACAA,UACA26B,QAkNA,sEAsCA,mBACA,oBAEAgrB,iDACAqL,IACArzG,eAA2B,gEAAsFvrM,mBACjHurM,sCAAyD,wBAA2B,CAAI,kBAGxFsrH,WAEAswJ,SACA,8CACA57Q,oBAA+B46Z,oBAC/B56Z,kBAA6B66Z,8CAC7BvnmB,UAAcsvC,6DAEdg5a,0BAAiCtwJ,GAAYjY,QAK7C,mBACA,eACArL,GAAwB8yT,kCACxB,qCACA,4CAAyE36nB,yCAAwC,KACjHmrV,qBAEAswJ,IAAiBr7M,qBAEjB,OACA,eACA39N,gBACAziE,oBACAmrB,+FAAoF0xR,iCAA+B,IACnH+9U,oBACAC,wBACE,IACF1vS,GACAtrH,uBACAA,kBAA6B,yBAC7B,6DACA,mCACA,qBACA,qBAEAh1G,6DACAA,yBACAA,wBACAA,2BACAgyL,8BACA,kBACA,cACA1pR,SArC6Cg2c,WAC7Cj2J,kBACAA,YAqCA,qBACA,IACAA,GADArL,mBAEAjW,uBACA,kBACA,qBAKA,IAJAiW,GACAhrB,wCACAq2B,2BACIA,cACJA,IACAA,IAAY14U,OACZqtU,4BACAhrB,aACA,wCACAoxB,2BACAA,2BACAA,2BACAA,2BACA,cACApxB,aAGAq2B,gBACA,QAAwBrrU,+BACxBsjV,kBAGA,yBAAiCshS,QAAQA,IACzC,yBACA/kT,kCAEA,iBAAoC+kT,cAAmBA,GACvD,mBAA6BlwI,sBAA6B,MAE1DrpK,iBAmCA,eACA,8BAAoDuoR,eAEpD/zR,KACA,2BACA7qB,sBAA4B+qB,yBAA2B,gBACvD,mBACAF,WACA9V,mCAEAiW,uCACAH,mBACA9V,4CAGA,cAA2B8V,kBAAyB9V,oCACpDA,qBACAA,wBACA/U,sBAEA,mBAOA,GANA+qB,gEACAA,0BACAxnC,8BACAA,WACA8yC,kCAEA,OACAtL,0BACAhW,4EACAA,uCACAA,kCAEI,CACJgW,gEAEAhW,0DAEA,QADA6pL,+BACAxtK,KAAkBA,eAAeA,kCACjCrc,uBACAA,+BAGAA,yBACAA,aAAkBA,0BAA+BA,6BACjDA,WA0CA,mBACA,sCAA4D6pS,iBAAsBnnkB,sBAClF,6BACA,WACAuzS,kCACA,SACAsjB,wCACA,QACA00D,SACAp9U,gCAAU,yCAEV,eACAwrQ,eACAkd,YACAA,gDAA+B,gDAC/BvjB,oDAV2B,aAAbujB,KAUd,KAGAvjB,8BACAA,WAgCA,eACA,gCACA6zR,eACA,kBACEnnkB,sBACF,+BACAs9R,yBACAT,cACA1uP,gCAAS,iCACTjoD,SACAsgnB,uBAGAlpU,wBACAA,WAwBA,UACA,eAAwC,yBA0CxC,eACA,WACA8V,KACA,iBAEAxlD,UACA26B,sBACA+qB,yBACAF,oBACAA,wBACAxlD,kBACA2lD,uCACAH,mBACAxlD,+BAIAA,UAEAA,UACA26B,sBACA+qB,yBACA,UACAC,kCACA,gEACA,2BACAA,aACA,QAAgB7oU,uBAChBkjR,SAnFA,iBACA,2BACA0vC,8BACApwB,WACAowB,mBACAA,mBACAA,mBACAA,mBACAA,EA2EAu1K,UACAt/J,mCACA3lD,iBACA2lD,cAGA3lD,UAEAA,UACA0vC,QAsBA,4CAOA,kBACA,sFACAA,GAAyBr3T,SACzB,sBACA,gBAEA,mBACA,oBAAiC0zU,MAAaiF,mBAE9C,mBACA,oBAAiCuoK,MAAatwJ,mBAE9C,0EAEA,oBAA0BoxJ,GAC1BtuK,aAA0B7tC,GAC1BynC,wCAEA,sBACA,YACAA,gBApBA,GAwBAg/J,oLACAwwJ,cACA,qBACA,8CACA,yBACA96I,qBAGA,cAFA,kCAEA,KADA,iCACA,IAPA,GAaA,iBACA,6CACA,uEAIA,mBACA,uBAEA,YADA,CAAchif,uBACd,CASA,eACA,gCAEA,eAA4BsiT,OAG5B,iBACA,6BACA,gCAIA,mBACA,QACA,MACA,qCACA,kBAEA,yCACAsuC,WACAswJ,WACA,OAAUz8e,GAAGzE,mCAAkCxB,GAAKwB,qCAGpD,eACA,wBACAqtU,kBACAC,kBACA,OAAU7oU,GAAGzE,gCAAkCxB,GAAKwB,iCAapD,mBACA,kCAKA,eACA,cACAmtU,kBACA,OAASntU,gCARTwgoB,IACA,sCACAlzT,UACA,OAASttU,gCAST,eACA,sBACAmtU,kBACA,OAASntU,uDA+ET,eACA,iBAEA,cACA,GAFA,EAEA,CA0CA,eAEA,OADAsiT,gCACA,CA6FA,iBACA,wBACA,2BACA,SAA4B,WAC5B,UAA4B,WAC5B,SAA4B,WAC5B,SAEA,kBACA,EACA6qB,4BACA,gBAA+B,WAC/B,QACA,GACAA,gBACA7qB,eAAqC,WACrC,EACAA,OAAgB,WAChB,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GA,KAHAthB,UAGAshB,iBACAA,GAIA,mBAGA,QADArL,KADAD,QACAujB,MACAvjB,QACAhW,QACAshB,UACArL,sBACA,iDACAA,OACSsjB,0BADU7+N,QAGnB,UAGA,eAEA,QADAslM,KACA8V,IAAgBA,aAAcA,GAE9B,QADAE,YACAsL,KAAiBA,cAAcA,IAC/B,aACA,SAEA,IAFAiY,MAIAtjB,8CACAA,mBACKA,WAELjW,oBAEA,mBAIA,QACA4pU,WACAC,cACAC,WACAC,UACAC,WACAC,UACAC,WACAC,UACAC,WACAC,WACAC,aACAC,YAIA,iBACA,8CACA,2BACAz0T,qFACAz2S,0CACA4rR,SAGA,mBACA,0BACA,wDACA,8BACA,eACA,YACA,yBACA+U,YACA,mBAEA,0BACA,SACA,oCACA,IACA,4CACAgW,2CACA,IACA,uCACA,yBACA,QAEA,8BAEA,2BACA,KACA,2DACAA,2CACA,+CAAqE,iBAAmBz0S,mBAExF,sBACA00S,qDACAD,wCAFA,eAKA,mBACA,gBACA,0BAEA,uBACA,IAEAqG,YAFAiF,gBACAiY,IAA2CnsV,GAAG69S,SAAS9jT,GAAI8jT,UAC3D4+L,sBACA,4BAEA,QADAkxI,YACA/wI,oBAA4CA,QAAYA,IACxD,gBACA,kBACA,YACAH,sBAAmC,UACnC,WACAA,sBAAmC,UACnC,aACAA,sBAAmC,UAEnC,aACA,gBACA,aACA,YACA,YACA,YACA,YACA,YACA,aACA,YACA,eACA,SAEA,GADAxtK,YAAsB7tC,YACtBusV,OACA,4BACA,EAEAC,0BAAkD,WAClD,EAEAA,2BAAmD,cAInD,GAFAA,MAEA/kT,qEAEAznC,OACAusV,MAEAlxI,yBACA,UAEA,WACAxtK,YAAsB7tC,YACtBq7M,mBACA,UACA,WACAxtK,YAAsB7tC,YACtBq7M,mBACA,UACA,WACAxtK,YAAsB7tC,YACtBq7M,mBACA,UAEA,gBACA,IACA,cACA,IACA,YACA,IACA,iBAyDA,IAEA,oBACA,cA6FA,IAEA,aAOA,IAEA,SACA,IAEA,YAgBA,IAEA,kBACA,mBACA,kBACA,eACA,cACA,IAEA,aACA,IACA,cACA,MAlMA,IAGA,SACwBc,qBACxBd,mBACA,UACA,UACwBc,+BACxBd,mBACA,UACA,WACwBgxI,YAAsClwI,qBAC9D4xI,cAEA1yI,0BACA,UAEA,cACA,aAEA,4BACAC,WAEA,WADAA,SACA,iBACAD,cACA,6BACAA,iCACA,UAEA,UACAA,8BAAyC,UACzC,SAMsD,IACtD,SACAA,eAA0C,MAPA,IAC1C,SACAA,uBAA8B,UAC9B,SAEAA,0CAAsD,MAEZ,IAC1C,WACwBE,kBAAuC38e,KAAQmsV,MACvEswJ,kBACA,UACA,UACwBE,qBACxBF,kBACA,UACA,YACwBgxI,YAAsC9wI,YAC9DwyI,cACA1yI,yBACA,UACA,aACAA,6BACA,MAIA,IAEA,UAEAixI,YACA,2CACA1wI,uCAEAA,uDACAP,YACA,UAEA,WAEA,IAA6EY,GAA7E+wI,YAEA,GAFgDV,cAEhD7kT,WAGM,CACN,UAQA,GAPA,iCACA,8BACAD,8BACAylT,uCAGAA,2BACAzlT,4CACAA,qCACA,CACA,oCACAyjB,qBACAgiS,kBAEA5xI,YACA,MAnBA2xI,eACAxlT,sBAoBAy0K,SAAkC7we,qBAClCiwe,iBACA,UAEA,WACA,kBACA,UAEA,OADAmxI,MACA/vU,qBAEA,+BAA8D,WAE9D,gCAA+D,WAE/D,+BAA8D,WAE9D,gCAA+D,cAG/D,wEAEA8vU,MAEAlxI,wBAAuC,UAEvC,YACyB,IAEzB,cA6CA,IAEA,aACyB,IAEzB,eACAA,iBAAyB,MAlDA,IAEzB,SACAc,IAAS1/L,uBACT,QAAcA,aACd,sBACA,yBACA4+L,8BACM,CACN,UACA,SAAcxtK,sBAA4BA,GAG1C,GADA7tC,kBACAm8M,gCACAA,gCACA,8BACAJ,MACA,MAEAA,mBAEA,UAEA,WACAV,YAAiBpC,eACjB,MAIA,IAEA,mBACA,mBACAszI,MACA,MAMA,IAEA,aACAlxI,YACA,MAMyB,IAEzB,UAEAA,6CACA,MAYA,IAEA,gBACA,iBACA,kBACA,iBACA,gBACA,oBACA,uBACA,qBACA,eACA,YACA,oCAGA,QACA,2DAGA,yBADA,kDACAjye,sBAEA,UACA,QAFA+iV,aAEA,YAEA,aAEA,EAEAqgS,oBAA8B,WAC9B,aAEA,EAEAA,qBAA+B,cAI/B,GAFAA,MAEA/kT,+DAEA4zK,wCACAkxI,OAGA,2DACA,qBAAqC,gBACrClxI,MAIA,mBACA,IACAvoK,GADAtL,wBACAujB,mBACA,kCACA,kBACA,wCACAtuC,MACA,QAwBA,mBACA,IACAgrB,EADAD,QACAsL,mBACAiY,cACA,iCACAv5B,gCACA,QA8BA,mBACA,YACAiW,YACAqL,GA7BA,eACA,MACA,yCACA,oBACA,gBAA0B,oBAC1B,wBAAyCr2B,OAAa,aACtD,oBAAiCA,OAAa,aAC9C,gBAA0B,SAE1B,SAoBA+1L,IACAznJ,mBACA,YACAtuC,gBACA6qB,WACA7qB,iBAGA,OAnEA,mBACA,IACAq2B,GADAtL,wBACAujB,mBACA,kCACA,kBACA,wCACAtuC,MACA,QA4DAq2L,YACA,OAAS7yJ,qDAET,uBAEA,iBAGA8K,GAlCA,eACA,YAEA,YACA,0BACAv5B,mBACAA,mBACAA,mBACAA,uBACAA,SACG70H,wBACH,GAuBA81S,MAGA4I,SAEAA,iBADA,IAEAA,oBAIA,QADAr7M,mBACAm8M,KAAgBA,iBAAoBA,mBAGpC,OADAlue,iBACA,CAKA,mBACA,sBACAw5T,YACAqL,mBAEA,SADAA,uBACA,CAIA,UAEAkpT,MAMAC,MAEAC,MAGA,eACA,qCACA,aACA,0BACA1qU,oBACAA,mBACAA,mBACAA,EAGA,aACA,2BACA8V,oBACAA,mBACAA,mBACAA,EA4LA,OAdA,iBACA,mCACA,8BApKA,eACA,aACA,0BACA9V,oBACAA,uBACAA,mBACAA,EA8JA2qU,IACA,iFA9KA,eACA,aACA,0BACA3qU,oBACAA,mBACAA,mBACAA,EAwKA4qU,SACA,0JAAwJ,OA5IxJ,eACA,YACA90T,SACA,0BACAA,oBACAA,qBACAA,0EACAA,mBAEAA,EAmIwJ+0T,IACxJ,oSAAkS,OA3FlS,eACA,0BAEA70T,SACAA,oBAGiB,SAAjBF,QACA,2BACAE,qBACAA,0EACAA,mBAGiBC,KAAjBH,QACAE,oBACAA,qBACAA,0EACAA,mBAGAA,oBAEAA,mBAEAA,EAkEkS80T,IAClS,ySAAuS,OA9BvS,iBACA,yBACA90T,eACA/qB,eACA,uDACA,YAEAq2B,UACA,4BAEAA,qBACAA,iDAAwD,0BAAyB1pU,0BACjF0pU,wBACAA,wBACAA,wBACAA,wBAEAA,oBAEAA,GAWuSypT,MACvS,2NAAyN,OAlIzN,iBACA,yBACA/0T,eAEAC,KADAhrB,gBAEA,uDAEA,cACA,2BACAq2B,qBACAA,iDAAwD,0BAAyB1pU,0BACjF0pU,sBACAA,2EACAA,oBAEAA,GAmHyN0pT,MACzN,qWAAmW,OAjEnW,iBACA,yBACAh1T,eACA/qB,eACA,uDACA,mBAEAq2B,UACAA,qBAGA,sBACA,4BACAA,iDAAwD,0BAAyB1pU,0BACjF0pU,uBACAA,8EAGiBuoK,MAAjBtwJ,SACAjY,qBACAA,iDAAwD,0BAAyB1pU,0BACjF0pU,uBACAA,8EAGAA,qBAEAA,oBAEAA,GAoCmWsmK,MACnW,8EAA+D32c,eAjH/D,iBACA,yBACA+kS,eACA/qB,eACA,uDAEA,aACA,0BACAgrB,oBACAA,gDAAwD,0BAAyBr+T,0BACjFq+T,mBACAA,mBACAA,mBAEAA,EAmG+DrmB,MAC/D,2BAlKA,eACA,YACAoQ,8BACAA,oBACAA,0BAEA,qBACA8V,sCAEA,YACA,0BAEAr5T,YAsJAwunB,IACA,iDACA,+CAGAC,IACA,SACA,SACA,eACA,cACA,SACA,YACA,gBACA,eACA,UACA,kBACA,UACA,gBACA,iBACA,iBACA,iBACA,UACA,WACA,SACA,oBACA,sBACA,oBACA,uBACA,UACA,aACA,sBACA,eACA,aACA,mBACA,iBACA,eACA,aACA,iBACA,kBACA,kBACA,UACA,iBACA,WACA,mBACA,eACA,WACA,YACA,qBACA,kBACA,UACA,SACA,UACA,WACA,WACA,mBACA,iBACA,YACA,gBACA,eACA,iBACA,kBACA,kBACA,kBACA,sBACA,sBACA,kBACA,iBACA,oBACA,kBACA,iBACA,qBACA,iBACA,eACA,iBACA,eACA,mBACA,UACA,YACA,iBACA,eACA,kBACA,sBACA,cACA,gBACA,aACA,WACA,mBACA,iBACA,iBACA,WACA,aACA,UACA,YACA,eACA,aACA,kBACA,mBACA,oBACA,qBACA,wBACA,wBACA,eACA,oBACA,oBACA,oBACA,oBACA,mBACA,aACA,kBACA,oBACA,YACA,YACA,YACA,YACA,cACA,cACA,YACA,UACA,kBACA,qBACA,cACA,iBACA,mBACA,mBACA,iBACA,kBACA,kBACA,sBACA,gBACA,qBACA,kBACA,mBACA,mBACA,gBACA,YACA,gBACA,cACA,oBACA,cACA,iBACA,iBACA,oBACA,gBACA,iBACA,cACA,WACA,kBACA,cACA,gBACA,qBACA,kBACA,wBACA,oBACA,mBACA,qBACA,sBACA,kBACA,yBACA,aACA,kBACA,eACA,eACA,mBACA,mBACA,qBACA,mBACA,sBACA,yBACA,iBACA,gBACA,gBACA,oBACA,kBACA,mBACA,sBACA,wBACA,sBACA,qBACA,cACA,gBACA,gBACA,iBACA,kBACA,cACA,aACA,kBACA,cACA,wBACA,sBACA,YACA,iBACA,gBACA,kBACA,uBACA,wBACA,kBACA,kBACA,uBACA,mBACA,iBACA,mBACA,oBACA,iBACA,kBACA,kBACA,qBACA,gBACA,kBACA,mBACA,iBACA,iBACA,oBACA,mBACA,sBACA,oBACA,yBACA,eACA,WACA,oBACA,sBACA,iBACA,iBACA,mBACA,qBACA,kBACA,qBACA,yBACA,gBACA,wBACA,eACA,kBACA,qBACA,eACA,mBACA,oBACA,oBACA,uBACA,qBACA,mBACA,kBACA,gBACA,sBACA,wBACA,qBACA,gBACA,iBACA,wBACA,iBACA,mBACA,qBACA,sBACA,mBACA,oBACA,oBACA,yBACA,uBACA,yBACA,6BACA,kBACA,iBACA,uBACA,0BACA,mBACA,mBACA,oBACA,kBACA,sBACA,kBACA,oBACA,sBACA,+BACA,mBACA,qBACA,iBACA,qBACA,gBACA,uBACA,kBACA,4BACA,sBACA,yBACA,sBACA,sBACA,sBACA,yBACA,iBACA,qBACA,mBACA,uBACA,iBACA,mBACA,sBACA,oBACA,oBACA,sBACA,sBACA,oBACA,qBACA,2BACA,8BACA,qBACA,mBACA,gBACA,kBACA,iBACA,qBACA,sBACA,sBACA,oBACA,sBACA,oBACA,oBACA,yBACA,kBACA,uBACA,2BACA,uBACA,sBACA,uBACA,kBACA,qBACA,sBACA,mBACA,mBACA,wBACA,0BACA,0BACA,uBACA,yBACA,yBACA,oBACA,iBACA,gBACA,kBACA,uBACA,oBACA,4BACA,yBACA,aACA,sBACA,oBACA,sBACA,oBACA,oBACA,uBACA,uBACA,wBACA,mBACA,wBACA,2BACA,kBACA,eACA,eACA,iBACA,iBACA,mBACA,mBACA,kBACA,yBACA,6BACA,uBACA,eACA,qBACA,qBACA,mBACA,gBACA,uBACA,uBACA,qBACA,sBACA,wBACA,uBACA,kBACA,oBACA,eACA,gBACA,kBACA,kBACA,uBACA,wBACA,qBACA,gBACA,aACA,aACA,oBACA,uBACA,qBACA,eACA,oBACA,oBACA,kBACA,qBACA,qBACA,wBACA,0BACA,iBACA,kBACA,kBACA,wBACA,mBACA,oBACA,yBAEAtwJ,IACA,UACA,OACA,SACA,YACA,QACA,YACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,YACA,WACA,SACA,SACA,SACA,UACA,QACA,UACA,SACA,QACA,WACA,SACA,SACA,UACA,WACA,YACA,WACA,UACA,SACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,YACA,UACA,cACA,UACA,UACA,YACA,SACA,UACA,UACA,YACA,WACA,YACA,YACA,UACA,UACA,YACA,QACA,QACA,UACA,SACA,UACA,UACA,SACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,aACA,UACA,YACA,YACA,SACA,WACA,UACA,aACA,YACA,YACA,YACA,cACA,YACA,eACA,WACA,UACA,UACA,UACA,cACA,YACA,WACA,aACA,YACA,eACA,iBACA,eACA,YACA,WACA,UACA,UACA,aACA,cACA,cACA,YACA,YACA,YACA,kBACA,eACA,gBACA,UACA,WACA,WACA,YACA,YACA,aACA,WACA,YACA,YACA,WACA,cACA,iBACA,WACA,YACA,gBACA,WACA,WACA,YACA,aACA,eACA,cACA,QACA,QACA,YACA,aACA,YACA,cACA,YACA,eACA,aACA,WACA,gBACA,gBACA,UACA,UACA,UACA,cACA,cACA,cACA,eACA,eACA,WACA,cACA,eACA,kBACA,qBACA,oBACA,qBACA,eACA,kBACA,qBACA,qBACA,iBACA,YACA,cACA,eACA,YACA,YACA,WACA,WACA,aACA,iBACA,UACA,YACA,YACA,WACA,eACA,cACA,WACA,cACA,gBACA,cACA,WACA,cACA,cACA,WACA,eACA,oBACA,iBACA,mBACA,eACA,gBACA,eACA,WACA,aACA,WACA,cACA,YACA,YACA,gBACA,cACA,iBACA,iBACA,eACA,YACA,cACA,eACA,YACA,aACA,WACA,WACA,cACA,gBACA,UACA,WACA,WACA,cACA,cACA,YACA,UACA,WACA,cACA,aACA,eACA,aACA,iBACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,oBACA,eACA,iBACA,kBACA,oBACA,sBACA,oBACA,eACA,WACA,YACA,iBACA,SACA,YACA,aACA,gBACA,kBACA,qBACA,WACA,oBACA,eACA,kBACA,eACA,qBACA,iBACA,gBACA,mBACA,mBACA,kBACA,iBACA,kBACA,mBACA,aACA,eACA,cACA,cACA,gBACA,cACA,aACA,aACA,iBACA,gBACA,WACA,gBACA,YACA,WACA,aACA,gBACA,YACA,gBACA,eACA,cACA,kBACA,kBACA,aACA,mBACA,eACA,gBACA,cACA,eACA,kBACA,UACA,aACA,cACA,YACA,cACA,cACA,eACA,eACA,cACA,aACA,YACA,eACA,YACA,gBACA,cACA,UACA,YACA,YACA,YACA,WACA,YACA,cACA,cACA,YACA,WACA,WACA,YACA,YACA,YACA,eACA,iBACA,kBACA,WACA,eACA,WACA,oBACA,gBACA,kBACA,YACA,qBACA,sBACA,sBACA,qBACA,cACA,cACA,eACA,YACA,cACA,iBACA,mBACA,wBACA,YACA,cACA,iBACA,mBACA,YACA,kBACA,kBACA,eACA,mBACA,gBACA,eACA,eACA,WACA,WACA,cACA,YACA,aACA,WACA,eACA,oBACA,gBACA,sBACA,mBACA,oBACA,uBACA,kBACA,oBACA,kBACA,eACA,UACA,gBACA,iBACA,yBACA,uBACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,YACA,YACA,cACA,YACA,aACA,WACA,aACA,cACA,YACA,YACA,YACA,iBACA,kBACA,gBACA,aACA,cACA,YACA,gBACA,gBACA,iBACA,aACA,eACA,YACA,aACA,aACA,YACA,aACA,UACA,WACA,cACA,cACA,cACA,cACA,WACA,WACA,eACA,eACA,cACA,eACA,WACA,gBACA,gBACA,cACA,iBACA,iBACA,YACA,YACA,eACA,eACA,cACA,aACA,eACA,cACA,YACA,cACA,eACA,gBACA,eACA,iBACA,cACA,cACA,cACA,eACA,gBACA,gBACA,gBACA,gBACA,gBACA,kBACA,cACA,gBACA,eACA,cACA,cACA,cACA,eACA,cACA,kBACA,UACA,kBACA,UACA,iBACA,oBACA,cACA,mBACA,cACA,eACA,aACA,gBACA,kBAEAC,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,SAGA,eACA,0CAEA,sBAEA,KADA5vL,cACA74Q,gCAQA64Q,GAFAA,GADAA,GADAA,GAFAA,qCAEAvoR,sEAAmF,8BACnFA,sCAAiD,qBACjDA,yCAAsD,sJAAmJs9R,OAEzMt9R,qCACAA,gBAAqB,wBAGrB,eAGA,OAFA,4DAEAA,aAAoB,uBAGpB,eAGA,OADAuoR,GADAA,0CAAiD,qBACjDvoR,yCAAsD,sJAAmJszS,OACzMrmT,WAEA,OADAqwS,mBACAA,iFAGA,eACA,4CAGA,UACA87K,MAIAqvJ,2BAEA,mBACA,mBACA,MACA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A,0BACAD,mBAEAA,mBAEA,WACAC,sBACAA,qBACAD,oBAEAA,mBAEA,SACAC,uBACAA,oBACAA,wBACAD,oBAEAA,mBAGA,gBACAA,OAIA,QAFAxnC,IAAc7lS,SACdgif,oBACAkwI,KAAgBA,QAAQA,GACxB,mCAEA,SADAC,YACAyB,UAAuBA,cAAiBA,GACxC/tV,SACAm8M,6CACcmwI,cAAyB/wI,OAEvC+wI,SACAjxI,GACA7zK,oBACAA,qBAGA,WACA,cACAA,oBACAA,OAEAA,8BAGAknK,SACAjnK,6CAIA,UACAq2T,MAkFA,mBACA,0BACAj1gB,QACAy+M,qBACAA,EAOA,mBACA,0BACA5qI,QACA4qI,qBACAA,mBACAA,mBACAA,EAwCA,eAGA,OAFAvuI,MACA2zL,MACA,KAmIA,UACAsjH,MAiFA,yDAiYA,gCACA,QAAmB71e,SAEnB,GADAq3T,6CACA,iBACA,UACA,gBACA,mBAAqC,UACrC,KACAA,SACA99D,cACA89D,sBAA4DA,QAC5D,UAEA,sBAAsC,cACtCxxB,OAKA,OAFA6tC,uBACArc,qCACAA,SACA,cACA,kBACAxxB,uDACA6tC,SAAeA,QACfkd,WApoBA,mBACA,0BACAruJ,QACA4qI,qBACAA,EAgoBAy2T,QACAj8W,OAhpBA,mBACA,2BACAj5J,QACAy+M,qBACAA,EA4oBA02T,UAEAnwT,WACAkd,WAxjBA,mBACA,+BACA,qCACAruJ,QACAyhB,QACAmpH,8BAmjBAspK,QACA9uN,OArkBA,mBACA,+BACA,wCACAj5J,QACAs1F,QACAmpH,8BAgkBA22T,UAEA,MACA,IAEA,uCACAlzS,WA/lBA,mBACA,0BACAruJ,QACAi9H,UACA2N,EA2lBAioK,QACAztN,OA3mBA,mBACA,2BACAj5J,QACA8wM,UACA2N,EAumBAiqK,QACK5+c,WACLo4T,eAAoF3wV,YAAeyzU,KACnG/rD,WAAyE1nR,YAAeyzU,KACnFv9P,cAILy6Q,WAhoBA,mBACA,2BACAruJ,QACAC,UACA2qI,EA4nBA42T,QACAp8W,OA5oBA,mBACA,2BACAj5J,QACA8zE,UACA2qI,EAwoBA62T,QAJApzS,eAAoF3wV,WAAeyzU,KACnG/rD,WAAyE1nR,WAAeyzU,MAInF,MACL,IACA,gBACAkd,WAhtBA,mBACA,0BACAruJ,QACA4qI,yBACAA,EA4sBA82T,QACAt8W,OA5tBA,mBACA,0BACAj5J,QACAy+M,yBACAA,EAwtBA+2T,SACA,MACA,IACA,gBACAtzS,qBACAjpE,kBACA,EAEA,kBA/uBA,mBACA,0BACAplF,QA6uBA4hc,QACAx8W,OAxvBA,mBACA,0BACAj5J,QAsvBAkmX,SACA,EA6BA,kBACAv9K,mBACA1vC,SA3iBA,iBACA,0BACA0vC,mBACAA,EAwiBA0+K,uBACA1+K,iCAAqC1vC,kBACrCA,WAGA,kBACA0vC,iBACA1vC,UACA0vC,iCAAsC8V,WApftC,mBACA,oBACA,cACAA,oBACAA,oBACAA,mCACAA,mBACA,QACA,wBACA,iCACA9V,yBACA8V,mBACAA,EAwesCipK,SACtCzuN,WAGA,kBACA0vC,gBACA1vC,UACAA,SApcA,eACA,aACA,0BACA0vC,mBACApwB,QACAowB,EA+bAuoB,iBACAj4D,WAGA,mBAEA0vC,gCACA,eACA,wDACA1vC,SAhjBA,iBACA,8DACAsf,IAAqBxiS,uBAAyC0oU,GAC9DrhI,cACA,+BAEA,YADA,iCACA,MACAkY,uBACAA,SACAmpH,eAuiBA6oK,iBAEA3+K,YAqCA,mBACA1vC,UAGAA,SA5gBA,mBACA,oBACA,UACA,gBAAmBy7W,mBAAmBgB,aACtCj3T,mBACAA,mBACAA,mBACAA,mBACAA,mBACAA,mBACAA,mBACAA,qBACAA,mBACAA,mBACAA,mBACAA,mBACAA,EA4fAk3T,OAKA18W,UAGAA,UAQA,kBACA0vC,eAEA1vC,SAlgBA,iBACA,2BACA0vC,6CACAA,mBACA,CACA,eACA,iBACA,mBACA,qBACA,kBACA,qBACA,kBACA,wBACA,qBACA,kBACA,yBACA,YACA,kBACA,mBACA,4BACAjxT,oBAEA+mU,iDACA9V,8CAEAA,EAyeAitU,iBAGA,qBACA,WACA3rT,uCACAuoK,MAAuB,IAAM/zK,qDAAmE,CAAnE,MAAmEtnC,KAChG,4BACA,iCACA,4FACA6tC,8BACAA,gCAEA,uBAEAkd,mBACAjpE,WACAwlD,oCAp5BA,mBACA,+BACA,UACA9V,IACAA,kBACAA,mBAEA8V,mBACA,YAAgBG,MAAOA,qBACvB,WAAiB1mC,QAAOumC,GACxBA,qBACAA,qBACA5mC,QACA4mC,eAu4BAg2K,qBACAx7N,iBACA0vN,mBAEAL,SAvIA,uBACA,0CACAnxM,aAAyBy2V,cAAcC,aAAaK,SACpDj1W,UACA,wBACAuqW,UACA76T,sDACA,kBAAwB86T,SAAUA,IAClCjxI,UAGA1M,cACA,UACA,gCAA4Co/I,aAAgBA,IAE5DzB,6BACAvhS,aACA,yCAGAwwJ,KAFAgxI,IAEAn7I,0BAGAtvN,UAiHAuvN,aAEAP,SAzEA,qBACA,oBACA,wBACAh+J,0CAGAxL,yBAAkC9tN,YAClC8tN,wCACA,wBACA+zK,UACAA,iBAA8BA,yBAA0CvoK,WACxE,aAAgBjF,eAAkBA,IAClC,cACA,qCACA7tC,YACA,uCAAkF,OAElF6tC,wBAAoCziU,0EAEpC02Q,qBAIAA,WAqDAijE,WAIAs3D,SAIAq0F,WAEA3lJ,yBAjlBA,iBACA,2BACAwiJ,MACAwF,uBAAqCp2S,aACrC60H,EA6kBAktU,oBAOAltU,2CAtGA,qBAEA,4BACA,4DACA1vC,sBACA0vC,gBAoGAu/K,WAQAjvN,UACA2lD,QAuBA,0BACA,YAAqC,iBACrC,gBAGA,qBACA00K,IAAiBv9e,GAAIzE,aAAqBxB,GAAMwB,UAGhD,iFACA,OA/BA,eACA,IAEAqtU,EAFAhW,KACA8V,4BAIA7qB,uEACA,gEACAsuC,KACAv5B,4BAIA,mFAEA,gEAA+DgW,4BAE/D,QAcAm3T,KACAxiJ,gBACAA,UACAn8M,UACAssV,8BACAvhS,aACAA,sCACAA,qBAAyB3wV,qBACpB2wV,eAAgC3wV,oBACrCyzU,QAEAsuK,yBACAd,KAEAA,0BACAtwJ,GAyGA,QACA,gCACA,mCACA,yBACA,iCACA,gBACA,uBACA,gCACA,4BACA,iCACA,gCACA,2BACA,oCACA,qCACA,yCACA,gCACA,sBACA,mCACA,2BAIAiyD,IACA,sBACA,qCACA,uBACA,wBACA,mCACA,4BACA,iCACA,uBACA,0BAKAk1F,MAKAC,IACA,yBACA,oBACA,sBACA,0BACA,2BACA,yBACA,oBACA,uBACA,yBACA,kBAyBA,iBACA,YAAgB7qK,cAAoBA,EACpC,QAD2CE,OAC3CC,IAAeA,cAAsBA,GAAO,YAC5C,sCACA,kBACA,0DAAgF,UAChF,kEAA+E,EAK/E,iBACA,YAAgBH,cAAsBA,GAAO,WAC7C,mCACA,iBACA,uDAA+F,UAC/F,+DAA8F,EAK9F,eACA+qK,iBACAA,gBAEAD,gBACAA,gBAEA9E,mCAUA,4BACA,iBACA,IACA,uDACA,oEACA,2HACA,gFACAsxJ,uBACA,oBACA,6DAEqC,CAFrC,MAEGt3T,GAAW,cAAuB,QACrC,SAYA,eACA,oEACA,6DACA,yCAbA,mBACA7qB,wBACAoiV,MACA,aAAiB/rT,OAAOA,2DACxB,MACA,iCACA,wFAQA+Q,4BACA,YAAgBvc,wBAA0BA,kDAC1C7qB,mCACA,mBACA,yBACA,QACAA,4BACAA,wCACAA,sCAA2C,yDAC3C,2CACAsuC,aACAtuC,uBAA+BrxS,iDAK/B,uBA+PA,iBACA,sBACAomT,0BACAA,0BACAvrH,iBACAkY,yBACAqzG,8BAyCA,iBACA,SACA,uBACA8V,yBACA7qB,SACA6qB,EA0MA,iBAEA,iCAGA,SAFAA,oBACAE,eACOA,aAAmBA,GAC1BF,8BACA,+BAEAwL,OACAhxD,UACAA,SAzBA,iBAUA,OATA0vC,cACAA,oBACAA,sBACAA,uBACAA,uBACAA,qBACAA,mBACAA,mBAEAA,gBADA,KAEAA,8BAcAyhL,KAEAnxN,YAGA,kBACA0vC,+BACAA,qCAA4C,IAC5C,qBACA1vC,QArMA,iBACA,YACA0lD,IACAC,SACAjgL,mBAAyCggL,MAAeC,cACxDH,mBACAA,mBACAA,kDAEA,QACAA,EACAnpH,MACAwqY,aAEA,wCACA,CACA,aACA59P,6BACAjY,YASA,cA0KAgsT,MAEA,CAFA,MACGt3T,GACH32S,wEAeA,iBACAixP,UACAA,UACAA,SAdA,eACA,0BACAwlD,cACAA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4BACAqvT,4BACA,WAEA,IACA,KAEA,QACA,KACA,KAEA,IACA,KACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,UACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,UACA,SACA,SACA,UACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,SACA,UACA,QACA,UACA,KACA,WAEA,GACAxK,MAAiB,WACjB,GACAA,MAAkB,WAClB,GACAD,YAAoBC,MAAa,WACjC,GACAD,SAAiBC,MAAc,cAG/B,YACAA,sEAEEjxI,WAEFA,mBACAA,YAEAxtK,gGACAwtK,0BACA,sBACAA,wBACA26I,sBACAA,+BACAA,+BACAA,+BACAA,+BACAnoT,0BACAA,mBAGA,uCACA4L,8BACA60S,8BACA9mT,oEACAqG,GAooCAqjK,mBACAjkJ,qBAGA,gCACA,2BAr0BA,uBACA,eACAzlB,OAAmB,WACnB,QAAU,0CACVujB,MACAswJ,MACA,+BACA,gBAEA,IACAvoK,cAAqB,WAErB,IACArL,8BACAznC,wCACA,WAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,KACA,WAEA,GACAq7M,MAAiB,WACjB,GACAA,MAAkB,WAClB,GACAtwJ,YAAoB,WACpB,GACAA,SAAiB,cAGjB,8BACAoxJ,yBACAd,oEAEE7pL,GAEFgW,2DACAsL,GAyxBAk/J,aAz2BA,uBACA,eAEAxqK,OAAmB,WACnB,IACAujB,GADAjY,IAAW,0CAIXuoK,eACA,4BAGAtwJ,wDAEAvjB,2DACAsL,GA21BAg/J,aAaA,qBACA,2BA7kNA,mBACA,OACAtqK,cACA,qCAEAA,YACAA,WACA,UACAujB,MACA,+BACA,gBACA,GACAvjB,yBAAuC3gM,gBACvC,WACA,GACA2gM,iBACA,sEACAqG,iFAEA,WACA,UACA,GACA,KACA,GAMA,KACA,QACA,SACA,SACA,IACA,KAEA,UACA,UACA,UACA,SACA,UACA,KACA,MAlBA,KACA,GACA,sBACArG,kBAEA,MAaA,KAEA,GACAujB,MAAiB,WACjB,GACAA,MAAkB,WAClB,GACAjY,YAAoBiY,MAAa,WACjC,GACAjY,SAAiBiY,MAAc,cAG/B,8BACA/qD,yBACA+qD,0FAGAvjB,EAkhNA63T,QACAC,UAGA,mBACA,2BAhxPA,iBACA,SACA93T,KACA,+BACA,gBACA,IACAF,cAAsBA,eAAmB,WACzC,GACAA,WAAiB,WACjB,IACA,cAEA,GACAE,KAAiB,WACjB,GACAA,KAAkB,cAIlB,GADAujB,MACAvjB,oEAGAF,EA0vPAi4T,MAh0PA,iBACA,cACA,eAEA,kBACA,MACA/3T,gCACA,aAAiBsL,eAAgBA,IACjC,0BACA,2BAEArL,WAA6BH,gBAAqBA,uBAElD,SAozPA3wC,MAGA,mBACA,2BAl5KA,iBACA,SACA6wC,KACAC,KACAqL,MACA,+BACA,gBACA,IACAtL,WAAuB,WACvB,IACAC,KAAa,WACb,IACAA,SAAiBA,SAAaA,SAAa,WAC3C,IAGA,GAFAA,6BACAA,UACAjW,+CACAiW,qBACAA,MAAkBH,UAAa,WAE/B,KAMkB,KAClB,QACA,SAPA,KAEA,GACAwL,MAAiB,WACjB,GACAA,MAAkB,MAElB,QAIA,YACAA,sEAGAxL,EA82KAgiK,MArmLA,iBAEA,+CACA,SACA9hK,KACAC,6DACAA,4DACA,2BACA,+CACA4zK,qBAEA,0EACA,uEACA,2BACA,4CACA,MACA,kBACAr7M,IAAkC2M,4EAClCwvM,cACA,qCACA,8DACAmwI,8BAAuEnynB,gBACvE6lS,UACA,gCACAA,0DACAwxB,wBACAgW,gBAEAA,EA0kLA4/J,MAGA,mBACA,2BAv0LA,mBACA,SAEA,+BACA,GACA,KADAv5J,GAEArG,gBAGA,SACA,0DAGAA,EA0zLAmjD,IAz2LA,eACA,SACA,eACA,QACA,4CACA,YACA,iBACA,YAEA,4DAEA,iBAA2BljD,UAAiBA,MAAcjW,UAAW,GAGrEA,EA41LA43K,IAGA,qBACA,2BApzLA,qBACA,eACA,YAEAt2J,MAEAjxD,wBAEA,gBACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,IACA,WAEA,GACAixD,MAAiB,WACjB,GACAA,MAAkB,cAGlB,YACAA,qEAEErL,GA2wLF4/J,eACA,EAGA,mBACA,2BA1gMA,mBACA,OAAcm4J,2BACd/3T,QACAqL,MACAiY,MACAswJ,KACA,+BACA,gBACA,IACA7zK,cAAyB5kR,eACzB,WACA,GACAirR,wBACA,MACArG,aAA4B5nU,yCAC5B,OACA4nU,cAA6B5nU,2CAE7B,WACA,IACAy7e,UACA,WACA,IACAA,KACA,WACA,GACAvoK,YACAiY,MACA,WACA,GACAjY,SACAiY,MACA,cAEA,YACUA,gCACV,2DAGAvjB,EAm+LAi4T,QAz8LA,mBACA,OAAcD,2BACd,MACA,SACA,IAEAz0S,GAFAtjB,KACAqL,KAEA,iCACA,cACA,sBACA,QACA,IACA,gBACA,cACA,IACA,qBACA,mBAIA,IACA,kBAMA,IACA,oBACA,IACA,OACA,IACA,QAOA,IACA,QAaA,IACA,cACA,eACA,gBACA,YACA,MAzCA,IACA,gBACAtL,cAAyB5kR,eACzB,MAEA,IACA,kBACA,aAAwBo9O,oBAAsBA,GAC9CwnC,4BACAujB,gBACA,MAMA,IACA,MACA,MACAvjB,aAA0B5nU,wCAC1B,OACA4nU,cAA2B5nU,wCAC3B,MAEA,IACA,gBACAkzU,KACA,UACA,kBAKA,IACA,mBACAA,KACA,MANA,IACA,iBACAA,KACA,MAQA,IACA,OACArL,KACA,UACA,SACAA,KACA,UACA,OACA,OACA,MACAsjB,aACAA,eACAA,uBACA,cAEA,8BACA,sDAEA,YAEAvjB,EA43LAujD,QAEA,IAwCA2oH,GAxCAgsJ,qDACAhojB,wDACA,iBACA,qBACA8vP,KACA,GAD+BhW,eAC/B,sBACA,2BACA,cAAkBqc,eAAeA,IAGjC,SAFAiF,oBAEA,wDAIAtL,EAFA,mDACAsL,mBACAA,8BAGA,SAEA,eACA,IACAxL,KACA,OAFA7qB,eAEAjhT,gBACA,0BACA,cAAkB6/e,eAAeA,IAGjC,SAFA5zK,mBAEA,qDAIAH,EAFA,iDACAG,kBACAA,4BAGA,SAcA,qBACA,QACA,yDACA,kBAA4C,UAC5C,gCAAmD,UACnD,iCAAmD,UACnD,iCAA0D,UAC1D,wEACA,sCAEAhrB,WAGA,qBACA,aACA,4BACA,UAAuBA,iBACvB,cACA,WACA,kCACAA,YAEAA,YAEAA,IA9BA,mBACA,mBACA,0BACArgR,QAAgC26lB,eA2BhCR,oBACc,CADd,MACGxrS,IAAW,kBACd,IACA,0BAEA,GADAzjB,kBACAA,8BACA,0BAAiEwL,KAASr2B,QAAcA,8DAE1E,CAF0E,MAErFsuC,IAAW,oBAGd,mBACA,iBACAv5B,YACA,iBACAgW,oDAGA/qB,UAIA,yCACA,oCAAiDzc,UACjD,UACAusV,KAGA,SAFA,iCACA,iCACA,aACAz5S,0BACAA,0CACAA,gBACAw5S,iBAEA,mBACA,UACA9kT,QACAA,UACA,UACA,SACAA,QAAiBA,cACjBA,wDACA,UACA,WACA,2BACAA,oBACAA,wBACA6kT,0CAEA,cACA,kBACA7kT,eACA,UACA,gBAA8BA,WAAqB,yBAAuC,cAE1F,aAA+BA,SACrBA,QAAcA,cAIxB,GADAk6K,gBACA,mBACA,cACA,qBAEA,uCACAl6K,oBACAA,UACA,qCACAA,eACAA,uBACAqG,6BAGA,SAAc0+S,eAAmBA,GACjC9kT,wCACAA,yCACAD,eAGAxnC,gBACA+tV,yBACAxyI,kEAEA/zK,aAEA,kCAGA,eACA,8CAGA,eACA/qB,YACAA,kDACAA,sBAIA,iBACA,YACA1nR,KACA,gBACA,uDACAyyS,wCACA3zI,OAEA,0CAEA,UADA4zI,0BACAr+T,2CAA+F,KAA/Fq+T,gBAA+F,CAAa,aAAoB,wBAAoBryC,qBAEpJ,IADA,kGAAwHqyC,gCACxHqL,UAm3HA,iBACA,oDACA,2EACA,gBACA,uBACA,yBACAtL,EAEA,MAs3JA,CAAU/tN,yBAr3JV,iCAAiC69gB,gCACjC7vT,kBACAA,EA93HAytK,MAEAxB,IACA,2BACA,sBACA,kCACA,qBACA,oBACA,mBACA,qBACA,oBACA9zB,gDACA+/K,YACAlpb,eACAkpQ,eACAE,kBACA,8BACA,uCACA,+BAIA,OACA7/K,SAEAm8M,MAAgBkwI,YAAiE9wI,MAAmBj0K,0BACpG,IASAinT,GATAR,MAAexB,MACfC,sCACA7/R,UACA8/R,IAA2B7tnB,GAAIzE,aAAqBxB,GAAMwB,UAC1Dmhf,MAAgBG,MAChBixI,WACA9wI,MACAoxI,MAAe/wI,MAAgBgxI,WAC/BxzS,YACAkR,YACAuxJ,MACA85I,YAAiDc,UACjDR,IAAiC98gB,mBAAoBu9gB,cAAiB5H,MACtErzZ,eACA0rG,sCAEA,QADA4nT,MACA/zI,0DACA,OACA,eACA,gBAAoB,4EACpB,wDACA,MAEA,4BACA,+EAAwI5+L,WAAQ6+L,wCACtIoxI,MAASF,aAAgChxI,0BACnD,UACA,OACA,eAkBA,GAjBA/hK,yBACAnS,8CACAA,SACAglT,sCACAA,wBACOA,sBAEPyB,UACAA,MAAgBoP,oBAChBpP,yDACAA,eAAuBA,mBAEvBA,gCACA+I,sCACAvpP,qCACAupP,wBAAuCl4nB,GAAG69S,WAAQ9jT,GAAI8jT,cAEtD6qB,aAA4D,GAC5DymT,8BAEA,cAAsBsB,SAAWA,GACjC,cAAuBuH,SAAWA,IAClCvH,gBACA/nT,SACAglT,sCACAA,qBAAwClynB,QAC9BkynB,mBAAoDlynB,QAI9DuyV,cAEAA,QAf2BohS,yBAAiCphS,QAiB5DohS,cACA6R,wBACAjzS,uBACAA,uBACA,6BACAlT,MAEA,UACA,MACA,qCACA0S,uBACAA,uBACA,0BACAogS,cACAqT,yBAEAjzS,OAAWR,MAEXogS,cACAqT,wBACAvR,OACA,oCACAA,8BAA4CA,kBAC5C2H,WAEA,iBAA4B3H,aAAsB2H,YAElD,UACA,YACA,gBACA,wEACA3J,YACAI,iCACAH,kBACAhlT,mCACAglT,0BACAG,qBACAH,oBAGA1wI,8BACAjxJ,8BACAqrS,8BACA75I,eAEAswI,IAAgB7tnB,GAAIzE,aAAqBxB,GAAMwB,UAC/CgyV,QACAte,oBACA7tC,aACAu7M,eACA+wI,MAAqBhlT,0BACrBs0K,MACAM,MACA85I,MACA7G,IAAevskB,kBACf0zkB,mBAEA,UACA,QACA,gBAAmB,4EACnB,gCAEAzoT,oBACA8c,MAAgBoxJ,MAEhB,UAEA,QACA,wBACAN,aACA,UAEA,eACAA,sCACA/H,6BACA,aAAuB,SAAiB9gd,oBACxC,qBAA0C,UAAiB4pd,oBAA0C31W,aAA4B,MACjI,UAEA,SAEA,GADA,8BACA,kBAIA,IAHA0nf,cACAp6hB,SAAqBo6hB,oBAAoBA,WACzCA,0CACAxyI,eACAA,MAAoBtzP,GA3oPpB,EA4oPA,aAAsB4iG,eAAqBA,sBAE3C0wJ,WACApxJ,6BACA,aAAkBmC,cAAgBA,wBAClC,UAEA,aACA,qBACAwpS,wBACA,iBACA15I,IACAxxe,iBACAy0nB,6BAAkD1loB,WAElDm8nB,kDACAA,kBACA,UAEA,gBACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,YACA,IACA,cACA,SASA,IACA,aAyBA,IACA,aA4BA,IAEA,OAQA,IAEA,gBAsBA,IAEA,aApGA,IACA,OACA,gCACA,qCACA3J,yBACA,UACA,WACA,uBACAlxI,sBACA,MACA,IAEA,aACA,YACA,kBACA,cACA,eACA,cACA,eACA,cACA,iBACA,gBACA,kBACA,cACA,eACA,gBACA,oBACA,cACA,oBACA,iBACA,eACA,UACA,gCACA,0CACAwxI,yBACA,MACA,IAEA,aACA,WACA,gBAAmB,6EACnBp/S,oBACA,UAEA,UACA,gBACA,wEACAkmK,OACAt6J,iBAEA5L,oBAEA/xD,IADAkkB,cACA8/V,iCACAxR,IAAgB7mnB,aAEhB,UAEA,aACA,gBAAmB,gFACnB,oCACA,iBACA6knB,mBAAgC7sO,oCAChC5xE,oBAEA,MAEA,IAEA,iBACA,gBACA,4EAEA,wDAEA,MAGA,IACA,uBACA,yBACA,+BACA,6BACA,iBACA,iBACA,YACA,cACA,iBACA,iBACA,cACA,aACA,4BACA,mBACA,gBACA,oBACA,sBACA,mBACA,gBAAmB,4EACnB,wDACA,MAEA,QAMA,GAFA,iCAEA,0CAEA,UACA,+BAEA,2CACA,eACA,gCACA,yBACA,2BACA,aACA,YACA,YACA,UACA,uBACA,oCACAivK,MACM,UAGN,qCACA,cACA,qBACA,yBACA,YACA,cACA,gBACA,eACA,gCACAA,MACM,UAGN,kCACA,WAEAw5I,uBACA,UACA,8BACA,4BACA,uBACA,mBACA,kBACA,iBACA,iBACA,eACA,uBACA,oBACA,qBACA,kBACA,sBACA,wBACA,cACA,gBACA,iBACA,sBACA,qBACA,UACA,6BACA,0BACA,gBACA,oBACA,gBACA,WACA,UACA,YACA,qBACA,kBACA,eACA,oBACA,UACA,iBACA,cACA,eACA,cACA,iBACA,cACA,YACA,WACA,UACA,oBACA,qBACA,+BACA,aACA,kBACA,mCACAx5I,MACM,UAGN,oCACA,iBACA,aACA,sBACAA,MACM,UAGN,qCACA,UACA,0BACA,gDACA,0BAA+C,UAC/C,mCAEAmwI,yBACA,UACA,SACAX,qCAAuE,QACvE35lB,oEACA,UACA,SACA25lB,qCAAuE,QACvE35lB,oEACA,UACA,cACA,iBACA25lB,qCAAuE,QACvE35lB,6CACAA,gDACAA,mDACAA,sDACA,UACA,qBACA2jmB,wBACAA,8BACAA,mBACA,UAEA,kBACA,oBAEA,sBACA,gBACA,IAEA,wBACA,IAEA,gBACA,gBACA,uBACA,0BAEA,eACA,YACA,kBACA,YACA,YACA,WACA,aACA,aACA,gBACA,eACA,qBACA,sBACA,uBACA,uBACA,2BACA,yBACA,qBACA,iBACA,oBACA,wBACA,gBACA,qBACA,qBACA,qBACA,oBACA,eACA,eACA,gBACA,qBACA,WACA,kBACA,gBACA,gBACA,kBACA,sBACA,sBACA,sBACA,sBACA,4BACA,uBACA,oBACA,gBAIA,IACA,oBACA,2BACA,qBAIA,IACA,oBACA,wBACA,uBACA,qBACA,0BACA,oBACA,0BACA,iBACA,oBACA,gBACA,wBAtBA,IACA,2BACAhK,oCACAA,wBACA,MAGA,IACA,8BACAA,oCACAA,uBACA,MAWA,QACAxvI,MACM,UAGN,gDACA,2BACA,gCACA,uBACA,eACA,iBACA,kBACA,iBACA,6BACA,uBACA,eACA,gBACA,eACA,gBACA,iBACA,kBACA,kBACA,iBACA,uBACA,WACA,eACA,eACA,iBACA,6BACA,eACA,gBACA,oBACA,iBACA,0BACA,aACA,eACA,gBACA,oBACA,eACA,wBACA,qBACA,kBACA,qBACA,kBACA,kBACA,sBACA,yBACA,wBACA,2BACA,4BACA,4BACAA,MACM,UAGN,+BACA,gBACA,eACA,gBACA,eACA,eACA,aACA,uBACAA,MACM,UAGN,+BACA,uBACA,0BACA,oBACA,6BACAA,MACM,UAGN,+BACA,SACA,qBACA,wBACA,kBACA,gBACA,yBACA,qBACA,gBACA,iBACA,iBACA,kBACA,kBACA,eACA,aACA,iBACA,qBACA,yBACA,yBACA,aACA,aACA,cACA,wBACA,2BACA,qBACA,gBACA,iBACA,UACA,YACA,qBACA,sBACA,mCACAA,MACM,UAEN,iBACA,kBACA,YAEA,WACA,UACA,UACA,WACA,iBACA,YACA,oBACA,YACA,iBACA,mBACA,iBACA,mBACA,iBACA,gBACA,gBACA,gBACA,gBACA,eACA,aACA,aACA,aAEA,8BACAA,MACM,UAEN,cACA,wBACA,kBACA,YACA,WACA,UACA,UACA,WACA,iBACA,YACA,oBACA,YACA,iBACA,mBACA,iBACA,oBACA,mBACA,iBACA,gBACA,gBACA,gBACA,gBACA,eACA,aACA,aACA,uBACAA,MACM,UAGN,oDACA,UACA,YACA,YACA,YACA,YACA,cACA,eACA,gBACA,kBACA,oBAEA,aACA,cACA,kBACA,eACA,UACA,gBACA,cAEA,oBACAA,MACM,UAGN,0BAEAA,MAIA,GAFAA,IAEAzB,8BACA,wEACA,oDACA,gCACA,+CACWpwJ,MAASgiS,0BACpB,MAEA,0DAEA,UACA,kDACA/9O,iBACAA,eACAA,cACAA,YACAA,gBACAA,mBACAA,GAGA,iBAEA,OADA6wP,YACAvuU,sBACA,+BACA,oDACA,4BAMA,iBACA,SAEA,uBArgaA,iBACA,SACA,6BACA,YAAiBiW,cAAuBA,8BACxC,QAAaA,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aAAoB6xI,eAAqBA,GACzC,6CACA9iS,wCACA,qBACAA,uDACAgxJ,yCACA,MAIAC,UACAn2K,wCACAA,2BACKA,WAGLwjB,IACAm1S,OACAC,QACAC,UACAC,WACAC,UACAC,WACAC,YACA9F,OACA/D,WACA8J,YACAC,+BACAC,kBAEArvU,qCACA,OACA88T,MACA3jS,MACA4jS,YACAryI,MACA85I,MACAA,wBACAA,sBACAA,oBACAA,YACAA,UACA,IAIA5G,GAJAf,KACAyI,KACAvpP,WACA4hP,MAIAlkS,iBACA/yV,QAEA,QADAm3nB,MACA5yU,iBACA,WACA+/L,mBACA,yBACA,wCACA1vJ,UACA,kDAGA,aACA,iBACA,yBAGA,GADAuhS,MACA,oBACA,uBACA,GADiChjS,OACjCJ,sFACA,WACAxuC,QAAmB4uC,QAInB,UAIA,GAHAuxJ,yBACAkkJ,kBAEA,mDACA,gBACA,GAEAx5T,uCAAyD,WACzD,2BAAiE,WACjE,GAGA,GAFA2jB,gBACAA,WACAz5B,yDACA,mEACA,sDACA,WACA,kBAAwD,WACxD,GACA,kBAEA,gBACA,cAAkC,WAClC,aAAkC,WAClC,cAEAt5T,kBACAm3nB,MACA,WACA,kBAAmD,WACnD,mBAAwD,WACxD,yBAA+D,WAC/D,uBAA6D,WAC7D,uBAA6D,WAC7D,sBAA2D,WAC3D,sBAA2D,WAC3D,2BAAqE,WACrE,4BAAuE,WACvE,qBAA2D,WAC3D,wBAAoE,WACpE,IACAzyI,kCACAA,gDAA8DwiJ,UAC9DxiJ,gDAA8D/9N,SAC9D,WACA,2BACA,IACAy8N,YAAoB,WACpB,IACA06I,cACAA,uBACA,WACA,YACAA,yBACA,WACA,YACA5G,IACAhknB,aACAy0nB,8BAEAjjJ,gCACAo5I,kBACAA,QAAwBA,SAAkBA,cAC1CA,yBACA,6CACAp5I,oEACAuyI,eAAyC1vO,8BACzC,WACA,qBAA2D,WAC3D,GACA,eAAgCu2O,SAAkBA,cAClDA,mDAAwFA,yBAAyC,WACjI,KAEA,mBACA,6BACA,WACA,oBAAsD,WACtD,2DAAsG,WACtG,IACAljT,0CACAmY,wBACM,WACN,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MACzB,IAAyBA,EA5qHzB,eAGA,OAFAxuI,MACAopB,MACA,SA0qHA,IAAyBolH,EA7vHzB,eAGA,OAFAxuI,MACA0jH,gBACA,OA2vHA,IAAyB8qB,MACzB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IAAyBxgT,KACzB,IAAyBA,MACzB,IAAyBA,KACzB,IAAyBA,MACzB,IAAyBwgT,EA10EzB,mBACA,YACAE,kBACAhrB,OACA,uBACAsuC,SACAswJ,aACAxtK,SACA,uBAOApxB,MACA,QAAarxS,wBACb,mCACAyiU,oBACA7tC,KAwzEA,MACA,MACA,IAAyBunC,EA1xRzB,mBACA,SAEAC,wBAEA,MAr7MA,eACA,sBAYA,OAXA/qB,MACA,CACAwkV,UACAC,YACAC,eACAC,eACAC,cACAC,aACAC,eACAC,cAEA,CAw6MAjgW,IAWA,OAVAkmC,wBACAA,4BACAA,wBACAA,wBACAA,0BACAA,2BAGA,MADAhrB,kBACA+qB,UAEA/qB,sBAEA,4BAAyC,WACzC,0BAGA,uBACA,wBAEA,uBACA4+L,oBAEA,uBAMA,OALAxtK,qBAEApxB,MACA+qB,QAjhNA,eACA,SAIAA,EAHA/qB,kBAGA,EAEAgrB,kBACAqL,uBACAiY,mBACAswJ,mBACAxtK,mBAGA,OAFApxB,MAEA+qB,QACA,WAAwB,WACxB,EACAhW,UACA,aAEAxxB,mBACA,WACA,EAEAwxB,qBACA,WACA,YAEA,8CAEAA,EAm/MA/xH,IAEAg9G,sBAEA,mBAAgC,WAChC,mBAGA,oBAEA+qB,IAivRA,IAAyBD,EA1yRzB,iBAGA,OAFA9qB,gBACAt6F,MACA,GAwyRA,IAAyBolH,MACzB,IAAyBA,MACzB,IAAyBA,EApqRzB,iBACA,YACAC,kBACAC,kBACA,aACA,CAASmtT,qBAgqRT,MACA,IAAyBrtT,EA19ezB,eACA,6BA09eA,MACA,IAAyBA,EAziQzB,eAGA,QAFA/V,KACA8V,kBACAA,QACA9V,0CACA,WAqiQA,IAAyBzqS,KACzB,IAAyBA,MACzB,IAAyBA,KACzB,IAAyBA,MACzB,IAAyBA,KACzB,IAAyBA,MACzB,MACA,MACA,IAAyBwgT,MACzB,IAAyBA,EA1uHzB,eAGA,OAFA9mC,MACAj+E,MACA,QAwuHA,IAAyB+kH,EAz2PzB,eACA,SACA/V,oBACA,SACA8V,oBACAA,oBACA9V,UACA,sBACA,sBACA,eACAA,IAg2PA,IAAyB+V,EA7+GzB,iBA8+GA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,KAAyBxgT,KACzB,KAAyBA,MACzB,KAAyBA,cACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,MA3jHzB,eACA,sBACA,eACA,CAAUw3mB,YAyjHV,KAAyBx3mB,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBwgT,EA96HzB,iBACA,SACAC,SAAuB,YACvBF,gBACAA,gBAEA7qB,QACA6qB,kBACAA,IAu6HA,KAAyBC,WACzB,KAAyBA,EApoHzB,iBAqoHA,OACA,KAAyBA,EA76EzB,iBACA,SACAC,kBACAF,sCACA,mBACA,kCACAA,mCACAA,sBACAA,gCACAA,mBACAA,wBACAA,gCACAA,6BACAA,0BACAA,qCACAA,mCACAA,qCACAA,6BACAA,qDACAA,mCACAA,mDACAA,IAy5EA,OACA,OACA,KAAyBC,EAl8EzB,iBACA,SACA,gCACAD,yBACAA,qBACAA,aACAA,IA67EA,OACA,OACA,KAAyBvgT,MAx1TzB,eACA,0CAw1TA,KAAyBA,MACzB,KAAyBA,UACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,OACA,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,KAAyBwgT,MACzB,KAAyBxgT,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBwgT,EAvxQzB,iBACA,OACA6H,sBACAn8D,wBACArwN,cAoxQA,KAAyB77B,MACzB,KAAyBwgT,EArvQzB,eACA,cACA,oBAmvQyBxgT,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBwgT,MACzB,OACA,OACA,OACA,KAAyBxgT,KACzB,OACA,KAAyBwgT,MACzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBxgT,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,OACA,OACA,OACA,KAAyBA,KACzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBA,KACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,MACzB,KAAyBwgT,EAh5HzB,mBACA,YACAE,QACAqL,mBACAiY,OACA,GADgBA,SAChBzjB,eACA,qBACAyjB,cACGtuC,MACH,YAw4HA,KAAyB8qB,EAp4HzB,mBACA,YAEAuL,IADAjvF,UAEA,kBACA,qBACAivF,SACAr2B,WACGA,MACH,YA43HA,OACA,KAAyB11R,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBwgT,EAt5HzB,eACA,SACA,8BAAqC/V,aACrCA,IAo5HA,OACA,OACA,KAAyBzqS,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBwgT,EAhwIzB,iBAiwIA,KAAyBxgT,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBwgT,EAj/HzB,iBACA,YACAC,WACAC,QACAqL,SACAiY,SACAswJ,SACA5+L,MACA,QAAWglV,iCACX,2BACA5zT,KAw+HA,KAAyB9mT,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,OACA,OACA,KAAyBwgT,MACzB,KAAyBA,MACzB,OACA,OACA,KAAyBxgT,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBwgT,MACzB,KAAyBxgT,KACzB,KAAyBA,MACzB,KAAyBA,MAn7PzB,eACA,SACAyqS,0BACA,eACA,iBACAA,cACA/U,QACA+U,IA66PA,KAAyBzqS,MACzB,KAAyBwgT,MACzB,KAAyBxgT,KACzB,OACA,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,OACA,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,KACzB,OACA,KAAyBA,MACzB,KAAyBwgT,EA53GzB,iBAGA,OAFA9qB,QAEA,CAAU75P,KADVu/J,MACU,GA03GV,OACA,KAAyBp7L,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,KAAyBA,KACzB,OACA,KAAyBA,MACzB,OACA,KAAyBA,KACzB,OACA,KAAyBA,MACzB,OACA,OACA,OACA,KAAyBA,KACzB,KAAyBA,MACzB,KAAyBA,KACzB,KAAyBA,MACzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,KACzB,MAAyBwgT,EAniIzB,iBAoiIA,MAAyBxgT,KACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,QACA,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,MACzB,MAAyBA,MACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,MAAyBA,KACzB,MAAyBA,MACzB,QACA,QACA,OAAyB1c,OAIzBiqe,IAEA,GAAyB/sK,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,MACA,MACA,IAAyBA,EAl6azB,mBACA,gBACA,wCACA,0BACA,uBAEA,QAAWptU,SADXsiT,wCACwB,CAGxB,OAjBA,mBACA,wCACAq2B,sCAEA,QAAU34U,SADVsxV,UACsBV,OAatB22S,UA05aA,MACA,IAAyBn6T,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,MACzB,IAAyBA,EA5wUzB,mBACA,OAAY3mU,kCACZ,0BAjBA,qBACA,OAAY0tB,mCACZ,+CACAk5S,yCACAA,mCACAC,EAaAk6T,eACAn6T,IAywUA,IAAyBD,EA51bzB,mBACA,OACAq6T,yBACArpY,oBAEA,0BACA,aACA,gBAA+B,cAC/BkkD,QAEA,wBACA+qB,IAk1bA,IAAyBD,MACzB,MACA,IAAyBA,EAz4bzB,eAIA,OAAUs6T,KAHVplV,iCAGUqlV,KAHVrlV,iCAGU8H,MAFV9H,gBAEUslV,OAFVtlV,gBAGAulV,SAHAvlV,gBAGA36R,SAFA26R,gBAEAwlV,SAFAxlV,gBAEA,GAq4bA,IAAyB8qB,MACzB,IAAyBA,EAr2bzB,iBAs2bA,IAAyBA,MACzB,MACA,MACA,MACA,MACA,IAAyBA,MACzB,MACA,MACA,MACA,IAAyBA,EAniczB,mBACA,SAAgB,cAAkB,GAClC,UAEAE,YACA,6BACAA,IA8hcA,IAAyBF,EA15azB,mBACA,sBAuBA,mBACA9qB,OACA,sBACAgrB,kBACAqL,mBACAr2B,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,OACA+U,MACA,UACA,mCACA,CAAU0wU,oBAzCVhxW,QACA,YACAu2C,EAntBA,iBAGA,QAFAH,QACAE,KACA/qB,QACA,sBACAA,OACA,IACA+qB,mBAC6B,CAD7B,MACIsL,IAAW,aAActL,GAE7B,uBACAA,EAwsBAljD,cACA,OAAU49W,cAu5aV,MACA,IAAyB36T,MACzB,MACA,MACA,IAAyBA,MACzB,KAAyBA,MACzB,KAAyBA,EApnbzB,eACA9qB,OACA,wCAGA,GAFA,iBACA,iBACA+U,4DACA,WA+mbA,KAAyB+V,EAxhczB,mBACA,oDACA,OAAU46T,yCAuhcV,KAAyB56T,MACzB,KAAyBA,MACzB,KAAyBA,MACzB,KAAyBA,EAthczB,mBACA,SACA,aACA,OACA,KADAC,aACAhsU,qBACA,CAAWonD,QAEX,sBACAkwR,qBACAiY,mBACA,gBACA,iBAA4B,WAC5B,kBAA6B,WAC7B,kBAA6B,WAC7B,iBAEA,OACA,KADAvjB,aACAhsU,qBACA,CAAU89V,4BAqgcV,OACA,KAAyB/xB,EA5yazB,eACA,cACA,yBAAyB/V,cACzB8V,kBAAyB9V,cACzBA,IAyyaA,KAAyB+V,MACzB,OACA,KAAyBA,EAzxazB,eAGA,QAFA/V,kBACA8V,KACA9V,sBACA,WAsxaA,OACA,OACA,OACA,OACA,OACA,KAAyB+V,MACzB,OACA,OACA,KAAyBA,MACzB,KAAyBA,EApvazB,iBACA,SACA,cACA9qB,QACA6qB,eACAA,eACA7qB,QACA6qB,IA8uaA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBC,EAzxbzB,iBAIA,QAHAD,UACAE,oCACAsL,MACAr2B,sBACA,+CACA,uBACA,8DACA,OAAStiT,yBAkxbT,KAAyBotU,EA/wbzB,iBAIA,QAHAD,UACAE,oCACAsL,MACAr2B,gCACA,kDACA,uBACA,iEACA,OAAStiT,wBAwwbT,KAAyBotU,MACzB,OACA,OACA,OACA,OACA,OACA,KAAyBA,MACzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBA,MACzB,OACA,KAAyBA,MACzB,OACA,KAAyBA,EAhvbzB,mBACA,SACA,8BAA8BC,2BAAiCA,wBAC/DA,sBACA,EACAA,OAjDA,qBACA,SACAsL,sCACAuoK,sCAGA,OAFA5zK,yBAEAD,eACAC,WACAA,gBACAA,eACAA,oBACAA,iBACAA,oBACAA,wBACAA,sBACAA,mBACAA,mBACAA,mBACAA,mBACAA,mBACAA,oBAEAA,eACAA,mBACAA,iBACAA,qBACAA,qBACAA,sBACAA,qBAEAA,gBACAA,sBACAA,qBACAA,mBAEAA,iBACAA,oBACAA,sBACAA,EAWAr/C,iBACAo/C,IA2ubA,KAAyBD,EA7mczB,iBACA,cACA9qB,gBACA,OA2mcA,KAAyB8qB,MACzB,OACA,KAAyBA,EA5+azB,iBAGA,QAFAD,KACAE,kBACAA,mBACA,WAy+aA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBD,EA5jczB,iBAKA,QAJAD,QACAE,kBACAC,kBACAqL,MACAiY,KAAgBA,eAA2BA,GAC3CjY,eAEA,kBAAmBA,YACnBA,KAojcA,KAAyBvL,EAp6bzB,mBACA,gBACA,8BACAC,IAk6bA,KAAyBD,EAviczB,iBACA,SACA,8BACA9qB,SACA6qB,IAoicA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBC,MACzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBA,MACzB,KAAyBA,MACzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyBA,EAvrbzB,mBACA,YACAE,kBACAqL,mBAEA,GADAxL,WACA,iCACA,gEAIA,QAHAyjB,YAEAswJ,MACA7zK,sBACA,qBA6qbA,KAAyBD,MACzB,OACA,OACA,OACA,OACA,KAAyBA,EA7+azB,mBACA,UACAE,KACA,IACAhrB,OACA,oBAA0BylV,YAAUA,QAEpC,uCAxhCA,eACA,sBACAzlV,MACA,sBACA,cACA,MAohCA4uL,IACA,uBACA5uL,gBACAt2D,MACA,uBACAs2D,QAGA,aAAgBzc,qBAAwBA,IACxC,iEACA,cAGA,IADAynC,GADA2pE,iCAEA51Y,2BAEA,kCACA,gDAGA,eAQA,CAAUpB,IACiC,CADjC,MACRkynB,IAAW,eAAqB,CAASlynB,QA08a3C,KAAyBmtU,MACzB,KAAyBA,EAv8azB,iBACA,YACA9qB,QACA,MA7/BA,iBACA,YACA+qB,kBACA,2DACA,sBACA/qB,OACA,4BACA,qBACA,sBACA,6BACA,2BACA,oBACA,4BACA,iBACAA,MACA,sBACA6vU,qBACAA,gBACA,6DACA,QAAa6Q,WACb,wBACA9Q,iBACAv5S,oBACAyoK,GAs+BA1oL,SACA,cAo8aA,OACA,KAAyB0U,MACzB,OACA,KAAyBA,MACzB,OACA,OACA,KAAyBA,MACzB,KAAyBA,EArjczB,eACA,uBACA9qB,iBAmjcyBtiT,KACzB,KAAyBotU,MACzB,KAAyBA,MACzB,KAAyBA,MACzB,KAAyBA,EA5tbzB,mBACAD,mCACA,gBACAG,QACA,eACAD,IAwtbA,KAAyBD,EAl9bzB,mBACAD,mCACA7qB,QACAgrB,YACAqL,eACA,gBACArL,IA68bA,KAAyBF,EA7ubzB,mBACA,gBACAE,QACA,eACAD,2BACAA,IAyubA,KAAyBD,MACzB,KAAyBA,EA3lczB,eACA,SACA/V,oBACAA,oBACAA,0BACA,sBACA/U,OACA,sBACA,cACA,mBAEA,oBACA,mBACA+U,IA+kcA,OACA,KAAyB+V,MACzB,KAAyBA,MACzB,OACA,KAAyBA,EAzhczB,mBACA,iCAEA,CAAUg3T,OADV9hV,gBACU,GAuhcV,KAAyB8qB,EAn5bzB,eACA,wCACAC,QACA,OAASrtU,gCAi5bT,OACA,QACA,MAAyBotU,EA18bzB,mBAGA,OAFA9qB,gBACAgvC,UACA,GAw8bA,QACA,MAAyBlkB,EAhobzB,mBACA,YACA9qB,MACA,sBACA,MACA,MADA+U,KACA8V,UA4nbA,MAAyBC,EAj9azB,iBACA9qB,gBACA,YACA+qB,qCACA,MACA,GADAA,mBACA,GA68aA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBD,MACzB,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBptU,MACzB,QACA,QACA,QACA,MAAyBotU,MACzB,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBA,EAj9azB,eACA9qB,OACA,OAAU2lV,cACV,8BACA5wU,sBACAA,GA48ayBr3T,MACzB,MAAyBotU,EAhoSzB,iBACA9qB,IACAA,OACA,sBACAA,OAGA,QAFAgrB,kBACAqL,MACArL,2BACA,OAASmtT,gBAwnSgBz6nB,MACzB,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBotU,WACzB,QACA,MAAyBptU,MACzB,QACA,QACA,QACA,QACA,MAAyBotU,EAhtbzB,mBACA,gBACA,sBACAE,kBAGA,OAFA2pE,UACAA,UAJuC,CAAlB30F,MAKrB,EA0sbyBtiT,MACzB,QACA,MAAyBotU,EA/sSzB,mBACA,YAEA,YADA9qB,gBAEA,kBAAsC,YAAdA,OACxB,IAEAsuC,GAFAjY,gBACAr2B,MACU,IAAMsuC,UAAsBnrV,cAA8B,CAA9B,MAAmBiuU,IAAW,OACpE,0CACA,MACA,kBAqsSyB1zU,MACzB,QACA,QACA,QACA,MAAyBotU,EAvrbzB,eAIA,OAHA,oBACA,oBACA9qB,gBACA,EAmrbyBtiT,MACzB,MAAyBotU,MACzB,QACA,QACA,QACA,QACA,MAAyBA,EAtqczB,eACA,MA1SA,eACA,sBACAD,kBACA,cACA,CAAS1nU,gBAsST+0T,IACA,iEAEA,WADAlY,eACA,GAmqcA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyB8qB,MACzB,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBA,EA5+azB,mBACA,OAAY86T,SACZ,aAAsB,cAAkB76T,EACxC,sBAA6B,cAC7B,kBACAA,IAw+aA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBD,EAzjbzB,eAGA,QAFA/V,kBACA8V,KACA9V,sBACA,WAsjbA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QAEA,GAAyB+V,MACzB,KACA,GAAyBA,EAv8azB,mBACA,gBACAE,kBACA,eACAD,QACAA,IAm8aA,GAAyBD,EAt9azB,mBACA,gBACAE,QACA,eACAD,QACAA,IAk9aA,GAAyBD,EAh+azB,mBACAD,mCACA,gBACAG,YACA,iBACAD,QACAA,IA29aA,GAAyBD,EAt7azB,mBACA,YACAE,YACAhrB,MACA,aACA,gBACAgrB,6BACAA,IAg7aA,GAAyBF,EA77azB,eACA,sBACA,cAAiB9qB,MAAU,IAC3BA,8BA27aA,KACA,GAAyB8qB,MACzB,MACA,IAAyBA,MACzB,IAAyBA,MACzB,MACA,MACA,IAAyBA,MACzB,MACA,IAAyBA,MAKzB,IAAyBA,EA37azB,iBACA9qB,OACAA,OACAA,OACAA,OACAA,OACAA,YA67aA,MAcA,MACA,IAAyB8qB,EAv/bzB,eACA,SACA,8BAA8B9qB,MAAU+U,wBACxCA,sBAA8BA,YAC9BA,WACAA,UACAA,IAk/bA,IAAyB+V,MACzB,MACA,MACA,OACA,KAAyBA,EAjibzB,eACA,sBACAD,kBACAE,kBACAC,GAAUiuT,2CACV,cACAjuT,IA4hbA,OACA,OACA,OAIA,KAAyBF,EAz8azB,eACA,sBACAD,2CACA,kCACA,CAAU8H,kBAs8aV,OAEA,OACA,OACA,OAIA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAAyB7H,EAp+azB,mBACA,YACAE,YACAqL,mBACAiY,cACA,aACAtjB,UACAA,SACAA,IA69aA,OACA,OACA,OACA,OACA,KAAyBF,MACzB,KAAyBA,MACzB,KAAyBA,MACzB,KAAyBA,MACzB,OACA,KAAyBA,EArgczB,eACA,SACA,8BAA8B/V,2BAAiCA,wBAC/DA,sBACAA,UACAA,IAigcA,MAAyB+V,MACzB,MAAyBA,MACzB,MAAyBA,EAjgczB,eACA,SACA,8BAA8B/V,2BAAiCA,wBAC/DA,sBACAA,UACAA,IA6/bA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAAyBr3T,MAGzB,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OAEA,UAGA,qBACA,QACA,aACA,6BACA4wV,aACAA,oBACAA,qBACAjY,wBA0BA,qBACA,YACA,iBACAuoB,eACA5zB,EAYA,iBACAjW,sBACA,4BAAwC,cAAcz+R,SAEtD,kDACAshd,gDACA,eAAoB5sK,WAAiBA,QACrC4sK,oFAKA,0BACA,SACA,aAEA,IADAtpJ,oCACmBtjB,2BAAkCsjB,+BAErD,SACA,cACA,KAAQswJ,qBAA4B5zK,iCACpC4zK,sCAAqD+1I,cAErD,6BACA,YACA,sCAaA,YAZA,uCAEA/8I,OA/nbA,uBACA,aACA,4BACAvhK,oBACAA,GA2nbA7+C,gBACAthQ,UAEA0hd,uBACA/ja,aAKA+ja,OAtpbA,uBACA,cACA,4BACAvhK,wBACAA,GAkpbA/+C,gBAHAsgN,uBAIA,IACA,YAEsE,YAAtEA,wBAAsE,IAEtE,cAGA,YADAA,OArDA,mBACA,uBACA,iBACA7sK,0BACAA,iCACAA,8BAgDA86T,6CAIAjuJ,qBAiCA,iBAKA,QAJA/sK,QAEAE,OACAC,IACAqL,KAAaA,yBAAuBA,qCACpC,wFACAuhK,kDACA53L,gBAAqBi6U,aAAaK,0BAClCzvT,YAAe8pT,aACf9pT,6BAAmDA,YACnD,YACA,OA1CA,uBACA,wBACAyjB,mCACA,6BACA,wFACAA,4BACAA,8BAKA,QAHAoxJ,aAAyBs6I,cAAcC,aAAaK,SACpD1K,YAEA9wI,UAAwBA,aAAgBA,iBACxC,kBAAwBwyI,aAAgBA,GAGxC,IAFAj7S,4BACAjF,UACA0tK,UAAqBA,aAAgBA,IACrC,+BACAgxI,KAEAgW,oBACAhW,6BAKAhzU,SAiBAipV,qCAEAl7T,sCACAA,kBAz1cA,eACA,qBACA,iCACA9V,iCACAA,EAq1cA/7H,MACA4+S,UAp1cA,eACA,qBACA,cACA7iL,0BACAA,iCACAA,EA+0cA97H,QAEA4xI,+BACA,oBACA,UA9scA,eACA,YACA,cACA9V,4BACAA,MACAA,EAyscAixU,MAA0D,WAC1D,mBAA0D,WAC1D,oBAA0D,UAG1Dn7T,wBAA0BA,iBAAkBA,SAE5CE,iBACA6sK,SACA7sK,QAGA,eA2PA,mBACA6sK,QAxqdA,iBACA,sBACA7sK,eACAsL,MADAtL,6BAEA,uCACAsL,oBACAA,sBACAA,oBACAA,oBACAA,2BACAtL,uBACAsL,sDACAA,GA4pdA3sJ,EACA4mK,MACAzjQ,OAAU6vT,SACVv2V,aACA62kB,SACAC,gBACEpyT,IA4CF,iBACA,KACA,SACA9V,0BACA8V,WACA+sK,SAzmcA,iBACA,aACA/sK,mBACAA,mBACAA,6BACAA,mBACA,QACA,wBACAA,mBACAE,aACAF,mBACAA,mBACAA,EA6lcAr1C,gBAKA,0BACA,4BACA,mBAIA,oCACA,gBACA,YACA,sCACAt/P,wCACA29C,aAEA+ja,SAx9cA,qBACA,aACA,mBACA13S,QACA8qI,EAo9cA56C,aAFAwnN,6BAGA,UACA,YACAA,+BACA,UAEA,cACA,aAEAA,SArudA,qBACA,aACA,mBACA5sK,mBACAA,EAiudAphJ,KADAq8c,oDACA33S,UACKspJ,SAttdL,uBACA,qBACAtpJ,6BACA,oBACAA,2BACAjY,wBACAiY,sDACAA,GA+sdK7jK,oDACL,cAEAmtT,0BAvBAA,oBAuBA,CAKA,mBA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AAuBixI,MAAwB9wI,MAC/CzvJ,MAAiBsgS,KAAcE,MAE/BnwI,MAAkBnxJ,KAClB,UAEA,UACA,YAAsBmxJ,wBACtBnxJ,yBACA,UAGA,oCACA,eACA,sBACA,8BACA,4BACA,4BACA,aACA,YACA,eACA,YACA,wBACA,iBACA,WACA,gBACA,sBACA,QACA,gBAAoB,sDACpB,wDACAc,MAAgBsgS,KAAcE,MAC9B,UAEA,wBACA,sBACA,iBAgBM,IAEN,aACA,gBACA,uBAEA,oBACA,cAIK,IACL,UACA,gBAEA,2BACA,uBACA,8BACA,2BACA,4BAEA,SACA,IAEA,eAEA,UACA,YACA,WACA,UACA,kBACA,mBACA,cACA,YACA,cACA,cACA,QACA,IAEA,UAmBA,IAEA,mBACA,sBACA,oBAEA,0CAEA,YACA,mBACA,wBACA,iBAEA,yBACA,2BACA,gBAOA,IAEA,yBACA,2BACA,wBACA,kBACA,mBACA,uBACA,WACA,cACA,kBAEA,UACA,iBACA,OAUA,IACA,IAQA,IAEA,WAEA,aACA,+BACA,WACA,kBAGA,mBACA,eAEA,gBACA,0BACA,yBACA,mBACA,oBACA,sBACA,aACA,iBACA,gBACA,uBAEA,8BACA,8BACA,4BAGA,uBACA,sBACA,sBACA,mBACA,sBACA,mBACA,2BACA,iBACA,qBACA,wBACA,oBACA,kBACA,yBACA,qBACA,+BACA,kBACA,sBACA,cACA,gBACA,oBACA,aACA,IAEA,iBACA,IAEA,sBACA,oBACA,iBACA,gBACA,yBACA,mBACA,uBACA,iBACA,IAGA,cACA,IAGA,kBACA,iBACA,WAGA,wBACA,gBACA,gBACA,wBAGA,uBACA,wBACA,qBACA,uBACA,uBACA,2BACA,0BACA,yBACA,wBACA,8BACA,2BACA,6BACA,iCACA,wBACA,uBACA,0BACA,IAGA,OACA,IAGA,2BACA,0BACA,eACA,aACA,IAEA,iBACA,WAYA,IAGA,uBACA,6BACA,qCAhQA,IAEA,iBACA,oBACA,mBACA,qBACA,uBACA,iBACA,aACA,gBACA,oBACA92I,kCACA/5Q,oBACM,qCACN+xG,8BACM,MAON,IACA,QACA,oBACA,4FACK,MA4BL,IACA,OACA,gCACA,8CACA,mBACA,iBACA,aACApG,0BAGA00K,yBACA,UAEA,cAEAizI,OADA/zI,iBACA,uBACA,QAAmBjwe,kCACnB8rnB,yBACAZ,kBACA,MAeA,IAEA,YAEA,GACA,gBAFAj7I,iBACA,cACAi7I,uBAEA,MAcA,IACA,6BACA,0DACA,uCAGM,sBAENnqS,UACa5uV,aAAsCkvnB,8BANnD,CACA,gCACAtgS,kCAKA,MACA,IAEA,iBACA,qBACA,IAEAovJ,IADA6zI,0CACA,oBAAwC3vO,UAClC,CADkC,MAClC29F,KACN,MA+GA,IAEA,IACA,gBAEA,KADA+xI,iBACA77kB,WACA67kB,6BAA2CA,QAC3C,qDACAC,0BACAD,+BACOA,+DAEP,MAKA,QACA,kBACA,UACA,eACA,aACA,WACA,gBACA,YACA,aACA,aACA,YACA,WACA,cACA,UACA,cACA,8BAGA,QACA31gB,UACAC,cACAg9gB,aAEA,sCACAjH,GAGA,iBACAh+T,QACAvzR,+BAj4iBA,iBAIA,QAFAupS,EACAC,EAFAH,QAGAE,cACA,iBACA,WACA,UACA,aAEA,SADAC,eACAznJ,MAXA,mDAWAynJ,OACA,0DACA,UACA,sBACA,gBACA,2BACA,iBACA,sDAEA,YACA,SA62iBAt5D,kCACA,yBACAq5D,eACAC,sBACA,+DACA,qBACA,yDACAqL,kBACAA,GAEA,iBACA,cACA,yBACAxL,EAIA,OAAkD,WAClD,OACA,yBACA,oEACA,kBACA,6CACA,kBACA,6CACA,uBACA,2BACAv0S,SAEAy+R,iCACA,kEACA,gEACA,gEACA,8DACA,iEACA,yEACA,6CACA,8CACA,qEACA,uEACA,0DACA,yBACE,kCAEF,kBACA,aA5BkD,GAiClD,iBACA,uBAA8C,gBAAqBshB,WAGnEn6U,EAOA,IATA8jT,2BAIArzS,cAAkB,IAClBynB,+EACA4rR,6BAGA,QAMA,GAHAA,qBAA8B6qB,cAG9B,YAEA,IADAwL,MACA,sCACA,SADuDiY,GACvD,IACAA,KACAvjB,mFAEAA,8DAEA/qB,gBAAuBsuC,KAIvB,iCACA,MAAUvjB,8BAA+C,2KACzD,gCAAuCA,8BAA+C,kHAGtF,gCAAuCF,eAAqBE,4BAA6C,2IAAsJ,mCAA/P,CAGA,UACA,mCACAF,SACAltU,OAAY2wV,cAAeA,sCAC3B,oBAAyCA,GAAK,YAC9C,IACA1gV,kBAAyB21R,cAAeA,qBACxC,wBACA,oBAA2C+qD,GAAK,YAGhD,YACA,mDACA,SAD2DA,GAC3DjY,QACA,iCAAwD,UACxD,yDAAgF,UAChF,qEAEA,kCACAtL,wHACA,UACA,gFAAgH,UAChH,4FAEA,UACA,IACA,6CAAyDujB,GACzDvjB,uEACA,UACA,KACAA,sBADAsL,YACA,iBAAmE,UACnE,uDAAsF,cACtFjiT,gEAEA,eACA4rR,gBAAuBsuC,KAEvB,wBAMA,IALA,wBACAtuC,gBACAA,0BACAgrB,0CAESsjB,cAAeA,sCACxB,oBACA,mDACA,SAD2DA,GAC3DjY,QACA,kFAAkH,UAClH,oFAAoH,UACpH,aACA,mBAA+BA,cAAciY,SAAO,cACpDvjB,iKAEA,UACA,IACA,6CAAyDujB,GACzDvjB,uEACA,UACA,uDAAsF,UACtF,IACA,0CAAmDA,qBAA8BujB,MAAQ,MACzF,4CAAsDvjB,qBAA8BujB,MAAQ,cAE5Fl6T,oEA1BA,CAoCS,GAJT4rR,qBAA8B6qB,cAG9B,YAAqBE,iGAA0G/qB,aAAkBsuC,MACxI,OAATA,MAAS,CACT,2CACA,SADuDA,GACvD,IACAA,KACAvjB,mFAEAA,8DAEA/qB,gBAAuBsuC,KAIvB,oDACA,aACA,CACA,8BACAvjB,8EACA,uDACA20K,qDACAA,uFACAA,wEACAA,0EACA,cAEAA,kCACApxJ,8BAZAl6T,mDAgBA,eAEA,IADAiiT,MACA,wCAAuDiY,GACvDvjB,8DAxCA,CApEmS,CAxB9N,MAAnDF,SAAeE,2BAwIjC,SACA/nG,8BADgB5uM,kEAAwE,IAIxF,mBAEkB,QAAlB22S,KAAkBC,IAAmBA,aAAsBA,GAC3D,aACAqL,IACAA,qCAEA,gBACA,uDACA,iCACA,8CACA,qBACA,8BACA,iEAEE//S,kDARF,GAUA,OAAmD,WAEnD,kBACA,aACAmB,4BAAiC,2CACjCA,6BACAA,mCACAA,qDAGAs9R,qCACA8V,6BAEA,UACA60K,+FACA,qCACA4xI,yBACAvB,oBACA,cACA,SAAcF,aAAgBA,wIAE9B,4BACA,SAAaD,YAAeA,GAC5B7wI,oDACAW,+DAEA,KAAQkwI,aAAgBA,IAGxB,IAFA7wI,oDACAW,6CACAmwI,KAAYA,YAAeA,cAC3B,KAASA,aAAgBA,IACzB,gBAA6BhxI,MAC7B,SAAgBixI,gBAAmBA,GACnC,oBACAwB,eACAA,eACAA,eACA,2CACAtB,2DACAA,wDACA,MAEA,MAAetwI,uDAAf,CACA,WAA2Bhif,YAASuynB,qCACpC,cACAD,iCACAC,MACAA,8BACA,gBACAD,0DACAA,uDAIA,OACA,iBACA,IACAnxI,uBACAmxI,kCACAA,+CACA,UACA,IACAnxI,yBACAmxI,gCACAA,2BACA,UACA,cACAnxI,sBACAmxI,iCACA,UACA,IACAnxI,mCACAmxI,+BACAA,kDACAA,6BACA,cAEAtwI,WAAqC,SAErC,aACA,sBACA,mBAGA,MAFA6wI,6CAEA7glB,6CACAyvc,mBAA2C,wCAE3C/tK,0DACA,0BACA,SAEA,QADAo/S,kBACAqB,KAAqBA,iBAAoBA,IACzCrB,gCACAhiS,yCAEAyhS,uCACAzwI,oCAEAE,uDA5CuC,MAAvBA,UAZkD,CAwDlE,CAEAA,wCAEA,wBAAqB75L,uDACrB65L,kCACAA,aAiFA,uBACA,YAEAtuK,OACA,kEACA,gEACA,gEACA,8DACA,iEACA,yEACA,6CACA,8CACA,8DACA,qEACA,8EACA,uEACA,gEACA,8DACA,kDACA,8DACA,kEACA,gDACA,iDACA,+CACA,gDACA,+CACA,+CACA,wDACA,4DACA,gDACA,0DACA,6CACA,oDACA,oDACA,kDACA,uFACA,qFACA,iFACA,mFACA,gDACA,yBAGA7tC,OACA,kEACA,qEAGA,qBACAq7M,wCACAA,mGAEIA,6CAEJ,OApIA,eACA5zK,uCAGA,SACAqL,+BAAkC,uBAAsBvyU,qBACxD,OACA47e,YACA,aAAmBkwI,wBAAwBA,uBAC3C,uBACA,uDACA2K,OACA1K,UACA,gCACA7kT,8EACAA,mGACAA,+BACAsjB,MAMA,SACAjY,+BAAkC,uBAAsBvyU,qBACxD,OACA47e,YACA,aAAmBkwI,wBAAwBA,uBAC3ClwI,uBACA,gCACA10K,2EACAA,8FACAA,+BACA4zK,MAMA5zK,+FACAA,yFACAA,6BAEAA,iFACAA,mDACAA,4CACAA,iDACAA,4CACAA,8BACAA,mCAGA,UACAznC,MACA,sCAAkC,uBAAsBz/R,qBACxD,MAGA,QAFA8rnB,qBACAC,kBACA/wI,KAAkBA,aAAgBA,gBAAoBwyI,aAAgBA,IACtE,2CAA8D5znB,aAC9D,6CACA0zU,UACA,uBACA2+S,KAAe3+S,kBAAsB7tC,GAAOynC,qBAI5CA,sIACAp1L,4BACAo1L,+JAKAA,wCACAoG,GAyDArG,QACA6zK,6BACAA,wCACAvoK,iBAAsB4jT,aAAaK,iVACnC,aAAiB1K,2BAA2BA,wEAAqFqK,aAAaK,WAC9I,wBAAqBz0U,uDACrB+4L,uCACAA,8BACA,kDACAA,sCACAA,aAzPmD,GA6PnD,iBACA,qCAEA,UACA7zK,KAEAC,KACAqL,MAGA,OACA5zS,KADAsoS,aACA,kDAIAtoS,KADAsoS,gBACA+uK,SACA9uK,uBACAqL,2BAIA5zS,KADAsoS,eACA4uK,SACA3uK,uBACAqL,0BAIA5zS,KADAsoS,aACAxqU,SACAyqU,uBACAqL,4BAIA5zS,KADAsoS,iBA10jBA,eACA,WACAhW,8EACA,YAAkB8V,cAAiBA,EACnC9V,4BACAA,uBAEA,uCACAA,qBACAA,WAk0jBA/vH,MACAgmI,kCAIAvoS,KADAsoS,0BAt2jBA,eACA,WACAhW,2HACAA,wJACA,YAAkB8V,aAAqBA,EACvC9V,wGACA,sCACAA,WAg2jBAljD,KAEAg5D;6DAAA,CAIA,kBACA,IAGA,MAFA,qCAEA,kCACA,QACA,gCACA,8BACA,SACA,8FACA,WACA,QAEA,UAEA,CAFA,MACI7qB,GACJ,eAfA,GAkBA,eACA,wDAEA,eACA,4EAEA,eACA,4EAEA,eAEA,QADA+U,IACA8V,IAAkBA,aAAgBA,EAClC9V,eACA,wBACAiW,IACA,QAAcH,aAAgBA,GAC9B,yBACA,UACA,aAAsB+zK,QAAOA,GAC7B7zK,mBAEAA,YACAC,MAGA,SAEA,eACA,OAEA,WADAhrB,cADAA,sBACAA,kBACAA,sBAkBA,iBACA,UACA+qB,WACA7uU,EACA,iBACA6uU,iBACA/qB,aAEA+qB,kBACA/qB,cAEA+qB,kBACA/qB,cAEA+qB,+BACAF,EACA7qB,cAEA+qB,+BACAF,EACA7qB,cAEA+qB,+BACAF,EACA7qB,aACA,QAEA,aACA+qB,EAEA,eACA,wBACAhW,WACA,QACA74T,EACA,UAwBA,GAvBA64T,YACAA,gBACA8V,EACA7qB,WAEA+U,YACAA,iBACA8V,EACA7qB,cAEA+U,YACAA,iBACA8V,EACA7qB,gBAEA+U,YACAA,sBACA8V,EACA7qB,kBAEA+U,YACAA,wBACA8V,EACA7qB,kBACA,QACA+U,YACAA,2BACA8V,EAEA,kBAEA,eAGA,QAFA9V,GAAc15T,KACdwvU,KACA9V,cACA8V,gBACA,SAEA,eACA,4BACA,gBAGA,eACA,mBAUA,OATA7qB,aAEA6qB,iBACA7qB,cAEA6qB,kBACA7qB,cAEA6qB,kBACA7qB,cAEA6qB,kBACAA,EAmCA,eAEA,QADA9V,QAAwB15T,KACxBwvU,eACA,UACAG,UACAqL,OACArL,QACA,OACA4zK,OACA,gBACA,EAEA,oBAEAtwJ,iBACAzjB,OAEA,WACA,EAEAyjB,kBACAzjB,SAEA,WACA,EAEA,eACAyjB,qBACAzjB,QAEA,WACA,EAEAyjB,kBACAzjB,SAEA,cAEA,uFAEA,QAAc5sU,iBACd,aACA82T,SACAA,cAEA,SAEA,eACA,SACA,+BACA,MAEA8V,uBACAG,SAEAjW,uBACA,WACAA,0BACAA,oBAGAolL,MAEA,iBACA,wCACA,qBACG,GAEH,eAGA,QAFAplL,EACA8V,QAAwBxvU,KACxB0vU,eACA,cACAsL,wBACAtL,OACA,QACAnlQ,qBACA+gkB,aAEAtwT,2BACA,mBACA9yC,qBACA+qD,kBACAjmI,QACApqN,yBAEA8sU,WAEA,+BACAujB,kCACAzjB,WAEA,SAEA,eACA,SACA,6BACA,OACA,GACA,EAAS5sU,uBACT,IAEA,gBACA8sU,OAAiB9sU,8BACjB,SACA4sU,gCACAG,gBACAsjB,aAAsBnrV,iCACtB4nU,WAAmB9sU,4BAEnB,aACA82T,sBACAA,WACAiW,uBACA,sBAGAmvK,MAEA,iBACA,QACA,2DAKA,QAJAtvK,GAAcxvU,KACd0vU,UACAC,KACAqL,OACAA,cACA,eACA,UAqBA,cAeA,GAdA,OACAqpK,kBACAn8M,oBACAA,cAEAm8M,kBACA,OACAn8M,oBACA8yC,QAEA9yC,kDACA8yC,QAGA,MACA,oCAEA,QADAu5S,oBACAA,yBACAC,mBACAD,GAEA,QACA,UAGA,gDAFAC,iBAEA,CAEA,SACA7kT,0DACA,CAMA,IALA6kT,OACA7kT,mCACA00K,UAEAkwI,GACAlwI,kBACA10K,cACA00K,mBACAkwI,GAEAlwI,IACA10K,wBAEAA,cACAA,eAlEA,CACA,kBACA,WACA4zK,OACA,CACA,aACAA,SACAxtK,OACAwtK,gBACAxtK,OACAwtK,iBACAxtK,OACAwtK,iBACAA,QACAA,KACAvoK,OAEArL,wBACAqL,MAgDA,EAIA,QADAyoK,KACAwyI,KAAoBA,cAAqBA,GACzCxyI,iBACA,SACA,mEACA,SAEA,eACA3te,mBACA6uS,qBAGA,QAFA+U,KACA8V,IACAA,aACA,aACAG,4BACAH,KACA9V,mCACA8V,KAEA,gBACA,sDACA,8BAEA,eAGA,QAFA9V,KACA8V,IACAA,aACA,qCACAG,oBACAjW,UACA,aACAu5B,aACAv5B,WACAgW,OACAujB,KACAv5B,kCACMgW,QACNujB,MACAv5B,uCACMgW,UACNujB,MACAv5B,kDACMgW,aACNujB,MACAv5B,8DACMgW,gBACNujB,MACAv5B,2EAEAA,qBACAu5B,MACAtjB,OACAA,YACAA,eACAA,gBACAH,KAEA,aAKA,uBACA,gBACAtnC,iBACAqsV,aACA1znB,EACA,kCACA,4DACA,UACA,QACA,8DACAo1nB,0DACAxB,0DACAC,aACApynB,EACA,OACA,UACAmhf,QACA,QAGAA,GADAixI,WACA,EACAA,UACA,EACAA,SACA,EACAA,OACA,EACAA,MACA,GAEA,GACA/smB,mBACAsumB,MACAvB,MACAuB,MACAvB,QACAuB,KACAvB,SACAuB,KACAvB,YACAuB,MACAA,QACAA,OAEA,kBACA,QACA,gBACA,QACAvyI,aACA,MACArvJ,gBAGAqgS,YADAhxI,OAGA7uJ,yDAEA4uJ,eACAC,YACAuyI,OAEAvB,WADAhxI,QAGArvJ,gBACAQ,wDAEA4uJ,eACAC,WACAuyI,OAEAvB,UADAhxI,QAGArvJ,iCACAQ,yDAEA4uJ,eACAC,SACAuyI,OAEAvB,QADAhxI,QAGArvJ,iCACA,MACAQ,0CAEAA,2DAEA4uJ,iBACAC,MACAuyI,QAEAvB,IADAhxI,OAGArvJ,kCACA,MACAQ,4CAEAA,2DAEAohS,SACAvyI,sBACAD,OACApvJ,oBACA,MACAQ,yCAEAA,iEAEAlwC,2BACAA,6BACA,QACAA,sCAsFA,mBACA,YAEAq2B,IADAtL,kBACAA,mBACAujB,MACAswJ,qEACA,OACAc,GA/lBA,iBAGA,QAFA70K,8BACAE,YACAC,OAA4BA,OAAaA,EACzCD,aACA,6CA0lBA67T,OACAt4S,QAEA,OACAshS,uBACAthS,OAEA,OACAwwJ,sDACAxwJ,OAEA,OACAld,sBACAkd,OAEA,QACAswJ,sBACAtwJ,OAEAA,iBACA,SACAvjB,mBACAujB,OAEAA,kBACA,UACAvjB,mBACAujB,OAEA,OACAywJ,QACA,gBACA,EACAgxI,IAAcpynB,OACd,WACA,EAiCA,KACA,GACAoynB,IAAcpynB,YACd,MAlCA,KACA,EACAoynB,IAAcpynB,mBACd,WACA,EAGAoynB,IADA,4BACA,CAAkBpynB,YAElB,CAAkBA,iCAElB,WACA,EACAoynB,IAAcpynB,cACd,WACA,EACAoynB,IAAcpynB,YACd,WACA,EACAoynB,IAAcpynB,WACd,WACA,EAEA,YAMA,oGALA,kBACAoynB,IAAkBpynB,cAClBuyV,OACA6/R,MAAsB2Q,cAItB,MAGA,QAEA,oGAQA,GANApyS,kBACA,aACA,QACA/qD,uBACA+qD,OAEA,WACA,0BACAA,MACAv5B,aACAg7T,KAkWA,eACA,SACA,eAAapynB,kDACbqiT,WACAA,8BACA+U,QAAiBp3T,yBAEjBo3T,EAzWA8xU,cAEA,cACA5qV,4CACA,QACA8zU,aACAA,GAEA,iBACA,2CAEA,OADAllT,OACA7qB,SACA,IACA,iBACA6qB,OACAE,mEACAsL,MACArL,KACA,MAEAH,OAjsBA,mBACA,mEACAG,wBACAhrB,cACAA,oBACA,aAAkBgrB,OAAeqL,UACjCr2B,cACAA,oBA2rBAu6L,UACAlkK,MACArL,MAEA,UACA,IACAH,OACAE,2BACAsL,MACArL,KACA,UACA,IAEA,gCACA,QACA,qCACA,OACA,4DAEA,QACAjW,0BAAkDn5T,oBAClDivU,OACAE,qBACAsL,OACArL,SACU,CACV,0BACA,QACAjW,2BACA8V,OACAE,qBACAsL,MACArL,KAGA,UACA,IACAH,OACAE,0DACAsL,MACArL,KACA,UACA,IACAH,OACA,cAEA,kCAEA,aACA9V,YAqSA,eAEA,QADAA,GAAc/pT,sBACd6/T,IAAkBA,aAAgBA,EAClC,MACA9V,WACAA,YAEAA,gBAAyB/pT,oBAGzB,SA/SAgrT,OACA+U,kCACAsL,WACArL,MAEAD,qBACAF,WAEA,iBACA,iDAEA,OADAA,OACA7qB,SACA,IACA,IACA,IAmBA,IACA,IACA,IACA,IACA,IACA,IACA,MAxBA,IACA,IAGA,GADAsuC,4BACAtuC,KACA,qCACA,OACA,4DAEA,QACA+U,0BAAkDn5T,oBAClDivU,OACAE,qBACAsL,QACArL,KAIA,MAMA,QAEA,kCAOA,OALAhrB,MACA+qB,kCACAsL,SACArL,MAEAhrB,SACA,IACA6qB,OACAE,uBACAsL,OACArL,KACA,UACA,IACAH,OACAE,2BACAsL,OACArL,KACA,UACA,IAGA,GADAsjB,6BACAtuC,IACU,CACV,0BACA,QACA+U,2BACA8V,OACAE,qBACAsL,OACArL,KAGA,UACA,IACAH,OACAE,0DACAsL,OACArL,KACA,UACA,IACAH,OACA,cAEA,kCAEA,4BACAA,WAEA,mBACA,kBACA,OACA,OACA,OACA,OACA,EACA,OAvVA,qBACA,YACAwL,qBACAiY,8DACAuhS,YACA,OACAz+S,sBACAy+S,OAEAA,4BACA,SACAvhS,sBACAuhS,OAEAA,8BACA,QACAjxI,sBACAixI,OAEA,QACAtsV,uBACAssV,OAEA,QACAD,sDACAC,OAEAhlT,KAEA,KADAwL,8BAEA,QACAjF,uBACAy+S,OAGA,OACAyB,eACA,gBACA,EACA,YACA,EAgBA,KACA,EACAxyI,IAAcnhf,YACd,MAjBA,KACA,EACAmhf,IAAcnhf,mBACd,WACA,EAGAmhf,IADA,4BACA,CAAkBnhf,YAElB,CAAkBA,iCAElB,WACA,EACAmhf,IAAcnhf,cACd,MAGA,KACA,EACAmhf,IAAcnhf,WACd,WACA,EAEA,YAMA,6DALA,kBACAmhf,IAAkBnhf,cAClBmynB,OACAhxI,MAAsB4hJ,cAItB,cAEA,6DAEA,cACAzkV,wCACA,QACA6iM,aACAA,GAsQAgoJ,kBACA,EACA,yBAEA,8DAGA,eAEA,UADAC,MACA,YAEA,eACA,WACA,GACA,EAAO5joB,sBAGP,iBACA,MACA4nU,sFAEA,GADAA,eAEAA,UACA/qB,wBAAiC78S,qBAGjC,iBACA,MACA4nU,qFACA/qB,wBAA+B78S,oCAC/B,iBAGA,iBACA,iBACA4nU,mBACAC,OACAqL,MACA,mCACA,UACA9yC,eACA,SAEA,8BACA,eACA,EACA8yC,yBACA,WACA,EAEA,IACAw5S,MADA7vU,wBACA/hT,MACA6gf,2BACAwyI,0BACA,YACA,4DACA,mBACAvB,IAA2Bn0nB,yBAC3B,qBACW06B,UACX+/S,UACAn6U,EACA,mDACA,kDACA,OACA,QACA6if,wBACA,aACAkxI,eACA,kCACA,oDACA9wI,0BACA,gBACA,KACA,oBACA,wDACA4wI,wBACA,WACA,KACA,cAEA37lB,iEAMA,WACA,EACAiiT,yBACA,WACA,EACAA,yBACA,WACA,GAEA,gCACAA,qBAEA,cAEA,YAGAA,GAkCA,iBACA,MACAtL,aACAC,MACA,6CAEAA,EADA2vK,qBACA,EAEA,GAEA,4BACA,OA3CA,iBACA,2CAKAq1I,MAJAD,SACAhxI,yBACA7uJ,yBACAR,kFAEA,iEACAsgS,2DACAnxI,qEACI,+DAIJ,uDAHAmxI,2DACAnxI,0DAEA,CAIA,QAHAG,UACAixI,UACAC,MACA/wI,KAAkBA,iBAAgCA,IAClD,6BACAoxI,UACAL,iBAEA,iBACA,+DACA,UACA,SAAc/wI,iBAAwBA,GACtCK,kDACA,sBACAA,sDACA,CAAWxif,eAaXo+e,SAEA,OACA4rJ,2BACA/ooB,+BACA,kBACAqwV,aACAswJ,iCACA,gBACA,mEACAtwJ,kBAEAA,IACK,KAGL,iBACA,+BACAuhS,IAAclynB,WACdmhf,SAGA,IAFA,uEACA+wI,oFACA,yEACA,IACAC,MADA9vU,kFACA/hT,OACA,2DACA4xnB,wBAEA,gCACAA,cACA/wI,2BACA,yBACA+wI,kCAGAA,GA8FA,mBACA,iBACA7kT,GAAc,cACd,0BACAA,eACA,2BACAsjB,6BACA,YACA,4DACA,OAhFA,qBACA,8BACAwwJ,cACAwyI,IAAgBnvnB,GAAKzE,SAAYxB,GAAOwB,UAExC,GADA4znB,iCACAA,SACA,6DAEA,GADAA,iCACAA,SACA,6DACAzmT,iBACA,6BACAk0K,qBACA7uJ,GAvqBA,CAAW+2S,yDAwqBX,+BACA/2S,uCACA,iCACAA,wCACA,kCACAA,yCACA,kCACAA,yCACA,kCACAA,yCACA,kCACAA,yCACA,kCACAA,wCACA,yBACA8/R,KAwBA,GAvBAtgS,2BACA,mBACAyvJ,2BACAoxI,0BACA,YACA,4DACA,gBACA/wI,gCACAgxI,2BACA,mBACAtiS,KACA4hS,IACAC,qBACAA,uBACAA,2BAEAllT,4BAKAmlT,eAEA,gCACA,gCACAhxI,0BACA,YACA,+DACAn0K,kEACA,mBACAs0K,wEACA,OACAh9e,GAAazE,2CACbxB,GACAwB,0CACAsiT,+CAeAu7L,cACAvwK,EAmBA,mBACA,MACAA,EA6xEA,CAAUhuN,wBA5xEVguN,UAAmBivT,SAAWK,eAC9BjkT,cACA,+BACA,2DAaA,GAZA6wT,aACApjoB,qBACAk8S,2BAEA,MADA26L,uBACA,CACA,OA7BA,mBACA,MACA3vK,aACAqL,IACAlwR,sDACAkvkB,WAGA,OADA6R,YACApjoB,qBACAk8S,2BAEA,KADA26L,wBAEAtkK,+BAGAA,GAcA8wT,SACAznJ,kCACAm7I,gDAKA,uBACA,sCACA,4BACA7vT,EAEA,iBACA,sBACAznC,MAAYm8M,MA2BZ,GA1BA1/L,iCACA,uBACA,qDAEAA,iCACA,4BAEA,iBAEA,QAMAsxU,GALA,IACAxyI,iBAEA,CAFA,MACMgxI,IACN,iEAGA,IACAwB,SAEA,CAFA,MACMxB,IACN,2CAEAwB,wBACA/tV,sBACAm8M,qBAGAA,UACA,wCACA,0IACA,qDACA,iLAaA,GAZAkwI,IACAlwI,wBACAn8M,4BAEA,MADAo3M,2BAEA,OAGA,+CAFAi1I,KAEA,OAIAA,GACA,6CACA,mBAEA,mBACA,WACAthS,IACA,GACA,EAAOnrV,oBACP,EAAOA,oBACP,EAAOA,iCACP,EAAOA,uCAA2CpE,YAAa,WAC/D,gBAEA,EAAOoE,oBACP,EAAOA,iCACP,EAAOA,uCAA2CpE,YAAa,WAC/D,gBAEA,EAAOoE,qBAEP,kEACA,iDACA,SACA,oCACA,kCACAiuU,sBACAkd,iBAEA,oCACA,kCACA/qD,sBACA+qD,iBAKA,QAHAoxJ,gCACAZ,gCACAixI,SACAhxI,KAAkBA,cAAiBA,GACnC,mFACAW,4BACAZ,6BAFA,CAOA,UACA,OAHAY,4BACAZ,4BAEA9+L,aACA,IACA,4BACAkwC,eACAR,eACA,MAEAQ,eACAR,eACA,UACA,QACA,QACA,QACA,IACAQ,eACAR,eACA,cAEA,4CAEAmgS,YACAD,cAEAE,YACAwB,gBAEA1yI,EA/BA,CAmCA,IAFAtwJ,qBACAA,oBACSywJ,4BAA+BA,GACxCW,4BACAZ,4BAEA,4BACAxwJ,qBACAA,QAAcnrV,wBACdmrV,GAEA,iBACA,OACAjmI,MACA,GACA,EAASllN,qBAETlF,QAGA,iBACA82T,SACAA,eACA,iBAAgC8V,QAASA,EACzC,SACA,qBACAA,EAEA,qCAuCA,mBACA,WACA,GACA,EAAO1nU,oBACP,GACA,EAAOA,gEACP,EAAOA,gEACP,EAAOA,gEACP,EAAOA,4DACP,GACA,GACA,GACA,GACA,GACA,EAAOA,sBAGP,eACA,eACA,EACA,2BACA,EACA,4BACA,EACA,uBAEA,iEAEA,iBACA,kBACA,oEACA,wBAAqCA,gBACrC4nU,EArEA,eACA,SACAF,KACA,qCACA,2BACG/mU,oBACH,mBACA,aAEAknU,uBAEA,iBAEA+vK,uCACAlwK,cACA9V,UAAgChtK,kEAGhCi4J,iCACA+qB,uBAEA,iBAEAgwK,sCACA/vK,gCACA,4BACAqL,aAEAA,iCACAthB,yCAMAA,EAkCAqyU,IACAp8T,YACA,WACA,gEACA,wCACA,eACA,qEACA,4CACA4zK,QA8GA,mBACA,cACAvoK,MACAiyK,yBACA,+BACAv9K,yCACAC,MAAqCjjL,wCAAuDgtK,GAC5FshB,QACAgxT,SACA3nJ,YAAkBv8e,oBAClB,iBACAysnB,QACA76T,6BACAxxB,YAEA+kN,yBACA,qBAEAl3K,6BAEA,UACAk3K,yBAEA,QADA5I,2BACAkwI,KAAoBA,SAASA,UAC7BlwI,OACA,oBACAmwI,wBACA,mBAEAvhS,OAAgCvmM,wDAA2FgtK,GAC3HsyU,UACAhxT,aACAqpK,QAAev8e,qBACf,qBACA27e,SACA/pL,iCACAxxB,aAEA+kN,sBACA,+BACAg/I,cACAhW,6BAEAhpI,0BACA,sBAGAl3K,6BAEA,UACAk3K,0BAGA,QAFA5I,2BACAkwI,qBACAC,KAAoBA,SAASA,UAC7BD,OACA,yBACAA,yBACAlwI,qBACA,yBACA6nJ,UAEAF,MADAzoJ,OAAgC72V,mDAAgFgtK,IAEhHshB,UACAqpK,qBACA,kBACAowI,SACA/6T,+BACAxxB,YAEA+kN,0BACA,qBAEAl3K,6BAEAk3K,0BACA,UACAunI,2BACAyB,yFAKA,GAJAzB,qBACA,2DACA,uBAEAA,QACA,IACAE,MADAgX,mBACA,YACAQ,iBACA1X,OAEAA,SAEA,UADAkX,mBACA,6BACA,mBACA,uBACA,mBACSjjoB,qBACT,mBACA,SAEA,0BACAyjoB,sBAGA1X,QAEA,CACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA/rnB,qBACA,UAEA,kCACA+rnB,OACA0X,aAEA,yBAEA,gEACA,OACA,kCAEA,2BACArX,OAAwCnoe,mDAA0EgtK,GAClHwyU,UACAF,UACAhxT,UACA,kBAEA,GADA8oK,SACApqL,+BACAxxB,gBACA,CACAwxB,mEACAA,iCACAA,sEACAx3K,+CACA,8FACA+qW,sBACA,+BACAk/I,aACAF,eACA9nJ,6BAGAtvJ,yBAEA,yBAEA,0CACA,mBACA+/R,OAA0Cloe,mDAA0EgtK,GACpHwyU,UACAF,UACAhxT,UACA,kBAEA,GADA65S,SACAn7T,+BACAxxB,gBACY,CACZwxB,mEACAA,iCACAA,sEACAx3K,+CACA,8FACA+qW,sBACA,+BACAk/I,aACAF,eACA/W,6BAGA1xI,iBAGA3uJ,qBACA,yBAEA8/R,2BACA,mBACAC,qBACAC,UACA,YACAA,OAA4Cnoe,uCAA2DgtK,GACvGA,iEACAshB,UACA,kBACA8oK,SACAooJ,UACAF,UACA9pf,wEACA+qW,sBACA,+BACA9I,YAA8Br8e,gBAC9B,GACA,EAAmBA,qBACnB,EAAmBA,gCACnB,EAAmBA,4CACnB,EAAmBA,sCACnB,EAAmBA,sCACnB,GACA,GACA,GACA,GACA,EAAmBA,oBACnB,GACA,EAAmBA,wBAEnBq8e,QAA4Br8e,mDAC5BmkoB,eACA/W,6BAGAvxI,qBACAH,iBAGA3uJ,qBAEA2/R,qBACAz+S,6BA3VAmrK,WACAvxK,YACAqL,qCA4VA,0BACA,UACAiyK,uBACA,+BAEA5I,QAAuBv8e,oBACvBmrV,gBAEA/qD,6BAEA,IACA6tC,SADAq2T,cACAd,8BACAr+I,0BACA,OAIA,0BACA,qBACAh6J,gBACA,UACAA,aACAswJ,MACAtwJ,YAEAA,gBACAswJ,MACAtwJ,eAEAswJ,IACAxqd,+CACA,UACA,cACAg9S,kBACA,CAEA,QADA7tC,MACAm8M,KAAqBA,aAAiBA,GACtCn8M,cACA,aAAqBqsV,aAAiBA,IACtCx+S,UACA,iBACA,SAAmBsuK,aAAiBA,IACpC,qBACAZ,KAEA1tK,iBAIA,QACAs2T,OAAa18nB,iHACb28nB,QACAC,QACAC,QACAC,QACAC,OAAansoB,yCACbqroB,mBAEAnX,0BAEAA,2BACAA,kCACAA,OACA,yBAEA/wI,oCACAuJ,0BACA,OACAoqI,2BACA,iDACA,aAA2BC,eAAkBA,IAC7C,yBACAC,qBACAA,gCACAF,WAAmCvvnB,gCAEnCk3nB,6BAEA,yBACA/xI,0BAEA,QADAuxI,2BACAnH,KAAwBA,aAAgBA,IACxC,yBACAC,qBACAA,2BACAkH,WAAgC12nB,gCAEhCk3nB,6BAEA,yBACA3qS,SACA,yBAEAmvJ,OACAmxI,QAA0B7snB,qBAC1B,wCACA8snB,IAGA4J,GADAkN,GADAU,UACAd,kBACA,uBACA,yCAEA,6DANA,IAGA9M,GAMAt8e,kCACA+qW,sBACA,+BACAx3G,gCACA,wCAjXA,qBACA,4FACAz6D,+BACA,UACAqpK,eACA,sCACAjF,yBACA,wDAIAnsJ,qBACAA,QACAA,UACAA,gCACA,uCAEAtuC,qBAkWAq8L,aACAg+I,6BAEAkN,SAEAvX,SAEA,QADAE,4BACA/wI,KAA2BA,QAAeA,IAC1C,WACAp3V,QACAxxF,YACApzD,WACW4xT,GACXA,iEAYA,QAXAyqL,IACA,GACA,EAAer8e,oBACf,EAAeA,+CACf,EAAeA,oBACf,EAAeA,qDACf,GACA,EAAeA,oBACf,EAAeA,oBACf,EAAeA,qBAEfqtnB,SAAuCA,mCAAoDA,IAC3F,oBAzHA,MA0HAhiS,2BACAgxJ,YAA+Bvhf,qBAE/B+xnB,YAA8B7snB,gBAC9B,GACA,EAAeA,qBACf,EAAeA,yBAEf,IAIA0unB,UAJA,CACAjsjB,MACA+gkB,+BAGAppf,8DACA+qW,sBACA,+BACAx3G,YAA4B3tY,gBAC5B,GACA,EAAiBA,qBACjB,EAAiBA,gCACjB,EAAiBA,4CACjB,EAAiBA,sCACjB,EAAiBA,sCACjB,GACA,GACA,GACA,GACA,EAAiBA,oBACjB,GACA,EAAiBA,yBAEjB2tY,QAA0B3tY,mDAC1BmkoB,eACAjN,6BAEAgN,SACA33S,YAA2BvsV,gBAC3B,GACA,EAAeA,wBACf,EAAeA,yBAOf,GAHA4snB,qBACAA,qBACAA,SAAqB5snB,iCACrB0nU,cACA,WACA1nU,UACA4kJ,UACAxxF,yBACSw+P,GACTiW,QACAplQ,MACA+gkB,sBACA,GACA97T,8BACA,OAAuB1nU,gBACvB,GACA,EAAmBA,gBACnB,GACA,EAAqBA,0EAErB,EAAmBA,gBACnB,GACA,EAAqBA,uGAMrB4snB,SAAuB5snB,qBACvBmlf,sBACA,+BACAg/I,eACAjN,6BAEAgN,qBAEAtX,OACA,yBACAznI,uBACA,+BAEAx3G,SACAwgP,+BACA,OAEAxgP,YAA8B3tY,gBAC9B,GACA,EAAiBA,qBACjB,EAAiBA,oBACjB,EAAiBA,2BAIjBk3nB,6BAEA,0BA0FA,GAzFA/xI,uBACA,+BACAx3G,SACA,QACA,OACA,OACA,OACA,QAEAwgP,gCACA,SAEA,SACA,GACA,EAAenunB,kCACf,GACA,EAAeA,wBAEfyvnB,SAA0BzvnB,kCAC1ByvnB,SAA0BzvnB,sDAC1ByvnB,QAAyBzvnB,2DACzByvnB,QAAyBzvnB,6CACzByvnB,QAAyBzvnB,mDACzByvnB,QAAyBzvnB,2DACzByvnB,QAAyBzvnB,2DACzByvnB,SAA0BzvnB,mDAC1ByvnB,SAA0BzvnB,mDAC1B,WAA4C4kJ,+BAAoCgtK,GAChFgrL,MACA,SACA,kBACA,GACA,GACA,EAAiB58e,wBACjB,4BACAyvnB,UACA,eACAviS,QACAA,UACAA,YAAiCltV,gBACjC,GACA,EAAiBA,oBACjB,EAAiBA,yBAEjByvnB,WAA8BzvnB,oBAC9B48e,YAEAzD,4CACAgM,uBACAuxI,wBACA,mBAEA95I,wBACA,qBAGA,kBACA,GACA,EAAe58e,qBACf,GACA,EAAeA,0FACf,4BACAmlf,uBACA,mBAEAx3G,YAA6B3tY,gBAC7B,GACA,EAAeA,qBACf,EAAeA,oBACf,GACA,GACA,GACA,GACA,GACA,GACA,EAAeA,yBAEfkkoB,UACA/+I,sBACA,+BACAg/I,eACAA,eACAA,eACAA,eACAnnJ,gCAGAk6I,6BAEA/I,kBACA,0BACAiI,MAAwB3H,KACxBtpI,uBACA,+BAEAx3G,SACAwgP,gCACA,SAEA,WACAuI,YACAA,gCACAN,eACAA,uBACA,GACA,EAAyBp2nB,2BACzB,EAAyBA,uBACzB,GACA,EAAyBA,qBACzB,6BACA,oBACAktV,cACA,GACA,EAAuBltV,2BACvB,EAAuBA,gBACvB,GACA,EAAyBA,6DAEzB,EAAuBA,sBACvB,4BACAmlf,uBACA,mBAEAqqI,YACArqI,sBACA,+BACAg/I,eACA7M,+BAGAlB,eACAA,uBACA,GACA,EAAqBp2nB,2BACrB,EAAqBA,uBACrB,GACA,EAAqBA,qBACrB,6BACA,oBACAg3nB,cACA,GACA,EAAmBh3nB,2BACnB,EAAmBA,gBACnB,GACA,EAAqBA,6DAErB,EAAmBA,qBACnBwvnB,oBACA,OAA2BxvnB,sBAE3B,EAAmBA,gBACnB,GACA,EAAqBA,qBACrB,EAAqBA,yBAErB,4BACAmlf,uBACA++I,UACA1U,wBACA,qBAGA7hP,YAAiC3tY,gBACjC,GACA,EAAmBA,qBACnB,EAAmBA,oBACnB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EAAmBA,yBAEnBkkoB,UACA/+I,sBACA,+BACAg/I,eACAA,eACA3U,WACA2U,eACAvnJ,gCAIAjvG,mCACAupP,6BAIAvK,qBAEA/kT,0BAjaAi9T,mBAvWAC,iCAEAp9T,EAEA,qBACA,8BACA,MACA,oEACA,yBAIAE,EAHAsL,qBACA,kBAEAA,IACArL,qBACAA,wBAEA,mBACA,8BACA,MACA,oEAKA,OAJA+vK,kBACAx8e,kBACA,iBAEA,CAEA,mBACAyhT,WAAkB78S,gBAClB,GACA,EAAOA,oBACP,EAAOA,uCACP,EAAOA,oBACP,EAAOA,sCACP,EAAOA,sCACP,GACA,GACA,GACA,GACA,EAAOA,oBACP,GACA,EAAOA,wBAEP68S,OAAgB78S,iDAEhB,0BACAkzU,KACAA,OAA4BtuL,4BAAoCijL,IAChE,0CACAA,+BACAztL,6BACA33E,MACA+gkB,4BAEA,0EACA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R,gBAAqBA,MACrBshB,GA+SA0zT,cACA,gBAeA,iBACA,SACAh/T,iEAEA,GADAhW,yCACAA,yBACA,mBACA,yBAAwC,UACxC,yBAAwC,UACxC,wFACA,aACA,gBAAmC,cACnC,6CAEA,6BAAuCn+R,qBAA8BozmB,qCAA2Cn/T,8CAAqE7qB,cACrL,6BACA,oBACA,+CACAgrB,wBAIA,uFAEA,6BACA,yBASA,mBACAH,UACA,UACA,mBACA,6BACA,0BACA,sBACA,sCACA,SACA,qBACA,4DACAo/T,MAAqC9moB,gBAAcuhB,0BAA8B,yBAGjF,6CAGA,iBACA,mBACA,gBA5w0BA,cAGA,QAFAqwS,KACA8V,gCACAtnC,KAAkBA,cAClBsnC,sBACA,MACAA,MACAwL,SACAtL,sBACA,MACAA,MACAujB,kBACAtjB,sBACA,MACAA,MACA4zK,kBACAxtK,QACAl7S,SACA0od,SACM1od,WACNk7S,OAEArc,uDAEA,SAov0BAlsT,QACA,aACA,sBACA,wCACA,SACA,uBACAm3S,4BAA+C,yBAG/C,6CAIA,iBACA,mBACA,aACA,aACA,SAGA,QAFA6qB,KAEAE,IAAkBA,aAAgBA,+BAClC,yDACA,+BACA,0BACA,8CAIA,iBACArvU,IACAwuoB,MACA,gBAEA,GADAr/T,eAAoBA,YAAiBA,iBACrC,iBAAyBA,gBAAmB,cAAqD,sBAAkBzxT,MACnH,OA3FA,iBACA,gBAEA,UADA+wnB,QACAt/T,GAwFAu/T,MAGA,iBACA1uoB,IACAwuoB,MACA,gBAEA,GADAr/T,eAAoBA,YAAiBA,iBACrC,iBAAyBA,gBAAmB,cAAiD,sBAAkBzxT,MAC/G,QACA,aACA4xT,mCACAhrB,+BACAA,mFAEA,+BACA,UACA,gCACA,UACA,qEACA,UACA,wDACA,uDACA,gEACA,kEACA,kEACA,kEACA,gBAr7fA,iBACA,wBACA,cACA,gBAGA,QAFAgrB,kBACAqL,0BACAuoK,SAAsBA,YAAYA,IAClC/zK,8BACA,iBAAwBuG,YAAYA,GACpCvG,yBAIA,IAHAA,wBACAwL,KACAiY,uBACAld,SAAoBA,YAAYA,IAChC,WAAgC1zU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","names":["constructor","l","u","this","getAdminStudentAttendance","i","y","g","v","S","h","x","http","post","e","getStudentAttendanceCodes","get","getAttendanceCheckInOutByDate","yearService","defaultYear","Id","SchoolID","saveCheckInOutHistoryAttachment","deleteCheckInOutRecordById","getSchoolDaysBetweenDates","saveAdminStudentAttendance","getAttendanceHistoryByStudentIdDate","P","R","N","saveStudentAttendanceHistory","saveAttendanceHistoryCheckInOutByStudentIdDate","getAttendanceSelfCheckInOutByStudentId","getCheckInOutHistoryAttachmentById","getAbsentNoticesByStudentIdAndYearId","getAbsentNoticeAttachmentById","processSubmissionRecord","getAttendanceCheckInOutHistoryByStudentId","r","t","factory","Z","nt","ngOnInit","attendanceCodes","data","closeClick","dialogRef","close","applyClick","errors","find","selectedAttendanceCodeId","PromptForPartialMinutes","push","fieldName","fieldRef","periodCodeRef","errorMsg","length","A","selectors","dateChange","checkInOutClick","clearChangesClick","reviewStartEndDatesChanged","selectedTabChanged","selectedCodeChange","rowClick","saveAttachment","deleteAttachmentClick","previousClick","addAttachmentClick","viewHistoryClick","viewSelfCheckHistoryClick","viewAbsentNoticeClick","massUpdateClick","saveClick","nextclick","cancelClick","completeClick","Cn","xt","Wt","Qe","rn","In","Li","ia","ja","Ea","Dr","Date","studentAttendance","M","selectedStudent","useStudents","studentService","students","selectedStudents","subscriptions","selectedStudentStream$","subscribe","Ga","loadStudentInfo","getStudentAttendanceHistory","observableDefaultYearStream$","getCheckInOutButtnSettings","getSchoolSettingsAttendace","filter","checkInOutTime","s","toString","format","toUpperCase","attendanceDate","calledAsDialog","needToProcess","calledFromCheckInOut","columnsToDisplay","originPage","pageTitle","absentNotice","Attachments","attachmentMatTable","Deleted","reviewAbsentNoticeDialog","type","StartDate","startDate","endDate","EndDate","selectedTab","toLocaleDateString","attendanceService","SiteYearId","pipe","absentNoticeDates","forEach","tabNames","tabNamesLoaded","attendanceCheckInOut","checkInOutSettings","Type","Time","checkInCheckOutDialog","isFirstStudent","isLastStudent","getAttendanceCodes","ngOnDestroy","angularMatData","previousDate","unsavedChanges","todaysDate","sameDate","checkForErrorsGuard","checkForDeactivation","reviewDateChanged","useCurrentTime","sharedService","getAttendanceCodeLookup","userService","currentUser","UserIsTeacher","validAttendanceCode","UsedByTeachers","CodeDescription","schoolSettingService","getSchoolSettingsAttendanceOptions","selectedAttendanceCode","PriorPeriodCodeId","FullPeriodAbsenceCode","displayAttendanceTypeColumn","CalendarUseAttendanceTypes","earlyLeavingAttendanceCode","CheckoutForEarlyDismissalCode","comingLateAttendanceCode","CheckinForLateArrivalCode","validate","checkInCheckOutClick","DailyComment","OverwriteExistingAttendanceCode","UpdatePeriodComment","PeriodCommentAppOROver","UpdateDailyComment","DailyCommentAppOROver","dailyComment","orgDailyComment","Meets","Period","AttendanceCodeId","PartialMinutesAbsence","Minutes","HasFocus","CanTeacherChangeAtt","AttendanceCode","AttenCodeId","OrgAttendanceCodeId","OrgAttendanceCode","OrgAttenCodeId","isValid","isDateWithinCurrentYear","startDateRef","endDateRef","datAttendanceDate","legendClick","dialog","open","disableClose","maxWidth","maxHeight","PeriodAvailable","parseInt","save","continuedWithoutSave","Duration","OrgDailyComment","C","saveStudentAttendanceData","StudentAttendance","OrgPartialMinutesAbsence","CheckInOutHistoryId","CheckInOutSettings","allStudentsAH","setTimeout","attendanceCheckInOutComp","unsavedStudentAttendanceTabData","concat","Attendance","Status","absentNoticesService","saveAbsentNotice","minWidth","minHeight","afterClosed","timeField","match","timeRegexp","checkErrors","studentSummaryService","getCheckInOutButtonSettings","AllowParentEnterCheckInOut","AllowParentEnterCheckInOutMobile","AllowStudentEnterCheckInOut","AllowStudentEnterCheckInOutMobile","showSelfCheckButton","AllowParentEnterAbsentNotice","AllowStudentEnterAbsentNotice","showAbsentNoticesButton","F","studentId","W","a","DocumentId","FileName","Description","UploadedDate","MyFileBase64String","FileType","Comment","ViewFileOnWebsite","AttachmentDescription","D","attachment","newAttachment","requireDocumentType","componentInstance","saved","DocumentBase64","I","DocumentType","loadAttachmentTable","AttachmentFileName","G","schoolId","findIndex","AttendanceDate","isSame","d","indexOf","StudentId","updateSelectedStudent","E","Ue","Xt","includeArrays","yt","dn","studentInfoClick","_n","viwAttachments","editClick","deleteClick","processClick","Mn","$e","n","subscription","Be","sort","_sort","schools","SchoolType","ngAfterViewInit","nativeElement","focus","displayChange","includeCompleted","includeSubmitted","filterData","attendanceAdminService","Name","formatStudentName","StudentFirstName","StudentMiddleName","StudentLastName","searchClick","keyDownFunction","keyCode","FirstName","LastName","MiddleName","NickName","StudentInfoDialog","panelClass","height","position","top","right","student","initMenu","headerLabel","confirmMessage","okButtonLabel","confirmEvent","disableConfirmation","informational","showBadSnackbar","howToClick","HistoryId","getStudent","SubmissionId","attachments","performRoute","searchAndSelect","returnSelectedStudents","viewAllStudentsInThisSchoolYear","headerMessage","hideSaveButton","showLargeHeaderMessage","width","Array","Fn","gt","Ae","vt","ft","Dt","Et","overwriteAttendanceCodes","dailyPeriodComment","updatePeriodComment","periodComment","updateDailyComment","setToDefault","getAbsentNoticesByYearAndDate","getAbsentNoticeByStudentId","getDesignPageByIDs","customizationFrameworkService","saveDesignPage","saveDesignPageTemplate","toggleActiveDesignPageTemplate","saveCustomDataField","getCustomPages","saveCustomPage","customPageNameExists","getPagesWhereCustomFieldIsUsed","nextClick","H","V10","loginService","LoginSettings","markType","statusHistory","comment","eForm","banner","infoLine","commentHeader","newStatus","emailNext","ManualSubmission","saveStatus","saveButtonClick","sendEmail","eFormService","getEformContact","ID","Email","sendEmailService","teacherName","teacherEmailAddress","sendEmailDialogRef","modal","TemplateType","StudentNames","substring","InstanceName","mailDetail","subject","SaveEformStatusHistory","saveEForm","notSubmitted","submitted","rejected","accepted","complete","manualSubmission","NextID","OverrideValue","NotificationGroup_ID","NotificationEvent_ID","NotificationType_ID","User_ID","NotificationEvent","GroupPermissions_ID","hasTypeOfEvent","NotificationGroupEvents","hasChanges","originalAllStaffGrantedAccess","AllStaffGrantedAccess","PermissionCategory","originalPermissionCategory","hasType","NotificationTypes","getAreaDisplay","areaName","setNotificationChecking","ActivateNotificationFramework360","checkForInAppType","beginCheckingNotifications","stopCheckingNotifications","getMyNotifications","getMyNotificationGroups","getNotificationTypes","checkingNotifications","checkNotifications","TypeName","toLowerCase","showCustomSnackbar","Subject","Message","slice","checkInterval","setInterval","clearInterval","MyNotificationGroupOverrides","getNotificationAreasAndEvents","NotificationEvents","getNotificationGroups","NotificationPermissionGroups","PermissionGroup","getMyNotificationLogs","AddedOn","deleteNotificationGroup","saveNotificationGroups","saveNotificationEvents","saveMyNotifications","saveMyNotificationGroupOverrides","transform","pure","saveFamily","cancel","dialogBox","continueWithoutSaving","observableGuard","asObservable","observableSwitchTab","securityService","userPermissions","ot","PermissionName","editReleaseAlertsPrivilege","viewReleaseAlertsPrivilege","freeReducedMealPermission","studentDocumentsPermission","getRegistrationSettings","getRegistrationStudentMatchOptions","getRegistrationLookups","searchRegistration","getRegistrationFamily","saveFamilyRegistration","deleteRegistrationHousehold","getAdditionalAddresses","saveAdditionalAddress","getContactWorkInfo","getRegistrationDuplicateParentEmails","getRegistrationDuplicatePhoneNumbers","changeDuplicateRegistrationEmails","changeDuplicateRegistrationPhoneNumbers","getRegistrationPossibleDuplicateStudents","validateStudentIDs","saveQuickRegistration","saveContactWorkInfo","getAddressChangeLogs","getStudentReleaseAlerts","saveStudentReleaseAlerts","getStudentsLeaveWith","saveStudentsLeaveWith","familyRegistrationDetails","Family_ID","saveNonresidentContacts","saveAdditionalContact","saveHouseholdStudent","saveStudentPhoto","getRegistrationAddressByStreetNameOrID","getAddressBlocks","moveStudentsToFamily","markStudentsAsNew","setEmergencyContactCallOrder","sendNotificationEmailToParent","deleteRegistrationContact","swapHouseholdParents","getRegistrationEnrollments","splitStudentEnrollment","deleteStudentEnrollment","getRegistrationEnrollmentDetails","getStudentCoursesByEnrollmentId","saveRegistrationEnrollmentDetail","saveStudentExternalEnrollment","getStudentEnrollmentTotalFTE","getHouseholdFamilyDocuments","deleteHouseholdFamilyDocumentById","saveHouseholdFamilyDocument","getEnrollmentHomeroomTeacherCourses","updateStudentCourseAssignmentFromEnrollment","showWarning","maintainFamilyDataPermission","next","validFamily","hasErrors","errorsExist","X","getTeamsByStudentId","deleteTeamByStudentId","getTeamList","saveStudentToTeam","canActivate","sessionStorage","getItem","auth","userId","userType","isLoggedIn","myRoute","navigate","startsWith","Term","CourseSection","Course","Instructor","Room","Enrolled","AttStatusNone","TodaysAttendance","AttStatusPartial","AttStatusAll","AttStatusPerfect","GradingNone","TodaysGrading","GradingPartial","GradingAll","RCGNone","GradePostedStatus","RCGAll","RCGEx","observableMyClasses","observableselectedCourse","observableSelectedTerm","value","display","viewOptions","observableSelectedView","defaultYearSubscription","selectedCourse","_selectedCourse","unsavedChangesGuard","selectedCourseSummary","getCourseSummary","myClasses","_myClasses","selectedTerm","_selectedTerm","selectedView","_selectedView","organizeClasses","SubjectCode","Section","CourseMenuText","TermToDate","TermFromDate","getMyClasses","previousArgs","termId","viewId","isTeacher","includeAllCourses","dateItem","yearId","school","observableMyClassesStream$","year","getUTCMonth","getDate","getUTCFullYear","mergeModalOpened","loadedYear","getClassesForSchoolAndYear","getClassesWithoutBroadcast","getGradebookAttendanceClasses","getCourseProfileExistence","getClassroomTermsAndPreferences","terms","preferences","getClassroomPreferences","mergeGradingSections","unmergeGradingSections","mergeAttendanceSections","unmergeAttendanceSections","myClassesExportToExcel","TermTo","TermFrom","getTeacherClassesByMergedId","getStudentCourses","getLastRefresh","modelAge","Math","round","getTime","timeStamp","clearRefreshTimer","setTimer58","setMinutes","getMinutes","editCourseInfo","getMergeSubjectSectionData","CourseName","observableStaffAssignedPortals","UserType","getStaffAssignedPortals","updateStaffAssignedPortals","he","previousSelectedStudent","previousYear","selectedStudentSubscription","staffAssignedPortals","previousPortalArgs","siteId","getUserSchoolYearPolicies","schoolPolicy","GroupName","includes","split","trim","IsFavorite","GroupNameFavorite","Object","assign","ShowAsTile","userPreferencesService","favoritesPreferences","FavoritePortals","PortalName","Selected","PortalModule","ParentModule","prototype","call","localeCompare","getOnlinePaymentConfiguration","getStudentsForAttendance","getStudentsForAttendanceForDate","getStudentPeriodicAttendanceDetail","updateStudentAttendance","massUpdateStudentAttendanceByClass","router","url","PortalDescription","IsAnyPermissionAssigned","S360CourseRequestPages","S360SchedulingCourseRequests","S360ClassSchedulingPages","S360SchedulingClassScheduling","S360StudentSchedulingPages","S360SchedulingStudentScheduling","warning","Url","navigateByUrl","fields","Fields","tableData","_tableData","super","field","studentFilter","IsStudentFilter","FieldName","courseFilterFieldName","courseFilter","IsCourseFilter","_field","DataType","Filters","numericType","Operator","getFilterOperators","dateValue","_dateValue","setValueFromDate","dateValue2","_dateValue2","duplicate","FilterType","displayOperators","Value","Value2","getMonth","getFullYear","useCodeDescription","disabled","delete","splice","message","DisplayName","unsubscribe","enableMassUpdate","dataQueryService","observablePreferencesStream$","observableCurrentQueryStream$","currentQuery","ambiguous","reportFields","checkDisabledField","nestedName","ObjectName","CategoryName","FunctionError","_functionErrors","object","_object","category","_category","addFunctionError","Ce","T","updateFilter","K","me","openGroupMsgClick","menuItemClick","le","filters","_filters","hidden","forStudentSearch","forCourseSearch","forStaffSearch","columns","unshift","validationTrigger","click","itemName","FilterID","queryFilterFields","ze","_t","siteSectionId","Kn","Tn","changeDetector","detectChanges","filtersChange","emit","queryChanged","disableOptions","disableEdit","setCurrentDate1","setCurrentDate2","isStudentSearch","UseFilterForStudentSearch","UseFilterForCourseSearch","UseFilterForStaffSearch","isCourseSearch","isStaffSearch","Alias","UseCurrentDate1","UseCurrentDate2","ue","visibleObjects","objects","categories","Visible","getField","organize","organized","organizeObjects","organizeCategories","organizeFilters","initialized","ObjectID","isUserCategory","userCategories","CategoryID","UserDefinedTabId","disorganize","getVisible","visibleInformation","virtualizedTableData","style","background","map","SQLColumnName","allowTab","ariaLabel","keydown","children","getAutofillOptions","displayString","applyString","_currentQuery","checkDeactivationAndChange","overwriteOptionString","QueryName","menuName","forFilters","menuNamePlural","checkPermissions","observableInformationStream$","information","ngOnChanges","menuClick","currentlyActiveStudentsOnly","openAddEditQuery","saveQuery","StudentSearch","CourseSearch","StaffSearch","SavedFromID","OwnerID","Scope","SelectedSites","defaultQuery","recentQueriesInContext","recentQueries","menuItems","disabledQueryOptions","getPermissions","permissions","canUserCreatePrivateQuery","canUserCreateSchoolQuery","canUserCreateDistrictQuery","checkUserCanOverwriteQuery","ColumnHeaders","Columns","assertOrder","Data","reorder","disabledFields","callByEform","filterColumnSql","filterColumnFieldName","fieldSearch","fieldSelect","key","expandAll","applySearch","showChildren","allFields","filterFields","sortFields","_queryChanged","queryChangedSinceLastResult","Permission","error","source","ke","Te","ae","PageNumber","Content","queryClick","Pe","Mt","Jt","paginator","legacyQueries","years","SchoolCode","overwrite","warningMessage","allowOverwrite","query","existingQueryId","loadQuery","Fe","takeOwnershipClick","setFile","importQuerySelect","selectedSitesClick","forEdit","forImport","scopeObject","console","log","scopeDisabledOptions","originalQuery","import","importOption","QueryXML","DOMParser","parseFromString","getElementsByTagName","innerHTML","He","ExportType","Delimiter","OtherDelimiter","IncludeColumnHeadings","importing","importQueryClick","loadDataFromXML","validateQuery","nameInput","currentTab","importQueryFromLegacy","canUserModifySchoolQuery","canUserModifyDistrictQuery","xmlLoaded","getReportTemplateXML","getLegacyQueries","templateName","Number","isNaN","Se","We","selectedSites","join","SelectedSiteNames","SchoolName","fileName","addFileComponent","browseButton","fileType","deleteButton","templateSelectButton","selectedSitesLink","viewScopeChange","OwnerName","dt","getSyntax","FunctionId","Position","getDescription","Pt","RegExp","replace","Categories","PrivilegeId","canUserTakeOwnershipOfQuery","canUserQueryAllYears","canUserViewSQL","canPublishToIntegration","PermissionCode","fieldId","categoryId","saveAsNew","Tt","userCanOverwrite","Re","unjoinedCategoryGroups","ok","Nt","mt","$t","Yn","Rn","_maximized","observableMaximized","observableCurrentQuery","se","_information","observableInformation","_preferences","observablePreferences","observableResults","observableNextPageResults","observableCurrentTab","observableSaveResult","cachedInformation","events","Ri","urlAfterRedirects","dataQueryPreferenceChange","cachedPreferences","getPreferences","_isStudentSearch","_isCourseSearch","_isStaffSearch","studentFilters","_studentFilters","getSavedQueries","courseFilters","_courseFilters","staffFilters","_staffFilters","savedQueries","_savedQueries","savedQueriesInContext","recentStudentFilters","recentStaffFilters","recentCourseFilters","_originalStudentSearchQuery","_originalDataQueryQuery","_currentStudentSearchQuery","_currentDataQueryQuery","maximized","results","_results","_currentTab","_previousTab","initialPageSize","isInformationCached","getRecentQueries","getObjects","getCategories","getFields","getUserCategories","getDefaultQuery","getInformation","getOperators","Ft","Vt","pn","Vn","getUserPreferences","JSON","parse","dataQueryPreferences","getFunctions","functions","Ot","operators","vn","getParameters","parameters","Qn","getRelationships","getAllFields","TransformationFields","postRequest","relationships","Category1ID","Category2ID","getQueryXML","savedQueryModified","ra","showGoodSnackbar","deleteQuery","updateRecentQueries","getFilterOptions","FilterOptions","Sequence","getFilterOptionsByField","validateTransformationFunctions","getPreviewResults","PreviewData","getResults","isHasEdited","nextPageSubscriptions","ua","transFunctionChanged","resetResultProperties","pageCount","ceil","recordCount","Ji","blankAlias","zi","Ca","fn","duplicateAlias","toLocaleString","secondMessage","ei","ln","bt","sqlErrors","Errors","SQLScript","QueryString","disabledFieldInReport","Gn","$n","ui","ji","fixDataTypes","floor","getRemainingPages","resetPageIndex","saveDataQueryResult","parseFloat","getResultsAsString","getResultPDF","stringify","Template","blocking","loadingQuery","getObjectFromXML","childNodes","distinct","nodeValue","currentYearOnly","currentSchoolOnly","courseName","qi","Fa","Ci","xi","nodeName","outerHTML","IsCalculated","TransformationFunction","document","createElement","setAttribute","FunctionText","transFunctionInterpreter","un","classroomSummaryService","sql","ci","Ze","ViewName","warn","getTransFunctionText","transFunctionParser","transFunction","ShowOnReport","IsDuplicate","na","xa","aa","filterFieldId","max","Group","StudentFilterId","CourseFilterId","ApplyToAll","Code","toISOString","Category1Name","Category2Name","SwapPrimaryObject","Object1Name","Object2Name","Visiable","Field1ID","Field2ID","start","end","argEndIndexes","documentFragment","createRange","createContextualFragment","endIndex","firstChild","nodes","appendChild","NaN","Display","from","attributes","getNamedItem","getAttribute","item","FormulasTested","je","transFunctionKeydown","target","selectionStart","selectionEnd","preventDefault","ge","insertTransField","isCursorOnField","lastIndexOf","test","transFunctionClicked","IsTransErrorOpen","stopPropagation","SortDirection","SortOrder","Break","IsConstant","ConstantValue","IsDefaultFilterField","getReportTemplateXMLData","filterTranslation","IsDefaultStudentSearchFilter","keys","showFilterError1","showFilterError2","isValidDate","splitFunctionString","addRosterFilter","charCodeAt","generalPreferences","SelectedClassesOptionText","String","fromCharCode","DisplayMenu","setShowOnReportParameters","multiselect","headerText","queryResultTable","currentPage","retrievedData","reorderResults","exportResults","validateSyntax","btoa","unescape","encodeURIComponent","checkDefaultFilterFields","validateFilters","validateFunctions","ReturnType","testFormulas","checkRelationships","sn","hasOwnProperty","openDialogs","OK","sendSearch","search","searchString","autofills","getAutofills","previousSearchString","ve","De","Ge","lt","selectQuery","qe","Ct","queries","expandEmitter","Qt","qt","Sn","kt","Wn","en","XMLSerializer","serializeToString","body","createEvent","initEvent","dispatchEvent","removeChild","querySearch","canEditAndDeleteQuery","hasDetailRow","getMenuItems","st","decls","InvolvementType","InvolvementTypes","statusString","StatusCodes","studentsFilterString","Students","formattedNameWithNumber","studentsNumberFilterString","formattedNumber","studentsGradeFilterString","Grade","processing","Site","sortStudents","NonStudent","UnknownStudent","deleteClassroomDisciplineReferral","getClassroomDisciplineReferralNotes","saveClassroomDisciplingReferralNotes","getDisciplineReferralCourses","observableV10Assignment","saveCategories","deleteAttachment","clearLMSToken","getLMSIntegrationLog","observe","getGradebookIndicators","saveGradebookIndicator","deleteGradebookIndicator","setCommentSmartTags","GradeLevel","StudentNumber","Gender","observableGradingPeriods","observableCategories","observableGradebook","observableAssignments","observableAssignmentFilter","observablePermissions","observableAutosaveStart","selectedStandardTab","selectedReportingTab","selectedReportingStandardTab","_unsavedChanges","startAutosave","updateGradebook","gradebook","gradebookPreferences","StudentSortOrder","index","assignments","overrideCodes","codesScalesCredit","OverrideCodes","gradingScale","GradingScale","extraCredit","ExtraCredit","postingHistory","GradePostingHistory","course","ScoreStandardsByAssignment","standardObjects","standardBehaviorObjects","StandardObjects","standards","Standards","standardScales","StandardScales","courseWorkStandardObjects","courseWorkStandardScores","CourseWorkStandardScores","StudentNameFormat","charAt","updateGradingPeriods","ReportingTerm","reportingIndex","ForStandards","standardIndex","addFinalPeriod","gradingPeriods","updateCategories","updateAssignments","updateAssignmentFilter","updatePreferences","calculationType","FGradeCalculationType","showAlertsAndAttendance","NonScrollingColumns","Field","ScrollingColumns","loadPeriodsCategoriesPreferences","SSEC_ID","getGradebook","selectedGradingPeriod","DataBucket_ID","scores","reportCardGrades","alertsAttendance","getGradebookWithAssignmentStandards","HybridGradebook","getGradingPeriods","getAssignments","getCategoriesAndAssignments","getCourseWorkScores","getGradeReporting","getStandards","getBehaviorObjects","getStandardsByAssignment","getCourseWorkStandardObjects","getGradebookComments","getGradebookAttachments","getBackupRecords","getCategorySummary","getCopyScoresInfo","reportingGrades","finalGrades","scalesOverrides","copyScores","getAssignmentRetakes","getAdminPermissions","getIndicators","sharedGradebookService","getAssignmentsForAllPeriods","getAlertsAndAttendance","saveAssignments","saveCourseWorkScores","saveFinalGrades","postGrades","postAssignmentStandardScores","saveReportCardGrades","saveStandardScores","saveBehaviorMarks","finalizeGradeReporting","saveAssignmentStandardScores","saveAssignmentComments","saveReportCardComments","saveStandardComments","deleteCategory","deleteAssignment","createBackup","restoreBackup","deleteBackup","copyAssignments","copyCategories","copyIndicators","saveStudentNotes","saveAssignmentRetakes","saveIndicator","saveExtraCredit","deleteIndicator","createPreferenceRecords","getStudentPicturesByIds","setCustomStudentSort","saveGradebookNumbers","getGradingTypeV10","IsLocked","clearData","selectedCategory","indicators","showOnlyCW_ID","showSingleStudent","showIndicators","standardService","StandardsHierarchy","exportToExcel","HeaderDate","NumericalGradeRoundTo","GPCWRoundToValue","DueDate","AssignedDate","AssignmentHeading","ShortName","PossiblePoints","Mean","Median","Range","SummaryCharacter","Summary","SummaryCharacterCount","Final","ReportCardGrades","DBSC_ID","Score","CW_ID","worksheet","table","download","href","window","getStandardHierarchy","Parent_ID","StandardName","Level","getStandardParent","getStandardChildren","setStandardParents","assignedStandards","getAssignmentStandardHierarchy","parents","isAttached","checkInvalidStandardScore","Standard_ID","BenchMarkScale","Values","SingleGradeScale","MinPoints","MaxPoints","Invalid","gradebookService","observableisProgressCycleChecked","observableGradebookPreferences","observableGradebookTabChange","observableGradebookSettings","observableLookups","observableAssignmentsSequence","observableGradebookStudents","observableGradebookScoresTab","observableGradebookStandardsTab","observableGradebookIndicator","observableGradebookSGIndicator","observableUserPermission","observableGradebookNonScoredStandards","observableGradebookSpecialMarks","observableGradebookMismatchScores","observableGradebookAssignmentSaveAndNew","observableGradebookRecalculateStandardTotalPoints","observableGradebookToolsMenu","observableGradebookStudentAlertsUpdate","siteYearId","selectedAnalysisTab","isProgressCycleChecked","_isProgressCycleChecked","clearAllData","gradebookSettings","showAssignment","showTrends","units","specialMarks","gradeScaleDescriptions","gradebookStudents","gradebookStudentAlerts","gradebookSystemColumns","undoStudentMarks","redoStudentMarks","gradebookMismatchScores","gradebookCurriculumStandards","curriculumMarkTypes","validCurriculumMarkTypes","studentDetailCallFromModel","analysisTerm","allAssignments","assignmentFormula","gradebookV9CategoryPointsSummary","clearCourseData","clearScoreData","scoresAssignments","scoresStudentMarks","assignmentsToStandards","standardsStudentMarks","updateGradebookV9GradebookScoresTab","updateGradebookV9GradebookStandardsTab","updateGradebookTabChange","padZero","getEffectiveScore","ScorePercentValue","EffectiveScoreValue","GradeBookSpecialMarkCodeId","GradeBookSpecialMarkCode","GradeBookSpecialMarkDescription","Operation","ScorePointValue","BasePoints","CalculateSGColumnsPercentsRoundUp","setIndicators","GradeBookStudentMarkId","UseObjectivesForPoints","InvalidMark","ScoreBackgroundColor","ScoreForeColor","SystemGrade","AssignmentIndicator","AssignmentId","GradeBookAssignmentId","SystemGradeFinal","CategoryId","GradeBookAssignmentTypeId","FromRange","ToRange","BackgroundColor","ForegroundColor","ColorCode","updateGradebookPreferences","DefaultForStandardsView","updateUserPermission","saveGradebookSelectionPreferences","gradebookV9SelectionPreferences","saveUserPreferences","saveGradebookAnalysisSettings","gradebookV9AnalysisSettings","getGradebookV9Settings","updateGradebookV9Settings","gradebookRecalculateAssignments","getGradebookV9Terms","getGradebookV9Categories","getGradebookV9CategorySequence","saveGradebookV9Categories","getGradebookV9Units","getGradebookV9SpecialMarks","updateGradebookV9Lookups","updateGradebookV9SpecialMarks","getGradebookV9GradeScaleDescription","saveGradebookV9GradeScaleDescription","saveStudentSpecialGradeScale","deleteGradebookV9GradeScaleDescription","getGradebookV9Assignments","updateGradebookV9Assignments","getGradebookV9AssignmentHomework","getGradebookV9Attachments","getGradebookV9CurriculumStandards","SubjectId","saveGradebookV9Assignments","saveGradebookV9AssignmentShowOnPortal","deleteGradebookV9Assignment","getGradebookV9Formula","saveGradebookV9Formula","getGradebookV9Student","updateGradebookV9GradebookStudents","getGradebookV9ScoresAssignments","selectedUnit","getGradebookV9ScoresStudentMarks","saveGradebookV9ScoresStudentMarks","saveGradebookV9StudentScoreComment","getGradebookV9StudentMarksByStudentId","getGradebookV9AssignmentsToStandards","getGradebookV9Standards","getGradebookV9StandardsStudentMarks","saveGradebookV9StandardsStudentMarks","getGradebookV9ExportBase64","saveGradebookV9CopyAssignments","getGradebookV9BackupSets","createGradebookV9Backup","restoreGradebookV9Backup","deleteGradebookV9BackupSet","getGradebookV9SystemColumns","gradebookV9FormulaCopy","getGradebookV9SystemGradeAssignments","gradebookV9ResetFormulas","importObjMarksFromGradebookToStudentCurriculumMarks","CurrentGradeCycleId","saveGradebookV9SpecialMarks","saveGradebookV9Units","deleteGradebookV9Unit","saveGradebookV9StudentSequence","getGradebookV9CategoryPointsSummary","getGradebookV9MismatchScores","updateGradebookV9MismatchScores","gradebookV9CalculateGPA","getSiteSectionByStudentId","getGradeBookAssignmentByStudentId","gradeBookStudentMarksCopy","getReportCardGradesData","getTermGradeListCommentLookup","getBehaviorSkillRecordForAllTermGradeCycles","getCurriculumnMarksandStandards","getCurriculumMarkTypesReadForSubject","getCurriculumStudentsMarks","getBehaviorSkillRecord","getReportcardViewComments","getGradingPeriodComments","saveGradingPeriodComment","saveBehaviorSkillGrades","saveCurriculumMarks","getGradebookAssignmentLinkedByObjectives","getGradebookAssignmentLinkedObjectivesByObjectiveId","getValidGradeTemplates","finalizeGrades","importGradesFromExternalGradebook","TeacherCanImportObjectiveScores","sharedGradeBookService","saveGradebookV9CopyIndicator","getGradebookV9AnalysisStudentsAttendance","getGradebookV9AnalysisTerms","exportBase64ToFile","atob","Uint8Array","Blob","URL","createObjectURL","visibility","setSelectAllCourse","selectCourse","be","selectAllCourse","userIsTeacher","observableSelectedTermStream$","observableSelectedViewStream$","classes","classroom360Service","gradebookPortalSelected","disableView","gradebookClasses","attendancePortalSelected","setupCourses","courseInfoPortalSelected","HasProfile","CourseHasProfile","UsedForGrading","AttendanceRequired","classSourceFilters","selectedCourses","filterClass","filterChange","clearFilter","setSelectedTerm","getClasses","setSelectedView","GT_ID","gbAccessDeniedDialog","noGradingScale","noGradingType","GBDisplayConfigExists","GBViewExists","initGBPrefDialog","initPreferences","currentPortal","GradeScaleExists","GradebookAccess","gradebookV9Service","SelectedMainTab","nonScoreStandard","ShowNonScoredStandards","filtered","addLinkForm","name","onChanges","valueChanges","linkName","linkUrl","nameErrorMessage","invalid","controls","markAsTouched","LinkToolTip","OpenAsHTTPS","usingHttps","OpenAsNewWindow","QuickJumpDescription","WebAddress","saveLink","getUserLinks","AYIdentifier","getParentStudentLinks","LinkName","Link_ID","LinkUrl","IsDistrictLevel","links","getLinks","getAbsencesByCourseCard","getRecentBehaviorCard","getStaffTeamsCard","getSchoolsTodayCard","getProgramEnrollmentCard","getStaffWorkCard","getEFormSurveysForStaffCard","getUpcomingBirthdaysCard","deleteStudent","changeStudents","viewMode","editMode","addMode","staff","ownerNotInStaff","StaffId","staffId","studentList","Owner","OwnerFirstName","OwnerMiddleName","OwnerLastName","injectedStudents","disableStudents","initialOwnerId","allowCreateDistrictLists","allowCreateSchoolLists","admin","getStaffIdByUserId","staffSearchService","getStaffSearch","loginYear","studentEmitter","lookupService","getStudentListScopes","scopes","getStudentListTypes","types","originalList","initialStudents","studentListsService","getStudentList","SchoolIds","Access","sortingDataAccessor","formattedName","defaultSortingAccessor","saveStudentList","viewOnly","searchEmitter","creatingStudentList","selectStaff","getHint","getDisabled","form","nameField","descriptionField","getElementById","getStudentLists","deleteStudentList","getStudentListSchoolIds","viewStudents","oe","pe","J","xe","Ie","note","addNote","multiAdd","multiStudents","studentNoteService","getStudentNotesCategories","originalNote","notePaste","StudentID","Nickname","addStudentNotes","addStudentNote","updateStudentNotes","LastUpOn","LastUpBy","userSerivce","SNCID","categoryField","Note","noteField","Order","orderField","statusField","startDateField","junkDateString","displayBoldString","DisplayBold","classroomNoteString","ClassroomNote","clearJunkDates","junkDate","deleteStudentNote","previousUrl","studentChange","viewStudent","cellClick","headerFilterChanged","massAdd","studentSearchFilter","clearStudentSearchFilter","cancelFilter","more","actions","status","order","studentNumber","_paginator","filteringStudents","filtering","startDateFrom","startDateTo","endDateFrom","endDateTo","applyFilterStudents","v10","loading","numberMask","ShowStudentNumber","removeElement","route","queryParamMap","studentPortal","previousStudentFilters","selectedStudentInfoPortal","arrangeTableData","getStudentNotes","toggleExpandRows","observablegeneralPreferencesStream$","resize","formRef","pristine","studentNotesService","displayedStudentNotes","markAsPristine","selectedRow","showFilterClick","showFilter","clearFilterFromFooter","previousFilter","removeAllFilters","viewSchools","useLastSelectedSchool","updateStudents","acceptLabel","addEditSchools","userCanEditNotes","endDateField","displayAsBoldCheckbox","classroomNoteCheckbox","minTableWidth","columnWidths","studentNotes","cacheExpanded","assertCachedExpanded","clickHandler","row","editNote","deleteNote","Picture","clickCallback","getUserPermissionByPrivilegeIds","allDistrictSchools","SiteId","getUserPermissions","column","removeFilter","operator","addFilter","getStudentNoteCategories","config","ReadOnly","editable","selectedForm","eFormData","selectedFormData","Tabs","Pages","showNextPreviousButtons","observableIsFirstPageStream$","isFP","observableIsLastPageStream$","isLP","printClick","pdfDataURIs","eFormViewer","fileNameOverride","localPrint","showAllConditionalsPrint","Title","fileNameInput","showPrintDiv","spinnerService","showSpinner","observableBehaviorEvent","observableIntervention","observableInterventionAttachmentRefresh","observableAssociateInterventionPopup","observableBehaviorLetterCurrentStep","_filterParam","_filterParamIntervention","behaviorEvent","_behaviorEvent","locations","behaviorSharedService","incidentCodes","contextCodes","reportedByCodes","filterParam","behaviorIntervention","_behaviorIntervention","filterParamIntervention","filterChangeIntervention","behaviorLetterCurrentStep","_behaviorLetterCurrentStep","showActiveLookups","isArray","DelStatus","isFiltered","eventDateFrom","eventDateTo","actionDateFrom","actionDateTo","incidentCode","actionCode","reportedToState","onlyShowSuspensions","offender","victim","location","incidentApproveAction","isFilteredIntervention","nextMeetingDateFrom","nextMeetingDateTo","interventionist","refferedBy","refferedByOther","notes","selectedReasons","enteredBy","getBehaviorEventCount","getBehaviorEvents","getInterventionLookups","getBehaviorIncidents","getEventAttachments","getIncidentAttachments","getIncidentsByEvent","getBehaviorActions","getBehaviorActionCodes","disciplineAttendanceBulkInsertModify","disciplineTeamAttendanceBulkInsertModify","saveBehaviorAction","getMaxFileSize","getStudentCalendar","isOverlapActionDates","isDisciplineCodeDetSusExpType","isDisciplineCodeSuspensionType","getEndDateFromStartAndDuration","getDurationFromStartAndEndDate","getReferralsByEventId","getStudentScheduleforSuspensionAttendance","getStudentTeamSchedulebyDate","createNonStudent","deletNonStudent","getBehaviorPolicies","getBehaviorDaysServed","getBehaviorInterventions","saveBehaviorIntervention","getBehaviorLetterTemplates","saveBehaviorLetterTemplate","getBehaviorLetters","saveBehaviorLetters","deleteBehaviorLetters","saveInterventionMeeting","saveInterventionAttachment","saveContract","saveAssociateIntervention","getAssociateInterventions","saveAssociateEvent","saveCommunicaitonLogIntervention","Reason","InformOthers","saveBehaviorIncident","getIncidentDescription","generateNewIncident","min","apply","Incidents","EventId","AlcoholRelated","DefaultAlcoholRelated","DrugRelated","DefaultDrugRelated","GangRelated","DefaultGangRelated","HateCrimeRelated","DefaultHateRelated","WeaponRelated","DefaultWeaponRelated","IncidentCode","DefaultIncidentCodeId","ReportedToPolice","DefaultReportedToPolice","DisciplineIncidentSubCodesId","DisciplineIncidentSubCodeId","AddedBy","DCID","refreshAttachmentGrid","attachmentsComponent","refreshGrid","uniqueStudents","behaviorUniqueStudents","disciplineReferralIncidentLookup","saveBehaviorEvent","getDisciplineLocations","getDisciplineReferralPlacesLookup","getDisciplineReferralLookups","getInterventionById","NextMeetingDate","getCellClass","nextMValue","isBefore","refresInterventionAttachmentGrid","openAssociateInterventionPopup","generateMailingAddresses","reportService","runManualReport","runReportByType","revokeObjectURL","generateV9MailingAddresses","generateLetter","param","studentIds","householdParents","nonresidentParents","ParamName","ParamStringValue","onlyIfRequested","DocumentName","DocumentMimeType","DocumentModuleName","ReportParameters","ReportType","localStorage","setItem","closed","observableBehaviorLetterCurrentStepStream$","getEmailAddressessByStudentIds","kendoSelectable","InUse","schoolDisplay","observableRequestsChanged","observableStudentSummaryRequestsChanged","requestsChanged","_requestsChanged","studentSummaryRequestsChanged","_studentSummaryRequestsChanged","isTabSelected","schoolCRM_selectedTab","isDistrictTabSelected","districtCRM_selectedTab","getDistrictGradeLevelCredits","updateDistrictGradeLevelCredits","getCourseRequestGetDistrictGradeLevelRequirementsBySchool","getCourseRequestGetDistrictGradeLevelRequirementsByYear","getSchoolsForRequirementAssignment","assignSchoolToRequirements","deleteDistrictGradeLevelRequirement","getCoursesForDistrictRequirement","getSchoolCourseRequests","deleteSchoolCourseRequests","approveSchoolCourseRequests","updateSchoolCourseRequests","updateDistrictGradeLevelRequirement","getSchoolGradeLevelCreditsOverview","GetSchoolGradeLevelCreditsForAddEdit","UpdateSchoolGradeLevelCredits","GetSchoolGradeLevelRequirements","UpdateSchoolGradeLevelRequirement","GetRequestTallyCourses","scheduleFolderService","selectedScheduleFolder","getRequestConflicts","getSchoolStaff","getSchoolTerms","getCourseRequestStudentSummary","AddRemoveCourseRequestInMass","RebuildRequestConflicts","OverrideConflicts","checkStudentScheduleBatch","createStudentScheduleBatch","getStudentScheduleBatchData","performStudentScheduling","processStudentScheduleBatch","stopStudentScheduleBatch","saveStudentScheduleBatch","rejectStudentScheduleBatch","getNumberMask","guide","mask","prefix","includeThousandsSeparator","integerLimit","allowDecimal","decimalLimit","creditsDecimalPlaces","getCreditFormatPipString","clearStudentSchedule","massAddRequiredCourseRequests","getSchoolsForRemoveGradeLevelRequirements","removeGradeLevelRequirementsForSchools","typeName","IsDefault","nameAndStatus","ScheduleFoldersName","observableSchoolSchedulingFolders","observableDistrictScheduleFolder","observableSelectedScheduleFolder","schoolSchedulingFolders","_schoolSchedulingFolders","districtScheduleFolder","_districtScheduleFolder","_selectedScheduleFolder","maintainSchoolFolders","yearSubscription","resetScheduleFolders","getDistrictScheduleFolder","getScheduleFolders","getScheduleFolderDetails","addEditScheduleFolder","copyScheduleFolder","activateScheduleFolder","deactivateScheduleFolder","deleteScheduleFolder","rolloverScheduleFolder","isClassicFolderActive","periods","dayType","term","greyedOut","PeriodName","DayName","DayTypeName","ShortDescription","SlotName","Displays","Day","ClassName","scheduledSection","StudentsInSlot","StudentsAssignedToSection","SeatsInSlot","MaxSeatsOfSection","TeacherNames","teacherNames","RoomName","ClassRoomName","MeetingPatternName","TermName","Start","End","SubjectArea","Department","CreditCode","SectionLinks","CourseLinks","courseSection","CourseLinkConcatenated","SectionLinkConcatenated","teacherDisplayString","WithdrawalCode","setScheduleSection","getCourseSection","getTeachersDisplayString","id","programAndServices","title","programsAndServicesService","deleteProgramService","massDeleteProgramService","getProgramsAndServices","studentEnrollment","student360Year","getServiceDetailByServiceCodeId","saveProgramAndService","EntryDate","ExitDate","getProgramsAndServiceForMassUpdate","massAddProgramAndService","massEditProgramAndService","getInvalidStudentForSelectedProgramAndServiceCode","importStudentProgramAndServices","getProgramServiceCodesByUserId","invalidStudent","prepareMessage","continue","back","fieldLengthString","FieldLength","attachmentClick","onProgramCodeChange","onServiceCodeChange","backClick","AttachmentId","addProgram","programCodes","programAndService","showSteps","steps","header","IsInActive","ProgramCodeId","massEditProgramAndServices","originalProgram","dataSource","filterPredicate","UserHasEditPermission","selectedProgramCode","confirmback","serviceCodes","selectedServiceCodeId","programService","programcode","serviceCode","ps","ServiceCodeId","ProgramServices","Inactive","getServiceFieldByServiceCodeId","ProgramAndServicesDetail","FieldId","FieldType","FieldValue","FieldValueId","ProgramServiceField","setCurrent","toDate","FileExtension","OriginalFileName","AttachmentAddedOn","AttachmentFileMimeType","AttachmentAddedBy","FieldLookupValues","FieldDecimal","programCodeField","serviceCodeField","entryDateField","editProgram","deleteProgram","closeFilter","shown","selectedProgramName","selectedServiceName","programName","serviceName","toggleAllRows","observableStudent360YearStream$","observableSelectedProgramAndServiceStream","applyFilter","openFilter","showInactiveProg","clearFilterFromNotice","entryDateStart","entryDateEnd","exitDateStart","exitDateEnd","toggleExpanded","expanded","programsAndServices","UserHasDeletePermission","originalProgramsAndServices","hasDetails","Comments","onThisDate","ProgramName","onShowInactiveProgram","showInactiveProgram","userCanEditPrograms","isProgramRowsExpanded","detailRow","ServiceName","getInactiveChkStyle","regEnrollMode","getSchoolSettingsAttendanceCode","updateSchoolSettingsAttendanceCode","updateSchoolSettingsAttendanceOptions","getSchoolSettingsStepDefinitions","getSchoolSettingsAttendanceCodeByStepDefinitionId","updateAttendanceTrackingGroup","AttendanceCodes","attendanceStepDEfinitionDuplicateCheck","stepSystemRunBatch","getSchoolSettingsReportingSystemTemplates","deleteAttendanceTrackingGroup","getPermissionGroupDescription","getAllUsersAssignedToPermissionsGroups","isPermissionsGroupExists","copyPermissionsGroup","copyPermissions","deletePermissionsGroup","getPermissionsList","savePermissionsGroup","getWhoHasPermissions","saveUserPermissionsGroups","getPermissionsGroupsAssignedToStaffUser","observableSelectedStaff","observableStateReportingPermition","observableStaffCurrentMedicalConditionChecked","observableMedicalConditionShowAlert","selectedStaff","_selectedStaff","staffCurrentMedicalConditionChecked","_staffCurrentMedicalConditionChecked","medicalConditionShowAlert","_medicalConditionShowAlert","updateStaff","staffList","updateSelectedStaff","setUnmask","getStaffPicture","getStaffHeaderDetail","getStaffMedicalAlerts","getStaffAssignedSchools","getMedicalConditionReadByStaffId","SaveStaffMedicalCondition","getStaffHealthVisitLogReadByStaffId","getStaffHealthVisitLogReadById","getStaffDocuments","getStaffDocumentType","saveStaffDocument","deleteStaffDocument","getClinicLogVisitCodes","getStaffClassesByStaffId","getOnDutyUsers","getMedicalCodeTreatmentBySiteId","deleteHealthVisitLogById","saveHealthVisitLog","saveTreatmentCode","deleteClinicTreatmentByClinicLogId","getStaffByStaffId","getPrimayAddressByFamilyId","getAditionlaAddressesByFamilyId","saveStaffPrimayAddress","saveStaffAditionalAddress","deleteStaffAddress","isExistStudentAndStaffStrLunchPin","isExistStudentAndStaffStrID","saveFacultyStaff","saveFacultyStaffPhoto","deleteFacultyStafftById","facultyStaffReadByNameDuplicateChk","isStaffInUse","getStaffAttendance","updateStaffAttendance","deleteStaffAttendance","getStaffUser","saveStaffUser","getUserByUserId","getStaffEmergencyContacts","saveStaffEmergencyContactSequence","updateStaffEmergencyContact","deleteStaffEmergencyContact","getStaffSchoolAssignments","saveStaffSchoolAssignments","saveStaffReporting","getCMPComponentValidation","getStaffClassifications","getStaffHeigherEducations","getPhotoIdLayout","copyUserPermissions","getStaffRoles","saveStaffRoles","clearPersmissions","mergeStaffAllSchoolsPermissions","isPhoneValid","isValidEmailAdress","deleteSpousePeopleById","saveUserPermissions","isStaffHasSchoolSpecificPermissions","copyUserPermissionsToAssignedSchools","isUserNameAlreadyExists","getStaffByRoles","static","$id","removeIdFields","createNextName","substr","convert12HourTimeTo24HourTime","setHours","overlappingDates","twelveHourTimeRegexp","twentyFourHourTimeRegexp","validate24HourTime","validate12HourTime","updateValueAndValidity","setSeconds","setMilliseconds","select","execCommand","isFinite","getTimezoneOffset","getHours","baseUrl","checkEdge","saveFile","mimeTypes","navigator","userAgent","getComputedStyle","offsetParent","getPropertyValue","offsetTop","nextElementSibling","clientHeight","offsetHeight","scrollWidth","host","pathname","iso8601RegEx","fnConverDate","performance","now","random","Student","protocol","getBaseLocation","Counselor","Admin","Shared","Classroom","Reporting","Management","StateReporting","Health","SpecialEd","getOwnPropertyNames","copyArray","getType","convert","isEqual","DefaultAllowedFileTypes","originalAttachment","documentTypes","forGradebook","requireDescription","allowedFileTypes","documentTypeId","DocumentTypeId","saveEvent","FileDescription","documentTypeField","initialize","courseSearchQuery","addField","fieldsWithoutFilters","setFilterValue","setAllFilters","pageSize","obtainFilterOptions","setFilterField","advancedStudentSearchErrors","studentSearchFilters","ddlSchool","checkCurrentQueryWarning","addDefaultFilterField","getDataQueryFieldLookupReadByFieldId","getStudentSearchSchoolByYearId","SchoolId","setFilterPropertiesSwitch","allFilters","EnrollmentDate","DOB","setValueSwitch","genericFilter","scrollTo","scrollToLast","checkExpanded","rowKeyPress","_cachedData","setVisible","detailRowVisible","checkVisible","columnIndex","useFilterDataAccessor","filterDataAccessor","dataType","stringFilter","numberFilter","dateFilter","enumerationFilter","booleanFilter","toLocaleLowerCase","endsWith","addRemoveFilter","getFilter","hasFilters","paddingTop","paddingBottom","overflow","borderWidth","_MatToolbarBase","mixinColor","_elementRef","MatToolbarRow","ɵfac","ɵdir","i0","elementRef","_platform","_document","isBrowser","_checkToolbarMixedModes","_toolbarRows","changes","MatToolbar","i1","DOCUMENT","ɵcmp","pt","we","ngContentSelectors","styles","MatToolbarModule","ɵmod","ɵinj","MatCommonModule","observableEventCreatedFromReferral","getClassroomDisciplineReferrals","saveClassroomDisciplineReferral","PBISSelectedOthersInvolved","PBISSelectedPriorInterventions","getStudentsFromReferral","Actions","MemId","Involvement","Alerts","StudentAlerts","IsUnknownStudent","PhoneNumber","CellPhone","DateOfBirth","IncidentCount","IsNonStudent","IncidentComments","DisciplineCode","MemberId","InvolvingType","EventName","EventNumber","IncidentsFunctionalCodeId","IncidentTime","Location","RoomNumber","ReportedBy","EnteredBy","AddedByStaff","IncidentRefferalId","StaffComment","UserHasPermissionForStudent","setInitialValues","Context","acceptReferrals","ReferralId","setUTCSeconds","getSeconds","setUTCHours","setUTCMinutes","EventComment","StaffName","IncidentCodeId","LocationId","eventCreatedFromReferralPage","acceptReferralsinOpenEventModel","ReferralSiteId","referralCreated","observableEventCreatedFromReferralStream$","syncToServer","confirm","User","currentEmail","changeEmailForm","newEmail","repeatNewEmail","newEmailError","setErrors","repeatNewEmailError","UserName","showNotice","saveEmail","canUserChangeEmail","setUserEmail","checkInOutHistory","isStaff","getCheckInOutHistory","calledFromMenu","maxFileSizeMessage","chooseFile","droppable","onDragOver","hoverTarget","event","hovering","onDragLeave","onDrop","dataTransfer","files","fileInputRef","MouseEvent","fileString","fileStringChange","fileTypeChange","fileExtension","fileExtensionChange","fileNameChange","fileSize","fileSizeChange","size","maxFileSize","FileReader","pop","readAsText","onload","result","readAsDataURL","saveButtonEvent","saveServerEvent","toCamelCase","onClick","localDisabled","clickEvent","checkId","label","onKeydown","errorList","errorLinkClick","overlayRef","dispose","contains","errorCircleClick","hasAttached","overlay","flexibleConnectedTo","_eref","parentElement","withPositions","offsetY","offsetX","originX","originY","overlayX","overlayY","weight","create","positionStrategy","provide","useValue","injector","attach","clearSubscription","clearHover","filterSubscription","filterHover","backgroundColor","dateValueChange","filterValue","filterValueChange","operation","trueValue","falseValue","indeterminateValue","operationChange","columnName","removeClick","inputs","menuTrigger","pusherMenuStyle","operationSelectWidth","operationMarginRight","fieldsMarginBottom","floatLabel","showLabel","marginTop","filterInputFocus","filterContents","filterInputRef","openMenu","trigger","clearFilterEvent","clearFilterSubscription","rt","okClick","showProceed","previousEvent","assignmentService","getOverrideCodes","forAssignments","ForAssignments","ForGradeReporting","isEven","topMenuItemClicked","bottomMenuItemClicked","isTopMenuItemDisabled","topMenuItems","isBottomMenuItemDisabled","bottomMenuItems","disabledTopMenuItems","disabledTopMenuItemsBoolean","disabledBottomMenuItems","disabledBottomMenuItemsBoolean","selectAll","gradeLevelSelected","yearSelected","includeGradeLevels","moreColumns","getGradeLevels","gradeLevelIds","selectedGradeLevelIds","includeYears","siteYearIds","selectedSiteYearIds","availableSchools","maintainStudentsDistrictWide","getSchoolsBySchoolIds","SchoolDescription","selected","setGridData","sortBy","yearsForC360","Years","gradeLevelLookups","gradeLevels","updateSchoolGradeLevels","getGradeLevelsLookup","GradeLevels","SiteID","SiteIDs","checkAll","allSelected","schoolSelected","expandAllClick","itemHeight","_students","getStudentLabels","overrideSort","sortStudentsByPreferences","studentIndex","showNumber","overrideStudent","includeAllOption","getStudentSuffix","studentSelectionName","WithdrawnDate","longestStudentName","studentdropDownWidth","firstStudent","changeStudent","previousStudent","nextStudent","lastStudent","studentChanged","changeStudentById","Suffix","disableToggle","dropdownlist","popupSettings","startingIndex","setValue","setIndex","tabLabels","selectedIndexChange","noEvent","selectionsChangeIndex","tabChange","selectTabByName","clickTabWithoutEvents","checkDisabled","disabledTabs","viewQuery","nameIterator","idIterator","checked","_checked","checkedChange","innerCheckbox","hasContent","contentRef","clear","hint","_hint","determineMarginBottom","hintAlign","_hintAlign","errorMessage","_errorMessage","showError","_showError","control","_control","matFormField","color","stateChanges","updateOutlineGap","_matFormField","_color","ngControl","viewToModelUpdate","mouseEnter","mouseLeave","preventCollapse","validator","required","marginBottom","isChecked","model","values","isIndeterminate","toggleSelection","update","_selected","originalDataSource","getValue","dropdownIsOpen","sortSelectedItems","selecteByCommaString","valueFieldType","dataSourceIds","moveSelectedToTop","sortedDataSource","valueField","getDisplay","displayField","trackByIndex","openChange","openedChange","matSelect","selectedChange","ids","nowClick","_timeField","timeFieldChange","timeValue","_timeValue","timeValueChange","twelveHourFormat","twentyFourHourFormatChange","twelveHourFormatFormatChange","onBlur","change24HoursTo12Hours","schoolName","curriculum","description","getCourseCatalog","getClassSearch","observableexternalFilters","observableSelectedLayoutViewType","observableSavedLayouts","observableSelectedLayout","observableDataQueryFields","observableUserPermissions","observableincidentCode","observableFieldDataLoaded","externalFilters","_externalFilters","savedLayouts","_savedLayouts","selectedLayoutViewType","_selectedLayoutViewType","selectedLayout","_selectedLayout","LayoutTypeID","selectedLayoutType","updateUserLayoutHistory","dataQueryFields","_dataQueryFields","_userPermissions","validActionCodes","_validActionCodes","fieldDataLoaded","_FieldDataLoaded","getLayoutById","getLayoutsByType","getSpecialFields","getLayoutTypes","getDataQueryFields","saveLayout","deleteLayout","TylerDefault","setUserLayoutTypeToDefault","setUserLayoutToDefault","getUserDefaultLayout","getSectionData","getCustomLayoutSchoolDefaults","saveDefaultSchoolLayouts","getSectionDataFromSP","getV10DataQueryFieldLookup","getV9DataQueryFieldLookup","performDataQueryUpdate","getFilterFields","Sections","AvailableFields","RequiredForFilter","DQFieldID","useCurrentYearOnly","v10YearFieldNames","getFieldList","ParentSectionID","SelectedFields","SortByDefault","specialFields","SpecialFieldID","IsSection","SectionId","RequiredForDisplay","AlwaysIncludeInResults","IncludeInResults","getAllFieldsForChildSections","getFieldsForChildSectionFilters","IsGrid","SPName","getAHSubGridParameters","getV9AHSubGridParameters","sectionData","sectionId","ParameterName","DefinesRows","getSpecialColumns","DefinesColumns","storeSectionData","getStoredSectionData","getFilterValueFromParent","getDefaultValueForFilter","numericDataTypes","textDataTypes","dateTimeDataTypes","SaveAsNewClick","enableSave","confirmDialog","dialogTitle","ContinueWithoutSaveClick","customLayoutService","layoutTypeChanged","hideSectionChange","drop","isAcademicHistory","layoutTypes","layoutType","layout","previousType","setLayout","ColumnBreak","colBreakFieldId","dqFieldsRetrieved","setFieldsToDefault","checkRequiredFields","filterAvailableFields","reorderAvailableFields","checkColumnCounts","unsavedFieldChanges","getFieldDisplayName","selectedFields","setFieldOrder","previousIndex","currentIndex","removeItemClick","SectionID","AllowEdit","revertChangesClick","rbgScopeRef","txtNameRef","layoutNameChanged","isSpecialFieldDraggable","hideChildSections","Hidden","ParentSectionIsHidden","hideDisableCheck","duplicateClick","getLayouts","observableSavedLayoutsStream$","layouts","setLayoutSource","addLayoutClick","selectLayout","getCustomPage","saveFieldValues","expended","opened","cdkDetailRow","template","tRef","toggle","expandListener","expandSubscription","vcRef","render","toggleChange","createEmbeddedView","$implicit","debounceTime","input","onChange","writeValue","_renderer","setProperty","registerOnChange","_debounce","registerOnTouched","onTouched","_timer","clearTimeout","useExisting","multi","onKeyDown","specialKeys","maxValue","allowNegativeValue","negativeRegex","regex","ngAfterViewChecked","el","querySelectorAll","allowableCharacters","specialCharacters","maxLength","oldValue","startingValue","regExp","saveToObjectModel","emitNewValue","performMask","element","performedMask","ngModel","ngModelChange","toType","__proto__","allowedKeys","disallowedKeys","abs","maxPrecision","maximumEnforce","minimumEnforce","numberOfCharacters","ignoreNumbersOnly","regexWithDecimal","copyClick","dragStart","dragEnd","rowDropped","controlDropped","eFormDesignerService","connectedDropListAdd","setSelectedStatus","observableselectedElementChangedStream$","observableDragStartStream$","isDragging","observableDragEndStream$","connectedDropLists","observableConnectedDropListsStream$","selectedElementType","selectedColumn","isSelected","columnClick","columnClickEvent","focusOnColumn","openPropertiesTab","container","previousContainer","assignControlsNewID","Controls","Rows","getAllFormControls","focusOnControl","rowPredicate","columnHasNonRemovableControls","deleteSelectedElement","locationToAdd","cotrolType","addColumn","getControlId","getRowId","Width","isDevMode","CustomizationDevMode","basePage","BasePage","ControlType","controlTypes","radioButtons","setUpRadioButtons","observableRadioOptionsChangedStream$","selectedControl","image","linkToFile","getAttachment","contentTemplates","RefName","CustomFieldRefName","contentTemplate","TemplateRef","Attachment","getEFormAttachment","radioIds","radioValues","radioLabels","DropdownOptions","controlClick","formatControlType","observableselectedElementChanged","observableConnectedDropLists","observableTabNameChanged","observablePagesChanged","observableDragStart","observableDragEnd","observableControlsUpdated","observableRadioOptionsChanged","observableMergeFieldClicked","observableChoiceMergeFieldClicked","observableCloseMergeFieldWindow","observableOpenPropertiesTab","observableOpenControlTab","observableshowSliderPanel","observableshowSliderPanelWidth","observableSelectedPageChanged","_selectedTab","selectedPage","_selectedPage","_selectedColumn","_selectedRow","_selectedControl","_selectedElementType","setUpCriticalChoices","CriticalQuestion","masterControlList","SurveyFieldID","CriticalValues","CodeDesc","IsCritical","setUpForm","LastUsedControlId","getMaxControlId","LastUsedTabId","LastUsedPageId","getAllControlsByColumn","getAllControlsByRow","addRow","focusOnRow","findParentRowForColumn","findParentRowForControl","addControl","textbox","Label","addTab","addPage","focusOnTab","focusOnPage","openControlTab","findParentColumnForRow","findParentColumnForControl","isControlOnPage","isColumnOnPage","isRowOnPage","moveElement","getPromptForDataObjects","promptForDataTypes","getPagePromptForDataObjects","getTabPromptForDataObjects","selectedElementChanged","treeViewExpandAll","Expanded","setExpandAllByColumn","closeMergeFieldWindow","updateConditionalControls","ParentObjectId","Condition","allFormControls","rowHasNonRemovableControls","CannotBeRemoved","pageHasNonRemovableControls","tabHasNonRemovableControls","convertEFormControlTypeToCustomFieldTypeID","buttons","date","checkbox","dropdown","text","component","SetRadioValue","columnDropped","columnPredicate","IsMobile","getColId","StaffNote","rowInitialized","controlInitialized","masterId","controlViewStatuses","Initialized","rowViewStatuses","checkInitializedStatus","topLevel","viewInitialized","valueChanged","attachmentChanged","linkClick","originalEditableValue","Editable","_editable","eFormAttachment","viewType","NewForm","setDefaultOptionFlags","setInitialVisibility","observableControlValueChangedStream$","isConditionMet","Default","LinkedDBField","PreviousAttachmentId","mergeFieldDependantControlIds","transformMergeTags","pipeTrigger","observableShowConditionalObjectsStream$","showConditionalObjects","observableMergeFieldValuesRetrievedStream$","observablePipeTriggerStream$","getMergeFieldDependantControls","ObjectType","highlightChanges","setMaxFileSize","observableReadOnlyStatusChangedStream$","validateFunction","bind","DesignPageIndex","designPageIndex","loaded","extractMergeTagIds","getControlIdFromMergeTag","inputControlTypes","FileDataBase64","CustomField","controlValueChanged","translateService","requestAnimationFrame","startRender","rendered","maxFileSizeByte","maxFileSizeKB","customField","PDFName","acceptClick","rejectClick","notesClick","submitClick","ViewMode","isPreview","isReview","IsPreview","showCriticalMessage","getInstance","getEFormInstance","Instance_ID","selectedInstance","StoreLocation","FormDocTypeId","eFormAttachmentForPDF","AllowMultiple","PDFNameOverride","initGenerateEnglishPDFOnly","EnglishPDF","saveAcceptedForm","DatabaseFields","getLinkedDBFields","getLinkedCustomFields","CustomFields","getSiteYearId","saveAllCustomFieldsInMemory","studentHeader","addFormToPDFStarted","columnInitializedBuffer","TranslatedPDF","DocToFamily_ID","EnglishJSON","validatePage","CheckEformsStatus","Student_ID","ParentMem_ID","PrimaryParentMem_ID","CompletionDue","CompletionDueOption","Frequency","SubmittedDate","SubmittedOn","confirmSubmission","updateAttachments","templateProcessType","categoryType","submittedWarningMessage","submitEFormFor","SubmittedByName","getEformCategoryByInstanceId","SubmittedBy","IsSurvey","DisplayCriticalMessage","checkForCriticalMessage","ProcessType","CompletionMethod","saveEFormData","FormData","Year_ID","initGenerateEFormPDFAndJSON","Non_English","currentLanguage","SurveyAnswers","getSurveyAnswers","clearAttachments","saveSurveyAnswers","FormID","Answer","saveEFormSurveyAnswers","columnInitialized","columnViewStatuses","HeaderSelectedLogo","getLogos","districtLogo","alternateDistrictLogo","siteLogo","alternateSiteLogo","reportingService","getReportLogos","sanitizer","bypassSecurityTrustResourceUrl","DistrictLogo","AlternateDistrictLogo","SiteLogo","AlternateSiteLogo","languageChanged","showConditionalChange","tabsClick","columnInitializedPrint","changesInput","configInput","disableMergeFields","hideKendoBottomPadding","HideTitle","useInstance","UseInstance","pageID","customizationService","initializePage","setSelectedStudent","setLinkedDBFieldValues","getTabs","getLanguages","selectedPageNumber","getSelectedPageNumber","checkConditionalObjects","Incident_ID","PageObjectType","getMergeFieldValues","NonresidentParents","showPrintDivInput","Column","tabViewStatus","getFormLabels","isFirstPage","isLastPage","clearSelectedStudent","clearMergeFieldValues","languageChange","translationService","overrideTranslationPipe","formControls","allCustomFieldControls","AlwaysShowAllConditionals","visibleTabs","deleteAttachments","saveAttachments","deleteEFormAttachments","saveEFormAttachments","findColumn","completFieldName","findRow","mergeFieldPipeTrigger","tabs","observableIsFirstPage","observableIsLastPage","showConditionalObjectsChanged","goToErrorTab","getAllControlsByPage","HasError","IsRequired","allowedFileExtensions","allowedImageExtensions","afterLocalPrint","addEFormAttachmentsToPDF","getPdfDataUriAsBase64","observablePageLoadCompleteStream$","generateEnglishPDFOnly","addFormToPDF","generateEFormPDFAndJSON","transformDatabaseMergeTag","convertNonEnglishFormToEnglish","revertToEnglish","delay","observablePageLoadComplete","updateEnglishPDF","roundToTwo","Promise","dropped","pdfExportRef","scale","export","then","renderCompleted","languageIdOverride","languageChangePDF","addFormAndComplete","completeRender","renderedFormData","getControlLabels","labels","getRowLabels","getColumnLabels","serviceControls","languages","selectedLanguageCode","getTranslationsForLanguage","overrideTranslations","showContent","checkVisiblePageCount","getAllCustomFields","getCustomFieldByRefName","setCustomFieldByRefName","getLinkedDBFieldValues","HintLabel","LinkedCSTFieldName","massGetCustomDataFieldValue","divider","verticalDivider","checkboxWithTextbox","NotSubmitted","Submitted","Rejected","Accepted","Complete","observableControlValueChanged","observableShowConditionalObjects","observableDatabaseFields","observableMergeFieldValuesRetrieved","observableMergeFieldsRetrieved","observablePipeTrigger","observableeFormHeadLinePermission","observableeFormstrQueryXML","observablesurveyAnswersFilterParam","observableReadOnlyStatusChanged","_eFormSubmissionsFilterParam","availableTo","selectedClasses","deadlineFrom","deadlineTo","showFromFrom","showFromTo","showToFrom","showToTo","createdFrom","createdTo","createdBy","lastUpdatedFrom","lastUpdatedTo","lastUpdatedBy","eFormSubmissionsFilterParam","eFormSubmissionsFilterChange","isEFormSubmissionsFiltered","submittedFrom","submittedTo","surveyAnswersFilterParam","_surveyAnswersFilterParam","isSurveyAnswersFiltered","dateFilterType","specificDate","fromDate","rangeStartDate","rangeEndDate","getAllFormTextToTranslate","English","formatControlName","formatControlNameForErrors","extractMergeTags","ShowHeader","ShowHeaderSchoolName","ShowHeaderSchoolAddress","mergeFields","mergeFieldValuesRetrieved","saveCategory","getAllTemplates","getEFormTemplate","saveTemplate","getMergeFields","getEFormDatabaseFields","getEFormDatabaseFieldOptions","getEFormAttachments","getManualSubmissionAttachment","saveManualSubmissionAttachment","getInstancesForProcessing","getEForms","populateFormData","getFormDataOnlyByIDs","getFormDataByInstanceId","getStudentParentEforms","getStaffUserEformsByLoginId","checkForAvailableEForms","checkForAvailableStaffEForms","updateEFormPDFData","GetEformStatusHistory","getSchoolsByDomains","getClassesBySectionId","getClassesByTgsId","getUserEformTemplates","getEformPermissions","saveInstance","checkInstanceName","retrieveMergeFieldValues","getEFormStudentsByInstanceId","getSchoolIdsByClassIds","getSchoolIdsByStudentIds","canCreateUserProcessEform","getEformCreateByStaffId","updateLinkedDBFields","EnableCustomizationFramework","C360CustomFieldsImported","translateMergeField","transformFormOnlyMergeTag","sanitize","getTemplateChangeHistory","getTemplateSettingsHistory","getInstanceChangeHistory","getInstanceSettingsHistory","saveTemplateChangeHistory","saveTemplateSettingsHistory","saveInstanceChangeHistory","saveInstanceSettingsHistory","getInstancesByTemplateId","getEformTemplateByAuditId","getEformInstanceByAuditId","markInstanceAsViewed","getSubmissionCounts","getSchoolsStudentFamilies","getSelectedStaffForEForm","getClassStudentFamilies","getStudentFamilies","getStudentFamiliesByService","getSelectedStudentPopupData","getMassMailByParentId","getDQStudentCount","getStudentIdsFromDynamicQuery","getSurveyQuestionsByTemplateID","getSurveyQuestionsByInstanceID","saveEFormSurveyFields","updateInstanceFormDataOnly","exportEFormsToExcel","padStart","reverse","strStudentId","ParentName","Cell_number","Home_Number","Address","Email_Address","textContent","innerText","Sheets","SheetNames","bookType","exportService","saveAs","exportInstancesToExcel","Instructions","internal","getWidth","getHeight","output","addImage","getPageCount","copyPages","saveAsBase64","getSurveySummary","getSurveyNotSubmitted","getSurveyAnswerDetails","getEFormSurveyAnswerSummary","Answers","helpString","pattern","keyRestriction","csv","csvField","validateKey","exportTableData","sortData","filteredData","exportMatGridToExcel","setFavorites","portalCheckboxClick","selectedFavoritesPortals","ParentPortalName","isDefaultPreferences","isDefaultSelected","menuRef","collapseExpandAll","updateFavoritePortals","expandGroup","togglePortal","selectItem","list","Items","GridData","DialogTitle","ColumnHeader","OKButtonLabel","selectAllGridItems","IsSelected","checkMinAndMaxNumberOfSelected","maxAllowedSelected","minRequiredSelected","selectionChanged","getSelectedIDs","leavePage","preventSave","saveChoice","canDeactivate","currentComponent","urlTreeWorkaround","createUrlTree","go","showWarningWithoutSave","showWarningWithoutSaveRoute","warningDialog","NewFamilyRegistration","familyRegistrationService","householdParent","stayEvent","pageToPdfTriggerSubscription","observablePageToPdfTrigger$","exportPageToPDF","pdfPrintRef","paperSize","margin","autoScale","pageWidth","landscape","getRelationshipLookup","getLanguageLookup","getMaritalStatusLookup","getStreetDirectionLookup","getStreetTypeLookup","getCountryStateLookup","getCountryLookup","getEthnicityLookup","getGenderLookup","getRaceLookup","getSuffixLookup","getLivesWithLookup","getGradeLevelLookup","getMedicalConditionLookup","getDataDefCode","getCityStateZipCodeLookup","getAttedanceCodeLookup","getDisciplineReferralFunctionalMotivationLookup","getDisciplineReferralContextLookup","getDisciplineReferralReporterLookup","getDisciplineReferralSchoolLookup","getDisciplineReferralPlaceLookup","getDisciplineReferralIncidentCodeLookup","getCommunicationLogTypesLookup","getCommunicationLogPersonCodesLookup","getCommunicationLogResultLookup","getORFormDocumentType","getincidentCodeDetailLookup","getAdditionFieldsLookup","getIncidentWeaponLookup","getStudentRegCodes","getCreditCodes","getAllGradeLevels","getCommunicationLogReasons","getCommunicationLogPreDefinedConfidentialNote","getCommunicationLogPreDefinedComment","getStaffRolesLookup","getStudentPortfolioCategoryLookup","getDocumentTypeLookup","getRolesForEForms","getSubjectTermTypeLookup","getIncidentSubCodes","getStateReportingCodes","getDepartmentCodes","getPhysicianTypeList","getVaccineTypesLookup","getExemptCodeLookup","getTestMastersLookup","getDistrictLookup","getSiteLookup","getGradeLevelsReadBySchoolYear","getPermissionGroupLookup","getTerminationReasionLookup","getWithdrawnCodesReadLookup","getTeacherSpecialtyCodesLookUp","getClinicVisitCodesLookup","getMedicalCodeClinicVisitNoShowLookup","getDeliveryResultCodeLookUp","getCourseGradingPurposeLookup","getTermGradeTypesLookup","getMedicationCodesLookup","getMedicationFrequencyLookup","getMedicationRoutesLookup","getPractionerLookUp","getMedicalClinicLogSentStudentLookup","getMedicalClinicLogDOHSurveillanceLookup","getClinicLogVisitCodesLookup","getMealApplicationConfidentiallyWaiverLookups","jn","cn","deSelectedStudents","continueClick","retValUnselectWarning","studentsWithoutRecipients","loadTableData","noEmailWarningDataSources","sort1","getAriaRow","noEmailWarningDialogRef","retValNoEmailWarning","Zi","Xa","loginSettings","classRow","classStudentsCheckAllClick","SelectedClasses","classStudentsCheckAll","Si","classStudentClick","SubjectSections","getAriaDetailRow","wr","teamRow","teamStudentsCheckAllClick","SelectedTeams","teamStudentsCheckAll","teamStudentClick","StudentTeams","listRow","MassEmailStudents","listStudentsCheckAllClick","SelectedLists","listStudentClick","listStudentsCheckAll","StudentLists","selectedClassesCheckAllClick","classClick","selectedTeamsCheckAllClick","teamClick","selectedListsCheckAllClick","listClick","selectedStudentsCheckAllClick","studentClick","closeModalClick","testContactType","contactTypeClick","studentRecipientTypeChange","householdRecipientTypeChanged","To","Uo","massEmail","massEmailObj","StudentIds","getStudentInfoForMassEmail","ReferringPage","columnsToDisplayInStudentView","MassEmailClasses","selectedStudentTeams","MassEmailStudentTeams","IsSelectedForMassEmail","selectedStudentLists","MassEmailStudentLists","selectedStudentsCheckAll","selectedClassesCheckAll","selectedTeamsCheckAll","selectedListsCheckAll","SendEmailToTeachers","SendEmailToTeamStaffMembers","StudentRecipientType","HouseholdRecipientType","NonHouseholdRecipientType","IncludeAll","MassEmailContactsGrouped","householdParentLabel","pageHeader","pageHeaderHeight","tab","tabHeight","tblControls","tblControlsHeight","pageFooter","pageFooterHeight","classViewDataSource","teamViewDataSource","listViewDataSource","selectedContactType","SelectedContactTypes","resizeGrid","loadDataTable","studentViewDataSource","cvSort","tvSort","lvSort","svSort","massEmailErrorCount","AdditionalRecipients","to","cc","bcc","Recipients","StudentContacts","IsGuardian","IsPrimaryParent","Relationship","BCC","RequestsMailings","CC","massEmailService","getTeacherRecipientsForMassEmail","GetTeamStaffMemberRecipientsForMassEmail","retValSelectRecipient","recipientsSelected","selectRecipientDialogRef","ContactTypes","tabIndex","unselectedWarningDialogRef","isBackClick","gridHeight","innerHeight","onResize","matTriggerValue","contactTypes","studentClassFilter","OneEmailPerHousehold","Mi","emailAttachment","OKClick","kn","sendAnywayClick","sendEmailsWarningDialogRef","wo","Ko","dialogContent","jobSentToQueueDialogRef","is","recipients","includeTeachers","includeTeamStaffMembers","Hn","email","Xi","userEmailAddress","emailRef","emailRegexp","sendTestClick","retValSelected","EmailAddress","Ln","exportAddressesClick","Ka","Sa","userPreferences","portals","popUpHeight","popUpWidth","innerWidth","referringPage","massEmailPreferences","Signature","Body","getStudentName","selectedStudentTeam","selectedStudentList","From","EmailFrom","DefaultEmailReplyToAddress","getMassEmailPreferences","getPageInfo","getStudentsByClass","getParentTypes","getStudentsByTeams","getStudentsByLists","showSelectRecipientsModal","selectRecipiantDialogRef","showViewRecipientsModal","gi","autoFocus","CreateCommunicationLog","ShowNickname","StudentMiddleNameFormat","sendEmailsClick","Base64String","sendEmails","generalConfirmationDialog","Bi","attachmentFieldRef","StudentSelection","HouseholdParentsSelection","NonResidentParentsSelection","IncludeAllEvenNotRequestMailing","SendEmailToTeacher","addAdditionalEmails","sendMassEmail","LoginSchoolId","preferencesClick","userPrefDialogRef","pi","massEmailAttachmentDialogRef","sendTestEmail","sendTestEmailDislogRef","Nr","ParentId","ShowAsMenu","clearSearchClick","savePreferences","childMenuClick","childPortalCheckboxClick","observableStaffAssignedPortalsStream$","parentId","menuPortalClick","Disabled","menuClickEvent","portalCheckboxClickEvent","portalMenuPreferences","PortalMenus","GroupIcon","loaderService","isLoading","showParentGroup","favoritesFilter","clonedPortals","searchValue","addChildRecord","addParentRecord","pipes","menuIdentifier","menuByGroupName","arrangeMenus","getStaffMenuPreferences","student360Service","observableParentAssignedPortalsStream$","getStudentMenuPreferences","eFormHeadLinePermission","toggleCloseEvent","staffService","studentSearch","rosterQuery","hasBackdrop","isReportsMenu","getMyReportFolders","ReportFolders","SelectedReport","Reports","reportSnapshots","selectedFolderName","MergedForAttendance","gradebookAccessDeniedDialog","getUserYears","loadYears","onlineRegService","getOnlineRegFamilies","families","isUHD","onlineRegistrationService","isMultipleFamiliesPopupOpened","familyId","FamilyId","parentType","ParentType","portalCheckboxEvent","refreshMenu","staffUserStudentLocked","ParentPortal","checkEformPermission","getStudentSearchSchools","RequiredPrivilegeIDs","getSchoolIdsFromPermissions","studentSearchWithInjectedSchools","redirectUrl","filterCheck","showfavoritesMenu","isMatching","POBoxLastChange","HouseNumberLastChange","DirectionLastChange","StreetNameLastChange","StreetTypeLastChange","ApartmentNumberLastChange","CityLastChange","StateLastChange","ZipCodeLastChange","ZipCode2LastChange","CountryLastChange","POBoxNew","HouseNumberNew","DirectionNew","StreetNameNew","StreetTypeNew","ApartmentNumberNew","CityNew","StateNew","ZipCodeNew","ZipCode2New","CountryNew","PhoneNew","changed","POBox","HouseNumber","Direction","StreetName","StreetType","ApartmentNumber","City","State","ZipCode","ZipCode2","Country","Phone","HomePhone1New","HomePhone2New","LanguageAtHomeNew","POBoxAddressLine1New","POBoxAddressLine2New","POBoxAddressLine3New","POBoxAddressCityNew","POBoxAddressStateNew","POBoxAddressZipNew","setEqual","setAsBasis","HomePhone1","HomePhone2","LanguageAtHome","POBoxAddressLine1","POBoxAddressLine2","POBoxAddressLine3","POBoxAddressCity","POBoxAddressState","POBoxAddressZip","setAsLastChange","HomePhone1LastChange","HomePhone2LastChange","LanguageAtHomeLastChange","POBoxAddressLine1LastChange","POBoxAddressLine2LastChange","POBoxAddressLine3LastChange","POBoxAddressCityLastChange","POBoxAddressStateLastChange","POBoxAddressZipLastChange","reset","RichText","screenWidth","screen","getPageTitle","toFixed","bypassSecurityTrustHtml","currentLanguageTranslations","Translation","sequence","topLevelNode","newSequence","hasChildren","subTableData","hasParent","parent","checkSelectedRow","getNestedLayers","ParentID","ProfileContentId","sortChildren","first","last","getOpenedNodes","openNodes","RowId","originalTitle","originalStatus","profileService","updateProfile","setStatus","titleField","deleted","deleteProfileAttachment","FileID","updateProfileAttachment","MyFileName","MyFile","downloadAttachment","addAttachment","editAttachment","profile","userCanAdd","DocOwnerID","FolderID","AllowParentToView","TableID","DateAttached","getAttachmentFile","originalInformation","ProfileAttachments","Image","pictureName","rowId","TopicId","topicId","DateFromView","DateToView","quillContainer","quillHeight","cleanJunkDates","addProfile","resourceSrc","removePicture","showAttachments","addContent","deleteTopic","inactive","topicColumns","profileColumns","assembleDisplayData","dataChanged","expandCollapseEvent","topics","subLevelNodes","editTopic","profiles","editContent","userCanEdit","moveContentRowUp","displayInactive","moveContentRowDown","moveRowUp","moveRowDown","openInformation","allColumns","isViewing","profileTableWidth","topic","enforceDates","outsideOfDateRange","SSECID","parentViewableAttachments","DelBy","DelOn","getClassInformation","classesWithProfiles","getClassProfile","getClassesWithProfiles","getProfileContent","getAllClassTopics","updateProfileSequences","addTopic","setRelatedTopic","copyClassProfile","teacherProfileClick","courseSSEC_ID","teacherId","showTeacherProfileLink","staffPictureBase64","teacherProfileClickHandler","useCourse","_width","_height","displayBorder","_displayBorder","padding","_padding","quillContentContainer","html","quill","placeholder","formats","getElementsByClassName","modules","pages","PrintStyle","ClassroomPage","RequiredCourse","ShowSchoolDropdown","ShowYearDropdown","DisableYearDropdown","HidePrintButton","isV10","loadUserPermissions","userPermissionGroupIDs","GroupId","some","IsAllPermissionAssigned","every","IsPermissionCategoryAssigned","IsAnyPermissionCodeAssigned","IsAllPermissionCodeAssigned","IsAnyPermissionGroupAssigned","GroupDescriptionId","IsAllPermissionGroupAssigned","getPermissionGroups","selfCheckInOutSubmission","getSelfCheckInOutSubmissionHistory","ngModule","providers","imports","buttonLabel","observableShowAppHeader","observablePageToPdfTrigger","observableProgressBarPercent","observableCurrentMedicalConditionChecked","observableClearStoredCustomFieldData","observableCurrentPortal","observableShowSpinner","observableIsPageLoaded","currentUrl","showAppHeader","_showAppHeader","pageToPdfTrigger","_pageToPdfTrigger","progressBarPercent","_progressBarPercent","currentMedicalConditionChecked","_currentMedicalConditionChecked","_currentPortal","previousPortal","toggleShowSpinner","updateShowSpinner","toggleIsPageLoaded","isPageLoaded","updateIsPageLoaded","getHTMLtoPDFBase64","showSnackbars","snackbarShown","snackbarQueue","snackbar","afterDismissed","queueSnackbar","instant","horizontalPosition","duration","filterTemplate","toggleFilter","getErrorDetails","headers","generateError","saveWebPageAudit","getAboutTylerSIS","createPulseKey","getReEnrollStudentsList","getUserDefinedField","getMealService","getStaffInfoByUserId","getDynamicPagesReadForStudentLookup","getGradebookTermsBySiteSectionId","getAllServices","getMedicalConditionByStudentId","deleteMedicalConditionById","saveMedicalCondition","getMedicalConditionCodes","deleteImmunizationById","deleteDoctorById","saveMedicalPhysicianInformation","saveInsurance","deleteInsurance","getHealthNotes","saveHealthNotes","saveImmunization","getCalendarUseAttendanceTypes","getCustomDataFieldsByObjectID","createImpersonationLog","createSystemLog","simpleCopy","copiedData","copyIdentifier","complexCopy","paste","observableHideSpinner","hideSpinner","_HideSpinner","_ShowSpinner","studentTeam","Ne","restoreDefaultsClick","Yt","rowSelected","startOverClick","showSelectedStaff","showAllSchoolClick","selectClick","Je","Bt","Lt","tt","RoleName","unsavedQueryApplied","todayDate","getPermissionGroup","staffStatus","iseForm","getSearchCriteria","staffSearchCriteria","pageName","Roles","selectedRoleId","selectedStaffIds","setSelectedSchool","getStaff","schoolIds","obtainedRecentStaffQueries","defaultColumns","UseInScheduling","saveSearchCriteria","processStaffFilterResults","staffSelected","staffFiltersClick","selectedSchoolId","teacher","substitute","advisor","counselor","nurse","disciplinarian","administrator","superintendent","principal","other","specialEdTeacher","specialEdServiceProvider","specialEdCaseManager","isBusy","activeToday","employeeNumber","firstName","lastName","selectedPermissionGroupId","userName","showAllSchool","showAllPermissionGroups","StaffStatus","isDataFiltered","checkAdvancedFilter","EmployeeNumber","StaffRole","StateId","permissionGroupService","permissionGroups","Active","columnActive","getColumnHeader","ShowAllSchools","getStaffByStaffIds","programServiceClick","iepClick","alerts","checkAlerts","getStudentDetails","getStudentEnrollment","AlertType","UserHasPermisison","parentPortalService","parentAssignedPortals","isIEP","Program","Service","portalDialog","showPortal","SDMIntegration","studentAlertsClick","showAllAlerts","MaximumAlertIcon","maxAlerts","userHasPermission","processAlerts","displayedAlerts","collapsed","AlertIcon","currentDate","hasIepAlerts","hasMedicalAlerts","hasFamilyAlerts","hasReleaseAlerts","hasProgramsAndServicesAlerts","programsAndServicesAlerts","hasClassroomAlerts","setMaxAlertsForcefully","addEllipsis","showEllipsis","onRightClick","reEnrollStudentClick","yearChanged","selectedLayoutChange","medicalShowAlertSubscriptions","observableMedicalShowAlertStream$","getStudentAlerts","totalStudents","_studentId","loadSelectedStudent","showAlerts","hideAlerts","observableSelectedLayoutStream$","selectedLayoutId","observableSelectedLayoutViewTypeStream$","selectedLayoutTypeName","customLayouts","ViewlayoutTypes","selectedViewTypeId","observableYearStream$","getYears","selectedYear","setPortalYear","useParentPortalYear","allYears","useYear","useYearChange","updateStudent360Year","updateStudentEnrollment","selectedViewTypeChange","showStudent","getStudentPhoto","getStudentEnrollmentYears","enrollmentYears","getStudentReEnrollStatus","getAlerts","studentAlerts","getStudentPicture","showReEnrollButton","getORYears","allowFutureYears","onlinePayment","EnableOnlinePayment","showYearSelector","setSelectedYear","getAllEnrolledYears","onlineRegistration","ORYear","showAYLabel","studentInformationView","courseRequestYear","ShowonPastYear","ShowonCurrentYear","ShowonFutureYear","studentImageClicked","studentImage","ReEnrollYears","frYearsDialogRef","reEnrollStudent","studentViewRouteSubscription","observableStudentInfoRouteStream$","hasProgramAndServicePermission","_hasProgramAndServicePermission","componentFactoryResolver","resolveComponentFactory","studentInformation","viewContainerRef","createComponent","flexDirection","flexGrow","portalClick","staffPortals","portalName","getStaffPortals","mealServiceService","selectionIndex","ActivateProgramAndService360","sortByLastName","sortByFirstName","viewAllStudentInThisSchoolYear","courseId","listId","enrollmentDate","getStudentHomerooms","overrideIncludeAlertPreference","Ye","ye","oi","Un","zn","ca","Ui","initialStudentNumber","initialFirstName","initialLastName","initialGrade","initialEnrollment","initialEnrollDate","initialDOB","initialSchool","initialStatus","EnrollmentSchool","Enrollment","EnrollmentStatus","rbStatus","reload","lastSelectedStudentClick","validateStudentNumberKey","enterStudentNumbers","chooseColumn","selectAllCheckBoxChange","selectCheckBoxChange","onSelectionChanged","createStudentList","showSelectedStudents","Ni","jt","studentGridData","active","regEx","MatTableColumn","compareByDate","searchCriteria","_studentList","currentYear","selectedStudentHistory","recentStudents","allSchoolsValue","schoolsForC360","sortSchools","setPreferences","getStudentSearchPreferences","loadSearchCriteria","loadFilterCriteria","addStudentListPrivilegeId","addStudentList","disableSchoolDropdown","currentSchool","referral","hidNextButton","callFromSpedHome","returnSingle","returnAll","sortOrder","prop","dir","shortingBy","studentSearchService","unsavedStudentFilter","obtainedRecentStudentQueries","defaultMatTableColumns","showStudentAlerts","closeClicked","saveStudentSearchPreferences","saveFilterCriteria","activeFilters","ActivateClassroom360","checkStudentFilter","studentNumberRegExp","studentNumberKeyRestriction","filterCriteria","studentNumberFilter","firstNameFilter","lastNameFilter","gradeFilter","enrollmentFilter","enrollDateFilter","dateOfBirthFilter","schoolFilter","statusFilter","clearFilters","studentLists","getStudents","getStudentsBySearchCriteria","studentSearchCalled","originalStudentSearchData","studentSearchData","EnrollmentId","EnrollmentDateAsDate","DateOfBirthAsDate","IEP","HomeRoom_Class","Homeroom_CourseSection","Homeroom_Teacher","StudentDOENumber","State_ID","searchCriteriaLoaded","updateSearchCriteria","processFilters","columnSettings","setMatHeader","prepopulateStudentSearch","inputBuffer","direction","allStudentsSelected","processStudentFilterResults","selectedSchoolChanged","selectedStatusChanged","studentFilterChange","clearColumnFilters","studentFiltersClick","updateRegEx","addStudentListEvent","displaySelectedStudentsModal","defaultCursorPosition","DefaultCursorPosition","ShowStudentAlerts","PrepopulateStudent","showColumn","getRegEx","regularExpressions","q","_SearchCriteria","resetSearchCriteria","getShowSchool","_showSchool","getEntryDate","_entryDate","getDroppedDate","_droppedDate","DroppedDate","generalPreferencesSubscription","formatName","isComponentInitialized","middleName","nickName","fullName","observableSelectedStudent","observableStudents","observableStudentEnrollment","observableSelectedProgramAndService","observableOnlinePaymentConfiguration","observableStudentDocuments","observablePanelFilter","observableMedicalShowAlert","lastSelectedStudent","getStudentEnrollments","onlinePaymentConfiguration","_onlinePaymentConfiguration","panelFilter","_panelFilter","medicalShowAlert","_medicalShowAlert","_previousSelectedStudent","_selectedStudent","updateRecentStudents","getStudentIsValidForUser","getParentAssignedStudents","_studentEnrollment","clearRecentStudents","EnrollmentYears","updateStudentsNFR","FirstNameNew","MiddleNameNew","LastNameNew","getStudentAttendance","getStudentDailyAttendance","getAcademicHistory","getAcademicHistorySummary","getStudentIdsByStudentNumbers","getStudentSchedule","getStudentPrimaryContacts","getSpecialAttendance","getExcessiveAttendance","getAttendanceDaysAndHoursInfo","getStudentDiscipline","getStudentAddresses","getStudentDocuments","deleteStudentDocuments","previousArrayForAlerts","updateSelectedProgramAndService","getStudentsByIds","getStudentsInformation","getStudentsBasicInformation","isStudentSpecialEd","saveStudentDigitalContent","saveStudentPortfolio","getStudentNamesByStudentIds","getStudentTeamAttendanceAbsentTardiesCount","getStudentTeams","getStudentIdByNumber","getStudentsByFamilyId","getHouseholdParentsByFamilyID","observableCurrentLanguage","_currentLanguage","setTranslationLanguage","getLanguageTranslations","use","getLanguageId","getLanguageCode","getTranslations","getTranslationsWithRichText","getTranslationStatusForLanguages","saveTranslations","dayClicked","nonAttendanceDates","_nonAttendanceDates","_date","eventDates","_eventDates","populateCalendar","calendarDates","month","startOf","day","add","isToday","isCurrentMonth","hasSchool","hasEvents","changeMonth","monthChange","dayClick","moment","_rollupMoment__default","MAT_MOMENT_DATE_ADAPTER_OPTIONS","InjectionToken","providedIn","useUtc","valueFunction","valuesArray","DateAdapter","dateLocale","_options","setLocale","locale","momentLocaleData","localeData","_localeData","firstDayOfWeek","longMonths","months","shortMonths","monthsShort","dates","range","createDate","longDaysOfWeek","weekdays","shortDaysOfWeek","weekdaysShort","narrowDaysOfWeek","weekdaysMin","getYear","clone","getDayOfWeek","getMonthNames","getDateNames","getDayOfWeekNames","getYearName","getFirstDayOfWeek","getNumDaysInMonth","daysInMonth","_createMoment","today","parseFormat","displayFormat","addCalendarYears","addCalendarMonths","addCalendarDays","days","toIso8601","deserialize","isDateInstance","ISO_8601","obj","isMoment","strict","utc","MomentDateAdapter","MAT_DATE_LOCALE","ɵprov","MAT_MOMENT_DATE_FORMATS","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","MomentDateModule","useClass","deps","MatMomentDateModule","MAT_DATE_FORMATS","invalidDate","todayClick","updateOn","showMask","localValue","innerValue","setDate","_dateInput","dateInputChange","setParentValue","valueChange","updated","enterPressed","blur","calendarDateChanged","displayValue","displayDateChanged","currentValue","clearIfInvalid","termDisplay","ShowSchedulingSlots","periodDisplay","dayDisplay","gradebookPreferencesClick","ai","ct","fieldDrop","menuSelected","expandDetailSection","Yi","showStudentNumberCheck","columnDroppedAndSort","editLayoutsClick","resetAllUsersToDefault","changeAllDefaultLayouts","changeGradePreferenceCourse","SyncPreferencesClick","dropAssignmentHeading","validateField","dropAssignmentSort","changeFillBlankScore","switchRCGType","defaultForStandardsViewChange","CustomSortWarningModal","calculationTypeChanged","ya","er","js","ic","Gc","Qr","Ys","rs","uc","Fo","cd","filler","editFavorites","activateClassroom360","useUnifiedLoginPage","UseUnifiedLoginPage","c360ShowCommunicationLog","C360ShowCommunicationLog","classroom360AttendanceCommentsEditable","Classroom360AttendanceCommentsEditable","initialTab","selectedPreferenceTab","getMyClass","getUserPermission","getSchoolYearSettings","getGeneralPreferences","getDataQueryPreferences","getAttendancePreferences","getClassroomSummaryPreferences","getCommunicationLogPreferences","getMasterSchedulePreferences","getPeriodStatisticsPreferences","getScheduleStudentListPreferences","getClassesByCoursePreferences","getClassRosterPreferences","getRoomSchedulingSettingsPreferences","scrollToElement","gradebookPreferencesDiv","columnsInScoreGridRow","scrollTop","setGradebookStudentNumberColumn","AvailableColumns","staffAssignedPortalNames","viewAllStaffCommunicationLogs","allowDisciplineQuickEntry","disciplineQuickEntryUserSelectLayout","disciplineQuickEntryUserCreateLayout","disciplineQuickEntrySetDefaultSchoolLayout","disciplineQuickEntrySetDefaultDistrictLayout","getLayoutType","userPreferenceService","AdditionalTeacher","additionalCourses","getGradebookPreferences","setEmailAddress","sendingEmailAddress","getUserSchoolYear","DefaultYearIdentifier","getCurrentYearSchools","getCurrentYearSchoolsV9","currentYearSchools","userSchoolYearPolicies","schoolYearSettings","PageSize","attendancePreferences","ShowAlert","DisplayStudentAlertsOnAttendance","getBehaviorPreferences","behaviorPreferences","defaultUserLayoutId","Layout_ID","classroomSummaryPreferences","communicationLogPreferences","getFavoritesPreferences","selectedGradebookClass","SyncPreferencesAcrossCourses","ShowInactiveStudents","ShowDroppedWithdrawn","DisableAutoSave","AutoSave","AllowQuickAddAssignments","UseQuickAddWindow","DefaultParentPublish","DefaultShowOnPortal","singleAdditional","multipleAdditional","additionalTeacher","additionalTeacherClassFocus","IsAllowTeacherToSetFinalGradeCalculation","SemesterFinalGradeCalculationPoints","SemesterFinalGradeCalculationCombo","SemesterFinalGradeCalculation","IsAllowTeacherToSelectAssignmentRoundingInGB","IsAllowTeacherToSelectGPRoundingInGB","IsGPCWRoundDown","GPCWRound","IsGPCWRoundUp","IsAllowTeacherToSelectSemRoundingInGB","IsSemFinalRoundDown","SemFinalRound","IsSemFinalRoundUp","SemFinalRoundToValue","getWarnIfCalculationPreferencesChanged","warnIfCalculationPreferencesChanged","SiteSubjectListId","AutoSaveDuration","setDefaultForStandardsView","gradebookStudentSortOrderOptions","ResetPreferences","getGradebookPreferencesResetWarningWindow","gradebookSpecialMarks","Locked","IsEdited","OperationDescription","IsUsedInCurrentYear","masterSchedulePreferences","periodStatisticsPreferences","scheduleStudentListPreferences","classesByCoursePreferences","classRosterPreferences","roomSchedulingSettingsPreferences","FillBlankScores","FillBlankScoreValue","scoreValue","FillBlankScoreSpecialMarkId","ShowProgressCycles","ShowTerms","ShowSemesters","ShowYearEnd","ShowAllTerms","appFavorites","SummaryCharacterSlideCount","saveBehaviorDefaultLayouts","saveUserDefaultLayout","saveRequests","updateGradebookPReferences","openLayoutEditor","getBehaviorLayout","defaultSchoolLayouts","School_Domain","LayoutType_Id","Layout_Id","allLayoutsId","checkShowPortal","checkForChildPortals","rowDetailExpand","staffAssignedPortalsCopy","LOGIN","STUDENTS","COMMENTS","REPORTCARDGRADES","STANDARDS","ROUNDING","userGBPreferencesPermission","PrimaryTeacherWarningModal","NoGradingClassesModal","AdditionalTeacherWarningModal","AssignmentHeadingCheck","C360GradebookAssignmentsLongSummary","$","isNumeric","setCalculationValues","CalculationPreferencesWarningModal","ProjectFutureScores","projectScoresDialog","gradebookV10Service","adminPermissions","syncPrefDialogRef","syncPreferencesAcrossCourses","noGradingClassesDialogRef","customSortWarningDialogRef","additionalTeacherWarningDialogRef","primaryTeacherWarningDialogRef","calculationPreferenceWarningDialogRef","ColumnsToShow","attendanceRestrict","attendanceRestrictNumber","AssignmentSort","LinkOrder","getStaticAttendanceColumnColor","showSchedulingTab","fc","Jc","Fc","ul","Ds","dc","observablegeneralPreferences","observableAttendancePreferences","observableClassroomSummaryPreferences","observableCommunicationLogPreferences","observableDataQueryPreferences","observableMassEmailPreferences","observableFavoritesPreferences","observableBehaviorPreferences","observableStudentPortalMenuPreferences","observableStaffPortalMenuPreferences","observableMasterSchedulePreferences","observableClassRosterPreferences","observablePeriodStatisticsPreferences","observableScheduleStudentListPreferences","observableClassesByCoursePreferences","observableRoomSchedulingSettingsPreferences","_generalPreferences","_attendancePreferences","_classroomSummaryPreferences","_communicationLogPreferences","_dataQueryPreferences","_massEmailPreferences","_gradebookPreferences","_favoritesPreferences","_behaviorPreferences","studentPortalMenuPreferences","_studentPortalMenuPreferences","staffPortalMenuPreferences","_staffPortalMenuPreferences","_masterSchedulePreferences","_classRosterPreferences","_periodStatisticsPreferences","_scheduleStudentListPreferences","_classesByCoursePreferences","_roomSchedulingSettingsPreferences","saveAttendancePreferences","observableCurrentUser","observableStudentInfoRoute","languageId","_currentUser","cards","_cards","logoutUser","username","password","firstname","lastname","getUserLanguage","getAllUserSchoolYearPolicies","getUserRoles","emailAlreadyExists","setUserLanguage","changeUserPassword","getDefaultYear","deleteLink","updateLinkSequence","userLinks","getImpersonateByUser","setNotificationPreferencesMenu","markWelcomeAsSeen","updateStudentViewRoute","getUserPermissionBySchoolIds","isGALDSRoleAssigned","isAZEdsRoleAssigned","processADEConnect","getUserIsTeacher","getUserIsNurse","getSchoolYearByFacultyStaffId","allowValidation","emailFormat","falseyRequired","falseyRequried","absentNotices","identifier","level","showingChildren","lastChild","parentSelected","parentShowChildren","rowKeydown","_data","_viewContainerRef","destroyed","context","_renderedRange","count","_updateComputedContextProperties","assembleData","flatData","filterShown","trackByID","observableDefaultYear","observableStudent360Year","observableYears","observableSchools","observableSetSchoolDisabled","observableSetYearDisabled","_previousYear","_defaultYear","_student360Year","_years","_yearsForC360","_schools","_schoolsForC360","updateSelectedYear","getSchoolsForSelectedYear","CourseRequestYear","defaultCourseRequestYear","getDefaultCourseRequestYear","updateSelectedSchool","isCurrentYear","isBetween","getCurrentYear","setCurrentAttendanceDate","getSchoolsFromYears","loadYearsForC360","CurrentAttendanceDate","getUserSchools","userSchools","getAllSchoolYearsInDistrict","getDistrictYearsOnly","getDistrictYearbyIdentifier","getAllSchools","getSchoolsStudentIds","isDateWithinGivenYear","stripHTML","districtMessages","showAttachment","classAnnouncements","showDistrictMessages","inputDate","inputString","student360","getAnnouncements","noAnnouncements","observableIsPageLoadedStream$","schoolNames","schoolExpanded","gotAnnouncements","announcementService","getStudentAnnouncements","announcements","studentEnrollments","virtualize","getStaffAnnouncements","filterAnnouncements","showTableFlags","PrimaryEnrollment","AnnouncementType","studentInfoView","getRevisedDate","RevisedDate","broadcast","checkBroadcast","checkingBroadcast","ActivateBroadcast","BroadcastInterval","displayTime","valueChangeHandler","telephoneValueChanged","dateValueChanged","_fieldName","getFieldMetadata","_label","controlTypeID","_controlTypeID","ControlTypeID","RadioButtons","readOnly","_readOnly","customDataFields","setReadWriteAccess","_required","_value","transformDataType","DataTypeID","setTelephoneDisplayValue","persistDataInMemory","IsDataDef","Options","persistValue","_masterId","customFieldData","CustomFieldID","MasterId","allowControlToHandleOwnData","_allowControlToHandleOwnData","DateTime","timeControl","observablesSaveCustomFieldsTrigger","observableCustomDataFieldValueChangedStream$","pageIndex","PageIndex","ParentFieldID","LookupENUM","getLookups","observablePermissionStream$","checkFieldPermissions","observableobservableFieldMetaDataRetrievedStream$","metaDataRetrieved","setUpControl","userCanView","getDataDefinition","parentFieldValue","userCanViewField","userCanEditField","getCustomFieldDataObject","customDataFieldValueChanged","telephoneDisplayValue","retrieveValueFromDB","getCustomDataFieldValue","validateCustomField","updateCustomDataFieldValue","localDateValue","concatDateAndTime","localTimeValue","setLocalDateTime","observablesBasePageOnly","observableCustomDataFieldValueChanged","observableFieldMetaDataRetrieved","observableFieldValuesRetrieved","observableClearStoredCustomFieldDataStream$","clearStoredCustomFieldData","triggerAllCustomDataFieldSave","updateBasePageOnly","basePageOnly","getCustomDataFields","getCustomDataFieldByID","getCustomDataFieldByFieldName","getCustomFieldDataTypes","getCustomFieldControlTypes","getCSTModules","getCSTObjects","getDataDefinitionList","getDataDefinitionListsWithCodes","getDataDefinitionListByEnum","dataDefinitionLists","Enum","dataDefSubjects","importCustomFieldsFromClassic","checkClassicFieldsForDuplicateNames","getCustomPagesByModuleObject","massGetCustomDataFieldByFieldName","massUpdateCustomDataFieldValue","StartRange","EndRange","DecimalPrecision","validateAllCustomFieldsInMemory","clearStoredCustomFieldDataByObject","updateMasterIDForPersistedData","IsSecured","ViewPermissionGroupIDs","IsProcedureBased","WriteSPName","ModifyPermissionGroupIDS","getCustomPageSystemTemplateByID","reconcileChangesToCustomPage","IsSysGen","LocalVersion","SystemVersion","compareSystemPageToLocalPage","reconcileChangesToDesignPage","Version","BaseVersion","CustomFieldName","modalInstanceCloseClick","modalInstanceNextClick","enableSelfRegistrationCode","EnableSelfRegistrationCode","registerNewFamily","emailAddress","showPopupOnly","displayAsPopupOnly","getRegisterParentInfo","verifyCode","invalidCombination","codeExpire","redirectQR","cancelButtonLabel","sendRegisterParentEmail","Language","setDefaultLang","AyIdentifier","YearId","inputCode","saveRegisterParent","registerParent","parentAlreadyExists","getFamilyRegistrationAddressSettings","saveRegisterParentAddress","getFamilyRegistrationStudents","studentAlreadyExists","saveFamilyRegistrationStudents","CheckExistingEmail","studentSelect","EnrollmentGradeLevel","angularMatDataStudents","modalInstanceCancelClick","modalInstanceContinueClick","validateStudents","modalInstanceOKClick","passwordsMustMatch","Student360StaffPasswordCaseSensitive","PasswordCaseSensitive","PasswordRequiresUpper","mustContainUpperCase","notValidEmail","PasswordRequiresNumeric","mustContainNumeric","PasswordRequiresSpecial","mustContainSpecial","Password","mustBeDifferent","PreventEqualPassUserName","notSameAsUsername","PasswordRequiresMixedLettersAndNumbers","requiresMixedLettersNumbers","ExpiredPasswords","PreventPasswordReuse","preventPasswordReuse","observableLogin","observableLoginError","getDistrictSettings","saveDistrictSettings","logon","logonGoogle","getUser","getForgetPasswordDetail","getRegisterParent","getUserDefaultSchoolYearIsBlocked","saveUserLoginInfo","getClientInformation","sendForgetUserNameEmail","saveForgetPassword","sendForgetPasswordEmail","saveTylerAccessHistory","Parameters","TabName","IncludeLineAtEndOfGroup","IncludeLineAtStartOfGroup","parameterChanged","parameterSelectionChange","selectAllGridRecordsChange","selectedReport","reportParameters","setParameterRows","getParameterStyle","ParameterStyle","chunkedParameters","RowNumberInTable","IsLetterParameter","ParentValue","DataSource","ValueField","changingThisBreaksApplicationSecurity","validationFields","getV9ReportParameterValidation","validateRequiredFields","IsVisible","saveRCMessages","parameterDropdownlistSelectChange","parameterLinkClick","gridDataMatDatasource","Report","selectedSiteSectionId","selectedSectionId","selectedStudentIds","studentSelection","blnReportCardsGrade","getV9StudentNameFormat","getV9ReportParameters","blnSaveReportCardMessage","reportForSaveRCM","getV9ReportParameterStudentNameFormat","studentNameFormat","studentMiddleNameFormat","runReportClick","ColumnName","WorkflowReport","gridDataSource","selectedStaffNumbers","TextField","studentName","selectedStudentIdsArray","studentListSelectorDialog","printReportWithValidation","ReportName","alert","selectAllGridRecords","printReport","GridDataSources","ColumnToDisplay","MinimumStudentsForWorkflow","ReportTitle","ReportParameterClassName","ReportsList","ReportValue","SiteSectionId","runV9ReportByParameter","LookupProcedureName","getV9ReportParameterSelectionByLookupName","GridDataSource","blnIsParameterLink","imageIconName","staffpickerControlType","_compare","saveReportCardMessage","checkChar","selectedStaffNames","getV9ReportParameterBtnRefreshData","messageLine1","messageLine2","removeArchivedFiles","exitClick","reportName","_reportName","viewArchiveProcessesFromAllUsers","allowCancelArchiveProcesses","allowDeleteArchivedReports","getDateWithoutTime","getReportBatches","setAddedOnDate_Display","ReportBatches","filteredBatches","getAddedBys","getMinDate","selectedProcess","processes","ProcessingDescription","AddedByName","addedBys","addedBy","AddedOnDate_Display","fromDateChanged","getFilteredItems","processChanged","isThisDateEqualToOrAfterThatDate","itemExistsInArray","confirmCancelArchiveDialogRef","confirmCancelArchiveDialog","cancelBatch","InProcess","cancellingReportBatch","RemoveArchivedFiles","startCancelReportBatchCleanupProcess","getAddedOn","getStatusFontColor","refreshClick","thisDialogRef","saveChecked","hideChecked","selectedReportToConsole","defintionsToConsole","isDirty","inDebugMode","userHasDistrictPermissions","userHasPrivilegeAddEditDistrictReportDefinitions","isDistrictDefinitions","isFromMenu","getDefaultReportParametersForUser","getReportDefinitions","getReportParameters","ParameterReportDefinition","IsDistrictReportDefinitions","getUnsavedChanges","saveReportOptions","saveAllChanged","reportDefinitions","isDisabled","SaveChecked","hideAllChanged","HideChecked","HasParameterValueDefined","IsDistrictDefinedParameter","CanSave","IsHidden","IsUserDefinedParameter","Login_ID","login_ID","setBackgroundColorForSavedDefinition","saveReportOptionsClick","IsSystem","AllowUserSaveParameter","AllowUserHideParameter","HasReportDefinition","isSaveDisabled","IsDistrictReportDefinitionsChanged","BackgroundColorForSavedDefinition","backgroundColorForDistrictDefinedDefinition","backgroundColorForUserDefinedDefinition","reportLegendDialogRef","reportLegendDialog","howToDialogRef","howToDialog","AddTermAll","LongDescription","Terms","isDistributebyEmail","selectedRecipients","distributeByEmailOption_StudentSelected","distributeByEmailOption_PrimaryContactSelected","distributeByEmailOption_AllElectronicContactsSelected","archiveToStudentDigitalContentChecked","archiveToStudentPortfolioChecked","archiveToTCMChecked","Le","MailServer","emailFrom","emailSubject","isForSchedule","allowArchiveToStudentDigitalContent","AllowStudentDigitalContent","allowArchiveToStudentPortfolio","AllowStudentPortfolio","allowArchiveToTCM","AllowTCMArchiving","studentDigitalContent","newFile","fileNameString","descriptionString","batchDescription","populate_TCM_DocumentTypes","studentPortfolio","portfolioService","getPortfolioCategories","portfolioCategories","OnDestroy","DocumentArchivePermissions","PrivilegeType","tcmDocumentTypes","checkInputs","confirmArchiveReportDialogRef","confirmArchiveReportDialog","prepareArchiveReportAsync","archiveToStudentDigitalContent","documentTypeIdString","StudentDigitalContent","ArchiveToStudentDigitalContent","archiveToStudentPortfolio","fileCategoryId","FilePath","StudentPortfolio","ArchiveToStudentPortfolio","archiveToTCM","TCM_DocumentType","selectedTCMdocument","ArchiveToTCM","IsArchiveReport","archiveReportAsync","Operations","getCurrentUserName_FNLN","AddedByLogin_Id","getCurrentUserId","BatchDescription","sendEmailNotification","DistributeByEmailOption","sendEmailStudent","sendEmailPrimaryContact","sendEmailAllElectronicContacts","EmailSubject","EmailBody","emailBody","addReportBatch","reportBatch","startReportBatch","openArchiveProcess","archiveProcessDialogRef","archiveProcessDialog","populateEmailBody","documentTypeInput","fileCategoryInput","documentTypeTCMInput","validateEmailFields","emailSubjectRef","emailFromRef","getEmailRegexp","sendToEmailChecked","studentSearchClick","ddbcblChanged","showHiddenParametersChecked","isDebugModeInProductionChecked","getQueryString","SelectedReportToConsole","reportOptionsClick","archiveReportClick","distributeByEmailClick","runReport","AutoRunComponent","cancelSendToEmailClick","cancelShowReportParameters","isTylerAdmin","utilizeDistributebyEmail","UtilizeDistributebyEmail","isDebugModeInProduction","showReportToConsole","allowAutoRunReport","AllowAutoRunReport","showReportToPDF","showCancelSendToEmail","showCancelShowReportOptions","showHiddenParameters","hiddenParametersLabel","userEmail","useReportDefinitions","AutoRunReport","ReportFolder","isInFolder","utilizeTranscriptTracking","UtilizeTranscriptTracking","IsDistributeByEmail","HasDistributeByEmailParameter","HasUniqueStudentParameter","showDistributebyEmail","EmailsToSendReport","initParameters","setBackgroundColorForSavedDefinitions","isAllReports","isMyReports","maxTableCellsPerRow","maxNumberOfColumns","ParamColWidth","SetBackgroundColorForSavedDefinition","getBackgroundColorForSavedDefinition","ChunkedParameters","chunkParameters","handleDistributeByEmailOption","IsSystemHiddenParameter","Group_ID","getGroup","getParameterRows","IsStartOfVisibleGroup","IncludeGroupLabel","GroupLabel","getParameterRowParameters","handleParameterGroups","HasParameterInGroup","AlreadyCheckedForGroupStart","IsInGroup","AlreadyCheckedForGroupEnd","IsEndOfVisibleGroup","ParameterHasBeenAddedToRow","MaxNumberOfParameters","SpanEntireRow","setParameterHasBeenAddedToRow","confirmReportToEmailDialogRef","confirmReportToEmailDialog","executeDistributeByEmailAsync","archiveReportModalDialogRef","archiveReportModalDialog","reportOptionsDialogRef","reportOptionsDialog","ReportDefinitions","radioButtonChange","datePickerChanged","validateFields","SendToEmail","emailsToSendReport","runReportToEmail","executeRunReportToEmailAsync","distributeByEmail","cancelShowReportOptionsClick","ShowReportOptions","getColumnWidth","getFlexDirection","ShowOptionsVertically","getArrangeDirection","getWrap","NoWrap","ddlChange","MultiValue","handleAllChecked","IsParent","RC_ID","textChanged","ReportFormat","rblChanged","cblChanged","StudentSearchDialogRef","studentSearchDialog","selectedStudentSearch","studentListString","getReportQueueQuery","debugMessage","saveReportFolderClick","saveEditClick","isFolderEdit","ReportFolderToEdit","folderName","folderDescription","saveReportFolder","checkIsDirty","reportFolderIdToDelete","reportFolderName","reportFolderNameToDelete","_reportFolderName","_reportFolderIdToDelete","deleteReportFolder","folderEditClick","folderDeleteClick","reportFolders","reportFoldersOnLoad","loadReportData","deleteReportFolderDialogRef","deleteReportFolderDialog","addReportFolderDialogRef","addReportFolderDialog","addFolderClick","saveFolderReports","legendItem_1","legendItem_2","_startDate","_endDate","setAllCheckbox","deleteReportQueue","reportList","formChanged","saveFilter","path","reportQueqe","selectedSchool","GroupPermissionName","ShowAllUsers","ShowCompleted","Running","Completed","ErrorStatus","getReportsQueue","reportsQueue","checkedAll","checkIndeterminate","selectedReportQueue","applyFilters","getCheckedIds","closeAll","datePipe","RunDate","deleteReportsQueue","deleteSelected","refreshPage","isPanelPreviousFiltered","ReportStatus","SISCode","isSameOrAfter","isSameOrBefore","gridWidth","initialFilter","isPanelFiltered","printable","documentTitle","css","ignoreElements","targetStyles","yearChange","schoolChange","setFrequency","maxReportSnapshotAllowed","AutoRunTime","convertTime24to12","AutoRunFrequency","AutoRunDate","initFolder","ReportInFolder","foldersChkAll","noFolderSelected","setSelectedFolders","convertTime12to24","hoursNum","autorunForm","AutoRunDay","AutoRunHour_0","AutoRunMinute_0","AutoRunPeriod_0","autoRunTime","AutoRunHour_1","AutoRunMinute_1","AutoRunPeriod_1","AutoRunHour_2","AutoRunMinute_2","AutoRunPeriod_2","saveReportAutoRunSettings","autoRunReportClick","checkAllFolders","chkFolder","autoRunTime24","snapshotToDelete","autoRunSnapshot","autoRunDate","TimeStamp","_autoRunDate","AutoRunReportSnapshots_ID","deleteReportSnapshot","snapshotDeleted","FolderName","getReportSnapshot","snapshotDeleteClick","IsReportSearch","selectedFolderId","selectedReportFolderId","allReports","Snapshots","SelectedSnapshotFolder","getReportForAllFolder","allSnapshots","getsortedDistinctReports","sortedReports","compare","isSnapshotVisible","snapshotCheckAllClick","snapshotCheckAll","snapshotCheckClick","selectedFolderChanged","confirmDeleteSnapshot","deleteSnapshotDialogRef","deleteSnapshotDialog","deleteSnapshotAfterClosed","Me","ie","gn","li","selectedFolderIds","Fi","MaximumSnapshots","openAutorunDefaultParametersDialog","reportParametersDialogRef","reportParametersDialog","AutoRun","reportAutoRunMessageDialogRef","reportAutoRunMessageDialog","onLoad_FolderIds","current_FolderIds","selectClass","La","Or","report","getTermsforCourses","getTerms","reportParameter","radValue","pub_blnPrintNoField","pub_blnPrintStudentId","SkipLineBetweenStudent","pub_blnSkipLinesBetweenStudent","PrintWithGreyHeading","pub_blnPrintWithGreyHeadings","PrintStudentAbsencesAlreadyEntered","pub_blnPrintStudentAbsencesAlreadyEntered","PrintTeacherSignatureLine","pub_blnPrintTeacherSignatureLine","OtherFields","pub_strOtherField","OtherField","TermTypeId","isValueChange","isReportList","PrintDate","FromPeriod","MinumumPeriodPerDay","ToPeriod","MaximumPeriodsPerDay","getDay","Week1Date","subtract","Week2Date","setReportTitle","TermId","changeValue","fromPeriod","toPeriod","ReportGridData","getTeacherPreviewGridData","isDataExist","selectAllReportGridData","Select","runClick","week1Date","week2Date","runV9Report","reportQueueList","pub_blnPrintOtherField","Is","teacherUserId","changeTerm","MediumDescription","PrintComment","PrintAdds","SiteSectionIds","prevClick","Ja","userPreferencePageName","reportType","getResidencyCodesLookup","ResidencyCodes","getEnrollmentCategoriesLookup","CategoryCodes","getAllGradeLevelsLookup","getAttendanceCodesLookup","populateDataSourceFromLookup","historyCodesToTally","tallyTardiesCodes","daysCodes","todaysCodesToTally","SelectHistoryDates","pub_blnSelectHistoryDates","pub_datHistoryFrom","HistoryFrom","getMonthDayYear","pub_datHistoryTo","HistoryTo","SelectResidencyCodes","pub_blnSelectResidencyCodes","ResidencyCodeFrom","pub_strResidencyCodeFrom","ResidencyCodeTo","pub_strResidencyCodeTo","SelectCategoryCodes","pub_blnSelectCategoryCodes","CategoryCodeFrom","pub_strCategoryCodeFrom","CategoryCodeTo","pub_strCategoryCodeTo","SelectGradeLevels","pub_blnSelectGradeLevels","GradeLevelRankFrom","pub_strGradeLevelRankFrom","GradeLevelRankTo","pub_strGradeLevelRankTo","setGradeLevelFrom","setGradeLevelTo","setSelectedItemsFromUserPrefereneces","pub_strHistoryCodesToTally","HistoryMinMax","pub_blnSelectHistoryCountMinMax","HistoryCountMin","pub_intHistoryCountMin","HistoryCountMax","pub_intHistoryCountMax","TallyTardies","pub_blnTallyTardies","tallyTardiesCodesIds","pub_strTallyTardiesCodesIds","pub_blnIncludeAllAbsences","IncludeAllAbsences","pub_blnOnlyPeriodsforEachSection","OnlyPeriodsforEachSection","Count1Day","pub_blnCount1PerDay","SplitABDays","pub_blnSplitABDays","historyCodesToTallyIds","pub_strHistoryCodesToTallyIds","pub_strTallyTardiesCodes","pub_blnDaysFullHalfSelect","DaysFullHalf","pub_strDayFullHalfCode","FullDay","pub_blnFullDay","HalfDay","pub_blnHalfDay","dayFullHalfCode","DaysCountMin","pub_intDaysCountMin","DaysCountMax","pub_intDaysCountMax","pub_blnTodaysCurrentTally","TodaysCurrentTally","pub_strTodaysCodesToTally","todaysCodesToTallyIds","pub_strTodaysCodesToTallyIds","CurrentMinMax","pub_blnCurrentMinMax","CurrentCodesTallyCountMin","pub_intCurrentCodesTallyCountMin","CurrentCodesTallyCountMax","pub_intCurrentCodesTallyCountMax","DoubleSpaceAfterStudentName","pub_blnDoubleSpaceAfterStudentName","ShowHistoryRecords","pub_blnShowHistoryRecords","ShowOnlySelectedRecords","pub_blnShowOnlySelectedRecords","ShowComments","pub_blnShowComments","pub_blnIgnoreAttendance","IgnoreAttendance","pub_strReportTitle","pub_intReportType","pub_blnParentInfo","pub_strStudentSelectionStatus","getSelectedItemsAsDelimitedString","pub_strHistoryPeriodsToTally","hasStringValueNotEmpty","pub_blnShowCurrentAtndSteps","pub_blnNotEnrolled","pub_blnConsecutiveDays","workflowReport","reportTitle","historyFrom","historyTo","residencyCodeFrom","residencyCodeTo","categoryCodeFrom","categoryCodeTo","GradeLevelFrom","gradeLevelFrom","GradeLevelTo","gradeLevelTo","historyCountMin","historyCountMax","minIsGreaterThanMax","fullDay","daysCountMin","daysCountMax","currentCodesTallyCountMin","currentCodesTallyCountMax","setReportParameters","siteSectionIds","getSelectedIdsAsCommaDelimitedString","addToReportQueue","openStudentAttachment","setGradeLevelRankFrom","setGradeLevelRankTo","openReportQueueList","openStudentAttachmentReport","handleCheckboxAll","showRun","termChanged","selectDepartment","selectTeacher","reportTitleInSystem","showDepartment","selectedTeacher","populateParameters","getFilteredCourses","filteredCourses","Ha","allCourses","selectedFacultyStaffId","TeacherId","getDepartments","getDistrictDepartmentsReadForGradebookAssignmentsLookup","departments","selectedDepartment","getUniqueCourses","courses","teachers","addCoreParameters","addCoreParametersV9","v9parameterName","strReportDate","strReportSiteHeader","strReportTitle","strSiteYearCode","lngSiteYearId","strOutputFile_NOFILE","strReportTime","reportSnapshotsClick","reportClicked","reportSettingsClick","autorunSettingsClick","reportSettingsV9Click","ba","Tc","hd","sl","kl","Pd","Gd","nd","showNoFoldersMessage","_showNoFoldersMessage","getMyV9Reports","expandAllFoldersClick","expandAllFolders","expandAllRows","getV9Reports","ReportModules","IsDetailRowExpanded","expandCollapseFolder","openReportParametersWindow","reportSettingsDialogRef","reportSettingsDialog","AllowAutoRun","AutoRunSchedule_ID","reportSnapshotsDialogRef","reportSnapshotsDialog","manualEntryRostersDialogRef","manualEntryRostersDialog","ClassListAllDialogRef","classListAllDialog","ClassListAllAttendanceNotMarkedDialogRef","classListAllAttendanceNotMarkedDialog","TeacherSummaryPreviewDialogRef","TeacherSummaryPreviewDialog","attendanceHistoryByClassDialogRef","attendanceHistoryByClassDialog","gradebookAssignmentsByStandardDialogRef","gradebookAssignmentsByStandardDialog","wi","Js","getReportModulesByRole","getAllReports","ri","selectedReportModule","myReportFolders","selectFolder","getReports","filterReports","reportSearch","setSearchMessageVisible","showSearchMessage","searchReport","clearSearchReport","Nn","zt","setTestArea","setTestSubArea","Xr","parameter","St","parameterName","parameterValue","ParameterValue","testAreas","testSubAreas","testOrder","stepOrder","parentTest_ID","tests","Test_ID","allAreas","distinctAreas","AreaName","action","copyTest","copyTestId","selectedArea","TestAreaName","testSubArea","TestSubAreaName","testArea","editTest","distinctTestAreas","U","InProgress","ReadyForReview","Approved","IsObsolete","SelectedStatus","CopyTestId","addTest","TestOrder","addSubTest","insertStep","insertStepType","addParameter","editParameter","IsSubTestOnly","toggleStepType","Parameter","saveAutomatedTestParameter","SubAreaName","TestArea_ID","Area_ID","saveAutomatedTest","IsInsertedStep","testAreaChanged","testsInArea","testSubAreaChanged","testChanged","copyTestClick","testStatusChange","da","continueWithoutSavingClick","Fs","PageTitle","Br","_l","Test","viewDependentTests","showTestSteps","getSubTestDependentTests","dependentTests","getAutomatedTestQuickView","testSteps","getAutomatedTestParameters","Ol","setElementSubArea","setElementControl","dl","Element_ID","ElementArea_ID","ElementName","ElementAreaName","ElementSubAreaName","ElementSubAreas","ControlName","XPath","Action","elementArea","elementSubArea","elementName","elementXPath","elementControlName","elementId","getTestAreas","getControlTypes","createNewElement","updateElement","setElementArea","setElementName","setElementXPath","xpath","getAutomatedTestAreas","getElements","getAutomatedTestElements","allElements","getSubAreas","elemSubAreas","newElement","saveAutomatedTestElement","updateAutomatedTestElement","allControlNames","Sl","bo","Zc","Ql","getAllElements","setElementAreaForUpdate","setElementNameForUpdate","setElementXPathForUpdate","setElementId","showElementAdd","elementAddEditDialogRef","_elementAddEditDialog","showElementEdit","actionMenuClick","Dl","setAreaName","gc","areaId","subAreaName","createNewArea","updateArea","setModuleName","newModuleName","module","setPortalName","newPortalName","portal","setAreaId","newArea","saveAutomatedTestArea","showUpdateAreaWindow","updateAutomatedTestArea","Yu","showPortalAddWindow","showPageTabAddWindow","vc","getAllModulesAndPortals","getAllPagesAndTabs","setSubAreaName","areaAddEditDialogRef","_areaAddEditDialog","showUpdatePortalWindow","showUpdatePageTabViewWindow","Hl","showQuickView","editTestClick","viewTestStepsClick","deleteTest","editParameterClick","deleteParameter","getActions","actionClicked","deleteStep","showTestsClick","showParameterGrid","addStep","saveTestStepsClick","Td","Ve","modalDialogRef","confirmDialogRef","elementListDialogRef","getAutomatedTests","checkIsSubTestOnly","allIsSubTestOnlyChecked","checkAllIsSubTestOnly","allEventChecked","openModalPopup","testSaved","showTests","getAutomatedTestSteps","quickViewDialogRef","quickViewDialog","TestName","trackByFn","modalDialog","setTestStatus","Oe","InnerTest_ID","StepOrder","insertStepNumber","so","ActionName","Element","Elements","getBackgroundColor","sortChange","_confirmDialog","resetPageForShowingTests","getElementAreas","showParameters","elementAreas","elementSubAreas","elements","elementAreaChanged","getElementByElement_ID","getDataInputs","Step_ID","deleteAutomatedTestStep","saveTest","setIsSubTestOnly","setApproved","saveAutomatedTestSteps","deleteAutomatedTest","Vs","getBackgroundColorForTest","deleteAutomatedTestParameter","SelectedStatusDescription","showElementList","_elementListDialog","showModulePortalList","areaListDialogRef","_areaListDialog","showPageTabList","ed","openQueueList","showMyReportsComponent","addMyReportsEntryClick","openAutomatedTestingSetup","openReportFoldersWindow","showAllReportsComponent","td","reportingConfigurationSettings","getReportingConfigurationSettings","hideReportToArchiveButton","HideReportToArchiveButton","showAutomatedTestsButton","automatedTestingSetupDialogRef","automatedTestingSetupDialog","fo","ReportFoldersDialogRef","eo","refreshedReportFolders","vo","reportModeIsAllReports","reportModeIsMyReports","showReportFoldersDialog","Yo","Bs","userCanAutoRunReports","_userCanAutoRunReports","MaxReportSnapshotAllowed","defaultAcademicYear","allowArchiveReportPDF","AllowArchiveReportPDF","myReportsComponent","reportFoldersRefreshed","um","getMultiValue_Labels","getMultiValue_StringValues","getMultiValue_BoolValues","getMultiValue_Ids","skipRunningReportWhileInDebugMode","useParameterGroups","useParameterFormatting","currentUserSubscription","observableCurrentUserStream$","ReportDefinitionsOption","getReportByIsSysGen","UseParameterGroups","UseParameterFormatting","ReportingSectionName","dateFormat","exec","getGradebookAssignmentTypesLookup","getGradebookAssignmentType","getGradebookAssignments","strReportSiteAddress","bytReportType","strStaffUserName_LNFN","toTimeString","intSiteYearId","getTodaysDate","GetGradeBookSectionListReadbyTeacherId","GetGradeBookAssignmentTypeBySiteSectionIdsLookup","getGradeCyclesReadBySiteYearIdLookup","getTermGradeCycleHeaderRead","getReportCardAttendanceCodesReadBySiteYearIdLookup","updateGradingOptionsTemplate","ReportBatch","deleteReportBatch","getCurrentUserName_LNFN","noSubject","noContent","sendAnyway","setFileSize","originalAttachments","determineMaxFileSize","printAttachments","maxAttachmentSize","totalAttachmentSize","IsFileUpload","allAdvisors","_allAdvisors","getRecipients","allPrincipals","_allPrincipals","allCounselors","_allCounselors","allSiteAdministrators","_allSiteAdministrators","allDistrictAdministrators","_allDistrictAdministrators","viewOption","_viewOption","allCoTeachers","_allCoTeachers","allNurses","_allNurses","toSelections","originalToSelections","CCSelections","originalCCSelections","BCCSelections","originalBCCSelections","allSiteAdmin","allDistrictAdmin","observableRecipientsStream$","peopleIds","personCodeMother","personCodeFather","toSelectedMailId","CCSelectedMailId","CCDisplayMailId","BCCSelectedMailId","BCCDisplayMailId","toSelected","toMailId","CCMailId","BCCMailId","deselectAll","disableCCTo","CCDisabledEmailId","getRecipientSubscription","getStudentRecipients","TeacherName","checkDefaultMails","canSendTo","canCCTo","validateSelections","getScreenHeight","changeRecipients","viewFile","send","staffUser","noReplyEmail","optionNotAvailable","emailChanged","yearSettings","createCommLogEntry","AutoAddEmail","bodyContainer","bodyHeight","sendMail","EmailTo","DisplayEmailToOnComment","DisplayEmailCcOnComment","DisplayEmailBccOnComment","EmailToCc","EmailToBcc","HtmlBody","AddEmailToParentContactLog","PeopleIds","ToMemIds","CCMemIds","BCCMemIds","PersonCode","_recipients","observableRecipients","_teacherName","_teacherEmailAddress","student360YearSubscription","academicHistory","clearStudentData","checkStudentGradeLevel","isShowHSTranscript","loadAcademicHistory","generateSemesterColumns","academicHistorySummary","semesters","AHSemester","AcademicYear","School","Gradelevel","AttemptedCredit","EarnedCredit","getFormattedDate","addScores","headerColumns","triggerChanges","triggerChangeSubscription","markForCheck","detailOpened","changeDetection","editAssessmentClick","deleteAssessmentClick","setSorting","disableClear","fieldTrackBy","createSubTableData","selectionChange","tableDataV10","tableDataV9","previousTabSelection","selectedTabName","getAssessmentsAndTabs","assessmentAndTabSubscriptions","processingTabs","assessmentService","getStudentAssessmentTabs","DESCRIPTION","getStudentAssessments","assessments","arrangeTabs","arrangeTabsV10","arrangeTabsV9","FULLTITLE","testName","BESTOF","fullTitle","AssessmentDataField","instanceId","TestInstanceId","strFieldName","AssessmentsDataRows","AssessmentData","strFieldData","dataCategoriesV10","tabTrackBy","getTestMasterLayoutVersion","getAssessmentFieldsReadByInstIdOrVersionId","saveAssessment","deleteAssessmentById","FromDueDate","ToDueDate","FromAssignedDate","ToAssignedDate","FromPercentage","PercentageValue","Percentage","ToPercentage","Category","isFilterApplied","_FromDueDate","It","_ToDueDate","_FromAssignedDate","_ToAssignedDate","te","CourseTerms","allCategories","periodChanged","matDialog","it","yn","hi","Qi","V10Flag","studentAssignments","getStandardsBasedHeader","gradebookStandard","getGradebookObjective","gradebookObjectives","ShowStandardBasedScore","GradeBookObjectives","standardsBasedHeader","CurriculumCourseObjectiveId","Assignment","Standard","AssignmentShortName","StandardDate","getCellValues","StandardsBasedScores","V10Score","getV10Score","selectedTermChange","getStudentAssignments","selectedOrderByOptionChanged","selectedOrderByOption","assignmentSortBy","classInformation_click","teacherProfile_click","courseDescription_click","utilityClass","course_change","gradingPeriod_Change","Ta","or","canSendEmail","AllowParentStudentEmail","hr","init","ShowByClass","studentAssignmentsUPMG","filterbyCard","loadFilterParam","local_filterParam","UsingFinalGrade","UsingSemesterGrades","UsingTermGrades","UsingProgressGrades","selectTermByDates","selectedGP","courseInfo","studentAttachments","getStudentAttachment","showStandardBasedScore","showCategoryWeights","ShowCategoryWeights","ShowOnPortal","EarnedV9","Earned","EffectiveScoreV9","Effective","PercentageV9","IsValid","EarnedValue","constructing","selectedViewOption","loadStudentSchedules","getSchoolPolicies","studentSchedules","selectedCourseSection","selectedCoursebyCard","ParentPortalAssignmentsDisplayProfiles","getStudentAttachments","assignmentFilterPipe","showToggleIcon","AttachmentDetail","isAttachmentExists","getStudentAttachmentByAssignmentId","getSBSScore","getAssignmentStatus","Curriculum","dDescription","CourseProfile","TeacherProfile","TeacherEmail","gradeDisplayType","DisplayReportCardGrades","Possible","schoolYearSettingsChange","HideS360AssignmentPercentageColumn","HideS360AssignmentEffectiveScoreColumn","ParentPortalAssignmentsShowEffectiveScore","refresh","addDays","getStudentAssignmentUPMG","studentLoaded","preventTabSwitch","missingRetrieved","Ut","filterChangeByModel","Oa","previousFilterParam","showPercentage","filterClose","loadCourseAndTerms","getCoursesFromUPComingAssignments","courseTerms","getTermsFromUPComingAssignments","categoryWeightsClick","byCourse","upcomingMissing","getSelectedTabIndex","assignmentFilter","tabComponent","clearFilterClick","categoryWeightDialog","showLegends","SpecialMark","overrideLegendDialog","SpecialMarkDescription","AssignmentCalcOptions","GradePos","SetSubsequentGPGrades","ExcludeFromCalculation","SetToZero","Ia","reduce","Set","mn","attendanceDetails","Pn","S360HideAttendanceComments","calendarUseAttendanceTypes","getAriaDetailRowByDate","pa","Dropped","rr","wt","attendance","getAriaRowByDate","toDateString","Codes","AttendanceDetails","getAriaDetailRowByCourse","AttendanceCodeDescription","Rr","courseSchedules","columnsToDisplayCourse","getAriaRowByCourse","Absences","Tardies","studentSpecialAttendance","getSpecialAttendanceSchools","specialAdditionalAttendanceSchools","SiteName","PrimarySchool","getSpecialAttendanceDataSource","specialAdditionalAttendanceAngularMatData","getSpecialAdditionalAriaRow","MinutesAttended","MinutesPossible","ReasonCode","getAriaDetailRowByTeamAttendanceDetails","attCode","attDescription","ampm","teamAttendance","getAriaRowByTeamAttendance","stName","staffName","aCount","tCount","StudentTeamAttendanceDetails","ut","selectedViewOptionChange","getStudentAttendanceInfo","selectedExcessiveAttendanceOption","columnsToDisplayExcessiveAttendance","getExcessiveAttendanceAriaRow","Steps","Points","AppealedStatus","viewTrackingGroupsOptions","studentExcessiveAttendance","TrackingType","AttendanceStepsDefinitionId","TrackingId","selectedExcessiveAttendanceOptionValueChange","selectedTrackingGroupOption","excessiveAttendanceAngularMatData","checkExpandedExcessiveAttendance","getExcessiveAttendanceSchools","getExcessiveAttendanceSchoolsViewOptions","excessiveAttendanceSchools","viewExcessiveAttendanceOptions","getExcessiveAttendanceDataSource","showAllCodes","getAttendance","selectedExcessiveAttendanceChange","CodeLegendClick","toggleView","On","En","si","allowMultiSelect","initialSelection","Ti","dailyAttendanceEnabled","ViewDailyAttendance","viewDailyAttendance","isStudentTeamExists","studentHeaderRef","studentHeaderHeight","tabsRef","tabsHeight","dropdownRef","dropDownHeight","footerRef","footerHeight","footerWidth","AcademicYearID","studentTeamAttendance","ReasonDescription","legendDialogRef","codeSort","callbyAttendanceComponet","byDateTableRef","byScheduleTableRef","byTeamTableRef","byViewExcessiveTableRef","BySpecialAdditionalRef","attendanceDaysAndHoursInfo","showAbsentNoticeButton","Sr","getStudentAwards","awards","awardsService","loadStudentAwards","AwardName","AwardDetails","AwardDate","weekday","viewDate","eventType","meta","eventDetails","Assignments","dataBucketId","getV9Attachments","calendarService","getTermsForCourses","attendanceStatus","attachmentDescription","TeacherMemId","assignedDate","eventClicked","lastSelectedCalendarView","selectedDate","lastSelectedCalendarDate","activatedRoute","queryParams","view","selectedDay","getCalendarEvents","calendarHeader","viewChange","viewDateChange","scalePDF","studentCalendar","checkAttendance","AttendanceId","AttendanceStatus","checkAttendanceEvents","checkDisciplineEvents","checkAssignmentEvents","setFlexDirection","setEventColor","checkForClasses","eventHasTimes","StartTime","EndTime","dateIndex","DailySchedule","Courses","CalendarAssignments","hour","minute","Events","checkAllDayEvent","allDay","Discipline","Incident","getTimeString","allDayEvent","setFontSize","diff","asMinutes","checkDayForClasses","behaviorLetterClick","disciplines","isStaffMember","useDisciplineEventModel","UseDisciplineEventModel","parentPortalDisciplineShowComments","ParentPortalDisciplineShowComments","BehaviorLetter","BehaviorLetterId","loadStudentDiscipline","ActionDate","Days","Event","InvolvingOthers","EventComments","ActionComments","behaviorService","schoolCopy","parentCopy","TemplateId","ShowSubmittedBy","DisableSubmission","TemplateName","base64PDF","Form","formStudents","refStudent","LastUpdatedOn","lastUpdatedOn","LastUpdatedByName","CreatedOn","CreatedByName","startOver","formClick","matSort","currentDateString","staffPage","snapshot","paramMap","getEFormPermissions","observableStudentEnrollmentStream$","reSelectStudent","initialS360eFormTab","showCompleted","pastYear","eForms","loadTable","eFormPermissions","filteredEForms","StudentsCanComplete","ParentsCanComplete","StaffCanComplete","Required","IsInstanceActive","statusDateOverrideCheck","showCompletedChange","dueDateCheck","pastDueCheck","ShowInAllYears","openYearSelector","openFormViewer","openStudentSelector","checkForUnfinished","action_View_Translated","IsLastStatusDelete","AllowInstanceSpecificText","CriticalMessage","SelectedFP","showDialog","feePayments","hideDetails","CheckNumber","CheckDate","dateCheck","NameOnCheck","additionalDetailsDialogRef","Fee","Payment","RunningBalance","onlinePaymentClick","parentPortalShowOnlinePayment","ParentPortalShowOnlinePayment","FeeDialog","FeeCode","AccountCode","studentname","StudentName","StudentIdentifier","AllowFutureFeeBillingPayments","feesAndBilling","getFeesAndBilling","feesAndBillingService","Unapplied","Balance","PriorBalance","AYBalance","unappliedPayments","totalBalance","aYBalance","priorBalance","getFutureBalance","futureBalance","calculateBalance","loadFeesAndBillingData","totalUnapplied","BalanceSort","FeePayments","UnappliedPayments","studentSchedule","subjectSection","Teacher","viewAssignment","gradeId","selectedGradeId","gradingTerm","selectedGradingTerm","gradingTermDescription","gradingTermDesc","standard","selectedStandard","isGradeBookGrade","isStandardView","selectedIsStandardView","subjectCode","selectedSubjectCode","section","selectedSection","isTermSelected","termGrade","behaviorSocialSkillDescription","behaviorLabel","TermDefinitionId","longDescription","gradeScale","courseTerm","ReportCardGradesTerms","DisplayGrade","GradingTerm","grade","Citizenship","citizenship","CitizenshipLabel","citizenshipLabel","Workhabits","workhabits","behaviorSkills","ReportCardGradesStandards","PercentGrade","ir","showStandard","OkClick","commentsAndBehaviorMarksClick","viewAssignments","viewAttendance","getTraditionalGrades","traditionalGrades","ShowTraditionalTab","ShowOnGradesPage","isProgressGrades","studentTerms","AngularMatData","getColumnsToDisplay","viewCourseDescription","courseDescriptionDialogRef","viewCourseProfile","profileViewerDialogRef","viewTeacherProfile","IsGradeBookGrade","GradingTermDescription","showAssignmentLink","IsGradeBookExists","showCommentsAndBehaviorMarksPopUp","gradesBehaviorSocialSkills","commentsAndBehaviorMarksDialogRef","selectedId","GradingCycle","showCategoryScores","CategoryAverages","getCategoryAverage","CategoryAverage","CreditAttempted","CreditEarned","getStandardBasedGrades","standardBasedGrades","ShowStandardTab","studentTermsStandardTab","TempReportCardGradesTerms","ka","showGradesLink","getCurriculumMarkTypes","gradesService","InActive","overrideLegendClick","viewProgressGrades","StandradTabByCurrentGrade","staffAssignedPortalsSubscription","getPortalInfo","parentPortalSubscription","showSendEmailLink","selectedCardCourse","showAttendanceLink","getGradesMessage","getReportCardTerms","reportCardGradesTerm","reportCardStandardGradesTerm","categoryAverages","ShowMessageOnS360GradesPage","gradesMessage","S360GradesMessage","getReportCardTermsStandardTab","getReportCardTermsBySiteYear","showProgressGrades","isDualEnrollment","setTabDetails","gradesPreferences","ShowProgressGrades","S360GradesDisplayFinalScoreGrade","traditionalGradesComponent","standardsBasedGradesComponent","getReportCardBehaviorSocialSkills","DisplayCategoryScores","getStudentCategoryAverage","Weight","CategoryWeight","CategoriesTerms","CourseNumber","getReportCardBehaviorSocialSkillDescription","overrideLegendDialogRef","planTypeMap","planTypes","planStatusMap","planStatuses","areaStatusMap","areaStatuses","creditCodeStatusMap","creditCodeStatuses","courseStatusMap","courseStatuses","DefaultDisplay","_init_defaultDisplay","PlanType","_init_PlanType","PlanGroup","_init_PlanGroup","GradPlanStatus","_init_GradPlanStatus","SubjectAreaStatus","_init_SubjectAreaStatus","CreditCodeStatus","_init_CreditCodeStatus","CourseStatus","_init_CourseStatus","CreditDecimalPrecision","_init_CreditDecimalPrecision","GPNeeded","_init_GPNeeded","previousFilterData","gpFilterParam","dataDefTypeOfgradutionPlanType","graduationPlanTypes","filterChanged","closeFilterEvent","creditCodeOverrideClick","refetchData","universalColumns","graduationplanService","getgraduationplanData","graduationPlanFetch_Complete","graduationplanTypes","gradPlans","GraduationPlans","primayGradPlan","getPrimaryGraduationPlan","getTableData","onToggleStatusAll","IsPrimary","previousDisplay","toggleStatusAll","CreditCodeOverrideDialogRef","gpCourseModel_selected","creditcode_Overriden","previousGradPlanStatus","previousSubjectAreaStatus","SubjectAreas","previousCreditCodeStatus","CreditCodes","previousCourseStatus","notInGP","IsExpanded","getAllCoursesByGradPlanID","getGraduationPlanById","Course_ID","DataBucketScore_ID","GradPlan_ID","getAllDistinctGraduationPlans","GradPlanName","getGraduationPlanOverrideCreditCodes","getStudentAndCourseInfo","overrideCreditCode","gradPlan_change","instance","course_Id","gradPlan_Id","fromAcademicProgress","graduationPlans","gpCourses","load_gpGPStudentNCourseInfoModel","saveOrCancel","getSelectedCourseObject","override_creditcode","gpGPStudentNCourseInfoModel","OverrideCreditCode","load_OverrideCreditCodes","gpOverrideCreditCodes","gr","medications","displayedMedicationColumns","getMedication","previousValue","toggleMore","medicationSelected","Pharmacy","RxNumber","Doctor","healthService","loadMedicationHistory","ShowRow","Do","getMedicationAriaRow","Medication","Dose","SchoolAuthorisedToAdminister","displayColumns","screeningId","screeningdetail","screening","getScreenings","screeningSelected","loadScreeningHistory","getScreeningAriaRow","ScreeningType","legendCodes","doctors","displayDoctorsColumns","getDoctors","loadDoctorHistory","getDoctorsAriaRow","DoctorName","Telephone","healthVisitLog","displayedHealthColumns","getHealthVisitLog","loadHealthVisitLogHistory","getHealthVisitLogAriaRow","TimeIn","TimeOut","VisitReason","SentTo","immunizations","getImmunizations","loadImmunizationHistory","getImmunizationsAriaRow","Date1","ExemptCode","insurance","getInsurance","loadInsuranceHistory","getInsuranceAriaRow","InsuranceCompany","Policy","InsuranceStartDate","InsuranceEndDate","codeLegendClick","Zn","S360DisplayImmunizations","S360DisplayMedications","S360DisplayHealthVisitLog","S360DisplayDoctors","S360DisplayInsurane","S360DisplayScreenings","routeSelectedTabIndex","medicationsComponent","screeningComponent","isCurrentTabFiltered","immunizationsComponent","healthVisitLogComponent","doctorsComponent","insuranceComponent","clearCurrentTabFilters","getScreeningCodeLegend","Oi","PhysiciansId","PhysicianTypeId","Primary","viewAttachmentClick","getDocumentAttachments","iepService","getSpedDocumentAttachments","SpedCollectionToStudentId","docAttachments","DocumentDescription","CreatedDate","AttachedBy","viewDocumentClick","viewDocumentAttachmentDialog","getSpedCollection","spedCollection","getSpedDocuments","SpedCollectionId","CollectionStatusId","TemplateVersionId","ShowAttachmentColumn","FieldData","FieldDescription","Documents","CollectionName","Filename","Created","ShowOnSummaryGrid","iepData","columnsToDisplayDetailRow","columnsToDisplayCount","iepDocumentsDialogRef","SpedDocumentId","viewCollectionDocument","to_trustedHtml","transactionDate","selectedChoice","MonthlyLunchMenuChoices","getLunchMealChoices","mealService","columnSpanToDisplay","unix","lunchMealChoice","getMealServiceAriaRow","BreakFastMeal","BreakFastALaCarte","LunchMeal","LunchALaCarte","SnackMeal","SnackALaCarte","OtherMeal","OtherALaCarte","TotalPurchases","Deposits","Net","lunchMealChoicesDialogRef","angularMatDataMonthlyLunchMenu","getMonthlyLunchMenuHeader","getMonthlyLunchMenuData","columnsToDisplayLunchMenu","Choice","studentMonthlyLunchMenuChoice","showMontlyLunchMenuGrid","ChoiceDescription","getMonthlyLunchMenuAriaRow","getMonthlyLunchMenuRecords","getChoiceNumber","FromDate","ToDate","viewPassword","changeDate","Na","yearStartDate","yearEndDate","nearestDateCheck","DisabledNxtBtn","DisabledPrvBtn","selectedMonth","monthLabels","byViewMonthlyRef","parentPortal","selectedStudentId","getMothlyLunchMenu","loadMealService","getLunchPin","getLunchPinForStudentAndStaff","lunchPin","getCalculationSummary","byViewChargesRef","getMonthlyLunchMenu","loadMealMonthlyLunchMenu","totalDeposit","totalRollOver","totalPurchases","MealServiceDetailItems","TransactionType","fltAmount","filterFromDate","mealServiceFilter","filterToDate","mealServiceFilterPipe","classesFiltered","showPassword","OnlinePaymentServiceCharges","getForms","OnlineRegistrationForms","ParentPortalDataUpdateForms","currentForm","_currentForm","formChange","currentFormPacket","_currentFormPacket","formPacketChange","calledFromReviewSubmission","_calledFromReviewSubmission","formStatus","_formStatus","V10Data","isOnlineRegistration","ParentPortalORv10Data","ParentPortalUHDv10Data","isLastForm","getCurrentFormIndex","forcefullyRedirectOnlineRegistration","isFieldRequired","getFieldPhoneRegexp","getFieldEmailRegexp","getFieldZipRegexp","getFormCount","getFormAtIndex","routeToForm","originalForm","originalFormPacket","FormStatus","ScreenName","guardCheck","getFormPacket","getFamilyDataFields","getHouseholdParents","YearDescription","saveHouseholdParents","deleteHouseholdParents","getHouseholdAddresses","OnlineRegistrationHouseholdAddressesDetail","ParentPortalDataUpdateHouseholdAddressesDetail","saveHouseholdAddresses","SameAsPrimaryResidence","deleteHouseholdAddresses","getHouseholdStudents","saveHouseholdStudents","deleteHouseholdStudents","getMatchingStudentAddresses","getMatchingParentAddresses","getMatchingAddresses","syncStudentAddresses","syncParentAddresses","syncAddresses","getEmergencyContact","saveEmergencyContact","deleteEmergencyContact","getNonResidentParents","saveOnlineRegistrationNonResidentParentData","deleteNonResidentParentData","getCustomForm","saveCustomForm","deleteCustomForm","submitOnlineRegistrationPacket","getHouseholdHealth","saveHouseholdHealth","deleteHouseholdHealth","DocumentFileId","checkStudentImmunizationCompliance","OnlineRegistrationActiveStudents","UserIsPrimaryContact","getOnlineRegistrationYears","getORYearGradeLevels","deleteOnlineRegistrationUserPacket","getNewStudentLinkedContacts","saveNewStudentLinkedContacts","radioChange","gradeLevelMessage","gradeLevelData","selectedFamilyId","Desc","Year","AddBy","Added","addDocumentForm","fileCategory","fileDescription","addFile","FileBase64","Size","SizeUnit","fileCategoryErrorMessage","fileDescriptionErrorMessage","markAsDirty","fileError","addFileChanges","editDocumentForm","StuPortCategoryName","StuPortCategory_ID","editStudentPortfolio","viewPortfolio","studentAccessHistoryClick","editPortfolioDocumentClick","deletePortfolioDocumentClick","addClick","studentPortfolios","getPortfolios","portfolioSource","filterPortfolio","portfolioFilter","classFiltered","previousPortfolioFilter","auditStudentPortfolioDocument","FileMimeType","getDateFormatted","deleteStudentPortfolio","AccessHistory","RecentAccessHistory","viewAttachment","programAndServiceAriaLabel","programAndServiceDetailAttachmentsAriaLabel","hasComments","hasCommentsString","hasAttachments","hasAttachmentsString","detailsBySequence","_sortedDetails","classEntryDateFrom","classEntryDateTo","classExitDateFrom","classExitDateTo","studentListId","studentTeamId","counselorId","getCourseChangeHistory","multipleStudent","scheduleHistorySearchModel","getCourseChangeHistoryData","getStudentsListsDrop","getStudentCounselor","scheduleHistoryService","scheduleHistoryModel","teamsService","teams","counselorService","ta","di","primaryAddress","mailingAddress","MailingAddress","viewStudentAddress","lr","$r","Ra","uo","io","displayParentContacts","rowExpanded","DisplayEmergencyPhoneNumberInGrid","studentDetails","StudentParentContacts","loadStudenDetails","ShowStudentLogin","maskedLogin","StudentLogin","ShowStudentPassword","maskedPassword","StudentPassword","LockerCombination","maskedLocker","DualEnrolled","onToggleChange","EmergencyPhone","Homephone","Cellphone","getAriaStudentDetail","PrimaryParent","LivesWith","HasCustody","Restricted","PlaceOfWork","PrimaryAddress","ECLeaveWithThisPerson","ECComments","hasParentContacts","getParentContactTableData","sdc","studentDigitalContentService","DocumentOwnerId","getStudentDigitalContent","studentDigitalContentData","addContentDialogRef","deleteConfirmDialogRef","deleteStudentDigitalContent","canAddEdit","topActionMenuItems","canDelete","studentDocumentAccessHistory","getStudentDocumentAccessHistory","studentDocumentsFilterData","setFilter","studentDocuments","documentType","for","DocumentFor","Notes","CreatedBy","forOptions","edit","documentTypeIdAsString","V9UserPermissions","attachmentNameRef","documentTypeRef","documentTypeChanged","deleteDocumentClick","onlyBehaviorLettersDocument","showOnlyBehaviorLettersDocument","canAddAll","canAddViewAll","canAdd","studentDocumentsLength","loadStudentDocuments","showFormsForEntireFamily","showFormsForEntireFamilyChange","editStudentMode","editRegistrationStudentMode","getPermisionCategory","getStudentFieldsByStudentId","getStudentFieldOptions","validateStudentFieldsData","saveStudentFieldsData","DataFieldId","changeFieldData","validateDate","observableStudentFieldSaved","StudentField","ErrorCollection","StudentFields","isEdited","validateData","FieldOptions","tableHeight","TabMenus","windowResize","divUserDefinedField","ValidateIdLengthOnly","getTabTitle","TabId","SelectedTabId","TabTitle","filterStudentField","ColumnPosition","Row","visibleMiddleColumn","StudentFieldservice","FieldWidth","DataFieldFormatType","DataTypeFormat","ColumnData","DisplaySize","distinctTabId","TabSequence","MaxRow","studentDateFields","OldColumnData","OldExternalDataId","ExternalDataId","OptionSelected","tabRows","compareObjects","ErrorCount","callbackFunction","Error","validateOtherFields","showErors","ElemAptitudeField","isStudentIdError","isStateIdError","idFields","FieldSize","fill","MinimumFieldValue","observableStudentFieldSavedStream$","assignmentClick","attendanceClick","emailTeacherClick","gradesClick","getSchedule","includeDropped","_includeDropped","schedule","checkColumns","showProfiles","ParentPortalCourseScheduleProfiles","showEmailLink","courseDescriptionClick","classInformationClick","studentScheduleService","setGridHeader","re","j","ti","oa","initialSort","columnPosition","helpClick","staffOnly","districtCards","showInSettings","checkColumnName","showDetailedOption","hasDetailCard","matDialogRef","announcement","viewDetailsClick","moreClick","Aa","Ir","Ho","Hs","card","checkOverflow","scrollHeight","offsetWidth","hasNewAnnouncements","IsNewSinceLastLogin","getCardAnnouncements","districtAnnouncements","schoolAnnouncements","Announcement","textAreas","toArray","Overflow","dailyAttendance","yearToDateAbsentCount","totalAbsences","yearToDateTardyCount","totalTardies","DaysPresent","TotalDays","HoursPresent","TotalHours","viewAllClick","cardClick","todaysAbsentCount","todaysTardyCount","attendanceTotals","getCardAttendance","Class","TodaysTardies","TodaysAbsences","TotalAbsences","TotalTardies","dailyAttendanceStatus","DailyAttendanceStatus","mockData","Marked","checkIfMissing","IsMissing","missingCount","dueTomorrowCount","dueTodayCount","getCardAssignments","Due","MissingCount","DueTodayCount","DueTomorrowCount","viewAllGradesClick","standardsClick","qn","Fl","displayedColumns","getGradingPeriodDetails","getCurrentGrades","Section_ID","currentTerm","gradingPeriodId","GradingPeriod_ID","getCardStudentGrades","studentGrades","gradeDisplayString","linkTileClick","linkTiles","IsMyLinksTile","userIsStaff","hasImage","TileImageFile","OpenInNewWindow","Da","payClick","showPay","feesLedger","totalString","creditOrDue","TotalBalanceCreditOrDue","numberWithCommas","checkTotalString","checkIfBalance","dr","observableOnlinePaymentConfigurationStream$","parentAssignedPortalsSubscription","wd","gettFeesBalance","getCardFeesAndBilling","TotalBalance","Pr","mealLedger","balance","absBalance","rolloverBalance","Rollover_Balance","deposits","charges","Charges","checkIfNegative","ts","ea","getMealBalance","getCardMealService","viewTermScheduleClick","Ns","DisplayClassMeetsOnStudentScheduleCard","getCardStudentSchedule","LunchStartTime","LunchEndTime","tab1Schedule","MeetsToday","tab2Schedule","MeetsNextSchoolDay","nextSchoolDayDate","validSchoolNextDay","showTabs","scheduleInfoMessage","tab1Title","TodayAfterLastDayOfSchool","NoSchoolNextSchoolDate","TodayBeforeFirstDayOfSchool","tab1Date","TodaysDate","showTab2Schedule","tab2Date","NextSchoolDate","tab2Title","Withdrawn","viewCalendarClick","$l","getUpcomingEvents","getCardUpcomingEvents","upcomingEvents","EventStartDate","EventEndDate","eventsByMonth","getDayString","getWeekDayString","multiDayEvent","getDateRangeString","getTimeLocationString","EventLocation","hasTimeLocation","Us","goToCalendarClick","Pl","calendarClick","endOf","getCardStudentCalendar","HasEvent","HasSchool","getEventForDateRange","ls","updateView","cdr","hideShowDropped","goToAttendance","getCardStudentAttendance","attendanceRecords","showDropped","recordsToDisplay","IsDropped","ClassMeets","attendanceRecordClick","getAttendanceHistoryDetail","viewStudentTeams","Xl","getTeams","getCardStudentTeams","studentTeams","_s","viewStudentNotesClick","getNotes","getCardStudentNotes","Definition","viewBehaviorClick","yc","getBehavior","getCardStudentBehavior","behaviorEvents","viewProgramsAndServices","an","getCardProgramsAndServices","displayItems","program","service","ServiceEntryDate","viewStudentDetails","im","enrolledSchools","RSNY_ID","membershipCode","getMembershipCodes","membershipDetails","openMembershipCodeDetails","bd","getEnrollmentHistory","getCardStudentEnrollment","enrollmentHistory","enrollmentDetails","IsCurrent","lu","contacts","IsHeader","Rd","Contact_Name","HomeNumber","CellNumber","studentContacts","Tm","wp","getStudentContacts","getCardStudentContacts","Nd","goToStudentSchedule","termChange","Tp","selectedTermId","termOptions","_d","announcementCard","attendanceCard","assignmentsCard","currentGradesCard","districtDefinedLinksCard","feesAndBillingCard","mealServiceCard","studentScheduleCard","upcomingEventsCard","calendarCard","attendanceHistoryCard","studentTeamsCard","studentNotesCard","behaviorCard","programsAndServicesCard","studentDetailsCard","enrollmentCard","contactsCard","staffStudentScheduleCard","loadCards","getComponentForCardType","templateMapper","Oh","refreshCards","filterCards","cardsSorted","cardsLeft","cardsRight","Jp","eh","allAnnouncementsClick","sortAnnouncements","sortAnnouncementsV9","hasSeenNewAnnouncementModal","classroomAnnouncements","siteDailyAnnouncement","ShowDaily","siteDailyAnnouncementTable","IsNewAnnouncement","siteAnnouncement","schoolNameDaily","tableDailyData","virtualizeDaily","showTableDailyFlags","ip","ap","checkInOutSubmissionRequest","checkInOutRequest","SubmissionAttachment","Oc","h_","p_","validateCheck","convertTime","saveCheckInOutSubmissionRequest","timeRef","validateTime","ym","wl","eventViewClick","markEventsAsSeen","onCloseBehaviorLetterNotification","sp","Rm","P_","k_","lh","Jd","cv","O_","getOnlineRegistrationStatus","cardContainer","getCourseRequestStatus","getBehaviorLetterEvents","checkPortals","checkEFormAvailable","getAnnouncementsPopup","notificationsService","observableeFormHeadLinePermissionStream$","displayBehaviorLetterHeadline","getStudentRecentEvents","optionalInstanceIds","recentBehaviorLetters","Count","nh","getStudentNotesForPopup","StudentNotesPopup","DisplayOrder","OncePerSession","acknowledgedStudentNotes","displayORHeadline","onlineRegistrationStatus","requiredORYear","displayCourseRequestHeadline","displayWelcome","LastLoggedInDate","getStudentsNewAnnouncements","ov","allParentPortals","studentDocumentIds","getRecentEvents","eFormsActivated","ActivateEForms","requiredEFormAvailable","eFormsAvailable","optionalEFormAvailable","optionaleFormAvailable","recentDisciplineEvents","recentHealthEvents","recentOptionalEFormEvents","unmarkedOptionalEFormsEvents","behaviorlatterStudentDocuments","attendancelatterStudentDocuments","defaultCards","showCard","hideCard","disabledMessage","DisabledMessage","PreviousAngularLogin","settingsClick","hasPrivilege","enableCheckInOut","enableAbsentNotice","checkInOutButtonClick","getCheckInOutSubmissionRequest","Dc","absentNoticeButtonClick","pf","SubmittedPeopleId","sh","hasSummaryCard","v9","_defaultCards","getCardCourseRequestStatus","getCardOnlineRegistrationStatus","observableParentAssignedPortals","observableAcademicYearAttention","updateParentAssignedPortals","getParentAssignedPortals","_lastSelectedCalendarDate","_lastSelectedCalenderView","NoSchoolPolicy","getStudentSummary","chunk1","chunk2","updateAcademicYearAttention","academicYearAttention","includeInactiveTeams","_includeInactiveTeams","showStudentTeams","ParentPortalShowStudentTeams","teamService","getStudentTransportation","transportation","showTraversaBusRoute","ShowTraversaBusRoute","traversaEnabled","TraversaEnabled","versatransEnabled","VersatransEnabled","ShowTraversaBusNumber","showErrorMessage","transportationService","getTransportation","ErrorMessage","loadStudentTransportation","getPadding","detailPadding","destinationRef","moreRef","daysRef","pickUpPadding","pickUpTimeRef","pickUpLocationRef","pickUpBusRef","V","z","nn","mi","wa","cr","Mr","Wr","Io","verifyEmail","inputEmail","alreadyHaveCodeClick","interpolatedString","modalInstanceYesClick","modalInstancePreviousClick","dialogWidth","dialogWindow","linkAlreadySentDialogRef","loginExistsDialogRef","duplicateEmailDialogRef","emailNotSentDialogRef","emailSentDialogRef","language","auditLogin","IsAdminLogin","loginservice","yournameRef","typeRef","descriptionRef","forgotUserNameForm","OnChanges","forgotUserName","valid","isEmailSent","duplicateRecords","firstNameError","lastNameError","emailAddressError","forgotUserNameClick","forgotPasswordForm","forgotUsernameDialogRef","forgotPassword","formErrors","isProcessBusy","classicSetPassword","studentResetPasswordWarningDialogRef","user","isLinkExpired","resetPasswordMessage","forgotPasswordParams","resetPasswordForm","newPassword","MinimumPasswordLength","repeatNewPassword","validators","isDebug","newPasswordError","repeatNewPasswordError","check","getCookieRegExp","getAll","set","toUTCString","deleteAll","token","args","decorators","currentApplicationClick","copyrightYear","LoginButton360Click","staffGoogleAuthenticationChange","registerNewFamilyClick","forgotPasswordClick","googleUserAuthentication","LoginButtonClick","ht","Qo","os","fl","Bc","Zl","Cd","Tu","isResetPasswordSaved","forgotPasswordDialogRef","hu","activateGoogleAuthenticationForStaff","staffGoogleAuthentication","ParentPortalShowParentTab","ParentPortalShowStudentTab","showUserType","loginError","_loginError","checkVersions","cookieAccessToken","cookieService","cookieMemId","cookieUserType","googleAuthentication","GoogleAuthentication","GoogleClientId","ActivateGoogleAuthenticationForStaff","activateGoogleAuthenticationForStudent","ActivateGoogleAuthenticationForStudent","impersonateAccessToken","impersonateUser","detectIE","badBrowser","setUserType","setTabs","userNameRef","DisplayGoogleClassroom","googleScope","EnableGoogleIdentityServices","gapi","load","auth2","client_id","cookiepolicy","prompt","ux_mode","scope","googleError","details","endCheckVersions","versionCheckInterval","OneSISVersion","loginFromLegacy","code","EA","UT","IT","SP","GALDSAuth","NavigateToEForms","redirectToEForms","manageEformsFilter","getClassicCurrentUser","opener","forgetPasswordParams","getForgotPasswordDetail","removeItem","replaceState","setEFormsConfig","setTime","cookie","usingCookie","isLoggedInError","resetPasswordDetail","DisplaySeparateUserTypes","StaffUserUseADPassword","StudentUserUseADPassword","ActiveDirectoryAgentURL","activeDirectoryAddressNotSet","access_token","ForceSDMADMINAudit","login","forceUserToClassic","forceToClassic","UserIsLocked","UserIsDisabled","UserCanAccessClassroom","redirectUserTo360","LegacyURL","ActivateStudent360","RedirectTeachersTo360","showOverlay","legacySelectedStudentId","getUserFavorites","getDistrictSchools","ForceChangePassword","ForceChangeExpiredPass","ActivateBehavior360","queryStringAction","referrallink","referralStatus","redirectFromClassic","BlockClassroom360","DefaultLoginScreen","forgetPassword","setUserIndex","ResetPasswordDialogRef","defaultTabIndex","ShowForgotUserNameLink","openNewFamilyRegistrationPopup","selectLanguageDialogRef","registerFamilyMessageDialogRef","registerNewFamilyDialogRef","LoginYearId","ForceTeachersDate","loginOnly360DialogRef","EFormNonResident","EFormUseRoles","google","accounts","oauth2","initTokenClient","callback","expiresDateTime","googleUser","validateGoogleToken","requestAccessToken","getAuthInstance","signIn","getAuthResponse","id_token","zone","run","hasSignedIntoGoogle","onEnterKeyDown","IsChangePasswordUrl","requiredCurrentPassword","passwordValidation","currentPassword","currentPasswodRef","newPasswordRef","repeatNewPasswordRef","loadChildren","o","B","FamilyRegistrationModule","StudentAttachmentModule","Classroom360Module","Student360Module","Counselor360Module","Admin360Module","StateReportingModule","Management360Module","Health360Module","Sped360Module","redirectTo","pathMatch","onSameUrlNavigation","relativeLinkResolution","intercept","setHeaders","Authorization","handle","idleTimeout","secondCount","addEventListener","closeDialog","resetTimeout","revertToStudentSummary","legacyVersion","LegacyVersion","aboutTyler","clearFocus","homeClick","courseSelected","studentInFocusClick","galdsClick","AZEdsClick","pulseLinkClick","openReportsWindow","addFavoriteClick","editFavoriteClick","addLinkClick","editLinkClick","linkSelected","linksClick","trainingClick","aboutTylerSISClick","documentationClick","setNotificationPreferencesClick","changeEmailAddressClick","changePasswordClick","mealServiceClick","userPreferencesClick","toggleClick","languageClick","toggleEvent","userInitials","getUserLoginFromLegacy","EnablePulseSSO","getPulseList","showNotificationPreferencesLink","studentSubscription","observableStudentsStream$","parentPortalsDeepCopy","mr","schoolsSubscription","observableSchoolsStream$","isLoggedInSubscription","isLoggedInStream$","staffAssignedPortalSubscription","showTeacherProfile","isPageLoadedSubscription","myClassesSubscription","gradebookClassesSet","getGradebookClasses","getAttendanceClasses","parentPortalsSubscription","logAccessDeniedInfo","portalAccessDeniedDialog","PrimaryContact","setSchoolDisabledSubscription","observableSetSchoolDisabledStream$","showSchoolDropdown","setYearDisabledSubscription","observableSetYearDisabledStream$","disableYearDropdown","showGALDS","AllowGALDSParentPortal","AllowGALDSStudentPortal","showAZEds","ho","UserID","Timestamp","MachineName","StackTrace","removeEventListener","hash","returnValue","userData","write","showMenuButton","getUserName","revoke","userLoginFromLegacy","stopImpersonating","stopImpersonateClick","changeEmailDialogRef","ChangePasswordDialogRef","studentMenuPortalClick","favoritesDialogRef","districtLinks","myLinks","addLinkDialogRef","studentInFocus","studentInFocusDialog","showLanguageLinks","languageLinkVisible","showUserLinks","reportsDialogRef","guard","courseCategory","attendanceClasses","showYearDropdown","enableClassDropdown","hidePrintButton","windowWidth","ActiveDirectoryUser","showChangePassword","AllowStudentsToChangeTheirPassword","impersonateByUserId","PulseURL","getJSON","PulsePages","FavoritePages","pulsePageList","pulseFavoriteList","pulseWindow","showFavorites","favoritesShown","no","aboutTylerSISDialog","helpContextId","addEditLinkPrivilege","fn_RedirectTo360","submit","pageWidthCenter","pageHeightCenter","showSpinnerSharedSubscription","observableShowSpinnerStream$","hideSpinnerSubscription","observableHideSpinnerStream$","showSpinnerSubscription","loadingChain","closeSideNav","setCurrentComponent","showAppHeaderSubscription","observableShowAppHeaderStream$","loginSubscription","observableLoginStream$","setTimeoutSettings","resetIdleTimeout","startViewTime","zr","addOverlayClickListener","usertype","configureLinksForQuill","className","elementFromPoint","initMouseEvent","showLoadingImage","appTimeout","TimeoutTime","tracking","ActivateApplicationMonitoring","instrumentationKey","sidenav","showTimeoutModal","inactivityDialog","inactiveTime","cl","ctrlKey","shiftKey","apiCall","showErrorDetails","stackTrace","fullPath","_platformLocation","requests","removeRequest","cardRetrieval","ExcludedURLs","ExcludedURLsV10","IgnoreErrors","errorDialogRef","getTranslation","logOutClick","ml","Gs","observableLoginErrorStream$","handleError","noInternetDialogRef","checkingNetworkConnection","onLine","canContactServer","showNoInternetModal","XMLHttpRequest","hostname","continuousChecking","connectionRestored","bootstrap","bc","loader","useFactory","Nc","missingTranslationHandler","currentLang","translations","missingTranslations","bootstrapModule","catch","interpolate","interpolateFunction","interpolateString","compile","compileTranslations","onTranslationChange","onLangChange","onDefaultLangChange","defaultLang","langs","getDefaultLang","retrieveTranslations","setTranslation","lang","getLangs","addLangs","updateLangs","getParsedResult","getStreamOnTranslationChange","stream","changeLang","changeDefaultLang","reloadLang","resetLang","getBrowserLang","getBrowserCultureLang","translate","translateParams","checkNodes","updateValue","getContent","setContent","_dispose","Courier","Helvetica","Symbol","ZapfDingbats","WinAnsi","toggleDraggable","drag","press","release","destroyDraggable","enableDrag","outputs","kendoPress","features","acceptSize","checkChanges","destroy","checkSize","initSize","measure","isScheduled","flush","rateLimit","encapsulation","Er","b","Ke","L","ki","Va","at","tn","productName","productCodes","publishDate","version","licensingDocsUrl","notify","expand","dataItem","collapse","nodeIndex","indexForLevel","lastLevelIndex","notifyLoaded","Boolean","po","Go","doesnotcontain","startswith","doesnotstartwith","endswith","doesnotendwith","firstVisibleNode","lastVisibleNode","closestNode","prev","firstFocusableNode","findNode","findParent","findVisibleChild","findVisiblePrev","qr","findVisibleNext","registerItem","unregisterItem","childLevel","insert","visibleSibling","activeIndex","isActiveExpanded","isLoadMoreButton","focusableItem","activate","activateParent","activateIndex","activateClosest","activateFocusable","deactivate","checkIndex","selectIndex","notifyLoadMore","isActive","isFocusable","move","moveToParent","moveToFirstVisibleChild","notifyExpand","notifyMove","navigationState","handleEnter","handleSpace","childrenLoaded","isFirstSelected","setFirstSelected","registerChildren","replaceItem","itemLookup","hasItem","addToParent","mapChildren","bn","animate","nodeTemplateRef","loadMoreButtonTemplateRef","isExpanded","rebindChildren","expandNode","collapseNode","getNodePageSize","setNodePageSize","preloadChildNodes","attachDomHandlers","focusHandler","blurHandler","originalEvent","keydownHandler","verifyLoadMoreService","registerLookupItems","hostVars","filterInputPlaceholder","exportAs","directives","read","moreNodesAvailable","loadMoreButtonIndex","totalNodesCount","hasTemplate","checkNode","nodeText","fetchChildren","nextFields","loadMoreNodes","loadMoreLocalNodes","fetchMoreNodes","skip","take","setNodeChildren","mapToTreeItem","emitChildrenLoaded","subscribeToNodesChange","reselectItemAt","registerLoadedNodes","loadOnDemand","attrs","animation","multiple","single","checkedKeys","options","checkChildren","checkParents","enabled","mode","isItemChecked","isIndexChecked","Gt","itemKey","checkSingle","checkMultiple","toggleCheckOnClick","unsubscribeClick","addCheckedItemsChildren","Ii","checkedKeysChange","disabledKeys","Ki","maxAutoExpandResults","expandMatches","expandedOnClear","filterExpandSettings","Dn","expandedKeys","toggleExpand","handleAutoExpand","As","At","expandOnFilter","expandedKeysChange","selectedKeys","getAriaMultiselectable","selectSingle","selectMultiple","selectedKeysChange","isDefaultPrevented","setValid","Vo","sourceItem","remove","getParentNodes","childrenFor","statusIconClass","componentRef","show","hide","animateDragClueToElementPosition","cancelReturnAnimation","updateDragClueData","updateText","scrollIntoView","step","cancelScroll","updateDropHintData","interval","scrollSettings","ngAfterContentInit","handlePress","handleDrag","clientX","handleRelease","updateDropHintState","updateDragClueState","initalizeDraggable","notifyDragStart","notifyDrag","destinationItem","notifyDrop","notifyDragEnd","getTargetTreeView","disableAnimationsForNextTick","shouldInitiateDragStart","sqrt","initiateDragStart","left","allowCopy","ignoreCase","filterSettings","handleFilterChange","matchCount","updateVisibleNodes","resetNodesVisibility","visible","childrenField","isVisible","getLastVisibleChildNodeIndex","Jl","addChildNodes","removeChildNodes","fetchAllDescendantNodes","fetchChildNodes","rebindData","isButton","treeItem","parentTreeItem","registerNavigationItem","activateItem","focusItem","moveLookupItem","moveNavigationItem","updateNodeAvailability","setAriaAttributes","setDisabledClass","setClass","updateTabIndex","role","updateFocusClass","updateSelectionClass","classWrapper","indeterminate","ngDoCheck","handleChange","checkStateChange","editService","handleAdd","handleRemove","getInitialPageSize","getGroupSize","setGroupSize","getTotalNodesCount","verifySettings","getInitalPageSize","ar","Cr","zo","_next","tryCallPredicate","vi","templateRef","Ht","onCheckedChange","listResize","xl","clearValue","pageChange","nc","xc","mousedown","filterText","handleFilter","onFilterFocus","blurFilterInput","clearAll","updateHeaderPadding","handleFilterInputChange","handleKeydown","handleBlur","onSelectionChange","nodeExpand","nodeCollapse","handleCheckedItemsChange","toggleCheckAll","focusout","handleNodeClick","deleteTag","Wd","Ar","ql","Yl","Gl","om","lm","sm","Dm","cm","Hd","dm","Pu","ru","Cp","Yd","zm","Sd","userInput","rtl","zc","writeInputValue","setInputSelection","handleInput","handleFocus","setInputSize","getTotal","isFocused","indices","newSelection","added","unselect","removed","change","resetSelection","focused","itemsCount","isGrouped","getGroupIndices","closestGroup","flatIndex","itemAt","groupAt","groupField","itemGroup","flatten","offsetIndex","isIndexDisabled","isItemDisabled","process","current","clampIndex","firstFocusableIndex","overflowY","firstVisibleItem","xp","findCurrentGroup","prefetchData","changePage","getText","scrollToItem","scrollToIndex","scroll","hasScrollbar","setOverflow","hasVirtualScrollbar","positionItems","firstGroupHeaderInTargetedPage","pc","ku","mm","mc","$m","listContainerClasses","suggestion","suggest","appendTo","clearButtonVisiblity","isOpen","togglePopup","triggerPopupEvents","activeDescendant","noDataLabel","clearTitle","itemDisabled","virtual","setDisabledState","focusItemAt","emitChange","handleNavigate","handleEscape","searchBarChange","subscribeEvents","subscribeTouchEvents","unsubscribeEvents","handleItemChange","handleItemFocus","createPopup","horizontal","anchor","content","popupClass","positionMode","popupAlign","anchorAlign","destroyPopup","_toggle","findIndexPredicate","setMessages","Ws","highlightFirst","pm","kd","hm","ou","wm","Ou","valuePrimitive","clearable","popupWidth","popupHeight","createValueStream","custom","attachStreams","ngAfterContentChecked","isEmpty","buttonClasses","setState","updateState","clearState","findDataItem","getSuggestion","selectionService","handleNavigationOpen","emitValueChange","preventEventDefault","focusedItemText","restoreItemFocus","useSuggestion","attachSelectClickHandler","Ms","lc","focusableId","gh","Od","widgetTabIndex","ariaExpanded","ariaOwns","ariaActivedescendant","blurComponent","focusComponent","filterable","keypress","isDisabledDefaultItem","getDefaultItemText","itemFromEvent","currentOrDefault","componentBlur","onMouseDown","onKeyPress","selectNext","au","Km","assignAriaDescribedBy","Sp","Fd","ad","Uc","jc","Pc","Zd","Dh","onSearchBarFocus","onSearchBarBlur","wrapperMousedown","checkboxes","bp","disabledClass","handleRemoveTag","tag","addCustomValue","differ","onTagMapperChange","removeGroupTag","removeSingleTag","zp","disabledItemsMapper","createCustomValueStream","handleClose","handleEnd","handleHome","handleUp","handleBackspace","handleDelete","handleLeftKey","handleDownKey","handleRightKey","searchTextAndFocus","closePopup","openPopup","resolveDataItemFromTags","tags","nextTick","hs","fm","Kd","su","Qp","yl","Xm","yh","textFrom","vh","addWindowResizeListener","updateColumnsMediaState","kc","ac","Qc","$c","Ep","qh","Dp","treeview","tabindex","handleClick","popupContainerClasses","messageFor","Ts","clearButton","$p","Ch","xh","Jh","ef","Qu","checkableSettings","dataItems","focusedTagId","isTagFocused","isTreeViewActive","isWrapperActive","isFilterActive","isCheckAllActive","navigationService","handleTagMapperChange","handleTabKey","handleUpKey","removeTreeViewFromTabOrder","setTags","ms","Wi","valueDepth","onFocus","rc","Ed","vu","yu","zd","du","uu","tagProp","isTagDisabled","itemId","isGroupTag","tagAriaHidden","getPropField","disabledIndices","removeTag","Cc","noDataText","override","Cu","Ld","caseSensitive","matchesAnyField","checkItem","normalizeValue","Wc","Hc","focusedClassName","selectedClassName","templateContext","addItem","updateItems","Qd","checkedItems","getCheckedState","handleCheckedChange","checkable","isItemIndeterminate","checkedItemsChange","allChecked","someChecked","fd","lastAction","$d","createTagMapper","Xu","showAfter","Au","xu","Zu","tf","Mm","qu","Xd","oc","mouseup","mousewheel","handleHexInputBlur","handleHexValueChange","rgba","handleRgbaInputBlur","handleRgbaValueChange","handleAlphaSliderChange","handleActiveColorClick","handlePopupBlur","handleValueChange","handlePopupKeyDown","handleCellSelection","An","trackWidth","smallStep","resizeTrack","resizeTicks","resizeWrapper","getTickSizes","adjustPadding","elementOffset","vertical","elementSize","positionHandle","positionSelection","horizontalClass","verticalClass","keyBinding","resetStyles","xn","incrementMessage","decrementMessage","dragHandleMessage","handleDragPress","onHandleDrag","onHandleRelease","sizeComponent","dragging","setValueChangeInterval","getProps","fixedTickWidth","largeStep","readonly","attachElementEventHandlers","textFor","valueText","ieClass","ariaDisabled","ariaReadonly","onLabelMessage","offLabelMessage","isEnabled","keyDownHandler","setHostClasses","elementValue","setElementProperty","autoSize","hostClasses","textareaElementClass","focusedClass","invalidClass","decimals","widgetClasses","minError","minValue","maxError","registerOnValidatorChange","notifyValueChange","incrementTitle","decrementTitle","decimalSeparator","intl","decimal","hasDecimals","arrowPress","replaceNumpadDotValue","autoCorrect","Pi","separator","spin","setSelection","limitValue","limitInputValue","tryPadValue","isInRange","restrictModelValue","restrictDecimals","formatInputValue","formatValue","setInputValue","verifyValue","parseOptions","intlChange","hasTrailingZeros","selectCaret","numberOfLeadingZeroes","adjustSignificantChars","decrement","chain","fold","eof","char","peek","eat_input","eat_control","eat","isLiteral","ao","includeLiterals","validationValue","rawValue","maskRaw","maskInput","maskInRange","selection","maskRemoved","adjustPosition","maskInserted","maskTokenCreator","literal","unmaskTokenCreator","rawTokenCreator","validationTokenCreator","tokenize","$o","hostDisabledClass","rules","handleDragDrop","pasteHandler","inputHandler","patternError","maskedValue","updateInput","extractChanges","updateService","promptPlaceholder","emptyMask","setFocusSelection","createTicks","endTickClasses","tickTitle","dragHandleStart","on","$i","checkClearButton","showErrorsInitial","showSuccessInitial","successIconClasses","errorIconClasses","clearButtonClasses","isSuccessful","ur","yo","us","inputFocus","both","none","auto","Kl","flowCol","flowRow","resizableClass","Wl","preventOpen","isOpenPrevented","Rc","sc","ha","qc","Os","basic","colors","office","apex","austin","clarity","slipstream","metro","flow","hardcover","trek","verve","monochrome","accessible","Sc","rgbaInputValid","toggleFormatView","initDomEvents","opacity","readonlyAttribute","hostTabindex","gradientId","alphaSliderValue","gradientRect","contrastToolVisible","onKeyboardAction","changePosition","handleHueSliderChange","handleInputsValueChange","colorGradientHandleTitle","colorGradientHandleAriaLabel","hueSliderTitle","opacitySliderTitle","clearButtonTitle","moveDragHandle","updateUI","setDragHandleElementPosition","setAlphaSliderBackground","setHostElementAriaLabel","addEventListeners","subscribeChanges","unsubscribeChanges","Di","paletteSettings","gradientSettings","iconStyles","palette","tileSize","handleWrapperClick","handleWrapperFocus","handleWrapperBlur","handleWrapperKeyDown","toggleWithEvents","preventScroll","setColorMatrix","getCellCoordsFor","getColorAt","getNextCell","paletteId","tileLayout","colorRows","handleHostBlur","handleCellFocusOnBlur","setRows","handleCellNavigation","colorPaletteNoColor","focusOnNextTick","passMessage","failMessage","contrastText","zl","formatedRatio","contrastRatioMessage","satisfiesAACondition","satisfiesAAACondition","contrastRatio","Al","Nl","_c","dd","Kc","startClass","endClass","idAttribute","align","errorClass","hasHints","disabledKendoInput","disabledControl","disabledElement","controlElementRefs","validateFormControl","isControlGroup","isRadioControl","updateDescription","findControlElements","generateDescriptionIds","showHintsInitial","setDescription","showHints","descendants","ud","NoCurrency","NoCurrencyDisplay","NoCurrencyRegion","NoDateFieldNames","NoFirstDay","NoGMTInfo","NoLocale","NoValidCurrency","NoWeekData","localeId","formatDate","parseDate","parseNumber","formatNumber","dateFieldName","dateFormatNames","splitDateFormat","numberSymbols","firstDay","weekendRange","normalize","register","notifyChanges","defaultValue","rect","rawBBox","matches","group","pdf","multiPage","_ignoreMargin","pageNum","totalPages","tableLayout","insertBefore","boxSizing","paddingLeft","paddingRight","page","angle","stops","font","arguments","bottom","tl","tr","br","bl","startAngle","endAngle","radiusX","radiusY","moveTo","lineTo","getBoundingClientRect","stroke","Xn","anticlockwise","offset","userSpace","documentElement","matrix","origin","drawMargin","exportElement","cleanup","drawOptions","avoidLinks","forcePageBreak","keepTogether","repeatHeaders","pdfOptions","autoPrint","author","creator","imgDPI","keywords","producer","saveOptions","forceProxy","proxyData","proxyTarget","proxyURL","drawElement","exportGroup","saveDataUri","anchorRect","anchorSize","viewPortSize","anchorAlignPoint","elementAlignPoint","flipped","fitted","flip","fit","addOffset","addScroll","boundingOffset","getFontStyles","getWindow","hasOffsetParent","offsetAtPoint","removeScroll","restrictToView","scrollPosition","scrollableParents","stackingElementOffset","stackingElementScroll","getRelativeContextElement","useRelativePosition","windowViewPort","zIndex","zoomLevel","isZoomed","alignElement","elementAlign","elementRect","absoluteRect","elementScrollPosition","relativeRect","positionElement","collisions","viewPort","isUnsubscribed","forElement","transformOrigin","play","playStates","getDirection","stopPlayer","onAnimationStart","onAnimationEnd","currentOffset","setZIndex","reposition","currentLocation","onScroll","copyFontStyles","updateFixedClass","setContainerStyle","unsubscribeReposition","anchorViewportLeave","rootViewContainer","rootViewContainerNode","popup","popupAnchorViewportLeave","popupClose","popupElement","popupOpen","popupPositionChange","appendPopup","getComponentRootNode","getComponentFactory","projectComponentInputs","contentFrom","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","ios","flat","edge","webkit","safari","opera","msie","mozilla","omini","omobile","firefox","mobilesafari","chrome","toHex","resolveColor","normalizeByte","padDigit","brightness","percBrightness","isDark","aliceblue","aquamarine","bisque","blue","burlywood","chocolate","cornsilk","darkblue","darkgray","darkkhaki","darkorange","darksalmon","darkslategray","darkviolet","dimgray","firebrick","fuchsia","gold","grey","honeydew","indigo","lavender","lemonchiffon","lightcyan","lightgrey","lightsalmon","lightslategray","lightyellow","linen","mediumaquamarine","mediumpurple","mediumspringgreen","midnightblue","moccasin","oldlace","orange","palegoldenrod","palevioletred","peru","powderblue","rosybrown","salmon","seashell","skyblue","slategrey","steelblue","thistle","violet","whitesmoke","toHSV","toRGB","toBytes","toCss","toCssRgba","toDisplay","equals","toHSL","browser","observers","addObserver","removeObserver","optionsChange","geometryChange","suspend","resume","_observerField","_set","_clear","_wrap","setCenter","getCenter","pointAt","curvePoints","rotate","bbox","_arcInterval","_intervalCurvePoints","p1","cp1","cp2","p2","_derivativeAt","containsPoint","center","_isOnPath","x1","xRotation","y1","x2","y2","rx","ry","largeArc","swipe","rotation","_pointAt","multiplyCopy","invert","translateWith","scaleCopy","transformCopy","distanceTo","ZERO","setOrigin","getOrigin","setCornerRadius","getCornerRadius","setSize","getSize","topLeft","bottomRight","topRight","bottomLeft","expandCopy","addConstant","negate","multiply","multiplyConstant","nthRoot","isReal","bboxTo","_lineBoundingBox","_curveBoundingBox","_curveExtremesFor","_curveExtremes","_intersectionsTo","_isOnCurveTo","_isOnLineTo","_isOnPathTo","_optionsChange","_change","nodeType","_createStops","addStop","removeStop","radius","fallbackFill","traverse","controlOut","controlIn","c","isRelative","previousCommand","decode","encode","readByte","writeByte","readShort","writeShort","readLong","writeLong","readFixed","writeFixed","readShort_","writeShort_","readLong_","writeLong_","readFixed_","writeFixed_","readString","writeString","times","saveExcursion","writeBase64","base64","checksum","readTable","raw","offsetOf","lengthOf","advance","lsb","forGlyph","compound","glyphFor","offsets","platformID","platformSpecificID","languageID","nameID","encodeText","glyphIds","glyphsFor","cmap","glyf","loca","hmtx","hhea","maxp","head","cidToGidMap","widthOfGlyph","makeSubset","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","executive","folio","legal","letter","tabloid","jpegQuality","keepPNG","Names","JS","Producer","Author","Keywords","Creator","CreationDate","Contents","Parent","MediaBox","Root","Info","getFont","getImage","getOpacityGS","_resourceName","dict","in","beforeRender","escape","setPages","Kids","Subtype","Height","BitsPerComponent","Filter","ColorSpace","SMask","BaseFont","getTextWidth","Length1","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","CIDToGIDMap","_makeCidToGidMap","FunctionType","Domain","C0","C1","hasAlpha","opacities","Functions","Bounds","Encode","ShadingType","Coords","Function","Extend","AIS","CA","FormType","BBox","CS","Resources","ExtGState","Shading","s0","shading","Font","XObject","Pattern","_out","beginText","endText","_requireTextMode","_requireFont","setFont","setTextLeading","setTextRenderingMode","showText","showTextNL","addLink","Rect","Border","URI","setStrokeColor","setOpacity","setStrokeOpacity","setFillColor","setFillOpacity","gradient","setDashPattern","setLineWidth","setLineCap","setLineJoin","setMitterLimit","restore","bezier","bezier1","bezier2","ellipse","circle","nop","clip","clipStroke","closeStroke","fillStroke","drawImage","_context","_toPage","fontSize","italic","variant","bold","lineHeight","fontFamily","serif","monospace","zapfdingbats","fillAndStroke","invisible","fillAndClip","strokeAndClip","fillStrokeClip","dash","dashDot","dot","longDash","longDashDot","longDashDotDot","solid","butt","square","miter","bevel","root","Path","MultiPath","Circle","Arc","Text","addMargin","_bbox","_containsPoint","_initOptions","parentTransform","currentTransform","clippedBBox","_hasFill","_hasStroke","_clippedBBox","shift","_splice","_add","_remove","_setObserver","_clearObserver","childrenChange","items","append","insertAt","removeAt","_reparent","src","curveTo","arc","arcTo","_addArcSegments","put","baselineMarkerSize","_baselineMarker","arraySet","flattenChunks","ni","Buf8","Buf16","Buf32","_a","nr","oo","Ml","wsize","bits","wrap","chunkSize","windowBits","onData","onEnd","pending","jo","method","memLevel","strategy","pageX","pageY","clientY","isTouch","altKey","which","bindTo","_bindToCurrent","_unbindFromCurrent","_usePointers","formatMessage","NoSupplementalCurrency","identity","_number","_cldrVersion","territory","numbers","symbols","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","infinity","nan","timeSeparator","patterns","groupSize","scientific","percent","currency","currencies","BGN","displayName","symbol","EUR","USD","localeCurrency","accounting","calendar","gmtFormat","gmtZeroFormat","m","Y","dateTimeFormats","full","long","medium","short","availableFormats","Bh","Bhm","Bhms","EBhm","EBhms","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yQQQ","yQQQQ","timeFormats","dateFormats","abbreviated","narrow","wide","quarters","dayPeriods","midnight","am","noon","morning1","afternoon1","evening1","night1","eras","dateFields","era","quarter","week","dayperiod","second","millisecond","supplemental","likelySubtags","currencyData","region","US","_from","weekData","weekendStart","weekendEnd","eraAbbr","eraNames","eraNarrow","minimumFractionDigits","fractions","maximumFractionDigits","number","negative","negativeZero","numeric","specifier","getSpecifier","Q","nameType","standAlone","lower","k","shortHours","optionalMinutes","localizedName","zZeroOffset","idx","valueIdx","hours","minutes","seconds","milliseconds","noSeparator","zLiteral","minLength","dayStart","dayEnd","precision","isPast","isFuture","isWeekend","weekStartsOn","date1","date2","excluded","startOfWeek","startOfWeekDate","totalDaysInView","span","startsBeforeWeek","endsAfterWeek","hourSegments","weekendDays","viewStart","viewEnd","segmentHeight","eventWidth","segments","periodStart","periodEnd","startsBeforeDay","endsAfterDay","vl","allDayEvents","period","isStart","allowUpdate","screenX","screenY","metaKey","button","relatedTarget","dispatch","down","maxSpeed","point","scrolling","_tryPredicate","_complete","activeLongPressDrag","longPressConfig","timerBegin","currentDrag$","transformX","transformY","scrollLeft","cancelDrag$","autoScroll","cursor","willChange","pointerEvents","dragCancelled","dropData","checkEventListeners","onMouseUp","onTouchStart","passive","onTouchEnd","onMouseEnter","onMouseLeave","canDrag","setCursor","unsubscribeEventListeners","setElementStyles","getScrollElement","getScrollPosition","shouldBeginDrag","delta","timeLongPress","enableScroll","disableScroll","dragAxis","dragPointerDown","dragSnapGrid","ghostDragEnabled","showOriginalElementWhileDragging","validateDrag","dragCursor","dragActiveClass","ghostElementAppendTo","ghostElementTemplate","touchStartLongPress","ghostElementCreated","updateCache","dragOverClass","dragEnter","validateDrop","dragLeave","dragOver","leftOrRight","topOrBottom","edges","elm","allowedEdges","cursorPrecision","rectangle","initialRectangle","newRectangle","startingRect","currentRect","setElementClass","resizeEdges","resizeStart","validateResize","enableGhostResize","resizeSnapGrid","resizeCursors","resizeCursorPrecision","ghostElementPositioning","allowNegativeResizes","mouseMoveThrottleMS","resizing","resizeEnd","onMousedown","onMouseup","resizable","onMousemove","listenOnTheHost","resizableContainer","contents","toggleDayHighlight","eventDropped","allDayEventResizeStarted","allDayEventResizeEnded","dragStarted","allDayEventDragMove","timeEventResizing","timeEventResizeEnded","dragMove","hourSegmentClicked","dayHeaderClicked","weekEvent","segment","resizeEnded","dragEnded","dayEvent","customTemplate","placement","onMouseOver","onMouseOut","positionTooltip","appendToBody","excludeDays","daysInWeek","monthViewColumnHeader","monthViewDayNumber","monthViewTitle","weekViewColumnHeader","weekViewColumnSubHeader","weekViewTitle","weekViewHour","dayViewHour","dayViewTitle","monthTooltip","weekTooltip","dayTooltip","getMonthView","rowOffsets","totalDaysVisibleInWeek","getWeekViewHeader","getWeekView","allDayEventRows","absolutePositionedEvents","eventsInPeriod","hourColumns","getDayView","getDayViewHourGrid","newStart","newEnd","refreshHeader","refreshBody","checkActiveDayIsOpen","refreshAll","emitBeforeViewRender","beforeViewRender","activeDayIsOpen","tooltipPlacement","tooltipTemplate","tooltipAppendToBody","headerTemplate","cellTemplate","openDayEventsTemplate","eventTitleTemplate","eventActionsTemplate","eventTimesChanged","highlightDay","openDay","unhighlightDay","resizeStarted","timeEventResizeStarted","originalOffset","originalSpan","allDayEventResizing","getDayColumnWidth","snapDraggedEvents","dragAlreadyMoved","getDragMovedEventTimes","restoreOriginalEvents","getTimeEventResizedDates","eventTemplate","hourSegmentHeight","dayStartHour","dayStartMinute","dayEndHour","dayEndMinute","hourSegmentTemplate","eventSnapSize","allDayEventsLabelTemplate","tooltipDisabled","isTimeLabel","originalTop","originalHeight","refreshHourGrid","refreshView","hourGrid","ds","de","placeholderChar","keepCharPositions","inputElement","textMaskConfig","conformToMask","ApplicationInsights","downloadAndSetup","_defineLazyMethods","enumerable","configurable","autoBom","wn","define","iterator","TypeError","defineProperty","writable","propertyIsEnumerable","trimLeft","trimRight","isInteger","self","global","_","p","f","w","O","et","publish","getTopics","orientation","unit","compress","compressPdf","userUnit","putOnlyUsedFonts","__private__","PubSub","getPdfVersion","setPdfVersion","ledger","getPageFormats","getPageFormat","f2","f3","getFileId","setFileId","convertDateToPDFDate","convertPDFDateToDate","setCreationDate","getCreationDate","padd2","setCustomOutputDestination","resetCustomOutputDestination","out","getArrayBuffer","ArrayBuffer","getStandardFonts","getFontSize","R2L","setR2L","getR2L","setZoomMode","getZoomMode","setPageMode","getPageMode","setLayoutMode","getLayoutMode","setDisplayMode","getDocumentProperty","getDocumentProperties","setDocumentProperties","setProperties","setDocumentProperty","hotfixes","newObject","newObjectDeferred","newAdditionalObject","objId","decodeColorString","encodeColorString","ch1","ch2","ch3","ch4","pdfColorType","RGBColor","getFilters","putStream","alreadyAppliedFilters","addLength1","additionalKeyValues","API","processDataByFilters","reverseChain","putPage","mediaBox","contentsObjId","topRightX","bottomLeftX","topRightY","bottomLeftY","rootDictionaryObjId","resourceDictionaryObjId","cropBox","bleedBox","trimBox","artBox","pageContext","pageNumber","putPages","isAlreadyPutted","objectNumber","postScriptName","encoding","fontName","fontStyle","isStandardFont","metadata","pdfEscape","sourceEncoding","outputEncoding","autoencode","codePages","noBOM","beginPage","Rt","ne","getNumberOfPages","disableWarning","noFallback","normal","putInfo","putCatalog","putTrailer","putHeader","putXRef","buildDocument","getBlob","filename","foo","stack","bar","getPageInfoByObjId","getCurrentPageInfo","setPage","insertPage","movePage","deletePage","flags","lineHeightFactor","TabLen","scaleFactor","baseline","splitTextToSize","mutex","activeFontKey","fonts","activeFontSize","PI","cos","sin","charSpace","renderingMode","usedRenderingMode","getStringUnitWidth","isHex","Kt","lstext","clip_fixed","isValidStyle","getStyle","line","lines","triangle","roundedRect","SQRT2","setFontStyle","setFontType","getFontList","addFont","lineWidth","setLineDash","getLineHeight","setLineHeightFactor","getLineHeightFactor","getHorizontalCoordinate","getVerticalCoordinate","getHorizontalCoordinateString","getVerticalCoordinateString","strokeColor","getStrokeColor","getDrawColor","setDrawColor","fillColor","getFillColor","textColor","Zt","getTextColor","setTextColor","getCharSpace","setCharSpace","CapJoinStyles","but","rounded","projecting","project","ee","setMiterLimit","returnPromise","unload","getCoordinateString","collections","newObjectDeferredBegin","setWidth","setHeight","getPDFVersion","hasHotfix","dictionary","__acroform__","setBit","clearBit","getBit","getBitForPdf","setBitForPdf","clearBitForPdf","calculateCoordinates","lowerLeft_X","lowerLeft_Y","upperRight_X","upperRight_Y","appearanceStreamContent","DV","maxFontSize","multiline","textAlign","xForms","acroFormDictionaryRoot","printedOut","isInitialized","acroformPlugin","hasAnnotation","annotations","_eventID","DA","createDefaultAppearanceStream","getKeyValueListForStream","hasAppearanceStream","FieldNum","arrayToPdfArray","getOwnPropertyDescriptor","writeable","Ff","FT","getOptions","setOptions","addOption","removeOption","combo","pushButton","radio","optionName","caption","appearanceState","_AppearanceType","RadioButton","createAppearanceStream","setAppearance","getCA","createOption","CheckBox","YesNormal","YesPushDown","Off","OffPushDown","Bezier_C","Cross","calculateCross","x4","x3","addButton","addTextField","addChoiceField","ChoiceField","ListBox","ComboBox","EditBox","Button","PushButton","PasswordField","AcroForm","Appearance","AcroFormChoiceField","AcroFormListBox","AcroFormComboBox","AcroFormEditBox","AcroFormButton","AcroFormPushButton","AcroFormRadioButton","AcroFormCheckBox","AcroFormTextField","AcroFormPasswordField","AcroFormAppearance","tmp","PNG","TIFF","JPEG","JPEG2000","GIF87a","GIF89a","BMP","getImageFileTypeByImageData","isArrayBufferView","arrayBufferToBinaryString","cs","color_spaces","INDEXED","pal","DEVICE_CMYK","bpc","dp","trns","smask","hasAttribute","loadFile","toDataURL","clientWidth","getContext","alias","DEVICE_RGB","DEVICE_GRAY","CAL_GREY","CAL_RGB","LAB","ICC_BASED","PATTERN","SEPARATION","DEVICE_N","DCT_DECODE","FLATE_DECODE","LZW_DECODE","JPX_DECODE","JBIG2_DECODE","ASCII85_DECODE","ASCII_HEX_DECODE","RUN_LENGTH_DECODE","CCITT_FAX_DECODE","image_compression","NONE","FAST","MEDIUM","SLOW","sHashCode","isString","validateStringAsBase64","extractInfoFromBase64DataURI","extractImageFromDataUrl","mimeType","charset","supportsArrayBuffer","isArrayBuffer","Uint32Array","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","binaryStringToUint8Array","arrayBufferToBase64","byteLength","createImageInfo","imageData","compression","convertStringToImageData","subarray","processJPEG","numcomponents","processJPG","getImageProperties","colorSpace","compressionMode","bitsPerComponent","bounds","_nameMap","magFactor","zoom","createAnnotation","link","textWithLink","__arabicParser__","isInArabicSubstitutionA","isArabicLetter","isArabicEndLetter","isArabicAlfLetter","arabicLetterHasIsolatedForm","arabicLetterHasFinalForm","arabicLetterHasInitialForm","arabicLetterHasMedialForm","resolveLigatures","isArabicDiacritic","getCorrectForm","processArabic","addJS","pageWrapXEnabled","pageWrapX","pageWrapYEnabled","pageWrapY","context2d","_canvas","canvas","setHeaderFunction","getTextDimensions","table_font_size","cellAddPage","margins","cellInitialize","cell","printHeaders","tableHeaderRow","printHeaderRow","printingHeaderRow","arrayMax","lnMod","calculateLineHeight","setTableHeaderRow","lastCellPos","table_x","table_y","isStrokeTransparent","strokeOpacity","strokeStyle","fillStyle","isFillTransparent","fillOpacity","textBaseline","lineJoin","lineCap","globalCompositeOperation","globalAlpha","clip_path","currentPoint","miterLimit","lastPoint","ignoreClearRect","parentNode","ctx","arial","verdana","helvetica","fixed","terminal","courier","cursive","fantasy","beginPath","applyToPoint","closePath","quadraticCurveTo","bezierCurveTo","isIdentity","pow","counterclockwise","fillRect","strokeRect","clearRect","ctxStack","isCanvasGradient","getColor","fillText","scaleX","strokeText","measureText","setTransform","decompose","shx","sx","sy","skew","applyToRectangle","autoPaging","posX","posY","begin","deltas","createLinearGradient","colorStops","addColorStop","createPattern","createRadialGradient","y3","y4","atan2","shy","tx","ty","predictor","adler32cs","Deflater","overrideMimeType","responseText","loadImageFile","resolve","setProgress","img","progress","val","state","opt","enableLinks","html2canvas","jsPDF","toContainer","toCanvas","toImg","toPdf","thenList","setPageSize","createTextNode","cloneNode","nextSibling","javascriptEnabled","tagName","border","float","onrendered","isHtml2CanvasLoaded","toContext2d","async","allowTaint","imageTimeout","logging","proxy","removeContainer","foreignObjectRendering","useCORS","windowHeight","quality","outputImg","outputPdf","doCallback","setMargin","getPageSize","inner","px","ratio","updateProgress","thenCore","thenExternal","catchExternal","using","worker","outline","createNamedDestinations","makeRef","namesOid","genIds_r","renderRoot","renderItems","objStart","count_r","objEnd","makeString","LOG2E","processPNG","imgData","colorType","pixelBitlength","decodePixels","buffer","transparency","indexed","processGIF89A","decodeAndBlitFrameRGBA","processGIF87A","processBMP","getData","setLanguage","languageSettings","isSubscribed","af","sq","hy","as","ast","az","eu","bs","bg","my","ch","ce","zh","co","nl","fj","fi","fr","fy","fur","gd","gl","gu","iu","ga","ks","kk","km","ky","tlh","ko","la","lv","lb","mk","mo","nv","ng","nb","fa","pl","rm","ro","sz","sg","sa","sd","sr","sk","sb","es","sw","sv","th","tig","tk","uk","hsb","cy","zu","languageCode","getCharWidthsArray","widths","Unicode","fof","kerning","widthOfString","characterToGlyph","getArraySum","textIndent","lineIndent","WinAnsiEncoding","existsFileInVFS","getFileFromVFS","TTFFont","glyIdsUsed","addSvg","styleSheet","cssText","contentWindow","contentDocument","addSVG","addSvgAsImage","canvg","ignoreMouse","ignoreAnimation","ignoreDimensions","ignoreClear","putTotalPages","pdfEscape16","viewerPreferences","HideToolbar","explicitSet","valueSet","pdfVersion","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","viewerpreferences","configuration","addMetadata","toUnicode","subset","PDFObject","stemV","italicAngle","ascender","decender","capHeight","rawData","unitsPerEm","unicode","codeMap","vFS","addFileToVFS","addHTML","rasterizeHTML","dim","useFor","imageCompression","pagesplit","mozImageSmoothingEnabled","webkitImageSmoothingEnabled","msImageSmoothingEnabled","imageSmoothingEnabled","rstz","small","large","defaultView","currentStyle","rows","cells","SCRIPT","STYLE","NOSCRIPT","OBJECT","EMBED","SELECT","setBlockBoundary","setBlockStyle","executeWatchFunctions","margins_doc","ownerDocument","compareDocumentPosition","addText","settings","watchFunctions","outY","crossOrigin","onerror","FOOTER","frames","writeln","elementHandlers","paragraph","ready","splitFragmentsIntoLines","RenderTextFragment","getPdfColor","lastTextColor","renderParagraph","blockstyle","priorblockstyle","priorMarginBottom","bolder","lighter","oblique","justify","fromHTML","html2pdf","_wrapX","_wrapY","_page","setName","_pageBreakAt","pageBreaks","_gotoPage","scrollY","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","webkitURL","toStringTag","byteOffset","File","ActiveXObject","setRequestHeader","lastModified","lastModifiedDate","isView","_buffer","isPrototypeOf","DataView","setPrototypeOf","createDocumentFragment","readyState","LOADING","EMPTY","DONE","onabort","onloadend","onloadstart","onprogress","readAsArrayBuffer","abort","createElementNS","HTMLElement","setImmediate","INIT","msSaveOrOpenBlob","WRITING","onwritestart","onwrite","onwriteend","has_local_palette","palette_offset","data_offset","data_length","transparent_index","interlaced","disposal","numFrames","loopCount","frameInfo","decodeAndBlitFrameBGRA","exports","loop","addFrame","transparent","pos","datav","is_with_alpha","bottom_up","flag","parseHeader","parseBGR","Buffer","Adler32","fromUtf8","fromBuffer","updateUtf8","updateBuffer","__bidiEngine__","EN","AN","hiLevel","doBidiReorder","isInputVisual","isOutputVisual","isInputRtl","isOutputRtl","isSymmetricSwapping","getUint32","reserved","headerSize","getInt32","planes","getUint16","bitPP","rawSize","vr","importantColors","getUint8","red","green","quad","bit1","bit4","bit8","bit15","bit16","bit24","bit32","build_tree","dyn_tree","stat_desc","static_tree","elems","heap_len","heap_max","heap","depth","opt_len","static_len","max_code","pqdownheap","extra_bits","extra_base","max_length","bl_count","good_length","max_lazy","nice_length","max_chain","func","_length_code","base_length","base_dist","d_code","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","static_l_desc","static_d_desc","static_bl_desc","pending_buf","flush_pending","avail_in","read_buf","total_in","total_out","msg","pending_out","deflateInit","dstate","deflateEnd","deflateParams","deflate","deflateSetDictionary","next_out","next_in","avail_out","next_in_index","next_out_index","zip","_jzlib_Deflater","antiquewhite","aqua","azure","beige","black","blanchedalmond","blueviolet","brown","cadetblue","chartreuse","coral","cornflowerblue","crimson","cyan","darkcyan","darkgoldenrod","darkgreen","darkmagenta","darkolivegreen","darkorchid","darkred","darkseagreen","darkslateblue","darkturquoise","deeppink","deepskyblue","dodgerblue","feldspar","floralwhite","forestgreen","gainsboro","ghostwhite","goldenrod","gray","greenyellow","hotpink","indianred","ivory","khaki","lavenderblush","lawngreen","lightblue","lightcoral","lightgoldenrodyellow","lightgreen","lightpink","lightseagreen","lightskyblue","lightslateblue","lightsteelblue","lime","limegreen","magenta","maroon","mediumblue","mediumorchid","mediumseagreen","mediumslateblue","mediumturquoise","mediumvioletred","mintcream","mistyrose","navajowhite","navy","olive","olivedrab","orangered","orchid","palegreen","paleturquoise","papayawhip","peachpuff","pink","plum","purple","royalblue","saddlebrown","sandybrown","seagreen","sienna","silver","slateblue","slategray","snow","springgreen","tan","teal","tomato","turquoise","violetred","wheat","white","yellow","yellowgreen","example","registerTTF","directory","Map","os2","exists","lineGap","xMin","yMin","xMax","yMax","italic_angle","xHeight","familyClass","isSerif","isScript","isFixedPitch","readUInt32","writeUInt32","readInt32","writeInt32","readUInt16","writeUInt16","readInt16","writeInt16","readLongLong","writeLongLong","readInt","writeInt","scalarType","tableCount","searchRange","entrySelector","rangeShift","tables","__super__","file","revision","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","encodingID","isUnicode","old","new","charMap","subtable","maxGlyphID","LN2","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfMetrics","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","firstCharIndex","lastCharIndex","ascent","descent","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","names","numGlyphs","strings","copyright","fontSubfamily","uniqueSubfamily","postscriptName","trademark","manufacturer","designer","vendorUrl","designerUrl","license","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","metrics","leftSideBearings","cache","numberOfContours","glyphIDs","glyphOffsets","unicodes","generateCmap","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","compressionMethod","filterMethod","interlaceMethod","numPlays","xOffset","yOffset","disposeOp","blendOp","grayscale","rgb","hasAlphaChannel","responseType","response","mozResponseArrayBuffer","getBytes","decodePalette","copyToImageData","_decodedPalette","putImageData","decodeFrames","createImageData","renderFrame","_timeout","stopAnimation","_png","bufferLength","ensureBuffer","getByte","readBlock","lookChar","getChar","makeSubStream","Stream","getBits","codeSize","codeBuf","bytes","bytesPos","getCode","generateHuffmanTable","undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_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","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","binding","nodeIsArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","thisArg","array","setter","iteratee","accumulator","predicate","resIndex","baseIndexOf","comparator","initAccum","asciiSize","baseProperty","collection","eachFunc","fromIndex","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","baseSum","NAN","string","trimmedEndIndex","props","arrayMap","has","strSymbols","chrSymbols","deburrLetter","basePropertyOf","escapeHtmlChar","chr","arg","hasUnicode","lastIndex","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","uid","defaults","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","overArg","getPrototypeOf","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","entries","entry","__data__","MapCache","ListCache","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","baseTimes","isIndex","baseRandom","shuffleSelf","baseClamp","eq","baseAssignValue","objValue","baseEach","copyObject","paths","upper","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","baseAssign","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","cloneSymbol","initCloneByTag","Stack","stacked","subValue","baseClone","getAllKeysIn","getAllKeys","arrayEach","assignValue","wait","arrayIncludes","isCommon","valuesLength","baseUnary","arrayIncludesWith","cacheHas","SetCache","outer","computed","valuesIndex","lodash","templateSettings","evaluate","variable","baseLodash","Hash","assocIndexOf","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","isSymbol","isStrict","isFlattenable","_e","baseFlatten","arrayPush","baseFor","createBaseFor","baseForRight","arrayFilter","isFunction","castPath","toKey","keysFunc","symbolsFunc","isOwn","unmasked","getRawTag","objectToString","arrays","othLength","othIndex","caches","Infinity","seen","baseGetTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","mapToArray","isPartial","setToArray","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsEqual","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","baseMatchesProperty","baseMatches","property","isPrototype","nativeKeysIn","isProto","isArrayLike","getMatchData","matchesStrictComparable","baseIsMatch","isKey","isStrictComparable","hasIn","COMPARE_UNORDERED_FLAG","srcIndex","mergeFunc","safeGet","assignMergeValue","newValue","isTyped","ns","Ac","gs","Rs","op","rp","toPlainObject","baseMergeDeep","baseMerge","iteratees","orders","baseGet","getIteratee","comparer","baseSortBy","baseMap","criteria","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSet","baseIndexOfWith","indexes","previous","baseUnset","setToString","overRest","arraySample","nested","baseSetData","Tl","baseSetToString","constant","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","kr","MAX_ARRAY_INDEX","baseToString","createSet","seenIndex","updater","isDrop","baseSlice","arrayReduce","baseUniq","baseDifference","assignFunc","valsLength","isArrayLikeObject","stringToPath","castRest","baseRest","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","isNew","initializer","arrayAggregator","baseAggregator","assigner","sources","isIterateeCall","iterable","methodName","stringToArray","trailing","castSlice","words","deburr","thisBinding","findIndexFunc","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","isLaziable","plant","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","WRAP_CURRY_FLAG","isFlip","createCtor","getHolder","holdersCount","countHolders","composeArgs","composeArgsRight","newHolders","replaceHolders","createRecurry","createHybrid","toIteratee","baseInverter","baseToNumber","arrayFunc","chars","charsLength","baseRepeat","stringSize","toFinite","baseRange","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","toInteger","pair","noop","setToPairs","baseToPairs","srcBitmask","newBitmask","WRAP_BIND_FLAG","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsMerge","isPlainObject","arrLength","arrStacked","arrValue","arraySome","baseGetAllKeys","otherFunc","baseIteratee","isKeyable","baseIsNative","stubArray","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","intersection","mapped","castArrayLikeObject","baseIntersection","intersectionBy","intersectionWith","pull","pullAll","basePullAll","pullAt","baseAt","basePullAt","union","unionBy","unionWith","unzip","without","xor","baseXor","xorBy","xorWith","zipWith","unzipWith","interceptor","wrapperAt","countBy","createAggregator","createFind","findLast","findLastIndex","arrayEachRight","groupBy","invokeMap","baseInvoke","keyBy","partition","baseOrderBy","createWrap","bindKey","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","time","timerExpired","invokeFunc","timeSinceLastCall","shouldInvoke","trailingEdge","timeWaiting","remainingWait","isInvoking","leadingEdge","debounced","defer","baseDelay","resolver","memoized","Cache","overArgs","transforms","funcsLength","partial","partialRight","rearg","createRelationalOperation","baseGt","gte","baseIsArguments","proxyTag","baseLt","lte","done","iteratorToArray","remainder","baseTrim","isBinary","createAssigner","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","hasPath","baseHasIn","createInverter","invertBy","invoke","arrayLikeKeys","baseKeys","baseKeysIn","merge","omit","CLONE_DEEP_FLAG","customOmitClone","basePickBy","basePick","toPairs","createToPairs","toPairsIn","baseValues","camelCase","createCompounder","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","createCaseFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","isError","bindAll","methodNames","createFlow","flowRight","methodOf","baseFunctions","over","createOver","overEvery","arrayEvery","overSome","basePropertyDeep","rangeRight","createMathOperation","augend","addend","createRound","divide","dividend","divisor","multiplier","multiplicand","minuend","subtrahend","after","before","castArray","chunk","compact","cond","conforms","baseConformsTo","baseConforms","properties","curry","curryRight","debounce","dropRight","dropRightWhile","baseWhile","dropWhile","toLength","baseFill","baseFilter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","WRAP_FLIP_FLAG","fromPairs","functionsIn","initial","mapKeys","mapValues","matchesProperty","mixin","nthArg","baseNth","omitBy","pickBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","rest","sampleSize","arraySampleSize","baseSampleSize","setWith","shuffle","arrayShuffle","baseShuffle","sortedUniq","baseSortedUniq","sortedUniqBy","limit","spread","tail","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","Ec","unary","uniq","uniqBy","uniqWith","unset","baseUpdate","castFunction","updateWith","valuesIn","zipObject","baseZipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","CLONE_SYMBOLS_FLAG","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","baseEvery","findKey","baseFindKey","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","baseHas","inRange","baseInRange","isBoolean","isElement","isEqualWith","isMatch","isMatchWith","isNumber","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","weakSetTag","strictLastIndexOf","baseExtremum","maxBy","mean","baseMean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","createPadding","padEnd","radix","floating","temp","baseReduce","reduceRight","arrayReduceRight","repeat","runInContext","sample","baseSample","baseSome","sortedIndex","baseSortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","customDefaultsAssignIn","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","escapeStringChar","toLower","toSafeInteger","toUpper","charsStartIndex","charsEndIndex","trimEnd","trimStart","truncate","omission","uniqueId","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","baseWrapperValue","iterIndex","commit","wrapped","toJSON","defineLocale","meridiemParse","isPM","meridiem","longDateFormat","LT","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","hh","MM","yy","dayOfMonthOrdinalParse","ordinal","dow","doy","weekdaysParseExact","postformat","preparse","standalone","isFormat","ww","meridiemHour","monthsShortRegex","monthsParseExact","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","monthsParse","longMonthsParse","shortMonthsParse","ll","lll","llll","monthsNominativeEl","monthsGenitiveEl","calendarEl","since","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","correctGrammaticalCase","nominative","accusative","genitive","Xe","_i","va","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","Zr","qo","Ks","ol","dayOfYear","parentLocale","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","Bl","GG","humanize","isUTC","ld","Vc","xd","Cs","_u","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","onColorChange","onDragStart","onDragEnd","onAcceptColor","onAlphaInput","onCyanInput","onMagentaInput","onYellowInput","onBlackInput","onHueInput","onSaturationInput","onLightnessInput","onRedInput","onGreenInput","onBlueInput","onHexInput","onValueInput","onFormatToggle","onRemovePresetColor","setColorFromString","onCancelColor","HEX","RGBA","HSLA","CMYK","rg","inputChange","rgX","rgY","slider","mouseDown","touchStart","dialogElement","hueSlider","alphaSlider","handleEsc","hostBindings","colorPicker","cpWidth","cpHeight","cpToggle","cpDisabled","cpIgnoredElements","cpFallbackColor","cpColorMode","cpCmykEnabled","cpOutputFormat","cpAlphaChannel","cpDisableInput","cpDialogDisplay","cpSaveClickOutside","cpCloseClickOutside","cpUseRootViewContainer","cpPosition","cpPositionOffset","cpPositionRelativeToArrow","cpOKButton","cpOKButtonText","cpOKButtonClass","cpCancelButton","cpCancelButtonText","cpCancelButtonClass","cpPresetLabel","cpPresetColors","cpPresetColorsClass","cpMaxPresetColorsLength","cpPresetEmptyMessage","cpPresetEmptyMessageClass","cpAddColorButton","cpAddColorButtonText","cpAddColorButtonClass","cpRemoveColorButtonClass","cpInputChange","cpToggleChange","cpSliderChange","cpSliderDragEnd","cpSliderDragStart","colorPickerOpen","colorPickerClose","colorPickerCancel","colorPickerSelect","colorPickerChange","cpCmykColorChange","cpPresetColorsChange","sortArray","transformObject","multiExpressionTransform","toolbar","script","indent","getQuill","implementation","editor","oldRange","oldDelta","debug","scrollingContainer","theme","addClasses","removeClasses","given","onEditorCreated","customToolbarPosition","customOptions","customModules","trackChanges","preserveWhitespace","trimOnValidation","linkPlaceholder","compareValues","filterNull","onEditorChanged","onContentChanged","valueGetter","valueSetter","gzip","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","Degrees","cmd","xScale","yScale","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","Executive","Folio","Legal","Letter","Tabloid","xSkew","ySkew","borderColor","thickness","embed","forContext","ref","copyBytesInto","Encrypt","Encoding","fixedPitch","symbolic","DescendantFonts","ToUnicode","encodeStream","Predictor","Colors","DecodeParms","Decode","earlyChange","codeLength","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","endobj","xref","trailer","startxref","true","false","null","streamEOF1","streamEOF2","streamEOF3","streamEOF4","endstream","EOF1endstream","EOF2endstream","EOF3endstream","firstObjectNumber","inObjectStream","eval","default","Container","Format","Leaf","Embed","Scroll","Block","Inline","Attributor","Attribute","Style","Store","retain","emitter","whitelist","classList","clipboard","keyboard","history","parchment","node","EDITOR_CHANGE","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SCROLL_UPDATE","SELECTION_CHANGE","TEXT_CHANGE","SILENT","USER","native","compose","handler","suffix","shortKey","BACKSPACE","TAB","ENTER","ESCAPE","LEFT","UP","RIGHT","DOWN","DELETE","bindings","underline","outdent","startNode","startOffset","endNode","endOffset","blot","blockquote","clean","formula","ordered","bullet","sub","strike","video","undo","redo","maxStack","userOnly","handlers","characterData","characterDataOldValue","childList","subtree","DOMTokenList","shim","supported","Node","blotName","matchers","matchVisual","throwOnError","errorColor","highlight","_subscribe","NEXT","do","accept","toObservable","lift","_trySubscribe","toPromise","execute","requestAsyncId","notification","scheduleMessage","_error","nextInfiniteTimeWindow","nextTimeWindow","_getNow","_trimBufferThenGetEvents","destination","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","useDeprecatedSynchronousErrorHandling","__tryOrUnsub","__tryOrSetError","_unsubscribe","notifyNext","notifyError","notifyComplete","getSubject","connect","refCount","_refCount","_subject","_connection","_isComplete","_tryResultSelector","subscriber","durationSelector","clearThrottle","debouncedNext","lastValue","clearDebounce","_schedule","scheduleNotification","keySelector","_tryNext","_innerSub","connectable","connection","seed","selector","bufferSize","windowTime","scheduler","innerSubscription","nextOrComplete","recycleAsyncId","_execute","cancelAnimationFrame","clearImmediate","conformedValue","someCharsRejected","maskWithoutCaretTraps","previousConformedValue","currentCaretPosition","trys","_onFinish","onStart","onDone","onDestroy","hasStarted","triggerMicrotask","_onStart","pause","restart","finish","setPosition","getPosition","triggerCallback","_onDestroy","beforeDestroy","attr","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","nextId","_messageRegistry","_messagesContainer","_id","describe","hostElement","_canBeDescribed","getKey","setMessageId","messageElement","referenceCount","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","_deleteMessageElement","describedElements","_removeCdkDescribedByReferenceIds","removeAttribute","_createMessagesContainer","_b","containerClassName","serverContainers","messagesContainer","originalReferenceIds","getAriaReferenceIds","existingId","ID_DELIMITER","addAriaReferencedId","filteredIds","removeAriaReferencedId","referenceIds","messageId","trimmedMessage","ELEMENT_NODE","AriaDescriber","_items","_activeItemIndex","_activeItem","_letterKeyStream","_typeaheadSubscription","Subscription","_vertical","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","_pressedLetters","tabOut","QueryList","newItems","newIndex","itemArray","skipPredicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","_horizontal","withAllowedModifierKeys","withTypeAhead","debounceInterval","_getItemsArray","getLabel","setActiveItem","withHomeAndEnd","previousActiveItem","updateActiveItem","isModifierAllowed","modifiers","modifier","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","hasModifierKey","toLocaleUpperCase","NINE","activeItemIndex","activeItem","isTyping","_setActiveItemByIndex","_setActiveItemByDelta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ListKeyManager","setInactiveStyles","setActiveStyles","_origin","setFocusOrigin","getClientRects","hasGeometry","isTabbable","frameElement","getFrameElement","getTabIndexValue","tabIndexValue","WEBKIT","IOS","inputType","isPotentiallyTabbableIOS","FIREFOX","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","ignoreVisibility","InteractivityChecker","_element","_checker","_ngZone","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","_startAnchor","_endAnchor","_toggleAnchorTabIndex","startAnchor","endAnchor","runOutsideAngular","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","focusableChild","tabbableChild","toggleAnchors","isStable","onStable","deferCaptureElements","FocusTrap","FocusTrapFactory","_focusTrapFactory","_previouslyFocusedElement","focusTrap","coerceBooleanProperty","autoCapture","_autoCapture","_captureFocus","autoCaptureChange","firstChange","_getFocusedElementPierceShadowDom","CdkTrapFocus","_focusTrapManager","_inertStrategy","deregister","_enable","preventFocus","_disable","allowFocus","FOCUS_TRAP_INERT_STRATEGY","_listener","_trapFocus","focusTrapRoot","closest","activeElement","_focusTrapStack","FocusTrapManager","EventListenerFocusTrapInertStrategy","configObject","ConfigurableFocusTrap","touch","touches","changedTouches","ConfigurableFocusTrapFactory","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","SHIFT","modalityEventListenerOptions","normalizePassiveListenerOptions","capture","ngZone","_mostRecentTarget","_modality","BehaviorSubject","_lastTouchMs","_onKeydown","_getEventTarget","_onMousedown","isFakeMousedownFromScreenReader","_onTouchstart","isFakeTouchstartFromScreenReader","modalityDetected","modalityChanged","distinctUntilChanged","mostRecentModality","InputModalityDetector","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_DEFAULT_OPTIONS","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","defaultOptions","politeness","_previousTimeout","_currentPromise","_currentResolve","elementClass","previousElements","liveEl","LiveAnnouncer","_liveAnnouncer","_contentObserver","_politeness","_subscription","elementText","_previousAnnouncedText","CdkAriaLive","i1$1","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","_detectionMode","detectionMode","monitor","coerceElement","of","rootNode","_getShadowRoot","_getDocument","cachedInfo","info","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","_getClosestElementsInfo","currentElement","_originChanged","_setOrigin","_info","_getWindow","doc","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","isFromInteraction","_originTimeoutId","_emitOrigin","rootNodeFocusListeners","takeUntil","modality","FocusMonitor","_focusMonitor","cdkFocusChange","EventEmitter","_monitorSubscription","CdkMonitorFocus","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","getHighContrastMode","testElement","documentWindow","computedStyle","computedColor","_applyBodyHighContrastModeCssClasses","_hasCheckedHighContrastMode","bodyClasses","HighContrastModeDetector","highContrastModeDetector","A11yModule","ObserversModule","DIR_DOCUMENT","inject","RTL_LOCALE_PATTERN","bodyDir","htmlDir","_resolveDirectionality","Directionality","_dir","_isInitialized","_rawDir","Dir","BidiModule","isObservable","disconnect","applyChanges","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","insertContext","detach","viewCacheSize","_viewCache","viewArgsFactory","_insertView","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","viewArgs","detachedView","_maybeCacheView","_multiple","initiallySelectedValues","_emitChanges","_selection","_deselectedToEmit","_selectedToEmit","_markSelected","_verifyValueAssignment","_emitChangeEvent","deselect","_unmarkSelected","_unmarkAll","hasValue","isMultipleSelection","_listeners","listener","listen","registered","UniqueSelectionDispatcher","_VIEW_REPEATER_STRATEGY","dest","importantProperties","removeProperty","enable","userSelect","extendStyles","initialTransform","part","clientRect","threshold","pointerX","pointerY","xThreshold","yThreshold","positions","getViewportScrollPosition","getMutableClientRect","handleScroll","cachedPosition","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","adjustClientRect","scrollX","descendantsWithId","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","passiveEventListenerOptions","activeEventListenerOptions","dragImportantProperties","_config","_viewportRuler","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","_moveEvents","_pointerMoveSubscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_handles","_disabledHandles","_direction","dragStartDelay","_disabled","beforeStarted","started","released","ended","entered","exited","moved","_pointerDown","targetHandle","_getTargetHandle","_initializeDragSequence","_rootElement","_pointerMove","pointerPosition","_getPointerPositionOnPage","_pickupPositionOnPage","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","_dropContainer","_endDragSequence","isReceiving","_startDragSequence","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","activeTransform","_applyRootElementTransform","distance","_getDragDistance","_pointerDirectionDelta","_pointerUp","_nativeDragStart","withRootElement","withParent","parentDragRef","_parentPositions","ParentPositionTracker","registerDragItem","_toggleNativeDragInteractions","toggleNativeDragInteractions","getPlaceholderElement","_placeholder","getRootElement","getVisibleElement","withHandles","handles","disabledHandles","withPreviewTemplate","_previewTemplate","withPlaceholderTemplate","_placeholderTemplate","rootElement","_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","createComment","shadowRoot","_createPreviewElement","toggleVisibility","replaceChild","_getPreviewInsertionPoint","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","isSyntheticEvent","isFakeEvent","draggable","rootStyles","pointerMove","pointerUp","scrolled","scrollEvent","_updateOnScroll","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","_previewRect","isPointerOverContainer","_isOverContainer","rawX","rawY","newContainer","_getSiblingContainerFromPosition","exit","enter","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","previewConfig","previewClass","preview","rootRect","viewRef","viewContainer","getRootNode","matchElementSize","getTransform","deepCloneNode","placeholderRect","transitionedProperties","parseCssPropertyValue","propertyIndex","rawDurations","rawDelays","parseCssTimeUnitsToMs","getTransformTransitionDurationInMs","propertyName","timeout","placeholderConfig","placeholderTemplate","handleElement","referenceRect","targetTouches","_getViewportScrollPosition","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","inverse","dropContainerLock","lockAxis","constrainPosition","pickupX","pickupY","boundaryRect","previewWidth","previewHeight","_getPreviewRect","minY","maxY","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","combineTransforms","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","mouse","scrollDifference","_cachedShadowRoot","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","rootNodes","sourceRect","toIndex","currentArray","targetArray","targetIndex","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","sorted","_isDragging","_itemPositions","_previousSwap","overlaps","_draggables","_siblings","_orientation","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","animationFrameScheduler","_scrollNode","scrollStep","scrollBy","withScrollableParents","registerDropContainer","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","_getItemIndexFromPointerPosition","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","_cacheItemPositions","_cacheParentPositions","_reset","withItems","previousItems","draggedItems","_cacheItems","connectedTo","withOrientation","_scrollableElements","currentItem","pointerDelta","_clientRect","isPointerNearClientRect","siblings","isHorizontal","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","moveItemInArray","sibling","isDraggedItem","elementToOffset","isInsideClientRect","scrollNode","verticalScrollDirection","horizontalScrollDirection","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","getElementScrollDirections","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","elementToMeasure","_stopReceiving","immediateSibling","itemPositions","lastItemRect","firstItemRect","_canReceive","_startReceiving","activeSiblings","activeCapturingEventOptions","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","_preventDefaultWhileDragging","_persistentTouchmoveListener","_clearGlobalListeners","streams","Observable","observer","eventOptions","DragDropRegistry","DEFAULT_CONFIG","createDrag","DragRef","createDropList","DropListRef","DragDrop","CDK_DRAG_PARENT","CDK_DROP_LIST_GROUP","CdkDropListGroup","CDK_DRAG_CONFIG","_uniqueIdCounter","CDK_DROP_LIST","dragDrop","_changeDetectorRef","_scrollDispatcher","_group","_destroyed","_unsortedItems","_dropListRef","_assignDefaults","_setupInputSyncSubscription","_handleEvents","CdkDropList","_dropLists","_syncItemsWithRef","getSortedItems","documentPosition","_dragRef","DOCUMENT_POSITION_FOLLOWING","startWith","coerceArray","correspondingDropList","_scrollableParentsResolved","getAncestorScrollContainers","scrollable","getElementRef","coerceNumberProperty","draggingDisabled","listAutoScrollDisabled","listOrientation","i3","CDK_DRAG_HANDLE","parentDrag","_stateChanges","_parentDrag","CdkDragHandle","CDK_DRAG_PLACEHOLDER","CdkDragPlaceholder","CDK_DRAG_PREVIEW","_matchSize","CdkDragPreview","_selfHandle","movedEvent","CdkDrag","_syncInputs","_updateRootElement","_setupHandlesListener","freeDragPosition","rootSelectorChange","rootElementSelector","positionChange","_getBoundaryElement","boundary","childHandleElements","switchMap","handleInstance","dragRef","DragDropModule","CdkScrollableModule","LayoutModule","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","_matchMedia","matchMedia","noopMatchMedia","BLINK","sheet","insertRule","createEmptyStyleRule","media","addListener","removeListener","MediaMatcher","_mediaMatcher","_zone","_queries","_destroySubject","isMatched","mediaQuery","_registerQuery","mql","observables","observable","stateObservable","combineLatest","breakpointStates","breakpoints","BreakpointObserver","Breakpoints","XSmall","Small","Medium","Large","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","HandsetLandscape","TabletLandscape","WebLandscape","MutationObserver","MutationObserverFactory","_mutationObserverFactory","_observedElements","_cleanupObserver","elementOrRef","_observeElement","_unobserveElement","mutations","ContentObserver","_currentSubscription","CdkObserveContent","scrollBehaviorSupported","supportsScrollBehavior","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","coerceCssPixelValue","disable","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","viewport","_detach","_overlayRef","_initialScrollPosition","updatePosition","scrollContainers","containerBounds","outsideAbove","outsideBelow","outsideLeft","outsideRight","scrollContainerRect","clippedAbove","clippedBelow","clippedLeft","clippedRight","scrollThrottle","autoClose","overlayRect","overlayElement","isElementScrolledOutsideView","NoopScrollStrategy","CloseScrollStrategy","block","BlockScrollStrategy","RepositionScrollStrategy","ScrollStrategyOptions","scrollStrategy","backdropClass","disposeOnNavigation","configKeys","connectionPair","scrollableViewProperties","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_keydownEvents","_outsidePointerEvents","_scrollStrategy","_positionStrategy","backdropElement","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","detachBackdrop","detachmentResult","_detachContentWhenStable","_disposeScrollStrategy","backdropClick","detachments","keydownEvents","outsidePointerEvents","getConfig","updatePositionStrategy","updateSize","sizeConfig","setDirection","addPanelClass","removePanelClass","updateScrollStrategy","enablePointer","showingClass","backdropToDetach","_backdropTimeout","cssClasses","isAdd","backdrop","_containerElement","getContainerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","OverlayContainer","boundingBoxClass","cssUnitPattern","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","viewportRect","containerRect","flexibleFits","fallback","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","score","_previousPushAmount","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withViewportMargin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","isLocked","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","_transformOriginSelector","startX","_isRtl","endX","overlayStartX","overlayStartY","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","verticalFit","horizontalFit","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","ConnectedOverlayPositionChange","xOrigin","yOrigin","isRtl","smallestDistanceToViewportEdge","previousHeight","isBoundedByRightViewportEdge","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","documentHeight","horizontalStyleProperty","documentWidth","originBounds","overlayBounds","scrollContainerBounds","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","currentOverflow","axis","cssClass","ElementRef","wrapperClass","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","marginLeft","marginRight","GlobalPositionStrategy","FlexibleConnectedPositionStrategy","OverlayPositionBuilder","_attachedOverlays","BaseOverlayDispatcher","_keydownListener","overlays","_isAttached","OverlayKeyboardDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","_addEventListeners","_cursorOriginalValue","OverlayOutsideClickDispatcher","nextUniqueId","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","OverlayConfig","OverlayRef","_appRef","ApplicationRef","DomPortalOutlet","Overlay","i5","i6","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","_overlay","scrollStrategyFactory","_hasBackdrop","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","overlayKeydown","overlayOutsideClick","_templatePortal","TemplatePortal","_scrollStrategyFactory","_position","_updatePositionStrategy","lockPosition","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","_createPositionStrategy","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","CdkConnectedOverlay","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","OverlayModule","ScrollingModule","platform","_fullScreenEventName","_fullScreenListener","_adjustParentForFullscreenChange","_addFullscreenChangeListener","getFullscreenElement","eventName","_getEventName","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","FullscreenOverlayContainer","hasV8BreakIterator","supportedInputTypes","Intl","v8BreakIterator","_platformId","isPlatformBrowser","EDGE","TRIDENT","CSS","ANDROID","SAFARI","Platform","PLATFORM_ID","PlatformModule","candidateInputTypes","featureTestInput","supportsPassiveEvents","rtlScrollAxisType","shadowDomIsSupported","supportsPassiveEventListeners","scrollToFunction","scrollContainer","containerStyle","contentStyle","createShadowRoot","attachShadow","_supportsShadowDom","ShadowRoot","newActiveElement","composedPath","__karma__","jasmine","jest","Mocha","_attachedHost","setAttachedHost","Portal","attachDomPortal","_attachedPortal","ComponentPortal","attachComponentPortal","attachTemplatePortal","DomPortal","_invokeDisposeFn","setDisposeFn","_disposeFn","BasePortalOutlet","outletElement","_defaultInjector","anchorNode","componentFactory","Injector","attachView","hostView","viewCount","detachView","_getComponentRootNode","CdkPortal","TemplatePortalDirective","attached","_getRootNode","attachedRef","_attachedRef","CdkPortalOutlet","PortalHostDirective","notFoundValue","VIRTUAL_SCROLL_STRATEGY","itemSize","minBufferPx","maxBufferPx","_scrolledIndexChange","scrolledIndexChange","_viewport","_itemSize","_minBufferPx","_maxBufferPx","_updateTotalContentSize","_updateRenderedRange","updateItemAndBufferSize","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","behavior","scrollToOffset","setTotalContentSize","getDataLength","renderedRange","getRenderedRange","newRange","viewportSize","dataLength","scrollOffset","measureScrollOffset","firstVisibleIndex","maxVisibleItems","newVisibleIndex","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","FixedSizeVirtualScrollStrategy","CdkFixedSizeVirtualScroll","fixedSizeDir","forwardRef","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","auditTime","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","scrollingContainers","_scrollableContainsElement","scrollableElement","fromEvent","ScrollDispatcher","scrollDispatcher","_elementScrolled","getRtlScrollAxisType","_applyScrollToOptions","CdkScrollable","i2","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","throttleTime","ViewportRuler","SCROLL_SCHEDULER","asapScheduler","viewportRuler","_detachedSubject","_renderedRangeSubject","_appendOnly","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_dataLength","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","checkViewportSize","_calculateSpacerSize","appendOnly","_measureViewportSize","_markChangeDetectionNeeded","forOf","_forOf","dataStream","newLength","_doChangeDetection","r1","r2","rangesEqual","getOffsetToRenderedContentStart","_renderedContentTransform","measureRenderedContentSize","contentEl","_contentWrapper","measureRangeSize","viewportEl","runAfter","runAfterChangeDetection","CdkVirtualScrollViewport","_template","_differs","_viewRepeater","_dataSourceChanges","pairwise","cur","_changeDataSource","shareReplay","_differ","_needsUpdate","_onRenderedDataChange","cdkVirtualForOf","_cdkVirtualForOf","isDataSource","ArrayDataSource","cdkVirtualForTrackBy","_cdkVirtualForTrackBy","cdkVirtualForTemplate","cdkVirtualForTemplateCacheSize","renderedStartIndex","rangeLen","firstNode","lastNode","getOffset","_renderedItems","_applyChanges","_updateContext","oldDs","newDs","_adjustedPreviousIndex","_getEmbeddedViewArgs","forEachIdentityChange","even","odd","CdkVirtualForOf","_RecycleViewRepeaterStrategy","base","_sticky","_hasStickyChanged","sticky","prevValue","hasStickyChanged","resetStickyChanged","CDK_TABLE","TEXT_COLUMN_OPTIONS","CdkCellDef","CdkHeaderCellDef","CdkFooterCellDef","_CdkColumnDefBase","mixinHasStickyInput","_table","_stickyEnd","_name","_setNameInput","stickyEnd","_updateColumnCssClassName","_columnCssClassName","cssClassFriendlyName","CdkColumnDef","columnDef","BaseCdkCell","CdkHeaderCell","tableRole","CdkFooterCell","CdkCell","tasks","endTasks","_COALESCED_STYLE_SCHEDULER","_currentSchedule","task","_createScheduleIfNeeded","scheduleEnd","_Schedule","_getScheduleObservable","_CoalescedStyleScheduler","CDK_ROW_TEMPLATE","_columnsDiffer","getColumnsDiff","extractCellTemplate","CdkHeaderRowDef","headerCell","CdkFooterRowDef","footerCell","BaseRowDef","_CdkHeaderRowDefBase","_CdkFooterRowDefBase","CdkRowDef","_viewContainer","CdkCellOutlet","mostRecentCellOutlet","CdkHeaderRow","CdkFooterRow","CdkRow","_contentClassName","CdkNoDataRow","STICKY_DIRECTIONS","_isNativeHtmlTable","_stickCellCss","_coalescedStyleScheduler","_isBrowser","_needsPositionStickyOnElement","_positionListener","_cachedCellWidths","_borderCellCss","clearStickyPositioning","stickyDirections","elementsToClear","_removeStickyStyle","updateStickyColumns","stickyStartStates","stickyEndStates","recalculateCellWidths","stickyColumnsUpdated","sizes","stickyEndColumnsUpdated","firstRow","numCells","cellWidths","_getCellWidths","startPositions","_getStickyStartColumnPositions","endPositions","_getStickyEndColumnPositions","lastStickyStart","firstStickyEnd","_addStickyStyle","stickRows","rowsToStick","stickyStates","states","stickyOffsets","stickyCellHeights","elementsToStick","rowIndex","stickyOffset","borderedRowIndex","isBorderedRowIndex","stickyHeaderRowsUpdated","stickyFooterRowsUpdated","updateStickyFooterContainer","tableElement","tfoot","_getCalculatedZIndex","dirValue","isBorderElement","zIndexIncrements","firstRowCells","nextPosition","STICKY_POSITIONING_LISTENER","CdkRecycleRows","DataRowOutlet","HeaderRowOutlet","FooterRowOutlet","NoDataRowOutlet","CDK_TABLE_TEMPLATE","_stickyPositioningListener","_columnDefsByName","_customColumnDefs","_customRowDefs","_customHeaderRowDefs","_customFooterRowDefs","_headerRowDefChanged","_footerRowDefChanged","_stickyColumnStylesNeedReset","_forceRecalculateCellWidths","_cachedRenderRowsMap","stickyCssClass","needsPositionStickyOnElement","_isShowingNoDataRow","_multiTemplateDataRows","_fixedLayout","contentChanged","MAX_VALUE","trackBy","_trackByFn","_dataSource","_switchDataSource","multiTemplateDataRows","_rowOutlet","_forceRenderDataRows","updateStickyColumnStyles","fixedLayout","_setupStickyStyler","_applyNativeTableSections","_dataDiffer","dataRow","dataIndex","_cacheRowDefs","_cacheColumnDefs","_headerRowDefs","_footerRowDefs","_rowDefs","rowDefsChanged","columnsChanged","_renderUpdatedColumns","_forceRenderHeaderRows","_forceRenderFooterRows","_renderChangeSubscription","_observeRenderChanges","_checkStickyStates","_headerRowOutlet","_footerRowOutlet","def","_defaultRowDef","renderRows","_renderRows","_getAllRenderRows","_updateNoDataRow","_renderCellTemplateForItem","rowDef","_updateRowIndexContext","NgZone","addColumnDef","removeColumnDef","addRowDef","removeRowDef","addHeaderRowDef","headerRowDef","removeHeaderRowDef","addFooterRowDef","footerRowDef","removeFooterRowDef","setNoDataRow","noDataRow","_customNoDataRow","updateStickyHeaderRowStyles","headerRows","_getRenderedRows","thead","_stickyStyler","updateStickyFooterRowStyles","footerRows","dataRows","headerRow","_addStickyColumnStyles","footerRow","prevCachedRenderRows","renderRowsForData","_getRenderRowsForData","renderRow","rowDefs","_getRowDefs","cachedRenderRows","columnDefs","_getOwnDefs","_contentColumnDefs","mergeArrayAndSet","_contentHeaderRowDefs","_contentFooterRowDefs","_contentRowDefs","defaultRowDefs","when","columnsDiffReducer","acc","dataColumnsChanged","headerColumnsChanged","footerColumnsChanged","_renderRow","rowOutlet","renderedRows","outlet","_getCellTemplates","renderIndex","columnId","sections","outlets","_noDataRowOutlet","stickyCheckReducer","StickyStyler","_noDataRow","shouldShow","CdkTable","_DisposeViewRepeaterStrategy","_syncColumnDefName","_createDefaultHeaderText","dataAccessor","defaultDataAccessor","defaultHeaderTextTransform","CdkTextColumn","CdkTableModule","_DOM","adapter","historyGo","relativePosition","PlatformLocation","ɵɵinject","BrowserPlatformLocation","useBrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_init","_history","getBaseHrefFromDOM","getDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","port","newPath","pushState","supportsState","forward","getState","slashes","pathEndIdx","droppedSlashIdx","params","createBrowserPlatformLocation","LocationStrategy","platformLocation","PathLocationStrategy","provideLocationStrategy","APP_BASE_HREF","_removeListenerFns","_baseHref","prepareExternalUrl","joinWithSlash","includeHash","normalizeQueryParams","externalUrl","HashLocationStrategy","platformStrategy","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","ev","isCurrentPathEqualTo","baseHref","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","_urlChangeSubscription","onNext","onThrow","onReturn","createLocation","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","ESP","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","RUR","RWF","SBD","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Plural","FormStyle","TranslationWidth","FormatWidth","NumberSymbol","WeekDay","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","res","CurrencyDecimal","Decimal","CurrencyGroup","Percent","Currency","Scientific","Zero","One","Two","Few","Many","Other","Standalone","Narrow","Abbreviated","Wide","Short","Long","Full","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","getLocalePluralCase","ɵgetLocalePluralCase","getLocaleCurrencies","symbolNarrow","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","DateType","TranslationType","timezone","parsedNb","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","isoStringToDate","namedFormat","parts","dateTimezoneOffset","timezoneToOffset","reverseValue","timezoneOffset","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","formatter","dateStrGetter","Eras","dateGetter","FullYear","weekNumberingYearGetter","Month","Months","weekGetter","DayPeriods","Hours","Seconds","FractionalSeconds","timeZoneGetter","Extended","ShortGMT","getDateFormatter","newDate","getLocaleId","getLocaleDateFormat","getLocaleTimeFormat","shortTime","getNamedFormat","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","str","opt_values","num","digits","negWrap","neg","strNum","getMilliseconds","getDatePart","strMs","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","padNumber","extended","formStyle","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","checkFullData","rule","extractTime","getLocaleExtraDayPeriodRules","getLocaleExtraDayPeriods","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","unexpected","getDateTranslation","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","firstDayOfYear","THURSDAY","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","exponent","MAX_DIGITS","fractionLen","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","roundNumber","groups","lgSize","gSize","negPre","negSuf","posPre","posSuf","currencyCode","parseNumberFormat","getLocaleNumberFormat","DEFAULT_NB_OF_CURRENCY_DIGITS","getNumberOfCurrencyDigits","formatNumberToLocaleString","patternParts","positive","positiveParts","integer","fraction","trunkLen","cases","ngLocalization","getPluralCategory","NgLocalization","LOCALE_ID","NgLocaleLocalization","cookieStr","eqIndex","cookieName","cookieValue","decodeURIComponent","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","addClass","removeClass","NgClass","_componentRef","_moduleRef","ngComponentOutlet","elInjector","ngComponentOutletInjector","parentInjector","ngComponentOutletNgModuleFactory","parentModule","NgModuleRef","ComponentFactoryResolver","ngComponentOutletContent","NgComponentOutlet","ngForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","ngForTemplate","NgForOfContext","applyViewChange","ilen","NgForOf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","condition","_updateView","ngIfThen","assertTemplate","ngIfElse","NgIf","_templateRef","_created","enforceState","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","matched","useDefault","NgSwitch","_view","SwitchView","ngSwitchCase","NgSwitchCase","NgSwitchDefault","_localization","_caseViews","ngPlural","_switchValue","addCase","switchView","_clearViews","_activateView","_activeView","NgPlural","isANumber","NgPluralCase","_ngStyle","ngStyle","_setStyle","nameAndUnit","setStyle","removeStyle","NgStyle","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","NgTemplateOutlet","ɵRuntimeError","_promiseStrategy","createSubscription","updateLatestValue","_subscribableStrategy","_ref","_latestValue","_obj","_strategy","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","AsyncPipe","ɵpipe","LowerCasePipe","unicodeWordMatch","txt","TitleCasePipe","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","defaultTimezone","DatePipe","_INTERPOLATION_REGEXP","pluralMap","I18nPluralPipe","mapping","I18nSelectPipe","JsonPipe","differs","keyValues","compareFn","defaultComparator","differChanges","compareFnChanged","forEachItem","makeKeyValuePair","keyValueA","keyValueB","aString","bString","KeyValuePipe","_locale","isValue","strToNumber","DecimalPipe","formatPercent","PercentPipe","_defaultCurrencyCode","getCurrencySymbol","formatCurrency","CurrencyPipe","DEFAULT_CURRENCY_CODE","supports","SlicePipe","CommonModule","PLATFORM_BROWSER_ID","platformId","PLATFORM_SERVER_ID","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","supportsScrolling","pageXOffset","pageYOffset","scrollToPosition","scrollToAnchor","elSelected","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","nextNode","findAnchorFromDocument","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","lcName","HttpHeaders","copyFrom","applyUpdate","toDelete","existing","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","updates","cloneFrom","encoder","HttpUrlEncodingCodec","fromString","fromObject","rawParams","codec","eqIdx","paramParser","appendAll","eKey","HttpParams","valueToString","third","fourth","reportProgress","withCredentials","HttpContext","urlWithParams","qIdx","sep","serializeBody","isBlob","isFormData","URLSearchParams","isUrlSearchParams","detectContentTypeHeader","setParams","HttpRequest","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","defaultStatus","defaultStatusText","statusText","HttpResponseBase","HttpHeaderResponse","HttpResponse","request","req","events$","concatMap","res$","jsonp","callbackParam","patch","addBody","HttpClient","HttpHandler","HTTP_INTERCEPTORS","NoopInterceptor","foreignDocument","nextRequestId","callbackMap","resolvedPromise","nextCallback","finished","HttpErrorResponse","removeListeners","createHTMLDocument","adoptNode","JsonpClientBackend","JsonpCallbackContext","JsonpInterceptor","XSSI_PREFIX","xhrFactory","xhr","build","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseHeader","getResponseUrl","onLoad","originalBody","onError","sentHeaders","onDownProgress","progressEvent","lengthComputable","total","partialText","onUpProgress","upload","HttpXhrBackend","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","HttpXsrfCookieExtractor","tokenService","headerName","lcUrl","HttpXsrfInterceptor","HttpXsrfTokenExtractor","backend","interceptors","HttpInterceptorHandler","HttpInterceptingHandler","HttpBackend","HttpClientXsrfModule","HttpClientModule","withOptions","HttpClientJsonpModule","XhrFactory$1","__forward_ref__","ngInjectableDef","ngInjectorDef","__NG_ELEMENT_ID__","providersResolver","vars","consts","hostAttrs","contentQueries","declaredInputs","onPush","directiveDefs","pipeDefs","setInput","schemas","tView","fe","declarations","transitiveCompileScopes","isFirstChange","Bn","ii","createRenderer","lFrame","bindingsEnabled","currentTNode","isParent","lView","selectedIndex","contextLView","elementDepthCount","currentNamespace","currentDirectiveIndex","bindingRootIndex","bindingIndex","currentQueryIndex","child","inI18n","Gi","ma","xr","Fr","Wa","attributeName","yd","Lc","isReflectionEnabled","_zipTypesAndAnnotations","_ownParameters","Mu","_ownAnnotations","_ownPropMetadata","propMetadata","ownPropMetadata","hasLifecycleHook","guards","getter","importUri","resourceUri","resolveIdentifier","resolveEnum","annotationCls","attribute","optional","skipSelf","nu","gp","localRefs","components","projection","createHTML","createScript","createScriptURL","createPolicy","getTypeName","getInertBodyElement","stripCustomNsAttrs","cu","sanitizeChildren","startElement","endElement","checkClobberedElement","$u","Sh","_findOriginalError","Eh","gm","qf","insertBeforeIndex","injectorIndex","directiveStart","directiveEnd","directiveStylingLast","propertyBindings","providerIndexes","mergedAttrs","localNames","initialInputs","tViews","projectionNext","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","cg","oh","d_","l_","vg","gg","kp","_g","Ah","C_","c_","Pp","fg","vm","u_","blueprint","declTNode","bindingStartIndex","expandoStartIndex","hostBindingOpCodes","firstCreatePass","firstUpdatePass","staticViewQueries","staticContentQueries","preOrderHooks","preOrderCheckHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","directiveRegistry","pipeRegistry","incompleteFirstPass","S_","zs","dg","g_","pg","y_","ih","v_","hg","qd","__","Nh","hf","yg","lg","_f","ff","Cg","Sf","Lp","_resolveInjectorDefTypes","assertNotDestroyed","processInjectorType","processProvider","w_","Sg","hydrate","wg","injectableDefInScope","xg","Df","wf","Dg","Em","Bo","Cf","Mf","Ul","Ig","Dd","ah","np","playerHandler","Wm","n0","A_","l0","od","Xs","Es","$s","Co","hc","Ll","Op","Lh","resolveForwardRef","typeArgumentCount","Rf","u0","Bg","m0","Vg","Lf","Xf","numberOfKeys","updateCapabilities","_o","yv","resolveAndCreateChild","createChildFromResolved","resolveAndInstantiate","instantiateResolved","getProviderAtIndex","p0","_new","Up","ph","_getMaxNumberOfObjects","_instantiateProvider","_instantiate","jp","_getByReflectiveDependency","_getByKey","_getObjByKeyId","_throwOrNull","F_","_getByKeySelf","_getByKeyDefault","Zs","Bu","wc","Vd","bu","Cm","SC","bv","Ev","v0","al","Vh","x0","bC","__ngNextListenerFn__","_p","tv","wh","Mh","Ip","Y1","wC","IC","Ih","rd","qm","textEnd","keyEnd","valueEnd","kC","B_","OC","AC","$1","Ud","k0","O0","z1","PC","ey","K1","TC","J1","jC","UC","VC","iy","FC","jg","NC","BC","LC","DC","ny","R0","e_","tp","L0","Nu","Iv","F0","N0","Wg","V0","U0","Mv","Tv","Wh","Hh","Np","Yh","Bp","Gh","Yc","Vp","jh","Fm","Y0","G0","K0","z0","Q0","$0","X0","Z0","q0","V_","Hg","Nf","Pv","marker","kv","Vu","Ov","Ey","XC","qC","Iy","xo","Lv","U_","zC","$C","o1","My","ox","Ty","lx","cx","dx","Oy","fx","ux","Py","md","by","ex","Bf","currentCaseLViewIndex","anchorIdx","gx","JC","Fy","Ly","Nv","Ny","d1","_x","Rv","vx","yx","By","Vy","Uy","fh","mx","pu","Hp","hx","Kg","nx","m1","ix","pp","Bv","El","Cx","H_","Eg","Uf","Wy","xx","jf","hl","bx","Ex","Qg","Vv","Uv","m_","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","attachToAppRef","rh","propName","X_","Gp","f1","Z_","Qy","Bm","$y","Lm","kf","Wf","Fg","nC","iC","rC","notifyOnChanges","setDirty","Qh","E1","Zg","w1","_adjustIndex","insertView","dirtyQueriesWithMatches","elementStart","elementEnd","embeddedTView","getByIndex","track","isApplyingToNode","matchTNode","matchTNodeWithReadOption","addMatch","G_","zv","pC","Ox","$v","hC","Rx","vC","Lx","Ax","moduleType","Ee","Ur","yi","Vi","Vr","compilation","exported","_r","nm","Gu","qs","typeSourceSpan","Tr","Il","hn","lifecycle","usesOnChanges","usesInheritance","viewQueries","pr","emitDistinctChangesOnly","compilePipe","pipeName","$a","Po","Eo","bindingPropertyName","il","hostPropertyName","ys","Rl","Du","runInitializers","V1","vd","hp","Hu","xs","Cl","tu","Ju","Kf","Fx","Xv","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","zf","Zv","Zone","enableLongStackTrace","nativeRequestAnimationFrame","Bx","R1","Ux","isAngularZone","onInvokeTask","onInvoke","onHasTask","onHandleError","jx","runTask","runGuarded","_watchAngularEvents","fp","O1","increasePendingRequestCount","decreasePendingRequestCount","_runCallbacksIfReady","getPendingTasks","creationLocation","addCallback","doneCb","whenStable","getPendingRequestCount","findProviders","Qf","Ua","registerApplication","unregisterApplication","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","addToWindow","za","Hr","Zo","bootstrapModuleFactory","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","em","ngZoneEventCoalescing","ngZoneRunCoalescing","$f","xy","Yg","_moduleDoBootstrap","jl","tick","_loadComponent","Um","uS","Kp","MS","Wx","If","listeners","references","providerTokens","AS","OS","RS","queryAll","queryAllNodes","triggerEventHandler","Gx","Yx","_S","zx","forEachPreviousItem","forEachMovedItem","Tf","Pf","_mismatch","_verifyReinsertion","_truncate","_reinsertAfter","_moveAfter","_addAfter","_insertAfter","_unlink","_addToMoves","_addToRemovals","_addIdentityChange","_insertBeforeOrAppend","_getOrCreateRecordForKey","_maybeAddToChanges","_addToAdditions","_addToChanges","_forEach","Xh","Zh","WS","HS","YS","GS","e0","compileDirectiveDeclaration","tc","compileComponentDeclaration","ZS","compileFactoryDeclaration","compileInjectableDeclaration","compileInjectorDeclaration","compileNgModuleDeclaration","compilePipeDeclaration","BaseControlValueAccessor","BuiltInControlValueAccessor","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","renderer","_compositionMode","_composing","ɵgetDOM","getUserAgent","_isAndroid","normalizedValue","_handleInput","_compositionStart","_compositionEnd","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","emailValidator","minLengthValidator","maxLengthValidator","patternValidator","composeAsync","isEmptyInputValue","actual","hasValidLength","minlength","requiredLength","actualLength","maxlength","nullValidator","regexStr","requiredPattern","actualValue","obs","ɵisObservable","arrayOfErrors","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","forkJoin","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","_onDestroyCallbacks","dirty","touched","untouched","statusChanges","_setValidators","_composedValidatorFn","composeValidators","_setAsyncValidators","_composedAsyncValidatorFn","composeAsyncValidators","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","hasError","errorCode","getError","AbstractControlDirective","_parent","valueAccessor","formDirective","_cd","AbstractControlStatus","NgControlStatus","NgControl","NgControlStatusGroup","ControlContainer","setUpValidators","_pendingValue","_pendingChange","_pendingDirty","updateControl","setUpViewChangePipeline","emitModelEvent","_unregisterOnChange","setUpModelChangePipeline","_pendingTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","validateControlPresenceOnChange","cleanUpValidators","_registerOnCollectionChange","getControlValidators","setValidators","mergeValidators","asyncValidators","getControlAsyncValidators","setAsyncValidators","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","viewModel","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","isFormControl","FormControl","isFormGroup","FormGroup","isFormArray","FormArray","getRawValue","isGroup","_forEachChild","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","opts","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","_updatePristine","markAsPending","emitEvent","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","_updateControlsErrors","delimiter","controlToFind","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","parentDirty","AbstractControl","pickValidators","pickAsyncValidators","_onChange","_applyFormState","initialValueIsDefault","emitViewToModelChange","patchValue","removeListItem","cb","_setUpControls","registerControl","removeControl","setControl","controlName","assertAllValuesPresent","assertControlPresent","_reduceChildren","subtreeUpdated","_reduceValue","initValue","_registerControl","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","setUpFormContainer","removeFormGroup","getFormGroup","updateModel","onSubmit","$event","syncPendingControls","onReset","resetForm","_checkParentType","controlPath","AbstractFormGroupDirective","modelGroupProvider","NgModelGroup","formControlBinding$1","NgModel","_registered","selectValueAccessor","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","disabledValue","ChangeDetectorRef","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","RadioControlRegistry","_registry","_state","_fn","formControlName","RANGE_VALUE_ACCESSOR","RangeValueAccessor","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","cleanUpControl","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_optionMap","_idCounter","_compareWith","compareWith","valueString","_buildValueString$1","_getOptionId","_getOptionValue","_registerOption","_extractId$1","_select","ngValue","_setElementValue","NgSelectOption","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","optionSelectedStateSetter","_setSelected","selectedOptions","_extractId","_buildValueString","ɵNgSelectMultipleOption","_validator","inputName","normalizeInput","createValidator","AbstractValidatorDirective","MAX_VALIDATOR","MaxValidator","toFloat","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","toBoolean","EMAIL_VALIDATOR","EmailValidator","MIN_LENGTH_VALIDATOR","MinLengthValidator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","PATTERN_VALIDATOR","PatternValidator","ɵInternalFormsSharedModule","FormsModule","ReactiveFormsModule","warnOnNgModelWithFormControl","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","FormBuilder","_uniqueAutocompleteIdCounter","option","_MatAutocompleteMixinBase","mixinDisableRipple","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","autoActiveFirstOption","_activeOptionChanges","showPanel","_isOpen","displayWith","optionSelected","optionActivated","_classList","inertGroups","_autoActiveFirstOption","coerceStringArray","_setVisibilityClasses","_keyManager","ActiveDescendantKeyManager","_setVisibility","_setScrollTop","panel","_getScrollTop","_emitSelectEvent","MatAutocompleteSelectedEvent","_getPanelAriaLabelledby","labelId","labelExpression","ariaLabelledby","_visibleClass","_hiddenClass","_MatAutocompleteBase","MatAutocomplete","MAT_OPTGROUP","MatOption","MAT_OPTION_PARENT_COMPONENT","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MatAutocompleteTrigger","_formField","_defaults","_componentDestroyed","_autocompleteDisabled","_manuallyFloatingLabel","_viewportSubscription","_canOpenOnNextFocus","_closeKeyEventStream","_windowBlurHandler","panelOpen","_onTouched","autocompleteAttribute","_overlayAttached","optionSelections","autocomplete","autocompleteDisabled","_setStrategyPositions","_destroyPanel","openPanel","_floatLabel","closePanel","_resetLabel","_closingActionsSubscription","panelClosingActions","_getOutsideClickStream","MatOptionSelectionChange","activeOption","clickTarget","formField","customOrigin","_setTriggerValue","_handleKeydown","hasModifier","_selectViaInteraction","_resetActiveItem","prevActiveItem","isArrowKey","_canOpen","_scrollToOption","_previousValue","_handleFocus","_handleClick","shouldAnimate","_animateAndLockLabel","_subscribeToClosingActions","firstStable","optionChanges","wasOpen","_setValueAndClose","inputValue","_clearPreviousSelectedOption","_getConnectedElement","_getPanelWidth","_portal","getLabelId","_getOverlayConfig","_getOverlayPosition","overlayPanelClass","belowPositions","_aboveClass","abovePositions","getConnectedOverlayOrigin","panelWidth","_getHostWidth","labelCount","_countGroupLabelsBeforeOption","optionGroups","_getHostElement","newScrollPosition","_getOptionScrollPosition","_MatAutocompleteTriggerBase","i2$1","MAT_FORM_FIELD","_MatAutocompleteOriginBase","MatAutocompleteOrigin","MatAutocompleteModule","MatOptionModule","MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS","MAT_BUTTON_TOGGLE_GROUP","MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR","MatButtonToggleGroup","uniqueIdCounter","_changeDetector","_controlValueAccessorChangeFn","appearance","_buttonToggles","_markForCheck","_selectionModel","_setSelectionByValue","SelectionModel","MatButtonToggleChange","_syncButtonToggle","isUserInput","deferEvents","_updateModelValue","_isSelected","_isPrechecked","_rawValue","_clearSelection","_selectValue","correspondingOption","MatButtonToggle","_MatButtonToggleBase","toggleGroup","_isSingleSelector","parsedTabIndex","buttonToggleGroup","buttonId","_appearance","_buttonElement","_onButtonClick","newChecked","MatButtonToggleModule","MatRippleModule","BUTTON_HOST_ATTRIBUTES","_MatButtonBase","mixinDisabled","_animationMode","isRoundButton","_hasHostAttributes","isIconButton","DEFAULT_ROUND_BUTTON_COLOR","_isRippleDisabled","disableRipple","MatButton","ANIMATION_MODULE_TYPE","MatRipple","focusMonitor","animationMode","_haltDisabledEvents","stopImmediatePropagation","MatAnchor","MatButtonModule","MatCardContent","MatCardTitle","MatCardSubtitle","MatCardActions","MatCardFooter","MatCardImage","MatCardSmImage","MatCardMdImage","MatCardLgImage","MatCardXlImage","MatCardAvatar","MatCard","MatCardHeader","MatCardTitleGroup","MatCardModule","MAT_CHECKBOX_DEFAULT_OPTIONS","MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY","clickAction","MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR","MatCheckbox","_MatCheckboxBase","mixinTabIndex","_uniqueId","labelPosition","indeterminateChange","_currentAnimationClass","_currentCheckState","_indeterminate","defaultColor","inputId","focusOrigin","_syncIndeterminate","_transitionCheckState","_onLabelTextChange","_getAriaChecked","newState","oldState","_getAnimationClassForCheckStateTransition","animationClass","MatCheckboxChange","_inputElement","_onInputClick","_onInteractionEvent","animSuffix","nativeCheckbox","MAT_CHECKBOX_REQUIRED_VALIDATOR","MatCheckboxRequiredValidator","_MatCheckboxRequiredValidatorModule","MatCheckboxModule","MAT_CHIP_REMOVE","MAT_CHIP_AVATAR","MAT_CHIP_TRAILING_ICON","_MatChipMixinBase","MatChipAvatar","MatChipTrailingIcon","globalRippleOptions","_hasFocus","chipListSelectable","_chipListMultiple","_chipListDisabled","_selectable","_removable","_addHostClassName","_chipRippleTarget","_chipRipple","RippleRenderer","setupTriggerEvents","rippleConfig","_animationsDisabled","rippleDisabled","coercedValue","_dispatchSelectionChange","selectable","removable","ariaSelected","basicChipAttrName","chip","_removeTriggerEvents","selectViaInteraction","toggleSelected","SPACE","_blur","MatChip","MAT_RIPPLE_GLOBAL_OPTIONS","_parentChip","parentChip","MatChipRemove","MAT_CHIPS_DEFAULT_OPTIONS","nextUniqueId$1","_addOnBlur","separatorKeyCodes","chipEnd","chipList","_chipList","registerInput","addOnBlur","_focusLastChipOnBackspace","_keydown","_allowFocusEscape","_emitChipEnd","_keyup","_focus","_isSeparatorKey","chipInput","_onInput","MatChipInput","_MatChipListBase","mixinErrorState","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","controlType","_lastDestroyedChipIndex","_uid","_tabIndex","_userTabIndex","o2","ariaOrientation","_syncChipsState","_initializeSelection","_chipInput","Validators","_hasFocusedChip","chips","shouldLabelFloat","chipSelectionChanges","chipFocusChanges","chipBlurChanges","chipRemoveChanges","FocusKeyManager","_resetChips","_updateTabIndex","_updateFocusForDestroyedChips","updateErrorState","_dropSubscriptions","setDescribedByIds","_ariaDescribedby","onContainerClick","_originatesFromChip","_focusInput","newChipIndex","_isValidIndex","_sortValues","correspondingChip","_propagateChanges","fallbackValue","valueToEmit","MatChipListChange","_markAsTouched","_listenToChipsFocus","_listenToChipsSelection","_listenToChipsRemoved","_chipFocusSubscription","_chipBlurSubscription","_chipSelectionSubscription","_chipRemoveSubscription","chipIndex","MatChipList","MatFormFieldControl","MatChipsModule","ErrorStateMatcher","AnimationCurves","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","AnimationDurations","COMPLEX","ENTERING","EXITING","MATERIAL_SANITY_CHECKS","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","colorPalette","_disableRipple","errorState","matcher","errorStateMatcher","isErrorState","_pendingSubscribers","_notifySubscriber","_markInitialized","_localeChanges","localeChanges","getValidDateOrNull","compareDate","firstValid","secondValid","clampDate","ISO_8601_REGEX","matDateLocale","useUtcForDisplay","dtf","DateTimeFormat","timeZone","_format","_createDateWithOverflow","_2digit","NativeDateAdapter","NativeDateModule","MatNativeDateModule","ShowOnDirtyErrorStateMatcher","MatLine","MatLineModule","fadeOut","fadeOutRipple","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveEventOptions","pointerDownEvents","pointerUpEvents","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","animationConfig","centered","distX","distY","distanceToFurthestCorner","ripple","transitionDuration","enforceStyleRecalculation","rippleRef","RippleRef","persistent","_mostRecentTransientRipple","_runTimeoutOutsideZone","isMostRecentTransientRipple","wasActive","rippleEl","fadeOutAll","fadeOutAllNonPersistent","_triggerElement","_registerEvents","handleEvent","_onTouchStart","_onPointerUp","isFakeMousedown","_lastTouchStartEvent","terminateOnPointerUp","eventTypes","globalOptions","_globalOptions","_rippleRenderer","_setupTriggerEventsIfEnabled","_trigger","launch","configOrX","MatPseudoCheckbox","MatPseudoCheckboxModule","_MatOptgroupMixinBase","_uniqueOptgroupIdCounter","_labelId","_inert","_MatOptgroupBase","MatOptgroup","_active","_mostRecentViewValue","viewValue","_emitSelectionChangeEvent","_getAriaSelected","_getTabIndex","_MatOptionBase","changeDetectorRef","optionIndex","optionsArray","groupCounter","optionOffset","optionHeight","currentScrollPosition","panelHeight","_cellClicked","activeDate","_dateSelected","_monthSelectedInYearView","_goToDateInView","_yearSelectedInMultiYearView","compareValue","numCols","activeCell","isRange","cellAspectRatio","previewStart","previewEnd","selectedValueChange","previewChange","_enterHandler","_skipNextFocus","_getCellFromElement","_leaveHandler","startValue","endValue","columnChanges","_firstRowOffset","_cellPadding","_cellWidth","_isActiveCell","colIndex","cellNumber","_focusActiveCell","movePreview","_isRangeStart","_isRangeEnd","isEnd","_isInRange","_isComparisonStart","comparisonStart","comparisonEnd","_isComparisonBridgeStart","previousCell","previousRow","_isComparisonBridgeEnd","_isComparisonEnd","nextCell","nextRow","_isInComparisonRange","_isComparisonIdentical","_isPreviewStart","_isPreviewEnd","_isInPreview","isTableCell","col","rangeEnabled","MatCalendarBody","_adapter","_selectionChanged","updateSelection","_isValidDateInstance","MatDateSelectionModel","isComplete","MatSingleDateSelectionModel","DateRange","MatRangeDateSelectionModel","MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER","Optional","SkipSelf","MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER","MAT_DATE_RANGE_SELECTION_STRATEGY","_dateAdapter","selectionFinished","currentRange","createPreview","DefaultMatCalendarRangeStrategy","MAT_CALENDAR_RANGE_STRATEGY_PROVIDER","_dateFormats","_rangeStrategy","_rerenderSubscription","_userSelection","activeDateChange","_activeDate","oldActiveDate","validDate","minDate","maxDate","_hasSameMonthAndYear","_setRanges","_minDate","_maxDate","comparisonChange","_getDateInCurrentMonth","_previewStart","_previewEnd","_handleCalendarBodyKeydown","PAGE_UP","PAGE_DOWN","_selectionKeyPressed","_canSelect","_handleCalendarBodyKeyup","_todayDate","_getCellCompareValue","_monthLabel","monthLabel","firstOfMonth","_firstWeekOffset","_initWeekdays","_createWeekCells","_matCalendarBody","_previewChanged","previewRange","narrowWeekdays","longWeekdays","_weekdays","dateNames","_weeks","_shouldEnableDate","cellClasses","dateClass","MatCalendarCell","d2","selectedValue","_rangeStart","_rangeEnd","_isRange","_comparisonRangeStart","_comparisonRangeEnd","MatMonthView","isSameMultiYearView","_setSelectedYear","_todayYear","minYearOfPage","activeYear","getActiveOffset","_createCellForYear","_yearSelected","yearsPerPage","_getActiveCell","yearName","_shouldEnableYear","_selectedYear","dateAdapter","year1","year2","startingYear","getStartingYear","euclideanModulo","maxYear","MatMultiYearView","monthSelected","_setSelectedMonth","_monthSelected","normalizedDate","_todayMonth","_getMonthInCurrentYear","_yearLabel","monthNames","_months","_createCellForMonth","monthName","_shouldEnableMonth","_isYearAndMonthAfterMaxDate","_isYearAndMonthBeforeMinDate","maxMonth","minYear","minMonth","_selectedMonth","MatYearView","calendarLabel","openCalendarLabel","closeCalendarLabel","prevMonthLabel","nextMonthLabel","prevYearLabel","nextYearLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","formatYearRange","MatDatepickerIntl","_intl","_buttonDescriptionId","periodButtonText","currentView","maxYearOfPage","minYearName","maxYearName","periodButtonLabel","prevButtonLabel","nextButtonLabel","currentPeriodClicked","previousClicked","nextClicked","previousEnabled","_isSameView","nextEnabled","MatCalendarHeader","MatCalendar","_moveFocusOnNextTick","startView","viewChanged","_intlChanges","startAt","_startAt","_clampedActiveDate","_currentView","viewChangedResult","_calendarHeaderPortal","headerComponent","focusActiveCell","minDateChange","maxDateChange","_getCurrentViewComponent","updateTodaysDate","normalizedYear","normalizedMonth","monthView","yearView","multiYearView","i7","i8","matDatepickerAnimations","transformPanel","transition","keyframes","fadeInCalendar","datepickerUid","MAT_DATEPICKER_SCROLL_STRATEGY","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","_MatDatepickerContentBase","_globalModel","_rangeSelectionStrategy","_subscriptions","_animationDone","_actionsPortal","_closeButtonText","_model","_animationState","datepicker","touchUi","_calendar","_handleUserSelection","_startExitAnimation","_getSelected","_applyPendingSelection","MatDatepickerContent","_inputStateChanges","_touchUi","xPosition","yPosition","_restoreFocus","openedStream","closedStream","_opened","_focusedElementBeforeOpen","_backdropHarnessClass","datepickerInput","getStartValue","getThemePalette","restoreFocus","_panelClass","_getMinDate","_getMaxDate","_getDateFilter","_setConnectedPositions","_destroyOverlay","_selectYear","_selectMonth","_viewChanged","registerActions","removeActions","_openOverlay","completeClose","_forwardContentValues","_dialogLabelId","getOverlayLabelId","isDialog","_getDialogStrategy","_getDropdownStrategy","_getCloseStream","primaryX","secondaryX","primaryY","secondaryY","MatDatepickerBase","i9","MatDatepicker","targetElement","_validatorOnChange","_cvaOnChange","_valueChangesSubscription","_localeSubscription","_parseValidator","_lastValueValid","matDatepickerParse","_filterValidator","controlValue","_matchesFilter","matDatepickerFilter","_minValidator","matDatepickerMin","_maxValidator","matDatepickerMax","_assignValueProgrammatically","_getValueFromModel","_parentDisabled","_getValidators","_registerModel","_assignValue","_shouldHandleChangeEvent","_isValidValue","_formatValue","MatDatepickerInputEvent","dateInputsHaveChanged","isAltDownArrow","_openPopup","lastValueWasValid","hasChanged","_assignValueToModel","MatDatepickerInputBase","MAT_DATEPICKER_VALUE_ACCESSOR","MatDatepickerInput","MAT_DATEPICKER_VALIDATORS","_closedSubscription","matDatepicker","_datepicker","_min","validValue","_max","_dateFilter","wasMatchingValue","modelValue","MAT_INPUT_VALUE_ACCESSOR","MatDatepickerToggleIcon","_watchStateChanges","_open","datepickerStateChanged","inputStateChanged","datepickerToggled","MatDatepickerToggle","MAT_DATE_RANGE_INPUT_PARENT","_rangeInput","InjectFlags","_getPlaceholder","_handleChildValueChange","_openDatepicker","_groupDisabled","_startInput","_endInput","opposite","MatDateRangeInputPartBase","i2$2","_MatDateRangeInputBase","rangeInput","defaultErrorStateMatcher","parentForm","parentFormGroup","_startValidator","matStartDateInvalid","getMirrorValue","MatStartDate","_endValidator","matEndDateInvalid","MatEndDate","_ariaDescribedBy","rangePicker","_rangePicker","wasMatchingStart","wasMatchingEnd","_revalidate","startEmpty","endEmpty","_getInputMirrorValue","_shouldHidePlaceholders","_shouldHideSeparator","_shouldLabelFloat","_getAriaLabelledby","_hasFloatingLabel","_updateFocus","MatDateRangeInput","MatDateRangePicker","_applySelection","MatDatepickerApply","MatDatepickerCancel","MatDatepickerActions","MatDatepickerModule","ariaDescribedBy","ariaLabelledBy","delayFocusTrap","closeOnNavigation","matDialogAnimations","dialogContainer","animateChild","_interactivityChecker","_animationStateChanged","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledBy","_initializeWithAttachedContent","_focusTrap","_recaptureFocus","_containsFocus","_forceFocus","_focusByCssSelector","elementToFocus","focusedSuccessfully","_focusDialogContainer","previousElement","_MatDialogContainerBase","MatDialogConfig","_onAnimationDone","toState","totalTime","_onAnimationStart","MatDialogContainer","_containerInstance","_afterOpened","_afterClosed","_beforeClosed","_closeFallbackTimeout","_finishDialogClose","_result","_closeDialogVia","dialogResult","afterOpened","beforeClosed","_getPositionStrategy","interactionType","MAT_DIALOG_DATA","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","_parentDialog","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","afterAllClosed","_getAfterAllClosed","componentOrTemplateRef","_applyConfigDefaults","getDialogById","_attachDialogContainer","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","_removeOpenDialog","_closeDialogs","dialogConfig","userInjector","containerPortal","containerRef","_createInjector","overlayContainer","dialogs","_MatDialogBase","parentDialog","MatDialogRef","MatDialog","dialogElementUid","_dialog","getClosestDialog","proxiedChange","_matDialogClose","_matDialogCloseResult","MatDialogClose","_dialogRef","MatDialogTitle","MatDialogContent","MatDialogActions","MatDialogModule","_inset","inset","MatDivider","MatDividerModule","nextId$1","CDK_ACCORDION","_openCloseAllActions","_multi","openAll","CdkAccordion","accordion","_expansionDispatcher","_openCloseAllSubscription","expandedChange","_expanded","_removeUniqueSelectionListener","accordionId","_subscribeToOpenCloseAllActions","CdkAccordionItem","CdkAccordionModule","MAT_ACCORDION","EXPANSION_PANEL_ANIMATION_TIMING","matExpansionAnimations","indicatorRotate","bodyExpansion","MatExpansionPanelContent","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","_uniqueSelectionDispatcher","_hideToggle","afterExpand","afterCollapse","_inputChanges","_headerId","_bodyAnimationDone","fromState","hideToggle","togglePosition","_togglePosition","_hasSpacing","displayMode","_getExpandedState","_lazyContent","_body","focusedElement","bodyElement","MatExpansionPanel","MatExpansionPanelActionRow","_MatExpansionPanelHeaderMixinBase","_parentChangeSubscription","accordionHideToggleChange","expandedHeight","collapsedHeight","_isExpanded","_getPanelId","_getTogglePosition","_showToggle","_getHeaderHeight","_handleHeaderKeydown","_handleHeaderFocus","MatExpansionPanelHeader","MatExpansionPanelDescription","MatExpansionPanelTitle","_ownHeaders","_headers","MatAccordion","MatExpansionModule","nextUniqueId$2","MAT_ERROR","ariaLive","MatError","matFormFieldAnimations","transitionMessages","_MAT_HINT","MatHint","MatLabel","MatPlaceholder","MAT_PREFIX","MatPrefix","MAT_SUFFIX","MatSuffix","_MatFormFieldBase","MAT_FORM_FIELD_DEFAULT_OPTIONS","_outlineGapCalculationNeededImmediately","_outlineGapCalculationNeededOnStable","_showAlwaysAnimate","_subscriptAnimationState","_hintLabel","_hintLabelId","_getDefaultFloatLabelState","_animationsEnabled","_hideRequiredMarker","hideRequiredMarker","_shouldAlwaysFloat","_canLabelFloat","hintLabel","_processHints","_explicitFormFieldControl","_controlNonStatic","_controlStatic","_connectionContainerRef","_validateControlChild","_validatePlaceholders","_syncDescribedByIds","_prefixChildren","_suffixChildren","_hintChildren","_errorChildren","_shouldForward","_hasPlaceholder","_placeholderChild","_hasLabel","_labelChildNonStatic","_labelChildStatic","_hideControlPlaceholder","_getDisplayedMessages","_validateHints","userAriaDescribedBy","startHint","endHint","labelEl","outlineStartSelector","outlineGapSelector","gapElements","_isAttachedToDOM","startWidth","gapWidth","startEls","gapEls","containerStart","_getStartEnd","labelChildren","labelStart","labelWidth","outlineGapPadding","MatFormField","i4","MatFormFieldModule","rowCount","rowspan","lastRowMax","tracker","numColumns","tiles","tile","_trackTile","gapStartIndex","_findMatchingGap","colspan","_markTilePosition","TilePosition","tileCols","gapEndIndex","_nextRow","_findGapEndIndex","MAT_GRID_LIST","_gridList","_rowspan","_colspan","MatGridTile","setLines","_lines","MatGridTileText","MatGridAvatarCssMatStyler","MatGridTileHeaderCssMatStyler","MatGridTileFooterCssMatStyler","cssCalcAllowedValue","_rows","gutterSize","cols","_gutterSize","normalizeUnits","_cols","getBaseTileSize","sizePercent","gutterFraction","getTilePosition","baseSize","calc","getTileSize","percentWidthPerTile","gutterWidthFractionPerTile","setColStyles","setRowStyles","percentWidth","gutterWidth","baseTileWidth","side","getGutterSpan","getTileSpan","tileHeight","getComputedHeight","TileStyler","fixedRowHeight","_setListStyle","_tiles","_parseRatio","percentHeightPerTile","rowHeightRatio","baseTileHeight","ratioParts","gutterHeightPerTile","exp","_gutter","rowHeight","_rowHeight","_setTileStyler","_checkCols","_checkRowHeight","_layoutTiles","_tileStyler","FitTileStyler","RatioTileStyler","FixedTileStyler","_tileCoordinator","TileCoordinator","MatGridList","MatGridListModule","policy","ttWindow","trustedTypes","getPolicy","iconName","svgText","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","namespace","_addSvgIconConfig","SvgIconConfig","addSvgIconResolver","cleanLiteral","SecurityContext","getMatIconFailedToSanitizeLiteralError","trustedLiteral","trustedHTMLFromString","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","getMatIconFailedToSanitizeUrlError","cachedIcon","cloneSvg","_loadSvgIconFromConfig","svg","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","throwError","getMatIconNameNotFoundError","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","catchError","err","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","_setSvgAttributes","_toSvgElement","_svgElementFromString","div","viewBox","iconConfig","getMatIconNoHttpProviderError","inProgressFetch","finalize","share","configNamespace","svgElement","MatIconRegistry","DomSanitizer","ErrorHandler","_MatIconBase","MAT_ICON_LOCATION","getPathname","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","_iconRegistry","ariaHidden","_inline","_currentIconFetch","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_splitIconName","cachedElements","_elementsWithExternalReferences","_previousPath","_prependPathToReferences","_usingFontIcon","_setSvgElement","_cacheChildrenWithExternalReferences","layoutElement","childCount","elem","fontSetClass","_previousFontSetClass","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","MatIcon","MatIconModule","listenerOptions","_monitoredElements","animationName","isAutofilled","unlisten","AutofillMonitor","_autofillMonitor","cdkAutofill","CdkAutofill","_previousMinRows","_isViewInited","_handleFocusEvent","_textareaElement","minRows","_minRows","_setMinHeight","maxRows","_maxRows","_setMaxHeight","resizeToFitContent","_cachedPlaceholderHeight","_cacheTextareaPlaceholderHeight","_cachedLineHeight","_initialHeight","_cacheTextareaLineHeight","textareaClone","_measureScrollHeight","previousMargin","isFirefox","needsMarginFiller","measuringClass","force","textarea","_scrollToCaretPosition","_noopInputHandler","isStopped","setSelectionRange","CdkTextareaAutosize","TextFieldModule","MAT_INPUT_INVALID_TYPES","_MatInputBase","inputValueAccessor","autofilled","_type","_readonly","_neverEmptyInputTypes","getSupportedInputTypes","_iOSKeyupListener","_inputValueAccessor","_previousNativeValue","_isServer","_isNativeSelect","_isTextarea","_isInFormField","_validateType","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","_focusChanged","_previousPlaceholder","_isNeverEmpty","_isBadInput","validity","badInput","selectElement","firstOption","_isInlineSelect","MatInput","MatInputModule","_MatListBase","_MatListItemMixinBase","MAT_LIST","MAT_NAV_LIST","MatNavList","_getListType","MatList","MatListAvatarCssMatStyler","MatListIconCssMatStyler","MatListSubheaderCssMatStyler","navList","_isInteractiveList","_list","MatListItem","_MatSelectionListBase","_MatListOptionBase","MAT_SELECTION_LIST_VALUE_ACCESSOR","MatSelectionList","selectionList","checkboxPosition","_inputsInitialized","_reportValueChange","wasSelected","hadFocus","newActiveItem","_removeOptionFromList","_text","_setFocusedOption","_handleBlur","MatListOption","_contentInitialized","_markOptionsForCheck","_setOptionsFromValues","toFocus","disableRippleChanges","colorChanges","_isDestroyed","_setAllOptionsSelected","_getOptionIndex","manager","previousFocusIndex","_toggleFocusedOption","shouldSelect","_getSelectedOptionValues","MatSelectionListChange","focusedIndex","focusedOption","skipDisabled","changedOptions","MatListModule","matMenuAnimations","transformMenu","fadeInItems","MAT_MENU_CONTENT","_attached","_outlet","_MatMenuContentBase","MatMenuContent","MAT_MENU_PANEL","_MatMenuItemBase","_parentMenu","_hovered","_focused","_highlighted","_triggersSubmenu","_checkDisabled","_handleMouseEnter","icons","_setHighlighted","isHighlighted","MatMenuItem","MAT_MENU_DEFAULT_OPTIONS","overlapTrigger","menuPanelUid","_xPosition","_yPosition","_directDescendantItems","_tabSubscription","_panelAnimationState","_overlapTrigger","panelId","setPositionClasses","previousPanelClass","_previousPanelClass","_updateDirectDescendants","focusedItem","itemsList","itemChanges","_item","parentMenu","focusFirstItem","menuPanel","resetActiveItem","setElevation","elevation","_baseElevation","newElevation","_elevationPrefix","customElevation","_previousElevation","_startAnimation","_resetAnimation","_isAnimating","_allItems","_MatMenuBase","MatMenu","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","_menuItemInstance","_menuOpen","_hoverSubscription","_menuCloseSubscription","_handleTouchStart","_openedBy","menuOpened","onMenuOpen","menuClosed","onMenuClose","_parentMaterialMenu","triggersSubmenu","_deprecatedMatMenuTriggerFor","menu","_menu","reason","_destroyMenu","_checkMenu","_handleHover","menuOpen","toggleMenu","closeMenu","_setPosition","_getPortal","lazyContent","menuData","_menuClosingActions","_initMenu","_setIsMenuOpen","_setMenuElevation","_subscribeToPositions","originFallbackX","overlayFallbackY","originFallbackY","overlayFallbackX","parentClose","hover","_handleMousedown","_MatMenuTriggerBase","i3$1","MatMenuTrigger","MatMenuModule","_changePageSize","firstPage","lastPage","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","getRangeLabel","startIndex","MatPaginatorIntl","MAT_PAGINATOR_INTL_PROVIDER","parentIntl","MAT_PAGINATOR_DEFAULT_OPTIONS","_MatPaginatorMixinBase","mixinInitialized","_pageIndex","_length","_pageSizeOptions","_hidePageSize","_showFirstLastButtons","pageSizeOptions","hidePageSize","showFirstLastButtons","_pageSize","_updateDisplayedPageSizeOptions","_initialized","nextPage","hasNextPage","previousPageIndex","_emitPageEvent","previousPage","hasPreviousPage","maxPageIndex","_nextButtonsDisabled","_previousButtonsDisabled","_displayedPageSizeOptions","_MatPaginatorBase","formFieldAppearance","_formFieldAppearance","MatPaginator","MatPaginatorModule","MatSelectModule","MatTooltipModule","_MatProgressBarBase","MAT_PROGRESS_BAR_LOCATION","MAT_PROGRESS_BAR_DEFAULT_OPTIONS","progressbarId","_isNoopAnimation","_bufferValue","animationEnd","_animationEndSubscription","_rectangleFillValue","bufferValue","_primaryTransform","_bufferTransform","_primaryValueBar","MatProgressBar","MatProgressBarModule","_MatProgressSpinnerBase","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","diameter","BASE_SIZE","INDETERMINATE_ANIMATION_TEMPLATE","_diameter","trackedDiameters","MatProgressSpinner","_diameters","_spinnerAnimationLabel","_getSpinnerAnimationLabel","_noopAnimations","_forceAnimations","strokeWidth","_styleRoot","_attachStyleNode","_strokeWidth","_getCircleRadius","_getViewBox","_getStrokeCircumference","_getStrokeDashOffset","_getCircleStrokeWidth","_getCircleTransformOrigin","currentScale","styleRoot","currentDiameter","diameters","diametersForElement","styleTag","_getAnimationText","strokeCircumference","MatProgressSpinnerModule","MAT_RADIO_DEFAULT_OPTIONS","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","MatRadioGroup","MAT_RADIO_GROUP","_labelPosition","_updateRadioButtonNames","_markRadiosForCheck","_updateSelectedRadioFromValue","_checkSelectedRadioButton","_touch","_radios","isAlreadySelected","MatRadioChange","_MatRadioGroupBase","MatRadioButton","_MatRadioButtonMixinBase","radioGroup","_radioDispatcher","_providerOverride","newCheckedState","_setDisabled","_onInputInteraction","groupValueChanged","_previousTabIndex","_MatRadioButtonBase","radioDispatcher","providerOverride","MatRadioModule","_panelDoneAnimatingStream","matSelectAnimations","transformPanelWrap","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","_MatSelectMixinBase","MAT_SELECT_TRIGGER","MatSelectTrigger","_parentFormField","_panelOpen","_triggerAriaLabelledBy","_destroy","_valueId","_overlayPanelClass","_disableOptionCentering","disableOptionCentering","optionSelectionChanges","_openedStream","_closedStream","typeaheadDebounceInterval","_typeaheadDebounceInterval","hasAssigned","_panelDoneAnimating","_initKeyManager","_resetOptions","newAriaLabelledby","_getTriggerAriaLabelledby","_previousControl","_highlightCorrectOption","triggerValue","_handleOpenKeydown","_handleClosedKeydown","isOpenKey","previouslySelectedOption","selectedOption","hasDeselectedOptions","previouslyFocusedIndex","_onAttached","_overlayDir","_positioningSettled","_getPanelTheme","_selectOptionByValue","_scrollOptionIntoView","changedOrDestroyed","_onSelect","sortComparator","_getChangeEvent","_getAriaActiveDescendant","_MatSelectBase","_scrollTop","_triggerFontSize","_transformOrigin","_positions","_calculateOverlayScroll","scrollBuffer","maxScroll","_getItemHeight","optimalScrollPosition","_triggerRect","_calculateOverlayPosition","SELECT_PANEL_MAX_HEIGHT","_calculateOverlayOffsetX","MatSelectChange","paddingWidth","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_PADDING_X","_calculateOverlayOffsetY","optionHeightAdjustment","maxOptionsDisplayed","optionOffsetFromPanelTop","_getItemCount","partialItemHeight","_checkOverlayWithinViewport","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","panelHeightBottom","totalPanelHeight","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","scrollContainerHeight","selectedOptionOffset","SELECT_ITEM_HEIGHT_EM","MatSelect","_onBackdropClicked","matDrawerAnimations","transformDrawer","MAT_DRAWER_DEFAULT_AUTOSIZE","MAT_DRAWER_CONTAINER","_container","_contentMarginChanges","MatDrawerContent","MatDrawerContainer","_elementFocusedBeforeDrawerWasOpened","_enableAnimations","_mode","_disableClose","_animationStarted","_animationEnd","openedStart","mapTo","closedStart","onPositionChanged","_modeChanged","_takeFocus","_isFocusWithinDrawer","_openedVia","_updatePositionInParent","_updateFocusTrapState","_autoFocus","hasMovedFocus","activeEl","openedVia","_closeViaBackdropClick","_setOpen","_getWidth","MatDrawer","defaultAutosize","_drawers","_doCheckSubject","_contentMargins","_validateDrawers","updateContentMargins","_autosize","_start","_end","autosize","_backdropOverride","_userContent","_content","_allDrawers","drawer","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","_isDrawerOpen","_left","_right","_setContainerClass","onMicrotaskEmpty","_closeModalDrawersViaBackdrop","_canHaveBackdrop","_isShowingBackdrop","MatSidenavContent","MatSidenavContainer","_fixedInViewport","_fixedTopGap","_fixedBottomGap","fixedInViewport","fixedTopGap","fixedBottomGap","MatSidenav","MatSidenavModule","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","disableToggleValue","MAT_SLIDE_TOGGLE_VALUE_ACCESSOR","MatSlideToggle","_MatSlideToggleBase","_onChangeEvent","MatSlideToggleChange","MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR","MatSlideToggleRequiredValidator","_MatSlideToggleRequiredValidatorModule","MatSlideToggleModule","activeEventOptions","MAT_SLIDER_VALUE_ACCESSOR","MatSlider","_MatSliderBase","_invert","_step","_thumbLabel","_tickInterval","_percent","_isSliding","_isActive","_tickIntervalPercent","_sliderDimensions","_dirChangeSubscription","_touchId","sliderHost","getTouchIdForSlider","getPointerPositionOnPage","_lastPointerEvent","_focusHostElement","_onMouseenter","_bindGlobalEvents","_updateValueFromPosition","_valueOnSlideStart","cancelable","_emitInputEvent","findMatchingTouch","_removeGlobalEvents","_windowBlur","_calculatePercentage","_roundToDecimal","thumbLabel","tickInterval","_blurHostElement","_clamp","_shouldInvertAxis","_isMinValue","_getThumbGap","_getTrackBackgroundStyles","_shouldInvertMouseCoords","_getTrackFillStyles","_getTicksContainerStyles","_getDirection","_getTicksStyles","tickSize","backgroundSize","shouldInvertAxis","_getThumbContainerStyles","_getSliderDimensions","_updateTickIntervalPercent","_increment","_onKeyup","triggerEvent","moveEventName","endEventName","numSteps","clampedValue","posComponent","exactValue","_calculateValue","closestValue","_createChangeEvent","tickIntervalPercent","trackSize","pixelsPerStep","pixelsPerTick","isSafeNumber","MatSliderChange","percentage","_sliderWrapper","MatSliderModule","MAT_SNACK_BAR_DATA","announcementMessage","verticalPosition","MAX_TIMEOUT","containerInstance","_afterDismissed","_onAction","_dismissedByAction","_onExit","_finishDismiss","dismiss","_durationTimeoutId","dismissWithAction","closeWithAction","_dismissAfter","dismissedByAction","_onEnter","onAction","snackBarRef","hasAction","SimpleSnackBar","MatSnackBarRef","matSnackBarAnimations","snackBarState","snackBarConfig","_announceDelay","_onAnnounce","_assertNotAttached","_applySnackBarClasses","_live","_role","_completeExit","onEnter","_screenReaderAnnounce","_announceTimeoutId","panelClasses","inertElement","liveElement","MatSnackBarContainer","MatSnackBarConfig","MatSnackBarModule","MAT_SNACK_BAR_DEFAULT_OPTIONS","_breakpointObserver","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","_openedSnackBarRef","openFromComponent","_attach","openFromTemplate","simpleSnackBarComponent","_attachSnackBarContainer","snackBarContainerComponent","userConfig","handsetCssClass","_animateSnackBar","isLeft","_MatSnackBarBase","i3$2","live","breakpointObserver","parentSnackBar","defaultConfig","MatSnackBar","_disableViewStateAnimation","SORT_ANIMATION_TRANSITION","matSortAnimations","indicator","leftPointer","rightPointer","arrowOpacity","arrowPosition","allowChildren","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER","MAT_SORT_DEFAULT_OPTIONS","_MatSortBase","sortables","_disableClear","sortable","getNextSortDirection","sortDirectionCycle","getSortDirectionCycle","nextDirectionIndex","MatSort","_MatSortHeaderBase","_columnDef","_ariaDescriber","_showIndicatorHint","_viewState","_arrowDirection","_sortActionDescription","_handleStateChanges","sortActionDescription","_updateSortActionDescription","_updateArrowDirection","_setAnimationTransitionState","_isSorted","_sortButton","_setIndicatorHintVisible","_isDisabled","viewState","_toggleOnInteraction","_getArrowDirectionState","_getArrowViewState","_getAriaSortAttribute","_renderArrow","newDescription","MatSortHeader","MatSortModule","CdkStepHeader","CdkStepLabel","STEP_STATE","STEPPER_GLOBAL_OPTIONS","_stepper","stepperOptions","interacted","interactedStream","_optional","_completedOverride","_customError","_stepperOptions","_displayDefaultIndicatorType","displayDefaultIndicatorType","completed","_getDefaultCompleted","stepControl","_getDefaultError","_stateChanged","_markAsInteracted","CdkStep","CdkStepper","_sortedHeaders","_linear","_selectedIndex","_groupId","linear","_steps","_anyControlsInvalidOrPending","_updateSelectedItemIndex","_stepHeader","_layoutDirection","_getStepLabelId","_getStepContentId","_getAnimationDirection","_getIndicatorType","isCurrentStep","_isCurrentStep","_getDefaultIndicatorLogic","_getGuidelineLogic","_getFocusIndex","stepsArray","previouslySelectedIndex","selectedStep","previouslySelectedStep","stepperElement","CdkStepperNext","CdkStepperPrevious","CdkStepperModule","MatStepLabel","optionalLabel","completedLabel","editableLabel","MatStepperIntl","MAT_STEPPER_INTL_PROVIDER","_MatStepHeaderBase","_intlSubscription","_stringLabel","_templateLabel","_getIconContext","_getDefaultTextForState","MatStepHeader","matStepperAnimations","horizontalStepTransition","verticalStepTransition","MatStepperIcon","MatStepContent","stepper","_errorStateMatcher","originalErrorState","customErrorState","MatStep","MatStepper","_MatProxyStepperBase","MatHorizontalStepper","MatVerticalStepper","animationDone","_iconOverrides","_icons","_stepIsNavigable","MatStepperNext","MatStepperPrevious","MatStepperModule","MatRecycleRows","MatTable","MatCellDef","MatHeaderCellDef","MatFooterCellDef","MatColumnDef","MatHeaderCell","MatFooterCell","MatCell","MatHeaderRowDef","MatFooterRowDef","MatRowDef","MatHeaderRow","MatFooterRow","MatRow","MatNoDataRow","MatTextColumn","MatTableModule","initialData","_renderData","_filter","_internalPageChanges","_renderChangesSubscription","sortHeaderId","_isNumberValue","numberValue","valueA","valueB","valueAType","valueBType","comparatorResult","dataStr","transformedFilter","_updateChangeSubscription","_filterData","orderedData","_orderData","paginatedData","_pageData","_updatePaginator","filteredDataLength","lastPageIndex","newPageIndex","_MatTableDataSource","_tabFocusChanged","_removeTabBodyWrapperHeight","_setTabBodyWrapperHeight","_MAT_INK_BAR_POSITIONER","offsetLeft","_inkBarPositioner","alignToElement","inkBar","MatInkBar","MAT_TAB_CONTENT","MatTabContent","MAT_TAB_LABEL","MAT_TAB","_closestTab","MatTabLabel","_MatTabBase","MAT_TAB_GROUP","_closestTabGroup","textLabel","_contentPortal","templateLabel","_setTemplateLabelInput","_explicitContent","_implicitContent","MatTab","matTabsAnimations","translateTab","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","isCentering","_afterLeavingCenter","MatTabBodyPortal","MatTabBody","_translateTabComplete","_onCentering","_onCentered","animationDuration","_computePositionAnimationState","_positionIndex","_computePositionFromOrigin","_onTranslateTabStarted","_getLayoutDirection","_MatTabBodyBase","MAT_TABS_CONFIG","_MatTabLabelWrapperBase","getOffsetLeft","getOffsetWidth","MatTabLabelWrapper","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","disablePagination","selectFocusedIndex","indexFocused","_stopInterval","_previousPaginator","_handlePaginatorPress","_nextPaginator","dirChange","realign","updatePagination","_alignInkBarToSelectedTab","_itemsResized","_getMaxScrollDistance","newFocusIndex","_setTabFocus","ResizeObserver","tabItems","resizeObserver","_tabLabelCount","_scrollToLabel","_checkScrollingControls","_scrollDistanceChanged","_updateTabScrollPosition","focusIndex","_itemSelected","_onContentChanges","_currentTextContent","_checkPaginationEnabled","containerEl","_tabListContainer","scrollDistance","translateX","_tabList","_scrollTo","_scrollHeader","scrollAmount","_handlePaginatorClick","labelIndex","selectedLabel","viewLength","labelBeforePos","labelAfterPos","_tabListInner","beforeVisiblePos","afterVisiblePos","EXAGGERATED_OVERSCROLL","selectedItem","selectedLabelWrapper","_inkBar","mouseEvent","timer","maxScrollDistance","MatPaginatedTabHeader","_MatTabHeaderBase","MatTabHeader","_MatTabGroupMixinBase","_tabs","_indexToSelect","_lastFocusedTabIndex","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","headerPosition","focusChange","selectedTabChange","dynamicHeight","contentTabIndex","_dynamicHeight","_animationDuration","_contentTabIndex","_backgroundColor","indexToSelect","_clampTabIndex","isFirstRun","_tabBodyWrapper","_subscribeToAllTabChanges","_subscribeToTabLabels","_allTabs","realignInkBar","_tabHeader","focusTab","MatTabChangeEvent","_getTabLabelId","_getTabContentId","tabHeader","_MatTabGroupBase","MatTabGroup","i7$1","updateActiveLink","tabPanel","_activeTabId","_getRole","_MatTabNavBase","MatTabNav","MatTabLink","_MatTabLinkMixinBase","_tabNavBar","_getAriaControls","_getAriaCurrent","_MatTabLinkBase","tabNavBar","_tabLinkRipple","MatTabNavPanel","MatTabsModule","PANEL_CLASS","passiveListenerOptions","MAT_TOOLTIP_SCROLL_STRATEGY","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","SCROLL_THROTTLE_MS","MAT_TOOLTIP_DEFAULT_OPTIONS","showDelay","hideDelay","touchendHideDelay","_viewInitialized","_pointerExitEventsInitialized","_cssClassPrefix","_showDelay","_hideDelay","touchGestures","_message","_passiveListeners","_updatePosition","_tooltipInstance","_setupPointerEnterEventsIfNeeded","_mouseLeaveHideDelay","_isTooltipVisible","_updateTooltipMessage","tooltipClass","_tooltipClass","_setTooltipClass","_touchstartTimeout","_showTimeoutId","_hideTimeoutId","_tooltipComponent","afterHidden","scrollableAncestors","_updateCurrentPositionClass","_handleBodyInteraction","disableTooltipInteractivity","_getOrigin","_addOffset","main","isLtr","originPosition","_invertPosition","overlayPosition","_currentPosition","classPrefix","_platformSupportsMouseEvents","_setupPointerExitEventsIfNeeded","_disableNativeGesturesIfNecessary","LONGPRESS_DELAY","_addListeners","exitListeners","newTarget","_wheelListener","touchendListener","elementUnderPointer","gestures","msUserSelect","webkitUserSelect","MozUserSelect","webkitUserDrag","touchAction","_MatTooltipBase","ariaDescriber","TooltipComponent","MatTooltip","_visibility","_closeOnInteraction","_isVisible","_onHide","_toggleVisibility","_handleMouseLeave","_onShow","_handleAnimationEnd","_showAnimation","_hideAnimation","_finalizeAnimation","toVisible","tooltip","_tooltip","showClass","hideClass","_TooltipComponentBase","_isHandset","NG_DEV_MODE$1","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","driver","normalizer","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","isSameOffset","normalizedKeyframe","normalizedProp","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","LINE_START","animationFailed","player","copyAnimationEvent","phaseName","makeAnimationEvent","triggerName","command","separatorPos","_contains","elm1","elm2","_query","_documentElement","isNode","getParentElement","_CACHED_BODY","_IS_WEBKIT","getBodyNode","containsVendorPrefix","camelProp","containsElement","invokeQuery","validateStyleProperty","matchesElement","_selector","computeStyle","easing","previousPlayers","scrubberAccessRequested","NoopAnimationDriver","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","_convertTimeValueToMS","timings","allowNegativeValues","invalidTimingValue","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","parseTimeExpression","readPrototype","copyObj","styleAttrValue","getStyleAttributeString","camelCaseToDashCase","formerStyles","dashCaseToCamelCase","writeStyleAttribute","extractStyleParams","varName","invalidStyleParams","PARAM_REGEX","original","localVal","invalidParamValue","arr","DASH_CASE_REGEXP","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","ANY_STATE","transitionValue","expressions","eventStr","invalidTransitionAlias","parseAnimationAlias","expr","invalidExpression","makeLambdaFromStates","isFullAnyStateExpr","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN","SELF_TOKEN_REGEX","warnings","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","visitDslNode","normalizeAnimationEntry","unsupportedCSSPropertiesFound","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","transitions","invalidTrigger","definitions","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","stylesObj","metadataName","invalidState","missingSubsArr","parseTransitionExpr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","resolveTiming","strValue","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","invalidStyleValue","collectedEasing","styleData","styleMap","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","firstStart","firstEnd","secondStart","secondEnd","invalidParallelAnimation","validateStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","includeSelf","hasAmpersand","normalizeSelector","getOrSetAsInMap","originalSelector","invalidStagger","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","ElementInstructionMap","AnimationTimelineContext","currentTimeline","setStyles","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","resolveTimingValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","interpolateParams","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","parentContext","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","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","allStyles","allProperties","copyStyles","flattenStyles","getFinalKeyframe","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","timeAtKeyframe","decimalPoints","mult","AnimationStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","invalidCssUnitValue","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","_triggerName","_stateStyles","currentState","nextState","matchFns","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","buildAnimationTimelines","createTransitionInstruction","queriedElementsList","defaultParams","combinedParams","styleObj","_normalizer","transitionFactories","AnimationStateStyles","balanceProperties","AnimationTransitionFactory","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","key1","key2","EMPTY_INSTRUCTION_MAP","bodyNode","_animations","_playersById","buildAnimationAst","registerFailed","_buildPlayer","normalizeKeyframes","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","optimizeGroupPlayer","_getPlayer","missingPlayer","baseEvent","listenOnPlayer","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","StateValue","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","k1","k2","objEquals","reportError","eraseStyles","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","stateMap","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","d0","elementContainsData","containsData","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","AnimationTransitionNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","nextNamespace","registerTrigger","_fetchNamespace","nsId","isElementNode","markElementAsDisabled","isHostElement","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","STAR_CLASSNAME","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","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","_queueEvent","valuesMap","elementPropsMap","defaultStyle","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","_triggerCache","_transitionEngine","TransitionAnimationEngine","_timelineEngine","TimelineAnimationEngine","componentId","cacheKey","triggerBuildFailed","AnimationTrigger","buildTrigger","onInsert","onRemove","disableAnimations","parseTimelineCommand","eventPhase","_startStyles","_endStyles","initialStyles","SpecialCasedStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_finished","_started","currentSnapshot","_duration","_delay","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","methods","playerOptions","previousStyles","previousWebAnimationPlayers","WebAnimationsPlayer","allowPreviousPlayerStylesMerge","previousStyleProps","startingKeyframe","missingStyleProps","balancePreviousStylesIntoKeyframes","specialStyles","startStyles","endStyles","filterNonAnimatableStyles","packageNonAnimatableStyles","AnimationBuilder","rootRenderer","_nextAnimationId","typeData","ViewEncapsulation","issueAnimationCommand","BrowserAnimationFactory","BrowserAnimationBuilder","AnimationFactory","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","delegate","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","promise","BaseAnimationRenderer","animationTriggers","AnimationRenderer","_scheduleCountTask","scheduleListenerCallback","AnimationRendererFactory","destroyNode","createText","newChild","refChild","isMove","oldChild","selectRootElement","selectorOrNode","preserveContent","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","countId","ɵAnimationEngine","InjectableAnimationEngine","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","ɵWebAnimationsStyleNormalizer","RendererFactory2","ɵDomRendererFactory2","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","BrowserModule","NoopAnimationsModule","ɵDomAdapter","supportsDOMEvents","GenericBrowserDomAdapter","ɵsetRootDomAdapter","BrowserDomAdapter","onAndCancel","evt","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","baseElement","getBaseElementHref","urlParsingNode","pathName","relativePath","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","APP_INITIALIZER","transitionId","ApplicationInitStatus","donePromise","dom","setTestabilityGetter","BrowserGetTestability","registry","ɵglobal","findInAncestors","testability","testabilities","didWork","didWork_","whenAllStable","BrowserXhr","EVENT_MANAGER_PLUGINS","plugins","_eventNameToPlugin","_plugins","plugin","_findPluginFor","addGlobalEventListener","getZone","EventManager","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","SharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","DomSharedStylesHost","NAMESPACE_URIS","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","componentShortId","compId","eventHandler","allowDefaultBehavior","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","DomRendererFactory2","APP_ID","namespaceUri","setAttributeNS","removeAttributeNS","RendererStyleFlags2","decoratePreventDefault","contentAttr","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","nodeOrShadowRoot","EventManagerPlugin","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Down","Menu","Win","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","makeCurrent","INTERNAL_BROWSER_PLATFORM_PROVIDERS","ɵPLATFORM_BROWSER_ID","PLATFORM_INITIALIZER","initDomAdapter","ɵsetDocument","platformBrowser","createPlatformFactory","platformCore","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","Testability","XhrFactory","ApplicationModule","_dom","addTag","forceCreation","_getOrCreateElement","addTags","attrSelector","getTags","updateTag","_parseSelector","_setMetaElementAttributes","removeTagElement","_containsAttributes","_getMetaKeyMap","META_KEYS_MAP","Meta","createMeta","httpEquiv","getTitle","setTitle","newTitle","createTitle","COMPILED","win","msPerTick","numTicks","appRef","timeChangeDetection","profileName","isProfilerAvailable","performanceNow","profileEnd","ChangeDetectionPerfRecord","PROFILER_GLOBAL_NAME","exportNgVar","AngularProfiler","escapedText","store","onSerializeCallbacks","initState","transferState","TransferState","hasKey","onSerialize","toJson","BrowserTransferStateModule","initialState","unescapedText","unescapeHtml","debugElement","msMatchesSelector","webkitMatchesSelector","elementMatches","debugNode","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_GESTURE_CONFIG","HAMMER_LOADER","overrides","buildHammer","Hammer","HammerGestureConfig","_loaderPromise","isCustomEvent","cancelRegistration","eventObj","off","HammerGesturesPlugin","HammerModule","ɵConsole","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","RouterEvent","navigationTrigger","restoredState","shouldActivate","routeConfig","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segmentGroup","posParams","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","containsSegmentGroup","paramCompareMap","shallowEqual","ignored","fragment","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","serialize","serializePaths","parameterMap","_parameterMap","serializePath","UrlParser","UrlTree","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeURI","encodeUriFragment","DefaultUrlSerializer","primary","childOutlet","mapChildrenIntoArray","encodeUriString","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","UrlSegmentGroup","parseChildren","parseQueryParam","parseSegment","parseParens","matchSegments","UrlSegment","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","currentVal","allowPrimary","outletName","_root","pathFromRoot","findPath","Tree","setRouterState","urlTree","rootComponent","activated","ActivatedRouteSnapshot","RouterStateSnapshot","TreeNode","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","RouterState","futureSnapshot","_futureSnapshot","_routerState","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","curr","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","serializeNode","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","parentsMismatch","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createNode","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","commands","nav","Navigation","numberOfDoubleDots","isAbsolute","cmdIdx","segmentPath","urlPart","partIndex","computeNavigation","toRoot","startingPosition","processChildren","isMatrixParams","createPositionApplyingDoubleDots","findStartingPosition","updateSegmentGroupChildren","updateSegmentGroup","oldRoot","oldSegmentGroup","newSegmentGroup","qp","newRoot","replaceSegment","oldSegment","newSegment","cmdWithOutlet","isCommandWithOutlets","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","createNewSegmentChildren","futureState","currState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","contexts","nodeChildrenAsMap","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","attachRef","activateRoutes","ActivationEnd","ChildActivationEnd","getOrCreateContext","stored","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","routes","INITIAL_VALUE","scan","isPending","innerAcc","isUrlTree","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","OutletContext","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","isActivated","activatedRouteData","cmp","childContexts","OutletInjector","RouterOutlet","parentPath","validateNode","getFullPath","validateConfig","currentRoute","standardizeConfig","ɵEmptyOutletComponent","sortedConfig","getOutlet","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","defaultUrlMatcher","slicedSegments","emptyPathMatch","containsEmptyPathMatchesWithNamedOutlets","primarySegment","_sourceSegment","_segmentIndexShift","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","rawSegment","NoMatch$1","newTree","AbsoluteRedirect","moduleInjector","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","urlTrees$","expandSegmentGroup","squashSegmentGroup","noMatchError","mapped$","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","last$1","expanded$","expandSegmentAgainstRoute","EmptyError","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","mergeMap","newSegments","rawSegmentGroup","cfg","childConfig$","getChildConfig","routerConfig","childModule","childConfig","splitSegmentGroup","matchedOnOutlet","LoadedRouterConfig","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","isCanLoad","wrapIntoObservable","prioritizedGuardValue","applyRedirectCreatreUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","newChildren","childCandidate","mergeTrivialChildren","ApplyRedirects","applyRedirects$1","extractedUrl","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","CanActivate","CanDeactivate","getRouteGuards","targetSnapshot","guardsResult","futureRSS","currRSS","currARS","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","ChildActivationStart","fireChildActivationStart","ActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChildGuards","canActivateChild","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivateChild","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","rootComponentType","recognize","processSegmentGroup","freeze","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","serializer","Recognizer","newObservableError","NoMatch","recognize$1","canActivateChecksResolved","getDataKeys","getResolver","takeLast","resolveNode","resolvedData","runResolve","nextResult","detachedTree","ROUTES","compiler","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","moduleFactory$","loadModuleFactory","ConnectableObservable","NgModuleFactory","shouldProcessUrl","extract","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","errorHandler","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","hooks","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","DefaultUrlHandlingStrategy","DefaultRouteReuseStrategy","urlUpdateStrategy","canceledNavigationResolution","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","RouterConfigLoader","RouteConfigLoadStart","RouteConfigLoadEnd","routerState","createEmptyState","targetPageId","currentRawUrl","rawUrl","extras","currentRouterState","targetRouterState","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","errored","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","NavigationStart","serializeUrl","applyRedirects","finalUrl","skipLocationChange","setBrowserUrl","routesRecognized","RoutesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","GuardsCheckStart","getAllRouteGuards","checkGuards","guardsEnd","GuardsCheckEnd","restoreHistory","cancelNavigationTransition","resolveStart","ResolveStart","dataResolved","resolveData","resolveEnd","ResolveEnd","createRouterState","ActivateRoutes","cancelationReason","isNavigationCancelingError","redirecting","navCancel","NavigationCancel","mergedTree","scheduleNavigation","navError","NavigationError","resetRootComponentType","setTransition","initialNavigation","setUpLocationChangeListener","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","validateCommands","matchOptions","containsTree","NavigationEnd","priorPromise","rej","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","Router","tabIndexAttribute","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","attrBoolValue","RouterLink","locationStrategy","updateTargetUrlAndHref","RouterLinkWithHref","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","linksWithHrefs","mergeAll","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","RouterLinkActive","preload","preloadingStrategy","onEndLoad","setUpPreloading","processRoutes","preloadConfig","RouterPreloader","PreloadingStrategy","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","RouterScroller","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","UrlSerializer","assignExtraOptionsToRouter","enableTracing","groupEnd","Compiler","NoPreloading","NgProbeToken","RouterModule","provideRoutes","provideForRootGuard","Inject","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","APP_BOOTSTRAP_LISTENER","provideRouterInitializer","platformLocationStrategy","useHash","ANALYZE_FOR_ENTRY_COMPONENTS","initNavigation","resultOfPreactivationDone","appInitializer","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","componentTypes","Ei","Jn","Hi","bi","Qa","Ma","Za","load_table","parse_date_code","is_date","get_table","yr","Lr","Ba","qa","lo","Gr","Kr","FileIndex","FullPaths","Ss","No","Yr","Oo","clsid","tm","Ai","rl","write_shift","Nx","$h","L1","Qs","Mo","Lo","MAXREGSECT","DIFSECT","FATSECT","ENDOFCHAIN","FREESECT","HEADER_SIGNATURE","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","HEADER_CLSID","EntryTypes","fs","vs","Ya","Iu","Vm","Mc","Xc","usz","csz","yC","qv","unsafe","htm","gif","jpg","png","mso","thmx","sh33tj5","Vx","cfb_new","cfb_add","cfb_del","cfb_mov","cfb_gc","ReadShift","CheckField","prep_blob","bconcat","use_zlib","_deflateRaw","_inflateRaw","_bufs","numFmtId","ich","workbooks","xlsx","xlsm","xlsb","xlam","xltx","strs","comments","sheets","charts","macros","Extension","PartName","ContentType","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","CORE_PROPS","EXT_PROPS","CUST_PROPS","SST","STY","THEME","CHART","CHARTEX","DS","IMG","DRAW","XLMETA","TCMNT","PEOPLE","CONN","VBA","fmtid","pid","LastAuthor","RevNumber","Application","LastPrinted","ModifiedDate","Manager","Company","AppVersion","ContentStatus","Identifier","SystemIdentifier","bm","ixfe","BIFFVer","Unsynced","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","cf","fIcon","pd","chKey","itab","rgce","fmt","wch","DBF","to_workbook","to_sheet","from_sheet","Wo","AA","AE","AI","AO","AU","Ao","KC","DN","Workbook","WBProps","Sheet","jr","codepage","Jr","date1904","Ru","gf","Xo","Ic","Ro","wu","Q_","sheet_to_wk1","book_to_wk3","Ls","Jf","Pm","None","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinHorzCross","n_","eg","J_","q_","i_","a_","lf","Bd","ag","r_","xfId","builtinId","df","uf","family","scheme","patternType","Om","s_","fontId","fillId","borderId","og","mf","ug","Lu","joinstyle","gradientshapeok","color2","fillcolor","strokecolor","providerId","Vl","biff","Pg","Rp","xf","yf","hv","Mg","ixti","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","Kh","kg","Og","Ag","Of","Rg","fv","_v","Lg","Af","Ng","mh","applyNumberFormat","lp","f0","xv","_0","Sv","Mp","Target","sheetStubs","summaryBelow","workbookViewId","Views","defaultRowHeight","baseColWidth","outlineLevelRow","So","Pa","numberStoredAsText","N1","I0","D0","G1","P0","T0","EC","S0","U1","RTL","cp","q1","Z1","ay","oy","W0","gy","iTabID","WBView","j0","vy","Cell","above","o_","tg","nf","Types","f_","n1","Fixed","Index","Ref","ShowAlways","z_","ZC","revssf","General","Sy","enc","sbcch","snames","sharedf","arrayf","rrtabid","lastuser","winlocked","cellStyles","WTF","wy","mp","XF","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","rfx","Im","Xp","dyHeight","Pos","Dim","CurTab","FirstTab","TabRatio","cmo","fDialog","cxfs","area","ax","rS","oS","Qm","Ug","Nm","Uu","fu","zg","Kv","l1","dense","Fv","textual","messages","jy","Yy","lS","Jo","nrows","sst","Vf","K_","Wv","ju","xm","Yp","Yv","Wu","cmnt","ferr","fmla","nfmt","ofmt","rsst","Ix","cS","Gv","e1","qy","jv","Hf","rels","coreprops","calcchains","TODO","Zy","Jy","Directory","Props","Custprops","Deps","Strings","Styles","Themes","SSF","g0","uniqueCount","codeName","dy","Fh","sf","oC","g1","aC","ep","tC","nodebuffer","jd","H0","v1","$g","Yf","sC","lC","xls","slk","socialcalc","Sh33tJS","Xg","Jg","encode_col","encode_row","encode_cell","encode_range","decode_col","decode_row","split_cell","decode_cell","decode_range","format_cell","sheet_add_aoa","sheet_add_json","sheet_add_dom","aoa_to_sheet","json_to_sheet","table_to_sheet","table_to_book","sheet_to_csv","sheet_to_txt","sheet_to_json","sheet_to_html","sheet_to_formulae","sheet_to_row_object_array","sheet_get_cell","book_new","book_append_sheet","book_set_sheet_visibility","T1","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","to_json","objectMode","to_html","to_csv","set_readable","parse_xlscfb","parse_zip","readFile","readFileSync","writeFile","writeFileSync","writeFileAsync","writeXLSX","writeFileXLSX","utils","set_fs","set_cptable","CFB"],"sourceRoot":"webpack:///","sources":["./src/app/admin360/attendance-administration/attendance-administration.service.ts","./src/app/admin360/attendance-administration/attendance-by-student/attendance-by-student.model.ts","./src/app/admin360/attendance-administration/modals/mass-update-student-attendance/mass-update-student-attendance.component.html","./src/app/admin360/attendance-administration/modals/mass-update-student-attendance/mass-update-student-attendance.component.ts","./src/app/admin360/attendance-administration/attendance-by-student/attendance-by-student.component.html","./src/app/admin360/attendance-administration/attendance-by-student/attendance-by-student.component.ts","./src/app/admin360/attendance-administration/modals/attendance-check-in-out-how-to-dialog/attendance-check-in-out-how-to-dialog.component.ts","./src/app/admin360/attendance-administration/modals/attendance-check-in-out-how-to-dialog/attendance-check-in-out-how-to-dialog.component.html","./src/app/admin360/attendance-administration/attendance-check-in-out/attendance-check-in-out.component.html","./src/app/admin360/attendance-administration/attendance-check-in-out/attendance-check-in-out.component.ts","./src/app/admin360/attendance-administration/attendance-check-in-out/attendance-check-in-out.model.ts","./src/app/admin360/attendance-administration/modals/check-in-out-modal-dialog/check-in-out-modal-dialog.component.html","./src/app/admin360/attendance-administration/modals/check-in-out-modal-dialog/check-in-out-modal-dialog.component.ts","./src/app/admin360/attendance-administration/review-absent-notices/review-absent-notices.service.ts","./src/app/admin360/customization/customization.service.ts","./src/app/admin360/e-forms/e-form-instances/e-form-instances-filter-param.ts","./src/app/admin360/e-forms/e-form-submissions/e-form-mark-submission/e-form-mark-submission.component.html","./src/app/admin360/e-forms/e-form-submissions/e-form-mark-submission/e-form-mark-submission.component.ts","./src/app/admin360/e-forms/e-form-submissions/e-form-submissions-filter-param.ts","./src/app/admin360/notifications/models/my-notification-group-override.model.ts","./src/app/admin360/notifications/models/my-notification.model.ts","./src/app/admin360/notifications/models/notification-event-permission-category.model.ts","./src/app/admin360/notifications/models/notification-group-event.model.ts","./src/app/admin360/notifications/models/notification-group-permission-group.model.ts","./src/app/admin360/notifications/models/notification-group.model.ts","./src/app/admin360/notifications/models/notification-area.model.ts","./src/app/admin360/notifications/models/notification-event.model.ts","./src/app/shared-components/security/permission-group.model.ts","./src/app/admin360/notifications/notifications.service.ts","./src/app/admin360/registration/detailed-registration/household-registration/household-family-document/select-student.pipe.ts","./src/app/admin360/registration/modals/registration-unsaved-changes-dialog/registration-unsaved-changes-dialog.component.html","./src/app/admin360/registration/modals/registration-unsaved-changes-dialog/registration-unsaved-changes-dialog.component.ts","./src/app/admin360/registration/registration-enrollment.service.ts","./src/app/admin360/student-info/teams/teams.service.ts","./src/app/auth.guard.ts","./src/app/classroom360/classroom-summary/classFilter.pipe.ts","./src/app/classroom360/classroom-summary/classroom-summary.service.ts","./src/app/classroom360/classroom-summary/models/classroom-summary-filter.ts","./src/app/classroom360/classroom-summary/models/classroom-summary.model.ts","./src/app/classroom360/classroom360.service.ts","./src/app/classroom360/data-query/data-query-category.model.ts","./src/app/classroom360/data-query/data-query-field-filter.model.ts","./src/app/classroom360/data-query/data-query-field-label/data-query-field-label.component.html","./src/app/classroom360/data-query/data-query-field-label/data-query-field-label.component.ts","./src/app/classroom360/data-query/data-query-field.model.ts","./src/app/classroom360/data-query/data-query-filters/group-condition-info-dialog/group-condition-info-dialog.component.ts","./src/app/classroom360/data-query/data-query-filters/group-condition-info-dialog/group-condition-info-dialog.component.html","./src/app/classroom360/data-query/data-query-filters/data-query-filter-table/data-query-filter-table.component.html","./src/app/classroom360/data-query/data-query-filters/data-query-filter-table/data-query-filter-table.component.ts","./src/app/classroom360/data-query/field-search/field-autofill-option.ts","./src/app/classroom360/data-query/data-query-information.ts","./src/app/classroom360/data-query/data-query-queries-button/view-query-properties-dialog/view-query-properties-dialog.component.ts","./src/app/classroom360/data-query/data-query-queries-button/view-query-properties-dialog/view-query-properties-dialog.component.html","./src/app/classroom360/data-query/data-query-queries-button/data-query-queries-button.component.ts","./src/app/classroom360/data-query/data-query-queries-button/data-query-queries-button.component.html","./src/app/classroom360/data-query/data-query-result-page.ts","./src/app/classroom360/data-query/data-query-result.model.ts","./src/app/classroom360/data-query/data-query-settings-for-export/insert-field-dialog/insert-field-dialog.component.html","./src/app/classroom360/data-query/data-query-settings-for-export/insert-field-dialog/insert-field-dialog.component.ts","./src/app/classroom360/data-query/data-query.model.ts","./node_modules/rxjs/_esm2015/internal/operators/retry.js","./src/app/shared-components/models/pagedContent.model.ts","./src/app/classroom360/data-query/add-edit-query-dialog/templates-from-classic-dialog/templates-from-classic-dialog.component.html","./src/app/classroom360/data-query/add-edit-query-dialog/templates-from-classic-dialog/templates-from-classic-dialog.component.ts","./src/app/classroom360/data-query/warning-dialog/warning-dialog.component.html","./src/app/classroom360/data-query/warning-dialog/warning-dialog.component.ts","./src/app/classroom360/data-query/add-edit-query-dialog/add-edit-query.component.html","./src/app/classroom360/data-query/add-edit-query-dialog/add-edit-query.component.ts","./src/app/classroom360/data-query/add-edit-query-dialog/import-error-dialog/import-error-dialog.component.html","./src/app/classroom360/data-query/add-edit-query-dialog/import-error-dialog/import-error-dialog.component.ts","./src/app/classroom360/data-query/data-query-function.model.ts","./src/app/classroom360/data-query/data-query-object.model.ts","./src/app/classroom360/data-query/data-query-operator.model.ts","./src/app/classroom360/data-query/data-query-parameter.model.ts","./src/app/classroom360/data-query/data-query-permissions.ts","./src/app/classroom360/data-query/data-query-transformation-field.model.ts","./src/app/classroom360/data-query/data-query-unsaved-changes-dialog/data-query-unsaved-changes-dialog.component.html","./src/app/classroom360/data-query/data-query-unsaved-changes-dialog/data-query-unsaved-changes-dialog.component.ts","./src/app/classroom360/data-query/no-relationships-warning-dialog/no-relationships-warning-dialog.component.html","./src/app/classroom360/data-query/no-relationships-warning-dialog/no-relationships-warning-dialog.component.ts","./src/app/classroom360/data-query/data-query.service.ts","./src/app/classroom360/data-query/delete-row-dialog/delete-row-dialog.component.ts","./src/app/classroom360/data-query/delete-row-dialog/delete-row-dialog.component.html","./src/app/classroom360/data-query/errors-exist-dialog/errors-exist-dialog.component.ts","./src/app/classroom360/data-query/errors-exist-dialog/errors-exist-dialog.component.html","./src/app/classroom360/data-query/field-search/field-search.component.html","./src/app/classroom360/data-query/field-search/field-search.component.ts","./src/app/classroom360/data-query/delete-query-dialog/delete-query-dialog.component.ts","./src/app/classroom360/data-query/delete-query-dialog/delete-query-dialog.component.html","./src/app/classroom360/data-query/view-queries-dialog/view-queries-dialog.component.html","./src/app/classroom360/data-query/view-queries-dialog/view-queries-dialog.component.ts","./src/app/classroom360/discipline-referral/discipline-referral-student.model.ts","./src/app/classroom360/discipline-referral/discipline-referral.model.ts","./src/app/classroom360/discipline-referral/discipline-referral.service.ts","./src/app/classroom360/gradebook/shared/models/preferences/gradebook-preferences.model.ts","./src/app/classroom360/gradebook/shared/shared-gradebook.service.ts","./src/app/classroom360/gradebook/v10/gradebook-V10.service.ts","./src/app/classroom360/gradebook/v10/gradebook-v10-standards.service.ts","./src/app/classroom360/gradebook/v10/modals/gradebook-access-defined/gradebook-access-defined.component.html","./src/app/classroom360/gradebook/v10/modals/gradebook-access-defined/gradebook-access-defined.component.ts","./src/app/classroom360/gradebook/v10/modals/init-gradebook-preferences/init-gradebook-preferences.component.ts","./src/app/classroom360/gradebook/v10/modals/init-gradebook-preferences/init-gradebook-preferences.component.html","./src/app/classroom360/gradebook/v10/models/grading-period.model.ts","./src/app/classroom360/gradebook/v9/gradebook-v9.service.ts","./src/app/classroom360/gradebook/v9/modals/gradebook-access-denied/gradebook-access-denied.component.html","./src/app/classroom360/gradebook/v9/modals/gradebook-access-denied/gradebook-access-denied.component.ts","./src/app/classroom360/guards/select-course/no-class-selected-warning-dialog/no-class-selected-warning-dialog.component.ts","./src/app/classroom360/guards/select-course/no-class-selected-warning-dialog/no-class-selected-warning-dialog.component.html","./src/app/classroom360/guards/select-course/select-course-dialog/select-course-dialog.component.html","./src/app/classroom360/guards/select-course/select-course-dialog/select-course-dialog.component.ts","./src/app/classroom360/links/add-link/add-link.component.html","./src/app/classroom360/links/add-link/add-link.component.ts","./src/app/classroom360/links/link.model.ts","./src/app/classroom360/staff-home/staff-cards/staff-cards.service.ts","./src/app/classroom360/student-lists/add-edit-student-list-dialog/add-edit-student-list-dialog.component.html","./src/app/classroom360/student-lists/add-edit-student-list-dialog/add-edit-student-list-dialog.component.ts","./src/app/classroom360/student-lists/student-list.model.ts","./src/app/classroom360/student-lists/student-lists.service.ts","./src/app/classroom360/student-notes/add-edit-note-dialog/add-edit-note-dialog.component.html","./src/app/classroom360/student-notes/add-edit-note-dialog/add-edit-note-dialog.component.ts","./src/app/classroom360/student-notes/student-note.model.ts","./src/app/classroom360/student-notes/student-note-filter.ts","./src/app/classroom360/student-notes/delete-note-dialog/delete-note-dialog.component.ts","./src/app/classroom360/student-notes/delete-note-dialog/delete-note-dialog.component.html","./src/app/classroom360/student-notes/no-categories-warning-dialog/no-categories-warning-dialog.component.ts","./src/app/classroom360/student-notes/no-categories-warning-dialog/no-categories-warning-dialog.component.html","./src/app/classroom360/student-notes/student-notes.component.html","./src/app/classroom360/student-notes/student-notes.component.ts","./src/app/classroom360/student-notes/student-notes.service.ts","./src/app/counselor360/behavior/behavior-events/behavior-events-filter-param.ts","./src/app/counselor360/behavior/behavior-interventions/behavior-interventions-filter-param.ts","./src/app/counselor360/behavior/behavior-letters/behavior-letter-viewer-modal/behavior-letter-viewer-modal.component.html","./src/app/counselor360/behavior/behavior-letters/behavior-letter-viewer-modal/behavior-letter-viewer-modal.component.ts","./src/app/counselor360/behavior/behavior.service.ts","./src/app/counselor360/behavior/models/behavior-event.model.ts","./src/app/counselor360/behavior/models/behavior-incident.model.ts","./src/app/counselor360/behavior/models/behavior-letter.model.ts","./src/app/counselor360/behavior/models/behavior-student.model.ts","./src/app/counselor360/scheduling/course-request-mgmt/district-course-request/remove-requirements/schools-for-remove-grade-level-requirements.model.ts","./src/app/counselor360/scheduling/course-request-mgmt/course-request-mgmt.service.ts","./src/app/counselor360/scheduling/course-request-mgmt/models/courserequestStudentSummary.model.ts","./src/app/counselor360/scheduling/schedule-folder/schedule-folder.model.ts","./src/app/counselor360/scheduling/schedule-folder/schedule-folder.service.ts","./src/app/counselor360/scheduling/schedule-student-list/schedule-slot.ts","./src/app/health360/staff-health/staff-health.model.ts","./src/app/management360/program-and-service/delete-program-service-dialog/delete-program-service-dialog.component.html","./src/app/management360/program-and-service/delete-program-service-dialog/delete-program-service-dialog.component.ts","./src/app/management360/program-and-service/program-and-service.service.ts","./src/app/student360/programs-and-services/programs-and-services-detail.model.ts","./src/app/management360/program-and-service/single-student/invalid-selection-dialog/invalid-selection-dialog.component.ts","./src/app/management360/program-and-service/single-student/invalid-selection-dialog/invalid-selection-dialog.component.html","./src/app/shared-components/program-and-service-fields/program-and-service-fields.component.html","./src/app/shared-components/program-and-service-fields/program-and-service-fields.component.ts","./src/app/management360/program-and-service/single-student/add-edit-program-service-single-student/add-edit-program-service-single-student.component.html","./src/app/management360/program-and-service/single-student/add-edit-program-service-single-student/add-edit-program-service-single-student.component.ts","./src/app/management360/program-and-service/single-student/single-student.component.html","./src/app/management360/program-and-service/single-student/single-student.component.ts","./src/app/management360/school/school-settings-attendance/school-settings-attendance.service.ts","./src/app/management360/staff/permissions-groups/permissions-groups.service.ts","./src/app/management360/staff/staff.service.ts","./src/app/shared-components/System.ts","./src/app/shared-components/add-attachment-dialog/add-attachment-dialog.component.html","./src/app/shared-components/add-attachment-dialog/add-attachment-dialog.component.ts","./src/app/shared-components/advanced-filter/advanced-filter.component.ts","./src/app/shared-components/angular-material/extended.class.ts","./src/app/shared-components/angular-material/mat-animations.ts","./node_modules/@angular/material/fesm2015/toolbar.mjs","./src/app/shared-components/angular-material/material.module.ts","./src/app/shared-components/attendance-check-in-out-legend/attendance-check-in-out-legend.component.ts","./src/app/shared-components/attendance-check-in-out-legend/attendance-check-in-out-legend.component.html","./src/app/shared-components/behavior/behavior-shared.service.ts","./src/app/shared-components/change-email/change-email-message/change-email-message.component.ts","./src/app/shared-components/change-email/change-email-message/change-email-message.component.html","./src/app/shared-components/change-email/change-email.component.ts","./src/app/shared-components/change-email/change-email.component.html","./src/app/shared-components/check-in-out-view-history-dialog/check-in-out-view-history-dialog.component.html","./src/app/shared-components/check-in-out-view-history-dialog/check-in-out-view-history-dialog.component.ts","./src/app/shared-components/controls/add-file/file-too-large-warning-dialog/file-too-large-warning-dialog.component.ts","./src/app/shared-components/controls/add-file/file-too-large-warning-dialog/file-too-large-warning-dialog.component.html","./src/app/shared-components/controls/add-file/add-file.component.html","./src/app/shared-components/controls/add-file/add-file.component.ts","./src/app/shared-components/controls/buttons/expand-collapse-buttons/expand-collapse-buttons.component.ts","./src/app/shared-components/controls/buttons/expand-collapse-buttons/expand-collapse-buttons.component.html","./src/app/shared-components/controls/buttons/save-cancel-buttons/save-cancel-buttons.component.html","./src/app/shared-components/controls/buttons/save-cancel-buttons/save-cancel-buttons.component.ts","./src/app/shared-components/controls/buttons/tyl-button.component.html","./src/app/shared-components/controls/buttons/tyl-button.component.ts","./src/app/shared-components/controls/error-prompt/error-list.model.ts","./src/app/shared-components/controls/error-prompt/errors.ts","./src/app/shared-components/controls/error-prompt/dimensions.ts","./src/app/shared-components/controls/error-prompt/error-prompt-messages.component.html","./src/app/shared-components/controls/error-prompt/error-prompt-messages.component.ts","./src/app/shared-components/controls/error-prompt/error-prompt.component.html","./src/app/shared-components/controls/error-prompt/error-prompt.component.ts","./src/app/shared-components/controls/filter/filter-notification/filter-notification.component.html","./src/app/shared-components/controls/filter/filter-notification/filter-notification.component.ts","./src/app/shared-components/controls/filter/has-filter.ts","./src/app/shared-components/controls/filter/filter-contents/filter-contents.component.html","./src/app/shared-components/controls/filter/filter-contents/filter-contents.component.ts","./src/app/shared-components/controls/filter/filter.component.html","./src/app/shared-components/controls/filter/filter.component.ts","./src/app/shared-components/controls/filter/filter.model.ts","./src/app/shared-components/controls/general-confirmation/general-confirmation.component.html","./src/app/shared-components/controls/general-confirmation/general-confirmation.component.ts","./src/app/shared-components/controls/grade-override-legend/grade-override-legend.component.html","./src/app/shared-components/controls/grade-override-legend/grade-override-legend.component.ts","./src/app/shared-components/controls/menus/menu-item.model.ts","./src/app/shared-components/controls/menus/tyl-general-mat-menu.component.html","./src/app/shared-components/controls/menus/tyl-general-mat-menu.component.ts","./src/app/shared-components/controls/menus/tyl-mat-menu.component.html","./src/app/shared-components/controls/menus/tyl-mat-menu.component.ts","./src/app/shared-components/controls/selected-sites-dialog/selected-site.ts","./src/app/shared-components/controls/selected-sites-dialog/selected-sites-dialog.component.html","./src/app/shared-components/controls/selected-sites-dialog/selected-sites-dialog.component.ts","./src/app/shared-components/controls/student-selection/student-selection.component.html","./src/app/shared-components/controls/student-selection/student-selection.component.ts","./src/app/shared-components/controls/tabs/tabs.ts","./src/app/shared-components/controls/tabs/tabs.component.html","./src/app/shared-components/controls/tabs/tabs.component.ts","./src/app/shared-components/controls/tyl-checkbox/tyl-checkbox.component.html","./src/app/shared-components/controls/tyl-checkbox/tyl-checkbox.component.ts","./src/app/shared-components/controls/tyl-form-field/tyl-form-field.component.html","./src/app/shared-components/controls/tyl-form-field/tyl-form-field.component.ts","./src/app/shared-components/controls/tyl-multiple-select-list/tyl-select-check-all.component.ts","./src/app/shared-components/controls/tyl-multiple-select-list/tyl-multiple-select-list.component.html","./src/app/shared-components/controls/tyl-multiple-select-list/tyl-multiple-select-list.component.ts","./src/app/shared-components/controls/tyl-radio-group/tyl-radio-group.component.html","./src/app/shared-components/controls/tyl-radio-group/tyl-radio-group.component.ts","./src/app/shared-components/controls/tyl-time-field/tyl-time-field.component.html","./src/app/shared-components/controls/tyl-time-field/tyl-time-field.component.ts","./src/app/shared-components/course-description-dialog/course-description-dialog.component.html","./src/app/shared-components/course-description-dialog/course-description-dialog.component.ts","./src/app/shared-components/course-search/course-search.service.ts","./src/app/shared-components/course-section-search/course-section-search.service.ts","./src/app/shared-components/custom-layouts/Models/custom-layout-type.model.ts","./src/app/shared-components/custom-layouts/Models/custom-layout.model.ts","./src/app/shared-components/custom-layouts/custom-layouts.service.ts","./src/app/shared-components/custom-layouts/Models/custom-layout-field.model.ts","./src/app/shared-components/custom-layouts/layout-editor/layout-unsaved-changes-dialog/layout-unsaved-changes-dialog.component.html","./src/app/shared-components/custom-layouts/layout-editor/layout-unsaved-changes-dialog/layout-unsaved-changes-dialog.component.ts","./src/app/shared-components/custom-layouts/pipes/get-field-display-name.pipe.ts","./src/app/shared-components/custom-layouts/layout-editor/layout-editor.component.html","./src/app/shared-components/custom-layouts/layout-editor/layout-editor.component.ts","./src/app/shared-components/custom-layouts/saved-layouts-dialog/saved-layouts-dialog.component.html","./src/app/shared-components/custom-layouts/saved-layouts-dialog/saved-layouts-dialog.component.ts","./src/app/shared-components/custom-page/custom-page.service.ts","./src/app/shared-components/directives/aria.directive.ts","./src/app/shared-components/directives/cdk-detail-row.directive.ts","./src/app/shared-components/directives/debounce.directive.ts","./src/app/shared-components/directives/decimal-format-validator.directive.ts","./src/app/shared-components/directives/external-link.directive.ts","./src/app/shared-components/directives/mask.directive.ts","./src/app/shared-components/directives/max-precision.directive.ts","./src/app/shared-components/directives/maximum-enforce.directive.ts","./src/app/shared-components/directives/minimum-enforce.directive.ts","./src/app/shared-components/directives/numbers-only.directive.ts","./src/app/shared-components/e-forms/e-form-attachment.model.ts","./src/app/shared-components/e-forms/e-form-column.model.ts","./src/app/shared-components/e-forms/e-form-config.model.ts","./src/app/shared-components/e-forms/e-form-control.model.ts","./src/app/shared-components/e-forms/e-form-designer/e-form-column/e-form-column.component.html","./src/app/shared-components/e-forms/e-form-designer/e-form-column/e-form-column.component.ts","./src/app/shared-components/e-forms/e-form-designer/e-form-control/e-form-control.component.html","./src/app/shared-components/e-forms/e-form-designer/e-form-control/e-form-control.component.ts","./src/app/shared-components/e-forms/e-form-tab.model.ts","./src/app/shared-components/e-forms/e-form-page.model.ts","./src/app/shared-components/e-forms/e-form-designer/e-form-designer.service.ts","./src/app/shared-components/e-forms/e-form-designer/e-form-row-column-location/e-form-row-column-location.html","./src/app/shared-components/e-forms/e-form-designer/e-form-row-column-location/e-form-row-column-location.ts","./src/app/shared-components/e-forms/e-form-designer/e-form-row/e-form-row.component.html","./src/app/shared-components/e-forms/e-form-designer/e-form-row/e-form-row.component.ts","./src/app/shared-components/e-forms/e-form-notes/e-form-notes.component.ts","./src/app/shared-components/e-forms/e-form-notes/e-form-notes.component.html","./src/app/shared-components/e-forms/e-form-row.model.ts","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-column/e-form-viewer-column.component.html","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-column/e-form-viewer-column.component.ts","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-control/e-form-viewer-control.component.html","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-control/e-form-viewer-control.component.ts","./src/app/shared-components/e-forms/e-form-survey-answer.model.ts","./src/app/admin360/e-forms/e-form-submissions/e-Form-PDF-Name/e-form-pdf-name.component.html","./src/app/admin360/e-forms/e-form-submissions/e-Form-PDF-Name/e-form-pdf-name.component.ts","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-modal/e-form-viewer-modal.component.html","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-modal/e-form-viewer-modal.component.ts","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-row/e-form-viewer-row.component.html","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-row/e-form-viewer-row.component.ts","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-header/e-form-viewer-header.component.html","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer-header/e-form-viewer-header.component.ts","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer.component.html","./src/app/shared-components/e-forms/e-form-viewer/e-form-viewer.component.ts","./src/app/shared-components/e-forms/e-form.model.ts","./src/app/shared-components/e-forms/e-form-database-field.model.ts","./src/app/shared-components/e-forms/e-form.service.ts","./src/app/shared-components/e-forms/e-formDataObject.model.ts","./src/app/shared-components/e-forms/merge-field.pipe.ts","./src/app/shared-components/e-forms/survey-answers-popup/get-survey-answer-by-field-id.pipe.ts","./src/app/shared-components/e-forms/survey-answers-popup/survey-answer-is-critical.pipe.ts","./src/app/shared-components/enter-csv-dialog/enter-csv-dialog.component.ts","./src/app/shared-components/enter-csv-dialog/enter-csv-dialog.component.html","./src/app/shared-components/export.service.ts","./src/app/shared-components/user-preferences/favorite-prefences.model.ts","./src/app/shared-components/favorites/favorites.component.html","./src/app/shared-components/favorites/favorites.component.ts","./src/app/shared-components/generic-list-selector/generic-list-selector.component.html","./src/app/shared-components/generic-list-selector/generic-list-selector.component.ts","./src/app/shared-components/generic-list-selector/generic-list.model.ts","./src/app/shared-components/guards/check-for-errors/check-for-errors-message/check-for-errors-message.component.html","./src/app/shared-components/guards/check-for-errors/check-for-errors-message/check-for-errors-message.component.ts","./src/app/shared-components/guards/check-for-errors/check-for-errors.guard.ts","./src/app/shared-components/guards/new-family-registration/new-family-registration.guard.ts","./src/app/shared-components/guards/unsaved-changes/unsaved-changes-message/unsaved-changes-message.component.ts","./src/app/shared-components/guards/unsaved-changes/unsaved-changes-message/unsaved-changes-message.component.html","./src/app/shared-components/guards/unsaved-changes/unsaved-changes.guard.ts","./src/app/shared-components/kendo/tyl-kendo-pdf-export/tyl-kendo-pdf-export.component.ts","./src/app/shared-components/kendo/tyl-kendo-pdf-export/tyl-kendo-pdf-export.component.html","./src/app/shared-components/lookup/lookup.model.ts","./src/app/shared-components/lookup/lookup.service.ts","./src/app/shared-components/mass-email-view/unselected-warning/unselected-warning.component.html","./src/app/shared-components/mass-email-view/unselected-warning/unselected-warning.component.ts","./src/app/shared-components/mass-email-view/no-email-warning/no-email-warning.component.html","./src/app/shared-components/mass-email-view/no-email-warning/no-email-warning.component.ts","./src/app/shared-components/mass-email-view/select-recipients/by-class-row-student/by-class-row-student.component.html","./src/app/shared-components/mass-email-view/select-recipients/by-class-row-student/by-class-row-student.component.ts","./src/app/shared-components/mass-email-view/select-recipients/by-team-row-student/by-team-row-student.component.html","./src/app/shared-components/mass-email-view/select-recipients/by-team-row-student/by-team-row-student.component.ts","./src/app/shared-components/mass-email-view/select-recipients/by-list-row-student/by-list-row-student.component.html","./src/app/shared-components/mass-email-view/select-recipients/by-list-row-student/by-list-row-student.component.ts","./src/app/shared-components/mass-email-view/select-recipients/select-recipients.pipe.ts","./src/app/shared-components/mass-email-view/select-recipients/select-recipients.component.html","./src/app/shared-components/mass-email-view/select-recipients/select-recipients.component.ts","./src/app/shared-components/mass-email-view/mass-email-attachment/mass-email-attachment.component.ts","./src/app/shared-components/mass-email-view/mass-email-attachment/mass-email-attachment.component.html","./src/app/shared-components/mass-email-view/send-emails-warning/send-emails-warning.component.html","./src/app/shared-components/mass-email-view/send-emails-warning/send-emails-warning.component.ts","./src/app/shared-components/job-sent-to-queue/job-sent-to-queue.component.ts","./src/app/shared-components/mass-email-view/view-recipients-modal/view-recipients-modal.component.html","./src/app/shared-components/job-sent-to-queue/job-sent-to-queue.component.html","./src/app/shared-components/mass-email-view/view-recipients-modal/view-recipients-modal.component.ts","./src/app/shared-components/mass-email-view/view-recipients-modal/email-recipient.ts","./src/app/shared-components/mass-email-view/send-test-email/send-test-email.component.ts","./src/app/shared-components/mass-email-view/send-test-email/send-test-email.component.html","./src/app/shared-components/mass-email-view/mass-email-view.component.html","./src/app/shared-components/mass-email-view/mass-email-view.component.ts","./src/app/shared-components/mass-email-view/mass-email.model.ts","./src/app/shared-components/mass-email-view/mass-email.service.ts","./src/app/shared-components/menu/menu-filter.pipe.ts","./src/app/shared-components/menu/child-menu.component.html","./src/app/shared-components/menu/child-menu.component.ts","./src/app/shared-components/menu/menu.component.html","./src/app/shared-components/menu/menu.component.ts","./src/app/shared-components/models/address.ts","./src/app/shared-components/models/attachment.model.ts","./src/app/shared-components/models/tyl-translation.model.ts","./src/app/shared-components/overlay-header/overlay-header.component.html","./src/app/shared-components/overlay-header/overlay-header.component.ts","./src/app/shared-components/page-header/page-header.component.html","./src/app/shared-components/page-header/page-header.component.ts","./src/app/shared-components/pipes/calculate-percent.pipe.ts","./src/app/shared-components/pipes/ellipsis.pipe.ts","./src/app/shared-components/pipes/get-designer-control-name.pipe.ts","./src/app/shared-components/pipes/highlight-search.pipe.ts","./src/app/shared-components/pipes/incident-type.pipe.ts","./src/app/shared-components/pipes/phone-number.pipe.ts","./src/app/shared-components/pipes/replace.pipe.ts","./src/app/shared-components/pipes/safe-html.pipe.ts","./src/app/shared-components/pipes/safe-resource-url.pipe.ts","./src/app/shared-components/pipes/tyl-translate.pipe.ts","./src/app/shared-components/portal.model.ts","./src/app/shared-components/profile-table/topic.ts","./src/app/shared-components/profile-table/profile-node.ts","./src/app/shared-components/profile-table/edit-topic-dialog/edit-topic-dialog.component.ts","./src/app/shared-components/profile-table/edit-topic-dialog/edit-topic-dialog.component.html","./src/app/shared-components/profile-table/delete-topic-dialog/delete-topic-dialog.component.ts","./src/app/shared-components/profile-table/delete-topic-dialog/delete-topic-dialog.component.html","./src/app/shared-components/profile-table/delete-profile-attachment-dialog/delete-profile-attachment-dialog.component.ts","./src/app/shared-components/profile-table/delete-profile-attachment-dialog/delete-profile-attachment-dialog.component.html","./src/app/shared-components/profile-table/profile-attachment.model.ts","./src/app/shared-components/profile-table/add-profile-attachment-dialog/add-profile-attachment-dialog.component.ts","./src/app/shared-components/profile-table/add-profile-attachment-dialog/add-profile-attachment-dialog.component.html","./src/app/shared-components/profile-table/attachments-menu-dialog/attachments-menu-dialog.component.html","./src/app/shared-components/profile-table/attachments-menu-dialog/attachments-menu-dialog.component.ts","./src/app/shared-components/profile-table/add-edit-content-dialog/add-edit-content-dialog.component.html","./src/app/shared-components/profile-table/add-edit-content-dialog/add-edit-content-dialog.component.ts","./src/app/shared-components/profile-table/profile-table.component.html","./src/app/shared-components/profile-table/profile-table.component.ts","./src/app/shared-components/profile-table/profile.model.ts","./src/app/shared-components/profile-table/profile.service.ts","./src/app/shared-components/profile-viewer-dialog/profile-viewer-dialog.component.html","./src/app/shared-components/profile-viewer-dialog/profile-viewer-dialog.component.ts","./src/app/shared-components/quill-text-only/quill-text-only.component.ts","./src/app/shared-components/quill-text-only/quill-text-only.component.html","./src/app/shared-components/routeInfo.ts","./src/app/shared-components/security/permissions.enums.ts","./src/app/shared-components/security/security.service.ts","./src/app/shared-components/self-check-in-out-history-dialog/self-check-in-out-history-dialog.component.html","./src/app/shared-components/self-check-in-out-history-dialog/self-check-in-out-history-dialog.component.ts","./src/app/shared-components/shared-components.module.ts","./src/app/admin360/student-info/health-information/medical-condition/medical-condition.model.ts","./src/app/shared-components/shared.service.ts","./src/app/shared-components/spinner/loader-service.component.ts","./src/app/shared-components/spinner/spinner.service.ts","./src/app/shared-components/staff-search/advanced-staff-search/advanced-staff-search.component.html","./src/app/shared-components/staff-search/advanced-staff-search/advanced-staff-search.component.ts","./src/app/shared-components/staff-search/staff-list-dialog/staff-list-dialog.component.html","./src/app/shared-components/staff-search/staff-list-dialog/staff-list-dialog.component.ts","./src/app/shared-components/staff-search/staff-search.component.html","./src/app/shared-components/staff-search/staff-search.component.ts","./src/app/shared-components/staff-search/staff-search.service.ts","./src/app/shared-components/staff-search/staff.model.ts","./src/app/shared-components/student-alerts/alerts-dialog/alerts-dialog.component.html","./src/app/shared-components/student-alerts/alerts-dialog/alerts-dialog.component.ts","./src/app/shared-components/student-alerts/student-alerts.component.html","./src/app/shared-components/student-alerts/student-alerts.component.ts","./src/app/shared-components/student-header/student-header.component.html","./src/app/shared-components/student-header/student-header.component.ts","./src/app/shared-components/student-header/student-image-dialog/student-image-dialog.component.ts","./src/app/shared-components/student-header/student-image-dialog/student-image-dialog.component.html","./src/app/shared-components/student-information/student-information.directive.ts","./src/app/shared-components/student-information/student-info-portal/student-info-portal.component.ts","./src/app/shared-components/student-information/student-info-portal/student-info-portal.component.html","./src/app/shared-components/student-information/student-information.component.html","./src/app/shared-components/student-information/student-information.component.ts","./src/app/shared-components/student-notes-shared/student-notes-shared.component.ts","./src/app/shared-components/student-notes-shared/student-notes-shared.component.html","./src/app/shared-components/student-search/student-list-modal/student-list-modal.component.html","./src/app/shared-components/student-search/student-list-modal/student-list-modal.component.ts","./src/app/shared-components/student-search/student-search-criteria.model.ts","./src/app/shared-components/directives/regex.directive.ts","./src/app/shared-components/student-search/student-search-preferences.ts","./src/app/shared-components/student-search/advanced-student-search/advanced-student-search.component.html","./src/app/shared-components/student-search/advanced-student-search/advanced-student-search.component.ts","./src/app/shared-components/student-search/student-search-warning/student-search-warning.component.ts","./src/app/shared-components/student-search/student-search-warning/student-search-warning.component.html","./src/app/shared-components/student-search/student-search.component.html","./src/app/shared-components/student-search/student-search.component.ts","./src/app/shared-components/student-search/student-search.service.ts","./src/app/shared-components/student/academic-history-summary.model.ts","./src/app/shared-components/student/course-schedule.model.ts","./src/app/shared-components/student/student-documents.model.ts","./src/app/shared-components/student/student-name/student-name.component.ts","./src/app/shared-components/student/student.model.ts","./src/app/shared-components/student/student.service.ts","./src/app/shared-components/students-to-add-dialog/students-to-add-dialog.component.html","./src/app/shared-components/students-to-add-dialog/students-to-add-dialog.component.ts","./src/app/shared-components/translation/translation.service.ts","./src/app/shared-components/tyl-cal-widget/tyl-cal-widget.component.html","./src/app/shared-components/tyl-cal-widget/tyl-cal-widget.component.ts","./node_modules/@angular/material-moment-adapter/fesm2015/material-moment-adapter.mjs","./src/app/shared-components/tyl-datepicker/date.validator.ts","./src/app/shared-components/tyl-datepicker/tyl-datepicker.component.html","./src/app/shared-components/tyl-datepicker/tyl-datepicker.component.ts","./src/app/shared-components/user-preferences/data-query-preferences.model.ts","./src/app/shared-components/user-preferences/portal-menu-preferences.model.ts","./src/app/shared-components/user-preferences/schedule-student-list-preferences.model.ts","./src/app/shared-components/user-preferences/user-preferences-window/gradebook-preferences-reset-warnings/gradebook-preferences-reset-warnings.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/gradebook-preferences-reset-warnings/gradebook-preferences-reset-warnings.component.html","./src/app/shared-components/user-preferences/general-preferences.model.ts","./src/app/shared-components/user-preferences/classroom-summary-preferences.model.ts","./src/app/shared-components/user-preferences/user-preferences-window/sync-preferences-dialog/sync-preferences-dialog.component.html","./src/app/shared-components/user-preferences/user-preferences-window/sync-preferences-dialog/sync-preferences-dialog.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/primary-teacher-warning-dialog/primary-teacher-warning-dialog.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/primary-teacher-warning-dialog/primary-teacher-warning-dialog.component.html","./src/app/shared-components/user-preferences/user-preferences-window/no-grading-classes-dialog/no-grading-classes-dialog.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/no-grading-classes-dialog/no-grading-classes-dialog.component.html","./src/app/shared-components/user-preferences/user-preferences-window/custom-sort-warning-dialog/custom-sort-warning-dialog.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/custom-sort-warning-dialog/custom-sort-warning-dialog.component.html","./src/app/shared-components/user-preferences/user-preferences-window/calculation-preference-warning-dialog/calculation-preference-warning-dialog.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/additional-teacher-warning-dialog/additional-teacher-warning-dialog.component.html","./src/app/shared-components/user-preferences/user-preferences-window/calculation-preference-warning-dialog/calculation-preference-warning-dialog.component.html","./src/app/shared-components/user-preferences/user-preferences-window/additional-teacher-warning-dialog/additional-teacher-warning-dialog.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/project-scores-info/project-scores-info.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/project-scores-info/project-scores-info.component.html","./src/app/shared-components/custom-layouts/Models/custom-layout-school-default.model.ts","./src/app/shared-components/user-preferences/behavior-preferences.model.ts","./src/app/shared-components/user-preferences/user-preferences-window/scheduling-tab/scheduling-tab.component.html","./src/app/shared-components/user-preferences/user-preferences-window/scheduling-tab/scheduling-tab.component.ts","./src/app/shared-components/user-preferences/user-preferences-window/user-preferences-window.component.html","./src/app/shared-components/user-preferences/user-preferences-window/user-preferences-window.component.ts","./src/app/shared-components/user-preferences/room-scheduling-settings-preferences.model.ts","./src/app/shared-components/user-preferences/user-preferences.service.ts","./src/app/shared-components/user/user.service.ts","./src/app/shared-components/validators/email-format-validator.directive.ts","./src/app/shared-components/validators/falsey-required-validator.directive.ts","./src/app/shared-components/view-absent-notice-history-dialog/view-absent-notice-history-dialog.component.html","./src/app/shared-components/view-absent-notice-history-dialog/view-absent-notice-history-dialog.component.ts","./src/app/shared-components/view-attachments/view-attachments.component.html","./src/app/shared-components/view-attachments/view-attachments.component.ts","./src/app/shared-components/virtualized-table/nested-data.ts","./src/app/shared-components/virtualized-table/virtualized-table.component.html","./src/app/shared-components/virtualized-table/virtualized-table.component.ts","./src/app/shared-components/year/school.model.ts","./src/app/shared-components/year/year.model.ts","./src/app/shared-components/year/year.service.ts","./src/app/shared-modules/announcement/announcement-filter.pipe.ts","./src/app/shared-modules/announcement/announcement-message/announcement-message.component.html","./src/app/shared-modules/announcement/announcement-message/announcement-message.component.ts","./src/app/shared-modules/announcement/announcement-table/announcement-table.component.html","./src/app/shared-modules/announcement/announcement-table/announcement-table.component.ts","./src/app/shared-modules/announcement/announcement.component.html","./src/app/shared-modules/announcement/announcement.component.ts","./src/app/shared-modules/announcement/announcement.model.ts","./src/app/shared-modules/announcement/broadcast-dialog/broadcast-dialog.component.ts","./src/app/shared-modules/announcement/broadcast-dialog/broadcast-dialog.component.html","./src/app/shared-modules/announcement/announcement.service.ts","./src/app/shared-modules/communication-log/models/communication-log.model.ts","./src/app/shared-modules/customization-framework/custom-data-field/custom-data-field.component.html","./src/app/shared-modules/customization-framework/custom-data-field/custom-data-field.component.ts","./src/app/shared-modules/customization-framework/customization-framework.service.ts","./src/app/shared-modules/customization-framework/models/custom-data-control-type.model.ts","./src/app/shared-modules/customization-framework/models/custom-data-field-type.model.ts","./src/app/shared-modules/customization-framework/models/custom-data-field.model.ts","./src/app/shared-modules/family-registration/email-not-sent/email-not-sent.component.ts","./src/app/shared-modules/family-registration/email-not-sent/email-not-sent.component.html","./src/app/shared-modules/family-registration/email-sent/email-sent.component.html","./src/app/shared-modules/family-registration/email-sent/email-sent.component.ts","./src/app/shared-modules/family-registration/family-registration.service.ts","./src/app/shared-components/student-header/re-enroll-students/re-enroll-students.component.html","./src/app/shared-components/student-header/re-enroll-students/re-enroll-students.component.ts","./src/app/shared-modules/family-registration/new-family-registration-year-selection/new-family-registration-year-selection.component.html","./src/app/shared-modules/family-registration/new-family-registration-year-selection/new-family-registration-year-selection.component.ts","./src/app/shared-modules/login/LoginSetting.model.ts","./src/app/shared-modules/login/change-password/password-validator.ts","./src/app/shared-modules/login/login.service.ts","./src/app/shared-modules/reporting/V9/gradebook-statistical-analysis-report/gradebook-statistical-analysis-report.model.ts","./src/app/shared-modules/reporting/V9/parameters/v9-report-parameter-tabs-filter.pipe.ts","./src/app/shared-modules/reporting/V9/parameters/v9-letter-report-parameters/v9-letter-report-parameters.component.html","./src/app/shared-modules/reporting/V9/parameters/v9-letter-report-parameters/v9-letter-report-parameters.component.ts","./src/app/shared-modules/reporting/V9/parameters/v9-report-parameters.component.html","./src/app/shared-modules/reporting/V9/parameters/v9-report-parameters.component.ts","./src/app/shared-modules/reporting/archive-report/confirm-cancel-archive.component.ts","./src/app/shared-modules/reporting/archive-report/confirm-cancel-archive.component.html","./src/app/shared-modules/reporting/archive-report/archive-process.component.html","./src/app/shared-modules/reporting/archive-report/archive-process.component.ts","./src/app/shared-modules/reporting/definitions/report-options-how-to.component.ts","./src/app/shared-modules/reporting/definitions/report-options-how-to.component.html","./src/app/shared-modules/reporting/definitions/report-options.component.html","./src/app/shared-modules/reporting/definitions/report-options.component.ts","./src/app/shared-modules/reporting/header/report-header.component.ts","./src/app/shared-modules/reporting/header/report-header.component.html","./src/app/shared-modules/reporting/models/data-source.model.ts","./src/app/shared-modules/reporting/models/report-folder.model.ts","./src/app/shared-modules/reporting/models/report-parameter-v9.model.ts","./src/app/shared-modules/reporting/models/report-v9.model.ts","./src/app/shared-modules/reporting/models/report.model.ts","./src/app/shared-modules/reporting/models/v9-parameter-row.model.ts","./src/app/shared-modules/reporting/models/parameter-row-model.ts","./src/app/shared-modules/reporting/models/parameter-rows.model.ts","./src/app/shared-modules/reporting/parameters/confirm-report-to-email.component.html","./src/app/shared-modules/reporting/parameters/confirm-report-to-email.component.ts","./src/app/shared-modules/reporting/archive-report/confirm-archive-report.component.ts","./src/app/shared-modules/reporting/archive-report/confirm-archive-report.component.html","./src/app/shared-modules/reporting/models/report-batch.model.ts","./src/app/shared-modules/reporting/archive-report/archive-report-modal.component.html","./src/app/shared-modules/reporting/archive-report/archive-report-modal.component.ts","./src/app/shared-modules/reporting/parameters/report-parameters.component.html","./src/app/shared-modules/reporting/parameters/report-parameters.component.ts","./src/app/shared-modules/reporting/report-folders/add-folder/add-folder.component.html","./src/app/shared-modules/reporting/report-folders/add-folder/add-folder.component.ts","./src/app/shared-modules/reporting/report-folders/delete-folder/delete-folder.component.ts","./src/app/shared-modules/reporting/report-folders/delete-folder/delete-folder.component.html","./src/app/shared-modules/reporting/report-folders/report-folders.component.html","./src/app/shared-modules/reporting/report-folders/report-folders.component.ts","./src/app/shared-modules/reporting/report-legend/report-legend.component.ts","./src/app/shared-modules/reporting/report-legend/report-legend.component.html","./src/app/shared-modules/reporting/report-queue/reportqueue-filter.ts","./src/app/shared-modules/reporting/report-queue/report-queue.component.html","./src/app/shared-modules/reporting/report-queue/report-queue.component.ts","./src/app/shared-modules/reporting/report-settings/report-settings-autorun.component.html","./src/app/shared-modules/reporting/report-settings/report-settings-autorun.component.ts","./src/app/shared-modules/reporting/report-snapshots/confirm-delete-snapshot.component.ts","./src/app/shared-modules/reporting/report-snapshots/confirm-delete-snapshot.component.html","./src/app/shared-modules/reporting/filters/report-in-folder-filter.ts","./src/app/shared-modules/reporting/filters/snapshot-in-folder-filter.ts","./src/app/shared-modules/reporting/report-snapshots/report-snapshots.component.html","./src/app/shared-modules/reporting/report-snapshots/report-snapshots.component.ts","./src/app/shared-modules/reporting/report-settings/report-autorun-message.component.html","./src/app/shared-modules/reporting/report-settings/report-autorun-message.component.ts","./src/app/shared-modules/reporting/report-settings/report-settings.folders.component.html","./src/app/shared-modules/reporting/report-settings/report-settings.folders.component.ts","./src/app/shared-modules/reporting/V9/manual-entry-rosters/manual-entry-rosters.component.html","./src/app/shared-modules/reporting/V9/manual-entry-rosters/manual-entry-rosters.component.ts","./src/app/shared-modules/reporting/V9/class-list-all/class-list-all.component.ts","./src/app/shared-modules/reporting/V9/class-list-all/class-list-all.component.html","./src/app/shared-modules/reporting/V9/teacher-summary-preview/teacher-summary-preview.component.html","./src/app/shared-modules/reporting/V9/teacher-summary-preview/teacher-summary-preview.component.ts","./src/app/shared-modules/reporting/V9/class-list-all-attendance-not-marked/class-list-all-attendance-not-marked.component.ts","./src/app/shared-modules/reporting/V9/class-list-all-attendance-not-marked/class-list-all-attendance-not-marked.component.html","./src/app/shared-modules/reporting/V9/attendance-history-by-class/attendance-history-by-class.model.ts","./src/app/shared-modules/reporting/V9/attendance-history-by-class/attendance-history-by-class.component.html","./src/app/shared-modules/reporting/V9/attendance-history-by-class/attendance-history-by-class.component.ts","./src/app/shared-modules/reporting/V9/gradebook-assignments-by-standard/gradebook-assignments-by-standard.component.html","./src/app/shared-modules/reporting/V9/gradebook-assignments-by-standard/gradebook-assignments-by-standard.component.ts","./src/app/shared-modules/reporting/my-reports/my-reports.component.html","./src/app/shared-modules/reporting/my-reports/my-reports.component.ts","./src/app/shared-modules/reporting/models/report-module.model.ts","./src/app/shared-modules/reporting/all-reports/all-reports.component.html","./src/app/shared-modules/reporting/all-reports/all-reports.component.ts","./src/app/shared-modules/reporting/models/ast-element.model.ts","./src/app/shared-modules/reporting/automated-testing-setup/automated-testing-modal.component.html","./src/app/shared-modules/reporting/automated-testing-setup/automated-testing-modal.component.ts","./src/app/shared-modules/reporting/automated-testing-setup/confirm.component.html","./src/app/shared-modules/reporting/automated-testing-setup/confirm.component.ts","./src/app/shared-modules/reporting/automated-testing-setup/quickview.component.html","./src/app/shared-modules/reporting/automated-testing-setup/quickview.component.ts","./src/app/shared-modules/reporting/automated-testing-setup/element-add-edit-modal.component.html","./src/app/shared-modules/reporting/automated-testing-setup/element-add-edit-modal.component.ts","./src/app/shared-modules/reporting/automated-testing-setup/element-list.component.html","./src/app/shared-modules/reporting/automated-testing-setup/element-list.component.ts","./src/app/shared-modules/reporting/automated-testing-setup/area-add-edit-modal.component.html","./src/app/shared-modules/reporting/automated-testing-setup/area-add-edit-modal.component.ts","./src/app/shared-modules/reporting/automated-testing-setup/area-list.component.html","./src/app/shared-modules/reporting/automated-testing-setup/area-list.component.ts","./src/app/shared-modules/reporting/automated-testing-setup/automated-testing-setup.component.html","./src/app/shared-modules/reporting/automated-testing-setup/automated-testing-setup.component.ts","./src/app/shared-modules/reporting/footer/report-footer.component.html","./src/app/shared-modules/reporting/footer/report-footer.component.ts","./src/app/shared-modules/reporting/reporting.component.html","./src/app/shared-modules/reporting/reporting.component.ts","./src/app/shared-modules/reporting/reporting.module.ts","./src/app/shared-modules/reporting/models/report-definition.model.ts","./src/app/shared-modules/reporting/models/report-parameter.model.ts","./src/app/shared-modules/reporting/models/reporting-configuration-settings.model.ts","./src/app/shared-modules/reporting/reporting.service.ts","./src/app/shared-modules/send-email/email-attachment.model.ts","./src/app/shared-modules/send-email/mail-detail.ts","./src/app/shared-modules/send-email/mail-paremeters.ts","./src/app/shared-modules/send-email/option-not-available-dialog/option-not-available-dialog.component.ts","./src/app/shared-modules/send-email/option-not-available-dialog/option-not-available-dialog.component.html","./src/app/shared-modules/send-email/send-email-warning-dialog/send-email-warning-dialog.component.html","./src/app/shared-modules/send-email/send-email-warning-dialog/send-email-warning-dialog.component.ts","./src/app/shared-modules/send-email/add-attachments-dialog/add-attachments-dialog.component.html","./src/app/shared-modules/send-email/add-attachments-dialog/add-attachments-dialog.component.ts","./src/app/shared-modules/send-email/recipient-change-warning-dialog/recipient-change-warning-dialog.component.ts","./src/app/shared-modules/send-email/recipient-change-warning-dialog/recipient-change-warning-dialog.component.html","./src/app/shared-modules/send-email/recipient.model.ts","./src/app/shared-modules/send-email/change-recipients-dialog/change-recipients-dialog.component.html","./src/app/shared-modules/send-email/change-recipients-dialog/change-recipients-dialog.component.ts","./src/app/shared-modules/send-email/enrollment-warning-dialog/enrollment-warning-dialog.component.ts","./src/app/shared-modules/send-email/enrollment-warning-dialog/enrollment-warning-dialog.component.html","./src/app/shared-modules/send-email/send-email.component.html","./src/app/shared-modules/send-email/send-email.component.ts","./src/app/shared-modules/send-email/send-email.service.ts","./src/app/shared-modules/student-attachment/student-attachment.model.ts","./src/app/shared-components/pipes/yes-no.pipe.ts","./src/app/student360/academic-history/academic-history.component.html","./src/app/student360/academic-history/academic-history.component.ts","./src/app/student360/assessment/assessment-data-category-table/add-assessment-scores/add-assessment-scores.component.ts","./src/app/student360/assessment/assessment-data-category-table/add-assessment-scores/add-assessment-scores.component.html","./src/app/student360/assessment/assessment-data-category-table/assessment-data-category-table.component.html","./src/app/student360/assessment/assessment-data-category-table/assessment-data-category-table.component.ts","./src/app/student360/assessment/assessment-data-table/assessment-data-table.component.html","./src/app/student360/assessment/assessment-data-table/assessment-data-table.component.ts","./src/app/student360/assessment/assessment-data-category.ts","./src/app/student360/assessment/assessment.component.html","./src/app/student360/assessment/assessment.component.ts","./src/app/student360/assessment/assessment.service.ts","./src/app/student360/assignment/assignment-filter.pipe.ts","./src/app/student360/assignment/assignment-filter-param.ts","./src/app/student360/assignment/category-weights/category-weights.component.html","./src/app/student360/assignment/category-weights/category-weights.component.ts","./src/app/student360/assignment/standards-based-scores/standards-based-scores.component.html","./src/app/student360/assignment/standards-based-scores/standards-based-scores.component.ts","./src/app/student360/assignment/Utility.ts","./src/app/student360/assignment/by-course/by-course.component.html","./src/app/student360/assignment/by-course/by-course.component.ts","./src/app/student360/assignment/upcoming-missing/upcoming-missing.component.html","./src/app/student360/assignment/upcoming-missing/upcoming-missing.component.ts","./src/app/student360/assignment/assignment-filter/assignment-filter.component.html","./src/app/student360/assignment/assignment-filter/assignment-filter.component.ts","./src/app/student360/assignment/assignment.component.html","./src/app/student360/assignment/assignment.component.ts","./src/app/student360/assignment/assignment.service.ts","./src/app/student360/attendance/by-date-details/by-date-details.component.html","./src/app/student360/attendance/by-date-details/by-date-details.component.ts","./src/app/student360/attendance/by-date-table/by-date-table.component.html","./src/app/student360/attendance/by-date-table/by-date-table.component.ts","./src/app/student360/attendance/by-schedule-details/by-schedule-details.component.html","./src/app/student360/attendance/by-schedule-details/by-schedule-details.component.ts","./src/app/student360/attendance/by-schedule-table/by-schedule-table.component.html","./src/app/student360/attendance/by-schedule-table/by-schedule-table.component.ts","./src/app/student360/attendance/by-special-additional/by-special-additional.component.html","./src/app/student360/attendance/by-special-additional/by-special-additional.component.ts","./src/app/student360/attendance/by-team-details/by-team-details.component.html","./src/app/student360/attendance/by-team-details/by-team-details.component.ts","./src/app/student360/attendance/by-team-table/by-team-table.component.html","./src/app/student360/attendance/by-team-table/by-team-table.component.ts","./src/app/student360/attendance/by-view-excessive/by-view-excessive.component.html","./src/app/student360/attendance/by-view-excessive/by-view-excessive.component.ts","./src/app/student360/attendance/code-legend/code-legend.component.html","./src/app/student360/attendance/code-legend/code-legend.component.ts","./src/app/student360/attendance/daily-attendance/daily-attendance.component.html","./src/app/student360/attendance/daily-attendance/daily-attendance.component.ts","./src/app/student360/attendance/attendance.component.html","./src/app/student360/attendance/attendance.component.ts","./src/app/student360/awards/awards.service.ts","./src/app/student360/awards/awards.component.html","./src/app/student360/awards/awards.component.ts","./src/app/student360/calendar/calendar-header/calendar-header.component.html","./src/app/student360/calendar/calendar-header/calendar-header.component.ts","./src/app/student360/calendar/calendar-event-modal/calendar-event-modal.component.html","./src/app/student360/calendar/calendar-event-modal/calendar-event-modal.component.ts","./src/app/student360/calendar/district-event.pipe.ts","./src/app/student360/calendar/calendar.component.html","./src/app/student360/calendar/calendar.component.ts","./src/app/student360/calendar/calendar.service.ts","./src/app/student360/discipline/discipline.component.html","./src/app/student360/discipline/discipline.component.ts","./src/app/student360/e-forms/e-form-select-student-dialog/e-form-select-student-dialog.component.html","./src/app/student360/e-forms/e-form-select-student-dialog/e-form-select-student-dialog.component.ts","./src/app/student360/e-forms/e-form-unfinished-dialog/e-form-unfinished-dialog.component.html","./src/app/student360/e-forms/e-form-unfinished-dialog/e-form-unfinished-dialog.component.ts","./src/app/student360/e-forms/e-form-critical-message-dialog/e-form-critical-message-dialog.component.ts","./src/app/student360/e-forms/e-form-critical-message-dialog/e-form-critical-message-dialog.component.html","./src/app/student360/e-forms/e-form-select-year-dialog/e-form-select-year-dialog.component.html","./src/app/student360/e-forms/e-form-select-year-dialog/e-form-select-year-dialog.component.ts","./src/app/shared-components/pipes/year-description.pipe.ts","./src/app/student360/e-forms/e-forms.component.html","./src/app/student360/e-forms/e-forms.component.ts","./src/app/student360/fees-and-billing/additional-details/additional-details.component.html","./src/app/student360/fees-and-billing/additional-details/additional-details.component.ts","./src/app/student360/fees-and-billing/fee-payment-details/fee-payment-details.component.html","./src/app/student360/fees-and-billing/fee-payment-details/fee-payment-details.component.ts","./src/app/student360/fees-and-billing/fees-and-billing.component.html","./src/app/student360/fees-and-billing/fees-and-billing.component.ts","./src/app/student360/fees-and-billing/fees-and-billing.service.ts","./src/app/student360/grades/grades.model.ts","./src/app/student360/grades/course-description/course-description.component.ts","./src/app/student360/grades/course-description/course-description.component.html","./src/app/student360/grades/comments-and-behavior-marks/comments-and-behavior-marks.component.html","./src/app/student360/grades/comments-and-behavior-marks/comments-and-behavior-marks.component.ts","./src/app/student360/grades/traditional-grades/traditional-grades.component.html","./src/app/student360/grades/traditional-grades/traditional-grades.component.ts","./src/app/student360/grades/standards-based-grades/standards-based-grades.component.html","./src/app/student360/grades/standards-based-grades/standards-based-grades.component.ts","./src/app/student360/grades/code-legend/code-legend.component.html","./src/app/student360/grades/code-legend/code-legend.component.ts","./src/app/student360/grades/grades.component.html","./src/app/student360/grades/grades.component.ts","./src/app/student360/grades/grades.service.ts","./src/app/student360/grades/standards-based-grades/standards-based-grades-filter.pipe.ts","./src/app/student360/grades/traditional-grades/traditional-grades-filter.pipe.ts","./src/app/student360/graduation-plan/gp-filter-param.ts","./src/app/student360/graduation-plan/gp-filter/gp-filter.component.ts","./src/app/student360/graduation-plan/gp-filter/gp-filter.component.html","./src/app/student360/graduation-plan/graduation-plan.component.html","./src/app/student360/graduation-plan/graduation-plan.component.ts","./src/app/student360/graduation-plan/graduation-plan.model.ts","./src/app/student360/graduation-plan/graduation-plan.service.ts","./src/app/student360/graduation-plan/override-creditcode/override-creditcode.component.html","./src/app/student360/graduation-plan/override-creditcode/override-creditcode.component.ts","./src/app/student360/graduation-plan/shared/gp-credit-format.pipe.ts","./src/app/student360/health/medications/medications.component.html","./src/app/student360/health/medications/medications.component.ts","./src/app/student360/health/screening/screening-detail/screening-detail.component.html","./src/app/student360/health/screening/screening-detail/screening-detail.component.ts","./src/app/student360/health/screening/screening.component.html","./src/app/student360/health/screening/screening.component.ts","./src/app/student360/health/screening/code-legend/code-legend.component.html","./src/app/student360/health/screening/code-legend/code-legend.component.ts","./src/app/student360/health/doctors/doctors.component.html","./src/app/student360/health/doctors/doctors.component.ts","./src/app/student360/health/health-visit-log/health-visit-log.component.html","./src/app/student360/health/health-visit-log/health-visit-log.component.ts","./src/app/student360/health/immunizations/immunizations.component.html","./src/app/student360/health/immunizations/immunizations.component.ts","./src/app/student360/health/insurance/insurance.component.html","./src/app/student360/health/insurance/insurance.component.ts","./src/app/student360/health/health.component.html","./src/app/student360/health/health.component.ts","./src/app/student360/health/health.model.ts","./src/app/student360/health/health.service.ts","./src/app/student360/iep/iep-documents/iep-documents.component.html","./src/app/student360/iep/iep-documents/iep-documents.component.ts","./src/app/student360/iep/iep.component.html","./src/app/student360/iep/iep.component.ts","./src/app/student360/iep/iep.service.ts","./src/app/student360/meal-service/lunch-pin-filter.pipe.ts","./src/app/student360/meal-service/meal-service-filter.pipe.ts","./src/app/student360/meal-service/meal-service.model.ts","./src/app/student360/meal-service/lunch-menu-choices/lunch-menu-choices.component.html","./src/app/student360/meal-service/lunch-menu-choices/lunch-menu-choices.component.ts","./src/app/student360/meal-service/charges-and-deposits/charges-and-deposits.component.html","./src/app/student360/meal-service/charges-and-deposits/charges-and-deposits.component.ts","./src/app/student360/meal-service/monthly-lunch-menu/monthly-lunch-menu.component.html","./src/app/student360/meal-service/monthly-lunch-menu/monthly-lunch-menu.component.ts","./src/app/student360/meal-service/meal-service-filter/meal-service-filter.component.ts","./src/app/student360/meal-service/meal-service-filter/meal-service-filter.component.html","./src/app/student360/meal-service/meal-service.component.html","./src/app/student360/meal-service/meal-service.component.ts","./src/app/student360/meal-service/meal-service.service.ts","./src/app/student360/meal-service/monthly-lunch-menu-filter.pipe.ts","./src/app/student360/online-payment/models/online-payment-config.model.ts","./src/app/student360/online-registration/form-packet.model.ts","./src/app/student360/online-registration/online-registration.service.ts","./src/app/student360/online-registration/student-update/multiple-families/multiple-families.component.html","./src/app/student360/online-registration/student-update/multiple-families/multiple-families.component.ts","./src/app/student360/portfolio/portfolio-filter.pipe.ts","./src/app/student360/portfolio/add-portfolio-modal/add-portfolio-modal.component.html","./src/app/student360/portfolio/add-portfolio-modal/add-portfolio-modal.component.ts","./src/app/student360/portfolio/delete-portfolio-modal/delete-portfolio-modal.component.ts","./src/app/student360/portfolio/delete-portfolio-modal/delete-portfolio-modal.component.html","./src/app/student360/portfolio/edit-portfolio-modal/edit-portfolio-modal.component.html","./src/app/student360/portfolio/edit-portfolio-modal/edit-portfolio-modal.component.ts","./src/app/student360/portfolio/portfolio-filter.ts","./src/app/student360/portfolio/portfolio.component.html","./src/app/student360/portfolio/portfolio.component.ts","./src/app/student360/portfolio/portfolio.model.ts","./src/app/student360/portfolio/portfolio.service.ts","./src/app/student360/programs-and-services/programs-and-services-filter.ts","./src/app/student360/programs-and-services/programs-and-services.component.html","./src/app/student360/programs-and-services/programs-and-services.component.ts","./src/app/student360/programs-and-services/programs-and-services.model.ts","./src/app/student360/programs-and-services/programs-and-services.service.ts","./src/app/student360/schedule-history/schedule-history.model.ts","./src/app/student360/schedule-history/schedule-history.service.ts","./src/app/student360/schedule-history/schedule-history.component.html","./src/app/student360/schedule-history/schedule-history.component.ts","./src/app/student360/student-details/student-detail.model.ts","./src/app/student360/student-details/view-student-address/view-student-address.component.html","./src/app/student360/student-details/view-student-address/view-student-address.component.ts","./src/app/student360/student-details/student-details.component.html","./src/app/student360/student-details/student-details.component.ts","./src/app/student360/student-digital-content/models/student-digital-content.model.ts","./src/app/student360/student-digital-content/add-content-modal/add-content-modal.component.html","./src/app/student360/student-digital-content/add-content-modal/add-content-modal.component.ts","./src/app/student360/student-digital-content/student-digital-content.component.html","./src/app/student360/student-digital-content/student-digital-content.component.ts","./src/app/student360/student-digital-content/student-digital-content.service.ts","./src/app/student360/student-documents/student-document-access-history/student-document-access-history.component.html","./src/app/student360/student-documents/student-document-access-history/student-document-access-history.component.ts","./src/app/student360/student-documents/student-documents-filter.ts","./src/app/student360/student-documents/student-documents-filtered.component.ts","./src/app/student360/student-documents/add-edit-document/add-edit-document.component.html","./src/app/student360/student-documents/add-edit-document/add-edit-document.component.ts","./src/app/student360/student-documents/student-documents-v9/student-documents-v9.component.html","./src/app/student360/student-documents/student-documents-v9/student-documents-v9.component.ts","./src/app/student360/student-documents/student-documents-v10/student-documents-v10.component.html","./src/app/student360/student-documents/student-documents-v10/student-documents-v10.component.ts","./src/app/student360/student-documents/student-documents.component.html","./src/app/student360/student-documents/student-documents.component.ts","./src/app/student360/student-fields/student-field.service.ts","./src/app/student360/student-fields/student-field.model.ts","./src/app/student360/student-fields/student-fields.pipe.ts","./src/app/student360/student-fields/student-fields.component.html","./src/app/student360/student-fields/student-fields.component.ts","./src/app/student360/student-schedule/course-term.model.ts","./src/app/student360/student-schedule/student-schedule.component.html","./src/app/student360/student-schedule/student-schedule.component.ts","./src/app/student360/student-schedule/student-schedule.service.ts","./src/app/student360/student-summary/new-announcements-modal/new-announcements-modal-filter.pipe.ts","./src/app/student360/student-summary/help-menu-modal/help-menu-modal.component.ts","./src/app/student360/student-summary/help-menu-modal/help-menu-modal.component.html","./src/app/student360/student-summary/settings-menu-modal/settings-menu-modal.component.html","./src/app/student360/student-summary/settings-menu-modal/settings-menu-modal.component.ts","./src/app/student360/student-summary/cards/student/announcement-card/card-announcement-modal/card-announcement-modal.component.ts","./src/app/student360/student-summary/cards/student/announcement-card/card-announcement-modal/card-announcement-modal.component.html","./src/app/student360/student-summary/cards/student/announcement-card/announcement-card.component.html","./src/app/student360/student-summary/cards/student/announcement-card/announcement-card.component.ts","./src/app/student360/student-summary/cards/student/attendance-card/card-attendance.ts","./src/app/student360/student-summary/cards/student/attendance-card/attendance-card-modal/attendance-card-modal.component.html","./src/app/student360/student-summary/cards/student/attendance-card/attendance-card-modal/attendance-card-modal.component.ts","./src/app/student360/student-summary/cards/student/attendance-card/attendance-card.component.html","./src/app/student360/student-summary/cards/student/attendance-card/attendance-card.component.ts","./src/app/student360/student-summary/cards/student/assignments-card/assignments-card-modal/assignments-card-modal.component.html","./src/app/student360/student-summary/cards/student/assignments-card/assignments-card-modal/assignments-card-modal.component.ts","./src/app/student360/student-summary/cards/student/assignments-card/assignments-card.component.html","./src/app/student360/student-summary/cards/student/assignments-card/assignments-card.component.ts","./src/app/student360/student-summary/cards/student/current-grades-card/current-grades-card.component.html","./src/app/student360/student-summary/cards/student/current-grades-card/current-grades-card.component.ts","./src/app/student360/student-summary/cards/student/district-defined-links-card/district-defined-links-card.component.html","./src/app/student360/student-summary/cards/student/district-defined-links-card/district-defined-links-card.component.ts","./src/app/student360/student-summary/cards/student/fees-billing-card/fees-and-billing-card-modal/fees-and-billing-card-modal.component.html","./src/app/student360/student-summary/cards/student/fees-billing-card/fees-and-billing-card-modal/fees-and-billing-card-modal.component.ts","./src/app/student360/student-summary/cards/student/fees-billing-card/fees-billing-card.component.html","./src/app/student360/student-summary/cards/student/fees-billing-card/fees-billing-card.component.ts","./src/app/student360/student-summary/cards/student/meal-service-card/meal-service-card-modal/meal-service-card-modal.component.html","./src/app/student360/student-summary/cards/student/meal-service-card/meal-service-card-modal/meal-service-card-modal.component.ts","./src/app/student360/student-summary/cards/student/meal-service-card/meal-service-card.component.html","./src/app/student360/student-summary/cards/student/meal-service-card/meal-service-card.component.ts","./src/app/student360/student-summary/cards/student/student-schedule-card/student-schedule-card.component.html","./src/app/student360/student-summary/cards/student/student-schedule-card/student-schedule-card.component.ts","./src/app/student360/student-summary/cards/student/upcoming-events-card/upcoming-events-card.component.html","./src/app/student360/student-summary/cards/student/upcoming-events-card/upcoming-events-card.component.ts","./src/app/student360/student-summary/cards/student/calendar-card/event-details-modal/event-details-modal.component.html","./src/app/student360/student-summary/cards/student/calendar-card/event-details-modal/event-details-modal.component.ts","./src/app/student360/student-summary/cards/student/calendar-card/calendar-card.component.html","./src/app/student360/student-summary/cards/student/calendar-card/calendar-card.component.ts","./src/app/student360/student-summary/cards/staff/attendance-history-card/attendance-details-modal/attendance-details-modal.component.html","./src/app/student360/student-summary/cards/staff/attendance-history-card/attendance-details-modal/attendance-details-modal.component.ts","./src/app/student360/student-summary/cards/staff/attendance-history-card/attendance-history-card.component.html","./src/app/student360/student-summary/cards/staff/attendance-history-card/attendance-history-card.component.ts","./src/app/student360/student-summary/cards/staff/student-teams-card/student-teams-card.component.html","./src/app/student360/student-summary/cards/staff/student-teams-card/student-teams-card.component.ts","./src/app/student360/student-summary/cards/staff/student-notes-card/student-notes-card.component.html","./src/app/student360/student-summary/cards/staff/student-notes-card/student-notes-card.component.ts","./src/app/student360/student-summary/cards/staff/behavior-card/behavior-card.component.html","./src/app/student360/student-summary/cards/staff/behavior-card/behavior-card.component.ts","./src/app/student360/student-summary/cards/staff/programs-and-services-card/programs-and-services-card.component.html","./src/app/student360/student-summary/cards/staff/programs-and-services-card/programs-and-services-card.component.ts","./src/app/student360/student-summary/cards/staff/student-details-card/student-details-card.component.html","./src/app/student360/student-summary/cards/staff/student-details-card/student-details-card.component.ts","./src/app/student360/student-summary/cards/staff/enrollment-card/membership-code-details-modal/membership-code-details-modal.component.html","./src/app/student360/student-summary/cards/staff/enrollment-card/membership-code-details-modal/membership-code-details-modal.component.ts","./src/app/student360/student-summary/cards/staff/enrollment-card/enrollment-card.component.html","./src/app/student360/student-summary/cards/staff/enrollment-card/enrollment-card.component.ts","./src/app/student360/student-summary/cards/staff/contacts-card/card-student-contact.ts","./src/app/student360/student-summary/cards/staff/contacts-card/contacts-v9/contacts-v9.component.html","./src/app/student360/student-summary/cards/staff/contacts-card/contacts-v9/contacts-v9.component.ts","./src/app/student360/student-summary/cards/staff/contacts-card/contacts-v10/contacts-v10.component.html","./src/app/student360/student-summary/cards/staff/contacts-card/contacts-v10/contacts-v10.component.ts","./src/app/student360/student-summary/cards/staff/contacts-card/contacts-card.component.html","./src/app/student360/student-summary/cards/staff/contacts-card/contacts-card.component.ts","./src/app/student360/student-summary/cards/staff/staff-student-schedule-card/staff-student-schedule-card.component.html","./src/app/student360/student-summary/cards/staff/staff-student-schedule-card/staff-student-schedule-card.component.ts","./src/app/student360/student-summary/card-container/card/card.component.ts","./src/app/student360/student-summary/card-container/card-container.component.html","./src/app/student360/student-summary/card-container/card/card.component.html","./src/app/student360/student-summary/card-container/card-container.component.ts","./src/app/student360/student-summary/welcome-modal/welcome-modal.component.ts","./src/app/student360/student-summary/welcome-modal/welcome-modal.component.html","./src/app/student360/student-summary/new-announcements-modal/new-announcements-modal.component.html","./src/app/student360/student-summary/new-announcements-modal/new-announcements-modal.component.ts","./src/app/student360/student-summary/student-notes-popup/student-notes-popup.component.html","./src/app/student360/student-summary/student-notes-popup/student-notes-popup.component.ts","./src/app/student360/student-summary/check-in-out-submission-request-modal/check-in-out-submission-request-modal.component.html","./src/app/student360/student-summary/check-in-out-submission-request-modal/check-in-out-submission-request-modal.component.ts","./src/app/student360/student-summary/check-in-out-submission-request-modal/check-in-out-submission-request-modal.model.ts","./src/app/admin360/attendance-administration/review-absent-notices/absent-notice.model.ts","./src/app/student360/student-summary/absent-notice-submission-modal/absent-notice-submission-modal.component.html","./src/app/student360/student-summary/absent-notice-submission-modal/absent-notice-submission-modal.component.ts","./src/app/student360/student-summary/student-summary.component.html","./src/app/student360/student-summary/student-summary.component.ts","./src/app/student360/student-summary/student-summary.service.ts","./src/app/student360/student360.service.ts","./src/app/student360/teams/team.model.ts","./src/app/student360/teams/teams.component.html","./src/app/student360/teams/teams.component.ts","./src/app/student360/teams/teams.service.ts","./src/app/student360/transportation/transportation.component.html","./src/app/student360/transportation/transportation.component.ts","./src/app/student360/transportation/transportation.service.ts","./src/app/shared-modules/family-registration/register-new-family-verify-code/register-new-family-verify-code.component.ts","./src/app/shared-modules/family-registration/register-new-family-verify-code/register-new-family-verify-code.component.html","./src/app/shared-modules/family-registration/register-new-family-message/register-new-family-message.component.html","./src/app/shared-modules/family-registration/register-new-family-message/register-new-family-message.component.ts","./src/app/shared-modules/family-registration/link-already-sent/link-already-sent.component.html","./src/app/shared-modules/family-registration/link-already-sent/link-already-sent.component.ts","./src/app/shared-modules/family-registration/login-exists/login-exists.component.html","./src/app/shared-modules/family-registration/login-exists/login-exists.component.ts","./src/app/shared-modules/family-registration/duplicate-email-address/duplicate-email-address.component.ts","./src/app/shared-modules/family-registration/duplicate-email-address/duplicate-email-address.component.html","./src/app/shared-modules/family-registration/register-new-family/register-new-family.component.ts","./src/app/shared-modules/family-registration/register-new-family/register-new-family.component.html","./src/app/shared-modules/family-registration/select-language/select-language.component.html","./src/app/shared-modules/family-registration/select-language/select-language.component.ts","./src/app/shared-modules/login/access-message/access-message.component.ts","./src/app/shared-modules/login/access-message/access-message.component.html","./src/app/classroom360/system-settings/system-settings-v9/upgrade-access-history/access-history-sub-tab/access-history-sub-tab.model.ts","./src/app/shared-modules/login/audit-logins/audit-logins.component.ts","./src/app/shared-modules/login/audit-logins/audit-logins.component.html","./src/app/shared-modules/login/forgot-password/student-reset-password-warning/student-reset-password-warning.component.ts","./src/app/shared-modules/login/forgot-password/student-reset-password-warning/student-reset-password-warning.component.html","./src/app/shared-modules/login/forgot-username/confirmation-modal/confirmation-modal.component.html","./src/app/shared-modules/login/forgot-username/confirmation-modal/confirmation-modal.component.ts","./src/app/shared-modules/login/forgot-username/forgot-username.component.html","./src/app/shared-modules/login/forgot-username/forgot-username.component.ts","./src/app/shared-modules/login/forgot-password/forgot-password.component.html","./src/app/shared-modules/login/forgot-password/forgot-password.component.ts","./src/app/shared-modules/login/login-only360/login-only360.component.ts","./src/app/shared-modules/login/reset-password/reset-password.component.html","./src/app/shared-modules/login/login-only360/login-only360.component.html","./src/app/shared-modules/login/reset-password/reset-password.component.ts","./src/app/shared-modules/login/unsupported-browser-warning-dialog/unsupported-browser-warning-dialog.component.ts","./src/app/shared-modules/login/unsupported-browser-warning-dialog/unsupported-browser-warning-dialog.component.html","./node_modules/ngx-cookie-service/__ivy_ngcc__/ngx-cookie-service.js","./src/app/shared-modules/login/footer/login-footer.component.html","./src/app/shared-modules/login/footer/login-footer.component.ts","./src/app/shared-modules/login/login.component.html","./src/app/shared-modules/login/login.component.ts","./src/app/shared-modules/login/login-assist/login-assist.component.html","./src/app/shared-modules/login/login-assist/login-assist.component.ts","./src/app/shared-modules/login/change-password/change-password.component.html","./src/app/shared-modules/login/change-password/change-password.component.ts","./src/app/shared-components/logout/logout.component.ts","./src/app/app-routing.module.ts","./src/app/shared-modules/login/login.module.ts","./src/app/authIntercepter.ts","./src/app/index.ts","./src/app/shared-modules/login/inactivity-timeout/inactivity-timeout.component.ts","./src/app/shared-modules/login/inactivity-timeout/inactivity-timeout.component.html","./src/app/student360/portal-access-denied/portal-access-denied.component.html","./src/app/student360/portal-access-denied/portal-access-denied.component.ts","./src/app/shared-components/controls/about-panel/about-panel.component.html","./src/app/shared-components/controls/about-panel/about-panel.component.ts","./src/app/shared-components/favorites/favorites-modal/favorites-modal.component.html","./src/app/shared-components/favorites/favorites-modal/favorites-modal.component.ts","./src/app/shared-components/models/system-log.model.ts","./src/app/shared-components/student/student-in-focus/student-in-focus.component.ts","./src/app/shared-components/student/student-in-focus/student-in-focus.component.html","./src/app/shared-components/header/header.component.html","./src/app/shared-components/header/header.component.ts","./src/app/shared-components/spinner/spinner.component.html","./src/app/shared-components/spinner/spinner.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/shared-components/error-dialog/error-dialog.component.html","./src/app/shared-components/error-dialog/error-dialog.component.ts","./src/app/shared-components/spinner/loader-intercept.component.ts","./node_modules/@ngx-translate/http-loader/__ivy_ngcc__/fesm2015/ngx-translate-http-loader.js","./src/app/shared-components/no-internet-connection-modal/no-internet-connection-modal.component.html","./src/app/shared-components/no-internet-connection-modal/no-internet-connection-modal.component.ts","./src/app/error-handler.ts","./src/app/app.module.ts","./src/app/shared-modules/translation/missing-translation-handler.component.ts","./src/main.ts","./node_modules/@biesbjerg/ngx-translate-extract-marker/__ivy_ngcc__/fesm2015/biesbjerg-ngx-translate-extract-marker.js","./node_modules/@ngx-translate/core/__ivy_ngcc__/fesm2015/ngx-translate-core.js","./node_modules/@pdf-lib/standard-fonts/es/Font.js","./node_modules/@pdf-lib/standard-fonts/es/utils.js","./node_modules/@pdf-lib/standard-fonts/es/Encoding.js","webpack:///tslib?94b0","./node_modules/@progress/kendo-angular-common/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?b96c","webpack:///tslib?6e01","./node_modules/@progress/kendo-angular-treeview/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/rxjs/_esm2015/internal/util/not.js","./node_modules/rxjs/_esm2015/internal/operators/skipWhile.js","./node_modules/@progress/kendo-angular-dropdowns/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/rxjs/_esm2015/internal/operators/partition.js","webpack:///tslib?fe30","./node_modules/@progress/kendo-angular-inputs/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?1eaf","./node_modules/@progress/kendo-angular-intl/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?382b","./node_modules/@progress/kendo-angular-l10n/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?6f71","./node_modules/@progress/kendo-drawing/dist/es2015/html/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/template.js","./node_modules/@progress/kendo-angular-pdf-export/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?da83","./node_modules/@progress/kendo-popup-common/dist/es2015/align-point.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align.js","./node_modules/@progress/kendo-popup-common/dist/es2015/add-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/owner-document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window.js","./node_modules/@progress/kendo-popup-common/dist/es2015/document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scrollbar-width.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window-viewport.js","./node_modules/@progress/kendo-popup-common/dist/es2015/bounding-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parents.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/element-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-with-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/remove-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/collision.js","./node_modules/@progress/kendo-popup-common/dist/es2015/restrict-to-view.js","./node_modules/@progress/kendo-popup-common/dist/es2015/siblings.js","./node_modules/@progress/kendo-popup-common/dist/es2015/sibling-container.js","./node_modules/@progress/kendo-popup-common/dist/es2015/utils.js","./node_modules/@progress/kendo-angular-popup/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/@progress/kendo-common/dist/es2015/util.js","./node_modules/@progress/kendo-common/dist/es2015/support.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/field-list.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/getter.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/setter.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/class.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/named-colors.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/parse-color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/support.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/has-observers.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/options-store.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close-or-less.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersection.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/ellipse-extreme-angles.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/is-out-of-end-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/calculate-curve-at.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/to-cubic-polynomial.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/complex-number.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/solve-cubic-equation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/has-roots-in-range.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/segment.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/curve-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/size.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/to-matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transformation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transform.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-options.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient-stop.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/stops-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/linear-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/radial-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/measurable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/paintable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/traversable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-accessors.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-geometry.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-points.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/shape-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/parse-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/utils.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/ttf.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/deflate.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/drawing.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/element.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/group.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/image.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/geometry-elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/points-to-curve.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/path.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/text.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-clippend-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/lru-cache.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/measure-text.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/text-metrics.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/util.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/append.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/arabic-to-roman.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/create-promise.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/defined.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/definition-id.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/deg.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-base64.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-utf.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/is-transparent.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/last.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/limit-value.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/merge-sort.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/rad.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/round.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/value-or-default.js","./node_modules/@progress/kendo-file-saver/dist/es2015/save-as.js","./node_modules/@progress/kendo-file-saver/dist/es2015/base64.js","./node_modules/@progress/pako-esm/dist/pako-esm2015.js","./node_modules/@telerik/kendo-draggable/dist/es2015/main.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/error-details.js","./node_modules/@telerik/kendo-intl/dist/es2015/errors.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/info.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-numbers.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-dates.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-field-name.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/parse-range-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/number-symbols.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/group-integer.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/is-currency-style.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/pad.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/round.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/standard-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/utils.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/parse-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/time-utils.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/parse-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/split-date-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/format.js","./node_modules/positioning/dist/positioning.js","./node_modules/calendar-utils/calendar-utils.js","./node_modules/@mattlewis92/dom-autoscroller/dist/bundle.es.js","./node_modules/rxjs/_esm2015/internal/operators/count.js","./node_modules/angular-draggable-droppable/__ivy_ngcc__/fesm2015/angular-draggable-droppable.js","./node_modules/angular-resizable-element/__ivy_ngcc__/fesm2015/angular-resizable-element.js","./node_modules/angular-calendar/__ivy_ngcc__/fesm2015/angular-calendar.js","./node_modules/angular2-text-mask/__ivy_ngcc__/dist/angular2TextMask.js","./node_modules/applicationinsights-js/bundle/ai.module.js","./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/jspdf/dist/jspdf.min.js","./node_modules/lodash/lodash.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/ngx-auto-unsubscribe/dist/auto-unsubscribe.js","./node_modules/ngx-color-picker/__ivy_ngcc__/dist/ngx-color-picker.es5.js","./node_modules/ngx-order-pipe/__ivy_ngcc__/fesm2015/ngx-order-pipe.js","./node_modules/tslib/tslib.es6.mjs","./node_modules/ngx-quill/__ivy_ngcc__/fesm2015/ngx-quill.js","./node_modules/pako/index.js","./node_modules/pako/lib/deflate.js","./node_modules/pako/lib/inflate.js","./node_modules/pako/lib/utils/common.js","./node_modules/pako/lib/utils/strings.js","./node_modules/pako/lib/zlib/adler32.js","./node_modules/pako/lib/zlib/constants.js","./node_modules/pako/lib/zlib/crc32.js","./node_modules/pako/lib/zlib/deflate.js","./node_modules/pako/lib/zlib/gzheader.js","./node_modules/pako/lib/zlib/inffast.js","./node_modules/pako/lib/zlib/inflate.js","./node_modules/pako/lib/zlib/inftrees.js","./node_modules/pako/lib/zlib/messages.js","./node_modules/pako/lib/zlib/trees.js","./node_modules/pako/lib/zlib/zstream.js","./node_modules/pdf-lib/es/api/rotations.js","./node_modules/pdf-lib/es/api/objects.js","./node_modules/pdf-lib/es/api/operators.js","./node_modules/pdf-lib/es/api/colors.js","./node_modules/pdf-lib/es/api/StandardFonts.js","./node_modules/pdf-lib/es/api/errors.js","./node_modules/pdf-lib/es/api/svgPath.js","./node_modules/pdf-lib/es/api/operations.js","./node_modules/pdf-lib/es/api/sizes.js","./node_modules/pdf-lib/es/api/PDFFont.js","./node_modules/pdf-lib/es/api/PDFImage.js","./node_modules/pdf-lib/es/api/PDFPage.js","./node_modules/pdf-lib/es/api/PDFDocument.js","./node_modules/pdf-lib/es/core/syntax/CharCodes.js","./node_modules/pdf-lib/es/core/errors.js","./node_modules/pdf-lib/es/core/document/PDFHeader.js","./node_modules/pdf-lib/es/core/objects/PDFObject.js","./node_modules/pdf-lib/es/core/objects/PDFArray.js","./node_modules/pdf-lib/es/core/objects/PDFBool.js","./node_modules/pdf-lib/es/core/objects/PDFDict.js","./node_modules/pdf-lib/es/core/syntax/Delimiters.js","./node_modules/pdf-lib/es/core/syntax/Whitespace.js","./node_modules/pdf-lib/es/core/syntax/Irregular.js","./node_modules/pdf-lib/es/core/objects/PDFName.js","./node_modules/pdf-lib/es/core/objects/PDFNull.js","./node_modules/pdf-lib/es/core/objects/PDFNumber.js","./node_modules/pdf-lib/es/core/objects/PDFStream.js","./node_modules/pdf-lib/es/core/objects/PDFRawStream.js","./node_modules/pdf-lib/es/core/objects/PDFRef.js","./node_modules/pdf-lib/es/core/operators/PDFOperator.js","./node_modules/pdf-lib/es/core/structures/PDFFlateStream.js","./node_modules/pdf-lib/es/core/structures/PDFContentStream.js","./node_modules/pdf-lib/es/core/PDFContext.js","./node_modules/pdf-lib/es/core/structures/PDFPageLeaf.js","./node_modules/pdf-lib/es/core/PDFObjectCopier.js","./node_modules/pdf-lib/es/core/document/PDFCrossRefSection.js","./node_modules/pdf-lib/es/core/document/PDFTrailer.js","./node_modules/pdf-lib/es/core/document/PDFTrailerDict.js","./node_modules/pdf-lib/es/core/structures/PDFObjectStream.js","./node_modules/pdf-lib/es/core/writers/PDFWriter.js","./node_modules/pdf-lib/es/core/objects/PDFInvalidObject.js","./node_modules/pdf-lib/es/core/structures/PDFCrossRefStream.js","./node_modules/pdf-lib/es/core/writers/PDFStreamWriter.js","./node_modules/pdf-lib/es/core/objects/PDFHexString.js","./node_modules/pdf-lib/es/core/embedders/StandardFontEmbedder.js","./node_modules/pdf-lib/es/core/embedders/CMap.js","./node_modules/pdf-lib/es/core/embedders/FontFlags.js","./node_modules/pdf-lib/es/core/objects/PDFString.js","./node_modules/pdf-lib/es/core/embedders/CustomFontEmbedder.js","./node_modules/pdf-lib/es/core/embedders/CustomFontSubsetEmbedder.js","./node_modules/pdf-lib/es/core/embedders/JpegEmbedder.js","./node_modules/png-ts/es/png.js","./node_modules/pdf-lib/es/core/embedders/PngEmbedder.js","./node_modules/pdf-lib/es/core/structures/PDFCatalog.js","./node_modules/pdf-lib/es/core/structures/PDFPageTree.js","./node_modules/pdf-lib/es/core/syntax/Numeric.js","./node_modules/pdf-lib/es/core/parser/BaseParser.js","./node_modules/pdf-lib/es/core/streams/Stream.js","./node_modules/pdf-lib/es/core/streams/DecodeStream.js","./node_modules/pdf-lib/es/core/streams/Ascii85Stream.js","./node_modules/pdf-lib/es/core/streams/AsciiHexStream.js","./node_modules/pdf-lib/es/core/streams/FlateStream.js","./node_modules/pdf-lib/es/core/streams/LZWStream.js","./node_modules/pdf-lib/es/core/streams/RunLengthStream.js","./node_modules/pdf-lib/es/core/streams/decode.js","./node_modules/pdf-lib/es/core/parser/ByteStream.js","./node_modules/pdf-lib/es/core/syntax/Keywords.js","./node_modules/pdf-lib/es/core/parser/PDFObjectParser.js","./node_modules/pdf-lib/es/core/parser/PDFObjectStreamParser.js","./node_modules/pdf-lib/es/core/parser/PDFXRefStreamParser.js","./node_modules/pdf-lib/es/core/parser/PDFParser.js","./node_modules/pdf-lib/es/utils/base64.js","./node_modules/pdf-lib/es/utils/objects.js","./node_modules/pdf-lib/es/utils/arrays.js","./node_modules/pdf-lib/es/utils/async.js","./node_modules/pdf-lib/es/utils/numbers.js","./node_modules/pdf-lib/es/utils/errors.js","./node_modules/pdf-lib/es/utils/validators.js","./node_modules/pdf-lib/es/utils/Cache.js","./node_modules/pdf-lib/es/utils/strings.js","./node_modules/pdf-lib/es/utils/unicode.js","./node_modules/print-js/dist/print.js","./node_modules/quill/dist/quill.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/text-mask-addons/dist/createNumberMask.js","./node_modules/text-mask-core/dist/textMaskCore.js","./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack:///tslib?ca4a","tslib","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/cdk/fesm2015/a11y.mjs","./node_modules/@angular/cdk/fesm2015/bidi.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/@angular/cdk/fesm2015/collections.mjs","./node_modules/@angular/cdk/fesm2015/drag-drop.mjs","./node_modules/@angular/cdk/fesm2015/keycodes.mjs","./node_modules/@angular/cdk/fesm2015/layout.mjs","./node_modules/@angular/cdk/fesm2015/observers.mjs","./node_modules/@angular/cdk/fesm2015/overlay.mjs","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/portal.mjs","./node_modules/@angular/cdk/fesm2015/scrolling.mjs","./node_modules/@angular/cdk/fesm2015/table.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/material/fesm2015/autocomplete.mjs","./node_modules/@angular/material/fesm2015/button-toggle.mjs","./node_modules/@angular/material/fesm2015/button.mjs","./node_modules/@angular/material/fesm2015/card.mjs","./node_modules/@angular/material/fesm2015/checkbox.mjs","./node_modules/@angular/material/fesm2015/chips.mjs","./node_modules/@angular/cdk/fesm2015/cdk.mjs","./node_modules/@angular/material/fesm2015/core.mjs","./node_modules/@angular/material/fesm2015/datepicker.mjs","./node_modules/@angular/material/fesm2015/dialog.mjs","./node_modules/@angular/material/fesm2015/divider.mjs","./node_modules/@angular/cdk/fesm2015/accordion.mjs","./node_modules/@angular/material/fesm2015/expansion.mjs","./node_modules/@angular/material/fesm2015/form-field.mjs","./node_modules/@angular/material/fesm2015/grid-list.mjs","./node_modules/@angular/material/fesm2015/icon.mjs","./node_modules/@angular/cdk/fesm2015/text-field.mjs","./node_modules/@angular/material/fesm2015/input.mjs","./node_modules/@angular/material/fesm2015/list.mjs","./node_modules/@angular/material/fesm2015/menu.mjs","./node_modules/@angular/material/fesm2015/paginator.mjs","./node_modules/@angular/material/fesm2015/progress-bar.mjs","./node_modules/@angular/material/fesm2015/progress-spinner.mjs","./node_modules/@angular/material/fesm2015/radio.mjs","./node_modules/@angular/material/fesm2015/select.mjs","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/@angular/material/fesm2015/sidenav.mjs","./node_modules/@angular/material/fesm2015/slide-toggle.mjs","./node_modules/@angular/material/fesm2015/slider.mjs","./node_modules/@angular/material/fesm2015/snack-bar.mjs","./node_modules/@angular/material/fesm2015/sort.mjs","./node_modules/@angular/cdk/fesm2015/stepper.mjs","./node_modules/@angular/material/fesm2015/stepper.mjs","./node_modules/@angular/material/fesm2015/table.mjs","./node_modules/@angular/material/fesm2015/tabs.mjs","./node_modules/@angular/material/fesm2015/tooltip.mjs","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/@progress/kendo-licensing/dist/index.mjs","./node_modules/xlsx/xlsx.mjs"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../../shared-components/System';\r\nimport { Observable } from 'rxjs';\r\nimport { AdminAttendanceStudentPeriod, AttendanceMassEditFilter } from './attendance-mass-edit/attendance-mass-edit/attendance-mass-edit.model';\r\nimport { StudentAttendanceCodes } from './attendance-codes/attendance-codes.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { AttendanceCheckInOut, CheckInOutSettings } from './attendance-check-in-out/attendance-check-in-out.model';\r\nimport { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { AllStudentsAttendanceHistory, AttendanceByStudent } from './attendance-by-student/attendance-by-student.model';\r\nimport { CheckInOutSubmissionRequest } from '../../student360/student-summary/check-in-out-submission-request-modal/check-in-out-submission-request-modal.model';\r\nimport { AbsentNotice } from './review-absent-notices/absent-notice.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class AttendanceAdministrationService {\r\n\r\n attendanceMassEditFilter: AttendanceMassEditFilter;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService\r\n ) { }\r\n\r\n getAdminStudentAttendance(siteYearId: number, startDate: string, endDate: string, studentNumbers: string[], lastName: string, firstName: string, studentListId: number, studentTeamId: number): Observable {\r\n const queryString = '?siteYearId=' + siteYearId\r\n + '&startDate=' + startDate\r\n + '&endDate=' + endDate\r\n + '&lastName=' + lastName\r\n + '&firstName=' + firstName\r\n + '&studentListId=' + studentListId\r\n + '&studentTeamId=' + studentTeamId;\r\n return this.http.post(System.apiURL.Admin + 'GetAdminStudentAttendance' + queryString, studentNumbers);\r\n }\r\n\r\n getStudentAttendanceCodes(yearId: number, siteId: number): Observable {\r\n const queryString = '?yearId=' + yearId +\r\n '&siteId=' + siteId;\r\n return this.http.get(System.apiURL.Admin + 'GetStudentAttendanceCodes' + queryString);\r\n }\r\n\r\n getAttendanceCheckInOutByDate(attendanceDate: string): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&date=' + attendanceDate;\r\n return this.http.get(System.apiURL.Admin + 'GetAttendanceCheckInOutByDate' + queryString);\r\n }\r\n\r\n saveCheckInOutHistoryAttachment(historyId: number, attachment: Attachment[]): Observable {\r\n const queryString = '?historyId=' + historyId;\r\n return this.http.post(System.apiURL.Admin + 'SaveCheckInOutHistoryAttachment' + queryString, attachment);\r\n }\r\n\r\n deleteCheckInOutRecordById(recordId: number, type: string): Observable {\r\n const queryString = '?recordId=' + recordId +\r\n '&type=' + type;\r\n return this.http.get(System.apiURL.Admin + 'DeleteCheckInOutRecordById' + queryString);\r\n }\r\n\r\n getSchoolDaysBetweenDates(siteYearId: number, startDate: string, endDate: string): Observable {\r\n const queryString = '?siteYearId=' + siteYearId +\r\n '&startDate=' + startDate +\r\n '&endDate=' + endDate;\r\n return this.http.get(System.apiURL.Admin + 'GetSchoolDaysBetweenDates' + queryString);\r\n }\r\n\r\n saveAdminStudentAttendance(siteYearId: number, attendance: AdminAttendanceStudentPeriod[]): Observable {\r\n const queryString = '?siteYearId=' + siteYearId;\r\n return this.http.post(System.apiURL.Admin + 'SaveAdminStudentAttendance' + queryString, attendance);\r\n }\r\n\r\n getAttendanceHistoryByStudentIdDate(studentId: number, attendanceDate: string, time: string, type: string, attendanceCodeId: number, dailyComment: string, overwritePriorPeriods: boolean, updatePeriodComment: boolean, periodCommentAppOROver: string, updateDailyComment: boolean, dailyCommentAppOROver: string): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&studentId=' + studentId +\r\n '&attendanceDate=' + attendanceDate +\r\n '&time=' + time +\r\n '&type=' + type +\r\n '&attendanceCodeId=' + attendanceCodeId +\r\n '&dailyComment=' + dailyComment +\r\n '&overwritePriorPeriods=' + overwritePriorPeriods +\r\n '&updatePeriodComment=' + updatePeriodComment +\r\n '&periodCommentAppOROver=' + periodCommentAppOROver +\r\n '&updateDailyComment=' + updateDailyComment +\r\n '&dailyCommentAppOROver=' + dailyCommentAppOROver;\r\n return this.http.get(System.apiURL.Admin + 'GetAttendanceHistoryByStudentIdDate' + queryString);\r\n }\r\n\r\n saveStudentAttendanceHistory(studentAttendance: AllStudentsAttendanceHistory[]): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Admin + 'SaveStudentAttendanceHistory' + queryString, studentAttendance);\r\n }\r\n\r\n saveAttendanceHistoryCheckInOutByStudentIdDate(studentId: number, attendanceDate: string, time: string, type: string, attendanceCodeId: number, dailyComment: string, settings: CheckInOutSettings, clearAtt = false): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&studentId=' + studentId +\r\n '&attendanceDate=' + attendanceDate +\r\n '&time=' + time +\r\n '&type=' + type +\r\n '&attendanceCodeId=' + attendanceCodeId +\r\n '&dailyComment=' + dailyComment +\r\n '&clearAtt=' + clearAtt;\r\n return this.http.post(System.apiURL.Admin + 'SaveAttendanceHistoryCheckInOutByStudentIdDate' + queryString, settings);\r\n }\r\n\r\n getAttendanceSelfCheckInOutByStudentId(studentId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Admin + 'GetAttendanceCheckInOutSubmissionByStudentId' + queryString);\r\n }\r\n\r\n getCheckInOutHistoryAttachmentById(historyId: number, type: string): Observable {\r\n const queryString = '?historyId=' + historyId +\r\n '&type=' + type;\r\n return this.http.get(System.apiURL.Admin + 'GetCheckInOutHistoryAttachmentById' + queryString);\r\n }\r\n\r\n getAbsentNoticesByStudentIdAndYearId(studentId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Admin + 'GetAbsentNoticesByStudentIdAndYearId' + queryString);\r\n }\r\n\r\n getAbsentNoticeAttachmentById(id: number): Observable {\r\n const queryString = '?id=' + id;\r\n return this.http.get(System.apiURL.Admin + 'GetAbsentNoticeAttachmentById' + queryString);\r\n }\r\n\r\n processSubmissionRecord(historyId: number, submissionId: number): Observable {\r\n const queryString = '?historyId=' + historyId +\r\n '&submissionId=' + submissionId;\r\n return this.http.get(System.apiURL.Admin + 'ProcessSubmissionRecord' + queryString);\r\n }\r\n\r\n getAttendanceCheckInOutHistoryByStudentId(schoolId: number, studentId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + schoolId +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Admin + 'GetAttendanceCheckInOutHistoryByStudentId' + queryString);\r\n }\r\n}\r\n","import { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { CheckInOutSettings } from '../attendance-check-in-out/attendance-check-in-out.model';\r\n\r\nexport class AttendanceByStudent {\r\n StudentId: number;\r\n DailyCalendarId: number;\r\n AttendanceHistoryId: number;\r\n SiteSectionId: number;\r\n AttendanceDate: Date;\r\n StartPeriod: number;\r\n Meets: string;\r\n StartTime: string;\r\n EndTime: string;\r\n PeriodAvailable: boolean;\r\n SubjectSection: string;\r\n TeacherName: string;\r\n AttendanceCodeId: number;\r\n PartialMinutesAbsence: number;\r\n Lunch: string;\r\n SubjectTermType: string;\r\n EntryDate: Date;\r\n DroppedDate: Date;\r\n OrgAttendanceCodeId: number;\r\n OrgPartialMinutesAbsence: number;\r\n PeriodicComment: string;\r\n DailyComment: string;\r\n OrgDailyComment: string;\r\n MarkedByAdmin: boolean;\r\n Duration: number;\r\n AttendanceTypeId: number;\r\n AttendanceType: string;\r\n TeacherCanMark: boolean;\r\n CheckInOutHistoryId: number;\r\n\r\n // Non DTO Fields\r\n HasFocus: boolean;\r\n AttendanceCode: string;\r\n AttenCodeId: string;\r\n OrgAttendanceCode: string;\r\n OrgAttenCodeId: string;\r\n PromptForPartialMinutes = false;\r\n CanTeacherChangeAtt = true;\r\n}\r\n\r\nexport class AttendanceByStudentList {\r\n Attendance: AttendanceByStudent[] = [];\r\n AttendanceDate: Date;\r\n}\r\n\r\nexport class AllStudentsAttendanceHistory {\r\n StudentAttendance: AttendanceByStudent[] = [];\r\n Attachments: Attachment[] = [];\r\n CheckInOutHistoryId: number;\r\n CheckInOutSettings: CheckInOutSettings;\r\n StudentId: number;\r\n}\r\n","
\r\n Mass Update Student Attendance\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n {{item.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AttendanceCode } from '../../../../classroom360/attendance/models/attendance-code.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\n\r\n@Component({\r\n selector: 'app-mass-update-student-attendance',\r\n templateUrl: './mass-update-student-attendance.component.html'\r\n})\r\nexport class MassUpdateStudentAttendanceComponent implements OnInit {\r\n attendanceCodes: AttendanceCode[] = [];\r\n selectedAttendanceCodeId = '';\r\n errors: ErrorList[] = [];\r\n @ViewChild('periodCode', { read: ElementRef }) periodCodeRef: ElementRef;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.attendanceCodes = this.data.attendanceCodes;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n applyClick() {\r\n this.errors = [];\r\n if (this.attendanceCodes.find(x => x.Id == this.selectedAttendanceCodeId).PromptForPartialMinutes) {\r\n this.errors.push({\r\n fieldName: 'Attendance Code',\r\n fieldRef: this.periodCodeRef,\r\n errorMsg: 'Can not mark L,E, All Day.'\r\n });\r\n }\r\n\r\n if (this.errors.length == 0) {\r\n this.dialogRef.close(this.selectedAttendanceCodeId);\r\n }\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n Submitted By and On
\r\n {{data.attendanceCheckInOut.SubmittedBy}} on {{data.attendanceCheckInOut.SubmittedOn | date: 'MM/dd/yyyy'}} at {{data.attendanceCheckInOut.SubmittedOn | date: 'h:mm a'}}\r\n
\r\n
\r\n\r\n
\r\n Step 3 of 3 - Review Changes for Each Student\r\n
\r\n\r\n
\r\n {{attendanceDate | date: 'MM/dd/yyyy'}} - {{checkInOutTime}}\r\n
\r\n\r\n
\r\n {{absentNotice.StartDate | date: 'MM/dd/yyyy'}} - {{absentNotice.EndDate | date: 'MM/dd/yyyy'}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n {{item.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n Reason
\r\n {{data.attendanceCheckInOut.Reason}}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n {{item.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Submitted By and On\r\n
\r\n {{absentNotice.SubmittedName}} on {{absentNotice.LastUpdated | date:'MM/dd/yy'}} at {{absentNotice.LastUpdated | date:'h:mm a'}}\r\n
\r\n
\r\n Reason\r\n {{absentNotice.Reason}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n No classes exists for selected Date\r\n
\r\n\r\n
0\">\r\n \r\n\r\n \r\n \r\n Meets\r\n \r\n {{st.Meets}}\r\n \r\n\r\n \r\n \r\n \r\n Start\r\n \r\n {{st.StartTime}}\r\n \r\n\r\n \r\n \r\n \r\n End\r\n \r\n {{st.EndTime}}\r\n \r\n\r\n \r\n \r\n \r\n Code\r\n \r\n \r\n
\r\n \r\n \r\n {{code.CodeDescription}}\r\n \r\n \r\n \r\n {{st.AttendanceCode}}\r\n A\r\n C\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n Previous Code\r\n \r\n \r\n
\r\n {{st.OrgAttendanceCode}}\r\n A\r\n C\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n New Code\r\n \r\n \r\n
\r\n \r\n \r\n {{code.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n Atd\r\n \r\n \r\n {{st.AttendanceType}}\r\n \r\n\r\n \r\n \r\n \r\n Missed Minutes\r\n \r\n \r\n {{st.PartialMinutesAbsence}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Lunch\r\n \r\n {{st.Lunch}}\r\n \r\n\r\n \r\n \r\n \r\n Term\r\n \r\n {{st.SubjectTermType}}\r\n \r\n\r\n \r\n \r\n \r\n Course-Section\r\n \r\n {{st.SubjectSection}}\r\n \r\n\r\n \r\n \r\n \r\n Teacher\r\n \r\n {{st.TeacherName}}\r\n \r\n\r\n \r\n \r\n \r\n Entry Date\r\n \r\n {{st.EntryDate | date: 'MM/dd/yy'}}\r\n \r\n\r\n \r\n \r\n \r\n Dropped Date\r\n \r\n {{st.DroppedDate | date: 'MM/dd/yy'}}\r\n \r\n\r\n \r\n \r\n \r\n Comment\r\n \r\n {{st.PeriodicComment}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
0\" [ngStyle]=\"{'width': calledAsDialog ? '35%': '100%'}\">\r\n \r\n \r\n \r\n
\r\n\r\n
0\" style=\"width: 55%;padding-left: 20px;\">\r\n
{{type}} Attachment
\r\n
\r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n {{AR.FileName}}\r\n \r\n \r\n \r\n \r\n Description\r\n \r\n {{AR.AttachmentDescription}}\r\n \r\n \r\n \r\n File Type\r\n \r\n {{AR.DocumentType}}\r\n \r\n \r\n \r\n Uploaded Date\r\n \r\n \r\n {{AR.AttachmentAddedOn|date:'MM/dd/yy h:mm a'}}\r\n \r\n \r\n Actions\r\n \r\n \r\n Delete\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
","import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport * as moment from 'moment';\r\nimport { take } from 'rxjs/operators';\r\nimport { AttendanceCode } from '../../../classroom360/attendance/models/attendance-code.model';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { AttendanceAdministrationService } from '../attendance-administration.service';\r\nimport { AllStudentsAttendanceHistory, AttendanceByStudent, AttendanceByStudentList } from './attendance-by-student.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AttendanceCheckInOutLegendComponent } from '../../../shared-components/attendance-check-in-out-legend/attendance-check-in-out-legend.component';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MassUpdateStudentAttendanceComponent } from '../modals/mass-update-student-attendance/mass-update-student-attendance.component';\r\nimport { SchoolSettingsAttendanceService } from '../../../management360/school/school-settings-attendance/school-settings-attendance.service';\r\nimport { System } from '../../../shared-components/System';\r\nimport { CheckForErrorsGuard } from '../../../shared-components/guards/check-for-errors/check-for-errors.guard';\r\nimport { RouterStateSnapshot } from '@angular/router';\r\nimport { SelfCheckInOutHistoryDialogComponent } from '../../../shared-components/self-check-in-out-history-dialog/self-check-in-out-history-dialog.component';\r\nimport { StudentSummaryService } from '../../../student360/student-summary/student-summary.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { AttendanceCheckInOut, CheckInOutSettings } from '../attendance-check-in-out/attendance-check-in-out.model';\r\nimport { AddAttachmentDialogComponent } from '../../../shared-components/add-attachment-dialog/add-attachment-dialog.component';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport * as _ from 'lodash';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ViewAbsentNoticeHistoryDialogComponent } from '../../../shared-components/view-absent-notice-history-dialog/view-absent-notice-history-dialog.component';\r\nimport { AbsentNotice } from '../review-absent-notices/absent-notice.model';\r\nimport { CheckInOutViewHistoryDialogComponent } from '../../../shared-components/check-in-out-view-history-dialog/check-in-out-view-history-dialog.component';\r\nimport { ReviewAbsentNoticesService } from '../review-absent-notices/review-absent-notices.service';\r\nimport { CheckInOutModalDialogComponent } from '../modals/check-in-out-modal-dialog/check-in-out-modal-dialog.component';\r\nimport { AttendanceCheckInOutComponent } from '../attendance-check-in-out/attendance-check-in-out.component';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-attendance-by-student',\r\n templateUrl: './attendance-by-student.component.html',\r\n styleUrls: ['./attendance-by-student.component.css']\r\n})\r\nexport class AttendanceByStudentComponent implements OnInit, OnDestroy {\r\n subscriptions: Subscription[] = [];\r\n selectedStudent: Student;\r\n sameDate = true;\r\n todaysDate = new Date();\r\n previousDate = new Date();\r\n attendanceDate = new Date();\r\n startDate = new Date();\r\n endDate = new Date();\r\n checkInOutTime = '';\r\n attendanceCodes: AttendanceCode[] = [];\r\n validAttendanceCode: AttendanceCode[] = [];\r\n selectedAttendanceCode = '';\r\n studentAttendance: AttendanceByStudent[] = [];\r\n dailyComment = '';\r\n orgDailyComment = '';\r\n displayAttendanceTypeColumn = true;\r\n allStudentsAH: AllStudentsAttendanceHistory[] = [];\r\n\r\n angularMatData = new TylerMatTableDataSource(this.studentAttendance);\r\n columnsToDisplay = ['Meets', 'Start', 'End', 'Code', 'Atd', 'Minutes', 'Lunch', 'Term', 'Course', 'Teacher', 'EntryDate', 'DroppedDate', 'Comment'];\r\n errors: ErrorList[] = [];\r\n\r\n datAttendanceDate: ElementRef;\r\n @ViewChild('timeInput', { read: ElementRef }) timeRef: ElementRef;\r\n @ViewChild('periodCode', { read: ElementRef }) periodCodeRef: ElementRef;\r\n @ViewChild('startDateRef', { read: ElementRef }) startDateRef: ElementRef;\r\n @ViewChild('endDateRef', { read: ElementRef }) endDateRef: ElementRef;\r\n timeField: ElementRef;\r\n\r\n timeRegexp = System.twelveHourTimeRegexp;\r\n unsavedChanges = false;\r\n earlyLeavingAttendanceCode: number;\r\n comingLateAttendanceCode: number;\r\n\r\n showSelfCheckButton = false;\r\n showAbsentNoticesButton = false;\r\n calledAsDialog = false;\r\n needToProcess = false;\r\n checkInCheckOutDialog = false;\r\n reviewAbsentNoticeDialog = false;\r\n studentId: number;\r\n useStudents: Student[] = [];\r\n selectStudent: Student;\r\n pageTitle = 'Student Attendance';\r\n attendanceCheckInOut: AttendanceCheckInOut;\r\n type: string;\r\n attachmentMatTable = new TylerMatTableDataSource();\r\n attachmentColumnsToDisplay = ['FileName', 'Description', 'DocumentType', 'UploadedDate', 'Actions'];\r\n absentNotice: AbsentNotice;\r\n absentNoticeDates: Date[] = [];\r\n selectedTab = '';\r\n tabNames = [];\r\n tabNamesLoaded = false;\r\n reviewDateChanged = false;\r\n unsavedStudentAttendanceTabData: AttendanceByStudentList[] = [];\r\n checkInOutSettings: CheckInOutSettings;\r\n calledFromCheckInOut = false;\r\n isLastStudent = false;\r\n isFirstStudent = false;\r\n\r\n checkInCheckOutClick = false;\r\n\r\n @ViewChild(AttendanceCheckInOutComponent) attendanceCheckInOutComp: AttendanceCheckInOutComponent;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private sharedService: SharedService,\r\n private yearService: YearService,\r\n private attendanceService: AttendanceAdministrationService,\r\n private dialog: MatDialog,\r\n private schoolSettingService: SchoolSettingsAttendanceService,\r\n private checkForErrorsGuard: CheckForErrorsGuard,\r\n private studentSummaryService: StudentSummaryService,\r\n private userService: UserService,\r\n private absentNoticesService: ReviewAbsentNoticesService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) {\r\n if (this.data.selectedStudent != undefined) {\r\n this.useStudents.push(this.data.selectedStudent);\r\n this.studentService.students = this.data.selectedStudents;\r\n }\r\n else if (this.data.selectedStudents != undefined && this.data.selectedStudents.length > 0) {\r\n this.useStudents = [];\r\n this.useStudents = this.data.selectedStudents;\r\n this.studentService.students = this.data.selectedStudents;\r\n }\r\n else {\r\n this.useStudents = undefined;\r\n }\r\n this.subscriptions.push(studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n if (studentId != null && studentId > 0) {\r\n this.loadStudentInfo(studentId);\r\n this.getStudentAttendanceHistory();\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this.yearService.observableDefaultYearStream$.subscribe(defaultYear => {\r\n this.getCheckInOutButtnSettings();\r\n this.getSchoolSettingsAttendace();\r\n this.getStudentAttendanceHistory();\r\n }));\r\n }\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n }\r\n\r\n ngOnInit() {\r\n const time = new Date();\r\n this.checkInOutTime = moment(time.toString()).format('hh:mm a').toUpperCase();\r\n this.attendanceDate = new Date();\r\n if (this.data.calledAsDialog != undefined) {\r\n this.calledAsDialog = this.data.calledAsDialog;\r\n if (this.calledAsDialog == true) {\r\n this.needToProcess = this.data.needToProcess != undefined ? this.data.needToProcess : this.needToProcess;\r\n this.calledFromCheckInOut = this.data.calledFromCheckInOut != undefined ? this.data.calledFromCheckInOut : this.calledFromCheckInOut;\r\n this.columnsToDisplay = ['Meets', 'Start', 'End', 'PreviousCode', 'NewCode', 'Atd', 'Minutes', 'Lunch', 'Term', 'Course', 'Teacher', 'EntryDate', 'DroppedDate'];\r\n switch (this.data.originPage ? this.data.originPage : '') {\r\n case 'Review Absent Notices':\r\n this.pageTitle = 'Process Absent Notice';\r\n this.absentNotice = this.data.absentNotice;\r\n if (this.absentNotice.Attachments) {\r\n this.attachmentMatTable.data = this.absentNotice.Attachments.filter(x => x.Deleted == false);\r\n }\r\n this.reviewAbsentNoticeDialog = true;\r\n this.selectedStudent = this.data.selectedStudent;\r\n this.type = 'Absent Notice';\r\n this.attendanceDate = new Date(this.absentNotice.StartDate);\r\n this.startDate = new Date(this.absentNotice.StartDate);\r\n this.endDate = new Date(this.absentNotice.EndDate);\r\n this.selectedTab = this.startDate.toLocaleDateString();\r\n this.attendanceService.getSchoolDaysBetweenDates(this.yearService.defaultYear.SiteYearId, this.startDate.toLocaleDateString(), this.endDate.toLocaleDateString()).pipe(take(1)).subscribe(dates => {\r\n this.absentNoticeDates = dates;\r\n this.absentNoticeDates.forEach(date => {\r\n this.tabNames.push(new Date(date).toLocaleDateString());\r\n });\r\n this.tabNamesLoaded = true;\r\n });\r\n break;\r\n case 'Check In/Check Out':\r\n default:\r\n this.attendanceCheckInOut = this.data.attendanceCheckInOut;\r\n this.checkInOutSettings = this.data.checkInOutSettings;\r\n this.type = this.attendanceCheckInOut != undefined ? this.attendanceCheckInOut.Type : this.type;\r\n this.checkInOutTime = this.attendanceCheckInOut != undefined ? (this.attendanceCheckInOut.Time.length == 7 ? '0' : '') + this.attendanceCheckInOut.Time.toUpperCase() : this.checkInOutTime;\r\n if (this.needToProcess == true) {\r\n this.pageTitle = 'Process ' + this.type;\r\n }\r\n else if (this.calledFromCheckInOut == true) {\r\n this.type = this.checkInOutSettings.Type;\r\n this.checkInOutTime = (this.checkInOutSettings.Time.length == 7 ? '0' : '') + this.checkInOutSettings.Time.toUpperCase();\r\n this.pageTitle = this.type;\r\n }\r\n else {\r\n this.pageTitle = 'Edit ' + this.type;\r\n }\r\n this.attachmentMatTable.data = this.attendanceCheckInOut != undefined ? this.attendanceCheckInOut.Attachments.filter(x => x.Deleted == false) : [];\r\n this.checkInCheckOutDialog = true;\r\n this.reviewAbsentNoticeDialog = false;\r\n\r\n this.attendanceDate = this.data.attendanceDate;\r\n break;\r\n }\r\n }\r\n\r\n if (this.calledFromCheckInOut == false) {\r\n this.selectedStudent = this.data.selectedStudent;\r\n }\r\n else {\r\n this.selectedStudent = this.useStudents[0];\r\n this.isFirstStudent = true;\r\n if (this.useStudents.length == 1) {\r\n this.isLastStudent = true;\r\n }\r\n }\r\n this.attendanceDate = this.data.attendanceDate;\r\n }\r\n this.getCheckInOutButtnSettings();\r\n this.getSchoolSettingsAttendace();\r\n this.getAttendanceCodes();\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n dateChange(date: Date) {\r\n this.studentAttendance = [];\r\n this.angularMatData.data = [];\r\n this.previousDate = this.attendanceDate;\r\n if (this.unsavedChanges == false) {\r\n this.attendanceDate = date;\r\n this.errors = [];\r\n if (this.attendanceDate != null && this.attendanceDate.toLocaleDateString() != '' && this.attendanceDate.toLocaleDateString() == this.todaysDate.toLocaleDateString()) {\r\n this.sameDate = true;\r\n }\r\n else {\r\n this.sameDate = false;\r\n }\r\n\r\n this.getStudentAttendanceHistory();\r\n }\r\n else {\r\n const canContinue = this.checkForErrorsGuard.checkForDeactivation();\r\n if (canContinue instanceof Observable) {\r\n canContinue.pipe(take(1)).subscribe(clickedOk => {\r\n if (clickedOk) {\r\n this.attendanceDate = date;\r\n this.previousDate = this.attendanceDate;\r\n this.unsavedChanges = false;\r\n if (this.attendanceDate.toLocaleDateString() == this.todaysDate.toLocaleDateString()) {\r\n this.sameDate = true;\r\n }\r\n else {\r\n this.sameDate = false;\r\n }\r\n\r\n this.getStudentAttendanceHistory();\r\n }\r\n else {\r\n this.attendanceDate = this.previousDate;\r\n if (this.attendanceDate.toLocaleDateString() == this.todaysDate.toLocaleDateString()) {\r\n this.sameDate = true;\r\n }\r\n else {\r\n this.sameDate = false;\r\n }\r\n }\r\n });\r\n } else if (canContinue) {\r\n if (this.attendanceDate.toLocaleDateString() == this.todaysDate.toLocaleDateString()) {\r\n this.sameDate = true;\r\n }\r\n else {\r\n this.sameDate = false;\r\n }\r\n\r\n this.getStudentAttendanceHistory();\r\n }\r\n }\r\n }\r\n\r\n reviewStartEndDatesChanged() {\r\n this.reviewDateChanged = true;\r\n }\r\n\r\n useCurrentTime() {\r\n const time = new Date();\r\n this.checkInOutTime = moment(time.toString()).format('hh:mm a').toUpperCase();\r\n }\r\n\r\n getAttendanceCodes() {\r\n this.sharedService.getAttendanceCodeLookup(false, this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.Id).pipe(take(1)).subscribe(codes => {\r\n this.attendanceCodes = codes;\r\n if (this.userService.currentUser.UserIsTeacher) {\r\n this.validAttendanceCode = this.attendanceCodes.filter(o => o.UsedByTeachers == true || o.CodeDescription == '');\r\n }\r\n else {\r\n this.validAttendanceCode = this.attendanceCodes;\r\n }\r\n this.getStudentAttendanceHistory();\r\n });\r\n }\r\n\r\n getSchoolSettingsAttendace() {\r\n this.schoolSettingService.getSchoolSettingsAttendanceOptions().pipe(take(1)).subscribe(setting => {\r\n this.selectedAttendanceCode = this.calledFromCheckInOut ? this.checkInOutSettings.PriorPeriodCodeId : setting[0].FullPeriodAbsenceCode.toString();\r\n this.displayAttendanceTypeColumn = setting[0].CalendarUseAttendanceTypes;\r\n this.earlyLeavingAttendanceCode = setting[0].CheckoutForEarlyDismissalCode;\r\n this.comingLateAttendanceCode = setting[0].CheckinForLateArrivalCode;\r\n\r\n if (this.displayAttendanceTypeColumn == false) {\r\n if (this.calledAsDialog == false) {\r\n this.columnsToDisplay = ['Meets', 'Start', 'End', 'Code', 'Minutes', 'Lunch', 'Term', 'Course', 'Teacher', 'EntryDate', 'DroppedDate', 'Comment'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['Meets', 'Start', 'End', 'PreviousCode', 'NewCode', 'Minutes', 'Lunch', 'Term', 'Course', 'Teacher', 'EntryDate', 'DroppedDate', 'Comment'];\r\n }\r\n }\r\n else {\r\n if (this.calledAsDialog == false) {\r\n this.columnsToDisplay = ['Meets', 'Start', 'End', 'Code', 'Atd', 'Minutes', 'Lunch', 'Term', 'Course', 'Teacher', 'EntryDate', 'DroppedDate', 'Comment'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['Meets', 'Start', 'End', 'PreviousCode', 'NewCode', 'Atd', 'Minutes', 'Lunch', 'Term', 'Course', 'Teacher', 'EntryDate', 'DroppedDate', 'Comment'];\r\n }\r\n }\r\n });\r\n }\r\n\r\n getStudentAttendanceHistory() {\r\n this.errors = [];\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.studentAttendance = [];\r\n let time = '';\r\n let type = '';\r\n let attenCodeId = 0;\r\n let dailyCom = '';\r\n let overwritePriorPer = false;\r\n let updatePeriodComment = false;\r\n let periodCommentAppOROver = 'A';\r\n let updateDailyComment = true;\r\n let dailyCommentAppOROver = 'A';\r\n if (this.calledFromCheckInOut || this.needToProcess || this.checkInCheckOutClick) {\r\n time = this.checkInOutTime;\r\n type = this.type;\r\n attenCodeId = this.calledFromCheckInOut ? +this.checkInOutSettings.PriorPeriodCodeId : +this.selectedAttendanceCode;\r\n dailyCom = this.calledFromCheckInOut ? this.checkInOutSettings.DailyComment : this.type + ' at ' + this.checkInOutTime;\r\n overwritePriorPer = this.calledFromCheckInOut ? this.checkInOutSettings.OverwriteExistingAttendanceCode : overwritePriorPer;\r\n updatePeriodComment = this.calledFromCheckInOut ? this.checkInOutSettings.UpdatePeriodComment : updatePeriodComment;\r\n periodCommentAppOROver = this.calledFromCheckInOut ? this.checkInOutSettings.PeriodCommentAppOROver : periodCommentAppOROver;\r\n updateDailyComment = this.calledFromCheckInOut ? this.checkInOutSettings.UpdateDailyComment : updateDailyComment;\r\n dailyCommentAppOROver = this.calledFromCheckInOut ? this.checkInOutSettings.DailyCommentAppOROver : dailyCommentAppOROver;\r\n }\r\n this.attendanceService.getAttendanceHistoryByStudentIdDate(this.selectedStudent.Id, this.attendanceDate.toLocaleDateString(), time, type, attenCodeId, dailyCom, overwritePriorPer, updatePeriodComment, periodCommentAppOROver, updateDailyComment, dailyCommentAppOROver).pipe(take(1)).subscribe(ah => {\r\n this.studentAttendance = ah;\r\n this.dailyComment = this.studentAttendance.length > 0 ? this.studentAttendance[0].DailyComment : '';\r\n this.orgDailyComment = this.checkInCheckOutClick || this.needToProcess ? '' : this.dailyComment;\r\n if (this.dailyComment == '' && this.checkInOutSettings != undefined && this.checkInOutSettings.DailyComment != '') {\r\n this.dailyComment = this.checkInOutSettings.DailyComment;\r\n }\r\n this.studentAttendance.forEach(atth => {\r\n if (this.needToProcess == true) {\r\n if (atth.Meets == this.attendanceCheckInOut.Period) {\r\n atth.AttendanceCodeId = this.comingLateAttendanceCode;\r\n atth.PartialMinutesAbsence = this.attendanceCheckInOut.Minutes;\r\n }\r\n }\r\n atth.HasFocus = false;\r\n atth.CanTeacherChangeAtt = false;\r\n if (atth.AttendanceCodeId == null || this.validAttendanceCode.filter(o => o.Id == atth.AttendanceCodeId.toString()).length > 0) {\r\n atth.CanTeacherChangeAtt = true;\r\n }\r\n if (atth.AttendanceCodeId != undefined && atth.AttendanceCodeId > 0) {\r\n atth.AttendanceCode = this.attendanceCodes.find(x => x.Id == atth.AttendanceCodeId.toString()).CodeDescription;\r\n atth.PromptForPartialMinutes = this.attendanceCodes.find(x => x.Id == atth.AttendanceCodeId.toString()).PromptForPartialMinutes;\r\n atth.AttenCodeId = atth.AttendanceCodeId.toString();\r\n }\r\n else {\r\n atth.AttendanceCode = '';\r\n }\r\n\r\n if (atth.OrgAttendanceCodeId != undefined && atth.OrgAttendanceCodeId > 0) {\r\n atth.OrgAttendanceCode = this.attendanceCodes.find(x => x.Id == atth.OrgAttendanceCodeId.toString()).CodeDescription;\r\n atth.OrgAttenCodeId = atth.OrgAttendanceCodeId.toString();\r\n }\r\n else {\r\n atth.OrgAttendanceCode = '';\r\n }\r\n });\r\n this.angularMatData.data = this.studentAttendance;\r\n });\r\n }\r\n }\r\n\r\n validate() {\r\n if (!this.reviewAbsentNoticeDialog) {\r\n if (this.attendanceDate == undefined || this.attendanceDate == null || this.attendanceDate.toLocaleDateString() == '') {\r\n this.errors.push({\r\n fieldName: 'Attendance Date',\r\n fieldRef: this.datAttendanceDate,\r\n errorMsg: ' Please enter the Attendance Date.'\r\n });\r\n }\r\n\r\n if (this.attendanceDate != undefined && this.attendanceDate != null && !moment(this.attendanceDate).isValid()) {\r\n this.errors.push({\r\n fieldName: 'Attendance Date',\r\n fieldRef: this.datAttendanceDate,\r\n errorMsg: ' Please enter the valid Attendance Date.'\r\n });\r\n }\r\n\r\n if (this.attendanceDate != undefined && this.attendanceDate != null && !this.yearService.isDateWithinCurrentYear(this.attendanceDate)) {\r\n this.errors.push({\r\n fieldName: 'Attendance Date',\r\n fieldRef: this.datAttendanceDate,\r\n errorMsg: 'Attendance Date must be within currently selected year.'\r\n });\r\n }\r\n }\r\n else {\r\n if (this.startDate == undefined && this.startDate == null && !moment(this.startDate).isValid()) {\r\n this.errors.push({\r\n fieldName: 'Start Date',\r\n fieldRef: this.startDateRef,\r\n errorMsg: 'Please enter the valid Start Date.'\r\n });\r\n }\r\n else if (!this.yearService.isDateWithinCurrentYear(this.startDate)) {\r\n this.errors.push({\r\n fieldName: 'Start Date',\r\n fieldRef: this.startDateRef,\r\n errorMsg: 'Start Date must be within currently selected year.'\r\n });\r\n }\r\n if (this.endDate == undefined && this.endDate == null && !moment(this.endDate).isValid()) {\r\n this.errors.push({\r\n fieldName: 'End Date',\r\n fieldRef: this.endDateRef,\r\n errorMsg: 'Please enter the valid End Date.'\r\n });\r\n }\r\n else if (!this.yearService.isDateWithinCurrentYear(this.endDate)) {\r\n this.errors.push({\r\n fieldName: 'End Date',\r\n fieldRef: this.endDateRef,\r\n errorMsg: 'End Date must be within currently selected year.'\r\n });\r\n }\r\n }\r\n }\r\n\r\n legendClick() {\r\n const dialogBox = this.dialog.open(AttendanceCheckInOutLegendComponent, {\r\n disableClose: true,\r\n maxWidth: '40vw',\r\n maxHeight: '65vh'\r\n });\r\n }\r\n\r\n rowClick(studentAtten: AttendanceByStudent) {\r\n if (studentAtten.PeriodAvailable) {\r\n this.studentAttendance.forEach(att => {\r\n att.HasFocus = false;\r\n });\r\n\r\n if (studentAtten.AttenCodeId == null || studentAtten.CanTeacherChangeAtt == true) {\r\n studentAtten.HasFocus = true;\r\n }\r\n }\r\n }\r\n\r\n selectedCodeChange(studentAtten: AttendanceByStudent, codeId: string) {\r\n this.unsavedChanges = true;\r\n if (codeId != '') {\r\n studentAtten.AttenCodeId = codeId;\r\n studentAtten.AttendanceCodeId = parseInt(codeId, 10);\r\n studentAtten.AttendanceCode = this.attendanceCodes.find(x => x.Id == codeId).CodeDescription;\r\n studentAtten.PromptForPartialMinutes = this.attendanceCodes.find(x => x.Id == codeId).PromptForPartialMinutes;\r\n }\r\n else {\r\n studentAtten.AttenCodeId = undefined;\r\n studentAtten.AttendanceCodeId = undefined;\r\n studentAtten.AttendanceCode = '';\r\n }\r\n }\r\n\r\n save() {\r\n this.saveClick();\r\n }\r\n\r\n continuedWithoutSave() {\r\n this.unsavedChanges = false;\r\n }\r\n\r\n saveClick() {\r\n this.errors = [];\r\n\r\n if (this.attendanceDate != undefined && this.attendanceDate != null && this.attendanceDate.toLocaleDateString() != '' && this.studentAttendance.length > 0) {\r\n this.studentAttendance.forEach(att => {\r\n if (att.AttendanceCodeId > 0 && att.PromptForPartialMinutes == true && (att.PartialMinutesAbsence == null || att.PartialMinutesAbsence == 0)) {\r\n this.errors.push({\r\n fieldName: 'Missed Minutes',\r\n fieldRef: null,\r\n errorMsg: ' Please enter Partial Minutes for Attendance Code ' + att.AttendanceCode\r\n });\r\n }\r\n\r\n if (att.AttendanceCodeId > 0 && att.PromptForPartialMinutes == false && att.PartialMinutesAbsence > 0) {\r\n att.PartialMinutesAbsence = null;\r\n }\r\n\r\n if (att.PartialMinutesAbsence != null && att.PartialMinutesAbsence > 0 && att.PartialMinutesAbsence > att.Duration) {\r\n att.PartialMinutesAbsence = att.Duration;\r\n }\r\n });\r\n\r\n if (this.errors.length == 0) {\r\n this.studentAttendance.forEach(st => {\r\n st.DailyComment = this.dailyComment;\r\n st.OrgDailyComment = this.orgDailyComment;\r\n });\r\n\r\n\r\n if (this.needToProcess || this.checkInCheckOutClick) {\r\n this.checkInOutSettings = new CheckInOutSettings;\r\n this.checkInOutSettings.Time = this.checkInOutTime;\r\n this.checkInOutSettings.Type = this.type;\r\n this.checkInOutSettings.PriorPeriodCodeId = this.selectedAttendanceCode;\r\n this.checkInOutSettings.OverwriteExistingAttendanceCode = false;\r\n this.checkInOutSettings.DailyComment = this.dailyComment;\r\n this.checkInOutSettings.UpdatePeriodComment = false;\r\n this.checkInOutSettings.PeriodCommentAppOROver = 'A';\r\n this.checkInOutSettings.UpdateDailyComment = true;\r\n this.checkInOutSettings.DailyCommentAppOROver = 'A';\r\n }\r\n if (this.needToProcess || this.checkInCheckOutClick) {\r\n this.attendanceService.saveAttendanceHistoryCheckInOutByStudentIdDate(this.selectedStudent.Id, this.attendanceDate.toLocaleDateString(), this.checkInOutTime, this.type, +(this.selectedAttendanceCode), this.dailyComment, this.checkInOutSettings, this.calledAsDialog).pipe(take(1)).subscribe(updated => {\r\n if (updated == true) {\r\n this.getStudentAttendanceHistory();\r\n }\r\n this.saveStudentAttendanceData();\r\n });\r\n\r\n }\r\n else {\r\n this.saveStudentAttendanceData();\r\n }\r\n\r\n }\r\n }\r\n }\r\n saveStudentAttendanceData() {\r\n const allData = new AllStudentsAttendanceHistory;\r\n allData.StudentAttendance = this.studentAttendance.filter(o => o.AttendanceCodeId != o.OrgAttendanceCodeId || o.PartialMinutesAbsence != o.OrgPartialMinutesAbsence || o.DailyComment != o.OrgDailyComment);\r\n allData.Attachments = this.attachmentMatTable.data;\r\n allData.CheckInOutHistoryId = this.studentAttendance.find(o => o.CheckInOutHistoryId != null && o.CheckInOutHistoryId > 0) != undefined ? this.studentAttendance.find(o => o.CheckInOutHistoryId != null && o.CheckInOutHistoryId > 0).CheckInOutHistoryId : 0;\r\n allData.CheckInOutSettings = new CheckInOutSettings;\r\n allData.CheckInOutSettings = this.calledAsDialog == false ? null : this.checkInOutSettings;\r\n\r\n this.allStudentsAH.push(allData);\r\n\r\n this.attendanceService.saveStudentAttendanceHistory(this.allStudentsAH).pipe(take(1)).subscribe(codes => {\r\n this.unsavedChanges = false;\r\n this.checkInCheckOutClick = false;\r\n this.getStudentAttendanceHistory();\r\n if (codes != 'Success') {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: codes\r\n });\r\n }\r\n else if (this.calledAsDialog) {\r\n setTimeout(() => {\r\n const result: any = {};\r\n result.CheckInOutHistoryId = this.studentAttendance.find(o => o.CheckInOutHistoryId != null && o.CheckInOutHistoryId > 0).CheckInOutHistoryId;\r\n if (this.calledFromCheckInOut) {\r\n this.attendanceCheckInOutComp.getAttendanceCheckInOutByDate();\r\n }\r\n this.dialogRef.close(result);\r\n }, 100);\r\n }\r\n });\r\n }\r\n\r\n completeClick() {\r\n let unsavedStudentAttendance: AttendanceByStudent[] = [];\r\n\r\n this.unsavedStudentAttendanceTabData.forEach(tabData => {\r\n unsavedStudentAttendance = unsavedStudentAttendance.concat(tabData.Attendance);\r\n });\r\n\r\n const allData = new AllStudentsAttendanceHistory;\r\n allData.StudentAttendance = unsavedStudentAttendance;\r\n allData.Attachments = this.attachmentMatTable.data;\r\n allData.CheckInOutHistoryId = 0;\r\n allData.CheckInOutSettings = null;\r\n\r\n this.allStudentsAH.push(allData);\r\n\r\n this.attendanceService.saveStudentAttendanceHistory(this.allStudentsAH).pipe(take(1)).subscribe(codes => {\r\n this.unsavedChanges = false;\r\n this.getStudentAttendanceHistory();\r\n if (codes != 'Success') {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: codes\r\n });\r\n }\r\n else {\r\n this.absentNotice.Status = 'Completed';\r\n this.absentNoticesService.saveAbsentNotice(this.absentNotice).subscribe(result => {\r\n if (result) {\r\n this.dialogRef.close();\r\n }\r\n });\r\n this.dialogRef.close();\r\n }\r\n });\r\n }\r\n\r\n clearChangesClick() {\r\n this.unsavedStudentAttendanceTabData = [];\r\n this.checkInCheckOutClick = false;\r\n this.getStudentAttendanceHistory();\r\n }\r\n\r\n massUpdateClick() {\r\n if (this.attendanceDate != undefined && this.attendanceDate != null && this.attendanceDate.toLocaleDateString() != '' && this.studentAttendance.length > 0) {\r\n const dialogBox = this.dialog.open(MassUpdateStudentAttendanceComponent, {\r\n disableClose: true,\r\n minWidth: '30vw',\r\n maxWidth: '45vw',\r\n minHeight: '30vh',\r\n maxHeight: '70vh',\r\n data: {\r\n attendanceCodes: this.validAttendanceCode\r\n }\r\n });\r\n\r\n dialogBox.afterClosed().pipe(take(1)).subscribe(result => {\r\n if (result != undefined && result != '') {\r\n this.studentAttendance.forEach(atten => {\r\n if (atten.PeriodAvailable && atten.CanTeacherChangeAtt == true) {\r\n atten.AttenCodeId = result;\r\n atten.AttendanceCodeId = parseInt(result, 10);\r\n atten.AttendanceCode = this.attendanceCodes.find(x => x.Id == result).CodeDescription;\r\n atten.PromptForPartialMinutes = this.attendanceCodes.find(x => x.Id == result).PromptForPartialMinutes;\r\n }\r\n });\r\n }\r\n else {\r\n this.studentAttendance.forEach(atten => {\r\n if (atten.PeriodAvailable && atten.CanTeacherChangeAtt == true && (atten.AttendanceCodeId == null || result == '')) {\r\n atten.AttenCodeId = undefined;\r\n atten.AttendanceCodeId = undefined;\r\n atten.AttendanceCode = '';\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n checkInOutClick(type: string) {\r\n if (type == '') {\r\n type = this.calledFromCheckInOut == false ? this.data.attendanceCheckInOut.Type : this.checkInOutSettings.Type;\r\n }\r\n this.errors = [];\r\n if (this.attendanceDate == undefined || this.attendanceDate == null || this.attendanceDate.toLocaleDateString() == '') {\r\n this.errors.push({\r\n fieldName: 'Attendance Date',\r\n fieldRef: this.datAttendanceDate,\r\n errorMsg: ' Please enter the Attendance Date.'\r\n });\r\n }\r\n\r\n if (this.attendanceDate != undefined && this.attendanceDate != null && !moment(this.attendanceDate).isValid()) {\r\n this.errors.push({\r\n fieldName: 'Attendance Date',\r\n fieldRef: this.datAttendanceDate,\r\n errorMsg: ' Please enter the valid Attendance Date.'\r\n });\r\n }\r\n\r\n if (this.checkInOutTime == undefined || this.checkInOutTime == null || this.checkInOutTime == '') {\r\n this.errors.push({\r\n fieldName: 'Time',\r\n fieldRef: this.timeField,\r\n errorMsg: ' is required.'\r\n });\r\n }\r\n\r\n if (this.checkInOutTime != undefined && this.checkInOutTime != '' && !this.checkInOutTime.match(this.timeRegexp)) {\r\n this.errors.push({\r\n fieldName: 'Time',\r\n fieldRef: this.timeField,\r\n errorMsg: ' Must be in time format, hh:mm [AM|PM].'\r\n });\r\n }\r\n\r\n if (this.selectedAttendanceCode == undefined || this.selectedAttendanceCode == '') {\r\n this.errors.push({\r\n fieldName: 'Periods Code',\r\n fieldRef: this.periodCodeRef,\r\n errorMsg: ' is required.'\r\n });\r\n }\r\n\r\n if (this.selectedAttendanceCode != undefined && +(this.selectedAttendanceCode) > 0 && this.validAttendanceCode.filter(o => o.Id == this.selectedAttendanceCode).length == 0) {\r\n this.errors.push({\r\n fieldName: 'Periods Code',\r\n fieldRef: this.periodCodeRef,\r\n errorMsg: ' Teacher can not use attendance code ' + this.attendanceCodes.find(o => o.Id == this.selectedAttendanceCode).CodeDescription\r\n });\r\n }\r\n\r\n if (this.selectedAttendanceCode != undefined && +(this.selectedAttendanceCode) > 0 && this.validAttendanceCode.find(o => o.Id == this.selectedAttendanceCode).PromptForPartialMinutes == true) {\r\n this.errors.push({\r\n fieldName: 'Periods Code',\r\n fieldRef: this.periodCodeRef,\r\n errorMsg: ' Partial Minutes Code ' + this.attendanceCodes.find(o => o.Id == this.selectedAttendanceCode).CodeDescription + ' can not be used for Periods Code.'\r\n });\r\n }\r\n\r\n if (type == 'Check Out' && this.earlyLeavingAttendanceCode != undefined && this.earlyLeavingAttendanceCode > 0 && this.validAttendanceCode.filter(o => o.Id == this.earlyLeavingAttendanceCode.toString()).length == 0) {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: this.periodCodeRef,\r\n errorMsg: ' Teacher can not use attendance code ' + this.attendanceCodes.find(o => o.Id == this.earlyLeavingAttendanceCode.toString()).CodeDescription\r\n });\r\n }\r\n\r\n if (type == 'Check In' && this.comingLateAttendanceCode != undefined && this.comingLateAttendanceCode > 0 && this.validAttendanceCode.filter(o => o.Id == this.comingLateAttendanceCode.toString()).length == 0) {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: this.periodCodeRef,\r\n errorMsg: ' Teacher can not use attendance code ' + this.attendanceCodes.find(o => o.Id == this.comingLateAttendanceCode.toString()).CodeDescription\r\n });\r\n }\r\n\r\n if (this.errors.length == 0 && this.studentAttendance.length > 0) {\r\n if (this.calledFromCheckInOut == false) {\r\n if (type == 'Check In') {\r\n this.dailyComment = this.dailyComment + ' Check-in at ' + this.checkInOutTime;\r\n }\r\n else if (type == 'Check Out') {\r\n this.dailyComment = this.dailyComment + ' Check-out at ' + this.checkInOutTime;\r\n }\r\n }\r\n this.checkInCheckOutClick = true;\r\n this.type = type;\r\n if (this.calledFromCheckInOut == false) {\r\n this.checkInOutSettings = new CheckInOutSettings;\r\n this.checkInOutSettings.Time = this.checkInOutTime;\r\n this.checkInOutSettings.Type = this.type;\r\n this.checkInOutSettings.PriorPeriodCodeId = this.selectedAttendanceCode;\r\n this.checkInOutSettings.OverwriteExistingAttendanceCode = false;\r\n this.checkInOutSettings.DailyComment = this.dailyComment;\r\n this.checkInOutSettings.UpdatePeriodComment = false;\r\n this.checkInOutSettings.PeriodCommentAppOROver = 'A';\r\n this.checkInOutSettings.UpdateDailyComment = true;\r\n this.checkInOutSettings.DailyCommentAppOROver = 'A';\r\n }\r\n\r\n\r\n this.getStudentAttendanceHistory();\r\n this.unsavedChanges = true;\r\n }\r\n }\r\n\r\n checkErrors(nextState?: RouterStateSnapshot): number {\r\n this.errors = [];\r\n this.studentAttendance.forEach(att => {\r\n if (att.AttendanceCodeId > 0 && att.PromptForPartialMinutes == true && (att.PartialMinutesAbsence == null || att.PartialMinutesAbsence == 0)) {\r\n this.errors.push({\r\n fieldName: 'Partial Minutes',\r\n fieldRef: null,\r\n errorMsg: ' Please enter Partial Minutes for Attendance Code ' + att.AttendanceCode\r\n });\r\n }\r\n });\r\n // PRE: the user tries to navigate away\r\n // POST: checks the errors.\r\n // If 4, shows the warning dialog. If the result is true, it will wait for the save before it continues.\r\n // If 3, shows the warning, but doesn't perform route on the save (lets the component do it)\r\n // If 2, continues without save.\r\n // If 1, continues with save.\r\n // If 0, shows warning.\r\n // If -1, stops.\r\n if (this.unsavedChanges) {\r\n return 0;\r\n }\r\n else {\r\n return 2;\r\n }\r\n }\r\n\r\n getCheckInOutButtnSettings() {\r\n this.studentSummaryService.getCheckInOutButtonSettings(this.selectedStudent.Id, this.yearService.defaultYear.Id).pipe(take(1)).subscribe(settings => {\r\n if (settings.AllowParentEnterCheckInOut || settings.AllowParentEnterCheckInOutMobile || settings.AllowStudentEnterCheckInOut || settings.AllowStudentEnterCheckInOutMobile) {\r\n this.showSelfCheckButton = true;\r\n }\r\n\r\n if (settings.AllowParentEnterAbsentNotice || settings.AllowStudentEnterAbsentNotice) {\r\n this.showAbsentNoticesButton = true;\r\n }\r\n });\r\n }\r\n\r\n viewSelfCheckHistoryClick() {\r\n const dialogBox = this.dialog.open(SelfCheckInOutHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '60vw',\r\n maxWidth: '120vw',\r\n minHeight: '80vh',\r\n data: {\r\n studentId: this.selectedStudent.Id,\r\n selectedStudent: this.selectedStudent\r\n }\r\n });\r\n }\r\n\r\n viewAbsentNoticeClick() {\r\n const dialogBox = this.dialog.open(ViewAbsentNoticeHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '60vw',\r\n maxWidth: '60vw',\r\n minHeight: '80vh',\r\n data: {\r\n studentId: this.selectedStudent.Id\r\n }\r\n });\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n addAttachmentClick() {\r\n // POST: opens a modal to add an attachment\r\n\r\n // Initializing attachment\r\n const attachment = new Attachment();\r\n attachment.Id = this.attendanceCheckInOut != undefined ? -(this.attendanceCheckInOut.Attachments.length + 1) : -1;\r\n attachment.DocumentId = 0;\r\n attachment.FileName = '';\r\n attachment.Description = '';\r\n attachment.UploadedDate = new Date();\r\n attachment.MyFileBase64String = '';\r\n attachment.FileType = '';\r\n attachment.Comment = '';\r\n attachment.ViewFileOnWebsite = true;\r\n attachment.AttachmentDescription = '';\r\n\r\n // Opening modal\r\n const dialogBox = this.dialog.open(AddAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment,\r\n newAttachment: true,\r\n requireDocumentType: true\r\n },\r\n disableClose: true\r\n });\r\n dialogBox.afterClosed().pipe(take(1)).subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n attachment.AttachmentDescription = attachment.Description;\r\n attachment.DocumentBase64 = _.cloneDeep(attachment.MyFileBase64String);\r\n attachment.DocumentType = attachment.FileType;\r\n attachment.MyFileBase64String = '';\r\n this.attendanceCheckInOut.Attachments.push(attachment);\r\n this.loadAttachmentTable();\r\n }\r\n });\r\n }\r\n\r\n loadAttachmentTable() {\r\n this.attachmentMatTable.data = this.attendanceCheckInOut.Attachments.filter(x => x.Deleted == false);\r\n }\r\n\r\n deleteAttachmentClick(attachmentId: number) {\r\n this.attendanceCheckInOut.Attachments.find(o => o.Id == attachmentId).Deleted = true;\r\n this.loadAttachmentTable();\r\n }\r\n\r\n saveAttachment(attachment: Attachment) {\r\n // PRE: an attachment to open\r\n // POST: takes you to the student attachment page\r\n if (attachment.FileName && !attachment.AttachmentFileName) {\r\n attachment.AttachmentFileName = attachment.FileName;\r\n }\r\n\r\n if (attachment.MyFileBase64String && attachment.AttachmentFileName && attachment.FileType) {\r\n System.viewFileFromBase(attachment.MyFileBase64String, attachment.FileType, attachment.AttachmentFileName);\r\n } else if (attachment.Id && attachment.AttachmentFileName) {\r\n System.viewFileFromId(attachment.Id, attachment.AttachmentFileName);\r\n }\r\n }\r\n\r\n viewHistoryClick() {\r\n const dialogBox = this.dialog.open(CheckInOutViewHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '80vw',\r\n maxWidth: '80vw',\r\n minHeight: '80vh',\r\n data: {\r\n selectedStudent: this.selectedStudent,\r\n schoolId: this.yearService.defaultYear.SchoolID\r\n }\r\n });\r\n }\r\n\r\n selectedTabChanged(tabName: string) {\r\n if (tabName != this.selectedTab) {\r\n this.selectedTab = tabName;\r\n this.attendanceDate = new Date(this.selectedTab);\r\n\r\n const index: number = this.unsavedStudentAttendanceTabData.findIndex(o => moment(o.AttendanceDate).isSame(this.attendanceDate, 'day'));\r\n\r\n if (index == -1) {\r\n this.getStudentAttendanceHistory();\r\n }\r\n else {\r\n this.studentAttendance = this.unsavedStudentAttendanceTabData[index].Attendance;\r\n this.angularMatData.data = this.studentAttendance;\r\n this.dailyComment = this.studentAttendance.length > 0 ? this.studentAttendance[0].DailyComment : '';\r\n }\r\n }\r\n }\r\n\r\n applyClick() {\r\n this.errors = [];\r\n\r\n this.validate();\r\n\r\n if (this.errors.length == 0) {\r\n const selectedAttendanceCode: AttendanceCode = this.attendanceCodes.find(ac => ac.Id == this.selectedAttendanceCode);\r\n\r\n if (selectedAttendanceCode) {\r\n this.studentAttendance.forEach(attendance => {\r\n attendance.AttendanceCode = selectedAttendanceCode.CodeDescription;\r\n attendance.AttenCodeId = selectedAttendanceCode.Id;\r\n attendance.AttendanceCodeId = parseInt(selectedAttendanceCode.Id, 10);\r\n attendance.DailyComment = this.dailyComment;\r\n });\r\n\r\n const index: number = this.unsavedStudentAttendanceTabData.findIndex(o => this.studentAttendance && this.studentAttendance.length > 0 && moment(o.AttendanceDate).isSame(this.studentAttendance[0].AttendanceDate, 'day'));\r\n\r\n if (index != -1) {\r\n this.unsavedStudentAttendanceTabData[index].Attendance = this.studentAttendance;\r\n }\r\n else {\r\n const unsavedStudentAttendance = new AttendanceByStudentList();\r\n unsavedStudentAttendance.Attendance = this.studentAttendance;\r\n unsavedStudentAttendance.AttendanceDate = new Date(this.studentAttendance[0].AttendanceDate);\r\n this.unsavedStudentAttendanceTabData.push(unsavedStudentAttendance);\r\n }\r\n }\r\n\r\n if (this.reviewDateChanged) {\r\n this.reviewDateChanged = false;\r\n\r\n this.attendanceService.getSchoolDaysBetweenDates(this.yearService.defaultYear.SiteYearId, this.startDate.toLocaleDateString(), this.endDate.toLocaleDateString()).pipe(take(1)).subscribe(dates => {\r\n this.tabNames = [];\r\n this.absentNoticeDates = dates;\r\n this.absentNoticeDates.forEach(date => {\r\n this.tabNames.push(new Date(date).toLocaleDateString());\r\n });\r\n\r\n this.tabNamesLoaded = false;\r\n setTimeout(() => {\r\n this.tabNamesLoaded = true;\r\n }, 0);\r\n });\r\n }\r\n }\r\n }\r\n\r\n nextclick() {\r\n const selectedStudentIndex: number = this.useStudents.indexOf(this.useStudents.find(o => o.Id == this.selectedStudent.Id));\r\n if (selectedStudentIndex + 2 == this.useStudents.length) {\r\n this.isLastStudent = true;\r\n }\r\n else {\r\n this.isLastStudent = false;\r\n }\r\n\r\n if (selectedStudentIndex + 2 > 0) {\r\n this.isFirstStudent = false;\r\n }\r\n\r\n const allData = new AllStudentsAttendanceHistory;\r\n allData.StudentId = this.studentAttendance[0].StudentId;\r\n allData.StudentAttendance = this.studentAttendance.filter(o => o.AttendanceCodeId != o.OrgAttendanceCodeId || o.PartialMinutesAbsence != o.OrgPartialMinutesAbsence || o.DailyComment != o.OrgDailyComment);\r\n allData.Attachments = this.attachmentMatTable.data;\r\n allData.CheckInOutHistoryId = this.studentAttendance.find(o => o.CheckInOutHistoryId != null && o.CheckInOutHistoryId > 0) != undefined ? this.studentAttendance.find(o => o.CheckInOutHistoryId != null && o.CheckInOutHistoryId > 0).CheckInOutHistoryId : 0;\r\n allData.CheckInOutSettings = new CheckInOutSettings;\r\n allData.CheckInOutSettings = this.calledAsDialog == false ? null : this.checkInOutSettings;\r\n\r\n this.allStudentsAH.push(allData);\r\n\r\n const selectedStudent: Student = this.useStudents[selectedStudentIndex + 1];\r\n this.studentService.selectedStudent = selectedStudent;\r\n this.selectedStudent = selectedStudent;\r\n this.studentService.updateSelectedStudent(selectedStudent.Id);\r\n }\r\n\r\n previousClick() {\r\n const selectedStudentIndex: number = this.useStudents.indexOf(this.useStudents.find(o => o.Id == this.selectedStudent.Id));\r\n const selectedStudent: Student = this.useStudents[selectedStudentIndex - 1];\r\n this.studentService.selectedStudent = selectedStudent;\r\n\r\n if (selectedStudentIndex - 1 < this.useStudents.length - 1) {\r\n this.isLastStudent = false;\r\n }\r\n\r\n if (selectedStudent != undefined) {\r\n const allStudent = this.allStudentsAH.filter(o => o.StudentId != selectedStudent.Id);\r\n this.allStudentsAH = [];\r\n this.allStudentsAH = allStudent;\r\n this.selectedStudent = selectedStudent;\r\n this.studentService.updateSelectedStudent(selectedStudent.Id);\r\n }\r\n else {\r\n this.allStudentsAH = [];\r\n this.dialogRef.close();\r\n const checkInOutDialogRef = this.dialog.open(CheckInOutModalDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n selectedStudent: this.useStudents,\r\n type: this.type,\r\n attendanceDate: this.attendanceDate,\r\n checkInOutSettings: this.checkInOutSettings\r\n },\r\n minWidth: '40vw',\r\n maxWidth: '40vw',\r\n minHeight: '90vh',\r\n maxHeight: '90vh'\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-attendance-check-in-out-how-to-dialog',\r\n templateUrl: './attendance-check-in-out-how-to-dialog.component.html'\r\n})\r\nexport class AttendanceCheckInOutHowToDialogComponent implements OnInit {\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","
\r\n How To Check In/ Check Out\r\n
\r\n\r\n\r\n
\r\n Selecting the Check In or Check Out buttons will start a wizard style process with the following steps:

\r\n\r\n Select the students checking in or out.

\r\n\r\n Enter the check in or check out time for the students and override the missed periods attendance code.

\r\n\r\n Review, and override if needed, each selected student’s Check In/Check out information and the effect on their attendance.

\r\n\r\n To avoid making changes for a student that was originally selected the user can use the Clear Changes button and navigate to the next student.

\r\n\r\n NOTE: No changes will be saved until all students have been reviewed.\r\n
\r\n
\r\n\r\n\r\n \r\n","\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Completed\r\n \r\n\r\n \r\n \r\n \r\n Submitted\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n No record exists for selected Date\r\n
\r\n\r\n
0\">\r\n \r\n\r\n \r\n \r\n Type\r\n \r\n \r\n {{st.Type}}\r\n \r\n\r\n \r\n \r\n \r\n Time\r\n \r\n \r\n {{st.Time}}\r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n {{st.Status}}\r\n \r\n\r\n \r\n \r\n \r\n Student #\r\n \r\n \r\n {{st.StudentNumber}}\r\n \r\n\r\n \r\n \r\n \r\n Name\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Period\r\n \r\n \r\n {{st.Period}}\r\n \r\n\r\n \r\n \r\n \r\n L/E Minutes\r\n \r\n \r\n {{st.Minutes}}\r\n \r\n\r\n \r\n \r\n \r\n \"paperclip\"\r\n \r\n \r\n Y\r\n \r\n \r\n \r\n\r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n","import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { AddAttachmentDialogComponent } from '../../../shared-components/add-attachment-dialog/add-attachment-dialog.component';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { GeneralConfirmationComponent } from '../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { StudentInformationComponent } from '../../../shared-components/student-information/student-information.component';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { AttendanceAdministrationService } from '../attendance-administration.service';\r\nimport { AttendanceCheckInOutHowToDialogComponent } from '../modals/attendance-check-in-out-how-to-dialog/attendance-check-in-out-how-to-dialog.component';\r\nimport { AttendanceCheckInOutLegendComponent } from '../../../shared-components/attendance-check-in-out-legend/attendance-check-in-out-legend.component';\r\nimport { AttendanceCheckInOut } from './attendance-check-in-out.model';\r\nimport * as moment from 'moment';\r\nimport { AttendanceByStudentComponent } from '../attendance-by-student/attendance-by-student.component';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { ViewAttachmentsComponent } from '../../../shared-components/view-attachments/view-attachments.component';\r\nimport { CheckInOutViewHistoryDialogComponent } from '../../../shared-components/check-in-out-view-history-dialog/check-in-out-view-history-dialog.component';\r\nimport { StudentSearchComponent } from '../../../shared-components/student-search/student-search.component';\r\nimport { School } from '../../../shared-components/year/school.model';\r\nimport { CheckInOutModalDialogComponent } from '../modals/check-in-out-modal-dialog/check-in-out-modal-dialog.component';\r\n\r\n@Component({\r\n selector: 'app-attendance-check-in-out',\r\n templateUrl: './attendance-check-in-out.component.html',\r\n styleUrls: ['./attendance-check-in-out.component.css']\r\n})\r\nexport class AttendanceCheckInOutComponent implements OnInit, AfterViewInit {\r\n todaysDate = new Date();\r\n attendanceDate: Date;\r\n previousDate: Date;\r\n includeCompleted = true;\r\n includeSubmitted = false;\r\n attendanceCheckInOut: AttendanceCheckInOut[] = [];\r\n\r\n sameDate = true;\r\n\r\n errors: ErrorList[] = [];\r\n\r\n columnsToDisplay = ['Type', 'Time', 'Status', 'StudentNumber', 'Name', 'Period', 'LEMinutes', 'Attachment', 'Actions'];\r\n angularMatData = new TylerMatTableDataSource(this.attendanceCheckInOut);\r\n\r\n _sort: MatSort;\r\n\r\n datAttendanceDate: ElementRef;\r\n\r\n StudentInfoDialog: MatDialogRef;\r\n subscription: Subscription[] = [];\r\n\r\n selectedStudent: Student;\r\n schools: School[];\r\n\r\n constructor(\r\n private attendanceAdminService: AttendanceAdministrationService,\r\n private studentService: StudentService,\r\n private dialog: MatDialog,\r\n private sharedService: SharedService,\r\n private yearService: YearService\r\n ) {\r\n this.subscription.push(\r\n this.yearService.observableDefaultYearStream$.subscribe(defaultYear => {\r\n this.getAttendanceCheckInOutByDate();\r\n })\r\n );\r\n }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.angularMatData.sort = value;\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n ngOnInit() {\r\n this.attendanceDate = new Date();\r\n this.previousDate = this.attendanceDate;\r\n this.getAttendanceCheckInOutByDate();\r\n this.schools = [];\r\n if (this.yearService.defaultYear.SchoolType != 'CO') {\r\n this.schools.push(this.yearService.schools.find(o => o.Id == this.yearService.defaultYear.SchoolID));\r\n }\r\n else {\r\n this.yearService.schools.forEach(element => {\r\n this.schools.push(element);\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.datAttendanceDate.nativeElement.focus();\r\n }\r\n\r\n displayChange(type: string) {\r\n if (type == 'completed') {\r\n this.includeCompleted = !this.includeCompleted;\r\n }\r\n\r\n if (type == 'submitted') {\r\n this.includeSubmitted = !this.includeSubmitted;\r\n }\r\n\r\n this.filterData();\r\n }\r\n\r\n getAttendanceCheckInOutByDate() {\r\n this.attendanceAdminService.getAttendanceCheckInOutByDate(this.attendanceDate.toLocaleDateString()).pipe(take(1)).subscribe(result => {\r\n this.attendanceCheckInOut = result;\r\n this.attendanceCheckInOut.forEach(element => {\r\n element.Name = this.studentService.formatStudentName(element.StudentFirstName, element.StudentMiddleName, element.StudentLastName, '');\r\n });\r\n this.filterData();\r\n });\r\n }\r\n\r\n filterData() {\r\n this.angularMatData.data = [];\r\n if (this.includeCompleted == true && this.includeSubmitted == true) {\r\n this.angularMatData.data = this.attendanceCheckInOut;\r\n }\r\n else {\r\n let classes: AttendanceCheckInOut[] = [];\r\n if (this.includeCompleted) {\r\n classes = classes.concat(this.attendanceCheckInOut.filter(o => o.Status == 'Completed'));\r\n }\r\n\r\n if (this.includeSubmitted) {\r\n classes = classes.concat(this.attendanceCheckInOut.filter(o => o.Status == 'Submitted'));\r\n }\r\n\r\n this.angularMatData.data = classes;\r\n }\r\n\r\n }\r\n\r\n searchClick() {\r\n this.errors = [];\r\n if (this.attendanceDate == undefined || this.attendanceDate == null || this.attendanceDate.toLocaleDateString() == '') {\r\n this.errors.push({\r\n fieldName: 'Attendance Date',\r\n fieldRef: this.datAttendanceDate,\r\n errorMsg: ' Please enter the Attendance Date.'\r\n });\r\n }\r\n\r\n if (this.attendanceDate != undefined && this.attendanceDate != null && !moment(this.attendanceDate).isValid()) {\r\n this.errors.push({\r\n fieldName: 'Attendance Date',\r\n fieldRef: this.datAttendanceDate,\r\n errorMsg: ' Please enter the valid Attendance Date.'\r\n });\r\n }\r\n\r\n if (this.errors.length == 0) {\r\n this.previousDate = this.attendanceDate;\r\n this.getAttendanceCheckInOutByDate();\r\n }\r\n }\r\n\r\n keyDownFunction(event) {\r\n if (event.keyCode == 13) {\r\n this.searchClick();\r\n }\r\n }\r\n\r\n studentInfoClick(student) {\r\n // POST: show student related menus in right side\r\n const studentRecord = { Id: student.StudentId, FirstName: student.StudentFirstName, LastName: student.StudentLastName, MiddleName: student.StudentMiddleName, NickName: '' };\r\n const studentRecords = [];\r\n studentRecords.push(studentRecord);\r\n\r\n this.StudentInfoDialog = this.dialog.open(StudentInformationComponent, { panelClass: 'tyl-mat-dialog', disableClose: true, height: '100%', position: { top: '0px', right: '0px' } });\r\n this.StudentInfoDialog.componentInstance.student = studentRecord;\r\n this.StudentInfoDialog.componentInstance.students = studentRecords;\r\n this.StudentInfoDialog.componentInstance.initMenu();\r\n }\r\n\r\n addAttachmentClick(historyId: number) {\r\n // POST: opens a modal to add an attachment\r\n\r\n // Initializing attachment\r\n const attachment = new Attachment();\r\n attachment.Id = -1;\r\n attachment.DocumentId = 0;\r\n attachment.FileName = '';\r\n attachment.Description = '';\r\n attachment.UploadedDate = new Date();\r\n attachment.MyFileBase64String = '';\r\n attachment.FileType = '';\r\n attachment.Comment = '';\r\n attachment.ViewFileOnWebsite = true;\r\n\r\n // Opening modal\r\n const dialogBox = this.dialog.open(AddAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment,\r\n newAttachment: true,\r\n requireDocumentType: true\r\n },\r\n disableClose: true\r\n });\r\n dialogBox.afterClosed().pipe(take(1)).subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n const attachmentData: Attachment[] = [];\r\n attachmentData.push(attachment);\r\n this.saveAttachment(historyId, attachmentData);\r\n }\r\n });\r\n }\r\n\r\n saveAttachment(historyId: number, attachment: Attachment[]) {\r\n attachment.forEach(att => {\r\n att.AttachmentDescription = att.Description;\r\n att.DocumentBase64 = att.MyFileBase64String;\r\n att.MyFileBase64String = '';\r\n });\r\n this.attendanceAdminService.saveCheckInOutHistoryAttachment(historyId, attachment).pipe(take(1)).subscribe(result => {\r\n if (result == true) {\r\n this.getAttendanceCheckInOutByDate();\r\n }\r\n });\r\n }\r\n\r\n dateChange(date: Date) {\r\n if (date.toLocaleDateString() == this.todaysDate.toLocaleDateString()) {\r\n this.sameDate = true;\r\n }\r\n else {\r\n this.sameDate = false;\r\n }\r\n }\r\n\r\n deleteClick(recordId: number, type: string) {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Check In/Out Record';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete this Check In/Check Out Record?';\r\n deleteConfirmDialog.componentInstance.okButtonLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmEvent.pipe(take(1)).subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.attendanceAdminService.deleteCheckInOutRecordById(recordId, type).pipe(take(1)).subscribe(result => {\r\n if (result == true) {\r\n this.getAttendanceCheckInOutByDate();\r\n const informationDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n maxWidth: '40vw',\r\n minWidth: '40vw'\r\n });\r\n informationDialog.componentInstance.headerLabel = 'Record Deleted';\r\n informationDialog.componentInstance.confirmMessage = 'The Check In (or Check Out) record has been deleted. It is recommended you visit this students attendance for this date ' + this.attendanceDate.toString() + ' to correct/review their attendance.';\r\n informationDialog.componentInstance.disableConfirmation = true;\r\n informationDialog.componentInstance.informational = true;\r\n }\r\n else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n legendClick() {\r\n const dialogBox = this.dialog.open(AttendanceCheckInOutLegendComponent, {\r\n disableClose: true,\r\n maxWidth: '40vw',\r\n maxHeight: '65vh'\r\n });\r\n }\r\n\r\n howToClick() {\r\n const dialogBox = this.dialog.open(AttendanceCheckInOutHowToDialogComponent, {\r\n disableClose: true,\r\n minWidth: '40vw',\r\n maxWidth: '40vw',\r\n maxHeight: '75vh'\r\n });\r\n }\r\n\r\n editClick(attendanceCheckInOut: AttendanceCheckInOut) {\r\n this.attendanceAdminService.getCheckInOutHistoryAttachmentById(attendanceCheckInOut.HistoryId, 'History').pipe(take(1)).subscribe(attachment => {\r\n attendanceCheckInOut.Attachments = attachment;\r\n this.studentService.getStudent(attendanceCheckInOut.StudentId).pipe(take(1)).subscribe(student => {\r\n this.selectedStudent = student;\r\n\r\n const attendanceByStudentDialog = this.dialog.open(AttendanceByStudentComponent, {\r\n data: {\r\n calledAsDialog: true,\r\n selectedStudent: this.selectedStudent,\r\n attendanceDate: this.attendanceDate,\r\n attendanceCheckInOut: attendanceCheckInOut\r\n },\r\n disableClose: true,\r\n minWidth: '90vw',\r\n maxWidth: '90vw',\r\n minHeight: '90vh',\r\n maxHeight: '90vh'\r\n });\r\n\r\n attendanceByStudentDialog.afterClosed().pipe(take(1)).subscribe(result => {\r\n if (result != undefined) {\r\n // const attach = result.Attachments.filter(o => o.Id < 0 || o.Deleted == true);\r\n // if (attach.length > 0) {\r\n // this.saveAttachment(result.CheckInOutHistoryId, result.Attachments);\r\n // }\r\n this.getAttendanceCheckInOutByDate();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n processClick(attendanceCheckInOut: AttendanceCheckInOut) {\r\n this.attendanceAdminService.getCheckInOutHistoryAttachmentById(attendanceCheckInOut.SubmissionId, 'Submission').pipe(take(1)).subscribe(attachment => {\r\n attendanceCheckInOut.Attachments = attachment;\r\n this.studentService.getStudent(attendanceCheckInOut.StudentId).pipe(take(1)).subscribe(student => {\r\n this.selectedStudent = student;\r\n\r\n const attendanceByStudentDialog = this.dialog.open(AttendanceByStudentComponent, {\r\n data: {\r\n calledAsDialog: true,\r\n selectedStudent: this.selectedStudent,\r\n attendanceDate: this.attendanceDate,\r\n attendanceCheckInOut: attendanceCheckInOut,\r\n needToProcess: true\r\n },\r\n disableClose: true,\r\n minWidth: '90vw',\r\n maxWidth: '90vw',\r\n minHeight: '90vh',\r\n maxHeight: '90vh'\r\n });\r\n\r\n attendanceByStudentDialog.afterClosed().pipe(take(1)).subscribe(result => {\r\n if (result != undefined) {\r\n // this.saveAttachment(result.CheckInOutHistoryId, result.Attachments);\r\n this.attendanceAdminService.processSubmissionRecord(result.CheckInOutHistoryId, attendanceCheckInOut.SubmissionId).pipe(take(1)).subscribe(processed => {\r\n if (processed == true) {\r\n this.getAttendanceCheckInOutByDate();\r\n }\r\n });\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n viwAttachments(attendanceCheckInOut: AttendanceCheckInOut) {\r\n const id = attendanceCheckInOut.HistoryId != null && attendanceCheckInOut.HistoryId > 0 ? attendanceCheckInOut.HistoryId : attendanceCheckInOut.SubmissionId;\r\n const type = attendanceCheckInOut.HistoryId != null && attendanceCheckInOut.HistoryId > 0 ? 'History' : 'Submission';\r\n this.attendanceAdminService.getCheckInOutHistoryAttachmentById(id, type).pipe(take(1)).subscribe(attachment => {\r\n this.dialog.open(ViewAttachmentsComponent, {\r\n data: {\r\n attachments: attachment\r\n },\r\n disableClose: true,\r\n minWidth: '750px'\r\n });\r\n });\r\n }\r\n\r\n viewHistoryClick(studentId: number) {\r\n this.studentService.getStudent(studentId).pipe(take(1)).subscribe(student => {\r\n this.selectedStudent = student;\r\n\r\n const dialogBox = this.dialog.open(CheckInOutViewHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '80vw',\r\n maxWidth: '80vw',\r\n minHeight: '80vh',\r\n data: {\r\n selectedStudent: this.selectedStudent,\r\n schoolId: this.yearService.defaultYear.SchoolID\r\n }\r\n });\r\n\r\n dialogBox.afterClosed().pipe(take(1)).subscribe(result => {\r\n this.getAttendanceCheckInOutByDate();\r\n });\r\n });\r\n }\r\n\r\n checkInOutClick(type: string) {\r\n const selectedStudents: Student[] = [];\r\n\r\n const dialogRef = this.dialog.open(StudentSearchComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n performRoute: false,\r\n searchAndSelect: true,\r\n returnSelectedStudents: true,\r\n viewAllStudentsInThisSchoolYear: false,\r\n selectedStudents: selectedStudents,\r\n headerMessage: 'Step 1 of 3 - Select Students',\r\n schools: this.schools,\r\n hideSaveButton: true,\r\n showLargeHeaderMessage: true\r\n },\r\n width: '100%',\r\n height: '100%',\r\n maxWidth: '100vw',\r\n maxHeight: '100vh'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(take(1)).subscribe((returnedStudents: Student[]) => {\r\n if (returnedStudents && returnedStudents instanceof Array) {\r\n const checkInOutDialogRef = this.dialog.open(CheckInOutModalDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n selectedStudent: returnedStudents,\r\n type: type,\r\n attendanceDate: this.attendanceDate,\r\n schools: this.schools\r\n },\r\n minWidth: '40vw',\r\n maxWidth: '40vw',\r\n minHeight: '90vh',\r\n maxHeight: '90vh'\r\n });\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().pipe(take(1)).subscribe(() => {\r\n this.getAttendanceCheckInOutByDate();\r\n });\r\n }\r\n\r\n}\r\n","import { Attachment } from '../../../shared-components/models/attachment.model';\r\n\r\nexport class AttendanceCheckInOut {\r\n Type: string;\r\n Time: string;\r\n Status: string;\r\n StudentNumber: string;\r\n StudentLastName: string;\r\n StudentFirstName: string;\r\n StudentMiddleName: string;\r\n StudentId: number;\r\n Period: string;\r\n Minutes: number;\r\n Attachment: boolean;\r\n HistoryId: number;\r\n SubmissionId: number;\r\n Attachments: Attachment[] = [];\r\n Reason: string;\r\n SubmittedBy: string;\r\n SubmittedOn: Date;\r\n Date: Date;\r\n Code: string;\r\n\r\n // Non DTO Field\r\n Name: string;\r\n}\r\n\r\nexport class CheckInOutSettings {\r\n Type: string;\r\n Time: string;\r\n PriorPeriodCodeId: string;\r\n OverwriteExistingAttendanceCode: boolean;\r\n DailyComment: string;\r\n UpdatePeriodComment: boolean;\r\n PeriodCommentAppOROver: string;\r\n UpdateDailyComment: boolean;\r\n DailyCommentAppOROver: string;\r\n}\r\n","
\r\n {{type}}\r\n
\r\n\r\n
{{attendanceDate | date:'MM/dd/yy'}}
\r\n\r\n
\r\n Step 2 of 3 - Enter Changes\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n Overwrite existing codes for prior periods\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n {{item.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Set to Default\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n Update Period Comment\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n Update Daily Comment\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport * as moment from 'moment';\r\nimport { AttendanceCode } from '../../../../classroom360/attendance/models/attendance-code.model';\r\nimport { SharedService } from '../../../../shared-components/shared.service';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { take } from 'rxjs/operators';\r\nimport { SchoolSettingsAttendanceService } from '../../../../management360/school/school-settings-attendance/school-settings-attendance.service';\r\nimport { Student } from '../../../../shared-components/student/student.model';\r\nimport { StudentSearchComponent } from '../../../../shared-components/student-search/student-search.component';\r\nimport { School } from '../../../../shared-components/year/school.model';\r\nimport { AttendanceByStudentComponent } from '../../attendance-by-student/attendance-by-student.component';\r\nimport { CheckInOutSettings } from '../../attendance-check-in-out/attendance-check-in-out.model';\r\nimport { System } from '../../../../shared-components/System';\r\n\r\n@Component({\r\n selector: 'app-check-in-out-modal-dialog',\r\n templateUrl: './check-in-out-modal-dialog.component.html',\r\n styleUrls: ['./check-in-out-modal-dialog.component.css']\r\n})\r\nexport class CheckInOutModalDialogComponent implements OnInit {\r\n type = '';\r\n attendanceDate: Date;\r\n errors: ErrorList[] = [];\r\n checkInOutTime = '';\r\n overwriteAttendanceCodes = true;\r\n attendanceCodes: AttendanceCode[] = [];\r\n selectedAttendanceCode = '';\r\n dailyPeriodComment = '';\r\n updatePeriodComment = false;\r\n periodComment = 'A';\r\n updateDailyComment = true;\r\n dailyComment = 'A';\r\n selectedStudent: Student[] = [];\r\n schools: School[] = [];\r\n checkInOutSettings: CheckInOutSettings;\r\n\r\n timeField: ElementRef;\r\n timeRegexp = System.twelveHourTimeRegexp;\r\n @ViewChild('periodCode', { read: ElementRef }) periodCodeRef: ElementRef;\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private sharedService: SharedService,\r\n private yearService: YearService,\r\n private schoolSettingService: SchoolSettingsAttendanceService) { }\r\n\r\n ngOnInit() {\r\n this.getSchoolSettingsAttendace();\r\n this.getAttendanceCodes();\r\n this.type = this.data.type;\r\n this.attendanceDate = this.data.attendanceDate;\r\n this.selectedStudent = this.data.selectedStudent;\r\n const time = new Date();\r\n this.checkInOutTime = moment(time.toString()).format('hh:mm a').toUpperCase();\r\n\r\n if (this.data.checkInOutSettings != undefined) {\r\n this.checkInOutSettings = this.data.checkInOutSettings;\r\n this.type = this.checkInOutSettings.Type;\r\n this.checkInOutTime = this.checkInOutSettings.Time;\r\n this.selectedAttendanceCode = this.checkInOutSettings.PriorPeriodCodeId;\r\n this.overwriteAttendanceCodes = this.checkInOutSettings.OverwriteExistingAttendanceCode;\r\n this.dailyPeriodComment = this.checkInOutSettings.DailyComment;\r\n this.updatePeriodComment = this.checkInOutSettings.UpdatePeriodComment;\r\n this.periodComment = this.checkInOutSettings.PeriodCommentAppOROver;\r\n this.updateDailyComment = this.checkInOutSettings.UpdateDailyComment;\r\n this.dailyComment = this.checkInOutSettings.DailyCommentAppOROver;\r\n }\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n getAttendanceCodes() {\r\n this.sharedService.getAttendanceCodeLookup(false, this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.Id).pipe(take(1)).subscribe(codes => {\r\n this.attendanceCodes = codes;\r\n });\r\n }\r\n\r\n getSchoolSettingsAttendace() {\r\n this.schoolSettingService.getSchoolSettingsAttendanceOptions().pipe(take(1)).subscribe(setting => {\r\n this.selectedAttendanceCode = setting[0].FullPeriodAbsenceCode.toString();\r\n });\r\n }\r\n\r\n setToDefault() {\r\n this.dailyPeriodComment = this.type + ' at ' + this.checkInOutTime;\r\n }\r\n\r\n previousClick() {\r\n this.errors = [];\r\n this.dialogRef.close();\r\n const dialogRef = this.dialog.open(StudentSearchComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n performRoute: false,\r\n searchAndSelect: true,\r\n returnSelectedStudents: true,\r\n viewAllStudentsInThisSchoolYear: false,\r\n selectedStudents: this.selectedStudent,\r\n headerMessage: 'Step 1 of 3 - Select Students',\r\n schools: this.schools,\r\n hideSaveButton: true,\r\n showLargeHeaderMessage: true\r\n },\r\n width: '100%',\r\n height: '100%',\r\n maxWidth: '100vw',\r\n maxHeight: '100vh'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(take(1)).subscribe((returnedStudents: Student[]) => {\r\n if (returnedStudents && returnedStudents instanceof Array) {\r\n const checkInOutDialogRef = this.dialog.open(CheckInOutModalDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n selectedStudent: returnedStudents,\r\n type: this.type,\r\n attendanceDate: this.attendanceDate\r\n },\r\n minWidth: '40vw',\r\n maxWidth: '40vw',\r\n minHeight: '90vh',\r\n maxHeight: '90vh'\r\n });\r\n }\r\n });\r\n }\r\n\r\n nextclick() {\r\n this.errors = [];\r\n if (this.checkInOutTime == undefined || this.checkInOutTime == null || this.checkInOutTime == '') {\r\n this.errors.push({\r\n fieldName: 'Time',\r\n fieldRef: this.timeField,\r\n errorMsg: ' is required.'\r\n });\r\n }\r\n\r\n if (this.checkInOutTime != undefined && this.checkInOutTime != '' && !this.checkInOutTime.match(this.timeRegexp)) {\r\n this.errors.push({\r\n fieldName: 'Time',\r\n fieldRef: this.timeField,\r\n errorMsg: ' Must be in time format, hh:mm [AM|PM].'\r\n });\r\n }\r\n\r\n if (this.selectedAttendanceCode == undefined || this.selectedAttendanceCode == '') {\r\n this.errors.push({\r\n fieldName: 'Periods Code',\r\n fieldRef: this.periodCodeRef,\r\n errorMsg: ' is required.'\r\n });\r\n }\r\n\r\n if (this.errors.length == 0) {\r\n this.checkInOutSettings = new CheckInOutSettings;\r\n this.checkInOutSettings.Type = this.type;\r\n this.checkInOutSettings.Time = this.checkInOutTime;\r\n this.checkInOutSettings.PriorPeriodCodeId = this.selectedAttendanceCode;\r\n this.checkInOutSettings.OverwriteExistingAttendanceCode = this.overwriteAttendanceCodes;\r\n this.checkInOutSettings.DailyComment = this.dailyPeriodComment == '' ? this.type + ' at ' + this.checkInOutTime : this.dailyPeriodComment;\r\n this.checkInOutSettings.UpdatePeriodComment = this.updatePeriodComment;\r\n this.checkInOutSettings.PeriodCommentAppOROver = this.periodComment;\r\n this.checkInOutSettings.UpdateDailyComment = this.updateDailyComment;\r\n this.checkInOutSettings.DailyCommentAppOROver = this.dailyComment;\r\n this.dialogRef.close();\r\n\r\n const attendanceByStudentDialog = this.dialog.open(AttendanceByStudentComponent, {\r\n data: {\r\n calledAsDialog: true,\r\n selectedStudents: this.selectedStudent,\r\n attendanceDate: this.attendanceDate,\r\n checkInOutSettings: this.checkInOutSettings,\r\n calledFromCheckInOut: true\r\n },\r\n disableClose: true,\r\n minWidth: '90vw',\r\n maxWidth: '90vw',\r\n minHeight: '90vh',\r\n maxHeight: '90vh'\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from '../../../shared-components/System';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { AbsentNotice } from './absent-notice.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReviewAbsentNoticesService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService\r\n ) { }\r\n\r\n getAbsentNoticesByYearAndDate(startDate: string, endDate: string): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&startDate=' + startDate +\r\n '&endDate=' + endDate;\r\n return this.http.get(System.apiURL.Admin + 'GetAbsentNoticesByYearAndDate' + queryString);\r\n }\r\n\r\n saveAbsentNotice(notice: AbsentNotice): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveAbsentNotice', notice);\r\n }\r\n\r\n getAbsentNoticeByStudentId(studentId: number): Observable {\r\n const queryString = '?studentId=' + studentId;\r\n\r\n return this.http.get(System.apiURL.Admin + 'GetAbsentNoticeByStudentId' + queryString);\r\n } \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../../shared-components/System';\r\nimport { Observable } from 'rxjs';\r\nimport { CustomDesignPage } from './models/custom-design-page.model';\r\nimport { CSTField } from '../../shared-modules/customization-framework/models/custom-data-field.model';\r\nimport { CSTCustomPage } from '../../shared-modules/customization-framework/models/cst-custom-page.model';\r\nimport { CustomizationFrameworkService } from '../../shared-modules/customization-framework/customization-framework.service';\r\nimport { CSTFieldInUse } from './models/cst-field-in-use.model';\r\n\r\n@Injectable()\r\nexport class CustomizationService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private customizationFrameworkService: CustomizationFrameworkService\r\n ) { }\r\n\r\n getDesignPageByIDs(basePageOnly: boolean = false, pageIDs: number[] = [], includeAllUserPagesForID: boolean = false): Observable {\r\n return this.customizationFrameworkService.getDesignPageByIDs(basePageOnly, pageIDs, includeAllUserPagesForID);\r\n }\r\n\r\n saveDesignPage(designPage: CustomDesignPage, basePageOnly: boolean): Observable {\r\n const queryString = '?basePageOnly=' + basePageOnly;\r\n return this.http.post(System.apiURL.Admin + 'SaveDesignPage' + queryString, designPage);\r\n }\r\n\r\n saveDesignPageTemplate(designPageTemplate: CustomDesignPage): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveDesignPageTemplate', designPageTemplate);\r\n }\r\n\r\n toggleActiveDesignPageTemplate(designPageTemplateId: number): Observable {\r\n const queryString = '?designPageTemplateId=' + designPageTemplateId;\r\n return this.http.get(System.apiURL.Admin + 'ToggleActiveDesignPageTemplate' + queryString);\r\n }\r\n\r\n saveCustomDataField(field: CSTField): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveCustomDataField', field);\r\n }\r\n\r\n getCustomPages(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetCustomPages');\r\n }\r\n\r\n saveCustomPage(page: CSTCustomPage): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveCustomPage', page);\r\n }\r\n\r\n customPageNameExists(page: CSTCustomPage): Observable {\r\n return this.http.post(System.apiURL.Admin + 'CustomPageNameExists', page);\r\n }\r\n\r\n getPagesWhereCustomFieldIsUsed(fieldName: string): Observable {\r\n const queryString = '?fieldName=' + fieldName;\r\n return this.http.get(System.apiURL.Admin + 'GetPagesWhereCustomFieldIsUsed' + queryString);\r\n }\r\n}","import { Student } from '../../../shared-components/student/student.model';\r\n\r\nexport class EFormInstancesFilterParam {\r\n availableTo: string;\r\n selectedSites: boolean;\r\n selectedClasses: boolean;\r\n selectedStudents: boolean;\r\n deadlineFrom: Date;\r\n deadlineTo: Date;\r\n showFromFrom: Date;\r\n showFromTo: Date;\r\n showToFrom: Date;\r\n showToTo: Date;\r\n category: string;\r\n template: string;\r\n createdFrom: Date;\r\n createdTo: Date;\r\n createdBy: string;\r\n lastUpdatedFrom: Date;\r\n lastUpdatedTo: Date;\r\n lastUpdatedBy: string;\r\n schoolIds: number[];\r\n classIds: number[];\r\n students: Student[];\r\n}\r\n","

{{banner}}

\r\n\r\n
\r\n
\r\n
\r\n {{infoLine}}\r\n
\r\n
\r\n {{commentHeader}}\r\n
\r\n
\r\n
\r\n
\r\n {{statusHistory.CreatedOn | date:'MM/dd/yy hh:mm a'}}  {{statusHistory.Status}}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { EFormService } from '../../../../shared-components/e-forms/e-form.service';\r\nimport { EFormStatusHistory } from '../../../../shared-components/e-forms/e-form-status-history.model';\r\nimport { EForm } from '../../../../shared-components/e-forms/e-form.model';\r\nimport { SendEmailService } from '../../../../shared-modules/send-email/send-email.service';\r\nimport { UserService } from '../../../../shared-components/user/user.service';\r\nimport { Router } from '@angular/router';\r\nimport { EFormContact } from '../../../../shared-components/e-forms/e-form-contact.model';\r\nimport { SendEmailComponent } from '../../../../shared-modules/send-email/send-email.component';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n\tselector: 'app-e-form-mark-submission',\r\n\ttemplateUrl: './e-form-mark-submission.component.html',\r\n\t// styleUrls: ['./e-form-mark-submission.component.scss']\r\n})\r\nexport class EFormMarkSubmissionComponent implements OnInit {\r\n\r\n\tbanner: string;\r\n\tinfoLine: string;\r\n\tcommentHeader: string;\r\n\tnewStatus: string;\r\n\tmarkType: string;\r\n\temailNext: boolean;\r\n\tstatusHistory: EFormStatusHistory;\r\n\teForm: EForm;\r\n\tcomment = '';\r\n\tsendEmailDialogRef: MatDialogRef;\r\n\tsaveButtonClick: boolean;\r\n\tV10: boolean;\r\n\r\n\tconstructor(\r\n\t\tprivate dialogRef: MatDialogRef,\r\n\t\tprivate dialog: MatDialog,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate eFormService: EFormService,\r\n\t\tprivate sendEmailService: SendEmailService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate router: Router,\r\n\t\tprivate loginService: LoginService\r\n\t) {\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\t\tthis.markType = this.data.markType;\r\n\t\tif (this.data.statusHistory) {\r\n\t\t\tthis.statusHistory = this.data.statusHistory;\r\n\t\t\tthis.comment = this.statusHistory.Comment;\r\n\t\t}\r\n\t\tif (this.data.eForm) {\r\n\t\t\tthis.eForm = this.data.eForm;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.banner = this.markType;\r\n\r\n\t\tswitch (this.markType) {\r\n\t\t\tcase 'Re-Open':\r\n\t\t\t\tthis.infoLine = 'This submission will be re-opened, allowing the user to make changes and re-submit.';\r\n\t\t\t\tthis.commentHeader = 'Comments regarding why this changes is being made:';\r\n\t\t\t\t// if (this.V10) {\r\n\t\t\t\t\tthis.newStatus = 'Re-Opened';\r\n\t\t\t\t// }\r\n\t\t\t\t// else {\r\n\t\t\t\t// \tthis.newStatus = 'Not Submitted';\r\n\t\t\t\t// }\r\n\t\t\t\tthis.emailNext = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Mark Complete':\r\n\t\t\t\tthis.infoLine = 'This submission will be marked as complete.';\r\n\t\t\t\tthis.commentHeader = 'Comments regarding why this change is being made:';\r\n\t\t\t\tthis.newStatus = 'Complete';\r\n\t\t\t\tthis.emailNext = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Delete':\r\n\t\t\t\tthis.infoLine = 'This submission will be marked as deleted.';\r\n\t\t\t\tthis.commentHeader = 'Comments regarding why this change is being made:';\r\n\t\t\t\t// if (this.V10) {\r\n\t\t\t\t\tthis.newStatus = 'Deleted';\r\n\t\t\t\t// }\r\n\t\t\t\t// else {\r\n\t\t\t\t// \tthis.newStatus = this.eForm.AllowMultiple == false ? 'Not Submitted' : 'Deleted';\r\n\t\t\t\t// }\r\n\t\t\t\tthis.emailNext = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Edit Submission History':\r\n\t\t\t\tthis.infoLine = '';\r\n\t\t\t\tthis.commentHeader = '';\r\n\t\t\t\tthis.emailNext = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Rejected':\r\n\t\t\t\tthis.banner = 'Reject';\r\n\t\t\t\tthis.infoLine = 'This submission will be rejected, allowing the user to make changes and re-submit.';\r\n\t\t\t\tthis.commentHeader = 'Comments regarding why this change is being made:';\r\n\t\t\t\tthis.newStatus = 'Rejected';\r\n\t\t\t\tthis.emailNext = true;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tnextClick() {\r\n\t\tif (this.markType == 'Re-Open') {\r\n\t\t\tthis.eForm.Status = 'Re-Opened';\r\n\t\t\tthis.eForm.ManualSubmission = false;\r\n\t\t\t// if (this.V10) {\r\n\t\t\t\tthis.saveStatus(true);\r\n\t\t\t// }\r\n\t\t\t// else {\r\n\t\t\t// \t// Save with Re-Opened status to create record in status history, then save again with Not Submitted status\r\n\t\t\t// \tthis.eFormService.saveEForm(this.eForm, this.comment).subscribe(result => {\r\n\t\t\t// \t\tthis.eForm.Status = this.newStatus;\r\n\t\t\t// \t\tthis.saveStatus(true);\r\n\t\t\t// \t});\r\n\t\t\t// }\r\n\t\t}\r\n\t\telse if (this.markType == 'Rejected') {\r\n\t\t\tthis.saveButtonClick = false;\r\n\t\t\tthis.eForm.Status = this.newStatus;\r\n\t\t\tthis.saveStatus();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.eForm.Status = this.newStatus;\r\n\t\t\tthis.saveStatus(true);\r\n\t\t}\r\n\t}\r\n\r\n\tsendEmail() {\r\n\t\tthis.eFormService.getEformContact(this.eForm.ID).subscribe(result => {\r\n\t\t\tconst contact: EFormContact = result;\r\n\t\t\tconst email: string = contact.Email;\r\n\t\t\tconst name: string = contact.FirstName + ' ' + contact.LastName;\r\n\r\n\t\t\tif (contact.Email != null && contact.Email != '') {\r\n\t\t\t\tthis.sendEmailService.teacherName = name;\r\n\t\t\t\tthis.sendEmailService.teacherEmailAddress = email;\r\n\t\t\t\tthis.sendEmailDialogRef = this.dialog.open(SendEmailComponent, {\r\n\t\t\t\t\twidth: '80%',\r\n\t\t\t\t\theight: '80%',\r\n\t\t\t\t\tmaxHeight: '80vh',\r\n\t\t\t\t\tmaxWidth: '80vw',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tmodal: true,\r\n\t\t\t\t\t\tbanner: 'Re-Open e-Form Submission'\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tlet subject = '';\r\n\t\t\t\t\tif (this.eForm.TemplateType == 'student') {\r\n\t\t\t\t\t\tconst lastIndex = this.eForm.StudentNames[0].indexOf('-');\r\n\t\t\t\t\t\tconst studentname = this.eForm.StudentNames[0].substring(0, lastIndex - 1);\r\n\t\t\t\t\t\tsubject = this.eForm.InstanceName + ' - ' + studentname ;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tsubject = this.eForm.InstanceName;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.sendEmailDialogRef.componentInstance.mailDetail.subject = subject;\r\n\t\t\t\t}, 100);\r\n\t\t\t\tthis.sendEmailDialogRef.afterClosed().subscribe(() => {\r\n\t\t\t\t\tthis.dialogRef.close(true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse if (this.markType == 'Re-Open' && !this.sendEmailService.teacherEmailAddress && !this.loginService.LoginSettings.V10) {\r\n\t\t\t\tthis.dialogRef.close(true);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsaveClick() {\r\n\t\tif (this.banner == 'Edit Submission History') {\r\n\t\t\tthis.statusHistory.Comment = this.comment;\r\n\t\t\tthis.eFormService.SaveEformStatusHistory(this.statusHistory).subscribe(result => {\r\n\t\t\t\tthis.dialogRef.close();\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.markType == 'Delete') {\r\n\t\t\t\tthis.eForm.Status = 'Deleted';\r\n\t\t\t\tthis.eForm.ManualSubmission = false;\r\n\t\t\t\t// if (this.V10) {\r\n\t\t\t\t\tthis.saveStatus();\r\n\t\t\t\t// }\r\n\t\t\t\t// else {\r\n\t\t\t\t// \t// Save with Delete status to create record in status history, then save again with Not Submitted status\r\n\t\t\t\t// \tthis.eFormService.saveEForm(this.eForm, this.comment).subscribe(result => {\r\n\t\t\t\t// \t\tthis.eForm.Status = this.newStatus;\r\n\t\t\t\t// \t\tthis.saveStatus();\r\n\t\t\t\t// \t});\r\n\t\t\t\t// }\r\n\t\t\t}\r\n\t\t\telse if (this.markType == 'Re-Open') {\r\n\t\t\t\tthis.eForm.Status = 'Re-Opened';\r\n\t\t\t\tthis.eForm.ManualSubmission = false;\r\n\t\t\t\t// if (this.V10) {\r\n\t\t\t\t\tthis.saveStatus();\r\n\t\t\t\t// }\r\n\t\t\t\t// else {\r\n\t\t\t\t// \tthis.eFormService.saveEForm(this.eForm, this.comment).subscribe(result => {\r\n\t\t\t\t// \t\tthis.eForm.Status = this.newStatus;\r\n\t\t\t\t// \t\tthis.saveStatus();\r\n\t\t\t\t// \t});\r\n\t\t\t\t// }\r\n\t\t\t}\r\n\t\t\telse if (this.markType == 'Rejected') {\r\n\t\t\t\tthis.saveButtonClick = true;\r\n\t\t\t\tthis.eForm.Status = this.newStatus;\r\n\t\t\t\tthis.saveStatus();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.eForm.Status = this.newStatus;\r\n\t\t\t\tthis.saveStatus();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsaveStatus(sendEmail: boolean = false) {\r\n\t\tthis.eFormService.saveEForm(this.eForm, this.comment).subscribe(result => {\r\n\t\t\tif (sendEmail) {\r\n\t\t\t\tthis.sendEmail();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!this.saveButtonClick && this.markType == 'Rejected') {\r\n\t\t\t\t\tthis.dialogRef.close('SendMailTrue');\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.saveButtonClick && this.markType == 'Rejected') {\r\n\t\t\t\t\tthis.dialogRef.close('SendMailFalse');\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.dialogRef.close(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcloseClick() {\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n}\r\n","\r\nexport class EFormSubmissionsFilterParam {\r\n notSubmitted: boolean;\r\n submitted: boolean;\r\n rejected: boolean;\r\n accepted: boolean;\r\n complete: boolean;\r\n submittedFrom: Date;\r\n submittedTo: Date; \r\n notSubmittedDate:Date;\r\n manualSubmission: string;\r\n \r\n constructor () {\r\n this.notSubmitted = false; \r\n this.submitted = true;\r\n this.rejected = true;\r\n this.accepted = true;\r\n this.complete = true;\r\n this.manualSubmission = '0'; // Include manual submissions\r\n }\r\n}\r\n","export class MyNotificationGroupOverride {\r\n\r\n // Static Properties\r\n public static NextID = -1;\r\n\r\n // Server Properties\r\n ID: number;\r\n NotificationGroup_ID: number;\r\n NotificationEvent_ID: number;\r\n NotificationType_ID: number;\r\n User_ID: number;\r\n OverrideValue: boolean;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpdatedOn: Date;\r\n LastUpdatedBy: number;\r\n\r\n // Constructor\r\n constructor(value?: boolean, groupId?: number, eventId?: number, typeId?: number, userId?: number) {\r\n this.ID = MyNotificationGroupOverride.NextID;\r\n MyNotificationGroupOverride.NextID -= 1;\r\n this.OverrideValue = value;\r\n if (groupId) {\r\n this.NotificationGroup_ID = groupId;\r\n }\r\n if (eventId) {\r\n this.NotificationEvent_ID = eventId;\r\n }\r\n if (typeId) {\r\n this.NotificationType_ID = typeId;\r\n }\r\n if (userId) {\r\n this.User_ID = userId;\r\n }\r\n }\r\n}\r\n","export class MyNotification {\r\n\r\n // Static Properties\r\n public static NextID = -1;\r\n\r\n // Server Properties\r\n ID: number;\r\n NotificationEvent_ID: number;\r\n NotificationType_ID: number;\r\n User_ID: number;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpdatedOn: Date;\r\n LastUpdatedBy: number;\r\n\r\n // Constructor\r\n constructor(eventId?: number, typeId?: number, userId?: number) {\r\n this.ID = MyNotification.NextID;\r\n MyNotification.NextID -= 1;\r\n this.NotificationEvent_ID = eventId;\r\n this.NotificationType_ID = typeId;\r\n this.User_ID = userId;\r\n }\r\n}\r\n","export class NotificationEventPermissionCategory {\r\n\r\n // Static Properties\r\n public static NextID = -1;\r\n\r\n // Server Properties\r\n ID: number;\r\n NotificationEvent_ID: number;\r\n PermissionCategory: string;\r\n AddedBy: number;\r\n AddedOn: Date;\r\n LastUpdatedBy: number;\r\n LastUpdatedOn: Date;\r\n\r\n // Local Properties\r\n originalPermissionCategory: string;\r\n\r\n // Constructor\r\n constructor() {\r\n this.ID = NotificationEventPermissionCategory.NextID;\r\n NotificationEventPermissionCategory.NextID -= 1;\r\n }\r\n}\r\n","import {NotificationEvent} from './notification-event.model';\r\n\r\nexport class NotificationGroupEvent {\r\n\r\n // Server Properties\r\n ID: number;\r\n NotificationGroup_ID: number;\r\n NotificationType_ID: number;\r\n NotificationEvent_ID: number;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpdatedOn: Date;\r\n LastUpdatedBy: number;\r\n\r\n // Local Properties\r\n NotificationEvent: NotificationEvent;\r\n\r\n // Constructors\r\n constructor(\r\n notificationEvent?: NotificationEvent,\r\n notificationGroupId?: number,\r\n notificationTypeId?: number\r\n ) {\r\n if (notificationEvent) {\r\n this.NotificationEvent_ID = notificationEvent.ID;\r\n this.NotificationEvent = notificationEvent;\r\n }\r\n if (notificationGroupId) {\r\n this.NotificationGroup_ID = notificationGroupId;\r\n }\r\n if (notificationTypeId) {\r\n this.NotificationType_ID = notificationTypeId;\r\n }\r\n }\r\n}\r\n","import {PermissionGroup} from '../../../shared-components/security/permission-group.model';\r\n\r\nexport class NotificationGroupPermissionGroup {\r\n\r\n // Server Properties\r\n ID: number;\r\n NotificationGroup_ID: number;\r\n GroupPermissions_ID: number;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpdatedOn: Date;\r\n LastUpdatedBy: number;\r\n PermissionGroup: PermissionGroup;\r\n\r\n // Constructors\r\n constructor(\r\n notificationGroupId?: number,\r\n groupPermissionsId?: number\r\n ) {\r\n this.NotificationGroup_ID = notificationGroupId;\r\n this.GroupPermissions_ID = groupPermissionsId;\r\n }\r\n}\r\n","import {NotificationGroupEvent} from './notification-group-event.model';\r\nimport {NotificationGroupPermissionGroup} from './notification-group-permission-group.model';\r\nimport {MyNotificationGroupOverride} from './my-notification-group-override.model';\r\n\r\nexport class NotificationGroup {\r\n\r\n // Server Properties\r\n ID: number;\r\n Name: string;\r\n Description: string;\r\n AllowOverride: boolean;\r\n Status: string;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpdatedOn: Date;\r\n LastUpdatedBy: number;\r\n NotificationGroupEvents: NotificationGroupEvent[] = [];\r\n NotificationPermissionGroups: NotificationGroupPermissionGroup[] = [];\r\n MyNotificationGroupOverrides: MyNotificationGroupOverride[] = [];\r\n\r\n // Local Properties\r\n eventsDisplay: string;\r\n permissionGroupsDisplay: string;\r\n\r\n // Constructor\r\n constructor() {\r\n this.ID = -1;\r\n this.Status = 'Active';\r\n }\r\n\r\n // Functions\r\n hasTypeOfEvent(eventID: number, typeID: number) {\r\n return !!this.NotificationGroupEvents.find(notificationGroupEvent =>\r\n notificationGroupEvent.NotificationEvent_ID == eventID && notificationGroupEvent.NotificationType_ID == typeID\r\n );\r\n }\r\n}\r\n","import {NotificationEvent} from './notification-event.model';\r\n\r\nexport class NotificationArea {\r\n ID: number;\r\n Name: string;\r\n Description: string;\r\n ValidForStaff: boolean;\r\n ValidForStudents: boolean;\r\n ValidForParents: boolean;\r\n NotificationEvents: NotificationEvent[] = [];\r\n}\r\n","import {NotificationEventPermissionCategory} from './notification-event-permission-category.model';\r\nimport {NotificationType} from './notification-type.model';\r\n\r\nexport class NotificationEvent {\r\n\r\n // Sever Properties\r\n ID: number;\r\n NotificationArea_ID: number;\r\n Name: string;\r\n Description: string;\r\n EnumerationValue: string;\r\n StoredProcedureName: string;\r\n Status: string;\r\n AllStaffGrantedAccess: boolean;\r\n ValidForStaff: boolean;\r\n ValidForStudents: boolean;\r\n ValidForParents: boolean;\r\n PermissionCategory: NotificationEventPermissionCategory;\r\n NotificationTypes: NotificationType[] = [];\r\n\r\n // Local Properties\r\n originalAllStaffGrantedAccess: boolean;\r\n areaName: string;\r\n groupNameDisplay: string;\r\n\r\n // Class Functions\r\n get hasChanges() {\r\n return this.originalAllStaffGrantedAccess != this.AllStaffGrantedAccess\r\n || (\r\n this.PermissionCategory\r\n && this.PermissionCategory.originalPermissionCategory != this.PermissionCategory.PermissionCategory\r\n );\r\n }\r\n\r\n // Methods\r\n hasType(typeID: number) {\r\n return this.NotificationTypes.find(o => o.ID == typeID);\r\n }\r\n\r\n getAreaDisplay(array: NotificationEvent[]) {\r\n const index = array.findIndex(o => o.ID == this.ID);\r\n let previousArea: string;\r\n if (index > 0) {\r\n previousArea = array[index - 1].areaName;\r\n }\r\n if (previousArea == null || previousArea != this.areaName) {\r\n return this.areaName;\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","export class PermissionGroup {\r\n ID: number;\r\n Description: string;\r\n Status: number;\r\n PermissionsXML: string;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {NotificationArea} from './models/notification-area.model';\r\nimport {forkJoin, Observable} from 'rxjs';\r\nimport {System} from '../../shared-components/System';\r\nimport {NotificationEvent} from './models/notification-event.model';\r\nimport {map, take} from 'rxjs/operators';\r\nimport {NotificationEventPermissionCategory} from './models/notification-event-permission-category.model';\r\nimport {NotificationGroup} from './models/notification-group.model';\r\nimport {NotificationGroupEvent} from './models/notification-group-event.model';\r\nimport {NotificationGroupPermissionGroup} from './models/notification-group-permission-group.model';\r\nimport {NotificationType} from './models/notification-type.model';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport {PermissionGroup} from '../../shared-components/security/permission-group.model';\r\nimport {MyNotificationGroupOverride} from './models/my-notification-group-override.model';\r\nimport {MyNotification} from './models/my-notification.model';\r\nimport {UserService} from '../../shared-components/user/user.service';\r\nimport {SharedService} from '../../shared-components/shared.service';\r\nimport {NotificationLog} from './models/notification-log.model';\r\nimport {LoginService} from '../../shared-modules/login/login.service';\r\n\r\n@Injectable()\r\nexport class NotificationsService {\r\n\r\n // Properties\r\n checkingNotifications = false;\r\n checkInterval = -1;\r\n\r\n // Class Functions\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private sharedService: SharedService,\r\n private loginService: LoginService\r\n ) {}\r\n\r\n // Event Functions\r\n public setNotificationChecking (\r\n notificationTypes: NotificationType[] = null,\r\n myNotifications: MyNotification[] = null,\r\n myNotificationGroups: NotificationGroup[] = null\r\n ) {\r\n // PRE: optionally, the notification types, notifications, and notification groups the user has\r\n // POST: stops or starts checking if the user should\r\n\r\n // Checking if we are already checking notifications\r\n if (this.loginService.LoginSettings.ActivateNotificationFramework360) {\r\n\r\n // We need to make sure we even have in-app notifications first\r\n if (!notificationTypes || !myNotifications || !myNotificationGroups) {\r\n forkJoin(\r\n this.getMyNotifications(),\r\n this.getMyNotificationGroups(),\r\n this.getNotificationTypes()\r\n ).pipe(take(1)).subscribe(results => {\r\n if (this.checkForInAppType(results[2], results[0], results[1])) {\r\n this.beginCheckingNotifications();\r\n } else {\r\n this.stopCheckingNotifications();\r\n }\r\n });\r\n } else {\r\n if (this.checkForInAppType(notificationTypes, myNotifications, myNotificationGroups)) {\r\n this.beginCheckingNotifications();\r\n } else {\r\n this.stopCheckingNotifications();\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Methods\r\n private beginCheckingNotifications() {\r\n // POST: waits for notifications and displays them as snackbars\r\n if (!this.checkingNotifications) {\r\n\r\n // Setting that we are now checking notifications\r\n this.checkingNotifications = true;\r\n\r\n // Helper function to perform the check\r\n const check = () => {\r\n this.checkNotifications().pipe(take(1)).subscribe(\r\n notifications => {\r\n if (notifications) {\r\n\r\n // Showing snackbars for the notifications\r\n notifications.forEach(notification => {\r\n if (notification.TypeName.toLowerCase() == 'on screen notification') {\r\n this.sharedService.showCustomSnackbar(\r\n (notification.Subject + ': ' + notification.Message).slice(0, 200),\r\n 'notification'\r\n );\r\n }\r\n });\r\n }\r\n }\r\n );\r\n };\r\n\r\n // Checking the notifications upon initialization\r\n check();\r\n\r\n // Setting the interval for checking notifications\r\n this.checkInterval = setInterval(() => {\r\n check();\r\n }, 60000) as number;\r\n }\r\n }\r\n\r\n private stopCheckingNotifications() {\r\n if (this.checkingNotifications) {\r\n clearInterval(this.checkInterval);\r\n this.checkInterval = -1;\r\n this.checkingNotifications = false;\r\n }\r\n }\r\n\r\n private checkForInAppType(notificationTypes: NotificationType[], myNotifications: MyNotification[], myNotificationGroups: NotificationGroup[]) {\r\n // PRE: the notification types, the users notifications, and the users groups\r\n // POST: returns true if the user has a notification that should who up in the app\r\n if (notificationTypes) {\r\n const inAppType = notificationTypes.find(type => type.Name.toLowerCase() == 'on screen notification');\r\n return inAppType\r\n && (\r\n (\r\n myNotifications\r\n && myNotifications.find(notificationSetting => notificationSetting.NotificationType_ID == inAppType.ID)\r\n ) || (\r\n myNotificationGroups\r\n && myNotificationGroups.find(notificationGroup =>\r\n !!notificationGroup.NotificationGroupEvents.find(event =>\r\n event.NotificationType_ID == inAppType.ID\r\n && !notificationGroup.MyNotificationGroupOverrides.find(override =>\r\n override.NotificationEvent_ID == event.NotificationEvent_ID\r\n && override.NotificationType_ID == inAppType.ID\r\n && !override.OverrideValue\r\n )\r\n ) || notificationGroup.MyNotificationGroupOverrides.find(override =>\r\n override.NotificationType_ID == inAppType.ID\r\n && override.OverrideValue\r\n )\r\n )\r\n )\r\n );\r\n }\r\n }\r\n\r\n public getNotificationTypes(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetNotificationTypes');\r\n }\r\n\r\n public getNotificationAreasAndEvents(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetNotificationAreasAndEvents').pipe(\r\n map(areas => {\r\n for (let i = 0; i < areas.length; i++) {\r\n areas[i] = System.convert(areas[i], new NotificationArea());\r\n for (let j = 0; j < areas[i].NotificationEvents.length; j++) {\r\n areas[i].NotificationEvents[j] = System.convert(areas[i].NotificationEvents[j], new NotificationEvent());\r\n areas[i].NotificationEvents[j].areaName = areas[i].Name;\r\n if (areas[i].NotificationEvents[j].PermissionCategory) {\r\n areas[i].NotificationEvents[j].PermissionCategory = System.convert(areas[i].NotificationEvents[j].PermissionCategory, new NotificationEventPermissionCategory());\r\n }\r\n }\r\n }\r\n return areas;\r\n })\r\n );\r\n }\r\n\r\n public getNotificationGroups(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetNotificationGroups').pipe(\r\n map(groups => {\r\n for (let i = 0; i < groups.length; i++) {\r\n groups[i] = System.convert(groups[i], new NotificationGroup());\r\n for (let j = 0; j < groups[i].NotificationGroupEvents.length; j++) {\r\n groups[i].NotificationGroupEvents[j] = System.convert(groups[i].NotificationGroupEvents[j], new NotificationGroupEvent());\r\n }\r\n for (let j = 0; j < groups[i].NotificationPermissionGroups.length; j++) {\r\n groups[i].NotificationPermissionGroups[j] = System.convert(groups[i].NotificationPermissionGroups[j], new NotificationGroupPermissionGroup());\r\n }\r\n }\r\n return groups;\r\n })\r\n );\r\n }\r\n\r\n public getMyNotificationGroups(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetMyNotificationGroups').pipe(\r\n map(groups => {\r\n for (let i = 0; i < groups.length; i++) {\r\n groups[i] = System.convert(groups[i], new NotificationGroup());\r\n for (let j = 0; j < groups[i].NotificationGroupEvents.length; j++) {\r\n groups[i].NotificationGroupEvents[j] = System.convert(groups[i].NotificationGroupEvents[j], new NotificationGroupEvent());\r\n }\r\n for (let j = 0; j < groups[i].NotificationPermissionGroups.length; j++) {\r\n groups[i].NotificationPermissionGroups[j] = System.convert(groups[i].NotificationPermissionGroups[j], new NotificationGroupPermissionGroup());\r\n groups[i].NotificationPermissionGroups[j].PermissionGroup = System.convert(groups[i].NotificationPermissionGroups[j].PermissionGroup, new PermissionGroup());\r\n }\r\n for (let j = 0; j < groups[i].MyNotificationGroupOverrides.length; j++) {\r\n groups[i].MyNotificationGroupOverrides[j] = System.convert(groups[i].MyNotificationGroupOverrides[j], new MyNotificationGroupOverride());\r\n }\r\n }\r\n return groups;\r\n })\r\n );\r\n }\r\n\r\n public getMyNotifications(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetMyNotifications').pipe(\r\n map(myNotifications => {\r\n for (let i = 0; i < myNotifications.length; i++) {\r\n myNotifications[i] = System.convert(myNotifications[i], new MyNotification());\r\n }\r\n return myNotifications;\r\n })\r\n );\r\n }\r\n\r\n public checkNotifications(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'CheckNotifications');\r\n }\r\n\r\n public getMyNotificationLogs(number = 10, uniqueInstances = false): Observable {\r\n const queryString = '?number=' + number + '&uniqueInstances=' + uniqueInstances;\r\n return this.http.get(System.apiURL.Admin + 'GetMyNotificationLogs' + queryString).pipe(\r\n map(logs => {\r\n logs.forEach(log => {\r\n log.AddedOn = new Date(log.AddedOn);\r\n });\r\n return logs;\r\n })\r\n );\r\n }\r\n\r\n public deleteNotificationGroup(notificationGroupId): Observable {\r\n const queryString = '?notificationGroupId=' + notificationGroupId;\r\n return this.http.get(System.apiURL.Admin + 'DeleteNotificationGroup' + queryString);\r\n }\r\n\r\n public saveNotificationGroups(notificationGroups: NotificationGroup[]): Observable<{[previousId: number]: number}> {\r\n return this.http.post<{[previousId: number]: number}>(System.apiURL.Admin + 'SaveNotificationGroups', notificationGroups).pipe(\r\n map(idMap => {\r\n notificationGroups.forEach(notificationGroup => {\r\n notificationGroup.ID = idMap[notificationGroup.ID];\r\n });\r\n return idMap;\r\n })\r\n );\r\n }\r\n\r\n public saveNotificationEvents(notificationEvents: NotificationEvent[]): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveNotificationEvents', notificationEvents);\r\n }\r\n\r\n public saveMyNotifications(myNotifications: MyNotification[]): Observable<{[previousId: number]: number}> {\r\n return this.http.post<{[previousId: number]: number}>(System.apiURL.Admin + 'SaveMyNotifications', myNotifications);\r\n }\r\n\r\n public saveMyNotificationGroupOverrides(notificationEvent_ID, myNotificationGroupOverrides: MyNotificationGroupOverride[]): Observable<{[previousId: number]: number}> {\r\n const queryString = '?notificationEvent_ID=' + notificationEvent_ID;\r\n return this.http.post<{[previousId: number]: number}>(\r\n System.apiURL.Admin + 'SaveMyNotificationGroupOverrides' + queryString,\r\n myNotificationGroupOverrides\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { RegistrationStudent } from '../../../models/registration-student.model';\r\n\r\n@Pipe({\r\n name: 'selectStudentPipe'\r\n})\r\nexport class SelectStudentPipe implements PipeTransform {\r\n\r\n transform(students: RegistrationStudent[], studentId: number): RegistrationStudent[] {\r\n return students.filter(x => x.Id == studentId);\r\n }\r\n\r\n}\r\n","\r\n
\r\n WARNING\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n Changes have been entered but not saved.\r\n
\r\n\r\n
\r\n
\r\n A new household does not become official until information for household contacts has been entered.\r\n If you leave this process now, the information you have entered will be lost.\r\n
\r\n
\r\n\r\n
\r\n
\r\n If you continue without saving, the changes will be lost.\r\n
\r\n
\r\n Due to errors, saving is not possible.
\r\n Either Continue without Saving
\r\n or select Cancel and correct the errors.\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
","import { Component, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-registration-unsaved-changes-dialog',\r\n templateUrl: './registration-unsaved-changes-dialog.component.html',\r\n styleUrls: ['./registration-unsaved-changes-dialog.component.css']\r\n})\r\nexport class RegistrationUnsavedChangesDialogComponent implements OnDestroy {\r\n\r\n validFamily: boolean = false;\r\n hasErrors: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef\r\n\t) {\r\n }\r\n\r\n\tngOnDestroy() {\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.dialogBox.close(-1);\r\n\t}\r\n\r\n\tcontinueWithoutSaving() {\r\n\t\tthis.dialogBox.close(0);\r\n\t}\r\n\r\n\tsaveFamily() {\r\n\t\tthis.dialogBox.close(2);\r\n\t}\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { DistrictLookup } from '../../shared-components/lookup/lookup.model';\r\nimport { SecurityService } from '../../shared-components/security/security.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { FamilyAddress } from './detailed-registration/address-registration/family-address.model';\r\nimport { ContactWorkInfo } from './detailed-registration/household-contacts-registration/contact-work-information/contact-work-info.model';\r\nimport { FamilyContact } from './detailed-registration/household-contacts-registration/family-contacts.model';\r\nimport { HouseholdFamilyDocument } from './detailed-registration/household-registration/household-registration.model';\r\nimport { AddressChangeLog } from './modals/address-change-log/address-change-log.model';\r\nimport { RegistrationUnsavedChangesDialogComponent } from './modals/registration-unsaved-changes-dialog/registration-unsaved-changes-dialog.component';\r\nimport { StudentLeavesWith } from './modals/student-leaves-with/student-leaves-with.model';\r\nimport { StudentReleaseAlert } from './modals/student-release-alerts/student-release-alert.model';\r\nimport { AddressBlock } from './models/address-block.model';\r\nimport { EnrollmentCourse } from './models/enrollment-course.model';\r\nimport { EnrollmentHomeroomTeacher } from './models/enrollment-homeroom-teacher.model';\r\nimport { QuickRegistrationParent1Info } from './models/quick-registration-parent1-info.model';\r\nimport { QuickRegistration } from './models/quick-registration.model';\r\nimport { RegistrationDuplicateParentEmail } from './models/registration-duplicate-parent-email.model';\r\nimport { RegistrationDuplicatePhoneNumber } from './models/registration-duplicate-phone-number.model';\r\nimport { RegistrationLookups } from './models/registration-lookups.model';\r\nimport { RegistrationSettings } from './models/registration-settings.model';\r\nimport { RegistrationStudentMatchOptions } from './models/registration-student-match-options.model';\r\nimport { RegistrationStudent } from './models/registration-student.model';\r\nimport { StudentEnrollmentDetail } from './models/student-enrollment-detail.model';\r\nimport { StudentEnrollment } from './models/student-enrollment.model';\r\nimport { FamilyRegistrationDetails } from './registration-search/registration-family-details/registration-family-details.model'; // TODO: Rename the file\r\nimport { RegistrationFamilySearch } from './registration-search/registration-family.model';\r\nimport { RegistrationSearchCriteria } from './registration-search/registration-search-critera.model';\r\n\r\n@Injectable()\r\nexport class RegistrationEnrollmentService {\r\n\r\n registrationSettings: RegistrationSettings;\r\n registrationStudentMatchOptions: RegistrationStudentMatchOptions;\r\n registrationLookups: RegistrationLookups;\r\n familyRegistrationDetails: FamilyRegistrationDetails;\r\n selectedStep = 0;\r\n selectedOtherContactTab = 'Nonresident Parents';\r\n newEmergencyContactTrigger: boolean = false;\r\n studentsLeaveWith: StudentLeavesWith[];\r\n districtLookup: DistrictLookup[] = [];\r\n registrationSearchParams: RegistrationSearchParams = new RegistrationSearchParams();\r\n expandAllNonresident: boolean = false;\r\n unsavedChanges: boolean = false;\r\n errorsExist: boolean = false;\r\n\r\n viewReleaseAlertsPrivilege: boolean = false;\r\n editReleaseAlertsPrivilege: boolean = false;\r\n maintainFamilyDataPermission: boolean = false;\r\n freeReducedMealPermission: boolean = false;\r\n studentDocumentsPermission: boolean = false;\r\n\r\n editStudentId: number;\r\n editContactId: number;\r\n\r\n observableGuard = new Subject();\r\n observableGuardStream$ = this.observableGuard.asObservable();\r\n\r\n observableSwitchTab = new Subject();\r\n observableSwitchTabStream$ = this.observableSwitchTab.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private securityService: SecurityService,\r\n private dialog: MatDialog\r\n ) {\r\n\r\n const releaseAlertsPrivileges = this.securityService.userPermissions.filter(p => p.PermissionName && p.PermissionName.indexOf('Release Alerts') > -1);\r\n this.editReleaseAlertsPrivilege = releaseAlertsPrivileges.filter(p => p.PermissionName && p.PermissionName.indexOf('View Student Release Alerts') == -1).length > 0;\r\n this.viewReleaseAlertsPrivilege = releaseAlertsPrivileges.filter(p => p.PermissionName && p.PermissionName.indexOf('View Student Release Alerts') > -1).length > 0;\r\n\r\n let freeReducedMealPermission = this.securityService.userPermissions.filter(p => p.PermissionName && p.PermissionName.indexOf('Reduced Meal') > -1);\r\n this.freeReducedMealPermission = freeReducedMealPermission.length > 0;\r\n\r\n let studentDocumentsPermission = this.securityService.userPermissions.filter(p => p.PermissionName && (p.PermissionName.toLowerCase().indexOf('maintain all documents for students and families') > -1 || p.PermissionName.toLowerCase().indexOf('maintain documents for students and families') > -1 || p.PermissionName.toLowerCase().indexOf('maintain family data') > -1));\r\n this.studentDocumentsPermission = studentDocumentsPermission.length > 0;\r\n }\r\n\r\n getRegistrationSettings(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetRegistrationSettings?yearId=' + this.yearService.defaultYear.Id);\r\n }\r\n\r\n getRegistrationStudentMatchOptions(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetRegistrationStudentMatchOptions');\r\n }\r\n\r\n getRegistrationLookups(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetRegistrationLookups?siteYearId=' + this.yearService.defaultYear.SiteYearId);\r\n }\r\n\r\n searchRegistration(searchCriteria: RegistrationSearchCriteria): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SearchRegistration?yearId=' + this.yearService.defaultYear.Id, searchCriteria);\r\n }\r\n\r\n getRegistrationFamily(familyId: number): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetRegistrationFamily?yearId=' + this.yearService.defaultYear.SiteYearId + '&familyId=' + familyId);\r\n }\r\n\r\n saveFamilyRegistration(family: FamilyRegistrationDetails): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveFamilyRegistration?yearId=' + this.yearService.defaultYear.SiteYearId, family);\r\n }\r\n\r\n deleteRegistrationHousehold(familyId: number, studentId: number): Observable {\r\n return this.http.get(System.apiURL.Admin + 'DeleteRegistrationHousehold?familyId=' + familyId + '&yearId=' + this.yearService.defaultYear.SiteYearId + '&studentId=' + studentId);\r\n }\r\n\r\n getAdditionalAddresses(familyId: number): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetAdditionalAddresses?familyId=' + familyId);\r\n }\r\n\r\n saveAdditionalAddress(familyId: number, transportation: boolean, deleteOperation: boolean, address: FamilyAddress): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveAdditionalAddress?familyId=' + familyId + '&transportation=' + transportation + '&deleteOperation=' + deleteOperation, address);\r\n }\r\n\r\n getContactWorkInfo(familyId: number) {\r\n return this.http.get(System.apiURL.Admin + 'GetContactWorkInfo?familyId=' + familyId);\r\n }\r\n\r\n getRegistrationDuplicateParentEmails(familyId: number, emailAdded: boolean, emailData: any): Observable {\r\n return this.http.post(System.apiURL.Admin + 'GetRegistrationDuplicateParentEmails?familyId=' + familyId + '&emailAdded=' + emailAdded, emailData);\r\n }\r\n\r\n getRegistrationDuplicatePhoneNumbers(familyId: number, phoneData: any): Observable {\r\n return this.http.post(System.apiURL.Admin + 'GetRegistrationDuplicatePhoneNumbers?familyId=' + familyId, phoneData);\r\n }\r\n\r\n changeDuplicateRegistrationEmails(emailData: any): Observable {\r\n return this.http.post(System.apiURL.Admin + 'ChangeDuplicateRegistrationEmails', emailData);\r\n }\r\n\r\n changeDuplicateRegistrationPhoneNumbers(phoneData: any): Observable {\r\n return this.http.post(System.apiURL.Admin + 'ChangeDuplicateRegistrationPhoneNumbers', phoneData);\r\n }\r\n\r\n getRegistrationPossibleDuplicateStudents(student: RegistrationStudent): Observable {\r\n return this.http.post(System.apiURL.Admin + 'GetRegistrationPossibleDuplicateStudents', student);\r\n }\r\n\r\n validateStudentIDs(studentId: number, studentIdentifier: string, stateId: string, lunchPIN: string): Observable {\r\n return this.http.get(System.apiURL.Admin + 'ValidateStudentIDs?studentId=' + studentId + '&studentIdentifier=' + studentIdentifier + '&stateId=' + stateId + '&lunchPIN=' + lunchPIN);\r\n }\r\n\r\n saveQuickRegistration(schoolId: number, yearId: number, data: QuickRegistration): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveQuickRegistration?schoolId=' + schoolId + '&yearId=' + yearId, data);\r\n }\r\n\r\n saveContactWorkInfo(workInfo: ContactWorkInfo, deleteOperation: boolean) {\r\n return this.http.post(System.apiURL.Admin + 'SaveContactWorkInfo?delete=' + deleteOperation, workInfo);\r\n }\r\n\r\n getAddressChangeLogs(familyId: number): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetAddressChangeLogs?familyId=' + familyId);\r\n }\r\n\r\n getStudentReleaseAlerts(familyId: number): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetStudentReleaseAlerts?familyId=' + familyId);\r\n }\r\n\r\n saveStudentReleaseAlerts(releaseAlerts: StudentReleaseAlert[], deleteOperation: boolean) {\r\n return this.http.post(System.apiURL.Admin + 'SaveStudentReleaseAlerts?delete=' + deleteOperation, releaseAlerts);\r\n }\r\n\r\n getStudentsLeaveWith(familyId: number): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetStudentsLeaveWith?familyId=' + familyId);\r\n }\r\n\r\n saveStudentsLeaveWith(leaveWithHousehold: boolean, leaveWithNonresident: boolean, studentsLeaveWith: StudentLeavesWith[]) {\r\n return this.http.post(System.apiURL.Admin + 'SaveStudentsLeaveWith?familyId=' + this.familyRegistrationDetails.Family_ID + '&leaveWithHousehold=' + leaveWithHousehold + '&leaveWithNonresident=' + leaveWithNonresident, studentsLeaveWith);\r\n }\r\n\r\n saveNonresidentContacts(familyId: number, deleteOperation: boolean, contacts: FamilyContact[]): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveNonresidentContacts?yearId=' + this.yearService.defaultYear.Id + '&familyId=' + familyId + '&delete=' + deleteOperation, contacts);\r\n }\r\n\r\n saveAdditionalContact(familyId: number, deleteOperation: boolean, contact: FamilyContact): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveAdditionalContacts?familyId=' + familyId + '&delete=' + deleteOperation, contact);\r\n }\r\n\r\n saveHouseholdStudent(familyId: number, student: RegistrationStudent): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveHouseholdStudent?siteYearId=' + this.yearService.defaultYear.SiteYearId + '&familyId=' + familyId, student);\r\n }\r\n\r\n saveStudentPhoto(studentId: number, base64Photo: string) {\r\n return this.http.post(System.apiURL.Admin + 'SaveStudentPhoto?studentId=' + studentId, [base64Photo]);\r\n }\r\n\r\n getRegistrationAddressByStreetNameOrID(byName: boolean, streetName: string, streetId: number) {\r\n return this.http.get(System.apiURL.Admin + 'GetRegistrationAddressByStreetNameOrID?byName=' + byName + '&streetName=' + streetName + '&streetId=' + streetId);\r\n }\r\n\r\n getAddressBlocks(block: string) {\r\n return this.http.get(System.apiURL.Admin + 'GetAddressBlocks?yearId=' + this.yearService.defaultYear.Id + '&block=' + block);\r\n }\r\n\r\n moveStudentsToFamily(familyId: number, studentIds: number[]) {\r\n return this.http.post(System.apiURL.Admin + 'MoveStudentsToFamily?familyId=' + familyId, studentIds);\r\n }\r\n\r\n markStudentsAsNew(markNew: boolean, studentIds: number[]) {\r\n return this.http.post(System.apiURL.Admin + 'MarkStudentsAsNew?yearId=' + this.yearService.defaultYear.Id + '&markNew=' + markNew, studentIds);\r\n }\r\n\r\n setEmergencyContactCallOrder(contacts: FamilyContact[]) {\r\n return this.http.post(System.apiURL.Admin + 'SetEmergencyContactCallOrder', contacts);\r\n }\r\n\r\n sendNotificationEmailToParent(peopleId: number, updateDate: boolean, sendEmailInSpanish: boolean) {\r\n return this.http.get(System.apiURL.Admin + 'SendNotificationEmailToParent?peopleId=' + peopleId + '&updateNotifyDate=' + updateDate + '&sendEmailInSpanish=' + sendEmailInSpanish);\r\n }\r\n\r\n deleteRegistrationContact(contact: FamilyContact) {\r\n return this.http.post(System.apiURL.Admin + 'DeleteRegistrationContact', contact);\r\n }\r\n\r\n swapHouseholdParents(familyId: number, nonresident: boolean) {\r\n return this.http.get(System.apiURL.Admin + 'SwapHouseholdParents?familyId=' + familyId + '&nonresident=' + nonresident);\r\n }\r\n\r\n getRegistrationEnrollments(schoolId: number, yearId: number, familyId: number, studentId: number, includeAllYearsEnrollment: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&familyId=' + familyId +\r\n '&studentId=' + studentId +\r\n '&includeAllYearsEnrollment=' + includeAllYearsEnrollment;\r\n return this.http.get(System.apiURL.Admin + 'GetRegistrationEnrollments' + queryString);\r\n }\r\n\r\n splitStudentEnrollment(entryCodeId: number, studentEnrollment: StudentEnrollment) {\r\n let queryString = '';\r\n queryString += '?entryCodeId=' + entryCodeId;\r\n return this.http.post(System.apiURL.Admin + 'SplitStudentEnrollment' + queryString, studentEnrollment);\r\n }\r\n\r\n deleteStudentEnrollment(studentEnrollmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentEnrollmentId=' + studentEnrollmentId;\r\n return this.http.get(System.apiURL.Admin + 'DeleteStudentEnrollment' + queryString);\r\n }\r\n\r\n getRegistrationEnrollmentDetails(schoolId: number, yearId: number, studentId: number, studentEnrollmentId: number, externalEnrollment: boolean, newEnrollment: boolean, primaryEnrollments: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&studentId=' + studentId +\r\n '&studentEnrollmentId=' + studentEnrollmentId +\r\n '&externalEnrollment=' + externalEnrollment +\r\n '&newEnrollment=' + newEnrollment +\r\n '&primaryEnrollments=' + primaryEnrollments;\r\n return this.http.get(System.apiURL.Admin + 'GetRegistrationEnrollmentDetails' + queryString);\r\n }\r\n\r\n getStudentCoursesByEnrollmentId(studentEnrollmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentEnrollmentId=' + studentEnrollmentId;\r\n return this.http.get(System.apiURL.Admin + 'GetStudentCoursesByEnrollmentId' + queryString);\r\n }\r\n\r\n saveRegistrationEnrollmentDetail(screenName: string, enrollmentDetail: StudentEnrollmentDetail): Observable {\r\n let queryString = '';\r\n queryString += '?screenName=' + screenName;\r\n return this.http.post(System.apiURL.Admin + 'SaveRegistrationEnrollmentDetail' + queryString, enrollmentDetail);\r\n }\r\n\r\n saveStudentExternalEnrollment(enrollmentDetail: StudentEnrollmentDetail): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveStudentExternalEnrollment', enrollmentDetail);\r\n }\r\n\r\n getStudentEnrollmentTotalFTE(schoolId: number, yearId: number, studentId: number, studentEnrollmentId: number, fte: number): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&studentId=' + studentId +\r\n '&studentEnrollmentId=' + studentEnrollmentId +\r\n '&fte=' + fte;\r\n return this.http.get(System.apiURL.Admin + 'GetStudentEnrollmentTotalFTE' + queryString);\r\n }\r\n\r\n getHouseholdFamilyDocuments(familyId: number, blnShowAllDocuments: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?familyId=' + familyId +\r\n '&blnShowAllDocuments=' + blnShowAllDocuments;\r\n return this.http.get(System.apiURL.Admin + 'GetHouseholdFamilyDocuments' + queryString);\r\n }\r\n\r\n deleteHouseholdFamilyDocumentById(documentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?documentId=' + documentId;\r\n return this.http.get(System.apiURL.Admin + 'DeleteHouseholdFamilyDocumentById' + queryString);\r\n }\r\n\r\n saveHouseholdFamilyDocument(familyDocument: HouseholdFamilyDocument): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveHouseholdFamilyDocument', familyDocument);\r\n }\r\n\r\n getEnrollmentHomeroomTeacherCourses(yearId: number, schoolId: number, studentId: number, staffId: number): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&siteId=' + schoolId +\r\n '&studentId=' + studentId +\r\n '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Admin + 'GetEnrollmentHomeroomTeacherCourses' + queryString);\r\n }\r\n\r\n updateStudentCourseAssignmentFromEnrollment(yearId: number, enrollmentId: number, siteSectionIds: string, staffId: number, courseGroupId: number): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&studentEnrollmentId=' + enrollmentId +\r\n '&siteSectionIds=' + siteSectionIds +\r\n '&staffId=' + staffId +\r\n '&courseGroupId=' + courseGroupId;\r\n return this.http.get(System.apiURL.Admin + 'UpdateStudentCourseAssignmentFromEnrollment' + queryString);\r\n }\r\n\r\n showWarning(): Observable | Promise | boolean {\r\n // PRE: the user tries to perform an action which may need to be blocked\r\n // POST: Shows the warning dialog. Then, performs the following functions:\r\n // \t\tIf 2, saves the family and continues and returns true\r\n // \t\tIf 0, continues without saving the query and returns true\r\n // \t\tIf -1, returns false\r\n\r\n if (this.unsavedChanges && this.maintainFamilyDataPermission) {\r\n this.observableGuard.next();\r\n let dialogBox = this.dialog.open(RegistrationUnsavedChangesDialogComponent, { panelClass: 'tyl-mat-dialog', disableClose: true, maxWidth: '450px' });\r\n dialogBox.componentInstance.validFamily = this.familyRegistrationDetails.Family_ID > 0;\r\n dialogBox.componentInstance.hasErrors = this.errorsExist;\r\n return dialogBox.afterClosed().pipe(\r\n map(result => {\r\n switch (result) {\r\n // Save query\r\n case 2:\r\n if (this.maintainFamilyDataPermission) {\r\n this.saveFamilyRegistration(this.familyRegistrationDetails).subscribe(() => {\r\n return true;\r\n });\r\n }\r\n case 0:\r\n return true;\r\n // Cancel\r\n case -1:\r\n return false;\r\n default:\r\n return false;\r\n }\r\n })\r\n );\r\n }\r\n else\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport class RegistrationSearchParams {\r\n selectedTab: string;\r\n searchByStudent: SearchByStudentFields;\r\n searchByContact: SearchByContactFields;\r\n searchByAddress: SearchByAddressFields;\r\n}\r\n\r\nexport class SearchByStudentFields {\r\n lastName: string;\r\n firstName: string;\r\n middleName: string;\r\n suffixId: number;\r\n stateId: number;\r\n everyoneLessThan: boolean;\r\n age: number;\r\n birthDate: string;\r\n}\r\n\r\nexport class SearchByContactFields {\r\n lastName: string;\r\n firstName: string;\r\n email: string;\r\n phone: string;\r\n includeNonResidentParents: boolean;\r\n includeEmergencyContacts: boolean;\r\n}\r\n\r\nexport class SearchByAddressFields {\r\n houseNumber: string;\r\n direction: number;\r\n streetName: string;\r\n streetType: number;\r\n aptLot: string;\r\n city: string;\r\n zipCode: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { StudentTeams } from '../../../classroom360/student-teams/student-teams.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TeamsService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getTeamsByStudentId(studentId: number, yearId: number, schoolId: number): Observable {\r\n const queryString = '?studentId=' + studentId\r\n + '&yearId=' + yearId\r\n + '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Admin + 'GetTeamsByStudentId' + queryString);\r\n }\r\n\r\n deleteTeamByStudentId(studentId: number, teamId: number): Observable {\r\n const queryString = '?studentId=' + studentId + '&teamId=' + teamId;\r\n return this.http.get(System.apiURL.Admin + 'DeleteTeamByStudentId' + queryString);\r\n }\r\n\r\n getTeamList(schoolId: number, yearId: number): Observable {\r\n const queryString = '?siteId=' + schoolId\r\n + '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Admin + 'GetTeamList' + queryString);\r\n }\r\n\r\n saveStudentToTeam(studentId: number, data: StudentTeams): Observable {\r\n const queryString = '?studentId=' + studentId;\r\n return this.http.post(System.apiURL.Admin + `SaveStudentToTeam` + queryString, data);\r\n}\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { UserService } from './shared-components/user/user.service';\r\nimport { Router } from '@angular/router';\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n constructor(private auth: UserService,\r\n private myRoute: Router) {\r\n }\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean {\r\n const accessToken = sessionStorage.getItem('accessToken');\r\n if (accessToken != null && (this.auth.userId !== 0 || (this.auth.userType == 3 && this.auth.studentId != 0)) && this.auth.isLoggedIn) {\r\n return true;\r\n } else {\r\n this.myRoute.navigate(['']);\r\n return false;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ClassroomSummary } from './models/classroom-summary.model';\r\n\r\n@Pipe({\r\n name: 'filterClass',\r\n pure: false\r\n})\r\n\r\nexport class FilterClass implements PipeTransform {\r\n\r\n transform(classes: ClassroomSummary[], filter?): any {\r\n return classes.filter(\r\n course =>\r\n (!filter.Meets || (course.Meets && (course.Meets.toLowerCase().startsWith(filter.Meets.toLowerCase()) || (filter.Meets.startsWith('%') && course.Meets.toLowerCase().indexOf(filter.Meets.toLowerCase().substring(1)) > -1)))) &&\r\n\r\n (!filter.Term || (course.Term && (course.Term.toLowerCase().startsWith(filter.Term.toLowerCase()) || (filter.Term.startsWith('%') && course.Term.toLowerCase().indexOf(filter.Term.toLowerCase().substring(1)) > -1)))) &&\r\n\r\n (!filter.CourseSection || (course.CourseSection && (course.CourseSection.toLowerCase().startsWith(filter.CourseSection.toLowerCase()) || (filter.CourseSection.startsWith('%') && course.CourseSection.indexOf(filter.CourseSection.toLowerCase().substring(1)) > -1)))) &&\r\n\r\n (!filter.Course || (course.Course && (course.Course.toLowerCase().startsWith(filter.Course.toLowerCase()) || (filter.Course.startsWith('%') && course.Course.indexOf(filter.Course.toLowerCase().substring(1)) > -1)))) &&\r\n\r\n (!filter.Instructor || (course.Instructor && (course.Instructor.toLowerCase().startsWith(filter.Instructor.toLowerCase()) || (filter.Instructor.startsWith('%') && course.Instructor.indexOf(filter.Instructor.toLowerCase().substring(1)) > -1)))) &&\r\n\r\n (!filter.Room || (course.Room && (course.Room.toLowerCase().startsWith(filter.Room.toLowerCase()) || (filter.Room.startsWith('%') && course.Room.indexOf(filter.Room.toLowerCase().substring(1)) > -1)))) &&\r\n\r\n (!filter.Enrolled || (course.Enrolled && (course.Enrolled.toString().toLowerCase().startsWith(filter.Enrolled.toLowerCase()) || (filter.Enrolled.startsWith('%') && course.Enrolled.toString().indexOf(filter.Enrolled.toLowerCase().substring(1)) > -1)))) &&\r\n\r\n ((filter.AttStatusNone && course.TodaysAttendance == 0) ||\r\n (filter.AttStatusPartial && course.TodaysAttendance == 1) ||\r\n (filter.AttStatusAll && (course.TodaysAttendance == 2 || course.TodaysAttendance == 4)) ||\r\n (filter.AttStatusPerfect && course.TodaysAttendance == 3)) &&\r\n\r\n ((filter.GradingNone && course.TodaysGrading == 0) ||\r\n (filter.GradingPartial && course.TodaysGrading == 1) ||\r\n (filter.GradingAll && course.TodaysGrading == 2)) &&\r\n\r\n ((filter.RCGNone && course.GradePostedStatus == 2) ||\r\n (filter.RCGAll && course.GradePostedStatus == 1) ||\r\n (filter.RCGEx && (course.GradePostedStatus == 0 || course.GradePostedStatus == 3)))\r\n );\r\n }\r\n}","import { UnsavedChangesGuard } from './../../shared-components/guards/unsaved-changes/unsaved-changes.guard';\r\nimport { CheckForErrorsGuard } from './../../shared-components/guards/check-for-errors/check-for-errors.guard';\r\nimport { CourseHasProfile } from './models/course-has-profile';\r\nimport { LoginService } from './../../shared-modules/login/login.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { System } from './../../shared-components/System';\r\nimport { Injectable, EventEmitter } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { forkJoin as observableForkJoin, Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\r\nimport { ClassroomSummary } from './models/classroom-summary.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { ClassroomTerm } from './models/classroom-term.model';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { Portal } from '../../shared-components/portal.model';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { ClassroomSummaryFilter } from './models/classroom-summary-filter';\r\nimport { formatDate } from '@angular/common';\r\nimport { FilterModel } from '../../shared-components/controls/filter/filter.model';\r\nimport { Attachment } from '../../shared-components/models/attachment.model';\r\n\r\n@Injectable()\r\nexport class ClassroomSummaryService {\r\n\r\n displayedBulletins = false; // Announcements modal that displays at first login of the day.\r\n private _selectedCourse: ClassroomSummary;\r\n public get selectedCourse(): ClassroomSummary {\r\n return this._selectedCourse;\r\n }\r\n public set selectedCourse(value: ClassroomSummary) {\r\n const canContinue = this.unsavedChangesGuard.checkForDeactivation() && this.checkForErrorsGuard.checkForDeactivation();\r\n if (canContinue instanceof Observable) {\r\n canContinue.subscribe(clickedOk => {\r\n if (clickedOk) {\r\n this._selectedCourse = value;\r\n this.observableselectedCourse.next(this._selectedCourse);\r\n }\r\n });\r\n } else if (canContinue) {\r\n this._selectedCourse = value;\r\n this.observableselectedCourse.next(this._selectedCourse);\r\n }\r\n }\r\n\r\n public get selectedCourseSummary(): string {\r\n return this.getCourseSummary(this.selectedCourse);\r\n }\r\n private _myClasses: ClassroomSummary[];\r\n public get myClasses(): ClassroomSummary[] {\r\n return this._myClasses;\r\n }\r\n public set myClasses(value: ClassroomSummary[]) {\r\n this._myClasses = value;\r\n this.observableMyClasses.next(value);\r\n }\r\n public observableMyClasses = new BehaviorSubject([]);\r\n observableMyClassesStream$ = this.observableMyClasses.asObservable();\r\n private previousArgs: any;\r\n gradebookClassesSet = false;\r\n\r\n public terms: ClassroomTerm[];\r\n\r\n StaffAssignedPortals: Portal[];\r\n defaultYear: Year;\r\n defaultYearSubscription: Subscription;\r\n public observableselectedCourse = new Subject();\r\n observableselectedCourseStream$ = this.observableselectedCourse.asObservable();\r\n\r\n filterData: ClassroomSummaryFilter;\r\n classSourceFilters: FilterModel[];\r\n filterChange = new EventEmitter();\r\n\r\n timeStamp: Date = new Date();\r\n refreshInterval: Subscription;\r\n modelAge = 0;\r\n lastRefresh: string;\r\n loadedYear: number;\r\n mergeModalOpened: boolean;\r\n gradebookClasses: ClassroomSummary[];\r\n\r\n private _selectedTerm: ClassroomTerm;\r\n public get selectedTerm(): ClassroomTerm {\r\n return this._selectedTerm;\r\n }\r\n public set selectedTerm(value: ClassroomTerm) {\r\n this._selectedTerm = value;\r\n this.observableSelectedTerm.next(this._selectedTerm);\r\n }\r\n observableSelectedTerm = new Subject();\r\n observableSelectedTermStream$ = this.observableSelectedTerm.asObservable();\r\n\r\n viewOptions = [\r\n {\r\n value: '1',\r\n display: 'Unmerged'\r\n },\r\n {\r\n value: '2',\r\n display: 'Merged For Attendance'\r\n },\r\n {\r\n value: '3',\r\n display: 'Merged For Grading'\r\n }\r\n ];\r\n private _selectedView = this.viewOptions[0];\r\n public get selectedView() {\r\n return this._selectedView;\r\n }\r\n public set selectedView(value) {\r\n this._selectedView = value;\r\n this.observableSelectedView.next(this._selectedView);\r\n }\r\n observableSelectedView = new Subject();\r\n observableSelectedViewStream$ = this.observableSelectedView.asObservable();\r\n\r\n\r\n constructor(private http: HttpClient,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private userPreferencesService: UserPreferencesService,\r\n private checkForErrorsGuard: CheckForErrorsGuard,\r\n private unsavedChangesGuard: UnsavedChangesGuard) {\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.defaultYearSubscription = yearService.observableDefaultYearStream$.subscribe(\r\n defaultYear => {\r\n this.defaultYear = defaultYear;\r\n }\r\n );\r\n }\r\n\r\n organizeClasses(courses: ClassroomSummary[]) {\r\n // POST organizes the courses properties\r\n courses.forEach(course => {\r\n if (!course.CourseSection) {\r\n course.CourseSection = course.SubjectCode + '-' + course.Section;\r\n }\r\n if (!course.CourseMenuText) {\r\n course.CourseMenuText = this.getCourseSummary(course);\r\n }\r\n if (course.TermToDate) {\r\n course.TermToDate = new Date(course.TermToDate);\r\n }\r\n if (course.TermFromDate) {\r\n course.TermFromDate = new Date(course.TermFromDate);\r\n }\r\n });\r\n }\r\n\r\n getMyClasses(termId: number, viewId: number, isTeacher: boolean, includeAllCourses: boolean, dateItem: Date): Observable {\r\n if (this.previousArgs &&\r\n this.previousArgs.termId == termId &&\r\n this.previousArgs.viewId == viewId &&\r\n this.previousArgs.isTeacher == isTeacher &&\r\n this.previousArgs.includeAllCourses == includeAllCourses &&\r\n this.previousArgs.dateItem == dateItem &&\r\n this.previousArgs.yearId == this.defaultYear.Id &&\r\n this.previousArgs.school == this.defaultYear.SchoolID) {\r\n return this.observableMyClassesStream$;\r\n } else {\r\n this.previousArgs = {\r\n termId: termId,\r\n viewId: viewId,\r\n isTeacher: isTeacher,\r\n includeAllCourses: includeAllCourses,\r\n dateItem: dateItem,\r\n year: this.defaultYear.Id,\r\n school: this.defaultYear.SchoolID\r\n };\r\n }\r\n const currentDate = new Date();\r\n const dateString = (currentDate.getUTCMonth() + 1) + '/' + currentDate.getDate() + '/' + currentDate.getUTCFullYear();\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.defaultYear.SchoolID +\r\n '&yearId=' + this.defaultYear.Id +\r\n '&termId=' + termId +\r\n '&viewId=' + viewId +\r\n '&isTeacher=' + isTeacher +\r\n '&dateItem=' + dateItem +\r\n '&includeAllCourses=' + includeAllCourses +\r\n '¤tDate=' + dateString;\r\n if (!this.mergeModalOpened) {\r\n this.myClasses = null;\r\n }\r\n return this.http.get(System.apiURL.Classroom + 'GetMyClasses' + queryString).pipe(\r\n map(result => {\r\n this.organizeClasses(result);\r\n if (!this.mergeModalOpened) {\r\n this.myClasses = result;\r\n }\r\n this.loadedYear = this.defaultYear.Id;\r\n return result;\r\n })\r\n );\r\n }\r\n\r\n getClassesForSchoolAndYear(yearId: number, schoolId: number, termId: number, viewId: number): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&termId=' + termId +\r\n '&viewId=' + viewId +\r\n '&isTeacher=' + true +\r\n '&dateItem=' + new Date() +\r\n '&includeAllCourses=' + false +\r\n '¤tDate=' + formatDate(new Date, 'MM/dd/yyyy', 'en-US');\r\n return this.http.get(System.apiURL.Classroom + 'GetMyClasses' + queryString).pipe(\r\n map(result => {\r\n this.myClasses = result;\r\n this.organizeClasses(this.myClasses);\r\n return this.myClasses;\r\n })\r\n );\r\n }\r\n\r\n getClassesWithoutBroadcast(yearId: number, schoolId: number, termId: number, viewId: number): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&termId=' + termId +\r\n '&viewId=' + viewId +\r\n '&isTeacher=' + true +\r\n '&dateItem=' + new Date() +\r\n '&includeAllCourses=' + false +\r\n '¤tDate=' + formatDate(new Date, 'MM/dd/yyyy', 'en-US');\r\n return this.http.get(System.apiURL.Classroom + 'GetMyClasses' + queryString).pipe(\r\n map(courses => {\r\n this.organizeClasses(courses);\r\n return courses;\r\n })\r\n );\r\n }\r\n\r\n\r\n getGradebookAttendanceClasses(forGradebook: boolean, termId: number) {\r\n const currentDate = new Date();\r\n const dateString = (currentDate.getUTCMonth() + 1) + '/' + currentDate.getDate() + '/' + currentDate.getUTCFullYear();\r\n let queryString = '';\r\n const viewId = (forGradebook) ? 3 : 2;\r\n queryString += '?schoolId=' + this.defaultYear.SchoolID +\r\n '&yearId=' + this.defaultYear.Id +\r\n '&termId=' + termId +\r\n '&viewId=' + viewId +\r\n '&isTeacher=' + this.userService.currentUser.UserIsTeacher +\r\n '&dateItem=' + null +\r\n '&includeAllCourses=' + false +\r\n '¤tDate=' + dateString;\r\n return this.http.get(System.apiURL.Classroom + 'GetMyClasses' + queryString).pipe(\r\n map(courses => {\r\n this.organizeClasses(courses);\r\n return courses;\r\n })\r\n );\r\n }\r\n\r\n getCourseProfileExistence(ssecIds: number[]) {\r\n return this.http.post(System.apiURL.Classroom + 'GetCourseHasProfile', ssecIds);\r\n }\r\n\r\n getClassroomTermsAndPreferences(): Observable {\r\n let paramString = '';\r\n paramString += '?studentId=0';\r\n paramString += '&pageURL=/OneSISClassroomSummary';\r\n paramString += '&subjectListId=0';\r\n paramString += '&subjectSection=';\r\n paramString += '&isDefaultPreferences=' + false;\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetClassroomTerms?schoolId=' + this.defaultYear.SchoolID + '&yearId=' + this.defaultYear.Id),\r\n this.http.get(System.apiURL.Student + 'GetUserPreferences' + paramString),\r\n (terms, preferences) => ({ terms, preferences })\r\n );\r\n }\r\n\r\n getClassroomPreferences(): Observable {\r\n let paramString = '';\r\n paramString += '?studentId=0';\r\n paramString += '&pageURL=/OneSISClassroomSummary';\r\n paramString += '&subjectListId=0';\r\n paramString += '&subjectSection=';\r\n paramString += '&isDefaultPreferences=' + false;\r\n return this.http.get(System.apiURL.Student + 'GetUserPreferences' + paramString);\r\n }\r\n\r\n mergeGradingSections(tgsId: number, mergeSectionName: string, primarySection: number, mergedIds: string) {\r\n return this.http.get(System.apiURL.Classroom + 'MergeGradingSections?tgsId=' + tgsId + '&mergeSectionName=' + mergeSectionName + '&primarySection=' + primarySection + '&mergedIds=' + mergedIds);\r\n }\r\n\r\n unmergeGradingSections(tgsId: number, mergeId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'UnmergeGradingSections?tgsId=' + tgsId + '&mergeSSEC_ID=' + mergeId);\r\n }\r\n\r\n mergeAttendanceSections(tgsId: number, mergeSectionName: string, primarySection: number, mergedIds: string) {\r\n return this.http.get(System.apiURL.Classroom + 'MergeAttendanceSections?tgsId=' + tgsId + '&mergeSectionName=' + mergeSectionName + '&primarySection=' + primarySection + '&mergedIds=' + mergedIds);\r\n }\r\n\r\n unmergeAttendanceSections(mergeId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'UnmergeAttendanceSection?mergedId=' + mergeId);\r\n }\r\n\r\n myClassesExportToExcel(sheetName: string, includeHeaders: boolean, classes: ClassroomSummary[]) {\r\n return this.http.post(System.apiURL.Classroom + 'MyClassesExportToExcel?worksheetName=' + sheetName + '&includeColumnHeading=' + includeHeaders, classes);\r\n }\r\n\r\n getCourseSummary(course: ClassroomSummary): string {\r\n let courseSummary = '';\r\n if (course != null) {\r\n courseSummary = course.Course + ' (' + course.SubjectCode + '-' + course.Section + ') ';\r\n if (this.loginService.LoginSettings.V10) {\r\n if (course.TermTo == course.TermFrom) {\r\n courseSummary += course.TermTo + ' ';\r\n } else {\r\n courseSummary += course.TermFrom + '-' + course.TermTo + ' ';\r\n }\r\n courseSummary += 'M: ' + course.Meets;\r\n }\r\n else {\r\n courseSummary += course.Meets;\r\n }\r\n }\r\n return courseSummary;\r\n }\r\n\r\n getTeacherClassesByMergedId(schoolId, yearId, termId, viewId, mergedIds, dateItem) {\r\n const queryString = 'schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&termId=' + termId +\r\n '&viewId=' + viewId +\r\n '&dateItem=' + dateItem;\r\n return this.http.post(System.apiURL.Classroom + 'GetTeacherClassesByMergedId?' + queryString, mergedIds);\r\n }\r\n\r\n getStudentCourses(studentId: number, ssecId: number, yearId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'GetSectionByTeacherAndStudent?studentId=' + studentId + '&ssecId=' + ssecId + '&yearId=' + yearId);\r\n }\r\n\r\n getLastRefresh() {\r\n const currentTime = new Date();\r\n this.modelAge = Math.round((currentTime.getTime() - this.timeStamp.getTime()) / 60000);\r\n return this.modelAge;\r\n }\r\n\r\n clearRefreshTimer() {\r\n this.timeStamp = new Date();\r\n }\r\n\r\n setTimer58() {\r\n this.timeStamp = new Date();\r\n this.timeStamp.setMinutes(this.timeStamp.getMinutes() - 59);\r\n }\r\n\r\n editCourseInfo(operation: string, courseId: number, nickname: string, attachment: Attachment) {\r\n return this.http.post(System.apiURL.Classroom + 'EditCourseInfo?operation=' + operation + '&courseId=' + courseId + '&nickname=' + nickname, attachment);\r\n }\r\n\r\n getMergeSubjectSectionData(subjectSectionIds: number[]) {\r\n return this.http.post(System.apiURL.Classroom + 'GetMergeSubjectSectionData', subjectSectionIds);\r\n }\r\n\r\n}\r\n","export class ClassroomSummaryFilter {\r\n AttStatusNone = true;\r\n AttStatusPartial = true;\r\n AttStatusAll = true;\r\n AttStatusPerfect = true;\r\n GradingNone = true;\r\n GradingPartial = true;\r\n GradingAll = true;\r\n RCGNone = true;\r\n RCGAll = true;\r\n RCGEx = true;\r\n Meets: string = '';\r\n MeetsOperation: string = '0';\r\n Term: string = '';\r\n TermOperation: string = '0';\r\n CourseSection: string = '';\r\n CourseSectionOperation: string = '0';\r\n Course: string = '';\r\n CourseOperation: string = '0';\r\n Room: string = '';\r\n RoomOperation: string = '0';\r\n Enrolled: string = '';\r\n EnrolledOperation: string = '0';\r\n Instructor: string = '';\r\n InstructorOperation: string = '0';\r\n\r\n get CourseName(): string {\r\n return this.Course;\r\n }\r\n}","import { GradingPeriod } from '../../gradebook/v10/models/grading-period.model';\r\n\r\nexport class ClassroomSummary {\r\n\r\n Id: number;\r\n Meets: string;\r\n MeetsOrder: number;\r\n TermId: number;\r\n Term: string;\r\n TermTo: string;\r\n TermToDate = new Date();\r\n TermFrom: string;\r\n TermFromDate = new Date();\r\n Course: string;\r\n CourseHasProfile: boolean;\r\n CourseSection: string;\r\n Instructor: string;\r\n SubjectCode: string;\r\n Section: string;\r\n TodaysAttendance: number;\r\n TodaysGrading: number;\r\n Room: string;\r\n Enrolled: number;\r\n AttendanceRequired: boolean;\r\n MergedForAttendance: boolean;\r\n MergedForGrading: boolean;\r\n MergedAttendanceSection: boolean;\r\n MergedGradebookSection: boolean;\r\n MergedSectionName: string;\r\n MergedTGS_ID: number;\r\n MergedGradebookSSEC_ID: number;\r\n MergedAttendanceSSEC_ID: number;\r\n PeriodNumber: number;\r\n LunchIndicator: boolean;\r\n UpdatedDate = new Date();\r\n UsedForGrading: boolean;\r\n SubjectId: number;\r\n SiteSubjectListId: number;\r\n CourseSelected: boolean;\r\n TeacherId: number;\r\n PriorToStartofYear = new Date();\r\n BeyondEndofYear = new Date();\r\n SSEC_ID: number;\r\n StartDate = new Date();\r\n EndDate = new Date();\r\n IsCurrentCourse: boolean;\r\n GradebookMustAlignToObjective: boolean;\r\n DataBucket_ID: number;\r\n AdditionalTeacher: boolean;\r\n AdditionalTeacherSearchAttendance: boolean;\r\n AdditionalTeacherSubmitAttendance: boolean;\r\n AdditionalTeacherAccessGradebook: boolean;\r\n SeatingCharts: number;\r\n DefaultSeatingChart: string;\r\n GradeCycleId: number;\r\n GradePostedStatus: number;\r\n IsHomeRoom: boolean;\r\n MergedAttendancePrimarySubjectID: number;\r\n ProjectedStudent: number;\r\n GT_ID: number;\r\n GradingType: string;\r\n GBDisplayConfigExists: boolean;\r\n GBViewExists: boolean;\r\n RelatedTopic: number;\r\n ScoreStandardsByAssignment: boolean;\r\n HybridGradebook: boolean;\r\n ColumnsToExport: string[];\r\n GradebookAutoCalcObjScores: boolean;\r\n HasDefaultAttendanceCode: boolean;\r\n ObjectiveReportCardUsesSubjectGrades: boolean;\r\n ObjectiveReportCardUsesObjectiveGrades: boolean;\r\n AttendanceToday: boolean;\r\n GradeScaleExists: boolean;\r\n StandardsForReportCardsOnly: boolean;\r\n SectionNickName: string;\r\n GradebookAccess: boolean;\r\n GBCurrMarksNumericForStandards: boolean;\r\n StudentIds: number[] = [];\r\n ReportingSectionName: string; // THIS IS PURLEY THE SubjectSection.SSECName\r\n\r\n // Non DTO Fields\r\n Selected: boolean;\r\n Primary: boolean;\r\n CourseMenuText: string;\r\n courseSelected: boolean;\r\n IsSelectedForMassEmail: boolean;\r\n Students: any[];\r\n classStudentsCheckAll: boolean;\r\n copyChecked: boolean;\r\n copyPeriods: GradingPeriod[];\r\n selectedCopyPeriod: GradingPeriod;\r\n Merged: string;\r\n}\r\n","import { System } from '../shared-components/System';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subscription, BehaviorSubject, of, forkJoin } from 'rxjs';\r\nimport { YearService } from '../shared-components/year/year.service';\r\nimport { Portal } from '../shared-components/portal.model';\r\nimport { UserService } from '../shared-components/user/user.service';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { UserPreferencesService } from '../shared-components/user-preferences/user-preferences.service';\r\nimport { StudentService } from '../shared-components/student/student.service';\r\nimport { OnlinePaymentConfiguration } from '../student360/online-payment/models/online-payment-config.model';\r\nimport { Router } from '@angular/router';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { GeneralConfirmationComponent } from '../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { LoginService } from '../shared-modules/login/login.service';\r\nimport { UserSchoolYearPolicies } from '../shared-components/user/user-school-year-policies.model';\r\nimport { SharedService } from '../shared-components/shared.service';\r\nimport { ClassroomAttendance } from './attendance/models/attendance.model';\r\nimport { StudentPeriodicAttendanceDetail } from './attendance/models/student-periodic-attendance-detail.model';\r\nimport {PermissionEnum} from '../shared-components/security/permissions.enums';\r\nimport {SecurityService} from '../shared-components/security/security.service';\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable()\r\nexport class Classroom360Service {\r\n\r\n defaultYearSubscription: Subscription;\r\n selectedStudentSubscription: Subscription;\r\n\r\n public staffAssignedPortals: Portal[];\r\n observableStaffAssignedPortals = new BehaviorSubject([]);\r\n observableStaffAssignedPortalsStream$ = this.observableStaffAssignedPortals.asObservable();\r\n gradebookPortalSelected: boolean;\r\n attendancePortalSelected: boolean;\r\n courseInfoPortalSelected: boolean;\r\n previousPortalArgs: { [key: string]: any } = {};\r\n redirectToEForms: boolean;\r\n performed = false;\r\n schoolPolicy: UserSchoolYearPolicies;\r\n V10: boolean;\r\n\r\n // TODO: this is for discovering inactive modules and should be removed in the future\r\n S360CourseRequestPages = [\r\n '/scheduling/districtCourseRequestSetup',\r\n '/scheduling/schoolCourseRequestSetup'\r\n ];\r\n S360ClassSchedulingPages = [\r\n '/scheduling/classesByCourse',\r\n '/scheduling/customSchedulingProperties',\r\n '/scheduling/bellSchedule/districtBellSchedule',\r\n '/scheduling/masterschedule',\r\n '/scheduling/roomSchedulingSettings',\r\n '/scheduling/bellSchedule/schoolBellSchedule',\r\n '/scheduling/schoolSchedulingFolders',\r\n '/scheduling/sections',\r\n '/scheduling/teacherSchedulingSettings',\r\n '/scheduling/bellSchedule/editSchoolBellSchedule',\r\n '/scheduling/bellSchedule/editDistrictBellSchedule',\r\n '/scheduling/studentSchedulingSettings'\r\n ];\r\n S360StudentSchedulingPages = [\r\n '/scheduling/scheduleStudentList'\r\n ];\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private userPreferencesService: UserPreferencesService,\r\n private studentService: StudentService,\r\n private securityService: SecurityService,\r\n private sharedService: SharedService,\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private loginService: LoginService\r\n ) {\r\n this.V10 = loginService.LoginSettings.V10;\r\n\r\n const getNewStaffPortals = (studentId = 0, from = '') => {\r\n if (this.yearService.defaultYear && this.userService.currentUser && this.userService.currentUser.UserType != 2) {\r\n this.getStaffAssignedPortals(studentId).pipe(take(1)).subscribe(portals => {\r\n\r\n // Updating the portals OR resetting if the user wishes to go back\r\n const allowedChange = this.updateStaffAssignedPortals(portals);\r\n allowedChange.pipe(take(1)).subscribe(result => {\r\n if (!result) {\r\n\r\n // Resetting student\r\n if (from == 'Student') {\r\n this.studentService.updateSelectedStudent(this.studentService.previousSelectedStudent.Id);\r\n }\r\n\r\n // Resetting year\r\n if (from == 'Year') {\r\n this.yearService.defaultYear = this.yearService.previousYear;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n this.defaultYearSubscription = yearService.observableDefaultYearStream$.subscribe(() => {\r\n if (this.userService.userType == 1) {\r\n const studentId = this.studentService.selectedStudent ? this.studentService.selectedStudent.Id : 0;\r\n getNewStaffPortals(studentId, 'Year');\r\n }\r\n });\r\n this.selectedStudentSubscription = this.studentService.selectedStudentStream$.subscribe(studentId => {\r\n if (this.userService.userType == 1) {\r\n getNewStaffPortals(studentId, 'Student');\r\n }\r\n });\r\n }\r\n\r\n getStaffAssignedPortals(studentId: number = 0, forceGetPortals: boolean = false): Observable {\r\n if (\r\n !this.yearService.defaultYear\r\n || (this.yearService.defaultYear.SchoolID <= 0 && (this.V10 || studentId <= 0))\r\n || this.yearService.defaultYear.SchoolID == null\r\n ) {\r\n return of([]);\r\n }\r\n if (this.staffAssignedPortals\r\n && this.staffAssignedPortals.length > 0\r\n && !forceGetPortals\r\n && (this.previousPortalArgs['studentId'] ? this.previousPortalArgs['studentId'] : 0) == (studentId ? studentId : 0) // All falsey values become 0, preventing the case of null != 0 => true\r\n && (this.previousPortalArgs['yearId'] ? this.previousPortalArgs['yearId'] : 0) == this.yearService.defaultYear.Id\r\n && (this.previousPortalArgs['siteId'] ? this.previousPortalArgs['siteId'] : 0) == this.yearService.defaultYear.SchoolID\r\n ) {\r\n return of(this.staffAssignedPortals);\r\n } else {\r\n this.previousPortalArgs['studentId'] = studentId;\r\n this.previousPortalArgs['yearId'] = this.yearService.defaultYear.Id;\r\n this.previousPortalArgs['siteId'] = this.yearService.defaultYear.SchoolID;\r\n\r\n // We obtain the school policy here because we need a modal popup for when a feature has not yet been activated\r\n // TODO: Obtaining the school policy is temporary and should be removed in the future\r\n return forkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetStaffAssignedPortals?schoolId=' + this.yearService.defaultYear.SchoolID + '&yearId=' + this.yearService.defaultYear.Id + '&studentId=' + studentId),\r\n this.userService.getUserSchoolYearPolicies(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID)\r\n ).pipe(\r\n map(results => {\r\n\r\n // Setting the respective properties\r\n const portals = results[0];\r\n this.schoolPolicy = results[1];\r\n\r\n // We need to separate the portals in multiple groups into separate portals because GroupName is a CSV\r\n for (let i = 0; i < portals.length; i++) {\r\n\r\n // If multiple groups are found, split the portals\r\n if (portals[i].GroupName.includes(',')) {\r\n const groups = portals[i].GroupName.split(',');\r\n const portalDuplicates = [];\r\n for (let j = 0; j < groups.length; j++) {\r\n groups[j] = groups[j].trim();\r\n\r\n // If this is the first element, alter our current portal\r\n if (j == 0) {\r\n portals[i].GroupName = groups[0];\r\n if (this.V10) {\r\n portals[i].IsFavorite = portals[i].GroupNameFavorite && portals[i].GroupNameFavorite.includes(groups[0]);\r\n }\r\n portalDuplicates.push(portals[i]);\r\n }\r\n\r\n // After the first element, create new portals\r\n else {\r\n const portalInGroup = new Portal();\r\n Object.assign(portalInGroup, portals[i]);\r\n portalInGroup.GroupName = groups[j];\r\n if (this.V10) {\r\n portalInGroup.IsFavorite = portals[i].GroupNameFavorite && portalInGroup.GroupNameFavorite.includes(portalInGroup.GroupName);\r\n }\r\n portals.push(portalInGroup);\r\n portalDuplicates.push(portalInGroup);\r\n }\r\n }\r\n\r\n // The first one that isn't student group should show as tile\r\n if (portals[i].ShowAsTile && portalDuplicates.length > 0) {\r\n let showAsTileSet = false;\r\n for (let j = 0; j < portalDuplicates.length; j++) {\r\n if (!showAsTileSet && !portalDuplicates[j].GroupName.toLowerCase().includes('student')) {\r\n portalDuplicates[j].ShowAsTile = true;\r\n showAsTileSet = true;\r\n } else {\r\n portalDuplicates[j].ShowAsTile = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.userPreferencesService.favoritesPreferences) {\r\n for (let i = 0; i < portals.length; i++) {\r\n const index: number = this.userPreferencesService.favoritesPreferences.FavoritePortals.findIndex(x =>\r\n (x.PortalName == portals[i].PortalName &&\r\n (x.GroupName == portals[i].GroupName\r\n || (x.GroupName == 'Students' && portals[i].GroupName == 'My Students')\r\n || (x.GroupName == 'Classes' && portals[i].GroupName == 'My Classes')\r\n || (x.GroupName == 'My Students' && portals[i].GroupName == 'Students')\r\n || (x.GroupName == 'My Classes' && portals[i].GroupName == 'Classes')\r\n ))\r\n );\r\n portals[i].Selected = index != -1 &&\r\n (this.userPreferencesService.favoritesPreferences.FavoritePortals[index].GroupName == portals[i].GroupName\r\n || (this.userPreferencesService.favoritesPreferences.FavoritePortals[index].GroupName == 'Students' && portals[i].GroupName == 'My Students')\r\n || (this.userPreferencesService.favoritesPreferences.FavoritePortals[index].GroupName == 'Classes' && portals[i].GroupName == 'My Classes')\r\n || (this.userPreferencesService.favoritesPreferences.FavoritePortals[index].GroupName == 'My Students' && portals[i].GroupName == 'Students')\r\n || (this.userPreferencesService.favoritesPreferences.FavoritePortals[index].GroupName == 'My Classes' && portals[i].GroupName == 'Classes')\r\n ) &&\r\n this.userPreferencesService.favoritesPreferences.FavoritePortals[index].PortalModule == portals[i].ParentModule;\r\n }\r\n }\r\n\r\n this.staffAssignedPortals = Array.prototype.sort.call(portals, (a, b) => a.PortalName.localeCompare(b.PortalName));\r\n return _.cloneDeep(this.staffAssignedPortals);\r\n })\r\n );\r\n }\r\n }\r\n\r\n getOnlinePaymentConfiguration(): Observable {\r\n return this.sharedService.getOnlinePaymentConfiguration();\r\n }\r\n\r\n public getStudentsForAttendance(objYearId: number, schoolId: number, siteSectionId: number, defaultDate: string, showStudentPhoto: boolean, showSeatingChart: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + objYearId +\r\n '&schoolId=' + schoolId +\r\n '&siteSectionId=' + siteSectionId +\r\n '¤tDate=' + defaultDate +\r\n '&showStudentPhoto=' + showStudentPhoto +\r\n '&showSeatingChart=' + showSeatingChart;\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentsForAttendance' + queryString);\r\n }\r\n\r\n public getStudentsForAttendanceForDate(objYearId: number, schoolId: number, siteSectionId: number, attendanceDate: string, showStudentPhoto: boolean, showSeatingChart: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + objYearId +\r\n '&schoolId=' + schoolId +\r\n '&siteSectionId=' + siteSectionId +\r\n '&attendanceDate=' + attendanceDate +\r\n '&showStudentPhoto=' + showStudentPhoto +\r\n '&showSeatingChart=' + showSeatingChart;\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentsForAttendanceForDate' + queryString);\r\n }\r\n\r\n public getStudentPeriodicAttendanceDetail(studentId: number, schoolId: number, AYIdentifier, AttDate: string): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&schoolId=' + schoolId +\r\n '&AYIdentifier=' + AYIdentifier +\r\n '&AttDate=' + AttDate;\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentPeriodicAttendanceDetail' + queryString);\r\n }\r\n\r\n public updateStudentAttendance(schoolId: number, yearId: number, userId: number, data: ClassroomAttendance[], attDate: string, siteSectionId: number, markPerfectAttendance: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&userId=' + userId +\r\n '&attDate=' + attDate +\r\n '&siteSectionId=' + siteSectionId +\r\n '&markPerfectAttendance=' + markPerfectAttendance;\r\n return this.http.post(System.apiURL.Classroom + 'UpdateStudentAttendance' + queryString, data);\r\n }\r\n\r\n public massUpdateStudentAttendanceByClass(schoolId: number, yearId: number, userId: number, data: ClassroomAttendance[], attDate: string, siteSectionId: number, markPerfectAttendance: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&userId=' + userId +\r\n '&attDate=' + attDate +\r\n '&siteSectionId=' + siteSectionId +\r\n '&markPerfectAttendance=' + markPerfectAttendance;\r\n return this.http.post(System.apiURL.Classroom + 'MassUpdateStudentAttendanceByClass' + queryString, data);\r\n }\r\n\r\n updateStaffAssignedPortals(portals: Portal[]): Observable {\r\n // POST: updates the list of assigned portals to the supplied portals, showing a warning dialog if the current page is not valid\r\n\r\n // Checking if we have permissions to view the current page in the new portals\r\n let url = this.router.url;\r\n const queryParamIndex = url.indexOf('?');\r\n if (queryParamIndex >= 0) {\r\n url = url.substring(0, queryParamIndex);\r\n }\r\n let versionParameter: number;\r\n if (this.loginService.LoginSettings.V10) {\r\n versionParameter = url.toLowerCase().indexOf('/v10');\r\n } else {\r\n versionParameter = url.toLowerCase().indexOf('/v9');\r\n }\r\n if (versionParameter >= 0) {\r\n url = url.substring(0, versionParameter);\r\n }\r\n let hasPortal = false;\r\n\r\n // Hard-coded URLs shouldn't be checked because there is nothing to check against\r\n if (\r\n url.toLowerCase().includes('login')\r\n || url.toLowerCase().includes('/classroom360/classroomsummary')\r\n || url.toLowerCase().includes('/classroom360/cards')\r\n || url.toLowerCase().includes('/student360/studentsummary')\r\n || url.toLowerCase().includes('/eforms/submissions')\r\n || url.toLowerCase().includes('/changepassword')\r\n || url.toLowerCase().includes('/editschoolbellschedule')\r\n || url.toLowerCase().includes('/editdistrictbellschedule')\r\n || url.toLowerCase().includes('/registrationenrollment/detailedregistration')\r\n || url.toLowerCase().includes('/student360/eformsstaff/:staffpage')\r\n ) {\r\n hasPortal = true;\r\n }\r\n\r\n // For all other portals\r\n else {\r\n portals.forEach(portal => {\r\n if ((portal.ParentModule + portal.PortalDescription).toLowerCase() == url.toLowerCase()) {\r\n hasPortal = true;\r\n }\r\n });\r\n }\r\n // Programs and services does not have a portal in v10\r\n // TODO: This is a hacky fix and we need to consider adding a permission checker in the router\r\n if (url.toLowerCase().includes('programsandservices')) {\r\n if (this.loginService.LoginSettings.V10 && this.securityService.IsAnyPermissionAssigned(PermissionEnum.StudentGeneralProfileStudentPrograms)) {\r\n hasPortal = true;\r\n }\r\n }\r\n\r\n // If we have permissions, just continue\r\n if (hasPortal) {\r\n this.staffAssignedPortals = portals;\r\n this.observableStaffAssignedPortals.next(portals);\r\n return of(true);\r\n }\r\n\r\n // If we do not have permissions, inform the user\r\n else {\r\n let dialogBox;\r\n // We show a \"feature has not yet been enabled\" here because scheduling can be activate or deactivated\r\n // TODO: This is temporary and should be removed in the future\r\n const counselorIndex = url.indexOf('/counselor360');\r\n let counselorPageUrl = url;\r\n if (counselorIndex >= 0) {\r\n counselorPageUrl = url.substring(counselorIndex + '/counselor360'.length, url.length);\r\n }\r\n if (\r\n counselorIndex >= 0\r\n && this.schoolPolicy\r\n && (\r\n (\r\n this.S360CourseRequestPages.includes(counselorPageUrl)\r\n && !this.schoolPolicy.S360SchedulingCourseRequests\r\n )\r\n || (\r\n this.S360ClassSchedulingPages.includes(counselorPageUrl)\r\n && !this.schoolPolicy.S360SchedulingClassScheduling\r\n )\r\n || (\r\n this.S360StudentSchedulingPages.includes(counselorPageUrl)\r\n && !this.schoolPolicy.S360SchedulingStudentScheduling\r\n )\r\n )\r\n ) {\r\n dialogBox = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n data: {\r\n headerLabel: 'Module Not Activated',\r\n confirmMessage: 'The module has not been activated for this school and year. If you continue, you will be redirected to the Classroom Summary.',\r\n okButtonLabel: 'Continue',\r\n warning: true,\r\n informational: (url.toLowerCase() == '/eforms/submissions' || url.toLowerCase() == '/admin360/eForms/processing') ? true : false,\r\n Url: url.toLowerCase()\r\n }\r\n });\r\n }\r\n\r\n // If this is not a counselor page or the school policy is active, then the user does not have proper permissions\r\n else {\r\n dialogBox = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n data: {\r\n headerLabel: 'Insufficient Permissions',\r\n confirmMessage: (this.userService.userType == 1 && !this.loginService.LoginSettings.V10 && (url.toLowerCase().includes('/eforms/submissions') || url.toLowerCase().includes('/admin360/eForms/processing'))) ? ('You do not have permission to view the current page for the selected year.') : ('You do not have permission to view the current page for this student, school, and year. If you continue, you will be redirected to the Classroom Summary.'),\r\n okButtonLabel: 'Continue',\r\n warning: true,\r\n informational: (url.toLowerCase() == '/eforms/submissions' || url.toLowerCase() == '/admin360/eForms/processing') ? true : false,\r\n Url: url.toLowerCase()\r\n }\r\n });\r\n }\r\n // Responding to results\r\n if (this.userService.userType == 1 && !this.loginService.LoginSettings.V10 && (url.toLowerCase().includes('/eforms/submissions') || url.toLowerCase().includes('/admin360/eForms/processing'))) {\r\n return;\r\n } else {\r\n return dialogBox.afterClosed().pipe(\r\n take(1),\r\n map(result => {\r\n\r\n\r\n // If the user continues, set the portals and redirect to the classroom summary\r\n if (result) {\r\n this.staffAssignedPortals = portals;\r\n this.observableStaffAssignedPortals.next(portals);\r\n this.router.navigateByUrl('/classroom360/cards');\r\n }\r\n\r\n // Return the result for processing elsewhere\r\n return result;\r\n })\r\n );\r\n }\r\n }\r\n }\r\n}\r\n","import {DataQueryField} from './data-query-field.model';\r\nimport {TylerMatTableDataSource} from '../../shared-components/angular-material/extended.class';\r\nimport {DataQueryObject} from './data-query-object.model';\r\n\r\nexport class DataQueryCategory {\r\n\r\n\t// Server Properties\r\n\tCategoryName: string;\r\n\tDeleted: boolean;\r\n\tFields: DataQueryField[] = [];\r\n\tID: number;\r\n\tObjectID: number;\r\n\tObjectName: string;\r\n\tViewName: string;\r\n\tisDynamicView: boolean;\r\n\tisLargeView: boolean;\r\n\tUserDefinedTabId:number;\r\n\t// Local Properties\r\n\tisUserCategory = true;\r\n\tprivate _tableData: TylerMatTableDataSource;\r\n\tselectedRow: DataQueryField;\r\n\tobject: DataQueryObject;\r\n\r\n\t// Class Functions\r\n\tget fields(): DataQueryField[] {\r\n\t\treturn this.Fields;\r\n\t}\r\n\r\n\tset fields(value: DataQueryField[]) {\r\n\t\tthis.Fields = value;\r\n\t}\r\n\r\n\tget tableData(): TylerMatTableDataSource {\r\n\t\tif (!this._tableData) {\r\n\t\t\tthis._tableData = new TylerMatTableDataSource(this.fields);\r\n\t\t}\r\n\t\tif (this._tableData.data.length != this.fields.length) {\r\n\t\t\tthis._tableData.data = this.fields;\r\n\t\t}\r\n\t\treturn this._tableData;\r\n\t}\r\n}\r\n","import {DataQueryField} from './data-query-field.model';\r\nimport {DataQueryOperator} from './data-query-operator.model';\r\nimport {Lookup} from '../../shared-components/lookup/lookup.model';\r\nimport {DeleteRowDialogComponent} from './delete-row-dialog/delete-row-dialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {TylerMatTableDataSource} from '../../shared-components/angular-material/extended.class';\r\n\r\nexport class DataQueryFieldFilter extends DataQueryField {\r\n\r\n\t// Static Properties\r\n\tstatic courseFilterDisplayName = '(Students Actively Enrolled Today in) Class';\r\n\tstatic courseFilterFieldName = 'StudentsActivelyEnrolledTodayInClass';\r\n\tstatic studentFilterFieldName = 'UserDefinedStudentFilter';\r\n\tstatic enrollmentFilterFieldName = 'StudentsEnrolledAsOf';\r\n\tstatic enrollmentFilterDisplayName = '(Include only students enrolled as of) Date';\r\n\tstatic studentListFilterFieldName = 'StudentsListfilter';\r\n\tstatic studentListFilterDisplayName = 'Students in Student List';\r\n\tstatic studentTeamFilterFieldName = 'StudentsTeamfilter';\r\n\tstatic studentTeamFilterDisplayName = 'Students in Student Team';\r\n static displayOperators = [\r\n\t\t'=',\r\n\t\t'Not=',\r\n\t\t'>',\r\n\t\t'>=',\r\n\t\t'<',\r\n\t\t'<=',\r\n\t\t'Between',\r\n\t\t'Is Blank',\r\n\t\t'Is Not Blank',\r\n\t\t'Contains',\r\n\t\t'In List',\r\n\t\t'Not In List',\r\n\t\t'Starts With'\r\n\t];\r\n\r\n\t// Server Properties\r\n\tApplyToAll = false;\r\n\tDisplayMenu = false;\r\n\tFilterID: number;\r\n\tFilterOptions: Lookup[] = [];\r\n\tGroup = 'A';\r\n\tIsStudentFilter = false;\r\n\tIsCourseFilter = false;\r\n\tOperator: string;\r\n\tUseCurrentDate1 = false;\r\n\tUseCurrentDate2 = false;\r\n\tUseFilterForStudentSearch = true;\r\n\tUseFilterForCourseSearch = false;\r\n\tUseFilterForStaffSearch = false;\r\n\tValue: boolean | number | string = '';\r\n\tValue2: boolean | number | string = '';\r\n\tnumericType: boolean;\r\n\r\n\t// Local Properties\r\n\tprivate _field: DataQueryField;\r\n\tprivate _dateValue: Date;\r\n\tprivate _dateValue2: Date;\r\n\tshowFilterError1: boolean;\r\n\tshowFilterError2: boolean;\r\n\tdisableEdit: boolean;\r\n hidden: boolean;\r\n\r\n\t// Class Functions\r\n\tget studentFilter(): boolean {\r\n\t\treturn this.IsStudentFilter || (this.field && this.field.FieldName == DataQueryFieldFilter.courseFilterFieldName);\r\n\t}\r\n\r\n\tget courseFilter(): boolean {\r\n\t\treturn this.IsCourseFilter;\r\n\t}\r\n\r\n\tget field(): DataQueryField {\r\n\t\treturn this._field;\r\n\t}\r\n\r\n\tset field(value: DataQueryField) {\r\n\t\tthis._field = value;\r\n\t\tif (this._field && this._field.DataType) {\r\n\r\n\t\t\t// Making sure this filter is a part of the field\r\n\t\t\tif (this._field.Filters) {\r\n\t\t\t\tconst indexOfThis = this._field.Filters.indexOf(this);\r\n\t\t\t\tif (indexOfThis < 0) {\r\n\t\t\t\t\tthis._field.Filters.push(this);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._field.Filters = [];\r\n\t\t\t\tthis._field.Filters.push(this);\r\n\t\t\t}\r\n\r\n\t\t\t// Determining if the filter is a numeric type\r\n\t\t\tthis.numericType = this._field.DataType.toLowerCase() == 'int'\r\n\t\t\t\t|| this._field.DataType.toLowerCase() == 'decimal'\r\n\t\t\t\t|| this._field.DataType.toLowerCase() == 'float'\r\n\t\t\t\t|| this._field.DataType.toLowerCase() == 'money'\r\n\t\t\t\t|| this._field.DataType.toLowerCase() == 'bigint'\r\n\t\t\t\t|| this._field.DataType.toLowerCase() == 'smallint'\r\n\t\t\t\t|| this._field.DataType.toLowerCase() == 'tinyint'\r\n\t\t\t\t|| this._field.DataType.toLowerCase() == 'numeric';\r\n\r\n\t\t\t// Setting the initial operator if none is present or it is invalid\r\n\t\t\tif (!this.Operator || !this.getFilterOperators().includes(this.Operator)) {\r\n\t\t\t\tthis.Operator = this.getFilterOperators()[0];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget dateValue(): Date {\r\n\t\treturn this._dateValue;\r\n\t}\r\n\r\n\tset dateValue(value: Date) {\r\n\t\tthis._dateValue = value;\r\n\t\tthis.setValueFromDate(this._dateValue, 1);\r\n\t}\r\n\r\n get dateValue2(): Date {\r\n return this._dateValue2;\r\n }\r\n\r\n set dateValue2(value: Date) {\r\n this._dateValue2 = value;\r\n this.setValueFromDate(this._dateValue2, 2);\r\n }\r\n\r\n\tconstructor(field?: DataQueryField) {\r\n\t\t// POST: sets the operator to the first viable operator\r\n\t\tsuper();\r\n\r\n\t\t// If a field is provided, add the field to the filter and the filter to the field\r\n\t\tif (field) {\r\n\t\t\tthis.field = field;\r\n\t\t}\r\n\t}\r\n\r\n\t// Methods\r\n\tduplicate(field?: DataQueryField): DataQueryFieldFilter {\r\n\t\tconst newFilter = new DataQueryFieldFilter();\r\n\t\tObject.assign(newFilter, this);\r\n\t\tnewFilter.field = field;\r\n\t\treturn newFilter;\r\n\t}\r\n\r\n\tgetFilterOperators(): string[] {\r\n\t\t// PRE: a field to get the operators for\r\n\t\t// POST: returns the operators for a field's filters\r\n\t\tswitch (this.field.FilterType) {\r\n\t\t\tcase 0:\r\n\t\t\t\tif (this.field.DataType.toLowerCase() == 'bit') {\r\n\t\t\t\t\treturn DataQueryFieldFilter.displayOperators.filter(operator =>\r\n\t\t\t\t\t\toperator != 'Between'\r\n\t\t\t\t\t\t&& operator != 'Contains'\r\n\t\t\t\t\t\t&& operator != 'In List'\r\n\t\t\t\t\t\t&& operator != 'Not In List'\r\n\t\t\t\t\t\t&& operator != 'Starts With'\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn DataQueryFieldFilter.displayOperators;\r\n\t\t\t\t}\r\n\t\t\tcase 1:\r\n\t\t\t\treturn DataQueryFieldFilter.displayOperators.filter(operator =>\r\n\t\t\t\t\toperator != 'Contains'\r\n\t\t\t\t\t&& operator != 'In List'\r\n\t\t\t\t\t&& operator != 'Not In List'\r\n\t\t\t\t\t&& operator != 'Starts With'\r\n\t\t\t\t);\r\n\t\t\tcase 3:\r\n\t\t\t\treturn DataQueryFieldFilter.displayOperators.filter(operator =>\r\n\t\t\t\t\toperator != 'Between'\r\n\t\t\t\t\t&& operator != 'In List'\r\n\t\t\t\t\t&& operator != 'Not In List'\r\n\t\t\t\t);\r\n\t\t\tdefault:\r\n\t\t\t\treturn DataQueryFieldFilter.displayOperators;\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueFromDate(date: Date, value = 1) {\r\n\t\t// PRE: a date to extract a value from and the value we want to set (either 1 or 2)\r\n\t\t// POST: sets the value based on the date\r\n\t\tif (date == null) {\r\n\t\t\tif (value == 1) {\r\n\t\t\t\tthis.Value = '';\r\n\t\t\t} else {\r\n\t\t\t\tthis.Value2 = '';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (value == 1) {\r\n\t\t\t\tthis.Value = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();\r\n\t\t\t} else {\r\n\t\t\t\tthis.Value2 = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tuseCodeDescription(V10: boolean) {\r\n\t\t// PRE: whether or not this is V10. Also, must have a field.\r\n\t\t// POST: determines whether this should use the code or the code description\r\n if (!V10) {\r\n return this.field.FieldName == 'Lives With'\r\n || this.field.FieldName == 'Student Suffix'\r\n || this.field.FieldName == 'Graduation Plan'\r\n || this.field.FieldName == 'Subject Type'\r\n || this.field.FieldName == 'Language of Instruction'\r\n || this.field.FieldName == 'District Department'\r\n || this.field.FieldName == 'Graduation Department'\r\n || this.field.FieldName == 'Additional Graduation Department'\r\n || this.field.FieldName == 'Subject Term Type'\r\n || this.field.FieldName == 'Credit Delivery Term Type'\r\n || this.field.FieldName == 'Pri Enrl Site Name'\r\n || this.field.FieldName == 'EnrollmentStatus';\r\n } else {\r\n return this.field.FieldName != 'Grade';\r\n }\r\n\t}\r\n\r\n\tdisabled() {\r\n\t\t// POST: returns true if this should be disabled\r\n\t\treturn this.Operator == 'Is Blank' || this.Operator == 'Is Not Blank';\r\n\t}\r\n\r\n\tdelete(\r\n\t\tdialog: MatDialog,\r\n\t\tfilterArray: DataQueryFieldFilter[] = [],\r\n\t\tfilterFields: DataQueryField[] = [],\r\n\t\tforceDelete = false,\r\n\t\ttableData?: TylerMatTableDataSource,\r\n callback: Function = null\r\n\t) {\r\n\t\t// PRE: a filter that is in the filter data\r\n\t\t// \t\tThe filters field must not be null and the field must have a filters array that the filter is a part of\r\n\t\t// POST: deletes the filter from the filter data\r\n\r\n\t\t// Creating helper function to update table data\r\n\t\tconst updateTableData = () => {\r\n\t\t\tif (tableData) {\r\n\t\t\t\ttableData.data = filterArray;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Checking that we have a field\r\n\t\tif (this.field && this.field.Filters) {\r\n\r\n\t\t\t// If this is the only filter for that field, we need to perform additional checks\r\n\t\t\tif (this.field.Filters.length == 1) {\r\n\r\n\t\t\t\t// Creating a helping function\r\n\t\t\t\tconst removeFilter = () => {\r\n\t\t\t\t\tif (this.field) {\r\n\t\t\t\t\t\tthis.field.Filters.splice(this.field.Filters.indexOf(this), 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (filterFields) {\r\n\t\t\t\t\t\tfilterFields.splice(filterFields.indexOf(this.field), 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfilterArray.splice(filterArray.indexOf(this), 1);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// If we are forcing deletion, just go ahead and remove it\r\n\t\t\t\tif (forceDelete) {\r\n\t\t\t\t\tremoveFilter();\r\n\t\t\t\t\tupdateTableData();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If we're not forcing deletion, prompt the user\r\n\t\t\t\telse {\r\n\t\t\t\t\tconst dialogBox = dialog.open(DeleteRowDialogComponent, {\r\n\t\t\t\t\t\tdisableClose: true,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tmessage: 'This will delete ' + this.field.DisplayName + ' from the filter.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tconst subscription = dialogBox.afterClosed().subscribe(result => {\r\n\t\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\t\tremoveFilter();\r\n\t\t\t\t\t\t\tupdateTableData();\r\n if (callback) {\r\n callback();\r\n }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsubscription.unsubscribe();\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// If there are multiple filters for the field, remove it from the field and this component\r\n\t\t\telse {\r\n\t\t\t\tthis.field.Filters.splice(this.field.Filters.indexOf(this), 1);\r\n\t\t\t\tfilterArray.splice(filterArray.indexOf(this), 1);\r\n\t\t\t\tupdateTableData();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If there isn't a field, then we just remove it from this component\r\n\t\telse {\r\n\t\t\tfilterArray.splice(filterArray.indexOf(this), 1);\r\n\t\t\tupdateTableData();\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\"Insufficient\r\n\t\t \r\n\t\r\n\t\r\n\t\t{{field.DisplayName}}\r\n\t\t\r\n\t\t\t [{{field.Alias}}]\r\n\t\t\t\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\t\r\n\t\t\r\n\t\t\t {{field.CategoryName}}\r\n\t\t\r\n\t\t\r\n\t\t\t {{field.ObjectName}}\r\n\t\t\r\n\t\t\r\n\t
\r\n\t\t\t\"Editable\r\n\t
\r\n
\r\n\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {DataQueryService} from '../data-query.service';\r\nimport {DataQueryPreferences} from '../../../shared-components/user-preferences/data-query-preferences.model';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {DataQueryField} from '../data-query-field.model';\r\nimport {DataQuery} from '../data-query.model';\r\nimport {LoginService} from '../../../shared-modules/login/login.service';\r\nimport { SecurityService } from '../../../shared-components/security/security.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n\tselector: 'data-query-field-label',\r\n\ttemplateUrl: './data-query-field-label.component.html',\r\n\tstyleUrls: ['./data-query-field-label.component.css']\r\n})\r\nexport class DataQueryFieldLabelComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\tpreferences: DataQueryPreferences;\r\n\tcurrentQuery: DataQuery;\r\n\tV10: boolean;\r\n\t@Input() field: DataQueryField;\r\n\t@Input() editable = false;\r\n\t@Input() fieldId = 'columnNameField';\r\n\tenableMassUpdate = false;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dataQueryService: DataQueryService,\r\n\t\tprivate loginService: LoginService,\r\n\t\tprivate securityService : SecurityService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: performs initialization\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\t\tthis.enableMassUpdate = this.dataQueryService.enableMassUpdate;\r\n\r\n\t\t// Syncing data\r\n\t\tthis.dataQueryService.observablePreferencesStream$.subscribe(preferences => {\r\n\t\t\tthis.preferences = preferences;\r\n\t\t});\r\n\t\tthis.dataQueryService.observableCurrentQueryStream$.subscribe(currentQuery => {\r\n\t\t\tthis.currentQuery = currentQuery;\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// NOTE: implemented for @AutoUnsubscribe\r\n\t}\r\n\r\n\t// Methods\r\n\tambiguous(field: DataQueryField): boolean {\r\n\t\tlet ambiguous = false;\r\n\t\tfor (let i = 0; i < this.currentQuery.reportFields.length; i++) {\r\n\t\t\tif (this.currentQuery.reportFields[i].DisplayName == field.DisplayName && this.currentQuery.reportFields[i] != field) {\r\n\t\t\t\tambiguous = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ambiguous;\r\n\t}\r\n\r\n\tcheckDisabledField(field: DataQueryField): boolean {\r\n\t\treturn this.dataQueryService.checkDisabledField(field);\r\n\t}\r\n}\r\n","import { DataQueryObject } from './data-query-object.model';\r\nimport { DataQueryCategory } from './data-query-category.model';\r\nimport { DataQueryFieldFilter } from './data-query-field-filter.model';\r\nimport { DataQueryTransformationField } from './data-query-transformation-field.model';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { ElementRef } from '@angular/core';\r\nimport { Lookup } from '../../shared-components/lookup/lookup.model';\r\n\r\nexport class DataQueryField {\r\n\r\n\t// Server Properties\r\n\tAlias: string;\r\n\tBreak: string;\r\n\tCategoryID: number;\r\n\tCategoryName: string;\r\n\tColumnName: string;\r\n\tConstantValue: string;\r\n\tDataType: string;\r\n\tDeleted: boolean;\r\n\tDisplayName: string;\r\n\tEditable: boolean;\r\n\tField: string;\r\n\tFieldName: string;\r\n\tFilterType: number;\r\n\tFilters: DataQueryFieldFilter[] = [];\r\n\tFunctionText: string;\r\n\tID: number;\r\n\tIsCalculated: boolean;\r\n\tIsConstant: boolean;\r\n\tIsDefaultFilterField: boolean;\r\n\tIsDefaultStudentSearchFilter: boolean;\r\n\tIsDefaultCourseSearchFilter: boolean;\r\n\tIsDuplicate: boolean;\r\n\tIsStudentFilter: boolean;\r\n\tIsCourseFilter: boolean;\r\n\tIsTransErrorOpen: boolean;\r\n\tLookupIDColumnName: string;\r\n\tLookupTableName: string;\r\n\tLookupValueColumnName: string;\r\n\tLookupFilter: string;\r\n\tLookupProcedure: string;\r\n\tLookupParams: string;\r\n\tObjectName: string;\r\n\tPermission: string;\r\n\tPreviewData = '';\r\n\tSQLColumnName: string;\r\n\tSQLTableName: string;\r\n\tShowOnReport: boolean;\r\n\tSortDirection: string;\r\n SortOrder = -1;\r\n SortByDefault: boolean;\r\n\tStudentFilterId: number;\r\n\tCourseFilterId: number;\r\n\tTransformationFields: DataQueryTransformationField[] = [];\r\n\tTransformationFunction: string;\r\n\tVisible: boolean;\r\n\tIncludeInResults: boolean;\r\n\tShowTimeForDates: boolean;\r\n\tUserDefinedTabId: number;\r\n\tFieldSize: number;\r\n\t// For Mass Edit\r\n\tFilterOptions: Lookup[] = [];\r\n\t// -------Used for editable custom layouts --------//\r\n\tValue: any;\r\n\tCustomLayoutFieldId: number;\r\n\tTemplateRef: ElementRef;\r\n\tRequired: boolean;\r\n\t// ------- end Used for editable custom layouts --------//\r\n\r\n\t// Local Properties\r\n\tprivate _functionErrors: string[] = [];\r\n\tprivate _object: DataQueryObject;\r\n\tprivate _category: DataQueryCategory;\r\n\terrors: ErrorList[] = [];\r\n\r\n\t// Class Functions\r\n\tget nestedName(): string {\r\n\t\treturn this.ObjectName + '.' + this.CategoryName + '.' + this.FieldName;\r\n\t}\r\n\r\n\tget FunctionError() {\r\n\t\treturn this._functionErrors;\r\n\t}\r\n\r\n\tset FunctionError(value: string[]) {\r\n\t\tthis._functionErrors = value;\r\n\t\tif (!value || value.length == 0) {\r\n\t\t\tthis.errors = [];\r\n\t\t}\r\n\t}\r\n\r\n\tget object(): DataQueryObject {\r\n\t\treturn this._object;\r\n\t}\r\n\r\n\tset object(value: DataQueryObject) {\r\n\t\tthis._object = value;\r\n\t\tif (value) {\r\n\t\t\tthis.ObjectName = value.ObjectName;\r\n\t\t}\r\n\t}\r\n\r\n\tget category(): DataQueryCategory {\r\n\t\treturn this._category;\r\n\t}\r\n\r\n\tset category(value: DataQueryCategory) {\r\n\t\tthis._category = value;\r\n\t\tif (value) {\r\n\t\t\tthis.CategoryName = value.CategoryName;\r\n\t\t}\r\n\t}\r\n\r\n\t// Methods\r\n\tduplicate() {\r\n\t\t// POST: returns a duplicate of this object\r\n\t\tconst newField = new DataQueryField();\r\n\t\tObject.assign(newField, this);\r\n\t\tnewField.Filters = [];\r\n\t\tthis.Filters.forEach(filter => {\r\n\t\t\tnewField.Filters.push(filter.duplicate(newField));\r\n\t\t});\r\n\t\treturn newField;\r\n\t}\r\n\r\n\taddFunctionError(error: string, reference?: ElementRef) {\r\n\t\t// POST: Adds the error to the FunctionErrors and also composes an ErrorList object\r\n\t\tthis.FunctionError.push(error);\r\n\t\tthis.errors.push({\r\n\t\t\tfieldName: '',\r\n\t\t\terrorMsg: error,\r\n\t\t\tfieldRef: reference\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-group-condition-info-dialog',\r\n templateUrl: './group-condition-info-dialog.component.html'\r\n})\r\nexport class GroupConditionInfoDialogComponent implements OnInit {\r\n\r\n constructor(\r\n private dialogBox: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeClick() {\r\n\t\t this.dialogBox.close();\r\n\t}\r\n}\r\n","\r\n

\r\n\tGroups\r\n

\r\n\r\n\r\n\r\n\tRows with the same group letter are joined with AND.\r\n\t
\r\n\t
\r\n\tRows with different group letters are joined with OR.\r\n
\r\n\r\n\r\n\r\n\t\r\n","\r\n\r\n\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Field\r\n \r\n \r\n \r\n \r\n {{filter.field.Alias}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Operator\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{operator}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n =\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Value\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n  and \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Yes\r\n \r\n \r\n \r\n No\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n (Current\r\n )\r\n \r\n
\r\n\r\n \r\n  and \r\n\r\n \r\n
\r\n \r\n \r\n \r\n (\r\n Current\r\n )\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{option.Code}}\r\n {{option.Code && option.CodeDescription ? ' - ' : ''}}\r\n {{option.CodeDescription}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{option.Code}}\r\n \r\n \r\n \r\n \r\n\r\n {{filter.Value}}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n Apply to All Groups\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Group\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n","import {\r\n\tChangeDetectorRef,\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 { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\nimport { DataQueryFieldFilter } from '../../data-query-field-filter.model';\r\nimport { DataQueryService } from '../../data-query.service';\r\nimport { DataQueryField } from '../../data-query-field.model';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MenuItem } from '../../../../shared-components/controls/menus/menu-item.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subscription } from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport { GroupConditionInfoDialogComponent } from '../group-condition-info-dialog/group-condition-info-dialog.component';\r\n\r\n@Component({\r\n\tselector: 'data-query-filter-table',\r\n\ttemplateUrl: './data-query-filter-table.component.html',\r\n\tstyleUrls: ['./data-query-filter-table.component.css']\r\n})\r\nexport class DataQueryFilterTableComponent implements OnInit, OnDestroy {\r\n\r\n\t// Interface Properties\r\n\t@Input() forStudentSearch = false;\r\n\t@Input() forCourseSearch = false;\r\n\t@Input() forStaffSearch = false;\r\n\t@Input() queryFilterFields: DataQueryField[] = [];\r\n\t@Output() filtersChange = new EventEmitter();\r\n\r\n\t// Properties\r\n\tprivate _filters: DataQueryFieldFilter[] = [];\r\n\tV10: boolean;\r\n\tsubscriptions: Subscription[] = [];\r\n\t@ViewChild('validationTrigger', { read: ElementRef, static: true }) validationTrigger: ElementRef;\r\n\r\n\t// Table Properties\r\n\ttableData = new TylerMatTableDataSource();\r\n\tcolumns = [\r\n\t\t'field',\r\n\t\t'operator',\r\n\t\t'value',\r\n\t\t'apply-to-all-groups',\r\n\t\t'group',\r\n\t\t'actions'\r\n\t];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dataQueryService: DataQueryService,\r\n\t\tprivate loginService: LoginService,\r\n\t\tprivate changeDetector: ChangeDetectorRef,\r\n\t\tprivate dialog: MatDialog\r\n\t) { }\r\n\r\n\tget filters(): DataQueryFieldFilter[] {\r\n\t\treturn this._filters;\r\n\t}\r\n\r\n\t@Input() set filters(value: DataQueryFieldFilter[]) {\r\n\t\tthis._filters = value;\r\n\t\tthis.tableData.data = value.filter(x => !x.hidden);\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\r\n\t\t// Resetting the query (because we want to, I guess???)\r\n\r\n\t\t// Setting initial properties\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\t\tif (this.forStudentSearch || this.forCourseSearch || this.forStaffSearch) {\r\n\t\t\tthis.columns.unshift('selector');\r\n\t\t\tthis.columns.splice(this.columns.indexOf('apply-to-all-groups'), 1);\r\n\t\t}\r\n\r\n\t\t// Triggering validation for initial errors\r\n\t\tthis.validationTrigger.nativeElement.click();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subscriptions.forEach(subscription => {\r\n\t\t\tsubscription.unsubscribe();\r\n\t\t});\r\n\t}\r\n\r\n\tmenuItemClick(item: MenuItem) {\r\n\t\t// PRE: an item that contains the filter that was selected and what option was selected\r\n\t\t// POST: performs the proper action\r\n\r\n\t\t// Ensuring we have a filter\r\n\t\tconst filter: DataQueryFieldFilter = item.data;\r\n\t\tif (!filter) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Performing the proper action\r\n\t\tswitch (item.itemName) {\r\n\r\n\t\t\t// Duplicating the field\r\n\t\t\tcase 'Duplicate':\r\n\r\n\t\t\t\t// Creating the new filter\r\n\t\t\t\tconst newFilter = new DataQueryFieldFilter();\r\n\t\t\t\tObject.assign(newFilter, filter);\r\n\t\t\t\tif (filter.field && filter.field.Filters) {\r\n\t\t\t\t\tfilter.field.Filters.push(newFilter);\r\n\t\t\t\t}\r\n\t\t\t\tnewFilter.FilterID = DataQueryService.filterFieldId;\r\n\t\t\t\tDataQueryService.filterFieldId += 1;\r\n\r\n\t\t\t\t// Adding the filter\r\n\t\t\t\tconst indexOfFilter = this.filters.indexOf(filter);\r\n\t\t\t\tthis.filters.splice(indexOfFilter, 0, newFilter);\r\n\t\t\t\tthis.tableData.data = this.filters;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Deleting it\r\n\t\t\tcase 'Delete':\r\n\t\t\t\tif (this.V10 == false) {\r\n\t\t\t\t\tif (this.queryFilterFields != undefined && this.queryFilterFields.length > 0) {\r\n\t\t\t\t\t\tthis.queryFilterFields.forEach(queryFilterField => {\r\n\t\t\t\t\t\t\tif (queryFilterField.FieldName == 'StudentsActivelyEnrolledTodayInClass') {\r\n\t\t\t\t\t\t\t\tqueryFilterField.Filters.forEach(queryFilter => {\r\n\t\t\t\t\t\t\t\t\tif (queryFilter.Value2.toString() == item.data.Value2.toString()) {\r\n\t\t\t\t\t\t\t\t\t\tconst siteSections = this.dataQueryService.currentQuery.siteSectionId.toString().split(',');\r\n\t\t\t\t\t\t\t\t\t\tconst idx = _.indexOf(siteSections, item.data.Value2.toString());\r\n\t\t\t\t\t\t\t\t\t\tif (idx > -1) {\r\n\t\t\t\t\t\t\t\t\t\t\tsiteSections.splice(idx, 1);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tthis.dataQueryService.currentQuery.siteSectionId = '';\r\n\t\t\t\t\t\t\t\t\t\tsiteSections.forEach(siteSection => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.dataQueryService.currentQuery.siteSectionId = this.dataQueryService.currentQuery.siteSectionId + (this.dataQueryService.currentQuery.siteSectionId.toString().length == 0 ? '' : ',') + siteSection;\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\tfilter.delete(\r\n\t\t\t\t\tthis.dialog,\r\n\t\t\t\t\tthis.filters,\r\n\t\t\t\t\tthis.queryFilterFields,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tthis.tableData,\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.dataQueryService.updateFilter();\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Expanding the filter\r\n\t\t\tcase 'Expand':\r\n\t\t\t\t// TODO\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Default just does nothing (maybe we should show an error here?)\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// Updating the filter translation and the table\r\n\t\tthis.changeDetector.detectChanges();\t// We do this to prevent an expression changed error\r\n\t\tthis.filtersChange.emit(this.filters);\r\n\t\tthis.dataQueryService.updateFilter();\r\n\t\tthis.dataQueryService.currentQuery.queryChanged = true;\r\n\t}\r\n\r\n\t// Local Methods\r\n\tdisableOptions(filter: DataQueryFieldFilter, isOperator: boolean) {\r\n\t\t// PRE: a field to check if the options can be edits\r\n\t\t// POST: returns true if the dropdowns should be disabled\r\n\t\treturn filter.field.FieldName == DataQueryFieldFilter.courseFilterFieldName\r\n\t\t\t|| (this.V10 == true && isOperator == true && filter.field.FieldName == DataQueryFieldFilter.enrollmentFilterFieldName)\r\n\t\t\t|| (this.V10 == false && isOperator == true && filter.field.FieldName == DataQueryFieldFilter.enrollmentFilterFieldName)\r\n\t\t\t|| filter.IsStudentFilter\r\n\t\t\t|| filter.IsCourseFilter\r\n\t\t\t|| filter.disableEdit\r\n\t\t\t|| filter.field.FieldName == DataQueryFieldFilter.studentListFilterFieldName\r\n\t\t\t|| filter.field.FieldName == DataQueryFieldFilter.studentTeamFilterFieldName;\r\n\t}\r\n\r\n\tsetCurrentDate1(filter: DataQueryFieldFilter) {\r\n\t\tfilter.dateValue = new Date();\r\n\t}\r\n\r\n\tsetCurrentDate2(filter: DataQueryFieldFilter) {\r\n\t\tfilter.dateValue2 = new Date();\r\n\t}\r\n\r\n\t// Service Methods\r\n\tcheckDisabledField(field: DataQueryField) {\r\n\t\treturn this.dataQueryService.checkDisabledField(field);\r\n\t}\r\n\r\n\tupdateFilter(filter: DataQueryFieldFilter, filterField: string, updatedValue: any, field = null) {\r\n\t\tif (filter[filterField] != updatedValue) {\r\n\t\t\tif (updatedValue) {\r\n\t\t\t\tif (this.dataQueryService.isStudentSearch) {\r\n\t\t\t\t\tfilter.UseFilterForStudentSearch = true;\r\n\t\t\t\t\tfilter.UseFilterForCourseSearch = false;\r\n\t\t\t\t\tfilter.UseFilterForStaffSearch = false;\r\n\t\t\t\t} else if (this.dataQueryService.isCourseSearch) {\r\n\t\t\t\t\tfilter.UseFilterForStudentSearch = false;\r\n\t\t\t\t\tfilter.UseFilterForCourseSearch = true;\r\n\t\t\t\t\tfilter.UseFilterForStaffSearch = false;\r\n\t\t\t\t} else if (this.dataQueryService.isStaffSearch) {\r\n\t\t\t\t\tfilter.UseFilterForStudentSearch = false;\r\n\t\t\t\t\tfilter.UseFilterForCourseSearch = false;\r\n\t\t\t\t\tfilter.UseFilterForStaffSearch = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfilter[filterField] = updatedValue;\r\n\t\t\tthis.dataQueryService.updateFilter(filter, field);\r\n\t\t\tthis.dataQueryService.currentQuery.queryChanged = true;\r\n\t\t}\r\n\r\n\t\tif (filter.field.Alias == 'Enrollment Date' && (updatedValue == 'Is Not Blank' || updatedValue == 'Is Blank')) {\r\n\t\t\tfilter.dateValue = null;\r\n\t\t\tfilter.dateValue2 = null;\r\n\t\t\tfilter.UseCurrentDate1 = false;\r\n\t\t\tfilter.UseCurrentDate2 = false;\r\n\t\t}\r\n\r\n\t\tif (filter.field.Alias == 'Birth Date' && (updatedValue == 'Is Not Blank' || updatedValue == 'Is Blank')) {\r\n\t\t\tfilter.dateValue = null;\r\n\t\t\tfilter.dateValue2 = null;\r\n\t\t\tfilter.UseCurrentDate1 = false;\r\n\t\t\tfilter.UseCurrentDate2 = false;\r\n\t\t}\r\n\t}\r\n\r\n\topenGroupMsgClick() {\r\n\t\tthis.dialog.open(GroupConditionInfoDialogComponent, {\r\n\t\t\tdisableClose: true\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","export class FieldAutofillOption {\r\n\tdisplayString: string;\r\n\tapplyString: string;\r\n}","import {DataQueryCategory} from './data-query-category.model';\r\nimport {DataQueryField} from './data-query-field.model';\r\nimport {DataQueryObject} from './data-query-object.model';\r\nimport {DataQuery} from './data-query.model';\r\nimport {System} from '../../shared-components/System';\r\nimport {NestedData} from '../../shared-components/virtualized-table/nested-data';\r\nimport {FieldAutofillOption} from './field-search/field-autofill-option';\r\nexport class DataQueryInformation {\r\n\r\n // Static Properties\r\n static virtualizedTableColumns = {\r\n 'field': ['data'],\r\n 'category': ['more', 'data'],\r\n 'object': ['more', 'data']\r\n };\r\n\r\n // Properties\r\n categories: DataQueryCategory[] = [];\r\n fields: DataQueryField[] = [];\r\n objects: DataQueryObject[] = [];\r\n recentQueries: DataQuery[] = [];\r\n recentStudentFilters: DataQuery[] = [];\r\n recentCourseFilters: DataQuery[] = [];\r\n recentStaffFilters: DataQuery[] = [];\r\n userCategories: number[] = [];\r\n visibleInformation: DataQueryInformation;\r\n defaultQuery: DataQuery;\r\n organized = false;\r\n initialized = false;\r\n\r\n // Class Functions\r\n get visibleObjects() {\r\n // PRE: the information is organized\r\n // POST: returns the visible objects\r\n return this.objects.filter(object =>\r\n !!object.categories.find(category =>\r\n !!category.fields.find(field => field.Visible)\r\n )\r\n );\r\n }\r\n\r\n // Methods\r\n getField(searchFunction: (value: DataQueryField) => boolean) {\r\n // POST: returns a duplicate of the field specified by the search function\r\n const field = this.fields.find(searchFunction);\r\n if (field) {\r\n return field.duplicate();\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n organize() {\r\n // PRE: the categories, fields, and objects are set, and the preconditions of each organize function\r\n // POST: aligns the data such that each one references the others\r\n this.organized = true;\r\n this.organizeObjects();\r\n this.organizeCategories();\r\n this.organizeFilters();\r\n this.initialized = true;\r\n }\r\n\r\n organizeObjects() {\r\n // PRE: if an object has categories, ALL OBJECTS HAVE CATEGORIES\r\n // POST: organizes the objects with the categories\r\n let resetCategories = false;\r\n this.objects.forEach(object => {\r\n\r\n // If it is not initialized, it needs to go through the process of setting the downward references\r\n if (!this.initialized) {\r\n\r\n // If it already has categories, treat those as authoritative\r\n if (object.categories && object.categories.length > 0) {\r\n\r\n // Removing old categories because we no longer need them\r\n if (!resetCategories) {\r\n this.categories = [];\r\n resetCategories = true;\r\n }\r\n\r\n // Setting new categories\r\n for (let i = 0; i < object.categories.length; i++) {\r\n object.categories[i] = System.convert(object.categories[i], new DataQueryCategory());\r\n object.categories[i].object = object;\r\n if (!object.categories[i].ObjectName) {\r\n object.categories[i].ObjectName = object.ObjectName;\r\n }\r\n this.categories.push(object.categories[i]);\r\n }\r\n }\r\n\r\n // If it does not have categories, compose new ones\r\n else {\r\n object.categories = [];\r\n this.categories.forEach(category => {\r\n if (category.ObjectID == object.ID) {\r\n object.categories.push(category);\r\n category.object = object;\r\n if (!category.ObjectName) {\r\n category.ObjectName = object.ObjectName;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // If it is initialized, it just needs to reset the upward references\r\n else {\r\n object.categories.forEach(category => {\r\n category.object = object;\r\n });\r\n }\r\n });\r\n }\r\n\r\n organizeCategories() {\r\n // PRE: if an category has fields, ALL CATEGORIES HAVE FIELDS\r\n // POST: organizes the categories with the fields\r\n let resetFields = false;\r\n this.categories.forEach(category => {\r\n\r\n // If it is not initialized, it needs to compose the downward references\r\n if (!this.initialized) {\r\n\r\n // If it has fields, treat those as authoritative\r\n if (category.fields && category.fields.length > 0) {\r\n\r\n // Removing fields because we no longer need them\r\n if (!resetFields) {\r\n this.fields = [];\r\n resetFields = true;\r\n }\r\n\r\n // Setting the new fields\r\n for (let i = 0; i < category.fields.length; i++) {\r\n category.fields[i] = System.convert(category.fields[i], new DataQueryField());\r\n category.fields[i].category = category;\r\n category.fields[i].object = category.object;\r\n if (!category.fields[i].CategoryName) {\r\n category.fields[i].CategoryName = category.CategoryName;\r\n }\r\n if (!category.fields[i].ObjectName) {\r\n category.fields[i].ObjectName = category.ObjectName;\r\n }\r\n this.fields.push(category.fields[i]);\r\n }\r\n }\r\n\r\n // If it does not have fields, compose new ones\r\n else {\r\n category.fields = [];\r\n category.isUserCategory = this.userCategories.length == 0 || this.userCategories.includes(category.ID);\r\n this.fields.forEach(field => {\r\n if (field.CategoryID == category.ID && field.UserDefinedTabId == category.UserDefinedTabId) {\r\n category.fields.push(field);\r\n field.category = category;\r\n field.object = category.object;\r\n if (!field.CategoryName) {\r\n field.CategoryName = category.CategoryName;\r\n }\r\n if (!field.ObjectName) {\r\n field.ObjectName = category.ObjectName;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // If it is initialized, it just needs to set the upward references\r\n else {\r\n category.fields.forEach(field => {\r\n field.category = category;\r\n field.object = category.object;\r\n });\r\n }\r\n });\r\n }\r\n\r\n organizeFilters() {\r\n // POST: organizes the filters with the fields\r\n this.fields.forEach(field => {\r\n field.Filters = [];\r\n if (field.Filters) {\r\n field.Filters.forEach(filter => {\r\n filter.field = field;\r\n });\r\n }\r\n });\r\n }\r\n\r\n disorganize() {\r\n // POST: resets data to its unaligned state\r\n // NOTE: maintains a downward hierarchy\r\n this.organized = false;\r\n\r\n // Disorganizing objects\r\n this.objects.forEach(object => {\r\n // delete object.categories;\r\n });\r\n\r\n // Disorganizing categories\r\n this.categories.forEach(category => {\r\n // delete category.fields;\r\n delete category.object;\r\n });\r\n\r\n // Disorganizing fields\r\n this.fields.forEach(field => {\r\n delete field.object;\r\n delete field.category;\r\n if (field.Filters) {\r\n field.Filters.forEach(filter => {\r\n delete filter.field;\r\n });\r\n }\r\n });\r\n }\r\n\r\n getVisible (V10, searchString = '', changed = false): DataQueryInformation {\r\n // PRE: V10. Optionally, a search string and whether or not the data has been changed\r\n // POST: returns this data structure panelFiltered for all of the non-visible fields\r\n\r\n // Returning the visible information if it's there\r\n if (this.visibleInformation && !searchString && !changed) {\r\n return this.visibleInformation;\r\n }\r\n\r\n // Initializing visible information\r\n this.visibleInformation = new DataQueryInformation();\r\n Object.assign(this.visibleInformation, this);\r\n\r\n // Removing categories\r\n this.categories.forEach(category => {\r\n category.isUserCategory = this.userCategories.length == 0 || this.userCategories.includes(category.ID);\r\n });\r\n this.visibleInformation.categories = this.visibleInformation.categories.filter(\r\n function(category) {\r\n return category.fields.length > 0 && !category.Deleted && category.isUserCategory;\r\n }\r\n );\r\n\r\n // Removing fields\r\n this.visibleInformation.fields = this.visibleInformation.fields.filter(\r\n function(field) {\r\n return field.Visible &&\r\n !field.Deleted &&\r\n field.DisplayName &&\r\n (!searchString || field.DisplayName.toLowerCase().indexOf(searchString.toLowerCase()) >= 0) &&\r\n (!V10 || (field.DisplayName != '(Students Actively Enrolled Today in) Class' && V10));\r\n }\r\n );\r\n\r\n // Removing objects\r\n this.visibleInformation.objects = this.visibleInformation.objects.filter(\r\n function(object) {\r\n return object.categories.length > 0 && !object.Deleted;\r\n }\r\n );\r\n\r\n // Returning information\r\n return this.visibleInformation;\r\n }\r\n\r\n virtualizedTableData(\r\n fieldSearch = '',\r\n V10 = false,\r\n allowTab = false,\r\n click = (event: MouseEvent, nestedData: NestedData) => {},\r\n keydown = (event: KeyboardEvent, nestedData: NestedData) => {},\r\n filterColumnSQL: string[] = null,\r\n filterColumnFieldName: string[] = null,\r\n disabledFields: { [fieldId: string]: boolean } = null\r\n ): NestedData[] {\r\n // PRE: the information is organized\r\n // POST: returns the nested data for a virtualized table\r\n const newTableData = [];\r\n\r\n // Obtaining our partial searches\r\n // If we have two or more, apply it as object.category.field\r\n const searchComponents = fieldSearch.split('.');\r\n const partialSearches = searchComponents.length > 1;\r\n\r\n // Filtering data\r\n this.objects.forEach(object => {\r\n\r\n // Composing nested data objects\r\n const objectRoot = new NestedData(object, null, object.ObjectName + object.ID, 'object');\r\n const objectNameMatch = object.ObjectName.toLowerCase().includes(searchComponents[0].toLowerCase());\r\n objectRoot.style = {\r\n 'background': objectNameMatch && fieldSearch ? 'lightyellow' : 'inherit'\r\n };\r\n if (!partialSearches || objectNameMatch) {\r\n object.categories.forEach(category => {\r\n\r\n // Creating the categories\r\n const categoryRoot = new NestedData(category, objectRoot, category.CategoryName + category.ID, 'category');\r\n const categoryNameMatch = searchComponents.length >= 2 ? category.CategoryName.toLowerCase().includes(searchComponents[1].toLowerCase()) : false;\r\n categoryRoot.style = {\r\n 'background': categoryNameMatch && fieldSearch ? 'lightyellow' : 'inherit'\r\n };\r\n if (\r\n (\r\n !partialSearches\r\n || (searchComponents.length < 2 || categoryNameMatch)\r\n )\r\n && (\r\n !filterColumnSQL\r\n || filterColumnSQL.length == 0\r\n || category.Fields.find(f => filterColumnSQL.map(o => o.toLowerCase()).includes(f.SQLColumnName.toLowerCase()))\r\n )\r\n && (\r\n !filterColumnFieldName\r\n || filterColumnFieldName.length == 0\r\n || category.Fields.find(f => filterColumnFieldName.map(o => o.toLowerCase()).includes(f.FieldName.toLowerCase()))\r\n )\r\n ) {\r\n category.fields.forEach(field => {\r\n\r\n // Creating fields and adding them, while also filtering for our search\r\n // NOTE: we add if either the object matches OR the field matches when no . are present\r\n let fieldNameMatch = false;\r\n if (partialSearches) {\r\n if (searchComponents.length >= 3) {\r\n fieldNameMatch = field.DisplayName.toLowerCase().includes(searchComponents[2].toLowerCase());\r\n } else {\r\n fieldNameMatch = false;\r\n }\r\n } else {\r\n fieldNameMatch = field.DisplayName.toLowerCase().includes(fieldSearch.toLowerCase());\r\n }\r\n if ((\r\n (partialSearches && (searchComponents.length < 3 || fieldNameMatch)) ||\r\n (!partialSearches && (!fieldSearch || objectNameMatch || fieldNameMatch))\r\n ) &&\r\n (!V10 || field.DisplayName != '(Students Actively Enrolled Today in) Class') &&\r\n (disabledFields ? !disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] : true) &&\r\n field.Visible\r\n ) {\r\n const fieldRoot = new NestedData(field, categoryRoot, field.DisplayName + field.ID, 'field');\r\n fieldRoot.style = {\r\n 'background': fieldNameMatch && fieldSearch ? 'lightyellow' : 'inherit'\r\n };\r\n fieldRoot.allowTab = allowTab;\r\n fieldRoot.ariaLabel = object.ObjectName + ', ' + category.CategoryName + ', ' + field.DisplayName;\r\n fieldRoot.click = click;\r\n fieldRoot.keydown = keydown;\r\n categoryRoot.children.push(fieldRoot);\r\n }\r\n });\r\n\r\n // Pushing the category if it is not empty\r\n if (categoryRoot.children.length != 0) {\r\n objectRoot.children.push(categoryRoot);\r\n }\r\n }\r\n });\r\n\r\n // Pushing the object to the table data if it is not empty or there is a name match for partial searches\r\n if (objectRoot.children.length != 0) {\r\n newTableData.push(objectRoot);\r\n }\r\n }\r\n });\r\n\r\n // Resetting the reference to trigger changes\r\n return newTableData;\r\n }\r\n\r\n getAutofillOptions(fieldSearch: string, V10 = false): FieldAutofillOption[] {\r\n // PRE: the search field for autofill\r\n // POST: obtains a list of autofill options for the field search\r\n const autofills: FieldAutofillOption[] = [];\r\n\r\n // Obtaining our partial searches\r\n // If we have two or more, apply it as object.category.field\r\n const searchComponents = fieldSearch.split('.');\r\n\r\n // Don't do any autofilling if there is a period without a letter behind it\r\n // This prevents some weirdness with '.' and '..'\r\n for (let i = 0; i < searchComponents.length; i++) {\r\n if (searchComponents[i] == '' && (i == 0 || searchComponents[i - 1] == '')) {\r\n return [];\r\n }\r\n }\r\n\r\n // Obtaining qualifying objects\r\n this.objects.forEach(object => {\r\n if (object.ObjectName.toLowerCase().includes(searchComponents[0].toLowerCase())) {\r\n\r\n // Pushing object autofills if the length is equal to 1\r\n if (searchComponents.length == 1) {\r\n const objectAutofill = new FieldAutofillOption();\r\n objectAutofill.displayString = object.ObjectName;\r\n objectAutofill.applyString = object.ObjectName;\r\n autofills.push(objectAutofill);\r\n }\r\n\r\n // Obtaining qualifying categories\r\n else {\r\n object.categories.forEach(category => {\r\n if (searchComponents.length >= 2 && category.CategoryName.toLowerCase().includes(searchComponents[1].toLowerCase())) {\r\n\r\n // Pushing category autofills if the length is equal to 2\r\n if (searchComponents.length == 2) {\r\n const categoryAutofill = new FieldAutofillOption();\r\n categoryAutofill.displayString = category.CategoryName;\r\n categoryAutofill.applyString = object.ObjectName + '.' + category.CategoryName;\r\n autofills.push(categoryAutofill);\r\n }\r\n\r\n // Obtaining qualifying fields if the length is equal to 3\r\n else {\r\n category.fields.forEach(field => {\r\n\r\n // Composing autofills for qualifying fields\r\n if (field.DisplayName.toLowerCase().includes(searchComponents[2].toLowerCase()) &&\r\n (!V10 || field.DisplayName != '(Students Actively Enrolled Today in) Class') &&\r\n field.Visible) {\r\n const fieldAutofill = new FieldAutofillOption();\r\n fieldAutofill.displayString = field.DisplayName;\r\n fieldAutofill.applyString = object.ObjectName + '.' + category.CategoryName + '.' + field.DisplayName;\r\n autofills.push(fieldAutofill);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n // Returning the discovered autofill\r\n return autofills;\r\n }\r\n}\r\n","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport {DataQuery} from '../../data-query.model';\r\nimport {DataQueryService} from '../../data-query.service';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'app-view-query-properties-dialog',\r\n\ttemplateUrl: './view-query-properties-dialog.component.html',\r\n\tstyleUrls: ['./view-query-properties-dialog.component.css']\r\n})\r\nexport class ViewQueryPropertiesDialogComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\tcurrentQuery: DataQuery;\r\n\tsubscriptions: Subscription[] = [];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\tprivate dataQueryService: DataQueryService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: syncs the current query\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.dataQueryService.observableCurrentQueryStream$.subscribe(currentQuery => {\r\n\t\t\t\tthis.currentQuery = currentQuery;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// POST: unsubscribes to all subscriptions\r\n\t\tthis.subscriptions.forEach(subscription => {\r\n\t\t\tsubscription.unsubscribe();\r\n\t\t});\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n
\r\n\tProperties of Current Query\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t{{currentQuery.QueryName}}\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t{{currentQuery.Scope}}\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t{{currentQuery.OwnerName}}\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t{{currentQuery.UpdatedOn | date: 'MM/dd/yy'}}\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t{{currentQuery.Description}}\r\n\t\t
\r\n\t
\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","import {Component, Input, OnChanges, OnInit} from '@angular/core';\r\nimport {DataQuery} from '../data-query.model';\r\nimport {DataQueryService} from '../data-query.service';\r\nimport {DataQueryPermissions} from '../data-query-permissions';\r\nimport {User} from '../../../shared-components/user/user.model';\r\nimport {UserService} from '../../../shared-components/user/user.service';\r\nimport {MenuItem} from '../../../shared-components/controls/menus/menu-item.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {ViewQueryPropertiesDialogComponent} from './view-query-properties-dialog/view-query-properties-dialog.component';\r\nimport {DataQueryInformation} from '../data-query-information';\r\nimport {Subscription} from 'rxjs';\r\nimport {ViewQueriesDialogComponent} from '../view-queries-dialog/view-queries-dialog.component';\r\nimport {System} from '../../../shared-components/System';\r\n\r\n@Component({\r\n\tselector: 'data-query-queries-button',\r\n\ttemplateUrl: './data-query-queries-button.component.html',\r\n\tstyleUrls: ['./data-query-queries-button.component.css']\r\n})\r\nexport class DataQueryQueriesButtonComponent implements OnInit, OnChanges {\r\n\r\n\t// Interface Properties\r\n\t@Input() forFilters = false;\r\n\r\n\t// Properties\r\n\tprivate _currentQuery: DataQuery;\r\n\tinformation: DataQueryInformation;\r\n\tdisabledQueryOptions: string[] = [];\r\n\tpermissions: DataQueryPermissions;\r\n\tcurrentUser: User;\r\n\tsubscriptions: Subscription[] = [];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dataQueryService: DataQueryService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate dialog: MatDialog\r\n\t) { }\r\n\r\n\tget currentQuery(): DataQuery {\r\n\t\treturn this._currentQuery;\r\n\t}\r\n\r\n\tset currentQuery(value: DataQuery) {\r\n\t\tthis.dataQueryService.checkDeactivationAndChange(value);\r\n\t}\r\n\r\n\tget overwriteOptionString(): string {\r\n\t\tlet returnString = 'Overwrite ';\r\n\t\tif (this.currentQuery && this.currentQuery.QueryName) {\r\n\t\t\treturnString += this.currentQuery.QueryName;\r\n\t\t} else {\r\n\t\t\treturnString += 'Current ' + this.menuName;\r\n\t\t}\r\n\t\treturn returnString;\r\n\t}\r\n\r\n\tget menuName(): string {\r\n\t\treturn this.forFilters ? 'Filter' : 'Query';\r\n\t}\r\n\r\n\tget menuNamePlural(): string {\r\n\t\treturn this.forFilters ? 'Filters' : 'Queries';\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: initializes the data\r\n\r\n\t\t// Initializing data members\r\n\t\tthis.currentUser = this.userService.currentUser;\r\n\r\n\t\t// Maintaining the current query\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.dataQueryService.observableCurrentQueryStream$.subscribe(currentQuery => {\r\n\t\t\t\tthis._currentQuery = currentQuery;\r\n\r\n\t\t\t\t// Checking permissions of the query\r\n\t\t\t\tthis.checkPermissions();\r\n\t\t\t}),\r\n\t\t\tthis.dataQueryService.observableInformationStream$.subscribe(information => {\r\n\t\t\t\tthis.information = information;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t\t// POST: rechecks the permissions\r\n\t\tthis.checkPermissions();\r\n\t}\r\n\r\n\tmenuClick(menuItem: MenuItem) {\r\n\t\t// PRE: a menu button is clicked\r\n\t\t// POST: performs the appropriate action\r\n\t\tswitch (menuItem.itemName) {\r\n\r\n\t\t\t// New Query loads a new query\r\n\t\t\tcase 'New ' + this.menuName:\r\n\t\t\t\tthis.currentQuery = new DataQuery();\r\n\t\t\t\tthis.dataQueryService.currentlyActiveStudentsOnly = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Import Query opens the import dialog\r\n\t\t\tcase 'Import ' + this.menuName:\r\n\t\t\t\tthis.dataQueryService.openAddEditQuery(new DataQuery(), false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Overwrite query saves the current query\r\n\t\t\tcase this.overwriteOptionString:\r\n\t\t\t\tthis.dataQueryService.saveQuery(this.currentQuery, () => {});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Save as new query opens the save dialog\r\n\t\t\tcase 'Save As New ' + this.menuName:\r\n\t\t\t if (this.dataQueryService.isStudentSearch) {\r\n this.currentQuery.StudentSearch = this.forFilters;\r\n } else if (this.dataQueryService.isCourseSearch) {\r\n this.currentQuery.CourseSearch = this.forFilters;\r\n\t\t\t } else if (this.dataQueryService.isStaffSearch) {\r\n this.currentQuery.StaffSearch = this.forFilters;\r\n }\r\n\t\t\t\tthis.dataQueryService.openAddEditQuery(\r\n\t\t\t\t\tthis.currentQuery,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\t() => {}\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Save as My Defaults sets up a default query and saves it\r\n\t\t\tcase 'Save As My Default':\r\n\t\t\t\tconst query = new DataQuery();\r\n\t\t\t\tObject.assign(query, this.currentQuery);\r\n query.SavedFromID = query.ID;\r\n\t\t\t\tquery.ID = -1;\r\n\t\t\t\tquery.QueryName = 'My Defaults';\r\n\t\t\t\tquery.Description = this.currentQuery.Description;\r\n\t\t\t\tquery.OwnerID = this.userService.currentUser.Id;\r\n\t\t\t\tquery.Scope = 'Private';\r\n\t\t\t\tquery.SelectedSites = this.currentQuery.SelectedSites;\r\n\t\t\t\tquery.Deleted = false;\r\n\t\t\t\tquery.StudentSearch = false;\t// $scope.isStudentSearch\r\n\t\t\t\tthis.dataQueryService.saveQuery(query, () => {\r\n\t\t\t\t\tquery.QueryName = 'My Default';\t\t\t// It's supposed to 'My Defaults' on the server, but it's 'My Default' on the client\r\n\t\t\t\t\tthis.dataQueryService.currentQuery = query;\r\n\t\t\t\t\tthis.information.defaultQuery = query;\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Opens the properties dialog for viewing\r\n\t\t\tcase 'View Properties of Current ' + this.menuName:\r\n\t\t\t\tthis.dialog.open(ViewQueryPropertiesDialogComponent, {\r\n\t\t\t\t\tdisableClose: true\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Opens a dialog to view all the save queries\r\n\t\t\tcase 'View Saved ' + this.menuNamePlural:\r\n\t\t\t\tconst dialogBox = this.dialog.open(ViewQueriesDialogComponent, {\r\n\t\t\t\t\tdisableClose: true\r\n\t\t\t\t});\r\n\t\t\t\tthis.subscriptions.push(\r\n\t\t\t\t\tdialogBox.afterClosed().subscribe(selectedQuery => {\r\n\t\t\t\t\t\tif (selectedQuery) {\r\n\t\t\t\t\t\t\tconst convertedQuery = System.convert(selectedQuery, new DataQuery());\r\n\t\t\t\t\t\t\tlet recents: DataQuery[] = [];\r\n\t\t\t\t\t\t\tif (this.forFilters) {\r\n recents = this.dataQueryService.recentQueriesInContext;\r\n } else {\r\n\t\t\t\t\t\t\t recents = this.information.recentQueries;\r\n }\r\n\t\t\t\t\t\t\tif (recents) {\r\n\t\t\t\t\t\t\t\tfor (let i = 0; i < recents.length; i++) {\r\n\t\t\t\t\t\t\t\t\tif (recents[i].ID == convertedQuery.ID) {\r\n\t\t\t\t\t\t\t\t\t\trecents[i] = convertedQuery;\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\tthis.currentQuery = convertedQuery;\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\tbreak;\r\n\r\n\t\t\t// Defaults to nothing\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Methods\r\n\tmenuItems(): string[] {\r\n\t\t// POST: obtains the menu items\r\n\t\tconst menuItems = [\r\n\t\t\t'New ' + this.menuName,\r\n\t\t\tthis.overwriteOptionString,\r\n\t\t\t'Save As New ' + this.menuName,\r\n\t\t\t'View Saved ' + this.menuNamePlural\r\n\t\t];\r\n\t\tif (!this.forFilters) {\r\n\t\t\tmenuItems.splice(1, 0, 'Import ' + this.menuName);\r\n\t\t\tmenuItems.splice(4, 0, 'Save As My Default');\r\n\t\t\tmenuItems.splice(5, 0, 'View Properties of Current ' + this.menuName);\r\n\t\t}\r\n\t\treturn menuItems;\r\n\t}\r\n\r\n\tcheckPermissions() {\r\n\t\tthis.disabledQueryOptions = [];\r\n\t\tthis.dataQueryService.getPermissions().subscribe(permissions => {\r\n\t\t\tthis.permissions = permissions;\r\n\r\n\t\t\t// Checking if user can import query\r\n\t\t\tif (\r\n\t\t\t\t!this.permissions.canUserCreatePrivateQuery &&\r\n\t\t\t\t!this.permissions.canUserCreateSchoolQuery &&\r\n\t\t\t\t!this.permissions.canUserCreateDistrictQuery\r\n\t\t\t) {\r\n\t\t\t\tthis.disabledQueryOptions.push('Import Query');\r\n\t\t\t}\r\n\r\n\t\t\t// Checking if user can overwrite query\r\n\t\t\tif (!this.dataQueryService.checkUserCanOverwriteQuery() || (this.currentQuery && this.currentQuery.ID < 0)) {\r\n\t\t\t\tthis.disabledQueryOptions.push(this.overwriteOptionString);\r\n\t\t\t}\r\n\r\n\t\t\t// Check if user can save as a new query\r\n\t\t\tif (\r\n\t\t\t\t!this.permissions.canUserCreatePrivateQuery &&\r\n\t\t\t\t!this.permissions.canUserCreateSchoolQuery &&\r\n\t\t\t\t!this.permissions.canUserCreateDistrictQuery\r\n\t\t\t) {\r\n\t\t\t\tthis.disabledQueryOptions.push('Save As New Query');\r\n\t\t\t}\r\n\r\n\t\t\t// Check if user can save as default\r\n\t\t\tif (!this.permissions.canUserCreatePrivateQuery) {\r\n\t\t\t\tthis.disabledQueryOptions.push('Save As My Default');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","","import {DataQueryResult} from './data-query-result.model';\r\n\r\nexport class DataQueryResultPage {\r\n\r\n\t// Static Properties\r\n\tstatic pageSizeOptions = [\r\n\t\t10,\r\n\t\t20,\r\n\t\t30,\r\n\t\t40,\r\n\t\t50,\r\n\t\t60,\r\n\t\t70,\r\n\t\t80,\r\n\t\t90,\r\n\t\t100,\r\n\t\t500,\r\n\t\t1000\r\n\t];\r\n\r\n\t// Properties\r\n\tpageNumber: number;\r\n\tqueryResult: DataQueryResult;\r\n}\r\n","import { DataQueryField } from './data-query-field.model';\r\nimport * as _ from 'lodash';\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\n\r\nexport class DataQueryResult {\r\n\r\n // Server Properties\r\n Columns: DataQueryField[] = [];\r\n Data: any[][] = [];\r\n Errors: string;\r\n QueryString: string;\r\n RecordCounts: number;\r\n\r\n // Local Properties\r\n get ColumnHeaders(): string[] {\r\n let header: string[] = [];\r\n for (let i = 0; i < this.Columns.length; i++) {\r\n const alias = this.Columns[i].Alias != \"\" ? this.Columns[i].Alias : (\"blankheader\" + i);\r\n header.push(alias);\r\n }\r\n return header;\r\n // return this.Columns.map(o => o.Alias);\r\n }\r\n\r\n // Methods\r\n assertOrder(otherResults: DataQueryResult) {\r\n // PRE: another set of results with the same columns\r\n // POST: asserts this results order on that result set\r\n const columnOrder: number[] = [];\r\n otherResults.Columns.forEach(column => {\r\n const index = this.Columns.findIndex(o => _.isEqual(column, o));\r\n columnOrder.push(index);\r\n });\r\n const newColumns: DataQueryField[] = [];\r\n for (let i = 0; i < otherResults.Columns.length; i++) {\r\n newColumns[columnOrder[i]] = otherResults.Columns[i];\r\n }\r\n otherResults.Columns = newColumns;\r\n const newData: any[][] = [];\r\n otherResults.Data.forEach(dataRow => {\r\n const newDataRow: any[] = [];\r\n for (let j = 0; j < dataRow.length; j++) {\r\n newDataRow[columnOrder[j]] = dataRow[j];\r\n }\r\n newData.push(newDataRow);\r\n });\r\n otherResults.Data = newData;\r\n }\r\n\r\n reorder(indexA, indexB) {\r\n // PRE: moves the item from index A to index B, pushing \"out\" all the others\r\n // POST: switches the indexes on all results\r\n\r\n // Gathering excluded columns\r\n const excludedColumnAliases = ['lngStudentId', 'MassTools'];\r\n excludedColumnAliases.forEach(columnAlias => {\r\n const index = this.Columns.findIndex(column => column.Alias == columnAlias);\r\n if (index >= 0) {\r\n if (indexA >= index) {\r\n indexA += 1;\r\n }\r\n if (indexB >= index) {\r\n indexB += 1;\r\n }\r\n }\r\n });\r\n\r\n // Column Swap\r\n moveItemInArray(this.Columns, indexA, indexB);\r\n\r\n // Data Swap\r\n for (let i = 0; i < this.Data.length; i++) {\r\n moveItemInArray(this.Data[i], indexA, indexB);\r\n }\r\n }\r\n}\r\n","\r\n
\r\n\t\r\n\tInsert Field\r\n\tSelect Field\t \r\n\t\r\n\t\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\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\r\n\r\n\r\n\r\n\t\r\n\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\tMore\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tField\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tCategory\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tObject\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\t\r\n\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\t\r\n\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\t\t\t\t{{datum.data.CategoryName}}\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{datum.data.ObjectName}}\r\n\t\t\t\r\n\t\t\r\n\t\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { DataQueryInformation } from '../../data-query-information';\r\nimport { Subscription } from 'rxjs';\r\nimport { NestedData } from '../../../../shared-components/virtualized-table/nested-data';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataQueryField } from '../../data-query-field.model';\r\n\r\n@Component({\r\n\tselector: 'app-insert-field-dialog',\r\n\ttemplateUrl: './insert-field-dialog.component.html',\r\n\tstyleUrls: [\r\n\t\t'./insert-field-dialog.component.css',\r\n\t\t'../../data-query-shared-style.css',\r\n\t\t'../../virtualized-table.css'\r\n\t]\r\n})\r\nexport class InsertFieldDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\tinformation: DataQueryInformation;\r\n\tisStudentSearch: boolean;\r\n\tisCourseSearch: boolean;\r\n\tisStaffSearch: boolean;\r\n\tcallByEform: boolean;\r\n\tdisabledFields: { [fieldId: string]: boolean } = null;\r\n\r\n\t// Properties\r\n\tsubscriptions: Subscription[] = [];\r\n\ttableData: NestedData[] = [];\r\n\tfieldSearch = '';\r\n\tcolumns = DataQueryInformation.virtualizedTableColumns;\r\n\tV10: boolean;\r\n\tfilterColumnSql: string[] = [];\r\n\tfilterColumnFieldName: string[];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate loginService: LoginService,\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: syncs the data\r\n\t\tthis.information = this.data.information;\r\n\t\tthis.isStudentSearch = this.data.isStudentSearch;\r\n\t\tthis.isCourseSearch = this.data.isCourseSearch;\r\n\t\tthis.isStaffSearch = this.data.isStaffSearch;\r\n\t\tthis.disabledFields = this.data.disabledFields;\r\n\t\tthis.callByEform = this.data.callByEform;\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\r\n\t\t// If this is staff search, we need a column filter for staff_id\r\n\t\tif (this.isStaffSearch) {\r\n\t\t\tthis.filterColumnSql = this.V10 ? ['staff_id'] : null;\r\n\t\t\tthis.filterColumnFieldName = null;\r\n\t\t}\r\n\r\n\t\t// If this is course search, we need a column filter for c_id\r\n\t\telse if (this.isCourseSearch) {\r\n\t\t\tthis.filterColumnSql = this.V10 ? ['c_id'] : null;\r\n\t\t\tthis.filterColumnFieldName = null;\r\n\t\t}\r\n\r\n\t\t// If this is student search, we need a column filter\r\n\t\telse if (this.isStudentSearch) {\r\n\t\t\tthis.filterColumnSql = this.V10 ? ['student_id'] : null;\r\n\t\t\tthis.filterColumnFieldName = null;\r\n\t\t}\r\n\r\n\t\t// If this isn't student search, show everything\r\n\t\telse {\r\n\t\t\tthis.filterColumnSql = null;\r\n\t\t\tthis.filterColumnFieldName = null;\r\n\t\t}\r\n\r\n\t\t// Setting up the grid\r\n\t\tthis.tableData = this.information.virtualizedTableData(\r\n\t\t\tthis.fieldSearch,\r\n\t\t\tthis.loginService.LoginSettings.V10,\r\n\t\t\ttrue,\r\n\t\t\t(event: MouseEvent, nestedData: NestedData) => {\r\n\t\t\t\tthis.fieldSelect(nestedData.data);\r\n\t\t\t},\r\n\t\t\t(event: KeyboardEvent, nestedData: NestedData) => {\r\n\t\t\t\tif (event.key == 'Enter') {\r\n\t\t\t\t\tthis.fieldSelect(nestedData.data);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tthis.filterColumnSql,\r\n\t\t\tthis.filterColumnFieldName,\r\n\t\t\tthis.disabledFields\r\n\t\t);\r\n\r\n\t\t// default expand if only one object is available...\r\n\t\tif (this.information != null && this.information.objects.length == 1) {\r\n\t\t\tthis.expandAll();\r\n\t\t}\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box with nothing\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\tfieldSelect(field: DataQueryField) {\r\n\t\t// PRE: a field is clicked or has entered pressed while focused on it on the table\r\n\t\t// POST: closes the dialog box with the field\r\n\t\tthis.dialogBox.close(field);\r\n\t}\r\n\r\n\t// Methods\r\n\tapplySearch(searchString: string) {\r\n\t\t// POST: applies the search to the available fields\r\n\t\tif (this.fieldSearch != searchString) {\r\n\t\t\tthis.fieldSearch = searchString;\r\n\t\t\tthis.tableData = this.information.virtualizedTableData(\r\n\t\t\t\tthis.fieldSearch,\r\n\t\t\t\tthis.V10,\r\n\t\t\t\ttrue,\r\n\t\t\t\t(event: MouseEvent, nestedData: NestedData) => {\r\n\t\t\t\t\tthis.fieldSelect(nestedData.data);\r\n\t\t\t\t},\r\n\t\t\t\t(event: KeyboardEvent, nestedData: NestedData) => {\r\n\t\t\t\t\tif (event.key == 'Enter') {\r\n\t\t\t\t\t\tthis.fieldSelect(nestedData.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tthis.filterColumnSql,\r\n\t\t\t\tthis.filterColumnFieldName,\r\n\t\t\t\tthis.disabledFields\r\n\t\t\t);\r\n\t\t\tif (this.fieldSearch) {\r\n\t\t\t\tthis.expandAll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texpandAll() {\r\n\t\t// POST: expand all the rows\r\n\t\t// NOTE: we must force change detection because the virtualized table uses OnPush\r\n\t\tconst previousTableData = Object.assign([], this.tableData);\r\n\t\tthis.tableData = [];\r\n\t\tconst expandData = (data: NestedData[]) => {\r\n\t\t\tdata.forEach(datum => {\r\n\t\t\t\tdatum.showChildren = true;\r\n\t\t\t\tif (datum.children) {\r\n\t\t\t\t\texpandData(datum.children);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\t\texpandData(previousTableData);\r\n\t\tthis.tableData = previousTableData;\r\n\t}\r\n}\r\n","import { DataQueryField } from './data-query-field.model';\r\nimport { DataQueryRelationship } from './data-query-relationship.model';\r\nimport { DataQueryInformation } from './data-query-information';\r\n\r\nexport class DataQuery {\r\n\r\n\t// Server Properties\r\n\tCourseSearch: boolean;\r\n\tCreatedBy: number;\r\n\tCreatedOn: string;\r\n\tDeleted = false;\r\n\tDelimiter = 'Comma';\r\n\tDescription: string;\r\n\tDisplayMenu: boolean;\r\n\tExportType = 'Excel';\r\n\tID = -1;\r\n\tIncludeColumnHeadings = true;\r\n\tOtherDelimiter: string;\r\n\tOwnerID: number;\r\n\tOwnerName: string;\r\n\tPublished: boolean;\r\n\tQueryName: string;\r\n\tQueryXML = '';\r\n\tSQLScript = '';\r\n\tScope = 'Private';\r\n\tSelectedSites = '';\r\n\tSelectedSiteNames: string;\r\n\tStaffSearch: boolean;\r\n\tStudentSearch: boolean;\r\n\tUpdatedBy?: Date;\r\n\tUpdatedOn?: Date;\r\n SavedFromID: number;\r\n\r\n\t// Local Properties\r\n\tprivate _queryChanged = false;\r\n\tdistinct: boolean;\r\n\tcurrentYearOnly = true;\r\n\tcurrentSchoolOnly: boolean;\r\n\tcurrentlyActiveStudentsOnly: boolean;\r\n\tstudentEnrolledOnDate: boolean;\r\n\tstudentEnrollmentDate: Date;\r\n\tcourseName: string;\r\n\tsiteSectionId: string | number = 0;\r\n\treportFields: DataQueryField[] = [];\r\n\tsortFields: DataQueryField[] = [];\r\n\tfilterFields: DataQueryField[] = [];\r\n\trelationships: DataQueryRelationship[] = [];\r\n\tretrievedPages = [];\r\n\tresultColumnHeaders = [];\r\n\tresultData = [];\r\n\tisUnsaved = false;\r\n\txmlLoaded = false;\r\n\tfilterTranslation = '';\r\n\tqueryChangedSinceLastResult = true;\r\n\torganized = true;\r\n\tadvancedFilterApplied = false;\r\n\r\n\t// Class Functions\r\n\tget allFields(): DataQueryField[] {\r\n\t\t// POST: obtains all of the fields\r\n\t\treturn this.reportFields.concat(this.filterFields).concat(this.sortFields);\r\n\t}\r\n\r\n\tget queryChanged(): boolean {\r\n\t\treturn this._queryChanged;\r\n\t}\r\n\r\n\tset queryChanged(value: boolean) {\r\n\t\tthis._queryChanged = value;\r\n\t\tif (value) {\r\n\t\t\tthis.queryChangedSinceLastResult = true;\r\n\t\t}\r\n\t}\r\n\r\n\t// Methods\r\n\tduplicate() {\r\n\t\t// POST: returns a duplicate of this query\r\n\t\tconst newQuery = new DataQuery();\r\n\t\tObject.assign(newQuery, this);\r\n\t\treturn newQuery;\r\n\t}\r\n\r\n\tdisorganize() {\r\n\t\t// POST: dissociates all of the objects and categories\r\n\t\tthis.organized = false;\r\n\t\tconst disorganizeCallback = (field: DataQueryField) => {\r\n\t\t\tfield.object = null;\r\n\t\t\tfield.category = null;\r\n\t\t\tfield.Filters.forEach(filter => {\r\n\t\t\t\tfilter.field = null;\r\n\t\t\t});\r\n\t\t};\r\n\t\tthis.reportFields.forEach(disorganizeCallback);\r\n\t\tthis.sortFields.forEach(disorganizeCallback);\r\n\t\tthis.filterFields.forEach(disorganizeCallback);\r\n\t}\r\n\r\n\torganize(information: DataQueryInformation, V10: boolean) {\r\n\t\t// PRE: organized information\r\n\t\t// POST: sets the fields properly\r\n\t\tthis.organized = true;\r\n\t\tif (!information.organized) {\r\n\t\t\tinformation.organize();\r\n\t\t}\r\n\t\tconst organizeCallback = (field: DataQueryField) => {\r\n\t\t\t// V9 has duplicate field ID's, so we need another criterion\r\n\t\t\tlet infoField: DataQueryField;\r\n\t\t\tif (V10) {\r\n\t\t\t\tinfoField = information.fields.find(f => f.ID == field.ID && f.FieldName == field.FieldName);\r\n\t\t\t} else {\r\n\t\t\t\tinfoField = information.fields.find(f => f.ID == field.ID && f.FieldName == field.FieldName && f.CategoryID == field.CategoryID);\r\n\t\t\t}\r\n\r\n\t\t\tif (infoField) {\r\n\t\t\t\tfield.category = infoField.category;\r\n\t\t\t\tfield.object = infoField.object;\r\n\t\t\t\tfield.Permission = infoField.Permission;\t// We do this to preserve user permissions\r\n\t\t\t}\r\n\t\t\t// field.category = information.categories.find(category => category.ID == field.CategoryID);\r\n\t\t\t// field.object = information.objects.find(object => object.ID == field.category.ObjectID);\r\n\t\t\tfield.Filters.forEach(filter => {\r\n\t\t\t\tfilter.field = field;\r\n\t\t\t});\r\n\t\t};\r\n\t\tthis.reportFields.forEach(organizeCallback);\r\n\t\tthis.sortFields.forEach(organizeCallback);\r\n\t\tthis.filterFields.forEach(organizeCallback);\r\n\t}\r\n}\r\n","import { Subscriber } from '../Subscriber';\nexport function retry(count = -1) {\n return (source) => source.lift(new RetryOperator(count, source));\n}\nclass RetryOperator {\n constructor(count, source) {\n this.count = count;\n this.source = source;\n }\n call(subscriber, source) {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n }\n}\nclass RetrySubscriber extends Subscriber {\n constructor(destination, count, source) {\n super(destination);\n this.count = count;\n this.source = source;\n }\n error(err) {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.error(err);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","export class PagedContent {\r\n PageNumber: number;\r\n Content: T;\r\n\r\n constructor(pageNumber: number, content: T) {\r\n this.PageNumber = pageNumber;\r\n this.Content = content;\r\n }\r\n }\r\n\r\n","\r\n

\r\n\tTemplates from Classic\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\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\r\n\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\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tScope\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tOwner\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\t\r\n\t
\r\n\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{query.QueryName}}\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\t\r\n\t\t\t\t\t{{query.Description}}\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\t\r\n\t\t\t\t\t{{query.Scope}}\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\t\r\n\t\t\t\t\t{{query.OwnerName}}\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\r\n\t
\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t
\r\n
","import { Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { DataQuery } from '../../data-query.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { UserService } from '../../../../shared-components/user/user.service';\r\nimport { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n\tselector: 'app-templated-from-class-dialog',\r\n\ttemplateUrl: './templates-from-classic-dialog.component.html',\r\n\tstyleUrls: ['./templates-from-classic-dialog.component.css']\r\n})\r\nexport class TemplatesFromClassicDialogComponent implements OnInit, OnDestroy {\r\n\r\n\t// Injected Properties\r\n\tlegacyQueries: DataQuery[] = [];\r\n\r\n\t// Properties\r\n\ttableData = new TylerMatTableDataSource();\r\n\tcolumns = ['Name', 'Description', 'Scope', 'Owner'];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\tprivate loginService: LoginService,\r\n\t\tprivate yearService: YearService,\r\n\t\tprivate userService: UserService,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any\r\n\t) { }\r\n\r\n\t@ViewChild(MatPaginator, { static: true }) set paginator(value: MatPaginator) {\r\n\t\tthis.tableData.paginator = value;\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: performs initialization\r\n\r\n\t\t// Obtaining the legacy queries\r\n\t\tthis.legacyQueries = this.data.legacyQueries;\r\n\t\tthis.tableData.data = this.legacyQueries;\r\n\r\n\t\t// Setting which columns to display\r\n\t\tif (this.loginService.LoginSettings.V10) {\r\n\t\t\tthis.columns.splice(this.columns.indexOf('Scope'), 1);\r\n\t\t\tthis.columns.splice(this.columns.indexOf('Owner'), 1);\r\n\t\t} else {\r\n\t\t\tthis.columns.splice(this.columns.indexOf('Description'), 1);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// NOTE: implemented for @AutoUnsubscribe\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\tqueryClick(query: DataQuery) {\r\n\t\t// PRE: a data query row is clicked\r\n\t\t// PST: sets the imported query to the legacy query\r\n\t\tconst returnQuery = Object.assign(new DataQuery(), query);\r\n\t\tif (!this.loginService.LoginSettings.V10 && query.Scope != 'Private' && query.Scope != 'District') {\r\n\t\t\tquery.Scope = 'Selected Sites';\r\n\r\n\t\t\tconst querySchool = this.yearService.years.find(school => school.SchoolCode == query.SelectedSites);\r\n\t\t\tif (querySchool) {\r\n\t\t\t\treturnQuery.SelectedSites = querySchool.Id.toString();\r\n\t\t\t}\r\n\t\t\tthis.dialogBox.close(returnQuery);\r\n\t\t} else {\r\n\t\t\tthis.dialogBox.close(returnQuery);\r\n\t\t}\r\n\t}\r\n\r\n\t// Methods\r\n\r\n}\r\n","\r\n
\r\n\tWARNING\r\n
\r\n\r\n\r\n\r\n\t
\r\n\t\t{{warningMessage}}\r\n\t
\r\n\t
\r\n\t\tDo you want to overwrite this query?\r\n\t
\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","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataQuery } from '../data-query.model';\r\n\r\n@Component({\r\n\tselector: 'app-warning-dialog',\r\n\ttemplateUrl: './warning-dialog.component.html',\r\n\tstyleUrls: ['./warning-dialog.component.css']\r\n})\r\nexport class WarningDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\twarningMessage: string;\r\n\tallowOverwrite = false;\r\n\tquery: DataQuery;\r\n\texistingQueryId: number;\r\n\tdataQueryService: any;\t// This is an instance of the data query service and must be any to prevent circular dependency issues\r\n\r\n\t// Properties\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.warningMessage = this.data.warningMessage;\r\n\t\tthis.allowOverwrite = this.data.allowOverwrite;\r\n\t\tthis.dataQueryService = this.data.dataQueryService;\r\n\t\tthis.query = this.data.query;\r\n\t\tthis.existingQueryId = this.data.existingQueryId;\r\n\t}\r\n\r\n\toverwrite() {\r\n\t\t// PRE: the overwrite button is clicked, and there is query and existingQueryId\r\n\t\t// POST: attempts to overwrites the query. Closes with true on success. Closes with false on failure.\r\n\t\tthis.query.ID = this.existingQueryId;\r\n\t\tthis.dataQueryService.saveQuery(this.query,\r\n\t\t\t(result) => {\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tthis.dataQueryService.loadQuery(this.query);\r\n\t\t\t\t}\r\n\t\t\t\tthis.dialogBox.close(true);\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.dialogBox.close(false);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\t// PRE: the cancel button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close(false);\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n

\r\n\t\r\n\t\tSave As New Query\r\n\t\r\n\t\r\n\t\tEdit Query\r\n\t\r\n\t\r\n\t\tImport Query\r\n\t\r\n

\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t
\r\n\r\n\t\t\t\r\n\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\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\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tPublish to Integration Services\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t{{query.OwnerName}}\r\n\t\t\t\tTake Ownership\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n\r\n\r\n\r\n\r\n\t\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\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\r\n\t
\r\n\t\tAvailable to \r\n\t\t\r\n\t\t\tSelected Sites\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataQuery } from '../data-query.model';\r\nimport { DataQueryPermissions } from '../data-query-permissions';\r\nimport { TemplatesFromClassicDialogComponent } from './templates-from-classic-dialog/templates-from-classic-dialog.component';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { AddFileComponent } from '../../../shared-components/controls/add-file/add-file.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { WarningDialogComponent } from '../warning-dialog/warning-dialog.component';\r\nimport { System } from '../../../shared-components/System';\r\nimport { DataQueryInformation } from '../data-query-information';\r\nimport { SelectedSitesDialogComponent } from '../../../shared-components/controls/selected-sites-dialog/selected-sites-dialog.component';\r\nimport { User } from '../../../shared-components/user/user.model';\r\nimport * as _ from 'lodash';\r\nimport { SelectedSite } from '../../../shared-components/controls/selected-sites-dialog/selected-site';\r\n\r\n@Component({\r\n selector: 'add-edit-query-dialog',\r\n templateUrl: './add-edit-query.component.html',\r\n styleUrls: ['./add-edit-query.component.css']\r\n})\r\nexport class AddEditQueryDialogComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n forEdit = false;\r\n forImport = false;\r\n query = new DataQuery();\r\n dataQueryService: any;\t// This is an instance of data query service and must be any to prevent circular dependency issues\r\n\r\n // Properties\r\n importOption = 0;\r\n permissions: DataQueryPermissions;\r\n scopeOptions = ['Private', 'Selected Sites', 'District'];\r\n scopeLabels = ['Private', false, 'Available to District'];\r\n scopeIds = ['scopeRadio0', 'scopeRadio1', 'scopeRadio2'];\r\n scopeDisabledOptions = [];\r\n fileName: string;\r\n fileType: string;\r\n templateName: string;\r\n errors: ErrorList[] = [];\r\n subscriptions: Subscription[] = [];\r\n currentQuery: DataQuery;\r\n originalQuery: DataQuery;\r\n information: DataQueryInformation;\r\n currentUser: User;\r\n scopeObject: string;\r\n\r\n // Template Properties\r\n @ViewChild('nameInput', { read: ElementRef, static: true }) nameInput: ElementRef;\r\n @ViewChild('selectedSitesLink', { read: ElementRef }) selectedSitesLink: ElementRef;\r\n @ViewChild('templateSelectButton', { read: ElementRef }) templateSelectButton: ElementRef;\r\n @ViewChild('addFileComponent', { read: AddFileComponent }) addFileComponent: AddFileComponent;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the component\r\n this.currentUser = this.userService.currentUser;\r\n // Getting injected properties\r\n this.forEdit = this.data.forEdit;\r\n this.forImport = this.data.forImport;\r\n this.dataQueryService = this.data.dataQueryService;\r\n if (this.data.query && this.data.query instanceof DataQuery) {\r\n if (this.forEdit == true && this.forImport == false) {\r\n this.query = _.cloneDeep(this.data.query);\r\n }\r\n else {\r\n this.query = this.data.query;\r\n }\r\n\r\n this.scopeObject = this.query.Scope;\r\n }\r\n // Setting up which options are disabled\r\n this.subscriptions.push(\r\n this.dataQueryService.getPermissions().subscribe(permissions => {\r\n this.permissions = permissions;\r\n console.log(this.permissions);\r\n\r\n // Determining what scopes are available\r\n this.scopeDisabledOptions = [];\r\n if (!this.permissions.canUserCreatePrivateQuery) {\r\n this.scopeDisabledOptions.push('Private');\r\n }\r\n if (!this.permissions.canUserCreateSchoolQuery) {\r\n this.scopeDisabledOptions.push('Selected Sites');\r\n }\r\n if (!this.permissions.canUserCreateDistrictQuery) {\r\n this.scopeDisabledOptions.push('District');\r\n }\r\n\r\n // Setting the scope of the query\r\n if (this.permissions.canUserCreatePrivateQuery) {\r\n this.query.Scope = 'Private';\r\n } else if (this.permissions.canUserCreateSchoolQuery) {\r\n this.query.Scope = 'Selected Sites';\r\n } else {\r\n this.query.Scope = 'District';\r\n }\r\n }),\r\n\r\n // Syncing properties\r\n this.dataQueryService.observableCurrentQueryStream$.subscribe(currentQuery => {\r\n this.currentQuery = currentQuery;\r\n }),\r\n this.dataQueryService.observableInformationStream$.subscribe(information => {\r\n this.information = information;\r\n })\r\n );\r\n\r\n // Setting query default variables\r\n if (!this.forEdit) {\r\n this.query.SavedFromID = this.query.ID;\r\n this.query.ID = -1;\r\n this.query.OwnerID = this.userService.currentUser.Id;\r\n this.query.SelectedSites = '';\r\n this.query.Deleted = false;\r\n }\r\n\r\n // Setting the original query for cancelling\r\n this.originalQuery = new DataQuery();\r\n Object.assign(this.originalQuery, this.query);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: resets the query and closes the dialog box\r\n Object.assign(this.query, this.originalQuery);\r\n this.dialogBox.close();\r\n }\r\n\r\n import() {\r\n // PRE: the import button is clicked\r\n // POST: validates and, if valid, tries to save.\r\n\r\n // Checking for errors\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n\r\n // File Importing\r\n if (this.importOption == 0) {\r\n\r\n // Parsing out export settings\r\n if (this.query.QueryXML.indexOf('') > -1) {\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(this.query.QueryXML, 'text/xml');\r\n const exportType = xmlDoc.getElementsByTagName('ExportType')[0].innerHTML;\r\n const delimeter = xmlDoc.getElementsByTagName('Delimeter')[0].innerHTML;\r\n const otherDelimeter = xmlDoc.getElementsByTagName('OtherDelimeter')[0].innerHTML;\r\n const includeColumnHeadings = xmlDoc.getElementsByTagName('IncludeColumnHeadings')[0].innerHTML;\r\n this.query.ExportType = exportType;\r\n this.query.Delimiter = delimeter;\r\n this.query.OtherDelimiter = otherDelimeter;\r\n this.query.IncludeColumnHeadings = includeColumnHeadings == 'true';\r\n }\r\n\r\n // Loading the data from the query\r\n this.dataQueryService.importing = true;\r\n this.dataQueryService.importQueryClick = true;\r\n this.dataQueryService.loadDataFromXML(this.query, this.dataQueryService.importQueryClick);\r\n\r\n // Validating the query manually to load the data on a failure\r\n this.query.queryChangedSinceLastResult = false;\t// We do this to prevent results tab from validating, too\r\n this.dataQueryService.validateQuery(\r\n () => {\r\n\r\n // Saving the query with loaded data\r\n this.dataQueryService.saveQuery(\r\n this.query,\r\n results => {\r\n\r\n // If successful, trim the query XML and set it to the current query\r\n if (results[0] == 'Success') {\r\n this.query.queryChangedSinceLastResult = true;\r\n this.dataQueryService.currentQuery = this.query;\r\n this.query.QueryXML = this.query.QueryXML.substring(0, this.query.QueryXML.indexOf('') + 7);\r\n this.dialogBox.close();\r\n }\r\n\r\n // Otherwise, show warning circle\r\n else {\r\n this.errors.push({\r\n fieldName: null,\r\n fieldRef: this.nameInput,\r\n errorMsg: 'A query with this name already exists.'\r\n });\r\n }\r\n this.dataQueryService.importing = false;\r\n },\r\n results => {\r\n if (results[0] != 'Success') {\r\n this.errors.push({\r\n fieldRef: this.nameInput,\r\n fieldName: 'Query Name',\r\n errorMsg: results[0]\r\n });\r\n }\r\n this.dataQueryService.importing = false;\r\n },\r\n false\t\t// We don't include validation because we want the user to be able to fix it after importing\r\n );\r\n },\r\n () => {\r\n\r\n // Moving to Settings for Export to fix problems\r\n this.dataQueryService.currentTab = 'Settings for Export';\r\n\r\n // We need to wait for the tab change to occur so we don't get multiple errors from results tab\r\n setTimeout(() => {\r\n\r\n // Setting this as the current query to fix the errors\r\n this.query.queryChangedSinceLastResult = true;\r\n this.dataQueryService.currentQuery = this.query;\r\n\r\n // Closing the dialog\r\n this.dialogBox.close();\r\n this.dataQueryService.importing = false;\r\n }, 100);\r\n },\r\n true,\r\n this.query\r\n );\r\n }\r\n\r\n // Classic Importing\r\n else {\r\n this.subscriptions.push(\r\n this.dataQueryService.importQueryFromLegacy(this.query).subscribe(importResults => {\r\n\r\n // Loading the imported query data\r\n this.query = System.convert(importResults, new DataQuery());\r\n this.dataQueryService.loadDataFromXML(this.query);\r\n\r\n // Saving the query with loaded data\r\n this.dataQueryService.saveQuery(\r\n this.query,\r\n (saveResults) => {\r\n\r\n // If successful, set this query as the current query\r\n if (saveResults[0] == 'Success') {\r\n this.query.queryChangedSinceLastResult = true;\r\n this.dataQueryService.loadQuery(this.query);\r\n this.dataQueryService.currentQuery = this.query;\r\n this.dialogBox.close(this.query);\r\n }\r\n\r\n // If unsuccessful, show warnings\r\n else {\r\n\r\n // Show warning dialog in V10 with certain permissions\r\n if (!this.loginService.LoginSettings.V10\r\n && saveResults && saveResults.length >= 2\r\n && ((this.query.Scope == 'Private' && this.query.OwnerID == this.userService.currentUser.Id)\r\n || (this.query.Scope == 'Selected Sites' && this.permissions.canUserModifySchoolQuery)\r\n || (this.query.Scope == 'District' && this.permissions.canUserModifyDistrictQuery)\r\n )\r\n ) {\r\n const dialogBox = this.dialog.open(WarningDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n warningMessage: 'A query with this name already exists.',\r\n allowOverwrite: true,\r\n query: this.query,\r\n existingQueryId: saveResults[1],\r\n dataQueryService: this.dataQueryService\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n this.dialogBox.close();\r\n })\r\n );\r\n }\r\n\r\n // Otherwise, show error circle\r\n else {\r\n this.errors.push({\r\n fieldName: null,\r\n fieldRef: this.nameInput,\r\n errorMsg: 'A query with this name already exists.'\r\n });\r\n }\r\n }\r\n this.dataQueryService.importing = false;\r\n },\r\n () => {\r\n this.dataQueryService.importing = false;\r\n },\r\n false\t\t// We don't include validation because it's guaranteed to be valid from classic\r\n );\r\n })\r\n );\r\n }\r\n }\r\n }\r\n\r\n save() {\r\n // PRE: the save button is clicked\r\n // POST: validates and, if valid, saves the query then closes the dialog box\r\n\r\n // We must load the query before we save it\r\n if (!this.query.xmlLoaded) {\r\n this.dataQueryService.loadDataFromXML(this.query);\r\n }\r\n\r\n // Helper Function\r\n const serverCall = () => {\r\n this.dataQueryService.saveQuery(\r\n this.query,\r\n (result) => {\r\n if (result && result[0] != 'A query with the same name already exists.') {\r\n this.dialogBox.close(this.query);\r\n } else {\r\n this.errors.push({\r\n fieldName: null,\r\n fieldRef: this.nameInput,\r\n errorMsg: 'A query with this name already exists.'\r\n });\r\n }\r\n }\r\n );\r\n };\r\n\r\n // Validation\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n\r\n // If we're not editing, we have to add the report template\r\n if (!this.forEdit) {\r\n this.subscriptions.push(\r\n this.dataQueryService.getReportTemplateXML(this.currentQuery.ID).subscribe(reportXML => {\r\n this.query.QueryXML += reportXML;\r\n serverCall();\r\n })\r\n );\r\n }\r\n\r\n // Otherwise, just save\r\n else {\r\n serverCall();\r\n }\r\n }\r\n }\r\n\r\n setFile(XML: string) {\r\n // PRE: a file has been added\r\n // POST: sets up the imported query's XML based on the file\r\n console.log(XML);\r\n this.query.QueryXML = XML;\r\n // const textRegExp = /text.*/;\r\n // if (this.fileType.match(textRegExp)) {\r\n // this.query.QueryXML = XML;\r\n // } else {\r\n // this.fileName = '';\r\n // this.fileType = '';\r\n // this.query.QueryXML = '';\r\n // // Report error?\r\n // }\r\n }\r\n\r\n importQuerySelect() {\r\n // PRE: the select button under the import query option is clicked\r\n // POST: opens the dialog to select a legacy query\r\n this.dataQueryService.getLegacyQueries().subscribe(legacyQueries => {\r\n const legacyDialogBox = this.dialog.open(TemplatesFromClassicDialogComponent, {\r\n disableClose: true,\r\n width: '80vw',\r\n height: '80vh',\r\n data: {\r\n legacyQueries: legacyQueries\r\n }\r\n });\r\n legacyDialogBox.afterClosed().subscribe(legacyQuery => {\r\n if (legacyQuery) {\r\n this.templateName = legacyQuery.QueryName;\r\n this.query = legacyQuery;\r\n }\r\n });\r\n });\r\n }\r\n\r\n selectedSitesClick() {\r\n // PRE: the selected sites link is clicked\r\n // POST: opens the selected sites\r\n const selectedSites: SelectedSite[] = [];\r\n this.query.SelectedSites.split(',').forEach(siteIdString => {\r\n const siteId = Number(siteIdString.trim());\r\n if (!isNaN(siteId)) {\r\n const ss = new SelectedSite();\r\n ss.Id = siteId;\r\n selectedSites.push(ss);\r\n }\r\n });\r\n const selectedSitesDialogBox = this.dialog.open(SelectedSitesDialogComponent, {\r\n disableClose: true,\r\n width: '700px',\r\n data: {\r\n selectedSites: selectedSites\r\n }\r\n });\r\n selectedSitesDialogBox.afterClosed().subscribe((results: SelectedSite[]) => {\r\n if (results) {\r\n this.query.SelectedSites = results.map(o => o.Id).join(', ');\r\n this.query.SelectedSiteNames = results.map(o => o.SchoolName).join(', ');\r\n }\r\n console.log(this.query);\r\n });\r\n }\r\n\r\n // Methods\r\n validate() {\r\n // POST: sets up the errors\r\n this.errors = [];\r\n\r\n // File name is required if our option is 0\r\n if (this.forImport && this.importOption == 0 && !this.fileName) {\r\n const elementRef = this.addFileComponent ? this.addFileComponent.browseButton : null;\r\n this.errors.push({\r\n fieldName: 'File Name',\r\n fieldRef: elementRef,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n // File type Only XML is required if our option is 0\r\n if (this.forImport && this.importOption == 0 && this.addFileComponent && this.addFileComponent.fileType != undefined && this.addFileComponent.fileType != 'text/xml' && this.addFileComponent.fileType != 'application/xml') {\r\n const elementRef = this.addFileComponent ? this.addFileComponent.deleteButton : null;\r\n this.errors.push({\r\n fieldName: 'File',\r\n fieldRef: elementRef,\r\n errorMsg: 'Invalid type. File must be one created from export of existing query.'\r\n });\r\n }\r\n\r\n // Template name is required if our option is 1\r\n if (this.forImport && this.importOption == 1 && !this.templateName) {\r\n this.errors.push({\r\n fieldName: 'Classic Application Query',\r\n fieldRef: this.templateSelectButton,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n // Sites is required if this is selected site scope\r\n if (this.query.Scope == 'Selected Sites' && !this.query.SelectedSites) {\r\n this.errors.push({\r\n fieldName: 'Selected Sites',\r\n fieldRef: this.selectedSitesLink,\r\n errorMsg: 'No Sites selected.'\r\n });\r\n }\r\n\r\n // Query name is required\r\n if (!this.query.QueryName) {\r\n this.errors.push({\r\n fieldName: 'Query Name',\r\n fieldRef: this.nameInput,\r\n errorMsg: 'Field is required'\r\n });\r\n }\r\n }\r\n viewScopeChange() {\r\n this.query.Scope = this.scopeObject;\r\n }\r\n\r\n takeOwnershipClick() {\r\n this.query.OwnerID = this.currentUser.Id;\r\n this.query.OwnerName = this.currentUser.LastName + ', ' + this.currentUser.FirstName;\r\n }\r\n}\r\n","\r\n
\r\n\tErrors Exist\r\n
\r\n\r\n\r\n\r\n\t
\r\n\t\tThe query being imported contains the following fields that do not exist in the database:\r\n\t
\r\n\t
    \r\n\t\t
  • \r\n\t\t\t{{field.Alias ? field.Alias : field.FieldName}}\r\n\t\t
  • \r\n\t
\r\n\t
\r\n\t\tThese fields will need to be removed or corrected before results can be displayed.\r\n\t
\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {DataQueryField} from '../../data-query-field.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'app-import-error-dialog',\r\n\ttemplateUrl: './import-error-dialog.component.html',\r\n\tstyleUrls: ['./import-error-dialog.component.css']\r\n})\r\nexport class ImportErrorDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\tfields: DataQueryField[];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.fields = this.data.fields;\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\nimport { DataQueryParameter } from './data-query-parameter.model';\r\n\r\nexport class DataQueryFunction {\r\n\r\n\t// Properties\r\n\tDescription: string;\r\n\tDisplayName: string;\r\n\tId: number;\r\n\tName: string;\r\n\tReturnType: string;\r\n\tSQL: string;\r\n\r\n\t// Methods\r\n\tgetSyntax(parameters: DataQueryParameter[]) {\r\n\t\t// POST: obtains the syntax for the function\r\n\t\tlet syntax = '';\r\n\t\tconst params = parameters.filter(parameter => parameter.FunctionId == this.Id);\r\n\t\tsyntax += this.Name + '(';\r\n\t\tfor (let i = 0; i < params.length; i++) {\r\n\t\t\tconst param = params.find(parameter => parameter.Position == i + 1);\r\n\t\t\tif (param != null) {\r\n\t\t\t\tif (i > 0) {\r\n\t\t\t\t\tsyntax += ', ';\r\n\t\t\t\t}\r\n\t\t\t\tif (this.Name.toLowerCase() == 'date' && param.Name.toLowerCase() == 'format') {\r\n\t\t\t\t\tsyntax += '' + '\"' + param.Name + '\"' + '';\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tsyntax += '' + param.Name + '';\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\tsyntax += ')';\r\n\t\treturn syntax;\r\n\t}\r\n\r\n\tgetDescription(parameters: DataQueryParameter[]) {\r\n\t\t// POST: obtains the description for the function\r\n\t\tlet desc = this.Description;\r\n\t\tconst params = parameters.filter(parameter => parameter.FunctionId == this.Id);\r\n\t\tfor (let i = 0; i < params.length; i++) {\r\n\t\t\tconst param = params.find(parameter => parameter.Position == i + 1);\r\n\t\t\tif (param != null) {\r\n\t\t\t\tconst stringToMatch = '\\\\{' + (i + 1) + '\\\\}';\r\n\t\t\t\tconst regExp = new RegExp(stringToMatch, 'g');\r\n\t\t\t\tdesc = desc.replace(regExp, '' + param.Name + '');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn desc;\r\n\t}\r\n}","import {DataQueryCategory} from './data-query-category.model';\r\nimport {TylerMatTableDataSource} from '../../shared-components/angular-material/extended.class';\r\n\r\nexport class DataQueryObject {\r\n\r\n\t// Server Properties\r\n\tCategories: DataQueryCategory[] = [];\r\n\tDeleted: boolean;\r\n\tID: number;\r\n\tObjectName: string;\r\n\r\n\t// Local Properties\r\n\tprivate _tableData: TylerMatTableDataSource;\r\n\r\n\t// class functions\r\n\tget tableData(): TylerMatTableDataSource {\r\n\t\tif (!this._tableData) {\r\n\t\t\tthis._tableData = new TylerMatTableDataSource(this.categories);\r\n\t\t}\r\n\t\tif (this._tableData.data != this.categories) {\r\n\t\t\tthis._tableData.data = this.categories;\r\n\t\t}\r\n\t\treturn this._tableData;\r\n\t}\r\n\r\n\tget categories(): DataQueryCategory[] {\r\n\t\treturn this.Categories;\r\n\t}\r\n\r\n\tset categories(value: DataQueryCategory[]) {\r\n\t\tthis.Categories = value;\r\n\t}\r\n}","export class DataQueryOperator {\r\n\r\n\t// Properties\r\n ID: number;\r\n OperatorName: string;\r\n Display: string;\r\n SqlTemplate: string;\r\n ReturnTypes: string;\r\n}","export class DataQueryParameter {\r\n\tDataType: string;\r\n\tFunctionId: number;\r\n\tId: number;\r\n\tName: string;\r\n\tPosition: number;\r\n}","import {UserPermission} from '../../shared-components/user/user-permission.model';\r\n\r\nexport class DataQueryPermissions {\r\n\r\n\t// Properties\r\n\tcanUserCreatePrivateQuery = false;\r\n\tcanUserCreateSchoolQuery = false;\r\n\tcanUserCreateDistrictQuery = false;\r\n\tcanUserTakeOwnershipOfQuery = false;\r\n\tcanUserQueryAllYears = false;\r\n\tcanUserViewSQL = false;\r\n\tcanPublishToIntegration = false;\r\n\tcanUserModifySchoolQuery = false;\r\n\tcanUserModifyDistrictQuery = false;\r\n\r\n\t// Methods\r\n\tconstructor(\r\n\t\tpermissions: UserPermission[],\r\n\t\tV10: boolean\r\n\t) {\r\n\t\t// Copied from JS app\r\n\t\tif (V10) {\r\n\t\t\tif (permissions.find(permission =>\r\n\t\t\t\tpermission.PermissionName == 'Take Ownership of Existing Query' &&\r\n\t\t\t\tpermission.PrivilegeId == 2507\r\n\t\t\t)) {\r\n\t\t\t\tthis.canUserCreatePrivateQuery = true;\r\n\t\t\t\tthis.canUserCreateSchoolQuery = true;\r\n\t\t\t\tthis.canUserCreateDistrictQuery = true;\r\n\t\t\t\tthis.canUserTakeOwnershipOfQuery = true;\r\n\t\t\t\tthis.canUserQueryAllYears = true;\r\n\t\t\t\tthis.canUserModifySchoolQuery = true;\r\n\t\t\t\tthis.canUserModifyDistrictQuery = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (permissions.find(permission =>\r\n\t\t\t\t\tpermission.PermissionName == 'Add Edit Private Query' &&\r\n\t\t\t\t\tpermission.PrivilegeId == 2504\r\n\t\t\t\t)) {\r\n\t\t\t\t\tthis.canUserCreatePrivateQuery = true;\r\n\t\t\t\t}\r\n\t\t\t\tif (permissions.find(permission =>\r\n\t\t\t\t\tpermission.PermissionName == 'Publish Query to School' &&\r\n\t\t\t\t\tpermission.PrivilegeId == 2505\r\n\t\t\t\t)) {\r\n\t\t\t\t\tthis.canUserCreateSchoolQuery = true;\r\n\t\t\t\t}\r\n\t\t\t\tif (permissions.find(permission =>\r\n\t\t\t\t\tpermission.PermissionName == 'Publish Query to District' &&\r\n\t\t\t\t\tpermission.PrivilegeId == 2506\r\n\t\t\t\t)) {\r\n\t\t\t\t\tthis.canUserCreateDistrictQuery = true;\r\n\t\t\t\t}\r\n\t\t\t\tif (permissions.find(permission =>\r\n\t\t\t\t\tpermission.PermissionName == 'Can Query All Years' &&\r\n\t\t\t\t\tpermission.PrivilegeId == 2508\r\n\t\t\t\t)) {\r\n\t\t\t\t\tthis.canUserQueryAllYears = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (permissions.find(permission =>\r\n\t\t\t\tpermission.PermissionName == 'View SQL Query' &&\r\n\t\t\t\tpermission.PrivilegeId == 2522\r\n\t\t\t)) {\r\n\t\t\t\tthis.canUserViewSQL = true;\r\n\t\t\t}\r\n\t\t\tif (permissions.find(permission =>\r\n\t\t\t\tpermission.PermissionName == 'Publish to Integration Services' &&\r\n\t\t\t\tpermission.PrivilegeId == 2524\r\n\t\t\t)) {\r\n\t\t\t\tthis.canPublishToIntegration = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.canUserModifySchoolQuery = false;\r\n\t\t\tthis.canUserModifyDistrictQuery = false;\r\n\t\t\tif (permissions.find(permission =>\r\n\t\t\t\tpermission.PermissionCode == 'SD_ESDG' || permission.PermissionCode == 'SD_VSDG'\r\n\t\t\t)) {\r\n\t\t\t\tthis.canUserCreatePrivateQuery = true;\r\n\t\t\t\tthis.canUserCreateSchoolQuery = true;\r\n\t\t\t\tthis.canUserCreateDistrictQuery = true;\r\n\t\t\t\tif (permissions.find(permission =>\r\n\t\t\t\t\tpermission.PermissionCode == 'SD_MSLDGT'\r\n\t\t\t\t)) {\r\n\t\t\t\t\tthis.canUserTakeOwnershipOfQuery = true;\r\n\t\t\t\t\tthis.canUserModifySchoolQuery = true;\r\n\t\t\t\t}\r\n\t\t\t\tif (permissions.find(permission =>\r\n\t\t\t\t\tpermission.PermissionCode == 'SD_MDWDGT'\r\n\t\t\t\t)) {\r\n\t\t\t\t\tthis.canUserModifyDistrictQuery = true;\r\n\t\t\t\t\tthis.canUserTakeOwnershipOfQuery = true;\r\n\t\t\t\t}\r\n\t\t\t\tif (permissions.find(permission =>\r\n\t\t\t\t\tpermission.PermissionCode == 'SUI_DQVS'\r\n\t\t\t\t)) {\r\n\t\t\t\t\tthis.canUserViewSQL = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { DataQueryField } from './data-query-field.model';\r\nexport class DataQueryTransformationField {\r\n\r\n // Properties\r\n\tfieldId: number;\r\n\tcategoryId: number;\r\n\tposition: number;\r\n\tsql: string;\r\n\r\n // Constructor\r\n constructor(field?: DataQueryField) {\r\n if (field) {\r\n this.fieldId = field.ID;\r\n this.categoryId = field.CategoryID;\r\n }\r\n }\r\n}","\r\n
\r\n\tWARNING\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\tChanges have been made to the query\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{currentQuery.QueryName == 'My Defaults' ? 'My Default' : currentQuery.QueryName}}\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\tbut not saved.\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\tChanges have been entered but not saved.\r\n\t\t
\r\n\t\t
\r\n\t\t\tIf you continue without saving, the changes will be lost.\r\n\t\t
\r\n\t
\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n\t\r\n\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 \r\n \r\n \r\n \r\n\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { DataQuery } from '../data-query.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n\tselector: 'app-data-query-unsaved-changes-dialog',\r\n\ttemplateUrl: './data-query-unsaved-changes-dialog.component.html',\r\n\tstyleUrls: ['./data-query-unsaved-changes-dialog.component.css']\r\n})\r\nexport class DataQueryUnsavedChangesDialogComponent implements OnInit, OnDestroy {\r\n\r\n\t// Injected Properties\r\n\tcurrentQuery: DataQuery;\r\n\tuserCanOverwrite: boolean;\r\n\tunsavedChanges: boolean;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// PRE: injected data with the injected properties\r\n\t\t// POST: initializes the data\r\n\t\tthis.currentQuery = this.data.currentQuery;\r\n\t\tthis.userCanOverwrite = this.data.userCanOverwrite;\r\n\t\tthis.unsavedChanges = this.data.unsavedChanges;\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// NOTE: this is implemented for @AutoUnsubscribe()\r\n\t}\r\n\r\n\tcancel() {\r\n\t\t// PRE: the cancel button is clicked\r\n\t\t// POST: closes the dialog with -1\r\n\t\tthis.dialogBox.close(-1);\r\n\t}\r\n\r\n\tcontinueWithoutSaving() {\r\n\t\t// PRE: the continue without saving button is clicked\r\n\t\t// POST: closes the dialog box with 0\r\n\t\tthis.dialogBox.close(0);\r\n\t}\r\n\r\n\tsaveAsNew() {\r\n\t\t// PRE: the save as new button is clicked\r\n\t\t// POST: closes the dialog box with 1\r\n\t\tthis.dialogBox.close(1);\r\n\t}\r\n\r\n\tsaveQuery() {\r\n\t\t// PRE: the save query button is clicked\r\n\t\t// POST: closes the dialog box with 2\r\n\t\tthis.dialogBox.close(2);\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n
\r\n\tRESULTS CANNOT BE DISPLAYED\r\n
\r\n\r\n\r\n\r\n\t
\r\n\t\tThis query cannot be processed because there is no way to connect fields from following areas:\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\t{{category.CategoryName}}{{i == group.length - 1 ? '' : ', '}}\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[{{category.ObjectName}}].[{{category.CategoryName}}]\r\n\t\t\t\r\n\t\t
\r\n\t
\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","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {DataQueryCategory} from '../data-query-category.model';\r\nimport {LoginService} from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n\tselector: 'app-no-relationships-warning-dialog',\r\n\ttemplateUrl: './no-relationships-warning-dialog.component.html',\r\n\tstyleUrls: ['./no-relationships-warning-dialog.component.css']\r\n})\r\nexport class NoRelationshipsWarningDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\tunjoinedCategoryGroups: DataQueryCategory[][] = [];\r\n\r\n\t// Properties\r\n\tV10: boolean;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate loginService: LoginService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: sets the injected properties\r\n\t\tthis.unjoinedCategoryGroups = this.data.unjoinedCategoryGroups;\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\t}\r\n\r\n\tok() {\r\n\t\t// PRE: the OK button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { isNull } from '@angular/compiler/src/output/output_ast';\r\nimport { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport { BehaviorSubject, forkJoin, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { catchError, map, retry, take } from 'rxjs/operators';\r\nimport { GeneralConfirmationComponent } from '../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { CheckForErrorsGuard } from '../../shared-components/guards/check-for-errors/check-for-errors.guard';\r\nimport { Lookup } from '../../shared-components/lookup/lookup.model';\r\nimport { PagedContent } from '../../shared-components/models/pagedContent.model';\r\nimport { SecurityService } from '../../shared-components/security/security.service';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { DataQueryPreferences } from '../../shared-components/user-preferences/data-query-preferences.model';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { UserPermission } from '../../shared-components/user/user-permission.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { ClassroomSummaryService } from '../classroom-summary/classroom-summary.service';\r\nimport { ClassroomSummary } from '../classroom-summary/models/classroom-summary.model';\r\nimport { SelectCourseDialogComponent } from '../guards/select-course/select-course-dialog/select-course-dialog.component';\r\nimport { AddEditQueryDialogComponent } from './add-edit-query-dialog/add-edit-query.component';\r\nimport { ImportErrorDialogComponent } from './add-edit-query-dialog/import-error-dialog/import-error-dialog.component';\r\nimport { DataQueryCategory } from './data-query-category.model';\r\nimport { DataQueryFieldFilter } from './data-query-field-filter.model';\r\nimport { DataQueryField } from './data-query-field.model';\r\nimport { DataQueryFunction } from './data-query-function.model';\r\nimport { DataQueryInformation } from './data-query-information';\r\nimport { DataQueryObject } from './data-query-object.model';\r\nimport { DataQueryOperator } from './data-query-operator.model';\r\nimport { DataQueryParameter } from './data-query-parameter.model';\r\nimport { DataQueryPermissions } from './data-query-permissions';\r\nimport { DataQueryRelationship } from './data-query-relationship.model';\r\nimport { DataQueryResult } from './data-query-result.model';\r\nimport { PrintParameters } from './data-query-results/print-results-dialog/print-parameters.model';\r\nimport { InsertFieldDialogComponent } from './data-query-settings-for-export/insert-field-dialog/insert-field-dialog.component';\r\nimport { DataQueryTransformationField } from './data-query-transformation-field.model';\r\nimport { DataQueryUnsavedChangesDialogComponent } from './data-query-unsaved-changes-dialog/data-query-unsaved-changes-dialog.component';\r\nimport { DataQuery } from './data-query.model';\r\nimport { ErrorsExistDialogComponent } from './errors-exist-dialog/errors-exist-dialog.component';\r\nimport { NoRelationshipsWarningDialogComponent } from './no-relationships-warning-dialog/no-relationships-warning-dialog.component';\r\nimport { WarningDialogComponent } from './warning-dialog/warning-dialog.component';\r\nimport KeyDownEvent = JQuery.KeyDownEvent;\r\nimport ClickEvent = JQuery.ClickEvent;\r\n@Injectable()\r\nexport class DataQueryService {\r\n\r\n // Static Properties\r\n static filterFieldId = 0;\r\n\r\n // Local Properties\r\n private blocking = false;\r\n distinct = true;\r\n currentYearOnly = true;\r\n currentSchoolOnly = true;\r\n currentlyActiveStudentsOnly = true;\r\n private loadingQuery = false;\r\n private savedQueryModified: boolean;\r\n private FormulasTested: boolean;\r\n private _studentFilters: DataQuery[];\r\n private _courseFilters: DataQuery[];\r\n private _staffFilters: DataQuery[];\r\n private _savedQueries: DataQuery[];\r\n private _isStudentSearch = false;\r\n private _isCourseSearch = false;\r\n private _isStaffSearch = false;\r\n V10: boolean;\r\n studentSearchFilters: any = {};\r\n courseSearchFilters: any = {};\r\n importing = false;\t// This is used to prevent double validations when on the results tab\r\n rosterQuery = false;\r\n obtainedRecentStudentQueries = false; // This is used for student search because we don't want to initially get all info\r\n obtainedRecentCourseQueries = false; // This is used for course search because we don't want to initially get all the info\r\n obtainedRecentStaffQueries = false; // This is used for staff search because we don't want to initially get all the info\r\n nextPageSubscriptions: Subscription[] = [];\r\n\r\n // Result Properties\r\n queryResultTable = [];\r\n currentPage = 1;\r\n sqlErrors: any;\r\n disabledFieldInReport: boolean;\r\n resetPageIndex: boolean;\r\n recordCount: number;\r\n pageCount: number;\r\n pageSize: number;\r\n retrievedData: string[][];\r\n importQueryClick = false;\r\n\r\n // Cached Server Properties\r\n private permissions: DataQueryPermissions;\r\n private legacyQueries: DataQuery[];\r\n private functions: DataQueryFunction[];\r\n private operators: DataQueryOperator[];\r\n private parameters: DataQueryParameter[];\r\n public userPermissions: UserPermission[];\r\n public disabledFields: { [fieldId: string]: boolean } = {};\r\n public userCategories: number[];\r\n public studentSearchQuery: DataQuery;\r\n public courseSearchQuery: DataQuery;\r\n public cachedInformation = false;\r\n private cachedPreferences = false;\r\n\r\n // Permission Properties\r\n public enableMassUpdate = false;\r\n public unsavedChanges = false;\r\n public isHasEdited = false;\r\n\r\n // Sync Properties\r\n private _maximized = false;\r\n private observableMaximized = new BehaviorSubject(this._maximized);\r\n observableMaximizedStream$ = this.observableMaximized.asObservable();\r\n\r\n private _originalDataQueryQuery = new DataQuery();\r\n private _currentDataQueryQuery = new DataQuery();\r\n private _originalStudentSearchQuery = new DataQuery();\r\n private _currentStudentSearchQuery = new DataQuery();\r\n private observableCurrentQuery = new BehaviorSubject(this.currentQuery);\r\n observableCurrentQueryStream$ = this.observableCurrentQuery.asObservable();\r\n\r\n private _information = new DataQueryInformation();\r\n private observableInformation = new BehaviorSubject(this._information);\r\n observableInformationStream$ = this.observableInformation.asObservable();\r\n\r\n private _preferences = new DataQueryPreferences();\r\n private observablePreferences = new BehaviorSubject(this._preferences);\r\n observablePreferencesStream$ = this.observablePreferences.asObservable();\r\n\r\n private _results: DataQueryResult;\r\n private observableResults = new Subject();\r\n observableResultsStream$ = this.observableResults.asObservable();\r\n\r\n private _nextPageResults: PagedContent;\r\n private observableNextPageResults = new Subject>();\r\n observableNextPageResultsStream$ = this.observableNextPageResults.asObservable();\r\n\r\n private _currentTab: string;\r\n private _previousTab: string;\r\n private observableCurrentTab = new BehaviorSubject('Fields');\r\n observableCurrentTabStream$ = this.observableCurrentTab.asObservable();\r\n\r\n\r\n private observableSaveResult = new Subject();\r\n observableSaveResultStream$ = this.observableSaveResult.asObservable();\r\n\r\n // Class Functions\r\n constructor(\r\n private http: HttpClient,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private classroomSummaryService: ClassroomSummaryService,\r\n private router: Router,\r\n private userPreferencesService: UserPreferencesService,\r\n private dialog: MatDialog,\r\n private sharedService: SharedService,\r\n private securityService: SecurityService,\r\n private guard: CheckForErrorsGuard\r\n ) {\r\n\r\n // Whenever we change the year, the cache is invalidated\r\n this.yearService.observableDefaultYearStream$.subscribe(() => {\r\n this.cachedInformation = false;\r\n });\r\n\r\n // Whenever we route away, reset current query\r\n router.events.subscribe(routerEvent => {\r\n if (routerEvent instanceof NavigationEnd && !routerEvent.urlAfterRedirects.includes('dataQuery')) {\r\n this.currentQuery = new DataQuery();\r\n }\r\n });\r\n\r\n // Whenever data query preferences are saved, remove the cache\r\n this.userPreferencesService.dataQueryPreferenceChange.subscribe(() => {\r\n this.cachedPreferences = false;\r\n this.getPreferences().pipe(take(1)).subscribe();\r\n });\r\n\r\n // Setting our V10 flag\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n get isStudentSearch(): boolean {\r\n return this._isStudentSearch;\r\n }\r\n\r\n set isStudentSearch(value: boolean) {\r\n if (this._isStudentSearch != value) {\r\n this._isStudentSearch = value;\r\n if (value == true) {\r\n this._isCourseSearch = false;\r\n this._isStaffSearch = false;\r\n }\r\n this.currentQuery = new DataQuery();\r\n this.observableCurrentQuery.next(this.currentQuery);\r\n }\r\n }\r\n\r\n get isCourseSearch(): boolean {\r\n return this._isCourseSearch;\r\n }\r\n\r\n set isCourseSearch(value: boolean) {\r\n if (this._isCourseSearch != value) {\r\n this._isCourseSearch = value;\r\n if (value == true) {\r\n this._isStudentSearch = false;\r\n this._isStaffSearch = false;\r\n }\r\n this.currentQuery = new DataQuery();\r\n this.observableCurrentQuery.next(this.currentQuery);\r\n }\r\n }\r\n\r\n get isStaffSearch(): boolean {\r\n return this._isStaffSearch;\r\n }\r\n\r\n set isStaffSearch(value: boolean) {\r\n if (this._isStaffSearch != value) {\r\n this._isStaffSearch = value;\r\n if (value == true) {\r\n this._isCourseSearch = false;\r\n this._isStudentSearch = false;\r\n }\r\n this.currentQuery = new DataQuery();\r\n this.observableCurrentQuery.next(this.currentQuery);\r\n }\r\n }\r\n\r\n get studentFilters(): Observable {\r\n if (this._studentFilters) {\r\n return of(this._studentFilters);\r\n } else {\r\n return this.getSavedQueries(true, false, false);\r\n }\r\n }\r\n\r\n get courseFilters(): Observable {\r\n if (this._courseFilters) {\r\n return of(this._courseFilters);\r\n } else {\r\n return this.getSavedQueries(false, true, false);\r\n }\r\n }\r\n\r\n get staffFilters(): Observable {\r\n if (this._staffFilters) {\r\n return of(this._staffFilters);\r\n } else {\r\n return this.getSavedQueries(false, false, true);\r\n }\r\n }\r\n\r\n get savedQueries(): Observable {\r\n if (this._savedQueries) {\r\n return of(this._savedQueries);\r\n } else {\r\n return this.getSavedQueries(false, false, false);\r\n }\r\n }\r\n\r\n get savedQueriesInContext(): Observable {\r\n if (this.isStudentSearch) {\r\n return this.studentFilters;\r\n } else if (this.isStaffSearch) {\r\n return this.staffFilters;\r\n } else if (this.isCourseSearch) {\r\n return this.courseFilters;\r\n } else {\r\n return this.savedQueries;\r\n }\r\n }\r\n\r\n get recentQueriesInContext(): DataQuery[] {\r\n if (this.isStudentSearch) {\r\n return this.information.recentStudentFilters;\r\n } else if (this.isStaffSearch) {\r\n return this.information.recentStaffFilters;\r\n } else if (this.isCourseSearch) {\r\n return this.information.recentCourseFilters;\r\n } else {\r\n return this.information.recentQueries;\r\n }\r\n }\r\n\r\n set recentQueriesInContext(value: DataQuery[]) {\r\n if (this.isStudentSearch) {\r\n this.information.recentStudentFilters = value;\r\n } else if (this.isStaffSearch) {\r\n this.information.recentStaffFilters = value;\r\n } else if (this.isCourseSearch) {\r\n this.information.recentCourseFilters = value;\r\n } else {\r\n this.information.recentQueries = value;\r\n }\r\n }\r\n\r\n get originalQuery(): DataQuery {\r\n if (this.isStudentSearch) {\r\n return this._originalStudentSearchQuery;\r\n } else {\r\n return this._originalDataQueryQuery;\r\n }\r\n }\r\n\r\n set originalQuery(value: DataQuery) {\r\n if (this.isStudentSearch) {\r\n this._originalStudentSearchQuery = value;\r\n } else {\r\n this._originalDataQueryQuery = value;\r\n }\r\n }\r\n\r\n get currentQuery(): DataQuery {\r\n if (this.isStudentSearch) {\r\n return this._currentStudentSearchQuery;\r\n } else {\r\n return this._currentDataQueryQuery;\r\n }\r\n }\r\n\r\n set currentQuery(value: DataQuery) {\r\n if (value == null) {\r\n value = new DataQuery();\r\n }\r\n if (value.QueryName == 'My Defaults') {\r\n value.QueryName = 'My Default';\r\n }\r\n value.organized = true;\r\n this.loadQuery(value);\r\n }\r\n\r\n get maximized(): boolean {\r\n return this._maximized;\r\n }\r\n\r\n set maximized(value: boolean) {\r\n this._maximized = value;\r\n this.observableMaximized.next(this._maximized);\r\n }\r\n\r\n get information(): DataQueryInformation {\r\n return this._information;\r\n }\r\n\r\n set information(value: DataQueryInformation) {\r\n this._information = value;\r\n this.observableInformation.next(this._information);\r\n }\r\n\r\n get preferences(): DataQueryPreferences {\r\n return this._preferences;\r\n }\r\n\r\n set preferences(value: DataQueryPreferences) {\r\n this._preferences = value;\r\n this.observablePreferences.next(this._preferences);\r\n }\r\n\r\n get results(): DataQueryResult {\r\n return this._results;\r\n }\r\n\r\n set results(value: DataQueryResult) {\r\n this._results = value;\r\n this.observableResults.next(this._results);\r\n }\r\n\r\n get currentTab(): string {\r\n return this._currentTab;\r\n }\r\n\r\n set currentTab(value: string) {\r\n this._previousTab = this._currentTab;\r\n this._currentTab = value;\r\n this.observableCurrentTab.next(this._currentTab);\r\n }\r\n\r\n get initialPageSize() {\r\n return 100;\r\n\r\n // ONE-4551: We are no longer using the preferences for this.\r\n // let pageSize = 100;\r\n // if (this.userPreferencesService.generalPreferences != null && this.userPreferencesService.generalPreferences.PageSize != null) {\r\n // pageSize = Number.parseInt(this.userPreferencesService.generalPreferences.PageSize, 10);\r\n // }\r\n // if (pageSize) {\r\n // return pageSize;\r\n // } else {\r\n // return 100;\t// This is the default page size of the application\r\n // }\r\n }\r\n\r\n /////////// Method /////////////////\r\n isInformationCached() {\r\n // POST: returns whether or not information is cached\r\n return this.cachedInformation;\r\n }\r\n\r\n ////////// Server Calls //////////\r\n getSavedQueries(isStudentSearch = this.isStudentSearch, isCourseSearch = this.isCourseSearch, isStaffSearch = this.isStaffSearch): Observable {\r\n // PRE: whether or not this is within the student search component or for student filters\r\n // POST: obtains the saved queries from the DB\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&isStudentSearch=' + isStudentSearch +\r\n '&isCourseSearch=' + isCourseSearch +\r\n '&isStaffSearch=' + isStaffSearch;\r\n return this.http.get(System.apiURL.Classroom + 'DataQueryGetSavedQueries' + queryString).pipe(\r\n map(queries => {\r\n if (!queries) {\r\n queries = [];\r\n }\r\n for (let i = 0; i < queries.length; i++) {\r\n queries[i] = System.convert(queries[i], new DataQuery());\r\n\r\n // Changing My Defaults => My Default...lovely\r\n if (queries[i].QueryName == 'My Defaults') {\r\n queries[i].QueryName = 'My Default';\r\n }\r\n\r\n // Setting up selected sites\r\n if (queries[i].Scope == 'Selected Sites') {\r\n queries[i].SelectedSiteNames = '';\r\n const schoolIds = queries[i].SelectedSites.split(',');\r\n schoolIds.forEach(schoolId => {\r\n const schoolIdNumber = parseInt(schoolId.trim(), 10);\r\n const school = this.yearService.schools.find(o => o.Id == schoolIdNumber);\r\n if (school) {\r\n if (queries[i].SelectedSiteNames.length != 0) {\r\n queries[i].SelectedSiteNames += ', ';\r\n }\r\n queries[i].SelectedSiteNames += school.SchoolName;\r\n }\r\n });\r\n }\r\n }\r\n if (isStudentSearch) {\r\n this._studentFilters = queries;\r\n } else if (isCourseSearch) {\r\n this._courseFilters = queries;\r\n } else if (isStaffSearch) {\r\n this._staffFilters = queries;\r\n } else {\r\n this._savedQueries = queries;\r\n }\r\n return queries;\r\n })\r\n );\r\n }\r\n\r\n getRecentQueries(isStudentSearch = this.isStudentSearch, isCourseSearch = this.isCourseSearch, isStaffSearch = this.isStaffSearch): Observable {\r\n // PRE: whether or not this is within the student search component\r\n // POST: obtains the recent recentQueries from the DB\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&isStudentSearch=' + isStudentSearch +\r\n '&isCourseSearch=' + isCourseSearch +\r\n '&isStaffSearch=' + isStaffSearch;\r\n return this.http.get(System.apiURL.Classroom + 'DataQueryGetRecentQueries' + queryString).pipe(\r\n map(queries => {\r\n // NOTE: we do this to overwrite 'My Defaults' with 'My Default'\r\n let returnedQueries = queries;\r\n if (!returnedQueries) {\r\n returnedQueries = [];\r\n }\r\n for (let i = 0; i < returnedQueries.length; i++) {\r\n returnedQueries[i] = System.convert(returnedQueries[i], new DataQuery());\r\n }\r\n returnedQueries.forEach(query => {\r\n if (query.QueryName == 'My Defaults') {\r\n query.QueryName = 'My Default';\r\n }\r\n });\r\n return returnedQueries;\r\n })\r\n );\r\n }\r\n\r\n getObjects(): Observable {\r\n // POST: obtains the data query objects from the DB\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryObjects' + queryString);\r\n }\r\n\r\n getCategories(): Observable {\r\n // POST: obtains the data query categories from the DB\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryCategories' + queryString);\r\n }\r\n\r\n getFields(): Observable {\r\n // POST: obtains the data query fields from the DB\r\n let reorganize = false;\r\n if (this.information.organized) {\r\n this.information.disorganize();\r\n reorganize = true;\r\n }\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryFields' + queryString).pipe(\r\n map(results => {\r\n if (reorganize) {\r\n this.information.organize();\r\n }\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n getUserCategories(): Observable {\r\n // POST: obtains the user's category numbers in V10 or an empty array in V9\r\n\r\n // Checking the cache\r\n if (this.userCategories) {\r\n return of(this.userCategories);\r\n }\r\n\r\n // If not cached, feting from the server\r\n if (this.loginService.LoginSettings.V10) {\r\n return this.http.get(System.apiURL.Classroom + 'GetV10UserCategoryIds').pipe(\r\n map(results => {\r\n this.userCategories = results;\r\n return this.userCategories;\r\n })\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n\r\n getDefaultQuery(): Observable {\r\n // POST: obtains the default query from the server\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Classroom + 'DataQueryGetMyDefaultsQuery' + queryString);\r\n }\r\n\r\n getInformation(): Observable {\r\n // POST: obtains all the relevant information from the server\r\n const serverCalls = forkJoin(\r\n this.getRecentQueries(false, false, false),\r\n this.getObjects(),\r\n this.getCategories(),\r\n this.getFields(),\r\n this.getUserCategories(),\r\n this.getDefaultQuery(),\r\n this.getRecentQueries(true, false, false),\r\n this.getRecentQueries(false, true, false),\r\n this.getRecentQueries(false, false, true),\r\n this.getOperators()\r\n );\r\n if (this.cachedInformation) {\r\n return of(this.information).pipe(take(1));\r\n } else {\r\n return serverCalls.pipe(\r\n retry(9),\r\n map(results => {\r\n const information = new DataQueryInformation();\r\n\r\n // Performing conversions\r\n for (let i = 0; i < results[0].length; i++) {\r\n results[0][i] = System.convert(results[0][i], new DataQuery());\r\n }\r\n for (let i = 0; i < results[1].length; i++) {\r\n results[1][i] = System.convert(results[1][i], new DataQueryObject());\r\n }\r\n for (let i = 0; i < results[2].length; i++) {\r\n results[2][i] = System.convert(results[2][i], new DataQueryCategory());\r\n }\r\n for (let i = 0; i < results[3].length; i++) {\r\n results[3][i] = System.convert(results[3][i], new DataQueryField());\r\n }\r\n results[5] = System.convert(results[5], new DataQuery());\r\n const defaultQuery = System.convert(results[5], new DataQuery());\r\n for (let i = 0; i < results[6].length; i++) {\r\n results[6][i] = System.convert(results[6][i], new DataQuery());\r\n }\r\n for (let i = 0; i < results[7].length; i++) {\r\n results[7][i] = System.convert(results[7][i], new DataQuery());\r\n }\r\n for (let i = 0; i < results[8].length; i++) {\r\n results[8][i] = System.convert(results[8][i], new DataQuery());\r\n }\r\n\r\n // Setting information\r\n information.recentQueries = results[0];\r\n information.objects = results[1];\r\n information.categories = results[2];\r\n information.fields = results[3];\r\n information.userCategories = results[4];\r\n information.recentStudentFilters = results[6];\r\n information.recentCourseFilters = results[7];\r\n information.recentStaffFilters = results[8];\r\n const recentDefault = information.recentQueries.find(query => query.ID == defaultQuery.ID);\r\n if (recentDefault) {\r\n information.defaultQuery = recentDefault;\r\n } else {\r\n information.defaultQuery = defaultQuery;\r\n this.information.recentQueries.push(defaultQuery);\r\n }\r\n information.organize();\r\n\r\n // Returning the information\r\n this.information = information;\r\n this.cachedInformation = true;\r\n\r\n // Returning the information\r\n return this.information;\r\n }),\r\n take(1)\r\n );\r\n }\r\n }\r\n\r\n getPermissions(): Observable {\r\n // POST: sets the permissions of the data query\r\n\r\n // If we've already set the permissions, simply return that\r\n if (this.permissions) {\r\n return of(this.permissions);\r\n }\r\n\r\n // Otherwise, get the permissions from the server and set it\r\n this.userPermissions = this.securityService.userPermissions;\r\n this.permissions = new DataQueryPermissions(this.userPermissions, this.loginService.LoginSettings.V10);\r\n return of(this.permissions);\r\n }\r\n\r\n getPreferences(): Observable {\r\n // POST: obtains the preferences from the server\r\n // NOTE: this is implemented this way so that it only needs to be called from DataQueryComponent\r\n if (this.cachedPreferences) {\r\n return of(this.preferences);\r\n } else {\r\n return this.userPreferencesService.getUserPreferences(0,\r\n '/OneSISDataQuery',\r\n 0,\r\n '',\r\n false\r\n ).pipe(\r\n map(results => {\r\n this.preferences = JSON.parse(results[0]);\r\n this.userPreferencesService.dataQueryPreferences = this.preferences;\r\n this.cachedPreferences = true;\r\n return this.preferences;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getLegacyQueries(): Observable {\r\n // POST: obtains the legacy queries from the server\r\n\r\n // If we already have the legacy queries, just use that\r\n if (this.legacyQueries) {\r\n return of(this.legacyQueries);\r\n }\r\n\r\n // Otherwise, get the queries from the server\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetSavedQueriesFromLegacy' + queryString).pipe(\r\n map(results => {\r\n this.legacyQueries = results;\r\n for (let i = 0; i < this.legacyQueries.length; i++) {\r\n System.convert(this.legacyQueries[i], new DataQuery());\r\n }\r\n return this.legacyQueries;\r\n })\r\n );\r\n }\r\n\r\n getFunctions(): Observable {\r\n // POST: obtains the functions from the server\r\n if (this.functions) {\r\n return of(this.functions);\r\n } else {\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryFunctions').pipe(\r\n map(functions => {\r\n this.functions = functions;\r\n for (let i = 0; i < this.functions.length; i++) {\r\n this.functions[i] = System.convert(this.functions[i], new DataQueryFunction());\r\n }\r\n return this.functions;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getOperators(): Observable {\r\n // POST: obtains the operators from the server\r\n if (this.operators) {\r\n return of(this.operators);\r\n } else {\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryOperators').pipe(\r\n map(operators => {\r\n this.operators = operators;\r\n for (let i = 0; i < this.operators.length; i++) {\r\n this.operators[i] = System.convert(this.operators[i], new DataQueryOperator());\r\n }\r\n return this.operators;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getParameters(): Observable {\r\n // POST: obtain the parameters from the server\r\n if (this.parameters) {\r\n return of(this.parameters);\r\n } else {\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryParameters').pipe(\r\n map(parameters => {\r\n this.parameters = parameters;\r\n for (let i = 0; i < this.parameters.length; i++) {\r\n this.parameters[i] = System.convert(this.parameters[i], new DataQueryParameter());\r\n }\r\n return this.parameters;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getRelationships(fields?: DataQueryField[], forCurrentQuery = true): Observable {\r\n // PRE: a list of fields to get relationships for\r\n // POST: returns a list of data query relationships\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n if (!fields) {\r\n fields = this.getAllFields(this.currentQuery);\r\n // fields = this.currentQuery.allFields;\r\n } else {\r\n fields.forEach(field => {\r\n field.object = null;\r\n field.category = null;\r\n });\r\n }\r\n\r\n // We have to preserve the filters because the following can eliminate them\r\n const filters = [];\r\n if (forCurrentQuery) {\r\n for (let i = 0; i < this.currentQuery.filterFields.length; i++) {\r\n filters.push(this.currentQuery.filterFields[i].Filters);\r\n }\r\n }\r\n\r\n // We have to remove the transformation fields to avoid a null error on the DTO\r\n const transformationFields = [];\r\n for (let i = 0; i < fields.length; i++) {\r\n transformationFields[i] = fields[i].TransformationFields;\r\n delete fields[i].TransformationFields;\r\n }\r\n\r\n // Returning the request\r\n return this.postRequest('GetDataQueryRelationships', queryString, fields).pipe(\r\n map(relationships => {\r\n // NOTE: we do this processing to prevent overwriting whatever relationships are present\r\n\r\n // We only do this if we're manipulating the query\r\n if (forCurrentQuery) {\r\n\r\n // Resetting the transformation fields\r\n for (let i = 0; i < fields.length; i++) {\r\n fields[i].TransformationFields = transformationFields[i];\r\n }\r\n\r\n // Using the right relationship array\r\n let retRelationships = [];\r\n if (forCurrentQuery) {\r\n retRelationships = this.currentQuery.relationships;\r\n for (let i = 0; i < this.currentQuery.filterFields.length; i++) {\r\n this.currentQuery.filterFields[i].Filters = filters[i];\r\n }\r\n }\r\n\r\n // Removing erroneous relationships from the current query\r\n let l = retRelationships.length;\r\n while (l) {\r\n l -= 1;\r\n if (!relationships.find(rel => rel.ID == this.currentQuery.relationships[l].ID)) {\r\n retRelationships.splice(l, 1);\r\n }\r\n }\r\n\r\n // Adding new relationships\r\n relationships.forEach(relationship => {\r\n if (!this.currentQuery.relationships.find(rel =>\r\n (rel.Category1ID == relationship.Category1ID && rel.Category2ID == relationship.Category2ID)\r\n || (rel.Category2ID == relationship.Category1ID && rel.Category1ID == relationship.Category2ID))\r\n ) {\r\n retRelationships.push(relationship);\r\n }\r\n });\r\n\r\n // Returning the relationships\r\n this.currentQuery.relationships = retRelationships;\r\n return retRelationships;\r\n } else {\r\n return relationships;\r\n }\r\n }),\r\n catchError(err => {\r\n\r\n // Resetting the transformation fields\r\n for (let i = 0; i < fields.length; i++) {\r\n fields[i].TransformationFields = transformationFields[i];\r\n }\r\n\r\n // Throwing the error to higher handlers\r\n console.log('Error');\r\n console.log(err);\r\n throw (err);\r\n })\r\n );\r\n }\r\n\r\n saveQuery(query: DataQuery, _callback: Function, _error?: Function, includeValidation = true, forImport = false): void {\r\n // PRE: a query to save\r\n // POST: performs the validation (if includeValidation is true) then saves the query to the server\r\n\r\n // The service call as a utility function\r\n const serverCall = () => {\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&siteSectionId=' + query.siteSectionId;\r\n\r\n // Setting the XML for saving\r\n let exportSettings = query.QueryXML.substring(query.QueryXML.indexOf(''), query.QueryXML.indexOf(''));\r\n query.QueryXML = this.getQueryXML(this.getAllFields(query, false, true));\r\n if (exportSettings != undefined && exportSettings != '') {\r\n // ONE -10727\r\n const exportTypeXML = exportSettings.substring(exportSettings.indexOf(''), exportSettings.indexOf(''));\r\n exportSettings = exportSettings.replace(exportTypeXML + '', '');\r\n exportSettings += '' + query.ExportType + '';\r\n query.QueryXML = query.QueryXML.replace('', exportSettings + '
' + '');\r\n }\r\n query.QueryXML = query.QueryXML;\r\n\r\n // The default query is \"my default\"\r\n // but the DTO expects my defaults for some reason\r\n if (query.QueryName == 'My Default') {\r\n query.QueryName = 'My Defaults';\r\n }\r\n if (query.ID <= 0) {\r\n query.OwnerName = this.userService.currentUser.LastName + ', ' + this.userService.currentUser.FirstName;\r\n }\r\n\r\n // Sending the save request\r\n const saveSubscription = this.postRequest('DataQuerySaveQuery', queryString, query).subscribe(results => {\r\n if (results[0] == 'Success') {\r\n\r\n // The default query is \"my default\"\r\n // but the DTO expects my defaults for some reason\r\n if (query.QueryName == 'My Defaults') {\r\n query.QueryName = 'My Default';\r\n }\r\n\r\n // Setting the query's data\r\n query.ID = parseInt(results[1], 10);\r\n this.savedQueryModified = false;\r\n query.queryChanged = false;\r\n\r\n // Setting the query as a recent query (to preserve data) (context-sensitive)\r\n if (!query.Deleted) {\r\n let queryFound = false;\r\n this.recentQueriesInContext.forEach((recentQuery: DataQuery) => {\r\n if (recentQuery.ID == query.ID) {\r\n Object.assign(recentQuery, query);\r\n queryFound = true;\r\n }\r\n });\r\n if (!queryFound) {\r\n this.recentQueriesInContext.unshift(query);\r\n }\r\n }\r\n\r\n // If the current query is the deleted query, set it's ID to -1\r\n if (this.currentQuery.Deleted && this.currentQuery == query) {\r\n this.currentQuery.ID = -1;\r\n }\r\n\r\n if (this._savedQueries == undefined || this._savedQueries == null) {\r\n this._savedQueries = [];\r\n }\r\n\r\n // Performing manipulations of saved queries (context-sensitive)\r\n this.savedQueriesInContext.pipe(take(1)).subscribe(queries => {\r\n\r\n // Adding or removing it to the saved queries\r\n if (!query.Deleted) {\r\n\r\n // When Overwrite query, delete it and then readd it\r\n const indexOfSavedQuery = queries.findIndex(savedQuery => savedQuery.ID == query.ID);\r\n if (indexOfSavedQuery >= 0) {\r\n queries.splice(indexOfSavedQuery, 1);\r\n }\r\n\r\n // Adding it if we cannot find it\r\n if (queries && !queries.find(savedQuery => savedQuery.ID == query.ID)) {\r\n queries.push(query);\r\n }\r\n } else {\r\n if (queries) {\r\n const indexOfSavedQuery = queries.findIndex(savedQuery => savedQuery.ID == query.ID);\r\n if (indexOfSavedQuery >= 0) {\r\n queries.splice(indexOfSavedQuery, 1);\r\n }\r\n }\r\n }\r\n });\r\n // Showing confirmation\r\n this.sharedService.showGoodSnackbar();\r\n } else {\r\n\r\n // Showing error notice\r\n this.sharedService.showBadSnackbar();\r\n }\r\n if (_callback) {\r\n _callback(results);\r\n }\r\n saveSubscription.unsubscribe();\r\n });\r\n };\r\n\r\n // Performing validation if we need to\r\n if (includeValidation) {\r\n this.validateQuery(\r\n () => {\r\n serverCall();\r\n },\r\n () => {\r\n // this.sharedService.showBadSnackbar();\r\n if (_error) {\r\n _error();\r\n }\r\n },\r\n forImport,\r\n query\r\n );\r\n } else {\r\n serverCall();\r\n }\r\n }\r\n\r\n deleteQuery(query: DataQuery, _callback: Function, _error?: Function): void {\r\n // PRE: a query to delete\r\n // POST: flags the query for deletion and saves it\r\n query.Deleted = true;\r\n this.saveQuery(query, _callback, _error, false);\r\n }\r\n\r\n updateRecentQueries(query: DataQuery): Observable {\r\n // PRE: a queryId to set as recent\r\n // POST: sets the query as a recent query\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&queryId=' + query.ID +\r\n '&isStudentSearch=' + this.isStudentSearch +\r\n '&isCourseSearch=' + this.isCourseSearch +\r\n '&isStaffSearch=' + this.isStaffSearch;\r\n return this.http.get(System.apiURL.Classroom + 'DataQueryUpdateRecentQueries' + queryString).pipe(\r\n map(results => {\r\n for (let i = 0; i < results.length; i++) {\r\n if (results[i].QueryName == 'My Defaults') {\r\n results[i].QueryName = 'My Default';\r\n }\r\n if (results[i].ID == query.ID) {\r\n results[i] = query;\r\n } else {\r\n results[i] = System.convert(results[i], new DataQuery());\r\n }\r\n }\r\n this.recentQueriesInContext = results;\r\n if (!this.recentQueriesInContext.find(recentFilter => recentFilter.ID == this.currentQuery.ID)) {\r\n this.recentQueriesInContext.push(this.currentQuery);\r\n }\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n importQueryFromLegacy(importedQuery): Observable {\r\n // PRE: a query object that is used for persistence of the server\r\n // POST: returns the legacy query while maintaining some persistence with this query\r\n // NOTE: this does not perform the object assignment for you, in case you want to maintain some of your data\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.postRequest('ImportQueryFromLegacy', queryString, importedQuery);\r\n }\r\n\r\n getFilterOptions(filter: DataQueryFieldFilter, categoryId = 0, eForm = false): Observable {\r\n // PRE: a filter to obtain the filter options for. The filter must have a field or the categoryId must be set.\r\n // POST: returns a list of lookups and automatically sets the filter options of the filter\r\n // NOTE: this will just return the filter options of the filter if its set\r\n if (filter.FilterOptions && filter.FilterOptions.length > 0) {\r\n return of(filter.FilterOptions);\r\n }\r\n let queryString = '';\r\n // TODO: this shouldn't exist. Ever. We shouldn't add context dependent variables to the service.\r\n if (eForm == true) {\r\n queryString = '?dataQueryFieldId=' + (filter ? filter.ID : filter.FilterID) +\r\n '&dataQueryCategoryId=' + (filter ? filter.CategoryID : categoryId) +\r\n '&userId=' + this.userService.currentUser.Id;\r\n } else {\r\n queryString = '?dataQueryFieldId=' + (filter.field ? filter.field.ID : filter.FilterID) +\r\n '&dataQueryCategoryId=' + (filter.field ? filter.field.CategoryID : categoryId) +\r\n '&userId=' + this.userService.currentUser.Id;\r\n }\r\n\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryFieldLookupReadByFieldId' + queryString).pipe(\r\n map(results => {\r\n results.sort((a: Lookup, b: Lookup) => {\r\n return a.Sequence - b.Sequence;\r\n });\r\n filter.FilterOptions = results;\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n getFilterOptionsByField(field: DataQueryField): Observable {\r\n if (field.FilterOptions && field.FilterOptions.length > 0) {\r\n return of(field.FilterOptions);\r\n }\r\n let queryString = '';\r\n queryString = '?dataQueryFieldId=' + (field.ID) +\r\n '&dataQueryCategoryId=' + (field.CategoryID) +\r\n '&userId=' + this.userService.currentUser.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryFieldLookupReadByFieldId' + queryString).pipe(\r\n map(results => {\r\n results.sort((a: Lookup, b: Lookup) => {\r\n return a.Sequence - b.Sequence;\r\n });\r\n field.FilterOptions = results;\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n validateTransformationFunctions(xml, index): Observable {\r\n // PRE: XML to be validates\r\n // POST: validates the transformation functions found within the supplied XML\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&index=' + index +\r\n '&siteSectionId=' + this.currentQuery.siteSectionId;\r\n return this.http.post(System.apiURL.Classroom + 'ValidateTransformationFunctions' + queryString, [xml]);\r\n }\r\n\r\n getPreviewResults(): Observable {\r\n // POST: obtains a single set of results for preview\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&index=' + 0 +\r\n '&siteSectionId=' + this.currentQuery.siteSectionId;\r\n const xml = this.getQueryXML(this.getAllFields());\r\n return this.http.post(System.apiURL.Classroom + 'DataQueryPreviewResults' + queryString, [xml]).pipe(\r\n map(results => {\r\n for (let i = 0; i < results.length; i++) {\r\n if (this.currentQuery.reportFields.length > i) {\r\n this.currentQuery.reportFields[i].PreviewData = results[i];\r\n }\r\n }\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n getResults(getChunkedResults: boolean, _callback?: Function, _error?: Function, getRelationshipsBeforeResults = false, callFromStudentSearch = false, siteIds = '') {\r\n // POST: obtains a page of results from the server or composes a page based on the data we have\r\n // Getting relationships before we try to get results\r\n if (this.currentQuery.queryChangedSinceLastResult || (!this.loginService.LoginSettings.V10 && this.isHasEdited == true)) {\r\n let pageToGet = 0;\r\n let resultsPerPage = 0;\r\n this.nextPageSubscriptions.forEach(sub => {\r\n sub.unsubscribe();\r\n });\r\n let observable = of(this.currentQuery.relationships);\r\n if (getRelationshipsBeforeResults) {\r\n observable = this.getRelationships();\r\n }\r\n observable.pipe(take(1)).subscribe(() => {\r\n\r\n\r\n // Enforcing transformation fields (in case we haven't until this point)\r\n this.currentQuery.reportFields.forEach(field => {\r\n if (!field.TransformationFields || field.TransformationFields.length == 0) {\r\n this.transFunctionChanged(field);\r\n }\r\n });\r\n\r\n // Starting from the query XML\r\n const xml = this.getQueryXML(this.getAllFields(), true);\r\n\r\n // Resetting result properties if we've changed the query since the last results\r\n if (this.currentQuery.queryChangedSinceLastResult) {\r\n this.resetResultProperties();\r\n pageToGet = 1;\r\n }\r\n\r\n // Creating helper functions\r\n const updateResultsPerPage = () => {\r\n this.pageCount = Math.ceil(this.recordCount / resultsPerPage);\r\n };\r\n\r\n // Initializing the calls\r\n let errorCount = 0;\r\n\r\n let queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&page=' + pageToGet +\r\n '&recordsPerPage=' + resultsPerPage +\r\n '&siteSectionId=' + this.currentQuery.siteSectionId +\r\n '&callFromStudentSearch=' + callFromStudentSearch +\r\n '&siteIds=' + siteIds;\r\n\r\n // Checking for errors\r\n const dataQueryFormError: any = {};\r\n if (!this.loginService.LoginSettings.V10) {\r\n for (let i = 0; i < this.currentQuery.reportFields.length; i++) {\r\n if (this.currentQuery.reportFields[i].Alias == '') {\r\n dataQueryFormError.blankAlias = true;\r\n }\r\n const upperAlias = (this.currentQuery.reportFields[i].Alias == null ? this.currentQuery.reportFields[i].DisplayName : this.currentQuery.reportFields[i].Alias);\r\n for (let j = i + 1; j < this.currentQuery.reportFields.length; j++) {\r\n const innerAlias = (this.currentQuery.reportFields[j].Alias == null ? this.currentQuery.reportFields[j].DisplayName : this.currentQuery.reportFields[j].Alias);\r\n if (upperAlias.toLowerCase() == innerAlias.toLowerCase()) {\r\n errorCount = 1;\r\n dataQueryFormError.duplicateAlias = upperAlias;\r\n }\r\n }\r\n }\r\n if (dataQueryFormError.blankAlias == '') {\r\n errorCount += 1;\r\n }\r\n }\r\n\r\n // If there are no errors, get the results\r\n if (errorCount == 0) {\r\n // const xml = this.getQueryXML(this.currentQuery.reportFields);\r\n let isGetResultsFinished = false;\r\n const isGetCountFinished = false;\r\n\r\n // ONE-6403: If more than 10,000 records, warn the user\r\n this.http.post(System.apiURL.Classroom + 'GetDataQueryResultCount' + queryString, [xml]).pipe(take(1)).subscribe(\r\n (count: number) => {\r\n let dialogChoice = of(true);\r\n\r\n // Showing a dialog if we got a negative number (indicating an error)\r\n if (count < 0) {\r\n const dialogBox = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n data: {\r\n headerLabel: 'Too Many Records',\r\n informational: true,\r\n confirmMessage: 'Your request will pull too many records. Update your filters to return less records.'\r\n }\r\n });\r\n dialogChoice = dialogBox.afterClosed().pipe(map(() => { return false }));\r\n }\r\n\r\n // Showing a dialog if there are more than 10,000 records\r\n if (count > 10000) {\r\n const dialogBox = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n data: {\r\n headerLabel: 'WARNING',\r\n warning: true,\r\n confirmMessage: 'Your request will pull ' + count.toLocaleString() + ' records. This process may take several minutes.',\r\n secondMessage: 'Do you want to proceed?',\r\n okButtonLabel: 'Continue'\r\n }\r\n });\r\n dialogChoice = dialogBox.afterClosed();\r\n }\r\n dialogChoice.subscribe(choice => {\r\n\r\n // If the user chooses to continue (or no dialog was shown), obtain the results\r\n if (choice) {\r\n\r\n // Updating the record count\r\n this.recordCount = count;\r\n updateResultsPerPage();\r\n\r\n // Obtaining the results by page\r\n if (this.recordCount > 10000 && getChunkedResults) {\r\n pageToGet = 1;\r\n resultsPerPage = 100000;\r\n queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&page=' + pageToGet +\r\n '&recordsPerPage=' + resultsPerPage +\r\n '&siteSectionId=' + this.currentQuery.siteSectionId +\r\n '&callFromStudentSearch=' + callFromStudentSearch +\r\n '&siteIds=' + siteIds;\r\n }\r\n this.postRequest('GetDataQueryResults', queryString, [xml]).subscribe(\r\n (results) => {\r\n\r\n // Ensuring results exist\r\n if (!results) {\r\n return;\r\n }\r\n\r\n // Converting the results\r\n results = System.convert(results, new DataQueryResult());\r\n\r\n // Setting query SQL based on result SQL\r\n this.sqlErrors = results.Errors;\r\n this.currentQuery.SQLScript = results.QueryString;\r\n this.currentQuery.SQLScript.replace('\\r\\n', '
');\r\n this.currentQuery.SQLScript.replace('\\t', '    ');\r\n\r\n // Checking for disable fields\r\n this.disabledFieldInReport = false;\r\n if (results.Data && results.Data.length > 0) {\r\n for (let i = 0; i < results.Data[0].length; i++) {\r\n if (results.Data[0][i] == '[-[-**Disabled**-]-]') {\r\n this.disabledFieldInReport = true;\r\n }\r\n }\r\n }\r\n\r\n // Ensuring the headers have the right semantic data type\r\n // TODO: this change is for ONE-3481, where a column that only has numbers is VARCHAR. Ultimately, we should change the data types to be semantically correct.\r\n if (this.V10) {\r\n for (let i = 0; i < results.Columns.length; i++) {\r\n if (results.Columns[i].DataType == 'VARCHAR' || results.Columns[i].DataType == 'NVARCHAR') {\r\n let onlyNumbers = true;\r\n let allBlank = true;\r\n for (let j = 0; j < results.Data.length; j++) {\r\n if (results.Data[j][i] && results.Data[j][i] != '') {\r\n allBlank = false;\r\n }\r\n if (results.Data[j][i] && Number.isNaN(Number(results.Data[j][i]))) {\r\n onlyNumbers = false;\r\n break;\r\n }\r\n }\r\n if (onlyNumbers && allBlank == false) {\r\n results.Columns[i].DataType = 'NUMERIC';\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!this.loginService.LoginSettings.V10) {\r\n results.Data.forEach(datum => {\r\n for (let i = 0; i < datum.length; i++) {\r\n if (datum[i]) {\r\n datum[i] = datum[i].trim();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Converting the result data to the right data time\r\n this.fixDataTypes(results);\r\n\r\n this.results = results;\r\n if (getChunkedResults && resultsPerPage > 0) {\r\n let totalPages = Math.floor(this.recordCount / resultsPerPage);\r\n if (this.recordCount % resultsPerPage > 0) {\r\n totalPages++;\r\n }\r\n if (totalPages > 1) {\r\n this.getRemainingPages(2, resultsPerPage, totalPages, xml);\r\n }\r\n }\r\n\r\n // Resetting query data\r\n if (this.currentQuery.queryChangedSinceLastResult) {\r\n this.resetPageIndex = true;\r\n }\r\n updateResultsPerPage();\r\n this.currentQuery.queryChangedSinceLastResult = false;\r\n if (_callback != null) {\r\n _callback(results);\r\n }\r\n },\r\n () => {\r\n isGetResultsFinished = true;\r\n if (_error != null) {\r\n _error();\r\n }\r\n },\r\n () => {\r\n isGetResultsFinished = true;\r\n }\r\n );\r\n }\r\n\r\n // If the user decides to cancel, take them to the filters tab\r\n else {\r\n this.currentTab = 'Filters';\r\n }\r\n });\r\n }\r\n );\r\n } else {\r\n if (_error != null) {\r\n _error(dataQueryFormError);\r\n }\r\n }\r\n\r\n // Marking that we've received the latest result\r\n this.currentQuery.queryChangedSinceLastResult = false;\r\n });\r\n } else {\r\n this.results = this.results;\r\n _callback(this.results);\r\n }\r\n }\r\n\r\n saveDataQueryResult(data: DataQueryResult): Observable {\r\n let queryString = '';\r\n queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.postRequest('SaveDataQueryResults', queryString, data);\r\n }\r\n\r\n fixDataTypes(results: DataQueryResult) {\r\n // Converting the result data to the right data time\r\n results.Data.forEach(datum => {\r\n for (let i = 0; i < datum.length; i++) {\r\n if (results.Columns[i].Visible) {\r\n switch (results.Columns[i].DataType) {\r\n\r\n // Booleans\r\n case 'BIT':\r\n datum[i] = datum[i] == '1';\r\n break;\r\n\r\n // PHONE\r\n case 'PHONE':\r\n if (datum[i] && datum[i].trim().length >= 10) {\r\n datum[i] = '(' + datum[i].substring(0, 3) + ') ' + datum[i].substring(3, 6) + '-' + datum[i].substring(6, datum[i].length);\r\n } else {\r\n datum[i] = datum[i];\r\n }\r\n break;\r\n\r\n // Decimals\r\n case 'DECIMAL':\r\n case 'NUMERIC':\r\n case 'FLOAT':\r\n case 'REAL':\r\n if (datum[i] && datum[i].trim() != '') {\r\n datum[i] = Number.parseFloat(datum[i] as string);\r\n }\r\n break;\r\n\r\n // Integers\r\n case 'INT':\r\n case 'BIGINT':\r\n case 'TINYINT':\r\n if (datum[i]) {\r\n datum[i] = Number.parseInt(datum[i] as string, 10);\r\n }\r\n break;\r\n\r\n // Dates (WE DON'T CONVERT BECAUSE YOU CAN CHANGE HOW THEY DISPLAY)\r\n case 'SMALLDATETIME':\r\n case 'DATETIME':\r\n case 'DATE':\r\n case 'DATETIME2':\r\n case 'DATETIMEOFFSET':\r\n break;\r\n\r\n // They are natively strings, so do nothing\r\n case 'IMAGE':\r\n case 'VARCHAR':\r\n case 'CHAR':\r\n case 'NVARCHAR':\r\n case 'NCHAR':\r\n case 'NTEXT':\r\n case 'BINARY':\r\n case 'VARBINARY':\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n getRemainingPages(pageToGet: number, recordsPerPage: number, totalPages: number, xml: string) {\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&page=' + pageToGet +\r\n '&recordsPerPage=' + recordsPerPage +\r\n '&siteSectionId=' + this.currentQuery.siteSectionId;\r\n this.nextPageSubscriptions.push(this.postRequest('GetDataQueryNextPage', queryString, [xml]).subscribe(results => {\r\n results = System.convert(results, new DataQueryResult());\r\n this.fixDataTypes(results);\r\n this.results.assertOrder(results);\r\n const page = new PagedContent(pageToGet, results);\r\n this.observableNextPageResults.next(page);\r\n if (pageToGet < totalPages) {\r\n this.getRemainingPages(pageToGet + 1, recordsPerPage, totalPages, xml);\r\n }\r\n }));\r\n }\r\n\r\n getResultsAsString(): Observable {\r\n // POST: obtains the results of the query as a string\r\n\r\n // Setting the query XML\r\n this.currentQuery.QueryXML = this.getQueryXML(this.getAllFields(), true);\r\n const currentQuery = _.cloneDeep(this.currentQuery);\r\n\r\n // ONE-7785 CouldFlare blocks the request which contains SQL string.\r\n if (this.loginService.LoginSettings.V10 == false) {\r\n currentQuery.SQLScript = '';\r\n\r\n // Remove circular structure to JSON\r\n if (currentQuery.reportFields != undefined && currentQuery.reportFields.length > 0) {\r\n currentQuery.reportFields.forEach(rField => {\r\n if (rField.object != undefined) {\r\n rField.object = null;\r\n }\r\n if (rField.category != undefined) {\r\n rField.category = null;\r\n }\r\n });\r\n }\r\n if (currentQuery.sortFields != undefined && currentQuery.sortFields.length > 0) {\r\n currentQuery.sortFields.forEach(sField => {\r\n // Remove circular structure to JSON\r\n if (sField.object != undefined) {\r\n sField.object = null;\r\n }\r\n if (sField.category != undefined) {\r\n sField.category = null;\r\n }\r\n });\r\n }\r\n if (currentQuery.filterFields != undefined && currentQuery.filterFields.length > 0) {\r\n currentQuery.filterFields.forEach(fField => {\r\n // Remove circular structure to JSON\r\n if (fField.object != undefined) {\r\n fField.object = null;\r\n }\r\n if (fField.category != undefined) {\r\n fField.category = null;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Composing the service call\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&siteSectionId=' + this.currentQuery.siteSectionId;\r\n return this.postRequest('DataQueryGetResultsAsString', queryString, currentQuery);\r\n }\r\n\r\n getResultPDF(printParameters: PrintParameters): Observable {\r\n // POST: obtains a string representing a result pdf\r\n\r\n // Setting the query XML\r\n this.currentQuery.QueryXML = this.getQueryXML(this.getAllFields(), true);\r\n\r\n // Composing the service call\r\n this.information.disorganize(); // We have to manually disorganize because we have to stringify it beforehand\r\n this.currentQuery.disorganize();\r\n const postParams = [\r\n this.currentQuery.QueryXML,\r\n JSON.stringify(printParameters),\r\n JSON.stringify(this.currentQuery.reportFields),\r\n this.yearService.defaultYear.SchoolName,\r\n this.yearService.defaultYear.Description\r\n ];\r\n this.information.organize(); // We have to manually reorganize because we have to stringify it beforehand\r\n this.currentQuery.organize(this.information, this.V10);\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&page=1' +\r\n '&recordsPerPage=0' +\r\n '&siteSectionId=' + this.currentQuery.siteSectionId;\r\n return this.http.post(System.apiURL.Classroom + 'DQGeneratePDF' + queryString, postParams).pipe(\r\n map(results => {\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n getReportTemplateXML(queryId: number): Observable {\r\n let xml = '';\r\n if (queryId) {\r\n const queryString = '?queryId=' + queryId;\r\n return this.http.get(System.apiURL.Classroom + 'DQGetReportTemplate' + queryString).pipe(\r\n map(report => {\r\n if (report.Id > 0) {\r\n xml += '';\r\n xml += '' + report.Name + '';\r\n xml += '';\r\n xml += '';\r\n }\r\n return xml;\r\n })\r\n );\r\n }\r\n }\r\n\r\n ////////// Utility Methods //////////\r\n postRequest(urlExtension, queryString, data): Observable {\r\n // PRE: a url extension to send the request to, the query string, and the data to send\r\n // POST: performs the request and ensures there there is no circular data\r\n // NOTE: this is intended to be used on any post request where you send fields or queries\r\n // \t \t This was decided between the trade-off of bi-directional references or manual searching\r\n\r\n // Reorganize utility function\r\n const organize = () => {\r\n this.information.organize();\r\n this.currentQuery.organize(this.information, this.loginService.LoginSettings.V10);\r\n if (data instanceof DataQuery) {\r\n data.organize(this.information, this.loginService.LoginSettings.V10);\r\n }\r\n };\r\n\r\n // Checking for organization\r\n let reorganize = false;\r\n if (this.cachedInformation) {\r\n if (this.information.organized) {\r\n this.information.disorganize();\r\n reorganize = true;\r\n }\r\n if (this.currentQuery.organized) {\r\n this.currentQuery.disorganize();\r\n reorganize = true;\r\n }\r\n if (data instanceof DataQuery && data.organized) {\r\n data.disorganize();\r\n reorganize = true;\r\n }\r\n }\r\n return this.http.post(System.apiURL.Classroom + urlExtension + queryString, data).pipe(\r\n map(results => {\r\n if (reorganize) {\r\n organize();\r\n }\r\n return results;\r\n }),\r\n catchError(err => {\r\n if (reorganize) {\r\n organize();\r\n }\r\n console.log('Error');\r\n console.log(err);\r\n throw (err);\r\n })\r\n );\r\n }\r\n\r\n checkDeactivationAndChange(value: DataQuery) {\r\n // POST: checks if the query has unsaved changes, then changes if the dialog allows\r\n // NOTE: this should be the only way the current query changes outside of the service and synchronization\r\n // NOTE: this also doesn't do ANYTHING if another instance of this hasn't resolved\r\n if (value != this.currentQuery && !this.blocking) {\r\n this.blocking = true;\r\n if (value == null) {\r\n value = new DataQuery();\r\n }\r\n const canDeactivate = this.showWarning();\r\n if (canDeactivate instanceof Observable) {\r\n const subscription = canDeactivate.subscribe(result => {\r\n if (subscription) { // Sometimes, this is undefined ???\r\n subscription.unsubscribe();\r\n }\r\n if (result) {\r\n this.currentQuery = value;\r\n }\r\n this.blocking = false;\r\n });\r\n } else {\r\n if (canDeactivate) {\r\n this.currentQuery = value;\r\n }\r\n this.blocking = false;\r\n }\r\n }\r\n }\r\n\r\n showWarning(): Observable | Promise | boolean {\r\n // PRE: the user tries to perform an action which may need to be blocked\r\n // POST: Shows the warning dialog. Then, performs the following functions:\r\n // \t\tIf 2, saves the query and continues and returns true\r\n // \t\tIf 1, saves the query as a new query and returns true\r\n // \t\tIf 0, continues without saving the query and returns true\r\n // \t\tIf -1, returns false\r\n if (\r\n this.currentQuery.queryChanged\r\n && this.unsavedChanges == false\r\n && (\r\n this.permissions.canUserCreateDistrictQuery\r\n || this.permissions.canUserCreateSchoolQuery\r\n || this.permissions.canUserCreatePrivateQuery\r\n )\r\n ) {\r\n const dialogBox = this.dialog.open(DataQueryUnsavedChangesDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n userCanOverwrite: this.checkUserCanOverwriteQuery(),\r\n currentQuery: this.currentQuery,\r\n unsavedChanges: false\r\n }\r\n });\r\n return dialogBox.afterClosed().pipe(\r\n map(result => {\r\n switch (result) {\r\n\r\n // Save query\r\n case 2:\r\n if (this.currentQuery.QueryName != undefined) {\r\n this.currentQuery.QueryXML = this.getQueryXML(this.getAllFields());\r\n this.saveQuery(\r\n this.currentQuery,\r\n (results) => {\r\n const returnMessage = results[0];\r\n if (returnMessage == 'Success') {\r\n this.currentQuery.ID = parseInt(results[1], 10);\r\n this.currentQuery.queryChanged = false;\r\n this.currentQuery.queryChangedSinceLastResult = false;\r\n } else {\r\n this.dialog.open(WarningDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n query: this.currentQuery,\r\n warningMessage: results[0],\r\n allowOverwrite: false\r\n }\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n\r\n // If it was an existing query, open it for editing\r\n if (this.currentQuery.ID > 0) {\r\n this.openAddEditQuery(\r\n this.currentQuery,\r\n true,\r\n false\r\n );\r\n }\r\n\r\n // If it was not an existing query, open it for adding\r\n else {\r\n this.openAddEditQuery(\r\n this.currentQuery,\r\n false,\r\n false,\r\n (returnedQuery: DataQuery) => {\r\n if (returnedQuery) {\r\n Object.assign(this.currentQuery, returnedQuery);\r\n this.updateRecentQueries(this.currentQuery).pipe(take(1)).subscribe();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n return true;\r\n\r\n // Save query as new\r\n case 1:\r\n const savedQuery = _.cloneDeep(this.currentQuery);\r\n this.openAddEditQuery(\r\n savedQuery,\r\n false,\r\n false,\r\n (returnedQuery: DataQuery) => {\r\n if (returnedQuery) {\r\n\r\n // If it was a new query, set that to the returned query and update the recents with the current\r\n if (this.currentQuery.ID <= 0) {\r\n Object.assign(this.currentQuery, returnedQuery);\r\n this.updateRecentQueries(this.currentQuery).pipe(take(1)).subscribe();\r\n }\r\n\r\n // If it was an existing query, set the current to the new query and update the recents with the new\r\n else {\r\n this.currentQuery = returnedQuery;\r\n }\r\n }\r\n }\r\n );\r\n return true;\r\n\r\n // Continue\r\n case 0:\r\n return true;\r\n\r\n // Cancel\r\n case -1:\r\n return false;\r\n default:\r\n return false;\r\n }\r\n })\r\n );\r\n } else if (this.loginService.LoginSettings.V10 == false && this.unsavedChanges == true) {\r\n\r\n const dialogBox = this.dialog.open(DataQueryUnsavedChangesDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n userCanOverwrite: false,\r\n currentQuery: this.currentQuery,\r\n unsavedChanges: true\r\n }\r\n });\r\n return dialogBox.afterClosed().pipe(\r\n map(result => {\r\n switch (result) {\r\n\r\n // Save query\r\n case 2:\r\n this.observableSaveResult.next(true);\r\n this.unsavedChanges = false;\r\n return true;\r\n\r\n // Save query as new\r\n case 1:\r\n this.unsavedChanges = false;\r\n return true;\r\n\r\n // Continue\r\n case 0:\r\n this.unsavedChanges = false;\r\n return true;\r\n\r\n // Cancel\r\n case -1:\r\n return false;\r\n default:\r\n return false;\r\n }\r\n })\r\n );\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n openAddEditQuery(query = new DataQuery(), forEdit = false, forImport = false, callback?: Function) {\r\n // POST: opens the add-edit query dialog with the right data\r\n const dialogBox = this.dialog.open(AddEditQueryDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n query: query,\r\n forEdit: forEdit,\r\n forImport: forImport,\r\n dataQueryService: this\r\n }\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(returnedQuery => {\r\n subscription.unsubscribe();\r\n if (callback) {\r\n callback(returnedQuery);\r\n }\r\n });\r\n }\r\n\r\n checkUserCanOverwriteQuery() {\r\n // POST: returns true if the user can overwrite this query\r\n if (!this.currentQuery) {\r\n return false;\r\n } else {\r\n if (this.currentQuery.OwnerID == this.userService.currentUser.Id) {\r\n if (this.currentQuery.Scope == 'Private') {\r\n return this.permissions.canUserCreatePrivateQuery;\r\n } else if (this.currentQuery.Scope == 'Selected Sites') {\r\n return this.permissions.canUserCreateSchoolQuery;\r\n } else if (this.currentQuery.Scope == 'District') {\r\n return this.permissions.canUserCreateDistrictQuery;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n loadQuery(query: DataQuery) {\r\n // POST: loads a query\r\n if (this.isStudentSearch) {\r\n this._currentStudentSearchQuery = query;\r\n } else {\r\n this._currentDataQueryQuery = query;\r\n }\r\n\r\n // Mark as loading\r\n this.loadingQuery = true;\r\n\r\n // Setting the initial settings\r\n if (query.ID >= 0) {\r\n if (this.isStaffSearch) {\r\n query.StaffSearch = true;\r\n }\r\n if (this.isCourseSearch) {\r\n query.CourseSearch = true;\r\n }\r\n if (this.isStudentSearch) {\r\n query.StudentSearch = true;\r\n }\r\n const updateSubscription = this.updateRecentQueries(query).subscribe(() => {\r\n updateSubscription.unsubscribe();\r\n });\r\n }\r\n\r\n // Loading the query\r\n if (query && this.permissions) {\r\n this.loadDataFromXML(query, this.importQueryClick);\r\n this.importQueryClick = false;\r\n }\r\n\r\n // Unmark as loading\r\n this.loadingQuery = false;\r\n query.xmlLoaded = true;\r\n\r\n // Setting the current query to its original state if it has unsaved changes\r\n if (this.currentQuery.queryChanged && this.originalQuery.ID == this.currentQuery.ID) {\r\n Object.assign(this.currentQuery, this.originalQuery);\r\n }\r\n\r\n // Maintaining the original data\r\n Object.assign(this.originalQuery, this.currentQuery);\r\n\r\n // Setting the current query with the now-loaded data\r\n this.observableCurrentQuery.next(this.currentQuery);\r\n }\r\n\r\n loadDataFromXML(query: DataQuery, importQueryClick?: boolean) {\r\n // POST: obtains the query object from the query's XML\r\n\r\n // Checking the XML exists\r\n if (!query.QueryXML) {\r\n return;\r\n }\r\n const xml = query.QueryXML;\r\n query.xmlLoaded = true;\r\n\r\n // Loading the query\r\n this.getObjectFromXML(xml, query, importQueryClick);\r\n }\r\n\r\n getObjectFromXML(xml, query?: DataQuery, importQueryClick?: boolean): DataQuery {\r\n // POST: returns a query object from an xml string\r\n\r\n // Creating query object\r\n if (!query) {\r\n query = new DataQuery();\r\n } else {\r\n query.reportFields = [];\r\n query.filterFields = [];\r\n query.sortFields = [];\r\n query.relationships = [];\r\n }\r\n\r\n // Loading the query XML\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(xml, 'text/xml');\r\n const distinctNode = xmlDoc.getElementsByTagName('Distinct')[0];\r\n if (distinctNode && distinctNode.childNodes.length > 0) {\r\n query.distinct = distinctNode.childNodes[0].nodeValue == 'true';\r\n } else {\r\n query.distinct = false;\r\n }\r\n const currentYearOnlyNode = xmlDoc.getElementsByTagName('CurrentYearOnly')[0];\r\n if (currentYearOnlyNode && currentYearOnlyNode.childNodes.length > 0) {\r\n query.currentYearOnly = currentYearOnlyNode.childNodes[0].nodeValue == 'true';\r\n } else {\r\n query.currentYearOnly = true;\r\n }\r\n if (xmlDoc.getElementsByTagName('CurrentSchoolOnly').length > 0 && xmlDoc.getElementsByTagName('CurrentSchoolOnly')[0].childNodes.length > 0) {\r\n query.currentSchoolOnly = xmlDoc.getElementsByTagName('CurrentSchoolOnly')[0].childNodes[0].nodeValue != 'false';\r\n } else {\r\n query.currentSchoolOnly = true;\r\n }\r\n if (xmlDoc.getElementsByTagName('CurrentlyActiveStudentsOnly') != undefined && xmlDoc.getElementsByTagName('CurrentlyActiveStudentsOnly').length > 0 && xmlDoc.getElementsByTagName('CurrentlyActiveStudentsOnly')[0].childNodes.length > 0) {\r\n query.currentlyActiveStudentsOnly = xmlDoc.getElementsByTagName('CurrentlyActiveStudentsOnly')[0].childNodes[0].nodeValue != 'false';\r\n } else {\r\n query.currentlyActiveStudentsOnly = true;\r\n }\r\n\r\n if (this.V10 == false) {\r\n query.currentSchoolOnly = true;\r\n query.currentYearOnly = true;\r\n }\r\n\r\n this.distinct = JSON.parse(JSON.stringify(query.distinct));\r\n this.currentYearOnly = JSON.parse(JSON.stringify(query.currentYearOnly));\r\n this.currentSchoolOnly = JSON.parse(JSON.stringify(query.currentSchoolOnly));\r\n this.currentlyActiveStudentsOnly = JSON.parse(JSON.stringify(query.currentlyActiveStudentsOnly));\r\n\r\n\r\n // Getting query header information\r\n if (xmlDoc.getElementsByTagName('CourseName').length > 0 && xmlDoc.getElementsByTagName('CourseName')[0].childNodes.length > 0 && xmlDoc.getElementsByTagName('SiteSectionID').length > 0 && xmlDoc.getElementsByTagName('SiteSectionID')[0].childNodes.length > 0) {\r\n const courseNameNode = xmlDoc.getElementsByTagName('CourseName')[0];\r\n if (courseNameNode && courseNameNode.childNodes.length > 0) {\r\n query.courseName = System.xmlToText(courseNameNode.childNodes[0].nodeValue);\r\n } else {\r\n query.courseName = '';\r\n }\r\n // this.siteSectionId = parseInt(xmlDoc.getElementsByTagName(\"SiteSectionID\")[0].childNodes[0].nodeValue, 10);\r\n const siteSectionNode = xmlDoc.getElementsByTagName('SiteSectionID')[0];\r\n if (siteSectionNode && siteSectionNode.childNodes.length > 0) {\r\n query.siteSectionId = System.xmlToText(siteSectionNode.childNodes[0].nodeValue);\r\n } else {\r\n query.siteSectionId = 0;\r\n }\r\n if (typeof query.siteSectionId == 'string' && query.siteSectionId.length == 0) {\r\n query.siteSectionId = 0;\r\n }\r\n } else {\r\n query.courseName = '';\r\n query.siteSectionId = 0;\r\n }\r\n if (!this.permissions || !this.permissions.canUserQueryAllYears) {\r\n query.currentYearOnly = true;\r\n }\r\n\r\n // Obtaining the objects from the xml, starting at the fields\r\n const fieldNodes = xmlDoc.getElementsByTagName('Field');\r\n for (let i = 0; i < fieldNodes.length; i++) {\r\n\r\n // Getting base values\r\n let fieldName = '';\r\n let categoryName = '';\r\n let objectName = '';\r\n let object: DataQueryObject = null;\r\n let category: DataQueryCategory = null;\r\n let field: DataQueryField = null;\r\n\r\n // Helper Function\r\n const getNodeValue = (nodeName: string, dataType?: string): (string | number | boolean) => {\r\n const nodes = fieldNodes[i].getElementsByTagName(nodeName);\r\n if (nodes.length > 0 && nodes[0].childNodes.length > 0) {\r\n let value = '';\r\n if (nodes[0].childNodes[0].nodeName.includes('text')) {\r\n value = System.xmlToText(nodes[0].childNodes[0].nodeValue);\r\n } else {\r\n value = System.xmlToText(nodes[0].childNodes[0]['outerHTML']) as string;\r\n }\r\n switch (dataType) {\r\n case 'number':\r\n return parseInt(value, 10);\r\n case 'boolean':\r\n return value == 'true';\r\n default:\r\n return value && value != 'undefined' && value != 'null' ? value : '';\r\n }\r\n } else {\r\n return null;\r\n }\r\n };\r\n const processNode = (nodeName: string, dataType?: string) => {\r\n field[nodeName] = getNodeValue(nodeName, dataType);\r\n };\r\n\r\n // Setting values\r\n const fieldID = getNodeValue('FieldID', 'number') as number;\r\n const catID = getNodeValue('CategoryID', 'number') as number;\r\n const fieldCategory = this.information.getField(f => f.ID == fieldID && f.CategoryID == catID);\r\n fieldName = getNodeValue('FieldName') as string;\r\n categoryName = getNodeValue('CategoryName') as string;\r\n if (!this.loginService.LoginSettings.V10 && fieldCategory != null && categoryName != null && (categoryName == 'null' || categoryName == 'undefined' || categoryName.trim() == '')) {\r\n categoryName = fieldCategory.CategoryName;\r\n }\r\n objectName = getNodeValue('ObjectName') as string;\r\n\r\n // Finding the appropriate field and setting it's names\r\n object = this.information.objects.find(o => o.ObjectName == objectName);\r\n if (object != null) {\r\n category = this.information.categories.find(c => c.CategoryName == categoryName && c.ObjectID == object.ID);\r\n }\r\n if (category == null) {\r\n category = this.information.categories.find(c =>\r\n c.ID == catID\r\n && c.ObjectID == object.ID\r\n && c.fields\r\n && c.fields.find(f =>\r\n f.ID == fieldID\r\n )\r\n );\r\n }\r\n if (category != null) {\r\n field = this.information.getField(f => f.FieldName == fieldName && f.CategoryID == category.ID);\r\n }\r\n if (field != null) {\r\n field.CategoryName = category.CategoryName;\r\n field.ObjectName = object.ObjectName;\r\n } else {\r\n\r\n // If we haven't found a field yet, try from the bottom up\r\n field = this.information.getField(f => f.ID == fieldID && f.CategoryID == catID);\r\n category = this.information.categories.find(c => c.ID == catID);\r\n if (!this.loginService.LoginSettings.V10 && field != null) {\r\n category = this.information.categories.find(c => c.ID == catID && c.CategoryName == field.CategoryName);\r\n }\r\n\r\n // If we have a category and a field, set up the object\r\n if (field != null && category != null) {\r\n field.CategoryName = category.CategoryName;\r\n const obj = this.information.objects.find(o => o.ID == category.ObjectID);\r\n if (obj != null) {\r\n field.ObjectName = obj.ObjectName;\r\n }\r\n }\r\n\r\n // If the names don't match, create a new data query field with the right properties\r\n if (field == null || (\r\n fieldName != null && fieldName != '' &&\r\n field.FieldName != fieldName\r\n ) || (\r\n category != null &&\r\n categoryName != null && categoryName != '' &&\r\n category.CategoryName != categoryName\r\n )) {\r\n\r\n // Already set data\r\n field = new DataQueryField();\r\n field.FieldName = fieldName;\r\n field.CategoryName = categoryName;\r\n field.ObjectName = objectName;\r\n field.CategoryID = catID;\r\n field.ID = fieldID;\r\n if (importQueryClick && fieldName != '') {\r\n field.IsCalculated = true;\r\n }\r\n }\r\n }\r\n\r\n // Getting data from the XML\r\n if (field.DisplayName) {\r\n field.Alias = field.DisplayName;\r\n }\r\n processNode('SortDirection');\r\n processNode('SortOrder', 'number');\r\n processNode('Break');\r\n processNode('Alias');\r\n processNode('ShowOnReport', 'boolean');\r\n processNode('IsConstant', 'boolean');\r\n processNode('ConstantValue');\r\n if (importQueryClick != true || field.IsCalculated == undefined || field.IsCalculated == null) {\r\n processNode('IsCalculated', 'boolean');\r\n }\r\n\r\n processNode('DataType');\r\n processNode('IsDefaultFilterField', 'boolean');\r\n processNode('IsDuplicate', 'boolean');\r\n processNode('TransformationFunction');\r\n\r\n // We perform old operations if the transformation function isn't an XML\r\n const transFunctionNodes = fieldNodes[i].getElementsByTagName('TransformationFunction');\r\n let transFunctionIsXML = transFunctionNodes.length > 0 && transFunctionNodes[0].children.length > 0;\r\n\r\n // If we don't have a transformation function, just create a default one\r\n if (!field.TransformationFunction) {\r\n const fieldNode = document.createElement('Field');\r\n fieldNode.setAttribute('Id', field.ID.toString());\r\n fieldNode.setAttribute('FieldName', field.FieldName.toString());\r\n fieldNode.setAttribute('CategoryId', field.CategoryID.toString()); // We have to supply this because V9 has id collisions...\r\n fieldNode.setAttribute('CategoryName', category.CategoryName.toString()); // We have to supply this because V9 has id collisions...\r\n fieldNode.setAttribute('ObjectId', object.ID.toString());\r\n fieldNode.setAttribute('ObjectName', field.ObjectName.toString());\r\n field.TransformationFunction = fieldNode.outerHTML;\r\n transFunctionIsXML = true;\r\n }\r\n\r\n // Setting up the initial function text\r\n if (transFunctionIsXML) {\r\n field.FunctionText = this.transFunctionInterpreter(field.TransformationFunction);\r\n } else {\r\n field.FunctionText = field.TransformationFunction;\r\n }\r\n if (field.FunctionText == null || field.FunctionText == 'undefined') {\r\n field.FunctionText = '';\r\n }\r\n if (field.DisplayName == DataQueryFieldFilter.courseFilterDisplayName && typeof query.siteSectionId == 'string' && query.siteSectionId.toString().length > 0) {\r\n const sSIds = query.siteSectionId.toString().split(',');\r\n for (let x = 0; x < sSIds.length; x++) {\r\n const tmpCourse = this.classroomSummaryService.myClasses.find(c => c.Id == parseInt(sSIds[x], 10));\r\n if (tmpCourse == null) {\r\n // TODO: tmpCourse = _.findWhere(this.classroomSummaryService.allTermClasses, { Id: parseInt(sSIds[x]) });\r\n }\r\n if (tmpCourse != null) {\r\n // TODO: this.classroomSummaryService.rosterFilteredClasses.push(tmpCourse);\r\n }\r\n }\r\n }\r\n\r\n // Setting the fields transformation function\r\n field.TransformationFields = [];\r\n if (field.TransformationFunction) {\r\n\r\n // ONE-10973: We now use XML, so we only use the old process if we find no XML children\r\n if (!transFunctionIsXML) {\r\n\r\n // Getting the trans fields\r\n const transFields = [];\r\n const transNodes = fieldNodes[i].getElementsByTagName('TransformationField');\r\n for (let t = 0; t < transNodes.length; t++) {\r\n const transField = {\r\n fieldId: -1,\r\n categoryId: -1,\r\n position: 0,\r\n sql: ''\r\n };\r\n let tf: DataQueryField = null;\r\n let transFieldName = '';\r\n let transCategoryName = '';\r\n let transObjectName = '';\r\n let categoryFromName: DataQueryCategory = null;\r\n let objectFromName: DataQueryObject = null;\r\n if (transNodes[t].getElementsByTagName('FieldName').length > 0 && transNodes[t].getElementsByTagName('FieldName')[0].childNodes.length > 0) {\r\n transFieldName = System.xmlToText(transNodes[t].getElementsByTagName('FieldName')[0].childNodes[0].nodeValue);\r\n }\r\n if (transNodes[t].getElementsByTagName('CategoryName').length > 0 && transNodes[t].getElementsByTagName('CategoryName')[0].childNodes.length > 0) {\r\n transCategoryName = System.xmlToText(transNodes[t].getElementsByTagName('CategoryName')[0].childNodes[0].nodeValue);\r\n }\r\n if (transNodes[t].getElementsByTagName('ObjectName').length > 0 && transNodes[t].getElementsByTagName('ObjectName')[0].childNodes.length > 0) {\r\n transObjectName = System.xmlToText(transNodes[t].getElementsByTagName('ObjectName')[0].childNodes[0].nodeValue);\r\n }\r\n objectFromName = this.information.objects.find(o => o.ObjectName.toLowerCase() == transObjectName.toLowerCase());\r\n if (objectFromName != null) {\r\n categoryFromName = objectFromName.categories.find(c => c.CategoryName.toLowerCase() == transCategoryName.toLowerCase());\r\n }\r\n if (categoryFromName != null) {\r\n tf = categoryFromName.fields.find(f => f.FieldName.toLowerCase() == transFieldName.toLowerCase());\r\n }\r\n\r\n // If the tf is null, we ought to do some processing to check for previous versions\r\n if (tf == null) {\r\n let transFieldId = -1;\r\n let transCategoryId = -1;\r\n if (transNodes[t].getElementsByTagName('FieldID')[0].childNodes.length > 0) {\r\n transFieldId = (parseInt(transNodes[t].getElementsByTagName('FieldID')[0].childNodes[0].nodeValue, 10));\r\n if (transNodes[t].getElementsByTagName('CategoryID').length > 0) {\r\n if (transNodes[t].getElementsByTagName('CategoryID')[0].childNodes.length > 0) {\r\n transCategoryId = (parseInt(transNodes[t].getElementsByTagName('CategoryID')[0].childNodes[0].nodeValue, 10));\r\n\r\n tf = this.information.getField(f => f.ID == transFieldId && f.CategoryID == transCategoryId);\r\n let tc = this.information.categories.find(c => c.ID == transCategoryId);\r\n if (!this.loginService.LoginSettings.V10 && tf != null) {\r\n tc = this.information.categories.find(c => c.ID == transCategoryId && c.CategoryName == tf.CategoryName);\r\n }\r\n if ((tf != null && transFieldName != '' && tf.FieldName != transFieldName) || (tc != null && transCategoryName != '' && transCategoryName != 'null' && tc.CategoryName != transCategoryName)) {\r\n tf = null;\r\n }\r\n if (tf != null && tc != null && (objectFromName == null || objectFromName == undefined || categoryFromName == null || categoryFromName == undefined)) {\r\n categoryFromName = tc;\r\n const transObject = this.information.objects.find(o => o.ID == categoryFromName.ObjectID);\r\n if (transObject != null) {\r\n objectFromName = transObject;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // If the transformation field isn't null, set up it's properties and add it to the list\r\n // NOTE: we set the function text here because, otherwise, it won't actually match a field\r\n if (tf != null) {\r\n transField.fieldId = tf.ID;\r\n transField.categoryId = tf.CategoryID;\r\n const tfCategory = this.information.categories.find(c => c.ID == tf.CategoryID);\r\n let viewName = '';\r\n if (tfCategory != null) {\r\n viewName = tfCategory.ViewName;\r\n } else {\r\n console.warn('No tfCategory for transField sql');\r\n }\r\n if (field.FunctionText) {\r\n if (this.loginService.LoginSettings.V10) {\r\n // ONE-5786 - we shouldn't be converting the user entered text to lowercase. Use a case-insensitive regEx instead\r\n // field.FunctionText = field.FunctionText.toLowerCase().replace('vw' + viewName.toLowerCase() + '.[' + tf.FieldName.toLowerCase() + ']', this.getTransFunctionText(tf));\r\n let searchString = 'vw' + viewName + '.[' + tf.FieldName + ']';\r\n // escape regex special characters\r\n searchString = searchString.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n const regEx = new RegExp(searchString, 'ig');\r\n const replaceString = this.getTransFunctionText(tf);\r\n field.FunctionText = field.FunctionText.replace(regEx, replaceString);\r\n field.FunctionText = field.FunctionText.replace(searchString, replaceString);\r\n } else {\r\n field.FunctionText = field.FunctionText.replace('vw' + viewName + '.[' + tf.FieldName + ']', '[' + tf.ObjectName + '.' + tf.CategoryName + '.' + tf.DisplayName + ']');\r\n }\r\n } else {\r\n field.FunctionText = this.getTransFunctionText(tf);\r\n }\r\n transField.sql = 'vw' + viewName + '.[' + tf.FieldName + ']';\r\n if (transNodes[t].getElementsByTagName('Position')[0].childNodes.length > 0) {\r\n transField.position = (parseInt(transNodes[t].getElementsByTagName('Position')[0].childNodes[0].nodeValue, 10));\r\n }\r\n transFields.push(transField);\r\n }\r\n\r\n // If, after all this processing, TF is null, then we're in error\r\n if (tf == null) {\r\n field.FunctionText = this.getTransFunctionText(field);\r\n }\r\n }\r\n\r\n // Adding the transformation fields to the data query field\r\n for (let x = 0; x < transFields.length; x++) {\r\n const tr = transFields.find(f => f.position == x);\r\n if (tr != null) {\r\n field.TransformationFields.push(tr);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Setting up the field's function text if not transformation function is present\r\n else {\r\n field.FunctionText = this.getTransFunctionText(field);\r\n if (category == null) {\r\n console.warn('No category for field.TransformationField sql');\r\n }\r\n field.TransformationFields.push({\r\n fieldId: field.ID,\r\n categoryId: field.CategoryID,\r\n position: 0,\r\n sql: null\r\n });\r\n }\r\n\r\n // ONE-12636: Always parse the function text to get the XML\r\n const parseResult = this.transFunctionParser(field.FunctionText);\r\n field.TransformationFunction = parseResult.transFunction;\r\n\r\n // ONE-14123: The field must always match a field within the transformation function\r\n if (!parseResult.fields.find(transField => transField.ID == field.ID)) {\r\n if (parseResult.fields.length > 0) {\r\n field.ID = parseResult.fields[0].ID;\r\n field.CategoryID = parseResult.fields[0].CategoryID;\r\n field.CategoryName = parseResult.fields[0].CategoryName;\r\n field.ObjectName = parseResult.fields[0].category.ObjectName;\r\n } else {\r\n field.ID = -1;\r\n field.CategoryID = -1;\r\n field.CategoryName = '';\r\n field.ObjectName = '';\r\n }\r\n }\r\n\r\n // Putting the field in the reports and sorts if it should be there\r\n if (field.ShowOnReport) {\r\n query.reportFields.push(_.cloneDeep(field));\r\n if (!field.IsDuplicate) {\r\n query.sortFields.push(field);\r\n }\r\n }\r\n\r\n // Obtaining its filters\r\n const filters: DataQueryFieldFilter[] = [];\r\n const filterNodes = fieldNodes[i].getElementsByTagName('Filter');\r\n for (let f = 0; f < filterNodes.length; f++) {\r\n const filter = new DataQueryFieldFilter();\r\n if (filterNodes[f].getElementsByTagName('FilterID')[0].childNodes.length > 0) {\r\n filter.FilterID = parseInt(filterNodes[f].getElementsByTagName('FilterID')[0].childNodes[0].nodeValue, 10);\r\n DataQueryService.filterFieldId = Math.max(filter.FilterID + 1, DataQueryService.filterFieldId);\r\n }\r\n if (filterNodes[f].getElementsByTagName('Operator')[0].childNodes.length > 0) {\r\n filter.Operator = System.xmlToText(filterNodes[f].getElementsByTagName('Operator')[0].childNodes[0].nodeValue);\r\n }\r\n if (filterNodes[f].getElementsByTagName('Value')[0].childNodes.length > 0) {\r\n filter.Value = System.xmlToText(filterNodes[f].getElementsByTagName('Value')[0].childNodes[0].nodeValue);\r\n }\r\n if (filterNodes[f].getElementsByTagName('Value2')[0] && filterNodes[f].getElementsByTagName('Value2')[0].childNodes.length > 0) {\r\n filter.Value2 = System.xmlToText(filterNodes[f].getElementsByTagName('Value2')[0].childNodes[0].nodeValue);\r\n }\r\n if (filterNodes[f].getElementsByTagName('Group')[0].childNodes.length > 0) {\r\n filter.Group = System.xmlToText(filterNodes[f].getElementsByTagName('Group')[0].childNodes[0].nodeValue);\r\n }\r\n if (filterNodes[f].getElementsByTagName('UseCurrentDate1')[0].childNodes.length > 0) {\r\n filter.UseCurrentDate1 = filterNodes[f].getElementsByTagName('UseCurrentDate1')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n if (filterNodes[f].getElementsByTagName('UseCurrentDate2')[0].childNodes.length > 0) {\r\n filter.UseCurrentDate2 = filterNodes[f].getElementsByTagName('UseCurrentDate2')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n if (filterNodes[f].getElementsByTagName('UseFilterForStudentSearch').length > 0 && filterNodes[f].getElementsByTagName('UseFilterForStudentSearch')[0].childNodes.length > 0) {\r\n filter.UseFilterForStudentSearch = filterNodes[f].getElementsByTagName('UseFilterForStudentSearch')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n if (filterNodes[f].getElementsByTagName('IsStudentFilter').length > 0 && filterNodes[f].getElementsByTagName('IsStudentFilter')[0].childNodes.length > 0) {\r\n filter.IsStudentFilter = filterNodes[f].getElementsByTagName('IsStudentFilter')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n if (filterNodes[f].getElementsByTagName('StudentFilterId').length > 0 && filterNodes[f].getElementsByTagName('StudentFilterId')[0].childNodes.length > 0) {\r\n filter.StudentFilterId = parseInt(filterNodes[f].getElementsByTagName('StudentFilterId')[0].childNodes[0].nodeValue, 10);\r\n }\r\n if (filterNodes[f].getElementsByTagName('UseFilterForCourseSearch').length > 0 && filterNodes[f].getElementsByTagName('UseFilterForCourseSearch')[0].childNodes.length > 0) {\r\n filter.UseFilterForCourseSearch = filterNodes[f].getElementsByTagName('UseFilterForCourseSearch')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n if (filterNodes[f].getElementsByTagName('UseFilterForStaffSearch').length > 0 && filterNodes[f].getElementsByTagName('UseFilterForStaffSearch')[0].childNodes.length > 0) {\r\n filter.UseFilterForStaffSearch = filterNodes[f].getElementsByTagName('UseFilterForStaffSearch')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n if (filterNodes[f].getElementsByTagName('IsCourseFilter').length > 0 && filterNodes[f].getElementsByTagName('IsCourseFilter')[0].childNodes.length > 0) {\r\n filter.IsCourseFilter = filterNodes[f].getElementsByTagName('IsCourseFilter')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n if (filterNodes[f].getElementsByTagName('CourseFilterId').length > 0 && filterNodes[f].getElementsByTagName('CourseFilterId')[0].childNodes.length > 0) {\r\n filter.CourseFilterId = parseInt(filterNodes[f].getElementsByTagName('CourseFilterId')[0].childNodes[0].nodeValue, 10);\r\n }\r\n\r\n if (filterNodes[f].getElementsByTagName('ApplyToAll').length > 0 && filterNodes[f].getElementsByTagName('ApplyToAll')[0].childNodes.length > 0) {\r\n filter.ApplyToAll = filterNodes[f].getElementsByTagName('ApplyToAll')[0].childNodes[0].nodeValue == 'true';\r\n }\r\n const filterOptions = [];\r\n const filterOptionNodes = filterNodes[f].getElementsByTagName('FilterOptions');\r\n for (let o = 0; o < filterOptionNodes.length; o++) {\r\n const filterOption = {\r\n Id: '',\r\n Code: '',\r\n CodeDescription: '',\r\n Sequence: ''\r\n };\r\n if (\r\n filterOptionNodes[o].getElementsByTagName('Id')[0]\r\n && filterOptionNodes[o].getElementsByTagName('Id')[0].childNodes.length > 0\r\n ) {\r\n filterOption.Id = System.xmlToText(filterOptionNodes[o].getElementsByTagName('Id')[0].childNodes[0].nodeValue);\r\n }\r\n if (\r\n filterOptionNodes[o].getElementsByTagName('Code')[0]\r\n && filterOptionNodes[o].getElementsByTagName('Code')[0].childNodes.length > 0\r\n ) {\r\n filterOption.Code = System.xmlToText(filterOptionNodes[o].getElementsByTagName('Code')[0].childNodes[0].nodeValue);\r\n }\r\n if (\r\n filterOptionNodes[o].getElementsByTagName('CodeDescription')[0]\r\n && filterOptionNodes[o].getElementsByTagName('CodeDescription')[0].childNodes.length > 0\r\n ) {\r\n filterOption.CodeDescription = System.xmlToText(filterOptionNodes[o].getElementsByTagName('CodeDescription')[0].childNodes[0].nodeValue);\r\n }\r\n if (\r\n filterOptionNodes[o].getElementsByTagName('Sequence')[0]\r\n && filterOptionNodes[o].getElementsByTagName('Sequence')[0].childNodes.length > 0\r\n ) {\r\n filterOption.Sequence = System.xmlToText(filterOptionNodes[o].getElementsByTagName('Sequence')[0].childNodes[0].nodeValue);\r\n }\r\n filterOptions.push(filterOption);\r\n }\r\n filter.FilterOptions = filterOptions;\r\n\r\n // date filter for v9\r\n if (!this.loginService.LoginSettings.V10 && field.FilterType != undefined && field.FilterType != null && field.FilterType == 1) {\r\n if (filter.Value != undefined && filter.Value != null && filter.Value != '') {\r\n filter.dateValue = new Date(filter.Value.toString());\r\n }\r\n if (filter.Value2 != undefined && filter.Value2 != null && filter.Value2 != '') {\r\n filter.dateValue2 = new Date(filter.Value2.toString());\r\n }\r\n }\r\n\r\n if (\r\n this.loginService.LoginSettings.V10\r\n || this.isStudentSearch || filter.UseFilterForStudentSearch\r\n || this.isCourseSearch || filter.UseFilterForCourseSearch\r\n || this.isStaffSearch || filter.UseFilterForStaffSearch\r\n ) {\r\n filters.push(filter);\r\n }\r\n\r\n // If the filter is using current dates, set the date values accordingly\r\n if (filter.UseCurrentDate1) {\r\n filter.dateValue = new Date();\r\n filter.Value = filter.dateValue.toISOString();\r\n }\r\n if (filter.UseCurrentDate2) {\r\n filter.dateValue2 = new Date();\r\n filter.Value = filter.dateValue2.toISOString();\r\n }\r\n }\r\n\r\n // Setting the filters to the field, now that it's complete\r\n if (filters.length > 0) {\r\n field.Filters = filters;\r\n filters.forEach(filter => {\r\n filter.field = field;\r\n });\r\n query.filterFields.push(field);\r\n }\r\n }\r\n\r\n // Setting up the relationships in the query\r\n const relationshipNodes = xmlDoc.getElementsByTagName('Relationship');\r\n query.relationships = [];\r\n for (let r = 0; r < relationshipNodes.length; r++) {\r\n const relationship = {\r\n ID: parseInt(relationshipNodes[r].getElementsByTagName('RelationshipID')[0].childNodes[0].nodeValue, 10),\r\n Category1ID: parseInt(relationshipNodes[r].getElementsByTagName('Category1ID')[0].childNodes[0].nodeValue, 10),\r\n Category1Name: '',\r\n Category2ID: parseInt(relationshipNodes[r].getElementsByTagName('Category2ID')[0].childNodes[0].nodeValue, 10),\r\n Category2Name: '',\r\n Type: System.xmlToText(relationshipNodes[r].getElementsByTagName('JoinType')[0].childNodes[0].nodeValue),\r\n Deleted: false,\r\n SwapPrimaryObject: false,\r\n Object1Name: '',\r\n Object2Name: '',\r\n Visiable: true,\r\n Field1ID: undefined,\t// TODO: This should be something\r\n Field2ID: undefined\t\t// TODO: This should be something\r\n };\r\n const category1 = this.information.categories.find(c => c.ID == relationship.Category1ID);\r\n const category2 = this.information.categories.find(c => c.ID == relationship.Category2ID);\r\n if (category1 != undefined) {\r\n const object = this.information.objects.find(o => o.ID == category1.ObjectID);\r\n if (object != null) {\r\n if (!this.loginService.LoginSettings.V10 && (object.ObjectName == 'Student User-Defined' || object.ObjectName == 'Programs and Services' || object.ObjectName == 'Assessments' || object.ObjectName == 'Assessments Best')) {\r\n relationship.Category1Name = object.ObjectName;\r\n relationship.Object1Name = object.ObjectName;\r\n } else {\r\n if (this.loginService.LoginSettings.V10) {\r\n relationship.Category1Name = category1.CategoryName;\r\n } else {\r\n relationship.Category1Name = category1.CategoryName;\r\n relationship.Object1Name = object.ObjectName;\r\n }\r\n\r\n }\r\n }\r\n }\r\n if (category2 != undefined) {\r\n const object = this.information.objects.find(o => o.ID == category2.ObjectID);\r\n if (object != null) {\r\n if (!this.loginService.LoginSettings.V10 && (object.ObjectName == 'Student User-Defined' || object.ObjectName == 'Programs and Services' || object.ObjectName == 'Assessments' || object.ObjectName == 'Assessments Best')) {\r\n relationship.Category2Name = object.ObjectName;\r\n relationship.Object2Name = object.ObjectName;\r\n } else {\r\n if (this.loginService.LoginSettings.V10) {\r\n relationship.Category2Name = category2.CategoryName;\r\n } else {\r\n relationship.Object2Name = object.ObjectName;\r\n relationship.Category2Name = category2.CategoryName;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // use for display .. ONE-6879\r\n if ((relationship.Object1Name == relationship.Object2Name) || (query.relationships.filter(o => (o.Object1Name == relationship.Object1Name && o.Object2Name == relationship.Object2Name) || (o.Object1Name == relationship.Object2Name && o.Object2Name == relationship.Object1Name)).length > 0)) {\r\n relationship.Visiable = false;\r\n } else {\r\n relationship.Visiable = true;\r\n }\r\n\r\n query.relationships.push(relationship);\r\n }\r\n\r\n // Returning the query\r\n return query;\r\n }\r\n\r\n transFunctionParser(functionText: string): { transFunction: string, fields: DataQueryField[], errors: string[] } {\r\n // PRE: function text, which is pseudo-SQL\r\n // POST: parses the function text to create an XML string representing the transformation function\r\n const xml = document.createElement('TransformationFunction');\r\n const fields: DataQueryField[] = [];\r\n const errors: string[] = [];\r\n\r\n // If we don't have any function text, return nothing\r\n if (!functionText) {\r\n return {\r\n transFunction: '',\r\n fields: [],\r\n errors: []\r\n };\r\n }\r\n\r\n // Helper functions\r\n const findParenthetical = (start: number): { start: number, end: number, argEndIndexes: number[] } => {\r\n // PRE: the start index in our current function text\r\n // POST: returns the first set of matching parenthesis, as well as the indexes for its commas\r\n\r\n // Finding the outermost parentheses\r\n const parenthesisIndexPairs: { [currentParenthesis: number]: { start: number, end: number, argEndIndexes: number[] } } = {};\r\n let parenthesisDepth = 0;\r\n let isQuote = false;\r\n let isField = false;\r\n for (let i = start; i < functionText.length; i++) {\r\n if (!parenthesisIndexPairs[parenthesisDepth]) {\r\n parenthesisIndexPairs[parenthesisDepth] = { start: -1, end: -1, argEndIndexes: [] };\r\n }\r\n\r\n // We need to maintain a escaped state\r\n if (functionText[i] == '\"') {\r\n isQuote = !isQuote;\r\n }\r\n if (!isQuote) {\r\n if (functionText[i] == '[') {\r\n isField = true;\r\n }\r\n if (functionText[i] == ']' && isField) {\r\n isField = false;\r\n }\r\n }\r\n if (!isField && !isQuote) {\r\n\r\n // Start of parenthesis means we need to set that as a start and increment our depth\r\n if (functionText[i] == '(') {\r\n parenthesisIndexPairs[parenthesisDepth].start = i;\r\n parenthesisDepth += 1;\r\n }\r\n\r\n // End of parenthesis means we need to set that as the end and decrement our depth\r\n else if (functionText[i] == ')') {\r\n parenthesisDepth -= 1;\r\n parenthesisIndexPairs[parenthesisDepth].end = i;\r\n\r\n // If our current parenthsis is 0, we've found a complete node, so it's ready for parsing\r\n if (parenthesisDepth == 0) {\r\n\r\n // The last parenthesis also forms a function arg\r\n parenthesisIndexPairs[0].argEndIndexes.push(i);\r\n\r\n // Returning the current parenthesis pair\r\n return parenthesisIndexPairs[0];\r\n }\r\n }\r\n\r\n // This parses function args for the current parenthesis\r\n else if (functionText[i] == ',' && parenthesisDepth > 0) {\r\n parenthesisIndexPairs[parenthesisDepth - 1].argEndIndexes.push(i);\r\n }\r\n }\r\n }\r\n\r\n // If we made it out here, we didn't find a matching parenthesis, so log an error\r\n errors.push('No matching parenthesis');\r\n return null;\r\n };\r\n const parseParenthetical = (start: number): { documentFragment: DocumentFragment, endIndex: number } => {\r\n\r\n // Finding the parenthetical\r\n const parenthetical = findParenthetical(start);\r\n\r\n // parsing the parenthetical\r\n if (parenthetical) {\r\n const parseResult = this.transFunctionParser(\r\n functionText.substring(\r\n parenthetical.start + 1,\r\n parenthetical.end\r\n )\r\n );\r\n fields.push(...parseResult.fields);\r\n errors.push(...parseResult.errors);\r\n return {\r\n documentFragment: document.createRange().createContextualFragment(\r\n parseResult.transFunction\r\n ),\r\n endIndex: parenthetical.end\r\n };\r\n }\r\n\r\n // If no parenthetical was found, return nothing\r\n else {\r\n return null;\r\n }\r\n };\r\n const parseFunctionArgs = (start: number): { nodes: ChildNode[], endIndex: number } => {\r\n\r\n // Finding the parenthetical\r\n const parenthetical = findParenthetical(start);\r\n\r\n // Finding the distinct args, separated by columns\r\n if (parenthetical) {\r\n\r\n // Extracting the arguments\r\n const args: string[] = [];\r\n if (parenthetical.argEndIndexes) {\r\n for (let i = 0; i < parenthetical.argEndIndexes.length; i++) {\r\n let argStart = parenthetical.start + 1;\r\n if (i > 0) {\r\n argStart = parenthetical.argEndIndexes[i - 1] + 1;\r\n }\r\n if (argStart < parenthetical.argEndIndexes[i]) { // Only substring valid indexes (prevents reading () as having a \"\" argument)\r\n args.push(functionText.substring(argStart, parenthetical.argEndIndexes[i]));\r\n }\r\n }\r\n }\r\n\r\n // Parsing each arg text\r\n const argXML: ChildNode[] = [];\r\n args.forEach(arg => {\r\n const parseResult = this.transFunctionParser(arg);\r\n const documentFragment = document.createRange().createContextualFragment(parseResult.transFunction);\r\n argXML.push(documentFragment.firstChild); // We should only ever have one child\r\n fields.push(...parseResult.fields);\r\n errors.push(...parseResult.errors);\r\n });\r\n\r\n // Returning the elements and the end of the parenthetical\r\n return { nodes: argXML, endIndex: parenthetical.end };\r\n }\r\n\r\n // If no parenthetical was found, return nothing\r\n else {\r\n return null;\r\n }\r\n };\r\n\r\n // Reading until we find [, ], (, ), \", a number, or an operator\r\n let currentRead = '';\r\n let openBracket = false;\r\n let openQuote = false;\r\n let openNumber = false;\r\n for (let i = 0; i < functionText.length; i++) {\r\n\r\n // If we encountered a parenthesis first, our current read should be a function\r\n if (functionText[i] == '(' && !openBracket && !openQuote) {\r\n\r\n // If this isn't a function, then we should parse it as a unit\r\n if (currentRead == '') {\r\n const parsedParenthetical = parseParenthetical(i);\r\n if (parsedParenthetical) {\r\n i = parsedParenthetical.endIndex;\r\n parsedParenthetical.documentFragment.childNodes.forEach(node => {\r\n xml.appendChild(node);\r\n });\r\n }\r\n\r\n // If no parse could be made, then end this loop\r\n else {\r\n break;\r\n }\r\n }\r\n\r\n // If we have a read, then this is a function\r\n else {\r\n let functionFound = false;\r\n if (this.functions) {\r\n for (let j = 0; j < this.functions.length; j++) {\r\n if (this.functions[j].Name.trim().toLowerCase() == currentRead.trim().toLowerCase()) {\r\n functionFound = true;\r\n\r\n // Creating and appending a node for our function\r\n const functionNode = document.createElement('Function');\r\n functionNode.setAttribute('Id', this.functions[j].Id.toString());\r\n\r\n // Parsing the args\r\n const parsedFunctionArgs = parseFunctionArgs(i);\r\n if (parsedFunctionArgs) {\r\n i = parsedFunctionArgs.endIndex;\r\n parsedFunctionArgs.nodes.forEach(node => {\r\n if (node) {\r\n functionNode.appendChild(node);\r\n } else {\r\n errors.push('Function ' + this.functions[j].DisplayName + ' has invalid arguments.');\r\n }\r\n });\r\n\r\n // Appending the function node to our document\r\n xml.appendChild(functionNode);\r\n }\r\n\r\n // If no parse could be made, then end this loop\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // If we haven't found a function, then we have a syntax error\r\n if (!functionFound) {\r\n errors.push('Function not found: ' + currentRead.trim() + '.');\r\n }\r\n\r\n // Resetting the current read for future elements\r\n currentRead = '';\r\n }\r\n }\r\n\r\n // If we find a ) and we're not parsing, then that's a syntax error\r\n else if (functionText[i] == ')' && !openBracket && !openQuote) {\r\n errors.push('No matching parenthesis.');\r\n }\r\n\r\n // Quotes become string literals\r\n else if (functionText[i] == '\"') {\r\n\r\n // If we just hit a quotation, we're starting a string literal\r\n if (!openQuote) {\r\n\r\n // If we have a current read before this, then we've hit a syntax error\r\n if (currentRead.trim() != '') {\r\n errors.push('Unknown element: ' + currentRead + '.');\r\n }\r\n\r\n // Resetting the current read to get its value\r\n currentRead = '';\r\n openQuote = true;\r\n }\r\n\r\n // If we're in a quote, the current read becomes a string literal\r\n else {\r\n const stringElement = document.createElement('string');\r\n stringElement.innerHTML = currentRead;\r\n stringElement.setAttribute('value', currentRead);\r\n xml.appendChild(stringElement);\r\n\r\n // Resetting the current read to get future elements\r\n currentRead = '';\r\n openQuote = false;\r\n }\r\n }\r\n\r\n // If we've encountered a [, we're looking for a field\r\n else if (functionText[i] == '[' && !openQuote) {\r\n\r\n // If we have a current read, we've hit a syntax error\r\n if (currentRead.trim() != '') {\r\n errors.push('Unknown element: ' + currentRead + '.');\r\n }\r\n\r\n // Resetting the current read to find the field\r\n currentRead = '';\r\n openBracket = true;\r\n }\r\n\r\n // If we've encountered a ], we can begin parsing a field\r\n else if (functionText[i] == ']' && !openQuote) {\r\n\r\n // If we're not looking for a field already, then we hav a syntax error\r\n if (!openBracket) {\r\n errors.push('No matching bracket.');\r\n }\r\n\r\n // If we are looking for a field, parse it and add that to the document\r\n else {\r\n\r\n // Looking for the field\r\n const components = currentRead.split('.');\r\n if (components.length == 3) {\r\n let object: DataQueryObject;\r\n let category: DataQueryCategory;\r\n let field: DataQueryField;\r\n object = this.information.objects.find(o => o.ObjectName.toLowerCase() == components[0].toLowerCase());\r\n if (object) {\r\n category = object.categories.find(c => c.CategoryName.toLowerCase() == components[1].toLowerCase());\r\n }\r\n if (category) {\r\n field = category.fields.find(f => f.DisplayName == components[2]);\r\n if (field == null) {\r\n field = category.fields.find(f => f.DisplayName.toLowerCase() == components[2].toLowerCase());\r\n }\r\n }\r\n\r\n // If we find a field, create a node for the field and appending that\r\n if (field) {\r\n const fieldNode = document.createElement('Field');\r\n fieldNode.setAttribute('Id', field.ID.toString());\r\n fieldNode.setAttribute('CategoryId', field.CategoryID.toString()); // We have to supply this because V9 has id collisions...\r\n fieldNode.setAttribute('CategoryName', category.CategoryName.toString()); // We have to supply this because V9 has id collisions...\r\n xml.appendChild(fieldNode);\r\n fields.push(field);\r\n }\r\n\r\n // If we haven't found a node, then we have a syntax error\r\n else {\r\n errors.push(currentRead + ' field must be chosen from the dialog.');\r\n }\r\n }\r\n\r\n // Resetting the current read\r\n currentRead = '';\r\n openBracket = false;\r\n }\r\n }\r\n\r\n // If we encounter a number and we're not in another context, this is a number literal\r\n else if (\r\n !isNaN(Number.parseInt(functionText[i], 10))\r\n && !openQuote\r\n && !openBracket\r\n && !openNumber\r\n ) {\r\n openNumber = true;\r\n if (currentRead.trim() != '') {\r\n errors.push('Unknown element: ' + currentRead + '.');\r\n }\r\n currentRead = functionText[i];\r\n }\r\n\r\n // Adding to the current read since we haven't encountered a special character\r\n else {\r\n currentRead += functionText[i];\r\n }\r\n\r\n // If we're in a number context and the next element is not a number, try to parse out a number\r\n if (\r\n openNumber\r\n && (\r\n functionText.length - 1 == i\r\n || (\r\n isNaN(Number.parseInt(functionText[i + 1], 10))\r\n && functionText[i + 1] != '.'\r\n )\r\n )\r\n ) {\r\n\r\n // If the current read is not a number, this is a syntax error\r\n if (Number.parseFloat(currentRead) != NaN) {\r\n\r\n // Adding the number element\r\n const numberElement = document.createElement('number');\r\n numberElement.innerHTML = currentRead;\r\n xml.appendChild(numberElement);\r\n } else {\r\n errors.push('Number literal not completed: ' + currentRead + '.');\r\n }\r\n\r\n // Resetting the number context\r\n openNumber = false;\r\n currentRead = '';\r\n }\r\n\r\n // If we've encountered an operator, everything here becomes the left and everything after becomes the right\r\n const matchingOperator = this.operators != null ? this.operators.find(operator => operator.Display.trim().toLowerCase() == currentRead.trim().toLowerCase()) : null;\r\n if (matchingOperator && !openBracket && !openQuote) {\r\n\r\n // Make sure we capture the largest operator, as some operators are composites (>= composed of > and =)\r\n let potentialComposite: DataQueryOperator = null;\r\n let checkText = currentRead;\r\n let jumpAhead = 0;\r\n if (i < functionText.length - 1) {\r\n for (let j = i + 1; j < functionText.length; j++) {\r\n if (functionText[j] != ' ') {\r\n checkText += functionText[j];\r\n potentialComposite = this.operators.find(operator => operator.Display == checkText.trim().toLowerCase());\r\n if (potentialComposite != null) {\r\n jumpAhead = j - i;\r\n break;\r\n }\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Appending a node for operator. ALl current nodes become LHS.\r\n const operatorNode = document.createElement('Operator');\r\n operatorNode.setAttribute('Id', matchingOperator.ID.toString());\r\n xml.childNodes.forEach(childNode => {\r\n operatorNode.appendChild(childNode);\r\n });\r\n xml.appendChild(operatorNode);\r\n\r\n // Appending the rest of the document as the right side\r\n const rightHandString = functionText.substring(i + 1 + jumpAhead, functionText.length);\r\n const rightHandParseResult = this.transFunctionParser(rightHandString);\r\n fields.push(...rightHandParseResult.fields);\r\n errors.push(...rightHandParseResult.errors);\r\n const rightSideFragment = document.createRange().createContextualFragment(rightHandParseResult.transFunction);\r\n rightSideFragment.childNodes.forEach(node => {\r\n operatorNode.appendChild(node);\r\n });\r\n\r\n // We're done the function text now, so we can break the loop\r\n currentRead = '';\r\n break;\r\n }\r\n }\r\n\r\n // If we've got here with a current read, then there's a syntax error. Something wasn't parsed.\r\n if (currentRead.trim() != '') {\r\n errors.push('Unknown element: ' + currentRead + '.');\r\n }\r\n\r\n // If we have any open contexts, we know we haven't matched something\r\n if (openBracket) {\r\n errors.push('No matching bracket.');\r\n }\r\n if (openQuote) {\r\n errors.push('No matching quote.');\r\n }\r\n\r\n // If we hit a syntax error, throw an error in the console\r\n if (errors.length > 0) {\r\n console.warn('Syntax errors found: ' + errors.toString());\r\n }\r\n\r\n // Returning the XML, distinct fields, and distinct errors\r\n return {\r\n transFunction: xml.innerHTML,\r\n fields: fields.filter((field, index, self) => self.findIndex(subField => subField.ID == field.ID) == index),\r\n errors: errors.filter((error, index, self) => self.findIndex(subError => subError == error) == index)\r\n };\r\n }\r\n\r\n transFunctionInterpreter(transFunctionXML: string) {\r\n // PRE: XML that is formatted as a transformation function according to our functions, operators, and parameters\r\n // There must be a top level element, like \"root\" or \"transformation function\" if withRoot is true\r\n // POST: parses the XML to create pseudo-SQL function text\r\n let transFunction = '';\r\n let invalidXML = false;\r\n\r\n // Creating XML doc\r\n const parser = new DOMParser();\r\n const xml = parser.parseFromString(transFunctionXML, 'text/xml');\r\n\r\n // Creating a helper function to parse the node\r\n const parseNode = (xmlNode: Element): string => {\r\n const childElements = Array.from(xmlNode.children);\r\n const nodeName = xmlNode.nodeName.toLowerCase();\r\n const idNode = xmlNode.attributes.getNamedItem('id');\r\n const fieldNameNode = xmlNode.attributes.getNamedItem('fieldname');\r\n const categoryIdNode = xmlNode.attributes.getNamedItem('categoryid');\r\n const categoryNameNode = xmlNode.attributes.getNamedItem('categoryname');\r\n const objectIdNode = xmlNode.attributes.getNamedItem('objectid');\r\n const objectNameNode = xmlNode.attributes.getNamedItem('objectname');\r\n let id = -1;\r\n let categoryId = -1;\r\n let objectId = -1;\r\n if (idNode != null && Number.parseInt(idNode.value, 10) != NaN) {\r\n id = Number.parseInt(idNode.value, 10);\r\n }\r\n if (categoryIdNode != null && Number.parseInt(categoryIdNode.value, 10) != NaN) {\r\n categoryId = Number.parseInt(categoryIdNode.value, 10);\r\n }\r\n if (objectIdNode != null && Number.parseInt(objectIdNode.value, 10) != NaN) {\r\n objectId = Number.parseInt(objectIdNode.value, 10);\r\n }\r\n\r\n // Operator\r\n if (nodeName == 'operator') {\r\n\r\n // Find the operator\r\n const operator = this.operators.find(o => o.ID == id);\r\n\r\n // Adding the operator and its arguments on either side\r\n if (operator && childElements.length == 2) {\r\n return parseNode(childElements[0]) + ' ' + operator.Display + ' ' + parseNode(childElements[1]);\r\n } else {\r\n invalidXML = true;\r\n }\r\n }\r\n\r\n // Function\r\n if (nodeName == 'function') {\r\n\r\n // Find the function\r\n const funct = this.functions.find(o => o.Id == id);\r\n\r\n // Adding the function and it's args\r\n if (funct) {\r\n let result = funct.Name + '(';\r\n for (let i = 0; i < childElements.length; i++) {\r\n result += parseNode(childElements[i]);\r\n if (i != childElements.length - 1) {\r\n result += ', ';\r\n }\r\n }\r\n result += ')';\r\n return result;\r\n } else {\r\n invalidXML = true;\r\n }\r\n }\r\n\r\n // Field\r\n if (nodeName == 'field') {\r\n\r\n // Finding the field\r\n const field = this.information.fields.find(o =>\r\n (this.V10 || !fieldNameNode ? o.ID == id : o.FieldName == fieldNameNode.value)\r\n && (\r\n this.V10 || !categoryNameNode ?\r\n (categoryId == -1 || o.CategoryID == categoryId) :\r\n (o.CategoryName == categoryNameNode.value)\r\n )\r\n && (\r\n this.V10 || !objectNameNode ?\r\n true :\r\n (o.ObjectName == objectNameNode.value)\r\n )\r\n );\r\n\r\n // Adding the field in brackets\r\n if (field) {\r\n if (field.category) {\r\n return '['\r\n + field.category.ObjectName + '.'\r\n + field.category.CategoryName + '.'\r\n + field.DisplayName\r\n + ']';\r\n }\r\n else {\r\n return '['\r\n + field.ObjectName + '.'\r\n + field.CategoryName + '.'\r\n + field.DisplayName\r\n + ']';\r\n }\r\n } else {\r\n invalidXML = true;\r\n }\r\n }\r\n\r\n // Literals\r\n if (nodeName == 'string') {\r\n let value = xmlNode.getAttribute('value');\r\n if (!value) {\r\n value = xmlNode.innerHTML;\r\n }\r\n return '\"' + (value ? value : '') + '\"';\r\n }\r\n if (nodeName == 'number') {\r\n return xmlNode.innerHTML;\r\n }\r\n };\r\n\r\n // Iterating through the node's children\r\n // NOTE: this will probably just be the one node usually\r\n for (let i = 0; i < xml.children.length; i++) {\r\n transFunction += parseNode(xml.children.item(i));\r\n if (i != xml.children.length - 1) {\r\n transFunction += ' ';\r\n }\r\n }\r\n\r\n // Returning the transformation function\r\n return transFunction;\r\n }\r\n\r\n transFunctionChanged(field: DataQueryField, resetErrors = true, markAsChanged = true, force = true) {\r\n // PRE: the field's transformation function is changed\r\n // POST: sets the fields errors and related data\r\n if (!this.loadingQuery) {\r\n\r\n // Setting the field and query data for processing\r\n this.savedQueryModified = true;\r\n if (markAsChanged) {\r\n this.currentQuery.queryChangedSinceLastResult = true;\r\n }\r\n if (resetErrors) {\r\n field.FunctionError = [];\r\n }\r\n field.PreviewData = '';\r\n this.FormulasTested = false;\r\n if (field.FunctionText == null) {\r\n field.FunctionText = '';\r\n }\r\n field.TransformationFields = [];\r\n field.TransformationFunction = '';\r\n\r\n // Setting the transformation function and errors\r\n if (!field.FunctionText && !field.FunctionError.includes('Value is required.')) {\r\n field.addFunctionError('Value is required.');\r\n } else {\r\n const parseResult = this.transFunctionParser(field.FunctionText);\r\n field.TransformationFunction = parseResult.transFunction;\r\n for (let i = 0; i < parseResult.fields.length; i++) {\r\n const transField = new DataQueryTransformationField(parseResult.fields[i]);\r\n transField.position = i;\r\n field.TransformationFields.push(transField);\r\n if (i == 0) {\r\n field.category = this.information.categories.find(category => category.ID == transField.categoryId);\r\n if (field.category) {\r\n field.ID = transField.fieldId;\r\n field.CategoryID = transField.categoryId;\r\n field.ObjectName = field.category.ObjectName;\r\n }\r\n }\r\n }\r\n for (let i = 0; i < parseResult.errors.length; i++) {\r\n field.addFunctionError(parseResult.errors[i]);\r\n }\r\n field.IsCalculated = parseResult.fields.length == 0;\r\n }\r\n }\r\n }\r\n\r\n transFunctionKeydown(field: DataQueryField, event: KeyDownEvent) {\r\n // PRE: a field's function is input into\r\n // POST: opens a selection dialog if [ is input\r\n // \t\t prevents ] from being input\r\n // \t\t allows all others\r\n\r\n // Extracting important information\r\n const key = event.key;\r\n const element = event.target;\r\n const fnText = element.value;\r\n const selectedText = fnText.substring(element.selectionStart, element.selectionEnd);\r\n\r\n // Unsetting the preview data\r\n field.PreviewData = '';\r\n\r\n // Opening dialogs for bracket\r\n if (key == '[') {\r\n event.preventDefault();\r\n const dialogBox = this.dialog.open(InsertFieldDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n information: this.information\r\n }\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(selectedField => {\r\n this.insertTransField(selectedField, field, element);\r\n this.transFunctionChanged(field);\r\n subscription.unsubscribe();\r\n });\r\n } else if (key == ']') {\r\n event.preventDefault();\r\n }\r\n\r\n // Erasing the previous field on a backspace\r\n else if (key == 'Backspace') {\r\n if (selectedText == '') {\r\n let fieldArrayPosition = 0;\r\n if (this.isCursorOnField(field, element.selectionStart, -1)) {\r\n element.selectionStart = element.selectionStart - 1;\r\n if (fnText[element.selectionStart] == '[') {\r\n const nextText = fnText.substring(element.selectionStart);\r\n element.selectionEnd = element.selectionStart + nextText.indexOf(']') + 1;\r\n } else if (fnText[element.selectionStart] == ']') {\r\n const prevText = fnText.substring(0, element.selectionStart);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n } else {\r\n const nextText = fnText.substring(element.selectionStart);\r\n element.selectionEnd = element.selectionStart + nextText.indexOf(']') + 1;\r\n const prevText = fnText.substring(0, element.selectionStart);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n }\r\n for (let i = 0; i < element.selectionStart - 1; i++) {\r\n if (fnText[i] == ']') {\r\n fieldArrayPosition += 1;\r\n }\r\n }\r\n field.TransformationFields.splice(fieldArrayPosition, 1);\r\n }\r\n } else {\r\n let fieldPosition = field.TransformationFields.length;\r\n for (let i = fnText.length - 1; i > element.selectionStart; i--) {\r\n if (fnText[i] == ']') {\r\n fieldPosition -= 1;\r\n if (i <= element.selectionEnd) {\r\n field.TransformationFields.splice(fieldPosition, 1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Erasing the next field on a delete\r\n else if (key == 'Delete') {\r\n if (selectedText == '') {\r\n let fieldArrayPosition = 0;\r\n if (this.isCursorOnField(field, element.selectionStart, 0)) {\r\n if (fnText[element.selectionStart] == '[') {\r\n const nextText = fnText.substring(element.selectionStart);\r\n element.selectionEnd = element.selectionStart + nextText.indexOf(']') + 1;\r\n } else if (fnText[element.selectionStart] == ']') {\r\n const prevText = fnText.substring(0, element.selectionStart);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n } else {\r\n const nextText = fnText.substring(element.selectionStart);\r\n element.selectionEnd = element.selectionStart + nextText.indexOf(']') + 1;\r\n const prevText = fnText.substring(0, element.selectionStart);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n }\r\n for (let i = 0; i < element.selectionStart - 1; i++) {\r\n if (fnText[i] == ']') {\r\n fieldArrayPosition += 1;\r\n }\r\n }\r\n field.TransformationFields.splice(fieldArrayPosition, 1);\r\n }\r\n } else {\r\n let fieldPosition = field.TransformationFields.length;\r\n for (let i = fnText.length - 1; i > element.selectionStart; i--) {\r\n if (fnText[i] == ']') {\r\n fieldPosition -= 1;\r\n if (i <= element.selectionEnd) {\r\n field.TransformationFields.splice(fieldPosition, 1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Special keys\r\n else if (!Number.isNaN(Number.parseInt(key, 10)) ||\r\n key == ' ' ||\r\n /[a-z]/.test(key) ||\r\n key == ';' ||\r\n key == '=' ||\r\n key == ',' ||\r\n key == '-' ||\r\n key == '.' ||\r\n key == '/' ||\r\n key == '\\\\' ||\r\n key == '\\'') {\r\n\r\n if (selectedText == '') {\r\n let fieldArrayPosition = 0;\r\n if (fnText[element.selectionStart] == '[') {\r\n\r\n } else if (this.isCursorOnField(field, element.selectionStart, 0)) {\r\n if (fnText[element.selectionStart] == '[') {\r\n const nextText = fnText.substring(element.selectionStart);\r\n element.selectionEnd = element.selectionStart + nextText.indexOf(']') + 1;\r\n } else if (fnText[element.selectionStart] == ']') {\r\n const prevText = fnText.substring(0, element.selectionStart);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n } else {\r\n const nextText = fnText.substring(element.selectionStart);\r\n element.selectionEnd = element.selectionStart + nextText.indexOf(']') + 1;\r\n const prevText = fnText.substring(0, element.selectionStart);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n }\r\n for (let i = 0; i < element.selectionStart - 1; i++) {\r\n if (fnText[i] == ']') {\r\n fieldArrayPosition += 1;\r\n }\r\n }\r\n field.TransformationFields.splice(fieldArrayPosition, 1);\r\n }\r\n } else {\r\n let fieldPosition = field.TransformationFields.length;\r\n for (let i = fnText.length - 1; i > element.selectionStart; i--) {\r\n if (fnText[i] == ']') {\r\n fieldPosition -= 1;\r\n if (i <= element.selectionEnd) {\r\n field.TransformationFields.splice(fieldPosition, 1);\r\n }\r\n }\r\n }\r\n }\r\n } else if (key == 'ArrowLeft') {\r\n if (this.isCursorOnField(field, element.selectionStart, -1)) {\r\n if (fnText[element.selectionStart - 1] == '[') {\r\n const nextText = fnText.substring(element.selectionStart - 1);\r\n element.selectionEnd = element.selectionStart - 1 + nextText.indexOf(']') + 1;\r\n } else if (fnText[element.selectionStart - 1] == ']') {\r\n const prevText = fnText.substring(0, element.selectionStart - 1);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n } else {\r\n const nextText = fnText.substring(element.selectionStart - 1);\r\n element.selectionEnd = element.selectionStart - 1 + nextText.indexOf(']') + 1;\r\n const prevText = fnText.substring(0, element.selectionStart - 1);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n }\r\n }\r\n } else if (key == 'ArrowRight') {\r\n if (this.isCursorOnField(field, element.selectionStart, 1)) {\r\n if (fnText[element.selectionStart + 1] == '[') {\r\n const nextText = fnText.substring(element.selectionStart + 1);\r\n element.selectionEnd = element.selectionStart + 1 + nextText.indexOf(']') + 1;\r\n } else if (fnText[element.selectionStart + 1] == ']') {\r\n const prevText = fnText.substring(0, element.selectionStart + 1);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n } else {\r\n const nextText = fnText.substring(element.selectionStart + 1);\r\n element.selectionEnd = element.selectionStart + 1 + nextText.indexOf(']') + 1;\r\n const prevText = fnText.substring(0, element.selectionStart + 1);\r\n element.selectionStart = prevText.lastIndexOf('[');\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n transFunctionClicked(field: DataQueryField, event: ClickEvent) {\r\n // PRE: a transformation function input field is clicked into\r\n // POST: highlights a field is one is clicked on\r\n field.IsTransErrorOpen = false;\r\n event.stopPropagation();\r\n const elem = event.target;\r\n if (elem != null) {\r\n event.preventDefault();\r\n const fnText = elem.value;\r\n let previousText = fnText.substring(0, elem.selectionStart);\r\n if (previousText.indexOf('[') >= 0) {\r\n previousText = previousText.substring(previousText.lastIndexOf('['));\r\n if (previousText.indexOf(']') < 0) {\r\n elem.selectionStart = elem.selectionStart - previousText.length;\r\n }\r\n }\r\n let nextText = fnText.substring(elem.selectionEnd);\r\n if (nextText.indexOf(']') >= 0) {\r\n nextText = nextText.substring(0, nextText.indexOf(']'));\r\n if (nextText.indexOf('[') < 0) {\r\n elem.selectionEnd = elem.selectionEnd + nextText.length + 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n isCursorOnField(field: DataQueryField, cursorPosition: number, modifier: number): boolean {\r\n // PRE: the field, a cursor position, and modifier for the cursor position\r\n // POST: returns true if the cursor is on the specified field\r\n const functionText = field.FunctionText == null ? '' : field.FunctionText;\r\n let isField = false;\r\n for (let i = 0; i < functionText.length; i++) {\r\n if (functionText[i] == '[') {\r\n isField = true;\r\n } else if (i > 0) {\r\n if (functionText[i - 1] == ']') {\r\n isField = false;\r\n }\r\n }\r\n if (cursorPosition + modifier == i) {\r\n return isField;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getTransFunctionText(field: DataQueryField): string {\r\n // PRE: the field must be organized\r\n // POST: obtains the text to be put in the function text\r\n if (field.DisplayName && field.ObjectName && field.CategoryName) {\r\n return '[' + field.ObjectName + '.' + field.CategoryName + '.' + field.DisplayName + ']';\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n insertTransField(selectedField: DataQueryField, fieldToUpdate: DataQueryField, element?: HTMLInputElement, insertIndex?: number) {\r\n // PRE: a selected field from the insert field dialog, a field to update, and (optionally) the element of that field\r\n // POST: updates the field's function text. If an element is provided, inserts it at the cursor. Otherwise, at 0.\r\n let viewName = '';\r\n if (selectedField != null) {\r\n\r\n // Updating the field\r\n let category = selectedField.category;\r\n if (category == null) {\r\n category = this.information.categories.find(c => c.ID == selectedField.CategoryID);\r\n }\r\n if (category != null) {\r\n viewName = category.ViewName;\r\n } else {\r\n console.warn('No category for insertTransField');\r\n }\r\n const textToInsert = this.getTransFunctionText(selectedField);\r\n const sqlToInsert = 'vw' + viewName + '.[' + selectedField.FieldName + ']';\r\n // ONE-13145\r\n if (this.V10 == false) {\r\n fieldToUpdate.category = category;\r\n fieldToUpdate.ID = selectedField.ID;\r\n fieldToUpdate.ObjectName = selectedField.ObjectName;\r\n fieldToUpdate.CategoryID = selectedField.CategoryID;\r\n }\r\n\r\n const updateField = fieldToUpdate;\r\n const selectionStart = element ? element.selectionStart : (insertIndex ? insertIndex : 0);\r\n const selectionEnd = element ? element.selectionEnd : (insertIndex ? insertIndex : 0);\r\n if (updateField.TransformationFields == null) {\r\n updateField.TransformationFields = [];\r\n }\r\n let transFieldArrayPosition = _.cloneDeep(updateField.TransformationFields.length);\r\n if (selectionStart == 0) {\r\n transFieldArrayPosition = 0;\r\n }\r\n const trans = {\r\n fieldId: selectedField.ID,\r\n categoryId: selectedField.CategoryID,\r\n position: 0,\r\n sql: sqlToInsert\r\n };\r\n updateField.TransformationFields.splice(transFieldArrayPosition, 0, trans);\r\n updateField.FunctionText = updateField.FunctionText.substring(0, selectionStart) + textToInsert + updateField.FunctionText.substring(selectionEnd);\r\n\r\n // Updating the element\r\n if (element) {\r\n let i = 0;\r\n if (selectionStart != selectionEnd) {\r\n let fieldPosition = updateField.TransformationFields.length;\r\n for (i = updateField.FunctionText.length - 1; i > element.selectionStart; i--) {\r\n if (updateField.FunctionText[i] == ']') {\r\n fieldPosition -= 1;\r\n if (i <= element.selectionEnd) {\r\n updateField.TransformationFields.splice(fieldPosition, 1);\r\n }\r\n }\r\n }\r\n }\r\n i = this.loginService.LoginSettings.V10 ? 0 : -1;\r\n while (i++ < element.selectionStart) {\r\n if (updateField.FunctionText[i] == '[') {\r\n transFieldArrayPosition += 1;\r\n }\r\n }\r\n setTimeout(() => {\r\n element.selectionStart = selectionStart + textToInsert.length;\r\n element.selectionEnd = selectionStart + textToInsert.length;\r\n element.focus();\r\n }, 0);\r\n\r\n if (this.V10 == false) {\r\n if (updateField.Alias == null || updateField.Alias == '') {\r\n updateField.Alias = selectedField.FieldName;\r\n }\r\n this.transFunctionChanged(updateField);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getQueryXML(fields: DataQueryField[], forResults = false): string {\r\n // PRE: the fields for the query\r\n // POST: gets the xml of the current query based on the fields\r\n let xml = '';\r\n xml += '';\r\n\r\n // XML Fields\r\n for (let i = 0; i < fields.length; i++) {\r\n xml += '';\r\n xml += '' + fields[i].ID + '';\r\n xml += '' + System.textToXML(fields[i].FieldName) + '';\r\n xml += '' + fields[i].CategoryID + '';\r\n xml += '' + System.textToXML(fields[i].CategoryName) + '';\r\n xml += '' + System.textToXML(fields[i].ObjectName) + '';\r\n xml += '' + fields[i].SortDirection + '';\r\n xml += '' + fields[i].SortOrder + '';\r\n xml += '' + (fields[i].Break ? fields[i].Break : '') + '';\r\n xml += '' + System.textToXML(fields[i].Alias) + '';\r\n xml += '' + !!fields[i].ShowOnReport + '';\r\n xml += '' + !!fields[i].IsConstant + '';\r\n xml += '' + System.textToXML(fields[i].ConstantValue) + '';\r\n xml += '' + !!fields[i].IsCalculated + '';\r\n xml += '' + System.textToXML(fields[i].DataType) + '';\r\n xml += '' + !!fields[i].IsDefaultFilterField + '';\r\n xml += '' + !!fields[i].IsDuplicate + '';\r\n\r\n // XML Filters\r\n if (fields[i].Filters != undefined && fields[i].Filters != null) {\r\n for (let x = 0; x < fields[i].Filters.length; x++) {\r\n let setupFilter = false;\r\n if (this.isStudentSearch) {\r\n if (!forResults || (!this.V10 && fields[i].IsDefaultFilterField) || (this.V10 && !fields[i].IsDefaultFilterField) || fields[i].Filters[x].UseFilterForStudentSearch) {\r\n setupFilter = true;\r\n }\r\n } else if (this.isCourseSearch) {\r\n if (!forResults || !fields[i].IsDefaultFilterField || fields[i].Filters[x].UseFilterForCourseSearch) {\r\n setupFilter = true;\r\n }\r\n } else if (this.isStaffSearch) {\r\n if (!forResults || !fields[i].IsDefaultFilterField || fields[i].Filters[x].UseFilterForStaffSearch) {\r\n setupFilter = true;\r\n }\r\n } else {\r\n if (!forResults || !fields[i].IsDefaultFilterField || !this.V10) {\r\n setupFilter = true;\r\n }\r\n }\r\n if (setupFilter) {\r\n xml += '';\r\n xml += '' + fields[i].Filters[x].FilterID + '';\r\n xml += '' + System.textToXML(fields[i].Filters[x].Operator) + '';\r\n const value: any = (fields[i].Filters[x].Value == '\"\"' || fields[i].Filters[x].Value == '\\'\\'') ? '' : fields[i].Filters[x].Value;\r\n const value2: any = (fields[i].Filters[x].Value2 == '\"\"' || fields[i].Filters[x].Value2 == '\\'\\'') ? '' : fields[i].Filters[x].Value2;\r\n if (fields[i].DataType != undefined && (fields[i].DataType.toLowerCase() == 'datetime' || fields[i].DataType.toLowerCase() == 'smalldatetime')) {\r\n // if (value) {\r\n // value = System.convertDateToUTC(value);\r\n // value = (value.getMonth() + 1) + '/' + value.getDate() + '/' + value.getFullYear();\r\n // }\r\n // if (value2) {\r\n // value2 = System.convertDateToUTC(value2);\r\n // value2 = (value2.getMonth() + 1) + '/' + value2.getDate() + '/' + value2.getFullYear();\r\n // }\r\n }\r\n xml += '' + System.textToXML(value) + '';\r\n xml += '' + System.textToXML(value2) + '';\r\n xml += '' + fields[i].Filters[x].Group + '';\r\n xml += '' + !!fields[i].Filters[x].UseCurrentDate1 + '';\r\n xml += '' + !!fields[i].Filters[x].UseCurrentDate2 + '';\r\n for (let y = 0; y < fields[i].Filters[x].FilterOptions.length; y++) {\r\n xml += '';\r\n xml += '' + fields[i].Filters[x].FilterOptions[y].Id + '';\r\n xml += '' + fields[i].Filters[x].FilterOptions[y].Code + '';\r\n xml += '' + System.textToXML(fields[i].Filters[x].FilterOptions[y].CodeDescription) + '';\r\n xml += '' + fields[i].Filters[x].FilterOptions[y].Sequence + '';\r\n xml += '';\r\n }\r\n xml += '' + !!fields[i].Filters[x].UseFilterForStudentSearch + '';\r\n xml += '' + !!fields[i].Filters[x].IsStudentFilter + '';\r\n xml += '' + fields[i].Filters[x].StudentFilterId + '';\r\n xml += '' + !!fields[i].Filters[x].UseFilterForCourseSearch + '';\r\n xml += '' + !!fields[i].Filters[x].UseFilterForStaffSearch + '';\r\n xml += '' + !!fields[i].Filters[x].IsCourseFilter + '';\r\n xml += '' + !!fields[i].Filters[x].CourseFilterId + '';\r\n xml += '' + fields[i].Filters[x].ApplyToAll + '';\r\n xml += '';\r\n }\r\n }\r\n }\r\n if (!fields[i].TransformationFunction && fields[i].FunctionText) {\r\n this.transFunctionChanged(fields[i], false, false);\r\n }\r\n if (fields[i].TransformationFunction) {\r\n xml += '' + fields[i].TransformationFunction + ''; // Note: we deliberately don't use textToXml here because the transformation function is xml\r\n } else {\r\n xml += '';\r\n }\r\n if (fields[i].TransformationFields) {\r\n for (let t = 0; t < fields[i].TransformationFields.length; t++) {\r\n xml += '';\r\n const field = this.information.getField(f => f.ID == fields[i].TransformationFields[t].fieldId && f.CategoryID == fields[i].TransformationFields[t].categoryId);\r\n const category = this.information.categories.find(c => c.ID == fields[i].TransformationFields[t].categoryId);\r\n const object = this.information.objects.find(o => o.ID == category.ObjectID);\r\n xml += '' + fields[i].TransformationFields[t].fieldId + '';\r\n xml += '' + (field != undefined ? System.textToXML(field.FieldName) : System.textToXML(fields[i].FieldName)) + '';\r\n xml += '' + fields[i].TransformationFields[t].categoryId + '';\r\n xml += '' + (this.loginService.LoginSettings.V10 && category != undefined ? category.CategoryName : (field != undefined ? System.textToXML(field.CategoryName) : System.textToXML(fields[i].CategoryName))) + '';\r\n xml += '' + (object != undefined ? System.textToXML(object.ObjectName) : System.textToXML(fields[i].ObjectName)) + '';\r\n xml += '' + t + '';\r\n xml += '';\r\n }\r\n }\r\n xml += '';\r\n }\r\n\r\n // XML Relationships\r\n for (let r = 0; r < this.currentQuery.relationships.length; r++) {\r\n xml += '';\r\n xml += '' + this.currentQuery.relationships[r].ID + '';\r\n xml += '' + this.currentQuery.relationships[r].Category1ID + '';\r\n xml += '' + this.currentQuery.relationships[r].Category2ID + '';\r\n xml += '' + this.currentQuery.relationships[r].Type + '';\r\n xml += '';\r\n }\r\n\r\n // XML Query\r\n xml += '' + this.distinct + '';\r\n xml += '' + this.currentYearOnly + '';\r\n xml += '' + this.currentSchoolOnly + '';\r\n xml += '' + this.currentlyActiveStudentsOnly + '';\r\n xml += '' + System.textToXML(this.currentQuery.siteSectionId) + '';\r\n xml += '' + System.textToXML(this.currentQuery.courseName) + '';\r\n xml += '';\r\n return xml;\r\n }\r\n\r\n getReportTemplateXMLData(rtXML) {\r\n if (rtXML == undefined || rtXML == null || rtXML.trim() == '') {\r\n return '';\r\n }\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(rtXML, 'text/xml');\r\n let xml = '';\r\n xml += '';\r\n xml += '' + xmlDoc.getElementsByTagName('Name')[0].childNodes[0].nodeValue + '';\r\n xml += '';\r\n xml += '';\r\n return xml;\r\n }\r\n\r\n checkDisabledField(field: DataQueryField, ignorePermission = false): boolean {\r\n // PRE: a field to check for disabled\r\n // POST: returns if the field should be disabled\r\n\r\n if (ignorePermission) {\r\n return this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = false;\r\n }\r\n\r\n // Checking cache\r\n if (this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] != undefined) {\r\n return this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID];\r\n }\r\n\r\n // Creating helper functions\r\n const hasPermissionsByCode = (...args): boolean => {\r\n let ret = true;\r\n for (let i = 0; i < args.length; i++) {\r\n if (this.userPermissions.find(permission => permission.PermissionCode == args[i])) {\r\n ret = false;\r\n }\r\n }\r\n return ret;\r\n };\r\n const hasPermissionsByName = (...args): boolean => {\r\n let ret = true;\r\n for (let i = 0; i < args.length; i++) {\r\n if (this.userPermissions.find(permission => permission.PermissionName == args[i])) {\r\n ret = false;\r\n }\r\n }\r\n return ret;\r\n };\r\n\r\n // The information must be organized for any of this to work\r\n if (!this.information.organized) {\r\n this.information.organize();\r\n }\r\n\r\n // If this is V10, we merely see if the category is fine\r\n if (this.loginService.LoginSettings.V10) {\r\n if (this.userCategories) {\r\n let hasCategory = false;\r\n for (let i = 0; i < this.userCategories.length; i++) {\r\n if (this.userCategories[i] == field.CategoryID) {\r\n hasCategory = true;\r\n break;\r\n }\r\n }\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = !field.IsConstant && !field.IsCalculated && !hasCategory;\r\n return this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID];\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n // If this is V9, we have to check a bunch of permissions\r\n else {\r\n\r\n // Performing special case object checks\r\n switch (field.ObjectName) {\r\n case 'Staff':\r\n case 'Staff User-Defined':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SUI_VDSD', 'SUI_MDSD');\r\n break;\r\n case 'Student Data for Reporting':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByName('Maintain Student Fields', 'View Student Fields');\r\n break;\r\n case 'Special Education':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByName('View Student IEP Alert Icon');\r\n }\r\n if (this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] == true) {\r\n return true;\r\n }\r\n\r\n // If this isn't a staff field, perform a bunch of checks\r\n if (field.ObjectName != 'Staff' && field.ObjectName != 'Staff User-Defined') {\r\n\r\n // Performing field checks\r\n if (field.IsConstant || field.IsCalculated || field.FieldName == null || field.FieldName == undefined) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = false;\r\n return this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID];\r\n }\r\n switch (field.FieldName) {\r\n case 'Student Portal ID':\r\n case 'Student Portal Password':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SD_VSPLIAP', 'SD_MSPLIAP');\r\n break;\r\n case 'LunchBalance':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('LA_VSLAH', 'LA_MSLAH');\r\n break;\r\n case 'Attd Changes':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('A_VAH', 'A_CAH');\r\n break;\r\n case '#Medical Alerts':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('MR_VMC', 'MR_VAMD', 'MR_CAMD');\r\n break;\r\n case '#Release Alerts':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SD_VSRA', 'SD_ASRA');\r\n break;\r\n case 'SSN':\r\n case 'Former SIS Id':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('GO_VSSSN');\r\n break;\r\n }\r\n if (field.FieldName.includes('LunchStatus') || field.FieldName.includes('LunchEffectiveDate')) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('GO_VSFRS', 'LA_MSLSP');\r\n } else if (field.FieldName.includes('LunchPIN')) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('LA_VSLSP', 'LA_MSLSP');\r\n } else if (field.FieldName.includes('IEPStatus')) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SEIEP_VSISISH');\r\n } else if (field.FieldName.includes('Locker')) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('LM_VLD');\r\n }\r\n if (this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] == true) {\r\n return true;\r\n }\r\n\r\n // Performing category checks\r\n switch (field.CategoryName) {\r\n case 'Courses':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SD_VSCAAS', 'SD_MSCAAS');\r\n break;\r\n case 'Family':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SD_VFD', 'SD_MFD');\r\n break;\r\n case 'GPA':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('GR_VG', 'GR_MGHNFT');\r\n break;\r\n case 'Graduation':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SD_VS4YP', 'SD_MS4YP');\r\n break;\r\n case 'Fields':\r\n switch (field.ObjectName) {\r\n case 'Student Schedules':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SD_VSCAAS', 'SD_MSCAAS');\r\n break;\r\n case 'Teacher Schedules':\r\n case 'Sections':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('CD_VSCSAR', 'CD_MSSFS');\r\n break;\r\n }\r\n break;\r\n }\r\n if (this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] == true) {\r\n return true;\r\n }\r\n\r\n // Performing object checks\r\n switch (field.ObjectName) {\r\n case 'Assessments':\r\n case 'Assessments Best':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('AS_VAS', 'AS_MSFIS', 'AS_DSTS') || field.Permission == 'No';\r\n break;\r\n case 'Courses':\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('CD_VDSL', 'CD_MDSL');\r\n break;\r\n case 'Behavior':\r\n if (field.CategoryName == 'Incidents' || field.CategoryName == 'Events' || field.CategoryName == 'Actions') {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('PD_VDSU', 'PD_VDAU');\r\n }\r\n break;\r\n default:\r\n if (field.Permission) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('SD_M_' + field.Permission, 'SD_V_' + field.Permission, 'SD_VASDDS', 'SD_MASDDS');\r\n break;\r\n }\r\n }\r\n if (field.ObjectName == 'Programs and Services') {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('PS_VASPAS', 'PS_MASPAS', 'PS_VPAS', 'PS_MPAS');\r\n }\r\n\r\n if (field.ObjectName == 'Sections') {\r\n if (field.FieldName != 'Teacher SSN' && field.FieldName != 'Substitute Teacher SSN') {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('CD_VSCSAR', 'CD_MSSFS');\r\n }\r\n else {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = hasPermissionsByCode('GO_VFSSSN');\r\n }\r\n }\r\n if (this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] == true) {\r\n return true;\r\n }\r\n } else {\r\n if (field.FieldName == 'SSN' && hasPermissionsByCode('GO_VFSSSN')) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = true;\r\n }\r\n }\r\n }\r\n\r\n // If it hasn't been set yet, set it to false\r\n if (this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] == undefined) {\r\n this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID] = false;\r\n }\r\n\r\n // Returns that disabled field\r\n return this.disabledFields[field.ObjectName + '-' + field.CategoryID + '-' + field.ID];\r\n }\r\n\r\n updateFilter(filter = null, field = null) {\r\n // POST: updates the filter translation of the data query\r\n\r\n // Checking that we have a field somewhere\r\n if (filter != null && field == null) {\r\n field = filter.field;\r\n }\r\n\r\n // Setting the filter translation\r\n const groups = [];\r\n const applyToAllGroup = [];\r\n this.currentQuery.filterTranslation = '';\r\n let groupCount = 0;\r\n for (let x = 0; x < this.currentQuery.filterFields.length; x++) {\r\n const filterField = this.currentQuery.filterFields[x];\r\n for (let n = 0; n < filterField.Filters.length; n++) {\r\n if (filterField.IsDefaultStudentSearchFilter == false\r\n || filterField.Filters[n].UseFilterForStudentSearch == true\r\n || filterField.Filters[n].UseFilterForCourseSearch == true\r\n || filterField.Filters[n].UseFilterForStaffSearch == true\r\n ) {\r\n if (groups[filterField.Filters[n].Group] == null && (filterField.Filters[n].ApplyToAll == null || filterField.Filters[n].ApplyToAll == false)) {\r\n groups[filterField.Filters[n].Group] = [];\r\n }\r\n let value = (filterField.Filters[n].Value == '' ? '\"\"' : filterField.Filters[n].Value);\r\n const value2 = (filterField.Filters[n].Value2 == '' ? '\"\"' : filterField.Filters[n].Value2);\r\n\r\n if ((value != '') && (filterField.FieldName == 'StudentsListfilter' || filterField.FieldName == 'StudentsTeamfilter')) {\r\n const teamListValue = filterField.Filters[n].FilterOptions.find(w => w.Id == value).Code;\r\n if (teamListValue != undefined) {\r\n value = teamListValue;\r\n }\r\n }\r\n\r\n if (filterField.Filters[n].Operator != 'Between' && filterField.DisplayName != DataQueryFieldFilter.courseFilterDisplayName) {\r\n filterField.Filters[n].Value2 = '';\r\n filterField.Filters[n].dateValue2 = null;\r\n }\r\n if (filterField.Filters[n].Operator == 'Is Blank' || filterField.Filters[n].Operator == 'Is Not Blank') {\r\n filterField.Filters[n].Value = '';\r\n filterField.Filters[n].dateValue = null;\r\n }\r\n\r\n // We only perform updates to the filter translation for filters that are included\r\n if (\r\n (!this.isStudentSearch && !this.isCourseSearch && !this.isStaffSearch)\r\n || (!this.V10 && !this.isStudentSearch && !filterField.IsDefaultFilterField)\r\n || (this.V10 && !filterField.IsDefaultFilterField)\r\n || filterField.Filters[n].UseFilterForStudentSearch\r\n || filterField.Filters[n].UseFilterForCourseSearch\r\n || filterField.Filters[n].UseFilterForStaffSearch\r\n ) {\r\n if (filterField.Filters[n].ApplyToAll == null || filterField.Filters[n].ApplyToAll == false) {\r\n groups[filterField.Filters[n].Group].push({\r\n DisplayName: filterField.DisplayName,\r\n Operator: filterField.Filters[n].Operator,\r\n Value: value,\r\n Value2: value2,\r\n DataType: filterField.DataType\r\n });\r\n } else {\r\n applyToAllGroup.push({\r\n DisplayName: filterField.DisplayName,\r\n Operator: filterField.Filters[n].Operator,\r\n Value: value,\r\n Value2: value2,\r\n DataType: filterField.DataType\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const groupIds = Object.keys(groups);\r\n for (let i = 0; i < groupIds.length; i++) {\r\n const g = groupIds[i];\r\n groupCount += 1;\r\n if (groupCount > 1) {\r\n this.currentQuery.filterTranslation += ' OR ';\r\n }\r\n this.currentQuery.filterTranslation += '(';\r\n for (let j = 0; j < groups[g].length; j++) {\r\n if (j > 0) {\r\n this.currentQuery.filterTranslation += ' AND ';\r\n }\r\n\r\n let value = groups[g][j].Value;\r\n let value2 = groups[g][j].Value2;\r\n\r\n if (groups[g][j].DataType.toLowerCase() == 'char' || groups[g][j].DataType.toLowerCase() == 'varchar' || groups[g][j].DataType.toLowerCase() == 'datetime' || groups[g][j].DataType.toLowerCase() == 'smalldatetime') {\r\n value = '\\'' + groups[g][j].Value + '\\'';\r\n value2 = '\\'' + groups[g][j].Value2 + '\\'';\r\n }\r\n\r\n if (groups[g][j].Operator == 'Between') {\r\n this.currentQuery.filterTranslation += groups[g][j].DisplayName + ' is between ' + value + ' and ' + value2;\r\n } else if (groups[g][j].Operator == 'Is Blank' || groups[g][j].Operator == 'Is Not Blank') {\r\n this.currentQuery.filterTranslation += groups[g][j].DisplayName + ' ' + groups[g][j].Operator;\r\n } else if (groups[g][j].Operator == 'In List' || groups[g][j].Operator == 'Not In List') {\r\n this.currentQuery.filterTranslation += groups[g][j].DisplayName + ' ' + groups[g][j].Operator + '(' + value + ')';\r\n } else {\r\n this.currentQuery.filterTranslation += groups[g][j].DisplayName + ' ' + groups[g][j].Operator + ' ' + value;\r\n }\r\n }\r\n this.currentQuery.filterTranslation += ')';\r\n }\r\n if (applyToAllGroup.length > 0) {\r\n this.currentQuery.filterTranslation = '(' + this.currentQuery.filterTranslation + ')';\r\n if (this.currentQuery.filterTranslation.length > 0) {\r\n this.currentQuery.filterTranslation += ' AND ';\r\n }\r\n this.currentQuery.filterTranslation += '(';\r\n for (let a = 0; a < applyToAllGroup.length; a++) {\r\n if (a > 0) {\r\n this.currentQuery.filterTranslation += ' OR ';\r\n }\r\n\r\n let value = applyToAllGroup[a].Value;\r\n let value2 = applyToAllGroup[a].Value2;\r\n\r\n if (applyToAllGroup[a].DataType.toLowerCase() == 'char' || applyToAllGroup[a].DataType.toLowerCase() == 'varchar' || applyToAllGroup[a].DataType.toLowerCase() == 'datetime' || applyToAllGroup[a].DataType.toLowerCase() == 'smalldatetime') {\r\n value = '\\'' + applyToAllGroup[a].Value + '\\'';\r\n value2 = '\\'' + applyToAllGroup[a].Value2 + '\\'';\r\n }\r\n\r\n if (applyToAllGroup[a].Operator == 'Between') {\r\n this.currentQuery.filterTranslation += applyToAllGroup[a].DisplayName + ' is between ' + value + ' and ' + value2;\r\n } else if (applyToAllGroup[a].Operator == 'Is Blank' || applyToAllGroup[a].Operator == 'Is Not Blank') {\r\n this.currentQuery.filterTranslation += applyToAllGroup[a].DisplayName + ' ' + applyToAllGroup[a].Operator;\r\n } else if (applyToAllGroup[a].Operator == 'In List' || applyToAllGroup[a].Operator == 'Not In List') {\r\n this.currentQuery.filterTranslation += applyToAllGroup[a].DisplayName + ' ' + applyToAllGroup[a].Operator + '(' + value + ')';\r\n } else {\r\n this.currentQuery.filterTranslation += applyToAllGroup[a].DisplayName + ' ' + applyToAllGroup[a].Operator + ' ' + value;\r\n }\r\n }\r\n this.currentQuery.filterTranslation += ')';\r\n }\r\n\r\n // Setting the errors on the filter\r\n if (field != null && filter != null) {\r\n if (field.DataType.toLowerCase() == 'int' || field.DataType.toLowerCase() == 'decimal' || field.DataType.toLowerCase() == 'float'\r\n || field.DataType.toLowerCase() == 'money' || field.DataType.toLowerCase() == 'bigint' || field.DataType.toLowerCase() == 'smallint'\r\n || field.DataType.toLowerCase() == 'tinyint' || field.DataType.toLowerCase() == 'numeric'\r\n || field.DataType.toLowerCase() == 'smalldatetime') {\r\n filter.showFilterError1 = false;\r\n filter.showFilterError2 = false;\r\n\r\n if (field.DataType.toLowerCase() == 'smalldatetime') {\r\n if (this.isValidDate(filter.Value) == false) {\r\n filter.showFilterError1 = true;\r\n }\r\n if (this.isValidDate(filter.Value2) == false && filter.Operator == 'Between') {\r\n filter.showFilterError2 = true;\r\n }\r\n } else {\r\n if (isNaN(filter.Value)) {\r\n filter.showFilterError1 = true;\r\n }\r\n if (isNaN(filter.Value2) && filter.Operator == 'Between') {\r\n filter.showFilterError2 = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n isValidDate(d) {\r\n if (d != undefined && d != '') {\r\n if (moment(d).isValid() == false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n return true;\r\n }\r\n\r\n splitFunctionString(fnText) {\r\n const operatorList = this.operators.map(operator => operator.Display);\r\n let parenCount = 0;\r\n const result = [];\r\n let currentString = '';\r\n let isStringLiteral = false;\r\n let isFieldName = false;\r\n for (let i = 0; i < fnText.length; i++) {\r\n currentString += fnText[i];\r\n\r\n // Catching string literals\r\n if (fnText[i] == '\"') {\r\n if (isStringLiteral == true && parenCount == 0) {\r\n result.push(currentString.trim());\r\n currentString = '';\r\n }\r\n isStringLiteral = !isStringLiteral;\r\n }\r\n if (isStringLiteral == false) {\r\n\r\n // Catching field names\r\n if (parenCount == 0) {\r\n if (fnText[i] == '[') {\r\n isFieldName = true;\r\n if (currentString.substring(0, currentString.length - 1).trim() != '') {\r\n result.push(currentString.substring(0, currentString.length - 1));\r\n }\r\n currentString = fnText[i];\r\n } else if (fnText[i] == ']') {\r\n isFieldName = false;\r\n result.push(currentString);\r\n currentString = '';\r\n }\r\n }\r\n if (isFieldName == false) {\r\n\r\n // Catching parenthesis\r\n if (fnText[i] == '(') {\r\n parenCount++;\r\n } else if (parenCount > 0) {\r\n if (fnText[i] == ')') {\r\n parenCount--;\r\n if (parenCount == 0) {\r\n if (currentString.trim() != '') {\r\n result.push(currentString.trim());\r\n }\r\n currentString = '';\r\n }\r\n }\r\n }\r\n\r\n // Catching operands\r\n else if (currentString.trim() != '' && this.operators.find(op => op.Display == currentString)) {\r\n let operatorText = currentString;\r\n let operator: DataQueryOperator;\r\n\r\n // Looking ahead as well\r\n let j = i;\r\n let moveIndex = i;\r\n while (this.operators.find(op => op.Display.includes(operatorText))) {\r\n const lookAheadOperator = this.operators.find(op => op.Display == operatorText);\r\n if (lookAheadOperator) {\r\n operator = lookAheadOperator;\r\n moveIndex = j;\r\n }\r\n j += 1;\r\n operatorText += fnText[j];\r\n }\r\n\r\n // Adding the operator and moving ahead\r\n result.push(operator.Display);\r\n currentString = '';\r\n i = moveIndex;\r\n }\r\n\r\n // Catching other literals\r\n else if (\r\n fnText[i] == ' '\r\n && currentString.trim() != ''\r\n ) {\r\n result.push(currentString.trim());\r\n currentString = '';\r\n }\r\n }\r\n }\r\n\r\n // Catches the remaining contents of the string\r\n if (i + 1 == fnText.length) {\r\n if (currentString.trim() != '') {\r\n result.push(currentString.trim());\r\n }\r\n currentString = '';\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n addRosterFilter(rosterFilterCourses?: ClassroomSummary[], _callback?: Function, query?: DataQuery) {\r\n // PRE: optionally, a list of courses or a callback function\r\n // POST: if courses are provided, uses those to add roster filters\r\n // \t\tIf no courses are provided, opens a dialog to select a number of courses.\r\n // \t\t\tThen, adds those courses as a filter and calls the callback.\r\n\r\n // If a query is not supplied, use the current query\r\n if (!query) {\r\n query = this.currentQuery;\r\n }\r\n\r\n // Utility function for handling courses\r\n const handleCourses = (courses: ClassroomSummary[]) => {\r\n\r\n // We only do anything if we have some courses\r\n if (courses && courses.length > 0) {\r\n\r\n // Obtaining the right object and category\r\n const studentObject = this.information.objects.find(object => object.ObjectName.toLowerCase() == 'student');\r\n if (studentObject) {\r\n const demographicsCategory = studentObject.categories.find(category =>\r\n category.CategoryName.toLowerCase() == (this.loginService.LoginSettings.V10 ? 'student demographics' : 'demographics')\r\n );\r\n if (demographicsCategory) {\r\n\r\n // Creating a helper function to add the fields to the correct spots\r\n const addStudentField = (field: DataQueryField) => {\r\n if (field) {\r\n field.SortDirection = 'None';\r\n field.ShowOnReport = true;\r\n if (query.reportFields.length > 0) {\r\n for (let i = 0; i < query.reportFields.length; i++) {\r\n const studentField = query.reportFields.find(f =>\r\n f.ID == field.ID && f.CategoryID == field.CategoryID\r\n );\r\n if (studentField == null) {\r\n query.reportFields.push(field);\r\n }\r\n if (\r\n !query.reportFields[i].TransformationFields ||\r\n query.reportFields[i].TransformationFields.length == 0\r\n ) {\r\n query.reportFields[i].FunctionText = this.getTransFunctionText(query.reportFields[i]);\r\n query.reportFields[i].TransformationFields = [\r\n {\r\n fieldId: query.reportFields[i].ID,\r\n categoryId: query.reportFields[i].CategoryID,\r\n position: 0,\r\n sql: ''\r\n }\r\n ];\r\n }\r\n }\r\n } else {\r\n query.reportFields.push(field);\r\n }\r\n query.sortFields.push(field);\r\n }\r\n };\r\n\r\n // Performing the additions on each student field\r\n const studentFields = [];\r\n studentFields.push(\r\n demographicsCategory.fields.find(field =>\r\n (this.loginService.LoginSettings.V10 && field.FieldName.toLowerCase() == 'studentname')\r\n || (!this.loginService.LoginSettings.V10 && field.DisplayName == 'Name - Full')\r\n ),\r\n demographicsCategory.fields.find(field =>\r\n (this.loginService.LoginSettings.V10 && field.FieldName.toLowerCase() == 'student_number')\r\n || (!this.loginService.LoginSettings.V10 && field.DisplayName == 'Student #')\r\n )\r\n );\r\n\r\n // ONE-5675\r\n if ((this.loginService.LoginSettings.V10) || (!this.loginService.LoginSettings.V10 && query.reportFields.length == 0)) {\r\n studentFields.forEach(studentField => {\r\n if (!query.reportFields.includes(studentField)) {\r\n addStudentField(studentField);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Finding the filter for roster classes\r\n let courseFilterField = query.filterFields.find(field =>\r\n field.DisplayName == DataQueryFieldFilter.courseFilterDisplayName && field.CategoryID == demographicsCategory.ID\r\n );\r\n if (courseFilterField == null) {\r\n courseFilterField = this.information.getField(field =>\r\n field.DisplayName == DataQueryFieldFilter.courseFilterDisplayName && field.CategoryID == demographicsCategory.ID\r\n );\r\n if (courseFilterField != null) {\r\n courseFilterField.Visible = true;\r\n courseFilterField.Filters = [];\r\n query.filterFields.push(courseFilterField);\r\n }\r\n }\r\n\r\n // If we have a filter, then set it up\r\n if (courseFilterField) {\r\n query.queryChanged = true;\r\n let strGroup;\r\n let intAscii;\r\n let intTmpAscii = 64;\r\n for (let l = 0; l < query.filterFields.length; l++) {\r\n for (let j = 0; j < query.filterFields[l].Filters.length; j++) {\r\n strGroup = query.filterFields[l].Filters[j].Group;\r\n intAscii = strGroup.charCodeAt(0);\r\n if (intAscii > intTmpAscii) {\r\n intTmpAscii = intAscii;\r\n }\r\n }\r\n }\r\n\r\n // Creating the filters for each course\r\n for (let i = 0; i < courses.length; i++) {\r\n\r\n // Setting up the course name\r\n let courseName = this.userPreferencesService.generalPreferences.SelectedClassesOptionText;\r\n if (courseName == null || courseName == '') {\r\n courseName = this.loginService.LoginSettings.V10 == false ? 'Course Name (Course Number-Section) Meets' : 'Course Name (Course Number-Section) M: Meets';\r\n }\r\n courseName = courseName.replace('Course Name', courses[i].Course);\r\n courseName = courseName.replace('Course Number', courses[i].SubjectCode);\r\n courseName = courseName.replace('Section', courses[i].Section);\r\n if (courses[i].Meets != null) {\r\n courseName = courseName.replace('Meets', courses[i].Meets);\r\n } else {\r\n courseName = courseName.replace('M: Meets', '');\r\n }\r\n\r\n // Setting up the course menu text\r\n courses[i].CourseMenuText = courseName;\r\n\r\n // Creating the filter\r\n intTmpAscii += 1;\r\n const filter = new DataQueryFieldFilter();\r\n filter.FilterID = DataQueryService.filterFieldId;\r\n filter.Operator = '=';\r\n filter.Value = courseName;\r\n filter.Value2 = courses[i].Id;\r\n filter.Group = String.fromCharCode(intTmpAscii);\r\n filter.DisplayMenu = false;\r\n filter.UseCurrentDate1 = false;\r\n filter.UseCurrentDate2 = false;\r\n filter.FilterOptions = [];\r\n filter.UseFilterForStudentSearch = true;\r\n filter.IsStudentFilter = false;\r\n filter.StudentFilterId = 0;\r\n filter.IsCourseFilter = false;\r\n filter.CourseFilterId = 0;\r\n filter.ApplyToAll = true;\r\n filter.field = courseFilterField;\r\n\r\n // Incrementing the filter Id\r\n DataQueryService.filterFieldId = DataQueryService.filterFieldId + 1;\r\n\r\n // Adding the course name so it registers as a roster query\r\n query.siteSectionId = query.siteSectionId + ',' + courses[i].Id;\r\n query.courseName = courseName;\r\n\r\n }\r\n this.originalQuery.siteSectionId = query.siteSectionId;\r\n // Setting the query as changed to force reloading results and saving\r\n query.queryChanged = true;\r\n\r\n // Setting up the report parameters\r\n this.setShowOnReportParameters();\r\n }\r\n }\r\n }\r\n };\r\n\r\n // If courses are provided, use those\r\n if (rosterFilterCourses) {\r\n handleCourses(rosterFilterCourses);\r\n }\r\n\r\n // If no courses are provided, fetch them\r\n else {\r\n const dialogBox = this.dialog.open(SelectCourseDialogComponent, {\r\n disableClose: true,\r\n // hasBackdrop: false,\r\n panelClass: 'tyl-mat-dialog',\r\n data: {\r\n multiselect: true,\r\n headerText: 'Add Roster Filter'\r\n }\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(courses => {\r\n\r\n // Unsubscribing to prevent memory leaks\r\n subscription.unsubscribe();\r\n\r\n // Setting the roster filter on the service\r\n handleCourses(courses);\r\n\r\n // Re-establishing filter fields\r\n this.currentQuery.filterFields.forEach(field => {\r\n field.Filters.forEach(filter => {\r\n\r\n // Ensuring the filter is associated\r\n filter.field = field;\r\n\r\n // Setting the operator to the first viable one if one doesn't exist\r\n if (!filter.Operator) {\r\n const operators = filter.getFilterOperators();\r\n filter.Operator = operators[0];\r\n }\r\n });\r\n });\r\n\r\n // Setting table data\r\n if (_callback) {\r\n _callback(courses);\r\n }\r\n });\r\n }\r\n }\r\n\r\n getAllFields(query?: DataQuery, forSave = false, forSortOrder = false): DataQueryField[] {\r\n // PRE: the information and either a query is supplied or the current query is set\r\n // POST: obtains the fields for results\r\n\r\n // Setting the query to the current query if none is supplied\r\n if (!query) {\r\n query = this.currentQuery;\r\n }\r\n\r\n // Enforcing sort orders by index\r\n if (forSortOrder == true) {\r\n for (let i = 0; i < query.sortFields.length; i++) {\r\n query.sortFields[i].SortOrder = i; // Input -1 to make this identical to JS\r\n }\r\n }\r\n\r\n // Duplicating rFields and fFields to prevent changes from propagating outside results\r\n const rFields = [];\r\n const fFields = [];\r\n if (query != null) {\r\n\r\n // Setting report fields to a copy\r\n query.reportFields.forEach(field => {\r\n const object = field.object;\r\n const category = field.category;\r\n field.object = null;\r\n field.category = null;\r\n field.Filters.forEach(filter => {\r\n filter.field = null;\r\n });\r\n\r\n // ONE-8014..\r\n if (query.sortFields != null && query.sortFields.length > 0) {\r\n const sortField = query.sortFields.find(x => x.ID == field.ID);\r\n if (sortField != null) {\r\n field.SortDirection = sortField.SortDirection;\r\n field.SortOrder = sortField.SortOrder;\r\n }\r\n }\r\n\r\n rFields.push(JSON.parse(JSON.stringify(field)));\r\n field.object = object;\r\n field.category = category;\r\n if (this.loginService.LoginSettings.V10) {\r\n field.Filters.forEach(filter => {\r\n filter.field = field;\r\n });\r\n }\r\n });\r\n\r\n // Setting the filter fields to a copy\r\n query.filterFields.forEach(field => {\r\n const object = field.object;\r\n const category = field.category;\r\n field.object = null;\r\n field.category = null;\r\n field.Filters.forEach(filter => {\r\n filter.field = null;\r\n });\r\n fFields.push(JSON.parse(JSON.stringify(field)));\r\n field.object = object;\r\n field.category = category;\r\n if (this.loginService.LoginSettings.V10) {\r\n field.Filters.forEach(filter => {\r\n filter.field = field;\r\n });\r\n }\r\n });\r\n }\r\n\r\n // Getting all filters from student filter or course filter\r\n for (let f = 0; f < fFields.length; f++) {\r\n const field = fFields[f];\r\n const studentFilters = field.Filters.filter(filter => filter.IsStudentFilter);\r\n const courseFilters = field.Filters.filter(filter => filter.IsCourseFilter);\r\n for (let sf = 0; sf < studentFilters.length; sf++) {\r\n const filter = studentFilters[sf];\r\n if (filter.StudentFilterId != null) {\r\n const filterId = parseInt(filter.StudentFilterId, 10);\r\n const studentFilterQuery = this._studentFilters.find(studentFilter => studentFilter.ID == filterId);\r\n if (studentFilterQuery != null) {\r\n let filterGroup = 'A';\r\n for (let i = field.Filters.length - 1; i >= 0; i--) {\r\n if (field.Filters[i].FilterID == filter.FilterID) {\r\n filterGroup = field.Filters[i].Group;\r\n field.Filters.splice(i, 1);\r\n fFields.splice(f, 1);\r\n break;\r\n }\r\n }\r\n const queryObj = this.getObjectFromXML(studentFilterQuery.QueryXML);\r\n for (let qf = 0; qf < queryObj.filterFields.length; qf++) {\r\n // NOTE: We unset the references for safety\r\n for (let x = 0; x < queryObj.filterFields[qf].Filters.length; x++) {\r\n queryObj.filterFields[qf].Filters[x].Group = filterGroup;\r\n queryObj.filterFields[qf].Filters[x].field = null;\r\n }\r\n queryObj.filterFields[qf].ShowOnReport = false;\r\n queryObj.filterFields[qf].object = null;\r\n queryObj.filterFields[qf].category = null;\r\n fFields.push(queryObj.filterFields[qf]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n for (let cf = 0; cf < courseFilters.length; cf++) {\r\n const filter = courseFilters[cf];\r\n if (filter.CourseFilterId != null) {\r\n const filterId = parseInt(filter.CourseFilterId, 10);\r\n const courseFilterQuery = this._courseFilters.find(courseFilter => courseFilter.ID == filterId);\r\n if (courseFilterQuery != null) {\r\n let filterGroup = 'A';\r\n for (let i = field.Filters.length - 1; i >= 0; i--) {\r\n if (field.Filters[i].FilterID == filter.FilterID) {\r\n filterGroup = field.Filters[i].Group;\r\n field.Filters.splice(i, 1);\r\n fFields.splice(cf, 1);\r\n break;\r\n }\r\n }\r\n const queryObj = this.getObjectFromXML(courseFilterQuery.QueryXML);\r\n for (let qf = 0; qf < queryObj.filterFields.length; qf++) {\r\n // NOTE: We unset the references for safety\r\n for (let x = 0; x < queryObj.filterFields[qf].Filters.length; x++) {\r\n queryObj.filterFields[qf].Filters[x].Group = filterGroup;\r\n queryObj.filterFields[qf].Filters[x].field = null;\r\n }\r\n queryObj.filterFields[qf].ShowOnReport = false;\r\n queryObj.filterFields[qf].object = null;\r\n queryObj.filterFields[qf].category = null;\r\n fFields.push(queryObj.filterFields[qf]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Setting the report parameters for the results\r\n this.setShowOnReportParameters(query);\r\n\r\n // We enforce transformation fields here, but the JS app sets them before this\r\n rFields.forEach(rField => {\r\n if (!rField.TransformationFields || rField.TransformationFields.length == 0 && rField.ID > 0 && rField.CategoryID > 0) {\r\n rField.TransformationFields = [\r\n {\r\n fieldId: rField.ID,\r\n categoryId: rField.CategoryID,\r\n position: 0,\r\n sql: ''\r\n }\r\n ];\r\n }\r\n });\r\n\r\n // Seeing up the report fields based on the transformation fields\r\n // NOTE: we don't want to do this while we are saving or we'll get some bunk fields\r\n if (!forSave) {\r\n for (let n = 0; n < rFields.length; n++) {\r\n if (rFields[n].TransformationFields != null) {\r\n for (let t = 0; t < rFields[n].TransformationFields.length; t++) {\r\n const fieldId = rFields[n].TransformationFields[t].fieldId;\r\n let field = rFields.find(rField =>\r\n rField.ID == rFields[n].TransformationFields[t].fieldId &&\r\n rField.CategoryID == rFields[n].TransformationFields[t].categoryId\r\n );\r\n if (field == null) {\r\n field = this.information.getField(f =>\r\n f.ID == rFields[n].TransformationFields[t].fieldId &&\r\n f.CategoryID == rFields[n].TransformationFields[t].categoryId\r\n );\r\n }\r\n if (field != null &&\r\n rFields.find(rField => rField.ID == field.ID && rField.CategoryID == field.CategoryID) == null) {\r\n const category = this.information.categories.find(c => c.ID == field.CategoryID);\r\n if (category != null && (field.ObjectName == null || field.ObjectName == undefined)) {\r\n const object = this.information.objects.find(o => o.ID == category.ObjectID);\r\n if (object != null) {\r\n field.ObjectName = object.ObjectName;\r\n }\r\n }\r\n field.IsDuplicate = field.IsDuplicate == undefined ? false : field.IsDuplicate;\r\n rFields.push(field);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Adding filter fields to the returned fields\r\n for (let i = 0; i < fFields.length; i++) {\r\n const field = rFields.find(rField => rField.ID == fFields[i].ID && rField.CategoryID == fFields[i].CategoryID);\r\n if (field != null) {\r\n if (this.loginService.LoginSettings.V10 == false) {\r\n fFields[i].Filters.forEach(object => {\r\n object.field = null;\r\n });\r\n }\r\n field.Filters = fFields[i].Filters;\r\n } else {\r\n rFields.push(fFields[i]);\r\n }\r\n }\r\n\r\n return rFields;\r\n }\r\n\r\n resetResultProperties() {\r\n // POST: resets all the properties used for results\r\n this.results = null;\r\n this.recordCount = null;\r\n this.pageCount = null;\r\n this.queryResultTable = [];\r\n if (this.currentQuery) {\r\n this.currentQuery.SQLScript = '';\r\n }\r\n this.currentPage = 1;\r\n this.retrievedData = [];\r\n this.currentQuery.queryChangedSinceLastResult = true;\r\n }\r\n\r\n setShowOnReportParameters(query?: DataQuery) {\r\n // POST: sets up the fields for the reports\r\n\r\n // Defaulting to the current query\r\n if (!query) {\r\n query = this.currentQuery;\r\n }\r\n\r\n // Setting rport parameters\r\n for (let i = 0; i < query.filterFields.length; i++) {\r\n query.filterFields[i].ShowOnReport = false;\r\n }\r\n for (let i = 0; i < query.reportFields.length; i++) {\r\n const reportField = query.reportFields[i];\r\n reportField.ShowOnReport = true;\r\n if (reportField.FunctionText == null || reportField.FunctionText == '') {\r\n reportField.TransformationFields = [];\r\n let viewName = '';\r\n const category = this.information.categories.find(cat => cat.ID == reportField.CategoryID);\r\n if (category != null) {\r\n viewName = category.ViewName;\r\n } else {\r\n console.warn('No category for reportField.TransformationField sql');\r\n }\r\n const textToInsert = this.getTransFunctionText(reportField);\r\n const sqlToInsert = (reportField.FieldName && reportField.FieldName != '') ? ('vw' + viewName + '.[' + reportField.FieldName + ']') : '';\r\n reportField.FunctionText = textToInsert;\r\n const trans = {\r\n fieldId: reportField.ID,\r\n categoryId: reportField.CategoryID,\r\n sql: sqlToInsert,\r\n position: 0\r\n };\r\n reportField.TransformationFields.push(trans);\r\n this.transFunctionChanged(reportField);\r\n }\r\n }\r\n }\r\n\r\n reorderResults(indexA, indexB) {\r\n // PRE: two indexes to switch\r\n // POST: switches the indexes on all results\r\n this.results.reorder(indexA, indexB);\r\n }\r\n\r\n exportResults(callback?: Function) {\r\n // POST: exports the results to the client based on the export settings on the query\r\n\r\n // Validating our syntax\r\n let validSyntax = true;\r\n this.currentQuery.reportFields.forEach(rField => {\r\n // Remove circular structure to JSON\r\n if (rField.object != undefined) {\r\n rField.object = null;\r\n }\r\n if (rField.category != undefined) {\r\n rField.category = null;\r\n }\r\n const reportField = _.cloneDeep(rField);\r\n this.validateSyntax(reportField, reportField.FunctionText);\r\n if (reportField.FunctionError && reportField.FunctionError.length > 0) {\r\n validSyntax = false;\r\n }\r\n });\r\n\r\n // If the syntax is valid, exporting results\r\n if (validSyntax) {\r\n const subscription = this.getResultsAsString().subscribe(\r\n fileData => {\r\n\r\n // Unsubscribing upon completion\r\n subscription.unsubscribe();\r\n\r\n // Setting the variables required for the file\r\n let fileType: string;\r\n let fileName = this.currentQuery.QueryName ? this.currentQuery.QueryName : 'Data Query';\r\n\r\n // Composing excel file\r\n if (this.currentQuery.ExportType == 'Excel') {\r\n fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset-utf-8;';\r\n fileName += '.xlsx';\r\n System.saveFile(fileData, fileType, fileName);\r\n }\r\n\r\n // Composing text file\r\n else {\r\n fileType = this.currentQuery.Delimiter != 'Comma' ? 'text/plain' : 'application/csv' + ';charset-utf-8;';\r\n fileName += this.currentQuery.Delimiter != 'Comma' ? '.txt' : '.csv';\r\n System.saveFile(btoa(unescape(encodeURIComponent(fileData))), fileType, fileName);\r\n }\r\n\r\n // Calling the callback\r\n if (callback) {\r\n callback(true);\r\n }\r\n }\r\n );\r\n } else {\r\n callback(false);\r\n }\r\n }\r\n\r\n checkDefaultFilterFields(fields?: DataQueryField[], fieldMutator = (field: DataQueryField) => {\r\n }) {\r\n // PRE: the fields in the information is set or fields are provided. The information must also be organized.\r\n // POST: checks the fields and sets the default filter fields\r\n\r\n // Determining which fields to use\r\n if (!fields) {\r\n fields = this.information.fields;\r\n }\r\n\r\n // V10 uses different fields\r\n if (this.loginService.LoginSettings.V10) {\r\n\r\n // Helper Function to mutate fields\r\n const mutateField = (columnName: string, category: DataQueryCategory) => {\r\n const field = category.fields.find(f =>\r\n f.FieldName.toLowerCase() == columnName.toLowerCase()\r\n );\r\n if (field) {\r\n if (columnName != 'PrimaryJob') {\r\n field.IsDefaultFilterField = true;\r\n }\r\n fieldMutator(field);\r\n }\r\n };\r\n const mutateAllFields = (columnNames: string[], category: DataQueryCategory) => {\r\n for (let i = 0; i < columnNames.length; i++) {\r\n mutateField(columnNames[i], category);\r\n }\r\n };\r\n\r\n // Student Search\r\n if (this.isStudentSearch) {\r\n\r\n // Set demographic fields\r\n let demographicsCategory = null;\r\n const studentObject = this.information.objects.find(object => object.ObjectName == 'Student');\r\n if (studentObject) {\r\n demographicsCategory = studentObject.categories.find(category =>\r\n category.CategoryName == (this.loginService.LoginSettings.V10 ? 'Student Demographics' : 'Demographics')\r\n );\r\n if (demographicsCategory) {\r\n mutateAllFields(\r\n [\r\n 'STUDENT_NUMBER',\r\n 'student_id',\r\n 'FIRST_NAME',\r\n 'LAST_NAME',\r\n 'DOB'\r\n ],\r\n demographicsCategory\r\n );\r\n }\r\n\r\n\r\n // Set enrollment fields\r\n const enrollmentObject = this.information.objects.find(object => object.ObjectName == 'Enrollment');\r\n if (enrollmentObject) {\r\n const enrollmentCategory = enrollmentObject.categories.find(category => category.CategoryName == 'Student Enrollment' && category.ObjectID == enrollmentObject.ID);\r\n if (enrollmentCategory) {\r\n mutateAllFields(\r\n [\r\n 'GRADE_LEVEL',\r\n 'SCHOOL_NAME',\r\n 'Primary',\r\n 'Entry_Date',\r\n 'ENROLLMENT_STATUS'\r\n ],\r\n enrollmentCategory\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Course Search\r\n else if (this.isCourseSearch) {\r\n\r\n // Set course search fields\r\n const districtCourseObject = this.information.objects.find(object => object.ObjectName == 'Course - District');\r\n let districtCourseCategory = null;\r\n if (districtCourseObject) {\r\n districtCourseCategory = districtCourseObject.categories.find(category => category.CategoryName == 'District Course Master' && category.ObjectID == districtCourseObject.ID);\r\n }\r\n const schoolCourseObject = this.information.objects.find(object => object.ObjectName == 'Course - School');\r\n let schoolCourseCategory = null;\r\n if (schoolCourseObject) {\r\n schoolCourseCategory = schoolCourseObject.categories.find(category => category.CategoryName == 'School Course Master');\r\n }\r\n if (districtCourseCategory) {\r\n mutateAllFields(\r\n [\r\n 'COURSE_NAME',\r\n 'COURSE_NUMBER',\r\n 'DEPARTMENT',\r\n 'SubjectAreas',\r\n 'CreditCodes',\r\n 'COURSE_CREDITS',\r\n 'Max_Seats',\r\n 'QUALIFYING_GRADE_LEVELS',\r\n 'Include_In_GPA',\r\n 'CourseRequirement'\r\n ],\r\n districtCourseCategory\r\n );\r\n }\r\n if (schoolCourseCategory) {\r\n mutateAllFields(\r\n [\r\n 'GenderRestriction',\r\n 'Sped',\r\n 'GAT',\r\n 'SchoolName'\r\n ],\r\n schoolCourseCategory\r\n );\r\n }\r\n }\r\n\r\n // Staff Search\r\n else if (this.isStaffSearch) {\r\n\r\n // Staff Fields\r\n const staffObject = this.information.objects.find(object => object.ObjectName == 'Employee');\r\n if (staffObject) {\r\n\r\n // Setting demographic fields\r\n const staffDemographicsCategory = staffObject.categories.find(category => category.CategoryName == 'Employee Demographics' && category.ObjectID == staffObject.ID);\r\n if (staffDemographicsCategory) {\r\n mutateAllFields(\r\n [\r\n 'Staff_ID',\r\n 'Employee_Number',\r\n 'Employee_First_Name',\r\n 'Employee_Middle_Name',\r\n 'Employee_Last_Name',\r\n ],\r\n staffDemographicsCategory\r\n );\r\n }\r\n\r\n // Setting job fields\r\n const staffJobsCategory = staffObject.categories.find(category => category.CategoryName == 'Employee Jobs' && category.ObjectID == staffObject.ID);\r\n if (staffJobsCategory) {\r\n mutateAllFields(\r\n [\r\n 'School_Name',\r\n 'JobDesc',\r\n 'PrimaryJob'\r\n ],\r\n staffJobsCategory\r\n );\r\n }\r\n }\r\n\r\n // Scheduling Specific Fields\r\n const schedulingObject = this.information.objects.find(object => object.ObjectName == 'Scheduling');\r\n if (schedulingObject) {\r\n\r\n // Teacher Info Fields\r\n const teacherInformationCategory = schedulingObject.categories.find(category => category.CategoryName == 'Teacher Information' && category.ObjectID == schedulingObject.ID);\r\n if (teacherInformationCategory) {\r\n mutateAllFields(\r\n [\r\n 'UseForScheduling',\r\n 'Departments',\r\n 'Certifications',\r\n 'DefaultBellSchedule',\r\n 'PreferredRoom',\r\n 'PreferredSubjectAreas',\r\n 'SchedulingGroups',\r\n 'ScheduledInCourse',\r\n 'SubjectAreas'\r\n ],\r\n teacherInformationCategory\r\n );\r\n }\r\n }\r\n }\r\n\r\n // V9 uses different fields\r\n } else {\r\n if (this.isStudentSearch) {\r\n // Both enrollment and demographics come from student object\r\n const studentObject = this.information.objects.find(object => object.ObjectName == 'Student');\r\n if (studentObject) {\r\n\r\n // Setting demographic fields\r\n const demographicsCategory = studentObject.categories.find(category =>\r\n category.CategoryName == (this.loginService.LoginSettings.V10 ? 'Student Demographics' : 'Demographics')\r\n );\r\n if (demographicsCategory) {\r\n let studentField = fields.find(field => field.DisplayName == 'Student #' && field.CategoryID == demographicsCategory.ID);\r\n if (studentField) {\r\n studentField.IsDefaultFilterField = true;\r\n fieldMutator(studentField);\r\n }\r\n\r\n // studentField = fields.find(field => field.FieldName.toLowerCase() == 'lngstudentid' && field.CategoryID == demographicsCategory.ID);\r\n // if (studentField) {\r\n // studentField.IsDefaultFilterField = true;\r\n // fieldMutator(studentField);\r\n // }\r\n studentField = fields.find(field => field.DisplayName == 'lngStudentId' && field.CategoryID == demographicsCategory.ID);\r\n if (studentField) {\r\n studentField.IsDefaultFilterField = false;\r\n fieldMutator(studentField);\r\n }\r\n\r\n studentField = fields.find(field => field.DisplayName == 'Name - First' && field.CategoryID == demographicsCategory.ID);\r\n if (studentField) {\r\n studentField.IsDefaultFilterField = true;\r\n fieldMutator(studentField);\r\n }\r\n\r\n studentField = fields.find(field => field.DisplayName == 'Name - Last' && field.CategoryID == demographicsCategory.ID);\r\n if (studentField) {\r\n studentField.IsDefaultFilterField = true;\r\n fieldMutator(studentField);\r\n }\r\n\r\n studentField = fields.find(field => field.DisplayName == 'Birth Date' && field.CategoryID == demographicsCategory.ID);\r\n if (studentField) {\r\n studentField.IsDefaultFilterField = true;\r\n fieldMutator(studentField);\r\n }\r\n }\r\n\r\n // Setting enrollment fields\r\n const enrollmentCategory = studentObject.categories.find(category => category.CategoryName == 'Current Enrollment' && category.ObjectID == studentObject.ID);\r\n if (enrollmentCategory) {\r\n\r\n let enrollmentField = fields.find(field => field.DisplayName == 'Grade' && field.CategoryID == enrollmentCategory.ID);\r\n if (enrollmentField) {\r\n enrollmentField.IsDefaultFilterField = true;\r\n fieldMutator(enrollmentField);\r\n }\r\n\r\n enrollmentField = fields.find(field => field.DisplayName == 'Primary Enrollment Site Name' && field.CategoryID == enrollmentCategory.ID);\r\n if (enrollmentField) {\r\n enrollmentField.IsDefaultFilterField = true;\r\n fieldMutator(enrollmentField);\r\n }\r\n\r\n enrollmentField = fields.find(field => field.DisplayName == 'Enrollment Date' && field.CategoryID == enrollmentCategory.ID);\r\n if (enrollmentField) {\r\n enrollmentField.IsDefaultFilterField = true;\r\n fieldMutator(enrollmentField);\r\n }\r\n\r\n enrollmentField = fields.find(field => field.DisplayName == 'Enrollment Status' && field.CategoryID == enrollmentCategory.ID);\r\n if (enrollmentField) {\r\n enrollmentField.IsDefaultFilterField = true;\r\n fieldMutator(enrollmentField);\r\n }\r\n\r\n enrollmentField = fields.find(field => field.DisplayName == 'Primary' && field.CategoryID == enrollmentCategory.ID);\r\n if (enrollmentField) {\r\n enrollmentField.IsDefaultFilterField = false;\r\n fieldMutator(enrollmentField);\r\n }\r\n }\r\n }\r\n }\r\n // Staff Search\r\n else if (this.isStaffSearch) {\r\n // Staff Fields\r\n const staffObject = this.information.objects.find(object => object.ObjectName == 'Staff');\r\n if (staffObject) {\r\n\r\n // Setting demographic fields\r\n const staffDemographicsCategory = staffObject.categories.find(category => category.CategoryName == 'Demographics' && category.ObjectID == staffObject.ID);\r\n if (staffDemographicsCategory) {\r\n let staffField = fields.find(field => field.DisplayName == 'ID' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Name - First' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Name - Last' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Name - Middle' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Roles' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Pri Assign Site Name' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Username' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Perm Group' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'Name' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n\r\n staffField = fields.find(field => field.DisplayName == 'State ID' && field.CategoryID == staffDemographicsCategory.ID);\r\n if (staffField) {\r\n staffField.IsDefaultFilterField = true;\r\n fieldMutator(staffField);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n //////////// Validation Methods //////////\r\n validateFilters(query?: DataQuery) {\r\n // POST: determines if the filter fields are set correctly\r\n\r\n // Defaulting to the current query\r\n if (!query) {\r\n query = this.currentQuery;\r\n }\r\n\r\n // Validating\r\n let isValid = true;\r\n for (let i = 0; i < query.filterFields.length; i++) {\r\n for (let n = 0; n < query.filterFields[i].Filters.length; n++) {\r\n if (query.filterFields[i].DataType != undefined) {\r\n query.filterFields[i].Filters[n].showFilterError1 = false;\r\n query.filterFields[i].Filters[n].showFilterError2 = false;\r\n if (query.filterFields[i].DataType.toLowerCase() == 'int'\r\n || query.filterFields[i].DataType.toLowerCase() == 'decimal'\r\n || query.filterFields[i].DataType.toLowerCase() == 'float'\r\n || query.filterFields[i].DataType.toLowerCase() == 'money'\r\n || query.filterFields[i].DataType.toLowerCase() == 'bigint'\r\n || query.filterFields[i].DataType.toLowerCase() == 'smallint'\r\n || query.filterFields[i].DataType.toLowerCase() == 'tinyint'\r\n || query.filterFields[i].DataType.toLowerCase() == 'numeric'\r\n || query.filterFields[i].DataType.toLowerCase() == 'smalldatetime') {\r\n\r\n if (query.filterFields[i].DataType.toLowerCase() == 'smalldatetime') {\r\n if (this.isValidDate(query.filterFields[i].Filters[n].Value) == false\r\n && query.filterFields[i].DisplayName != DataQueryFieldFilter.courseFilterDisplayName) {\r\n query.filterFields[i].Filters[n].showFilterError1 = true;\r\n isValid = false;\r\n }\r\n if (this.isValidDate(query.filterFields[i].Filters[n].Value2) == false\r\n && query.filterFields[i].Filters[n].Operator == 'Between') {\r\n query.filterFields[i].Filters[n].showFilterError2 = true;\r\n isValid = false;\r\n }\r\n } else {\r\n if (isNaN(query.filterFields[i].Filters[n].Value)\r\n && query.filterFields[i].DisplayName != DataQueryFieldFilter.courseFilterDisplayName) {\r\n query.filterFields[i].Filters[n].showFilterError1 = true;\r\n isValid = false;\r\n }\r\n\r\n if (isNaN(query.filterFields[i].Filters[n].Value2)\r\n && query.filterFields[i].Filters[n].Operator == 'Between') {\r\n query.filterFields[i].Filters[n].showFilterError2 = true;\r\n isValid = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return isValid;\r\n }\r\n\r\n validateFunctions(query?: DataQuery) {\r\n // POST: validates the report field's functions\r\n\r\n // Defaulting to the current query\r\n if (!query) {\r\n query = this.currentQuery;\r\n }\r\n\r\n // Validating\r\n let isValid = true;\r\n for (let i = 0; i < query.reportFields.length; i++) {\r\n query.reportFields[i].FunctionError = [];\r\n if (!query.reportFields[i].FunctionError.find(error => error == 'Column Name is required.')\r\n && query.reportFields[i].IsCalculated\r\n && ((query.reportFields[i].Alias != null\r\n && query.reportFields[i].Alias.trim() == '')\r\n || (query.reportFields[i].DisplayName != null\r\n && query.reportFields[i].DisplayName.trim() == '')\r\n || ((query.reportFields[i].Alias == undefined || query.reportFields[i].Alias == null)\r\n && (query.reportFields[i].DisplayName == undefined\r\n || query.reportFields[i].DisplayName == null)))) {\r\n query.reportFields[i].addFunctionError('Column Name is required.');\r\n }\r\n const upperAlias = (query.reportFields[i].Alias == null ? (query.reportFields[i].DisplayName != null ? query.reportFields[i].DisplayName : '') : query.reportFields[i].Alias);\r\n for (let j = i + 1; j < query.reportFields.length; j++) {\r\n const innerAlias = (query.reportFields[j].Alias == null ? (query.reportFields[j].DisplayName != null ? query.reportFields[j].DisplayName : '') : query.reportFields[j].Alias);\r\n if (upperAlias != null && innerAlias != null\r\n && upperAlias != '' && innerAlias != ''\r\n && upperAlias.toLowerCase() == innerAlias.toLowerCase()\r\n && !query.reportFields[i].FunctionError.find(error => error == 'Ambiguous Column Name.')) {\r\n query.reportFields[i].addFunctionError('Ambiguous Column Name.');\r\n }\r\n }\r\n if (query.reportFields[i].IsCalculated\r\n && query.reportFields[i].FunctionText.trim() == ''\r\n && !query.reportFields[i].FunctionError.find(error => error == 'Value is required.')) {\r\n query.reportFields[i].addFunctionError('Value is required.');\r\n }\r\n if (query.reportFields[i].Alias != null\r\n && (query.reportFields[i].Alias.trim()[0] == '['\r\n && query.reportFields[i].Alias.trim()[query.reportFields[i].Alias.length - 1] == ']')) {\r\n query.reportFields[i].addFunctionError('Character \"[\" is not allowed at start and end position of Alias name');\r\n }\r\n if (query.reportFields[i].FunctionError == null\r\n || query.reportFields[i].FunctionError.length == 0) {\r\n this.validateSyntax(query.reportFields[i], query.reportFields[i].FunctionText);\r\n }\r\n if (query.reportFields[i].FunctionError != null\r\n && query.reportFields[i].FunctionError.length > 0) {\r\n console.log(query.reportFields[i]);\r\n isValid = false;\r\n }\r\n }\r\n return isValid;\r\n }\r\n\r\n validateSyntax(field: DataQueryField, fnText: string) {\r\n // POST: validates the function syntax\r\n const operatorList = this.operators.map(operator => operator.Display.trim().toLowerCase());\r\n if (field != null) {\r\n field.FunctionError = [];\r\n if (!fnText) {\r\n field.addFunctionError('Column Name is required.');\r\n } else {\r\n const fnParts = this.splitFunctionString(fnText);\r\n for (let i = 0; i < fnParts.length; i++) {\r\n const fnPart = fnParts[i];\r\n\r\n // If this is an operator and either the next or the previous is also an operator, there is an error\r\n if (\r\n operatorList.includes(fnPart.trim().toLowerCase())\r\n && (\r\n i == 0\r\n || i == fnParts.length - 1\r\n || operatorList.includes(fnParts[i - 1].trim().toLowerCase())\r\n || operatorList.includes(fnParts[i + 1].trim().toLowerCase())\r\n )\r\n ) {\r\n field.addFunctionError('Missing conditional operand near ' + fnPart + '.');\r\n }\r\n\r\n // If this isn't an operator and the next or the previous is also not, there is an error\r\n else if (\r\n !operatorList.includes(fnParts[i].trim().toLowerCase())\r\n && (\r\n (\r\n i < fnParts.length - 1\r\n && !operatorList.includes(fnParts[i + 1].trim().toLowerCase())\r\n )\r\n || (\r\n i > 0\r\n && !operatorList.includes(fnParts[i - 1].trim().toLowerCase())\r\n )\r\n )\r\n ) {\r\n field.addFunctionError('Missing conditional operator near ' + fnPart + '.');\r\n }\r\n\r\n // If the string isn't closed, there is an error\r\n if (fnPart.substring(0, 1) == '\"') {\r\n if (fnPart.substring(fnPart.length - 1) != '\"') {\r\n field.addFunctionError('Missing Closing \".');\r\n }\r\n }\r\n\r\n // If the bracket isn't closed, there is an error\r\n else if (fnPart.substring(0, 1) == '[') {\r\n if (fnPart.substring(fnPart.length - 1) != ']') {\r\n field.addFunctionError('Missing Closing ].');\r\n }\r\n }\r\n\r\n // Evaluating parentheses\r\n else if (fnPart.includes('(')) {\r\n const fnName = fnPart.substring(0, fnPart.indexOf('(')).trim();\r\n if (fnPart.substring(fnPart.length - 1) != ')') {\r\n field.addFunctionError('Missing closing ) on ' + fnName + '.');\r\n } else {\r\n const paramString = fnPart.substring(fnPart.indexOf('(') + 1, fnPart.lastIndexOf(')')).trim();\r\n const parameters: string[] = [];\r\n let currentParam = '';\r\n let parenCount = 0;\r\n let isStringLiteral = false;\r\n const fn = this.functions.find(f => f.Name.toLowerCase() == fnName.toLowerCase());\r\n if (fn == null) {\r\n field.addFunctionError(fnName + ' is not a function.');\r\n } else {\r\n for (let c = 0; c < paramString.length; c++) {\r\n currentParam += paramString[c];\r\n if (paramString[c] == '\"' && parenCount == 0) {\r\n isStringLiteral = !isStringLiteral;\r\n }\r\n if (isStringLiteral == false) {\r\n if (paramString[c] == '(') {\r\n parenCount++;\r\n } else if (parenCount > 0) {\r\n if (paramString[c] == ')') {\r\n parenCount--;\r\n }\r\n } else if (paramString[c] == ',') {\r\n if (currentParam.indexOf('[') > -1\r\n && currentParam.indexOf(']') < 0) {\r\n // do nothing\r\n } else {\r\n if (currentParam.substring(0, currentParam.length - 1).trim() != '') {\r\n parameters.push(currentParam.substring(0, currentParam.length - 1).trim());\r\n }\r\n currentParam = '';\r\n }\r\n }\r\n if (c + 1 == paramString.length) {\r\n if (currentParam.trim() != '') {\r\n parameters.push(currentParam.trim());\r\n }\r\n currentParam = '';\r\n }\r\n } else {\r\n if (c + 1 == paramString.length) {\r\n if (currentParam.trim() != '') {\r\n parameters.push(currentParam.trim());\r\n }\r\n currentParam = '';\r\n }\r\n }\r\n }\r\n // check number of params\r\n const dqParams = this.parameters.filter(p => p.FunctionId == fn.Id);\r\n if (dqParams.length != parameters.length) {\r\n let er = '';\r\n er = 'Incorrect syntax for ' + fnName + '. Format expected is ' + fnName + '(';\r\n for (let n = 0; n < dqParams.length; n++) {\r\n const param = dqParams.find(p => p.Position == n + 1);\r\n if (param != null) {\r\n if (n > 0) {\r\n er += ', ';\r\n }\r\n er += param.Name;\r\n }\r\n }\r\n er += ').';\r\n field.addFunctionError(er);\r\n } else {\r\n if (fnName.toLowerCase() == 'formatphone') {\r\n const formatParam = this.parameters.find(p => p.FunctionId == fn.Id && p.Name == 'format');\r\n if (formatParam != null) {\r\n const format = parameters[formatParam.Position - 1];\r\n if (format.split('x').length - 1 != 10) {\r\n field.addFunctionError('Phone number format requires 10 digits (indicated by \"x\").');\r\n }\r\n }\r\n }\r\n // ONE-7965\r\n if (fnName.toLowerCase() == 'date' && field.DataType != null && field.DataType.toLowerCase() != 'smalldatetime' && field.DataType.toLowerCase() != 'datetime') {\r\n field.addFunctionError('Date formula requires a date field.');\r\n }\r\n // check param data type\r\n for (let x = 0; x < parameters.length; x++) {\r\n const param = dqParams.find(p => p.Position == x + 1);\r\n const paramParts = this.splitFunctionString(parameters[x]);\r\n if (param != null && fnName.toLowerCase() != 'if') {\r\n for (let y = 0; y < paramParts.length; y++) {\r\n if (param.DataType == 'varchar' || param.DataType == 'char') {\r\n if (paramParts[y][0] != '\"' && paramParts[y] != '+' && paramParts[y][0] != '[') {\r\n if (paramParts[y].indexOf('(') < 0\r\n || !this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase())) {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n } else {\r\n const funct = this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase());\r\n if (funct.ReturnType != 'varchar' && funct.ReturnType != 'char') {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n }\r\n }\r\n }\r\n } else if (param.DataType == 'int') {\r\n if (paramParts[y][0] != '[' && paramParts[y] != '+' && paramParts[y] != '-' && paramParts[y] != '*' && paramParts[y] != '^' && !System.isNumeric(paramParts[y][0])) {\r\n if (paramParts[y].indexOf('(') < 0\r\n || !this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase())) {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n } else {\r\n const funct = this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase());\r\n if (funct.ReturnType != 'integer' && funct.ReturnType != 'int') {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n }\r\n }\r\n }\r\n } else if (param.DataType == 'number') {\r\n if (paramParts[y][0] != '[' && paramParts[y] != '+' && paramParts[y] != '-' && paramParts[y] != '*' && paramParts[y] != '^' && !System.isNumeric(paramParts[y][0])) {\r\n if (paramParts[y].indexOf('(') < 0\r\n || !this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase())) {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n } else {\r\n const funct = this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase());\r\n if (funct.ReturnType != 'integer' && funct.ReturnType != 'int' && funct.ReturnType != 'number') {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n }\r\n }\r\n }\r\n } else if (param.DataType == 'datetime') {\r\n if (paramParts[y][0] != '\"' && paramParts[y][0] != '[') {\r\n if (paramParts[y].indexOf('(') < 0\r\n || !this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase())) {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n } else {\r\n const funct = this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase());\r\n if (funct.ReturnType != 'datetime' && funct.ReturnType != 'date') {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n }\r\n }\r\n }\r\n } else if (param.DataType == 'field') {\r\n if (paramParts[y][0] != '[') {\r\n if (this.loginService.LoginSettings.V10 == true) {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n } else {\r\n if (paramParts[y].indexOf('(') < 0\r\n || !this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase())) {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n } else {\r\n const funct = this.functions.find(f => f.Name.toLowerCase() == paramParts[y].substring(0, paramParts[y].indexOf('(')).toLowerCase());\r\n if (funct.ReturnType != 'varchar' && funct.ReturnType != 'varchar') {\r\n field.addFunctionError('Incorrect datatype for parameter ' + (x + 1) + ' in ' + fnName + '.');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!field.FunctionError || field.FunctionError.length == 0) {\r\n this.validateSyntax(field, parameters[x]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else if (fnPart.substring(0, 1) != '['\r\n && !operatorList.map(operator => operator.toLowerCase()).includes(fnPart.toLowerCase())\r\n && isNaN(fnPart)) {\r\n field.addFunctionError(fnPart + ' is not a function.');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n testFormulas(isExport, _callback, query?: DataQuery) {\r\n // POST: tests the formulas for the report fields in the current query\r\n\r\n // Initializing\r\n let formulasValid = true;\r\n\r\n // Defaulting to the current query\r\n if (!query) {\r\n query = this.currentQuery;\r\n }\r\n\r\n // Keeping track of our check relationships\r\n let calledCallback = false;\r\n const checkFields = [];\r\n const checkFieldsXMLFields = [];\r\n\r\n // Validating each report field\r\n query.reportFields.forEach((field, i) => {\r\n if (field.FunctionError == null || field.FunctionError.length == 0) {\r\n if (!field.TransformationFields || field.TransformationFields.length == 0) {\r\n this.transFunctionChanged(field);\r\n }\r\n const xmlFields = [];\r\n if (field.FunctionText != null\r\n && field.FunctionText != ''\r\n && (\r\n this.loginService.LoginSettings.V10\r\n || field.FunctionText != '[' + field.DisplayName + ']'\r\n )\r\n ) {\r\n if (field.Filters == null) {\r\n field.Filters = [];\r\n }\r\n if (field.TransformationFields == null) {\r\n field.TransformationFields = [];\r\n }\r\n xmlFields.push(field);\r\n for (let x = 0; x < field.TransformationFields.length; x++) {\r\n if (!xmlFields.find(xmlField => xmlField.ID == field.TransformationFields[x].fieldId)) {\r\n const tField = this.information.getField(f => f.ID == field.TransformationFields[x].fieldId && f.CategoryID == field.TransformationFields[x].categoryId);\r\n // if (!tField.TransformationFields || tField.TransformationFields.length == 0) {\r\n // \tthis.transFunctionChanged(tField);\r\n // }\r\n if (tField != null) {\r\n // tField.FunctionText = '[' + tField.ObjectName + '.' + tField.CategoryName + '.' + tField.FieldName + ']';\r\n // tField.TransformationFunction = 'vw' + tField.category.ViewName + '.[' + tField.FieldName + ']';\r\n // tField.TransformationFields = [\r\n // {\r\n // fieldId: tField.ID,\r\n // categoryId: tField.CategoryID,\r\n // position: 0,\r\n // sql: ''\r\n // }\r\n // ];\r\n xmlFields.push(tField);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // If there is XML for this, we need to validate it\r\n if (xmlFields.length > 0) {\r\n checkFields.push(field);\r\n checkFieldsXMLFields.push(xmlFields);\r\n }\r\n }\r\n });\r\n\r\n // Checking observables\r\n if (checkFields.length > 0) {\r\n let finishedChecks = 0;\r\n for (let i = 0; i < checkFields.length; i++) {\r\n this.checkRelationships(checkFieldsXMLFields[i], () => {\r\n if (checkFields[i].FunctionError == null) {\r\n checkFields[i].FunctionError = [];\r\n }\r\n const xml = this.getQueryXML(checkFieldsXMLFields[i]);\r\n this.validateTransformationFunctions(xml, i).subscribe(result => {\r\n if (result != null && result != '') {\r\n checkFields[i].addFunctionError(result);\r\n formulasValid = false;\r\n }\r\n finishedChecks += 1;\r\n if (\r\n finishedChecks == checkFields.length\r\n && formulasValid\r\n && _callback != null\r\n && !calledCallback\r\n ) {\r\n calledCallback = true;\r\n _callback();\r\n }\r\n if (\r\n finishedChecks == checkFields.length\r\n && !formulasValid\r\n ) {\r\n this.dialog.open(ErrorsExistDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n message: (this.currentTab == 'Settings for Export' ?\r\n 'Errors on this tab must be corrected before Results can be exported.' :\r\n 'Errors on the Settings for Export tab must be corrected before Results can be viewed.')\r\n }\r\n });\r\n this.currentTab = 'Settings for Export';\r\n }\r\n });\r\n });\r\n }\r\n } else if (_callback != null && !calledCallback) {\r\n calledCallback = true;\r\n _callback();\r\n }\r\n }\r\n\r\n checkRelationships(fields: DataQueryField[], _callBack?, _errorCallback?) {\r\n let joinsExistForAllCategories = true;\r\n const unjoinedCategoryGroups: DataQueryCategory[][] = [];\r\n\r\n // Obtaining distinct category groups of fields\r\n const shownFields = fields.filter(f => !f.IsConstant && !f.IsCalculated);\r\n const distinctCategoryGroup: { [key: number]: DataQueryField[] } = {};\r\n shownFields.forEach(field => {\r\n if (field.CategoryID > 0) {\r\n if (!distinctCategoryGroup[field.CategoryID]) {\r\n distinctCategoryGroup[field.CategoryID] = [];\r\n }\r\n distinctCategoryGroup[field.CategoryID].push(field);\r\n }\r\n });\r\n if (Object.keys(distinctCategoryGroup).length > 1) {\r\n const getRelationshipSubscription = this.getRelationships(fields).subscribe(\r\n relationships => {\r\n const categoryRelationshipGroups = [];\r\n const unconfirmedCategoryRelationships = [];\r\n let confirmedCategoryRelationships = [];\r\n for (const category in distinctCategoryGroup) {\r\n if (distinctCategoryGroup.hasOwnProperty(category)) {\r\n unconfirmedCategoryRelationships.push(category);\r\n }\r\n }\r\n\r\n while (unconfirmedCategoryRelationships.length > 0) {\r\n confirmedCategoryRelationships.push(unconfirmedCategoryRelationships[0]);\r\n unconfirmedCategoryRelationships.splice(0, 1);\r\n for (let i = 0; i < confirmedCategoryRelationships.length; i++) {\r\n let u = unconfirmedCategoryRelationships.length;\r\n while (u--) {\r\n let relations = relationships.filter(rel =>\r\n rel.Category1ID == parseInt(unconfirmedCategoryRelationships[u], 10) &&\r\n rel.Category2ID == parseInt(confirmedCategoryRelationships[i], 10)\r\n );\r\n if (relations.length == 0) {\r\n relations = relationships.filter(rel =>\r\n rel.Category1ID == parseInt(confirmedCategoryRelationships[i], 10) &&\r\n rel.Category2ID == parseInt(unconfirmedCategoryRelationships[u], 10)\r\n );\r\n }\r\n if (relations.length > 0) {\r\n confirmedCategoryRelationships.push(unconfirmedCategoryRelationships[u]);\r\n unconfirmedCategoryRelationships.splice(u, 1);\r\n }\r\n }\r\n }\r\n if (unconfirmedCategoryRelationships.length > 0) {\r\n joinsExistForAllCategories = false;\r\n }\r\n categoryRelationshipGroups.push(confirmedCategoryRelationships);\r\n confirmedCategoryRelationships = [];\r\n }\r\n\r\n if (categoryRelationshipGroups.length > 0) {\r\n for (let g = 0; g < categoryRelationshipGroups.length; g++) {\r\n const catGroup = [];\r\n for (let c = 0; c < categoryRelationshipGroups[g].length; c++) {\r\n const category = this.information.categories.find(cat =>\r\n cat.ID == parseInt(categoryRelationshipGroups[g][c], 10)\r\n );\r\n if (category != null) {\r\n const catObject = this.information.objects.find(o =>\r\n o.ID == category.ObjectID\r\n );\r\n if (catObject != null) {\r\n category.ObjectName = catObject.ObjectName;\r\n }\r\n catGroup.push(category);\r\n break;\r\n }\r\n }\r\n unjoinedCategoryGroups.push(catGroup);\r\n }\r\n }\r\n },\r\n () => {\r\n\r\n },\r\n () => {\r\n if (joinsExistForAllCategories) {\r\n if (_callBack != null) {\r\n _callBack();\r\n }\r\n } else {\r\n const dialogBox = this.dialog.open(NoRelationshipsWarningDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n unjoinedCategoryGroups: unjoinedCategoryGroups\r\n }\r\n });\r\n const dialogBoxSubscription = dialogBox.afterClosed().subscribe(() => {\r\n dialogBoxSubscription.unsubscribe();\r\n if (_errorCallback) {\r\n _errorCallback();\r\n }\r\n });\r\n }\r\n getRelationshipSubscription.unsubscribe();\r\n }\r\n );\r\n } else {\r\n if (_callBack != null) {\r\n _callBack();\r\n }\r\n }\r\n }\r\n\r\n validateQuery(success: Function, failure?: Function, forImport = false, query?: DataQuery) {\r\n // PRE: the current query is set\r\n // POST: validates the query\r\n\r\n // Defaults to the current query\r\n if (!query) {\r\n query = this.currentQuery;\r\n }\r\n\r\n // Running validators\r\n if (this.validateFilters(query)) {\r\n if (this.validateFunctions(query)) {\r\n this.testFormulas(false,\r\n () => {\r\n this.checkRelationships(\r\n this.getAllFields(query),\r\n () => {\r\n success();\r\n },\r\n () => {\r\n setTimeout(() => {\r\n this.currentTab = this._previousTab;\r\n if (failure) {\r\n failure();\r\n }\r\n }, 10);\r\n }\r\n );\r\n },\r\n query\r\n );\r\n } else {\r\n if (forImport) {\r\n this.dialog.open(ImportErrorDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n fields: query.reportFields.filter(field => field.FunctionError.length != 0)\r\n }\r\n });\r\n } else {\r\n if (!this.dialog.openDialogs.find(dialog => dialog.componentInstance instanceof ErrorsExistDialogComponent)) {\r\n this.dialog.open(ErrorsExistDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n message: (this.currentTab == 'Settings for Export' ?\r\n 'Errors on this tab must be corrected before Results can be exported.' :\r\n 'Errors on the Settings for Export tab must be corrected before Results can be viewed.')\r\n }\r\n });\r\n }\r\n }\r\n this.currentTab = 'Settings for Export';\r\n if (failure) {\r\n failure();\r\n }\r\n }\r\n } else {\r\n this.currentTab = 'Filters';\r\n if (failure) {\r\n failure();\r\n }\r\n }\r\n }\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'app-delete-filter-row',\r\n\ttemplateUrl: './delete-row-dialog.component.html',\r\n\tstyleUrls: ['./delete-row-dialog.component.css']\r\n})\r\nexport class DeleteRowDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\tmessage: string;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate dialogBox: MatDialogRef\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// PRE: injected data with the injected properties\r\n\t\tthis.message = this.data.message;\r\n\t}\r\n\r\n\tOK() {\r\n\t\t// PRE: OK is clicked\r\n\t\t// POST: closes the dialog box with true\r\n\t\tthis.dialogBox.close(true);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\t// PRE: cancel is clicked\r\n\t\t// POST: closes the dialog box with false\r\n\t\tthis.dialogBox.close(false);\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n

\r\n\tDelete Row?\r\n

\r\n\r\n\r\n\r\n\t\r\n\t\t{{message}}\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'app-errors-exist-dialog',\r\n\ttemplateUrl: './errors-exist-dialog.component.html',\r\n\tstyleUrls: ['./errors-exist-dialog.component.css']\r\n})\r\nexport class ErrorsExistDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\tmessage: string;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate dialogBox: MatDialogRef\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: sets the injected properties\r\n\t\tthis.message = this.data.message;\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n
\r\n\tERRORS EXIST\r\n
\r\n\r\n\r\n\r\n\t{{message}}\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\r\n\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t{{option.displayString}}\r\n\t\r\n","import {Component, EventEmitter, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {DataQueryService} from '../data-query.service';\r\nimport {DataQueryInformation} from '../data-query-information';\r\nimport {Subscription} from 'rxjs';\r\nimport {FieldAutofillOption} from './field-autofill-option';\r\n\r\n@Component({\r\n\tselector: 'field-search',\r\n\ttemplateUrl: './field-search.component.html',\r\n\tstyleUrls: ['./field-search.component.css']\r\n})\r\nexport class FieldSearchComponent implements OnInit, OnDestroy {\r\n\r\n\t// Interface Properties\r\n\t@Output() search = new EventEmitter();\r\n\r\n\t// Properties\r\n\tsearchString = '';\r\n\tpreviousSearchString = '';\r\n\tinformation: DataQueryInformation;\r\n\tsubscriptions: Subscription[] = [];\r\n\tautofills: FieldAutofillOption[] = [];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dataQueryService: DataQueryService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.dataQueryService.observableInformationStream$.subscribe(information => {\r\n\t\t\t\tthis.information = information;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subscriptions.forEach(subscription => {\r\n\t\t\tsubscription.unsubscribe();\r\n\t\t});\r\n\t}\r\n\r\n\tsendSearch() {\r\n\t\t// PRE: the user presses enter in the text field or unfocuses the input\r\n\t\t// POST: emits the search and clears the autofill\r\n\t\tsetTimeout(() => {\t// We do this in a set timeout in case an option is clicked\r\n\t\t\tthis.search.emit(this.searchString);\r\n\t\t\tthis.autofills = [];\r\n\t\t}, 100);\r\n\t}\r\n\r\n\t// Methods\r\n\tgetAutofills() {\r\n\t\t// POST: obtains the autofills for the user\r\n\t\tif (this.previousSearchString != this.searchString) {\r\n\t\t\tthis.previousSearchString = this.searchString;\r\n\t\t\tthis.autofills = this.information.getAutofillOptions(this.searchString);\r\n\t\t}\r\n\t}\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {DataQuery} from '../data-query.model';\r\nimport {DataQueryService} from '../data-query.service';\r\nimport {SharedService} from '../../../shared-components/shared.service';\r\n\r\n@Component({\r\n\tselector: 'app-delete-query-dialog',\r\n\ttemplateUrl: './delete-query-dialog.component.html',\r\n\tstyleUrls: ['./delete-query-dialog.component.css']\r\n})\r\nexport class DeleteQueryDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\tquery: DataQuery;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate dataQueryService: DataQueryService,\r\n\t\tprivate sharedService: SharedService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// PRE: injected data with the injected properties\r\n\t\t// POST: sets the injected properties\r\n\t\tthis.query = this.data.query;\r\n\t}\r\n\r\n\tdelete() {\r\n\t\t// PRE: the delete button is clicked\r\n\t\t// POST: deletes the query and closes the dialog box with true\r\n\t\tthis.dataQueryService.deleteQuery(this.query,\r\n\t\t\t() => {\r\n\t\t\t\tthis.dialogBox.close(true);\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.sharedService.showBadSnackbar('Failed to delete query');\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\t// PRE: the cancel button is clicked\r\n\t\t// POST: closes the dialog box with false\r\n\t\tthis.dialogBox.close(false);\r\n\t}\r\n\r\n\t// Methods\r\n\r\n}\r\n","\r\n

\r\n\tWARNING\r\n

\r\n\r\n\r\n\r\n\tThis will delete the query\r\n\t
\r\n\t{{query.QueryName}}\r\n
\r\n\r\n\r\n\r\n\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\t\t

\r\n\t\t\tSaved Filters\r\n\t\t

\r\n\t\t

\r\n\t\t\tSaved Queries\r\n\t\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
\r\n\t
\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tMore\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\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\r\n\t\t\t\t\t{{query.QueryName}}\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\t\t\r\n\t\t\t\tScope\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{query.Scope}}\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tOwner\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{query.OwnerName}}\r\n\t\t\t\r\n\t\t\r\n\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\tAvailable to
Integration Services\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t{{query.Published ? 'Y' : ''}}\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tLast Updated\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{query.LastUpdated | date: 'MM/dd/yy'}}\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tActions\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\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\tDescription\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{query.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
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tSelected Sites\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{query.SelectedSiteNames}}\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\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\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t
\r\n
","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { DataQueryService } from '../data-query.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { DataQuery } from '../data-query.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { DataQueryResultPage } from '../data-query-result-page';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { User } from '../../../shared-components/user/user.model';\r\nimport { DataQueryPermissions } from '../data-query-permissions';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { MenuItem } from '../../../shared-components/controls/menus/menu-item.model';\r\nimport { DeleteQueryDialogComponent } from '../delete-query-dialog/delete-query-dialog.component';\r\nimport { take } from 'rxjs/operators';\r\nimport { System } from '../../../shared-components/System';\r\n\r\n@Component({\r\n selector: 'view-queries-dialog',\r\n templateUrl: './view-queries-dialog.component.html',\r\n styleUrls: ['./view-queries-dialog.component.css'],\r\n providers: [],\r\n animations: [\r\n detailExpand\r\n ]\r\n})\r\nexport class ViewQueriesDialogComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // Injected Properties\r\n isStudentSearch: boolean;\r\n isCourseSearch: boolean;\r\n isStaffSearch: boolean;\r\n\r\n // Properties\r\n subscriptions: Subscription[] = [];\r\n queries: DataQuery[];\r\n V10: boolean;\r\n currentUser: User;\r\n permissions: DataQueryPermissions;\r\n querySearch = '';\r\n columns = ['more', 'name', 'scope', 'owner', 'last-updated', 'actions'];\r\n\r\n // Table Properties\r\n tableData = new TylerMatTableDataSource();\r\n pageSizeOptions = DataQueryResultPage.pageSizeOptions;\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n expandEmitter = new EventEmitter();\r\n @ViewChild('nameHeader', { read: ElementRef }) nameHeader: ElementRef;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n private dataQueryService: DataQueryService,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) { }\r\n\r\n get initialPageSize(): number {\r\n return this.dataQueryService.initialPageSize;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected data with the injected properties\r\n // POST: initializes the data\r\n\r\n // Setting the injected and service properties\r\n if (this.data && this.data.isStudentSearch != undefined) {\r\n this.isStudentSearch = this.data.isStudentSearch;\r\n } else {\r\n this.isStudentSearch = this.dataQueryService.isStudentSearch;\r\n }\r\n\r\n if (this.data && this.data.isCourseSearch != undefined) {\r\n this.isCourseSearch = this.data.isCourseSearch;\r\n } else {\r\n this.isCourseSearch = this.dataQueryService.isCourseSearch;\r\n }\r\n\r\n if (this.data && this.data.isStaffSearch != undefined) {\r\n this.isStaffSearch = this.data.isStaffSearch;\r\n } else {\r\n this.isStaffSearch = this.dataQueryService.isStaffSearch;\r\n }\r\n\r\n // Setting local variables\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.currentUser = this.userService.currentUser;\r\n\r\n // Obtaining saved queries\r\n let observer;\r\n if (this.isStudentSearch) {\r\n observer = this.dataQueryService.studentFilters;\r\n } else if (this.isCourseSearch) {\r\n observer = this.dataQueryService.courseFilters;\r\n } else if (this.isStaffSearch) {\r\n observer = this.dataQueryService.staffFilters;\r\n } else {\r\n observer = this.dataQueryService.savedQueries;\r\n }\r\n observer.pipe(take(1)).subscribe(queries => {\r\n this.queries = queries;\r\n this.tableData.data = this.queries;\r\n });\r\n\r\n // Obtaining permissions\r\n this.dataQueryService.getPermissions().subscribe(permissions => {\r\n this.permissions = permissions;\r\n if (this.permissions.canPublishToIntegration) {\r\n this.columns.splice(4, 0, 'published');\r\n }\r\n });\r\n\r\n // Observing expand and collapse events\r\n this.expandEmitter.subscribe(expand => {\r\n this.tableData.expandAll(expand);\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n // POST: sets up the data source and sets the initial sorting\r\n this.tableData.paginator = this.paginator;\r\n this.tableData.sort = this.sort;\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: unsubscribes from all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n selectQuery(query: DataQuery) {\r\n // PRE: a query's name is click and provided to this function\r\n // POST: closes the dialog box with the query\r\n this.dialogBox.close(query);\r\n }\r\n\r\n menuItemClick(item: MenuItem) {\r\n // PRE: an item on an action menu is clicked\r\n // POST: performs the proper action\r\n let query: DataQuery = item.data;\r\n switch (item.itemName) {\r\n\r\n // Edit Action\r\n case 'Edit':\r\n if (query.ID == this.dataQueryService.currentQuery.ID) {\r\n query = this.dataQueryService.currentQuery;\r\n }\r\n this.dataQueryService.openAddEditQuery(\r\n query,\r\n true,\r\n false,\r\n (returnedQuery) => {\r\n if (returnedQuery) {\r\n for (let i = 0; i < this.queries.length; i++) {\r\n if (this.queries[i].ID == returnedQuery.ID) {\r\n Object.assign(this.queries[i], returnedQuery);\r\n this.tableData.data = this.queries;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n );\r\n break;\r\n\r\n // Export Action\r\n case 'Export Query':\r\n this.subscriptions.push(\r\n\r\n // Getting the report xml\r\n this.dataQueryService.getReportTemplateXML(query.ID).subscribe(reportXML => {\r\n\r\n // We reload the query XML to capture changes to how we interpret it\r\n this.dataQueryService.loadDataFromXML(query);\r\n query.QueryXML = this.dataQueryService.getQueryXML(\r\n this.dataQueryService.getAllFields(query)\r\n );\r\n\r\n // Setting up the XML document\r\n const xml = System.htmlToText(query.QueryXML);\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(xml, 'text/xml');\r\n const exportSettings = xmlDoc.createElement('ExportSettings');\r\n const exportType = xmlDoc.createElement('ExportType');\r\n exportType.innerHTML = query.ExportType;\r\n const delimeter = xmlDoc.createElement('Delimeter');\r\n delimeter.innerHTML = query.Delimiter;\r\n const otherDelimeter = xmlDoc.createElement('OtherDelimeter');\r\n otherDelimeter.innerHTML = query.OtherDelimiter;\r\n const includeColumnHeadings = xmlDoc.createElement('IncludeColumnHeadings');\r\n includeColumnHeadings.innerHTML = query.IncludeColumnHeadings.toString();\r\n xmlDoc.getElementsByTagName('root')[0].appendChild(exportSettings);\r\n xmlDoc.getElementsByTagName('ExportSettings')[0].appendChild(exportType);\r\n xmlDoc.getElementsByTagName('ExportSettings')[0].appendChild(delimeter);\r\n xmlDoc.getElementsByTagName('ExportSettings')[0].appendChild(otherDelimeter);\r\n xmlDoc.getElementsByTagName('ExportSettings')[0].appendChild(includeColumnHeadings);\r\n\r\n // Organizing the query XML\r\n let queryXML = new XMLSerializer().serializeToString(xmlDoc);\r\n queryXML += reportXML;\r\n\r\n // Downloading the XML document\r\n const a = document.createElement('a');\r\n a.setAttribute('href', 'data:text/xml;charset=utf-16,' + encodeURIComponent(queryXML));\r\n a.setAttribute('download', query.QueryName + '.xml');\r\n a.style.display = 'none';\r\n document.body.appendChild(a);\r\n if (document.createEvent) {\r\n const event = document.createEvent('MouseEvents');\r\n event.initEvent('click', true, true);\r\n a.dispatchEvent(event);\r\n } else {\r\n a.click();\r\n }\r\n document.body.removeChild(a);\r\n })\r\n );\r\n break;\r\n\r\n // Delete Action\r\n case 'Delete':\r\n const dialogBox = this.dialog.open(DeleteQueryDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n query: item.data\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(del => {\r\n if (del) {\r\n if (this.queries.indexOf(item.data) > -1) {\r\n this.queries.splice(this.queries.indexOf(item.data), 1);\r\n }\r\n this.tableData.data = this.queries;\r\n this.applySearch();\r\n }\r\n })\r\n );\r\n break;\r\n\r\n // If we haven't found the proper action, simply do nothing\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n applySearch() {\r\n // PRE: the user blurs the search input, presses enter while focused on it, or clicks the magnifying glass\r\n // POST: applies the search criterion to the filters\r\n if (this.querySearch) {\r\n this.tableData.data = this.queries.filter(\r\n query => query.QueryName.toLowerCase().includes(this.querySearch.toLowerCase())\r\n );\r\n } else {\r\n this.tableData.data = this.queries;\r\n }\r\n }\r\n\r\n // Methods\r\n canEditAndDeleteQuery(query: DataQuery) {\r\n // PRE: a query to check against\r\n // POST: returns true if the user can save or delete the query\r\n return this.permissions && (\r\n query.OwnerID == this.currentUser.Id\r\n || (\r\n query.Scope == 'Selected Sites'\r\n && this.permissions.canUserModifySchoolQuery\r\n )\r\n || (\r\n query.Scope == 'District'\r\n && this.permissions.canUserModifyDistrictQuery\r\n )\r\n );\r\n }\r\n\r\n hasDetailRow(query: DataQuery) {\r\n // POST: returns if a query has a detail row\r\n return query.Description || (query.SelectedSites && query.Scope == 'Selected Sites');\r\n }\r\n\r\n getMenuItems(query: DataQuery) {\r\n // POST: returns the menu items for a query\r\n const menuItems: string[] = [];\r\n if (this.canEditAndDeleteQuery(query)) {\r\n return [\r\n 'Edit',\r\n 'Export Query',\r\n 'Delete'\r\n ];\r\n } else {\r\n return [\r\n 'Export Query'\r\n ];\r\n }\r\n }\r\n}\r\n","import { Student } from '../../shared-components/student/student.model';\r\n\r\nexport class DisciplineReferralStudent extends Student {\r\n\r\n // Static Properties\r\n static InvolvementTypes: {[key: number]: string} = {\r\n 1: 'Offender',\r\n 2: 'Victim',\r\n 3: 'Witness'\r\n };\r\n\r\n // Static Properties\r\n static V9InvolvementTypes: {[key: number]: string} = {\r\n 2: 'Offender',\r\n 0: 'Victim',\r\n 1: 'Witness'\r\n };\r\n // Server Properties\r\n IncidentComments: string;\r\n DeletedFromReferral = false;\r\n isSelected = false;\r\n StudentId: number;\r\n InvolvingType: string;\r\n CanSee: boolean;\r\n StudentsToReferralsId: number;\r\n\r\n // Class Functions\r\n constructor() {\r\n super();\r\n this.InvolvementType = Object.keys(DisciplineReferralStudent.InvolvementTypes)[0];\r\n }\r\n\r\n // Methods\r\n}\r\n","import { DisciplineReferralStudent } from './discipline-referral-student.model';\r\nimport { GeneralPreferences } from './../../shared-components/user-preferences/general-preferences.model';\r\nimport { Lookup } from './../../shared-components/lookup/lookup.model';\r\nimport { System } from '../../shared-components/System';\r\n\r\nexport class DisciplineReferral {\r\n\r\n // Class Functions\r\n get statusString(): string {\r\n if (this.Status) {\r\n return DisciplineReferral.StatusCodes[this.Status];\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n get studentsFilterString(): string {\r\n let studentFilterString = '';\r\n if (this.Students) {\r\n this.Students.forEach(student => {\r\n if (studentFilterString) {\r\n studentFilterString += ', ';\r\n }\r\n studentFilterString += student.formattedNameWithNumber(this.generalPreferences);\r\n });\r\n } else {\r\n const student = new DisciplineReferralStudent();\r\n Object.assign(student, this);\r\n studentFilterString = student.formattedNameWithNumber(this.generalPreferences);\r\n }\r\n return studentFilterString;\r\n }\r\n get studentsNumberFilterString(): string {\r\n let studentsNumberFilterString = '';\r\n if (this.Students) {\r\n this.Students.forEach(student => {\r\n if (studentsNumberFilterString) {\r\n studentsNumberFilterString += ' ';\r\n }\r\n studentsNumberFilterString += student.formattedNumber(this.generalPreferences);\r\n });\r\n } else {\r\n const student = new DisciplineReferralStudent();\r\n Object.assign(student, this);\r\n studentsNumberFilterString = student.formattedNumber(this.generalPreferences);\r\n }\r\n return studentsNumberFilterString;\r\n }\r\n get studentsGradeFilterString(): string {\r\n let studentsGradeFilterString = '';\r\n if (this.Students) {\r\n this.Students.forEach(student => {\r\n if (studentsGradeFilterString) {\r\n studentsGradeFilterString += ' ';\r\n }\r\n studentsGradeFilterString += student.Grade;\r\n });\r\n } else {\r\n const student = new DisciplineReferralStudent();\r\n Object.assign(student, this);\r\n studentsGradeFilterString = student.Grade;\r\n }\r\n return studentsGradeFilterString;\r\n }\r\n\r\n get processing(): boolean {\r\n return this.Status == 'A' || this.Status == 'S' || this.Status == 'C';\r\n }\r\n\r\n static StatusCodesV9: string[] = [\r\n 'Accepted',\r\n 'Submitted to Admin',\r\n 'Classroom Action',\r\n 'Closed',\r\n 'No Action Needed',\r\n 'Rejected',\r\n 'In Progress'\r\n ];\r\n\r\n static StatusCodes: { [key: string]: string } = {\r\n 'P': 'In Progress',\r\n 'A': 'Accepted',\r\n 'S': 'Submitted',\r\n 'C': 'Completed',\r\n 'N': 'No Action Needed',\r\n 'R': 'Returned'\r\n };\r\n\r\n static StatusIds: { [key: string]: number } = {\r\n 'P': 0,\r\n 'A': 1,\r\n 'S': 2,\r\n 'C': 3,\r\n 'N': 4,\r\n 'R': 5\r\n };\r\n\r\n static InvolvingTypes: string[] = [\r\n 'Student(s)',\r\n 'Non-Student(s)',\r\n 'Student(s) and Non-Student(s)',\r\n 'Do Not Know'\r\n ];\r\n\r\n // Properties\r\n $id: string;\r\n AdminComment = '';\r\n AllowPBISOptions: boolean;\r\n Context = '';\r\n CourseId = 0;\r\n Date = new Date(System.junkDateString);\r\n Description = '';\r\n Disciplinarian?: any;\r\n EventComment = '';\r\n EventComments: string[];\r\n EventId: number;\r\n EventNumber: string;\r\n FirstName?: any;\r\n FunctionalMotivationId = '0';\r\n HideMultiEventComments: boolean;\r\n HomeroomTeacher = '';\r\n Id = 0;\r\n IncidentCodeId = '0';\r\n InterventionTypesDates?: string;\r\n InvolvingType = '0';\r\n IsDisciplineTeamMember: boolean;\r\n LastName?: any;\r\n Location?: string;\r\n LocationId?: string;\r\n MiddleName?: any;\r\n NickName?: any;\r\n PBISLocation?: Lookup[] | string;\r\n PBISMotivation?: Lookup[] | string;\r\n PBISOfficeManagedCount: Lookup[] | string;\r\n PBISOthersInvolved?: Lookup[] | string;\r\n PBISPriorInterventions?: Lookup[] | string;\r\n PBISSelectedLocation: string[] | string = '';\r\n PBISSelectedMotivation: string[] | string = '';\r\n PBISSelectedOfficeManagedCount: string[] | string = '';\r\n PBISSelectedOthersInvolved: string[] | string = '';\r\n PBISSelectedPriorInterventions: string[] | string = '';\r\n PBISSelectedTimeRange = '';\r\n PBISTimeRange?: Lookup[] | string;\r\n ReferredByUserId: number;\r\n ReportedBy?: string;\r\n RoomBus?: string;\r\n Schools?: Lookup[];\r\n ShowStudentLink: boolean;\r\n Site?: string;\r\n StaffName?: string;\r\n Status?: string;\r\n StatusId?: any;\r\n StudentId: number;\r\n StudentNumber?: any;\r\n Students?: DisciplineReferralStudent[];\r\n StudentsFromAllSchools: boolean;\r\n Time?: string;\r\n UnknownStudents: number;\r\n UseDisciplineTeams: boolean;\r\n UserManagedPBIS: boolean;\r\n Year?: any;\r\n Selected = false;\r\n ReportedByName: string;\r\n EventDescriptionMaxLength: number;\r\n EventCommentMaxLength: number;\r\n StudentCommentsMaxLength: number;\r\n AdministrativeCommentsMaxLength: number;\r\n ParentInformationMaxLength: number;\r\n LockReportedBy: boolean;\r\n LockAdministrativeComments: boolean;\r\n ParentInformation: '';\r\n StaffId: number;\r\n ReferralSiteId?: number;\r\n\r\n // Local Properties\r\n generalPreferences: GeneralPreferences;\r\n\r\n // Class Functions\r\n get siteId() {\r\n return parseInt(this.Site, 10);\r\n }\r\n\r\n // Methods\r\n sortStudents() {\r\n if (this.Students) {\r\n this.Students.sort((a, b) => {\r\n\r\n // Ordering based on whether the student is known\r\n let aOrder = 0;\r\n let bOrder = 0;\r\n if (a.NonStudent) {\r\n aOrder = 1;\r\n } else if (a.UnknownStudent) {\r\n aOrder = 2;\r\n }\r\n if (b.NonStudent) {\r\n bOrder = 1;\r\n } else if (b.UnknownStudent) {\r\n bOrder = 2;\r\n }\r\n if (aOrder < bOrder) {\r\n return -1;\r\n } else if (aOrder > bOrder) {\r\n return 1;\r\n }\r\n\r\n // Ordering alphabetically\r\n else {\r\n return a.formattedNameWithNumber(this.generalPreferences).localeCompare(b.formattedNameWithNumber(this.generalPreferences));\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import {DisciplineReferralCourse} from './discipline-referral-course.model';\r\nimport {UserService} from './../../shared-components/user/user.service';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {System} from './../../shared-components/System';\r\nimport {YearService} from './../../shared-components/year/year.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {DisciplineReferral} from './discipline-referral.model';\r\nimport {Observable} from 'rxjs';\r\nimport {ReferralNote} from './referral-note.model';\r\nimport {School} from '../../shared-components/year/school.model';\r\n\r\n@Injectable()\r\nexport class DisciplineReferralService {\r\n\r\n // Properties\r\n viewOnlySchools: School[] = [];\r\n addEditSchools: School[] = [];\r\n initialStatusFilter: string;\r\n\r\n // Class Functions\r\n constructor(\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private http: HttpClient\r\n ) {\r\n }\r\n\r\n deleteClassroomDisciplineReferral(referralId: number): Observable {\r\n // PRE: a referral ID signifying the referral to delete\r\n // POST: deletes that referral on the server (probably softly)\r\n const queryString = '?referralId=' + referralId;\r\n return this.http.get(System.apiURL.Classroom + 'DeleteClassroomDisciplineReferral' + queryString);\r\n }\r\n\r\n getClassroomDisciplineReferralNotes(disciplineReferral: DisciplineReferral) {\r\n // PRE: a discipline referral to get notes for\r\n // POST: obtains the notes for that referral\r\n const queryString = '?disciplineReferralId=' + disciplineReferral.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetClsssroomDisciplineReferralNotes' + queryString);\r\n }\r\n\r\n saveClassroomDisciplingReferralNotes(disciplineReferral: DisciplineReferral, referralNote: ReferralNote[]) {\r\n // PRE: a referral note and discipline referral to save the referral note to\r\n // POST: saves the referral note to the discipline referral\r\n const queryString = '?disciplineReferralId=' + disciplineReferral.Id;\r\n return this.http.post(System.apiURL.Classroom + 'SaveClsssroomDisciplineReferralNotes' + queryString, referralNote);\r\n }\r\n\r\n getDisciplineReferralCourses(studentId: number): Observable {\r\n // PRE: a student to get courses for\r\n // POST: obtains the courses for a student\r\n const queryString = '?studentId=' + studentId +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Classroom + 'GetClsssroomDisciplineReferralCourses' + queryString);\r\n }\r\n}\r\n","import { AssignmentHeading } from './assignment-heading-preference.model';\r\nimport { StudentPreferenceColumn } from './student-column-preference.model';\r\nimport { AssignmentSortPreference } from './assignment-sort-preference.model';\r\n\r\nexport class GradebookPreferences {\r\n SyncPreferencesAcrossCourses: boolean;\r\n ShowUnitDropdown: boolean;\r\n ShowOnPortalRow: boolean;\r\n UseQuickAddWindow: boolean;\r\n DefaultShowOnPortal: boolean;\r\n AssignmentHeading: AssignmentHeading[] = [];\r\n SummaryCharacter: boolean;\r\n SummaryCharacterCount: number;\r\n SummaryCharacterSlide: boolean;\r\n SummaryCharacterSlideCount: number;\r\n ShowHorizontalHeading: boolean;\r\n AssignmentSort: AssignmentSortPreference[] = [];\r\n OriginalScore: boolean;\r\n Score: boolean;\r\n ScoreComment: boolean;\r\n EntireRowColumn: boolean;\r\n LetterGrades: boolean;\r\n WarnIfScoreEntered: boolean;\r\n PanelPopup: boolean;\r\n AutoSave: boolean;\r\n AutoSaveDuration: string;\r\n AvailableColumns: StudentPreferenceColumn[] = [];\r\n NonScrollingColumns: StudentPreferenceColumn[] = [];\r\n ScrollingColumns: StudentPreferenceColumn[] = [];\r\n ShowDroppedWithdrawn: boolean;\r\n ShowFuturStudents: boolean;\r\n StudentSortOrder: string;\r\n ShowProgressCycles: boolean;\r\n ShowTerms: boolean;\r\n ShowSemesters: boolean;\r\n ShowYearEnd: boolean;\r\n ShowAllTerms: boolean;\r\n PastTerms: string;\r\n PastTermEndedWithinNDays: number;\r\n FutureTerms: string;\r\n FutureTermStartingWithinNDays: number;\r\n ShowAssignmentsInStandards: boolean;\r\n DefaultForStandardsView: string;\r\n ShowHorizontalHeadingforStandardTab: boolean;\r\n ShowRowColumnnForSpecialMark: boolean;\r\n ReportCardGrades: number;\r\n ProjectFutureScores: boolean;\r\n IncludeCurrentCourseSection: boolean;\r\n FillBlankScores: string;\r\n FillBlankScoreValue: number;\r\n FillBlankScoreSpecialMarkId: string;\r\n FillBlankScoresAskEveryTime: boolean;\r\n CommentDelimiter: string;\r\n UseCommentCodes: boolean;\r\n ResetPreferences: boolean;\r\n\r\n // Calculation Preferences\r\n FGradeCalculationType: string;\r\n SemesterFinalGradeCalculationPoints: string;\r\n SemesterFinalGradeCalculationCombo: string;\r\n NumericalGradeRoundTo: string;\r\n GPCWRound: string;\r\n GPCWRoundToValue: string;\r\n SemFinalRound: string;\r\n SemFinalRoundToValue: string;\r\n IsTotalPointCreated: boolean;\r\n SameCategoryWeights: boolean;\r\n PolicyOverrideCalculationType: boolean;\r\n PolicyOverrideAssignmentRound: boolean;\r\n PolicyOverrideGPCWRound: boolean;\r\n PolicyOverrideSemFinalRound: boolean;\r\n}","import {Observable, Subject} from 'rxjs';\r\nimport {Injectable, OnDestroy} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {V10Assignment} from '../v10/models/assignment.model';\r\nimport {System} from '../../../shared-components/System';\r\nimport {Category} from './models/category.model';\r\nimport {YearService} from '../../../shared-components/year/year.service';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {GradebookIndicator} from './models/gradebook-indicator.model';\r\n\r\n@AutoUnsubscribe()\r\n@Injectable()\r\nexport class SharedGradebookService implements OnDestroy {\r\n\r\n observableV10Assignment = new Subject();\r\n observableV10AssignmentStream$ = this.observableV10Assignment.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n ) {\r\n }\r\n\r\n saveCategories(courseId: number, termId: number, categories: Category[]) {\r\n return this.http.post(System.apiURL.Classroom + 'SaveCategory?yearId=' + this.yearService.defaultYear.Id + '&courseId=' + courseId + '&termId=' + termId, categories);\r\n }\r\n\r\n deleteAttachment(attachmentId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'DeleteGradebookAttachments?DocumentId=' + attachmentId);\r\n }\r\n\r\n clearLMSToken(lmsName: string) {\r\n return this.http.get(System.apiURL.Classroom + 'ClearLMSToken?lmsName=' + lmsName);\r\n }\r\n\r\n getLMSIntegrationLog(sectionId: number, lmsName: string): Observable {\r\n return this.http.get(System.apiURL.Classroom + `GetLMSIntegrationLog?sectionId=${sectionId}&lmsName=${lmsName}`, { observe: 'response' });\r\n }\r\n\r\n getGradebookIndicators(courseId: number, termId: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + `GetGradebookIndicators?courseId=${courseId}&termId=${termId}`);\r\n }\r\n\r\n saveGradebookIndicator(gradebookIndicators: GradebookIndicator, courseId: number): Observable {\r\n return this.http.post(System.apiURL.Classroom + `SaveGradebookIndicator?siteSectionId=${courseId}`, gradebookIndicators);\r\n }\r\n\r\n deleteGradebookIndicator(id: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + `DeleteGradebookIndicator?Id=${id}`);\r\n }\r\n\r\n setCommentSmartTags(student, comment: string) {\r\n comment = comment.replace(//g, student.FirstName.substring(0, 1).toLowerCase() + student.FirstName.substring(1));\r\n comment = comment.replace(//g, student.FirstName.substring(0, 1).toUpperCase() + student.FirstName.substring(1));\r\n comment = comment.replace(//gi, student.NickName);\r\n comment = comment.replace(//gi, student.GradeLevel);\r\n comment = comment.replace(//gi, student.StudentNumber);\r\n comment = comment.replace(//gi, student.SchoolName);\r\n comment = comment.replace(/||||||/gi, function x(text) {\r\n if (student.Gender && (student.Gender.toLowerCase() == 'f' || student.Gender.toLowerCase() == 'female')) {\r\n if (text.toLowerCase() == '') {\r\n if (text.substring(0, 2) == '') {\r\n if (text.substring(0, 2) == '') {\r\n if (text.substring(0, 2) == '') {\r\n if (text.substring(0, 2) == '') {\r\n if (text.substring(0, 2) == '') {\r\n if (text.substring(0, 2) == '') {\r\n if (text.substring(0, 2) == '') {\r\n if (text.substring(0, 2) == '' || text.toLowerCase() == '') {\r\n text = (text.substring(0, 2) == '' || text.toLowerCase() == 'her') {\r\n text = (text.substring(0, 2) == '') {\r\n text = (text.substring(0, 2) == '();\r\n observablePreferencesStream$ = this.observablePreferences.asObservable();\r\n\r\n calculationType: number;\r\n\r\n selectedGradingPeriod: GradingPeriod;\r\n gradingPeriods: GradingPeriod[];\r\n observableGradingPeriods = new Subject();\r\n observableGradingPeriodStream$ = this.observableGradingPeriods.asObservable();\r\n\r\n selectedCategory: Category;\r\n categories: Category[];\r\n observableCategories = new Subject();\r\n observableCategoryStream$ = this.observableCategories.asObservable();\r\n\r\n observableGradebook = new Subject();\r\n observableGradebookStream$ = this.observableGradebook.asObservable();\r\n\r\n observableAssignments = new Subject();\r\n observableAssignmentStream$ = this.observableAssignments.asObservable();\r\n updatedAssignments: number[] = [];\r\n\r\n observableAssignmentFilter = new Subject();\r\n observableAssignmentFilterStream$ = this.observableAssignmentFilter.asObservable();\r\n\r\n observablePermissions = new Subject();\r\n observablePermissionStream$ = this.observablePermissions.asObservable();\r\n\r\n observableAutosaveStart = new Subject();\r\n observableAutosaveStartStream$ = this.observableAutosaveStart.asObservable();\r\n\r\n standardObjects: StandardObjects;\r\n courseWorkStandardObjects: CourseWorkStandardObjects;\r\n courseWorkStandardScores: CourseWorkStandardScore[];\r\n standards: Standard[];\r\n standardScales: StandardScale[];\r\n behaviorScales: BehaviorScale[];\r\n\r\n indicators: GradebookIndicator[];\r\n showIndicators: boolean;\r\n\r\n showMassAdd: boolean;\r\n showNonScoredStandards = true;\r\n showStandardAnalysisTrends = false;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private sharedService: SharedService,\r\n private sharedGradebookService: SharedGradebookService,\r\n private standardService: GradebookV10StandardsService\r\n ) {\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.selectedTab = 'Scores';\r\n this.selectedStandardTab = 'Standards for One Assignment';\r\n this.selectedReportingTab = 'Traditional';\r\n this.selectedReportingStandardTab = 'All Standards by Student';\r\n }\r\n\r\n startAutosave() {\r\n this.observableAutosaveStart.next();\r\n }\r\n\r\n updateGradebook(gradebookData) {\r\n this.gradebook = gradebookData.gradebook;\r\n this.students = gradebookData.gradebook.students;\r\n if (this.gradebookPreferences.StudentSortOrder == 'StudentName') {\r\n this.students = this.sortStudents(this.students);\r\n }\r\n for (let i = 0; i < this.students.length; i++) {\r\n this.students[i].index = i;\r\n }\r\n this.assignments = gradebookData.gradebook.assignments;\r\n for (let i = 0; i < this.assignments.length; i++) {\r\n this.assignments[i].index = i;\r\n }\r\n this.overrideCodes = gradebookData.codesScalesCredit.OverrideCodes;\r\n this.gradingScale = gradebookData.codesScalesCredit.GradingScale;\r\n this.extraCredit = gradebookData.codesScalesCredit.ExtraCredit;\r\n this.postingHistory = gradebookData.gradebook.GradePostingHistory;\r\n\r\n if (this.course.ScoreStandardsByAssignment) {\r\n this.standardObjects = gradebookData.standardBehaviorObjects.StandardObjects;\r\n this.standards = this.standardObjects.Standards;\r\n this.standardScales = this.standardObjects.StandardScales;\r\n this.courseWorkStandardObjects = gradebookData.courseWorkStandardObjects;\r\n this.courseWorkStandardScores = this.courseWorkStandardObjects.CourseWorkStandardScores;\r\n }\r\n\r\n this.observableGradebook.next(gradebookData);\r\n }\r\n\r\n sortStudents(students: Student[]) {\r\n switch (this.userPreferencesService.generalPreferences.StudentNameFormat.charAt(0)) {\r\n case 'F':\r\n students.sort((a: Student, b: Student) => {\r\n const firstNameComparison = a.FirstName.replace('\\'', '').localeCompare(b.FirstName.replace('\\'', ''));\r\n if (firstNameComparison == 0) {\r\n return a.LastName.replace('\\'', '').localeCompare(b.LastName.replace('\\'', ''));\r\n } else {\r\n return firstNameComparison;\r\n }\r\n });\r\n break;\r\n case 'L':\r\n students.sort((a: Student, b: Student) => {\r\n const lastNameComparison = a.LastName.replace('\\'', '').localeCompare(b.LastName.replace('\\'', ''));\r\n if (lastNameComparison == 0) {\r\n return a.FirstName.replace('\\'', '').localeCompare(b.FirstName.replace('\\'', ''));\r\n } else {\r\n return lastNameComparison;\r\n }\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n return students;\r\n }\r\n\r\n updateGradingPeriods(periods: GradingPeriod[]) {\r\n let index = 0;\r\n for (const period of periods.filter(reportingPeriod => reportingPeriod.ReportingTerm)) {\r\n period.reportingIndex = index;\r\n period.StartDate = new Date(period.StartDate);\r\n period.EndDate = new Date(period.EndDate);\r\n index = index + 1;\r\n }\r\n index = 0;\r\n for (const period of periods.filter(standardPeriod => standardPeriod.ReportingTerm && standardPeriod.ForStandards)) {\r\n period.standardIndex = index;\r\n }\r\n periods.push(this.addFinalPeriod(index));\r\n this.gradingPeriods = periods;\r\n this.observableGradingPeriods.next(periods);\r\n }\r\n\r\n updateCategories(categories) {\r\n this.categories = categories;\r\n this.observableCategories.next(categories);\r\n }\r\n\r\n updateAssignments(assignments) {\r\n this.assignments = assignments;\r\n this.observableAssignments.next(assignments);\r\n }\r\n\r\n updateAssignmentFilter() {\r\n this.observableAssignmentFilter.next();\r\n }\r\n\r\n updatePreferences(preferences) {\r\n this.gradebookPreferences = JSON.parse(preferences);\r\n this.calculationType = parseInt(this.gradebookPreferences.FGradeCalculationType);\r\n this.observablePreferences.next(this.gradebookPreferences);\r\n this.showAlertsAndAttendance = this.gradebookPreferences.NonScrollingColumns.filter(c => c.Field == 'Alerts' || c.Field == 'AttendanceInformation').length > 0 || this.gradebookPreferences.ScrollingColumns.filter(c => c.Field == 'Alerts' || c.Field == 'AttendanceInformation').length > 0;\r\n }\r\n\r\n\r\n loadPeriodsCategoriesPreferences(): Observable {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookTermsBySiteSectionId?siteSectionId=' + this.course.SSEC_ID + '&tgsId=' + this.course.Id + '&showTermOnly=false&yearId=' + this.defaultYear.Id + '&schoolId=' + this.defaultYear.SchoolID),\r\n this.sharedService.getCategories(true, this.course.Id, ''),\r\n this.http.get(System.apiURL.Student + 'GetUserPreferences?studentId=0&pageURL=/OneSISGradeBook&subjectListId=' + this.course.Id + '&subjectSection=\\'\\'&isDefaultPreferences=false'),\r\n (gradingPeriods, categories, preferences) => ({gradingPeriods, categories, preferences})\r\n );\r\n }\r\n\r\n getGradebook(): Observable {\r\n if (!this.showAlertsAndAttendance) {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookScoresV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradeReportingV10?tgsId=' + this.course.Id + '&dataBucketId=' + this.course.DataBucket_ID + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetOverridesScalesExtraCredit?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetStandardBehaviorObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id + '&dataBucketId=' + this.course.DataBucket_ID),\r\n (gradebook, scores, reportCardGrades, codesScalesCredit, standardBehaviorObjects) => ({\r\n gradebook,\r\n scores,\r\n reportCardGrades,\r\n codesScalesCredit,\r\n standardBehaviorObjects\r\n })\r\n );\r\n } else {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookScoresV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradeReportingV10?tgsId=' + this.course.Id + '&dataBucketId=' + this.course.DataBucket_ID + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetOverridesScalesExtraCredit?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetStandardBehaviorObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id + '&dataBucketId=' + this.course.DataBucket_ID),\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookAlertsAndAttendance?tgsId=' + this.course.Id + '&yearId=' + this.yearService.defaultYear.Id + '&schoolId=' + this.yearService.defaultYear.SchoolID + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n (gradebook, scores, reportCardGrades, codesScalesCredit, standardBehaviorObjects, alertsAttendance) => ({\r\n gradebook,\r\n scores,\r\n reportCardGrades,\r\n codesScalesCredit,\r\n standardBehaviorObjects,\r\n alertsAttendance\r\n })\r\n );\r\n }\r\n }\r\n\r\n getGradebookWithAssignmentStandards(): Observable {\r\n if (!this.showAlertsAndAttendance || (this.course.ScoreStandardsByAssignment && !this.course.HybridGradebook)) {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookScoresV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradeReportingV10?tgsId=' + this.course.Id + '&dataBucketId=' + this.course.DataBucket_ID + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetOverridesScalesExtraCredit?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetStandardBehaviorObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id + '&dataBucketId=' + this.course.DataBucket_ID),\r\n this.http.get(System.apiURL.Classroom + 'GetCourseWorkStandardObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n (gradebook, scores, reportCardGrades, codesScalesCredit, standardBehaviorObjects, courseWorkStandardObjects) => ({\r\n gradebook,\r\n scores,\r\n reportCardGrades,\r\n codesScalesCredit,\r\n standardBehaviorObjects,\r\n courseWorkStandardObjects\r\n })\r\n );\r\n } else {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookScoresV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradeReportingV10?tgsId=' + this.course.Id + '&dataBucketId=' + this.course.DataBucket_ID + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetOverridesScalesExtraCredit?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetStandardBehaviorObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id + '&dataBucketId=' + this.course.DataBucket_ID),\r\n this.http.get(System.apiURL.Classroom + 'GetCourseWorkStandardObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookAlertsAndAttendance?tgsId=' + this.course.Id + '&yearId=' + this.yearService.defaultYear.Id + '&schoolId=' + this.yearService.defaultYear.SchoolID + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n (gradebook, scores, reportCardGrades, codesScalesCredit, standardBehaviorObjects, courseWorkStandardObjects, alertsAttendance) => ({\r\n gradebook,\r\n scores,\r\n reportCardGrades,\r\n codesScalesCredit,\r\n standardBehaviorObjects,\r\n courseWorkStandardObjects,\r\n alertsAttendance\r\n })\r\n );\r\n }\r\n }\r\n\r\n getGradingPeriods(course: ClassroomSummary, yearId: number, schoolId: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookTermsBySiteSectionId?siteSectionId=' + course.SSEC_ID + '&tgsId=' + course.Id + '&showTermOnly=false&yearId=' + yearId + '&schoolId=' + schoolId);\r\n }\r\n\r\n getCategories(): Observable {\r\n return this.sharedService.getCategories(true, this.course.Id, '');\r\n }\r\n\r\n getAssignments(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookAssignmentsV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id);\r\n }\r\n\r\n getCategoriesAndAssignments(courseId: number, periodId: number) {\r\n return observableForkJoin(\r\n this.sharedService.getCategories(true, courseId, ''),\r\n this.http.get(System.apiURL.Classroom + 'GetGradebookAssignmentsV10?tgsId=' + courseId + '&gradingPeriod=' + periodId),\r\n (categories, assignments) => ({categories, assignments})\r\n );\r\n }\r\n\r\n getCourseWorkScores(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookScoresV10?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id);\r\n }\r\n\r\n getGradeReporting(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradeReportingV10?tgsId=' + this.course.Id + '&dataBucketId=' + this.course.DataBucket_ID + '&gradingPeriod=' + this.selectedGradingPeriod.Id);\r\n }\r\n\r\n getStandards(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetGBStandards?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id);\r\n }\r\n\r\n getBehaviorObjects(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetBehaviorMarks?courseId=' + this.course.Id + '&dataBucketId=' + this.course.DataBucket_ID);\r\n }\r\n\r\n getStandardsByAssignment(): Observable {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetCourseWorkStandardObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n this.http.get(System.apiURL.Classroom + 'GetGBStandards?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id),\r\n (courseWorkStandardObjects, standardObjects) => ({courseWorkStandardObjects, standardObjects})\r\n );\r\n }\r\n\r\n getCourseWorkStandardObjects(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetCourseWorkStandardObjects?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id);\r\n }\r\n\r\n getGradebookComments(courseId: number, forAssignments: boolean) {\r\n const parameters = '?courseId=' + courseId + '&gradingPeriod=' + this.selectedGradingPeriod.Id + '&forAssignments=' + forAssignments;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookCommentsV10' + parameters);\r\n }\r\n\r\n getGradebookAttachments(cwId: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookAttachmentsV10?cwId=' + cwId);\r\n }\r\n\r\n getBackupRecords() {\r\n return this.http.get(System.apiURL.Classroom + 'GetV10GradebookBackups?tgsId=' + this.course.Id);\r\n }\r\n\r\n getCategorySummary(studentId: number, gradingPeriod: number) {\r\n return this.http.get(System.apiURL.Classroom + 'GetCategorySummary?studentId=' + studentId + '&courseId=' + this.course.Id + '&gradingPeriod=' + gradingPeriod);\r\n }\r\n\r\n getCopyScoresInfo(course: ClassroomSummary, periodId: number) {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Classroom + 'GetGradeReportingV10?tgsId=' + course.Id + '&dataBucketId=' + course.DataBucket_ID + '&gradingPeriod=' + periodId),\r\n this.http.get(System.apiURL.Student + 'GetStudentFinalGrades?tgsId=' + course.Id + '&gradingPeriod=' + periodId),\r\n this.http.get(System.apiURL.Classroom + 'GetOverridesScalesExtraCredit?tgsId=' + course.Id + '&gradingPeriod=' + periodId),\r\n (reportingGrades, finalGrades, scalesOverrides) => ({reportingGrades, finalGrades, scalesOverrides})\r\n );\r\n }\r\n\r\n copyScores(sourceCourse: number, studentId: number, gradingPeriod: number, copyOption: number, overrideCode: string, scores: Score[]) {\r\n return this.http.post(System.apiURL.Classroom + 'CopyStudentScores?sourceSSEC=' + sourceCourse + '&destSSEC=' + this.course.SSEC_ID + '&studentId=' + studentId + '&gradingPeriod=' + gradingPeriod + '&assignmentOption=' + copyOption + '&gradeOverride=' + overrideCode, scores);\r\n }\r\n\r\n getAssignmentRetakes(cwId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'GetAssignmentRetakeScores?cwId=' + cwId);\r\n }\r\n\r\n getAdminPermissions() {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookAdminPermissions?yearId=' + this.yearService.defaultYear.Id + '&schoolId=' + this.yearService.defaultYear.SchoolID);\r\n }\r\n\r\n getIndicators(courseId: number, periodId: number): Observable {\r\n return this.sharedGradebookService.getGradebookIndicators(courseId, periodId);\r\n }\r\n\r\n getAssignmentsForAllPeriods() {\r\n return this.http.get(System.apiURL.Classroom + 'GetAssignmentsForAllGradingPeriods?tgsId=' + this.course.Id);\r\n }\r\n\r\n getAlertsAndAttendance() {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookAlertsAndAttendance?tgsId=' + this.course.Id + '&yearId=' + this.yearService.defaultYear.Id + '&schoolId=' + this.yearService.defaultYear.SchoolID + '&gradingPeriod=' + this.selectedGradingPeriod.Id);\r\n }\r\n\r\n\r\n saveAssignments(courseId: number, gradingPeriod: number, scoreStandardsByAssignment: boolean, assignments: V10Assignment[]): Observable {\r\n const parameters = '?courseId=' + courseId + '&yearId=' + this.yearService.defaultYear.Id + '&gradingperiod=' + gradingPeriod + '&scoreStandardsByAssignment=' + scoreStandardsByAssignment;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookAssignmentV10' + parameters, assignments);\r\n }\r\n\r\n saveCourseWorkScores(scores: Score[], hybridGradebook: boolean): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveCourseWorkScores?tgsId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id + '&hybrid=' + hybridGradebook, scores);\r\n }\r\n\r\n saveFinalGrades(courseId: number, periodId: number, students: Student[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveFinalGrades?tgsId=' + courseId + '&gradingPeriod=' + periodId, students);\r\n }\r\n\r\n postGrades(postingPeriod: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'PostV10Grades?gradingPeriod=' + this.selectedGradingPeriod.Id + '&postingPeriod=' + postingPeriod + '&tgsId=' + this.course.Id + '&cwId=-1');\r\n }\r\n\r\n postAssignmentStandardScores(students: Student[], sourcePeriod: GradingPeriod, destinationPeriod: GradingPeriod): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'PostAssignmentStandardScores?courseId=' + this.course.Id + '&sourcePeriod=' + sourcePeriod.Id + '&destinationPeriod=' + destinationPeriod.Id, students);\r\n }\r\n\r\n saveReportCardGrades(scores: Score[], finalize: boolean): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradeReportingV10?tgsId=' + this.course.Id + '&dataBucketId=' + this.course.DataBucket_ID + '&gradingPeriod=' + this.selectedGradingPeriod.Id + '&finalize=' + finalize, scores);\r\n }\r\n\r\n saveStandardScores(scores: StandardScore[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGBStandards?courseId=' + this.course.Id, scores);\r\n }\r\n\r\n saveBehaviorMarks(marks: BehaviorMark[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveBehaviorMarks?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id, marks);\r\n }\r\n\r\n finalizeGradeReporting(finalize: boolean, periodIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'FinalizeGradeReporting?tgsId=' + this.course.Id + '&finalize=' + finalize, periodIds);\r\n }\r\n\r\n saveAssignmentStandardScores(scores: CourseWorkStandardScore[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveAssignmentStandardScores', scores);\r\n }\r\n\r\n saveAssignmentComments(scores: Score[], cwId: number): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveAssignmentCommentsV10?courseId=' + this.course.Id + '&termId=' + this.selectedGradingPeriod.Id + '&cwId=' + cwId, scores);\r\n }\r\n\r\n saveReportCardComments(comments: GradebookComment[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveReportCardCommentsV10?courseId=' + this.course.Id, comments);\r\n }\r\n\r\n saveStandardComments(comments: GradebookComment[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveStandardComments?courseId=' + this.course.Id, comments);\r\n }\r\n\r\n deleteCategory(categoryId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'DeleteGradebookCategoryV10?categoryId=' + categoryId);\r\n }\r\n\r\n deleteAssignment(courseId: number, cwId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'DeleteGradebookAssignmentV10?courseId=' + courseId + '&cwId=' + cwId);\r\n }\r\n\r\n createBackup(backupName: string, backupType: string) {\r\n return this.http.get(System.apiURL.Classroom + 'GradebookCreateBackupV10?tgsId=' + this.course.Id + '&name=' + backupName + '&saveType=' + backupType);\r\n }\r\n\r\n restoreBackup(restoreType: string, backupId: number, backup) {\r\n return this.http.post(System.apiURL.Classroom + 'GradebookRestoreBackupV10?restoreType=' + restoreType + '&backupId=' + backupId, backup);\r\n }\r\n\r\n deleteBackup(backupId) {\r\n return this.http.get(System.apiURL.Classroom + 'DeleteBackupSet?BackupId=' + backupId);\r\n }\r\n\r\n copyAssignments(courseList: string, verifyNewCategory: boolean, assignments: V10Assignment[]) {\r\n return this.http.post(System.apiURL.Classroom + 'GradebookAssignmentCopyV10?courseList=' + courseList + '&verifyNewCategory=' + verifyNewCategory, assignments);\r\n }\r\n\r\n copyCategories(categoryList: string, gradingPeriods: string, validateWeight: boolean) {\r\n return this.http.get(System.apiURL.Classroom + 'CopyCategories?tgsId=' + this.course.Id + '&categoryList=' + categoryList + '&gradingPeriods=' + gradingPeriods + '&validateWeight=' + validateWeight);\r\n }\r\n\r\n copyIndicators(sourceCourse: number, courses: string, indicators: GradebookIndicator[]) {\r\n return this.http.post(System.apiURL.Classroom + 'CopyGradebookIndicators?sourceCourse=' + sourceCourse + '&courses=' + courses, indicators);\r\n }\r\n\r\n saveStudentNotes(studentId: number, periodId: number, notes: string) {\r\n return this.http.get(System.apiURL.Classroom + 'SaveStudentNotes?ssecId=' + this.course.SSEC_ID + '&studentId=' + studentId + '&gradingPeriod=' + periodId + '¬es=' + notes);\r\n }\r\n\r\n saveAssignmentRetakes(cwId: number, retakeOption: number, retakes: RetakeScore[]) {\r\n return this.http.post(System.apiURL.Classroom + 'SaveAssignmentRetakeScores?cwId=' + cwId + '&postOption=' + retakeOption, retakes);\r\n }\r\n\r\n saveIndicator(indicator: GradebookIndicator): Observable {\r\n return this.sharedGradebookService.saveGradebookIndicator(indicator, this.course.Id);\r\n }\r\n\r\n saveExtraCredit(extraCredit: ExtraCredit[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGBExtraCredit?courseId=' + this.course.Id + '&gradingPeriod=' + this.selectedGradingPeriod.Id, extraCredit);\r\n }\r\n\r\n deleteIndicator(indicatorId: number) {\r\n return this.sharedGradebookService.deleteGradebookIndicator(indicatorId);\r\n }\r\n\r\n createPreferenceRecords(courseId: number) {\r\n return this.http.get(System.apiURL.Classroom + 'CreateGBPReferenceRecords?tgsId=' + courseId);\r\n }\r\n\r\n getStudentPicturesByIds(studentIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'GetStudentPicturesByIds', studentIds);\r\n }\r\n\r\n setCustomStudentSort(studentIds: number[]) {\r\n return this.http.post(System.apiURL.Classroom + 'SetCustomStudentOrder?tgsId=' + this.course.Id, studentIds);\r\n }\r\n\r\n saveGradebookNumbers(students: Student[]) {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookNumbers?ssecId=' + this.course.SSEC_ID, students);\r\n }\r\n\r\n getGradingTypeV10() {\r\n return this.http.get(System.apiURL.Classroom + 'GetGradingTypeV10?ssecId=' + this.course.SSEC_ID);\r\n }\r\n\r\n\r\n addFinalPeriod(index): GradingPeriod {\r\n const finalPeriod = new GradingPeriod();\r\n finalPeriod.Id = -1;\r\n finalPeriod.Description = 'Final Score';\r\n finalPeriod.IsLocked = false;\r\n finalPeriod.IsCalculated = true;\r\n finalPeriod.ReportingTerm = true;\r\n finalPeriod.reportingIndex = index;\r\n return finalPeriod;\r\n }\r\n\r\n clearData(changeCourse: boolean) {\r\n this.course = undefined;\r\n this.gradebook = undefined;\r\n this.assignments = undefined;\r\n this.students = undefined;\r\n this.gradingScale = undefined;\r\n this.extraCredit = undefined;\r\n this.gradebookPreferences = undefined;\r\n this.calculationType = undefined;\r\n this.selectedGradingPeriod = undefined;\r\n this.selectedCategory = undefined;\r\n this.gradingPeriods = undefined;\r\n this.categories = undefined;\r\n this.standards = undefined;\r\n this.indicators = undefined;\r\n this.showOnlyCW_ID = undefined;\r\n this.showSingleStudent = false;\r\n this.showIndicators = undefined;\r\n this.standardService.StandardsHierarchy = undefined;\r\n if (!changeCourse) {\r\n this.selectedReportingTab = 'Traditional';\r\n this.selectedReportingStandardTab = 'All Standards by Student';\r\n }\r\n }\r\n\r\n exportToExcel(periodColumns: GradingPeriod[]) {\r\n let html = '';\r\n const uri = 'data:application/vnd.ms-excel;base64,';\r\n const template = '{table}
';\r\n const base64 = function (s) {\r\n return window.btoa(unescape(encodeURIComponent(s)));\r\n };\r\n\r\n const format = function (s, c) {\r\n return s.replace(/{(\\w+)}/g, function (m, p) {\r\n return c[p];\r\n });\r\n };\r\n\r\n html = 'Student Name';\r\n\r\n // Student Number\r\n if (this.gradebookPreferences.NonScrollingColumns.filter(nsc => nsc.DisplayName == 'Student #').length > 0) {\r\n html = html + 'Student #';\r\n }\r\n\r\n // Grading Period Columns\r\n for (let i = 0; i < periodColumns.length; i++) {\r\n html = html + '';\r\n html = html + periodColumns[i].Description + '
';\r\n html = html + periodColumns[i].HeaderDate;\r\n html = html + '';\r\n }\r\n\r\n let assignmentDecimalFormat = '';\r\n if (parseInt(this.gradebookPreferences.NumericalGradeRoundTo) == 1) {\r\n assignmentDecimalFormat = 'style=\\'mso-number-format:\"#,#0.0\"\\'';\r\n } else if (parseInt(this.gradebookPreferences.NumericalGradeRoundTo) == 2) {\r\n assignmentDecimalFormat = 'style=\\'mso-number-format:\"#,##0.00\"\\'';\r\n }\r\n let gpCWDecimalFormat = '';\r\n if (parseInt(this.gradebookPreferences.GPCWRoundToValue) == 1) {\r\n gpCWDecimalFormat = 'style=\\'mso-number-format:\"#,#0.0\"\\'';\r\n } else if (parseInt(this.gradebookPreferences.GPCWRoundToValue) == 2) {\r\n gpCWDecimalFormat = 'style=\\'mso-number-format:\"#,##0.00\"\\'';\r\n }\r\n\r\n // Assignment Columns\r\n for (let i = 0; i < this.assignments.length; i++) {\r\n html = html + '';\r\n const assignment = this.assignments[i];\r\n const dueDate = (assignment.DueDate) ? new Date(assignment.DueDate) : undefined;\r\n const dateAssigned = new Date(assignment.AssignedDate);\r\n const assignmentHeadings = this.gradebookPreferences.AssignmentHeading.filter(heading => heading.value);\r\n for (let j = 0; j < assignmentHeadings.length; j++) {\r\n if (j > 0) {\r\n html = html + '
';\r\n }\r\n const headingPreference = assignmentHeadings[j];\r\n if (headingPreference.value) {\r\n if (headingPreference.Field == 'ShortName') {\r\n html = html + assignment.ShortName;\r\n }\r\n if (headingPreference.Field == 'PossiblePoints') {\r\n html = html + assignment.PossiblePoints + ' Pts';\r\n } else if (headingPreference.Field == 'DateAssigned') {\r\n html = html + 'A ' + ('0' + (dateAssigned.getMonth() + 1)).slice(-2) + '/' + ('0' + dateAssigned.getDate()).slice(-2);\r\n } else if (dueDate && headingPreference.Field == 'DateDue') {\r\n html = html + 'D ' + ('0' + (dueDate.getMonth() + 1)).slice(-2) + '/' + ('0' + dueDate.getDate()).slice(-2);\r\n } else if (headingPreference.Field == 'MeanMedianRange') {\r\n html = html + 'M ' + assignment.Mean + '/Md ' + assignment.Median + '/R ' + assignment.Range;\r\n } else if (headingPreference.Field == 'Summary') {\r\n if (this.gradebookPreferences.SummaryCharacter) {\r\n const summary = assignment.Summary.substring(0, this.gradebookPreferences.SummaryCharacterCount);\r\n html = (assignment.Summary.length > this.gradebookPreferences.SummaryCharacterCount) ? html + summary + '...' : html + summary;\r\n } else {\r\n const summary = assignment.Summary;\r\n html = html + summary;\r\n }\r\n }\r\n }\r\n }\r\n html = html + '';\r\n }\r\n html = html + '';\r\n for (let i = 0; i < this.students.length; i++) {\r\n html = html + '' + this.students[i].FirstName + ' ' + this.students[i].LastName + '';\r\n\r\n // Student Number\r\n if (this.gradebookPreferences.NonScrollingColumns.filter(nsc => nsc.DisplayName == 'Student #').length > 0) {\r\n html = html + '' + this.students[i].StudentNumber + '';\r\n }\r\n\r\n for (let j = 0; j < periodColumns.length; j++) {\r\n if (periodColumns[j].Id == this.selectedGradingPeriod.Id) {\r\n html = html + '' + this.students[i].Final + '';\r\n } else {\r\n const score = this.students.filter(student => student.Id == this.students[i].Id)[0].ReportCardGrades.filter(score => score.DBSC_ID == periodColumns[j].Id)[0];\r\n html = html + '' + score.Score + '';\r\n }\r\n }\r\n for (let j = 0; j < this.assignments.length; j++) {\r\n const score = this.students[i].scores.filter(score => score.CW_ID == this.assignments[j].CW_ID)[0];\r\n if (score != undefined) {\r\n html = html + '' + score.Score + '';\r\n } else {\r\n html = html + '';\r\n }\r\n }\r\n html = html + '';\r\n }\r\n html = html + '';\r\n\r\n const ctx = {\r\n worksheet: 'Worksheet',\r\n table: html\r\n };\r\n const link = document.createElement('a');\r\n const date = (new Date().getMonth() + 1) + '.' + new Date().getDate() + '.' + new Date().getFullYear();\r\n link.download = 'gradebookExport[' + date + '].xls';\r\n link.href = uri + base64(format(template, ctx));\r\n link.click();\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Injectable, OnDestroy } from '@angular/core';\r\nimport { Standard } from './models/standard.model';\r\nimport { StandardScale } from './models/standard-scale.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { StandardScaleValue } from './models/standard-scale-value.model';\r\n\r\n@AutoUnsubscribe()\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GradebookV10StandardsService implements AfterViewInit, OnDestroy {\r\n\r\n StandardsHierarchy: Standard[];\r\n assignedStandards: Standard[];\r\n editedAssignmentId: number;\r\n\r\n constructor() { }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n getStandardHierarchy(standards: Standard[]): Standard[] {\r\n let standardTrees = [];\r\n var parentStandards = standards.filter(standard => standard.Parent_ID == -1);\r\n for (var i = 0; i < parentStandards.length; i++) {\r\n let parentStandard = parentStandards[i];\r\n let standardTree = [{ Id: parentStandard.Id, StandardName: parentStandard.StandardName, Level: parentStandard.Level, Standards: [] }];\r\n for (let j = 0; j < standards.length; j++) {\r\n var standard = standards[j];\r\n if (standard.Parent_ID == -1)\r\n continue;\r\n standard.Standards = [];\r\n var parentId = standard.Parent_ID;\r\n var parent = this.getStandardParent(standardTree[0], parentId)\r\n if (parent != null)\r\n parent.Standards.push({ Id: standard.Id, StandardName: standard.StandardName, Level: standard.Level, Standards: [] });\r\n }\r\n standardTrees.push(standardTree);\r\n }\r\n\r\n let standardsHierarchy = [];\r\n for (let i = 0; i < standardTrees.length; i++) {\r\n let standardTree = standardTrees[i];\r\n let rootStandard = standards.filter(standard => standard.Id == standardTree[0].Id)[0];\r\n standardsHierarchy.push(rootStandard);\r\n for (let j = 0; j < standardTree[0].Standards.length; j++) {\r\n let tempStandard = standardTree[0].Standards[j];\r\n let standard = standards.filter(standard => standard.Id == tempStandard.Id)[0];\r\n if (standardsHierarchy.filter(hierarchyStandard => hierarchyStandard.Id == standard.Id)[0] == undefined)\r\n standardsHierarchy.push(standard);\r\n var childStandards = this.getStandardChildren(tempStandard);\r\n if (childStandards != null) {\r\n for (var k = 0; k < childStandards.length; k++) {\r\n var childStandard = standards.filter(child => child.Id == childStandards[k].Id)[0];\r\n if (standardsHierarchy.filter(hierarchyStandard => hierarchyStandard.Id == childStandards[k].Id)[0] == undefined)\r\n standardsHierarchy.push(childStandard);\r\n }\r\n }\r\n }\r\n }\r\n if (!this.StandardsHierarchy)\r\n this.StandardsHierarchy = standardsHierarchy;\r\n return standardsHierarchy;\r\n\r\n }\r\n\r\n getStandardParent(root, parentId: number) {\r\n if (parentId == root.Id)\r\n return root;\r\n\r\n for (var i = 0; i < root.Standards.length; i++) {\r\n var child = root.Standards[i];\r\n if (child.Id == parentId)\r\n return child;\r\n if (child.Standards.length > 0)\r\n var childResult = this.getStandardParent(child, parentId);\r\n if (childResult != null)\r\n return childResult;\r\n }\r\n return null;\r\n }\r\n\r\n getStandardChildren(standard): Standard[] {\r\n var standards = []\r\n standards.push(standard);\r\n if (standard.Standards.length == 0)\r\n return standards;\r\n for (var i = 0; i < standard.Standards.length; i++) {\r\n if (standard.Standards.length > 0)\r\n var childResults = this.getStandardChildren(standard.Standards[i]);\r\n if (childResults != null && childResults.length > 0)\r\n standards = standards.concat(childResults);\r\n }\r\n return standards;\r\n }\r\n\r\n setStandardParents(standard, isAssigned) {\r\n if (standard.Parent_ID == -1) {\r\n this.assignedStandards.unshift(standard);\r\n return;\r\n }\r\n else {\r\n if (!isAssigned)\r\n this.assignedStandards.unshift(standard);\r\n this.setStandardParents(this.StandardsHierarchy.filter(function (element) { return element.Id == standard.Parent_ID })[0], false);\r\n }\r\n }\r\n\r\n\r\n getAssignmentStandardHierarchy(standards: Standard[], allStandards: Standard[]): Standard[] {\r\n let attachedStandards = JSON.parse(JSON.stringify(standards));\r\n let assignmentStandardHierarchy: Standard[] = [];\r\n this.StandardsHierarchy = allStandards;\r\n for (var i = 0; i < standards.length; i++) {\r\n this.assignedStandards = [];\r\n var assignedStandard = this.StandardsHierarchy.filter(function (element) { return element.Id == standards[i].Id })[0];\r\n this.setStandardParents(assignedStandard, true);\r\n assignedStandard.parents = this.assignedStandards;\r\n }\r\n var assignmentStandards = standards;\r\n standards = [];\r\n for (var i = 0; i < assignmentStandards.length; i++) {\r\n var standard = this.StandardsHierarchy.filter(function (element) { return element.Id == assignmentStandards[i].Id })[0];\r\n for (var j = 0; j < standard.parents.length; j++)\r\n standards.push(standard.parents[j]);\r\n standards.push(standard);\r\n }\r\n // Remove Duplicates\r\n for (let standard of this.StandardsHierarchy) {\r\n standard.parents = undefined;\r\n if (standards.filter(filteredStandard => filteredStandard.Id == standard.Id).length > 0) {\r\n let attachedStandard = attachedStandards.filter(filteredStandard => filteredStandard.Id == standard.Id)[0];\r\n standard.isAttached = (attachedStandard != undefined) ? true : false;\r\n assignmentStandardHierarchy.push(standard);\r\n }\r\n }\r\n return assignmentStandardHierarchy;\r\n }\r\n\r\n checkInvalidStandardScore(score: any, standardScales: StandardScale[]): boolean {\r\n if (!this.StandardsHierarchy)\r\n return false;\r\n let standard = this.StandardsHierarchy.filter(s => s.Id == score.Standard_ID)[0];\r\n let scale = standardScales.filter(scale => scale.Id == standard.BenchMarkScale)[0];\r\n if (scale != undefined) {\r\n let value: StandardScaleValue;\r\n value = scale.Values.filter(value => value.Value.toString().toLowerCase() == score.Score.toLowerCase())[0];\r\n let isValid: boolean = false;\r\n if (score.Score == '')\r\n isValid = true;\r\n else if (scale.SingleGradeScale && value != undefined) {\r\n score.Score = value.Value;\r\n isValid = true;\r\n }\r\n else if (!scale.SingleGradeScale && !isNaN(Number(score.Score)) && parseFloat(score.Score) >= scale.MinPoints && parseFloat(score.Score) <= scale.MaxPoints) {\r\n isValid = true;\r\n }\r\n score.Invalid = !isValid;\r\n return !isValid;\r\n }\r\n else {\r\n return (score.Score == '') ? false : true;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}","
\r\n ACCESS DENIED\r\n
\r\n Grading Type has not been assigned to this class\r\n
\r\n
\r\n Grading Scale has not been assigned to this class\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n This Gradebook cannot be used until a Grading Type and Grading Scale has been assigned to this class.\r\n \r\n
\r\n\r\n
\r\n \r\n Please contact your gradebook administrator.\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-gradebook-access-defined',\r\n templateUrl: './gradebook-access-defined.component.html'\r\n})\r\nexport class GradebookAccessDefinedComponent {\r\n\r\n noGradingType: boolean;\r\n noGradingScale: boolean;\r\n\r\n constructor(private dialog: MatDialogRef) { }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { GradebookV10Service } from '../../gradebook-V10.service';\r\nimport { ClassroomSummary } from '../../../../classroom-summary/models/classroom-summary.model';\r\n\r\n@Component({\r\n selector: 'app-init-gradebook-preferences',\r\n templateUrl: './init-gradebook-preferences.component.html'\r\n})\r\nexport class InitGradebookPreferencesComponent {\r\n\r\n course: ClassroomSummary;\r\n\r\n constructor(\r\n private dialog: MatDialogRef,\r\n private gradebookService: GradebookV10Service\r\n ) { }\r\n\r\n nextClick() {\r\n this.gradebookService.createPreferenceRecords(this.course.Id).subscribe(() => {\r\n this.dialog.close();\r\n });\r\n }\r\n\r\n}\r\n","
\r\n Warning\r\n
\r\n Preferences for this class have been set to default values\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n On the next screen, please review the current settings. Pay special attention to the settings for Grade\r\n Calculation and Rounding.\r\n \r\n
\r\n\r\n
\r\n \r\n NOTE: Preferences can be changed at any time by clicking the Preferences button in the bottom bar or\r\n selecting Preferences from the User Menu.\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n","import { BehaviorCategory } from \"./behavior-category.model\";\r\nimport { Category } from \"../../shared/models/category.model\";\r\nimport { CategorySummary } from \"./category-summary.model\";\r\n\r\nexport class GradingPeriod {\r\n Id: number;\r\n Code: string;\r\n Description: string;\r\n StartDate: Date;\r\n EndDate: Date;\r\n AutoUnlockStartDate: Date;\r\n AutoUnlockEndDate: Date;\r\n Order: number;\r\n PostingDeadline: Date;\r\n PostingTerm: boolean;\r\n ReportingTerm: boolean;\r\n IsLocked: boolean;\r\n IsCalculated: boolean;\r\n DataBucket_ID: number;\r\n UsePostingDeadline: boolean;\r\n BucketNo: string;\r\n BucketType: string;\r\n ForStandards: boolean;\r\n BehaviorAttached: boolean;\r\n Weight: number;\r\n\r\n // Non DTO Fields\r\n isSelected: boolean;\r\n rcgStandardsIsSelected: boolean;\r\n studentViewTraditionalSelected: boolean;\r\n studentViewStandardSelected: boolean;\r\n studentViewBehaviorSelected: boolean;\r\n reportingIndex: number;\r\n standardIndex: number;\r\n HeaderDate: string;\r\n headerLabel: string;\r\n BehaviorCategories: BehaviorCategory[];\r\n StartDateFormatted: string;\r\n EndDateFormatted: string;\r\n currentPeriod: boolean;\r\n copyScore: string;\r\n copyCategory: boolean;\r\n exceedWeight: string;\r\n analysisCategories: Category[];\r\n categorySummary: CategorySummary[];\r\n PostingDeadlineType: Date;\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { Alerts } from '../../../shared-components/student/student.model';\r\nimport { UserPreferencesService } from '../../../shared-components/user-preferences/user-preferences.service';\r\nimport { UserPermission } from '../../../shared-components/user/user-permission.model';\r\nimport { User } from '../../../shared-components/user/user.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { SchoolYearSettings } from '../../../shared-components/year/school-year-settings.model';\r\nimport { Year } from '../../../shared-components/year/year.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { ClassroomSummary } from '../../classroom-summary/models/classroom-summary.model';\r\nimport { GradebookAttachment } from '../shared/models/gradebook-attachment.model';\r\nimport { GradebookIndicator } from '../shared/models/gradebook-indicator.model';\r\nimport { GradebookPreferences } from '../shared/models/preferences/gradebook-preferences.model';\r\nimport { SharedGradebookService } from '../shared/shared-gradebook.service';\r\nimport { System } from './../../../shared-components/System';\r\nimport { AnalysisStudentsAttendance } from './models/analysis-students-attendance.model';\r\nimport { AnalysisTerm } from './models/analysis-term.model';\r\nimport { AssignmentToStandard } from './models/assignment-to-standard.model';\r\nimport { Assignment } from './models/assignment.model';\r\nimport { Category } from './models/category.model';\r\nimport { Formula } from './models/formula.model';\r\nimport { GradeScaleDescription } from './models/grade-scale-description.model';\r\nimport { GradebookBackup } from './models/gradebook-backup.model';\r\nimport { GradebookCategoryPointsSummary } from './models/gradebook-category-points-summary.model';\r\nimport { GradebookCurriculumStandards } from './models/gradebook-curriculum-standards.model';\r\nimport { GradebookMismatchScores } from './models/gradebook-mismatch-scores.model';\r\nimport { GradebookSettings } from './models/gradebook-settings.model';\r\nimport { GradebookStudentMarkByStudentId } from './models/gradebook-student-mark-by-student-id.model';\r\nimport { GradebookStudent } from './models/gradebook-student.model';\r\nimport { GradebookSystemColumns } from './models/gradebook-system-columns.model';\r\nimport { GradebookSystemGradeAssignment } from './models/gradebook-system-grade-assignment.model';\r\nimport { GradebookUndoRedo } from './models/gradebook-undo-redo.model';\r\nimport { BehaviorSkillGrades, CurriculumMarksType, GradingPeriodCommentDTO, RCGBehaviourSkill, RCGStandard, ReportCardGrades, TermGradeCodes, TermgradeCycleHeader, TermGrades, ValidGradeTemplate } from './models/report-card-grades-dto.model';\r\nimport { ScoresAssignment } from './models/scores-assignment.model';\r\nimport { ScoresStudentMark } from './models/scores-student-mark.model';\r\nimport { SpecialMark } from './models/special-mark.model';\r\nimport { Standard } from './models/standard.model';\r\nimport { StandardsStudentMark } from './models/standards-student-mark.model';\r\nimport { TermGradesBackup } from './models/term-grades-backup.model';\r\nimport { Term } from './models/term.model';\r\nimport { Unit } from './models/unit.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GradebookV9Service {\r\n\r\n defaultYear: Year;\r\n schoolYearSettings: SchoolYearSettings;\r\n course: ClassroomSummary;\r\n yearId = 0;\r\n schoolId = 0;\r\n siteYearId = 0;\r\n pageHeight = 0;\r\n currentUser: User;\r\n // --------------- Tab Flags -----------------\r\n selectedTab: string;\r\n selectedStandardTab: string;\r\n selectedReportingTab: string;\r\n selectedReportingStandardTab: string;\r\n selectedAnalysisTab: string;\r\n // --------------- Filter Flags -----------------\r\n selectedTerm: Term;\r\n selectedCategory: Category;\r\n selectedUnit: Unit;\r\n selectedStandardAssignmentId: number;\r\n selectedStandardStudentId: number;\r\n unsavedChanges = false;\r\n showIndicators = false;\r\n nonScoreStandard = false;\r\n showAssignment = false;\r\n showImportStandardModal = false;\r\n // --------------- Gradebook Objects -----------\r\n terms: Term[] = [];\r\n categories: Category[] = [];\r\n units: Unit[] = [];\r\n indicators: GradebookIndicator[] = [];\r\n specialMarks: SpecialMark[] = [];\r\n gradeScaleDescriptions: GradeScaleDescription[] = [];\r\n gradebookStudents: GradebookStudent[] = [];\r\n scoresAssignments: ScoresAssignment[] = [];\r\n scoresStudentMarks: ScoresStudentMark[] = [];\r\n assignmentsToStandards: AssignmentToStandard[] = [];\r\n standards: Standard[] = [];\r\n standardsStudentMarks: StandardsStudentMark[] = [];\r\n gradebookStudentAlerts: Alerts[] = [];\r\n gradebookSystemColumns: GradebookSystemColumns[] = [];\r\n userPermissions: UserPermission[];\r\n undoStudentMarks: GradebookUndoRedo[] = [];\r\n redoStudentMarks: GradebookUndoRedo[] = [];\r\n gradebookMismatchScores: GradebookMismatchScores[] = [];\r\n gradebookCurriculumStandards: GradebookCurriculumStandards[] = [];\r\n curriculumMarkTypes: CurriculumMarksType[];\r\n termGrades: TermGrades[] = [];\r\n validCurriculumMarkTypes = '';\r\n showTrends = false;\r\n showStudentNumbers = false;\r\n behaviorSocialSkillsTabName = 'Behavior / Social Skills';\r\n // Analysis Flags\r\n gradebookV9CategoryPointsSummary: GradebookCategoryPointsSummary[] = [];\r\n analysisTerm: AnalysisTerm[] = [];\r\n allTerms: Term[];\r\n allAssignments: Assignment[] = [];\r\n assignmentFormula: Formula[];\r\n analysisStudentAttendanceCount: AnalysisStudentsAttendance[];\r\n analysisSelectedStudent: GradebookStudent;\r\n studentDetailCallFromModel = false;\r\n\r\n private _isProgressCycleChecked: boolean;\r\n public get isProgressCycleChecked(): boolean {\r\n return this._isProgressCycleChecked;\r\n }\r\n\r\n public set isProgressCycleChecked(value: boolean) {\r\n this._isProgressCycleChecked = value;\r\n this.observableisProgressCycleChecked.next(value);\r\n }\r\n\r\n public observableisProgressCycleChecked = new Subject();\r\n observableisProgressCycleCheckedStream$ = this.observableisProgressCycleChecked.asObservable();\r\n\r\n // --------------- Observable Objects -----------\r\n // -- Preferences\r\n gradebookPreferences: GradebookPreferences;\r\n observableGradebookPreferences = new Subject();\r\n observableGradebookPreferencesStream$ = this.observableGradebookPreferences.asObservable();\r\n // -- Recall Tab Change\r\n observableGradebookTabChange = new Subject();\r\n observableGradebookTabChangeStream$ = this.observableGradebookTabChange.asObservable();\r\n // -- Gradebook Settings\r\n gradebookSettings: GradebookSettings;\r\n observableGradebookSettings = new Subject();\r\n observableGradebookSettingsStream$ = this.observableGradebookSettings.asObservable();\r\n // -- Lookups\r\n observableLookups = new Subject();\r\n observableLookupsStream$ = this.observableLookups.asObservable();\r\n // -- Assignments\r\n assignments: Assignment[] = [];\r\n observableAssignments = new Subject();\r\n observableAssignmentsStream$ = this.observableAssignments.asObservable();\r\n observableAssignmentsSequence = new Subject();\r\n observableAssignmentsSequenceStream$ = this.observableAssignmentsSequence.asObservable();\r\n // -- Gradebook Students\r\n observableGradebookStudents = new Subject();\r\n observableGradebookStudentsStream$ = this.observableGradebookStudents.asObservable();\r\n // -- Gradebook Scores Tab\r\n observableGradebookScoresTab = new Subject();\r\n observableGradebookScoresTabStream$ = this.observableGradebookScoresTab.asObservable();\r\n // -- Gradebook Standards Tab\r\n observableGradebookStandardsTab = new Subject();\r\n observableGradebookStandardsTabStream$ = this.observableGradebookStandardsTab.asObservable();\r\n // -- Indicator: Show / Hide\r\n observableGradebookIndicator = new Subject();\r\n observableGradebookIndicatorStream$ = this.observableGradebookIndicator.asObservable();\r\n observableGradebookSGIndicator = new Subject();\r\n observableGradebookSGIndicatorStream$ = this.observableGradebookSGIndicator.asObservable();\r\n // -- User Permission\r\n observableUserPermission = new Subject();\r\n observableUserPermissionStream$ = this.observableUserPermission.asObservable();\r\n // -- Non-Scored Standards: Show / Hide\r\n observableGradebookNonScoredStandards = new Subject();\r\n observableGradebookNonScoredStandardsStream$ = this.observableGradebookNonScoredStandards.asObservable();\r\n // -- Gradebook Special Marks\r\n observableGradebookSpecialMarks = new Subject();\r\n observableGradebookSpecialMarksStream$ = this.observableGradebookSpecialMarks.asObservable();\r\n // -- Gradebook Mismatch Scores\r\n observableGradebookMismatchScores = new Subject();\r\n observableGradebookMismatchScoresStream$ = this.observableGradebookMismatchScores.asObservable();\r\n // -- Assignment Save and New\r\n observableGradebookAssignmentSaveAndNew = new Subject();\r\n observableGradebookAssignmentSaveAndNewStream$ = this.observableGradebookAssignmentSaveAndNew.asObservable();\r\n // -- Recalculate Standard Total Points\r\n observableGradebookRecalculateStandardTotalPoints = new Subject();\r\n observableGradebookRecalculateStandardTotalPointsStream$ = this.observableGradebookRecalculateStandardTotalPoints.asObservable();\r\n // -- Regenerate Tools Menu\r\n observableGradebookToolsMenu = new Subject();\r\n observableGradebookToolsMenuStream$ = this.observableGradebookToolsMenu.asObservable();\r\n // -- Student Alerts update\r\n observableGradebookStudentAlertsUpdate = new Subject();\r\n observableGradebookStudentAlertsUpdateStream$ = this.observableGradebookStudentAlertsUpdate.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private sharedService: SharedService,\r\n private sharedGradeBookService: SharedGradebookService\r\n ) {\r\n this.currentUser = this.userService.currentUser;\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.yearId = this.defaultYear.Id;\r\n this.schoolId = this.defaultYear.SchoolID;\r\n this.siteYearId = this.defaultYear.SiteYearId;\r\n this.selectedTab = 'Scores';\r\n this.selectedStandardTab = 'Standards for One Assignment';\r\n this.selectedReportingTab = 'Traditional';\r\n this.selectedReportingStandardTab = 'All Standards by Student';\r\n this.selectedAnalysisTab = 'Categories';\r\n }\r\n\r\n clearAllData() {\r\n this.gradebookSettings = null;\r\n this.showIndicators = false;\r\n this.showAssignment = false;\r\n this.showTrends = false;\r\n this.terms = [];\r\n this.categories = [];\r\n this.units = [];\r\n this.indicators = [];\r\n this.specialMarks = [];\r\n this.gradeScaleDescriptions = [];\r\n this.gradebookStudents = [];\r\n this.gradebookStudentAlerts = [];\r\n this.gradebookSystemColumns = [];\r\n this.undoStudentMarks = [];\r\n this.redoStudentMarks = [];\r\n this.gradebookMismatchScores = [];\r\n this.gradebookCurriculumStandards = [];\r\n this.curriculumMarkTypes = [];\r\n this.validCurriculumMarkTypes = '';\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.yearId = this.defaultYear.Id;\r\n this.schoolId = this.defaultYear.SchoolID;\r\n this.siteYearId = this.defaultYear.SiteYearId;\r\n this.selectedStandardTab = 'Standards for One Assignment';\r\n this.selectedReportingTab = 'Traditional';\r\n this.selectedReportingStandardTab = 'All Standards by Student';\r\n this.selectedAnalysisTab = 'Categories';\r\n this.studentDetailCallFromModel = false;\r\n this.analysisTerm = [];\r\n this.allAssignments = [];\r\n this.assignmentFormula = [];\r\n this.gradebookV9CategoryPointsSummary = [];\r\n this.clearCourseData();\r\n }\r\n\r\n clearCourseData() {\r\n this.assignments = [];\r\n this.clearScoreData();\r\n }\r\n\r\n clearScoreData() {\r\n this.unsavedChanges = false;\r\n this.scoresAssignments = [];\r\n this.scoresStudentMarks = [];\r\n this.assignmentsToStandards = [];\r\n this.standards = [];\r\n this.standardsStudentMarks = [];\r\n this.updateGradebookV9GradebookScoresTab(this.scoresStudentMarks);\r\n this.updateGradebookV9GradebookStandardsTab(this.assignmentsToStandards);\r\n this.updateGradebookTabChange('');\r\n }\r\n\r\n padZero(assignmentSequence: number): string {\r\n let result = assignmentSequence.toString();\r\n while (result.length < 3) {\r\n result = '0' + result;\r\n }\r\n return result;\r\n }\r\n\r\n getEffectiveScore(assignment: ScoresAssignment, studentMark: ScoresStudentMark) {\r\n studentMark.ScorePercentValue = null;\r\n studentMark.EffectiveScoreValue = null;\r\n let specialMark: SpecialMark;\r\n let scorePercentValue: number;\r\n let effectiveScoreValue: number;\r\n\r\n if (studentMark.GradeBookSpecialMarkCodeId != null && studentMark.GradeBookSpecialMarkCodeId > 0) {\r\n specialMark = this.specialMarks.filter(o => o.Id == studentMark.GradeBookSpecialMarkCodeId)[0];\r\n if (specialMark != null) {\r\n studentMark.GradeBookSpecialMarkCode = specialMark.Code;\r\n studentMark.GradeBookSpecialMarkDescription = specialMark.Description;\r\n if (specialMark.Operation == 0 || (specialMark.Code == 'MSNG' && specialMark.Operation == 1 && specialMark.Value == 0)) {\r\n if (studentMark.ScorePointValue != null) {\r\n specialMark = null;\r\n studentMark.GradeBookSpecialMarkCodeId = 0;\r\n studentMark.GradeBookSpecialMarkCode = '';\r\n studentMark.GradeBookSpecialMarkDescription = '';\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (studentMark.ScorePointValue == null && (studentMark.GradeBookSpecialMarkCodeId == null || studentMark.GradeBookSpecialMarkCodeId == 0)) {\r\n effectiveScoreValue = null;\r\n } else {\r\n if (assignment.BasePoints == null || assignment.BasePoints == 0) {\r\n scorePercentValue = null;\r\n effectiveScoreValue = studentMark.ScorePointValue;\r\n } else if (studentMark.GradeBookSpecialMarkCodeId == null || studentMark.GradeBookSpecialMarkCodeId == 0) {\r\n if (!isNaN(studentMark.ScorePointValue / assignment.BasePoints)) {\r\n scorePercentValue = Math.round(((studentMark.ScorePointValue * 100) / assignment.BasePoints) * 100) / 100;\r\n effectiveScoreValue = Math.round(((studentMark.ScorePointValue * 100) / assignment.BasePoints) * assignment.BasePoints * 0.01 * 100) / 100;\r\n }\r\n } else if (studentMark.GradeBookSpecialMarkCodeId != null && studentMark.GradeBookSpecialMarkCodeId > 0) {\r\n if (specialMark != null) {\r\n if (specialMark.Operation == 1) {\r\n if (!isNaN(specialMark.Value / assignment.BasePoints)) {\r\n scorePercentValue = Math.round((specialMark.Value * 100 / assignment.BasePoints) * 100) / 100;\r\n effectiveScoreValue = Math.round(specialMark.Value * 100 / assignment.BasePoints * assignment.BasePoints * 0.01 * 100) / 100;\r\n }\r\n } else if (specialMark.Operation == 2) {\r\n if (!isNaN(studentMark.ScorePointValue * specialMark.Value / assignment.BasePoints)) {\r\n scorePercentValue = Math.round((studentMark.ScorePointValue * specialMark.Value / assignment.BasePoints) * 100) / 100;\r\n effectiveScoreValue = Math.round((studentMark.ScorePointValue * specialMark.Value / assignment.BasePoints) * assignment.BasePoints * 0.01 * 100) / 100;\r\n }\r\n } else if (specialMark.Operation == 3) {\r\n if (studentMark.ScorePointValue == undefined) {\r\n studentMark.ScorePointValue = 0;\r\n }\r\n if (!isNaN((studentMark.ScorePointValue + specialMark.Value) * 100 / assignment.BasePoints)) {\r\n scorePercentValue = Math.round(((studentMark.ScorePointValue + specialMark.Value) * 100 / assignment.BasePoints) * 100) / 100;\r\n effectiveScoreValue = Math.round(((studentMark.ScorePointValue + specialMark.Value) * 100 / assignment.BasePoints) * assignment.BasePoints * 0.01 * 100) / 100;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n studentMark.EffectiveScoreValue = effectiveScoreValue != null ? effectiveScoreValue.toString() : studentMark.EffectiveScoreValue;\r\n if (scorePercentValue != null) {\r\n scorePercentValue = this.gradebookSettings.CalculateSGColumnsPercentsRoundUp ? Math.round(scorePercentValue) : Math.floor(scorePercentValue);\r\n studentMark.ScorePercentValue = scorePercentValue + '%';\r\n }\r\n this.setIndicators(assignment, studentMark, specialMark);\r\n }\r\n\r\n setIndicators(assignment: ScoresAssignment, studentMark: ScoresStudentMark, specialMark: SpecialMark = null) {\r\n if (assignment != null && studentMark != null) {\r\n if (studentMark.GradeBookStudentMarkId > 0 && assignment.UseObjectivesForPoints == false && studentMark.InvalidMark == false) {\r\n studentMark.ScoreBackgroundColor = '';\r\n studentMark.ScoreForeColor = '';\r\n\r\n let effectiveScore = parseFloat(studentMark.ScorePercentValue);\r\n if (isNaN(effectiveScore) == true && assignment.SystemGrade == true && studentMark.ScorePercentValue != null) {\r\n const scorePercentValue = studentMark.ScorePercentValue.split(' ');\r\n if (scorePercentValue.length == 2) {\r\n effectiveScore = parseFloat(scorePercentValue[1].replace('%', ''));\r\n }\r\n }\r\n\r\n if (isNaN(effectiveScore) == false) {\r\n const indicators = this.indicators;\r\n if (indicators.length > 0) {\r\n const assignmentIndicators = indicators.filter(o => o.AssignmentIndicator == true && (this.showIndicators == true || o.Visible == true) && (o.AssignmentId == assignment.GradeBookAssignmentId || (assignment.SystemGrade == false && o.AssignmentId == 0) || (assignment.SystemGrade == true && o.SystemGradeFinal == true)));\r\n const categoryIndicators = indicators.filter(o => o.AssignmentIndicator == false && (this.showIndicators == true || o.Visible == true) && (o.CategoryId == assignment.GradeBookAssignmentTypeId || (assignment.SystemGrade == false && o.CategoryId == 0) || (assignment.SystemGrade == true && o.SystemGradeFinal == true)));\r\n if (assignmentIndicators.length > 0 || categoryIndicators.length > 0) {\r\n const assignmentIndicator = assignmentIndicators.filter(i => i.FromRange <= effectiveScore && i.ToRange >= effectiveScore)[0];\r\n if (assignmentIndicator != null) {\r\n studentMark.ScoreBackgroundColor = assignmentIndicator.BackgroundColor;\r\n studentMark.ScoreForeColor = assignmentIndicator.ForegroundColor;\r\n } else {\r\n const categoryIndicator = categoryIndicators.filter(i => i.FromRange <= effectiveScore && i.ToRange >= effectiveScore)[0];\r\n if (categoryIndicator != null) {\r\n studentMark.ScoreBackgroundColor = categoryIndicator.BackgroundColor;\r\n studentMark.ScoreForeColor = categoryIndicator.ForegroundColor;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (studentMark.ScoreBackgroundColor == '') {\r\n if (specialMark == null && studentMark.GradeBookSpecialMarkCodeId != null && studentMark.GradeBookSpecialMarkCodeId > 0) {\r\n specialMark = this.specialMarks.filter(o => o.Id == studentMark.GradeBookSpecialMarkCodeId)[0];\r\n }\r\n if (specialMark != null && specialMark.ColorCode != '') {\r\n studentMark.ScoreBackgroundColor = specialMark.ColorCode;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateGradebookPreferences(gradebookPreferences: GradebookPreferences) {\r\n this.gradebookPreferences = gradebookPreferences;\r\n if (this.gradebookPreferences != undefined && this.gradebookPreferences.DefaultForStandardsView == 'Show') {\r\n this.showAssignment = true;\r\n } else {\r\n this.showAssignment = false;\r\n }\r\n\r\n if (this.gradebookPreferences != null) {\r\n if (this.gradebookPreferences.NonScrollingColumns.length > 0 && this.gradebookPreferences.NonScrollingColumns[0] == null) {\r\n this.gradebookPreferences.NonScrollingColumns = [];\r\n }\r\n\r\n if (this.gradebookPreferences.NonScrollingColumns.length == 0 && this.gradebookPreferences.ScrollingColumns.length == 0) {\r\n this.gradebookPreferences.NonScrollingColumns.push({\r\n Field: 'StudentName',\r\n DisplayName: 'Student Name',\r\n width: '280px'\r\n });\r\n }\r\n }\r\n\r\n this.observableGradebookPreferences.next(this.gradebookPreferences);\r\n }\r\n\r\n updateUserPermission(userPermissions: UserPermission[]) {\r\n this.userPermissions = userPermissions;\r\n this.observableUserPermission.next(userPermissions);\r\n }\r\n\r\n updateGradebookTabChange(selectedTab: string) {\r\n this.observableGradebookTabChange.next(selectedTab);\r\n }\r\n\r\n saveGradebookSelectionPreferences() {\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(this.userPreferencesService.gradebookV9SelectionPreferences));\r\n this.userPreferencesService.saveUserPreferences(0, '/OneSISGradebookSelectionPreferences', xmlStream, 0, '').subscribe();\r\n }\r\n\r\n saveGradebookAnalysisSettings() {\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(this.userPreferencesService.gradebookV9AnalysisSettings));\r\n this.userPreferencesService.saveUserPreferences(0, '/OneSISGradebookAnalysisSettings', xmlStream, 0, '').subscribe();\r\n }\r\n\r\n getGradebookV9Settings(): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Settings' + queryString);\r\n }\r\n\r\n updateGradebookV9Settings(gradebookSettings: GradebookSettings) {\r\n this.gradebookSettings = gradebookSettings;\r\n this.observableGradebookSettings.next(gradebookSettings);\r\n }\r\n\r\n gradebookRecalculateAssignments(): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GradebookRecalculateAssignments' + queryString);\r\n }\r\n\r\n getGradebookV9Terms(yearId: number, schoolId: number, siteSectionId: number): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&schoolId=' + schoolId +\r\n '&siteSectionId=' + siteSectionId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Terms' + queryString);\r\n }\r\n\r\n getGradebookV9Categories(): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Categories' + queryString);\r\n }\r\n\r\n getGradebookV9CategorySequence(categoryId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id +\r\n '&gradeBookAssignmentTypeId=' + categoryId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9CategorySequence' + queryString);\r\n }\r\n\r\n saveGradebookV9Categories(data: Category[]) {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9Categories', data);\r\n }\r\n\r\n getGradebookV9Units(siteSectionId: number): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&schoolId=' + this.schoolId +\r\n '&siteSectionId=' + siteSectionId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Units' + queryString);\r\n }\r\n\r\n getGradebookV9SpecialMarks(): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9SpecialMarks' + queryString);\r\n }\r\n\r\n updateGradebookV9Lookups(gradebookTerms: Term[]) {\r\n this.terms = gradebookTerms;\r\n this.observableLookups.next(gradebookTerms);\r\n }\r\n\r\n updateGradebookV9SpecialMarks(specialMarks: SpecialMark[]) {\r\n this.specialMarks = specialMarks;\r\n this.observableGradebookSpecialMarks.next(specialMarks);\r\n }\r\n\r\n getGradebookV9GradeScaleDescription(): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&schoolId=' + this.schoolId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9GradeScaleDescription' + queryString);\r\n }\r\n\r\n saveGradebookV9GradeScaleDescription(data: GradeScaleDescription) {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9GradeScaleDescription', data);\r\n }\r\n\r\n saveStudentSpecialGradeScale(studentId: number, gradeScaleDescriptionId: number) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&gradeScaleDescriptionId=' + gradeScaleDescriptionId;\r\n return this.http.get(System.apiURL.Classroom + 'SaveStudentSpecialGradeScale' + queryString);\r\n }\r\n\r\n deleteGradebookV9GradeScaleDescription(gradeScaleDescriptionId: number, gradeScaleId: number) {\r\n let queryString = '';\r\n queryString += '?gradeScaleDescriptionId=' + gradeScaleDescriptionId +\r\n '&gradeScaleId=' + gradeScaleId;\r\n return this.http.get(System.apiURL.Classroom + 'DeleteGradebookV9GradeScaleDescription' + queryString);\r\n }\r\n\r\n getGradebookV9Assignments(siteSectionId: number, termId: number, assignmentTypeId: number, gradebookUnitId: number, assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + siteSectionId +\r\n '&termId=' + termId +\r\n '&assignmentTypeId=' + assignmentTypeId +\r\n '&gradebookUnitId=' + gradebookUnitId +\r\n '&gradebookAssignmentId=' + assignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Assignments' + queryString);\r\n }\r\n\r\n updateGradebookV9Assignments(gradebookAssignments: Assignment[]) {\r\n this.assignments = gradebookAssignments;\r\n this.observableAssignments.next(gradebookAssignments);\r\n }\r\n\r\n getGradebookV9AssignmentHomework(assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?gradebookAssignmentId=' + assignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9AssignmentHomework' + queryString);\r\n }\r\n\r\n getGradebookV9Attachments(assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?gradebookAssignmentId=' + assignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Attachments' + queryString);\r\n }\r\n\r\n getGradebookV9CurriculumStandards(assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&districtSubjectId=' + this.course.SubjectId +\r\n '&gradebookAssignmentId=' + assignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9CurriculumStandards' + queryString);\r\n }\r\n\r\n saveGradebookV9Assignments(copyToAssignments: number, recurrenceOption: string, recurrenceDuration: string, recurrenceWeeks: number, recurrenceUntilDate: string, siteSectionIds: string, data: Assignment[]): Observable {\r\n let queryString = '';\r\n queryString += '?districtSubjectId=' + this.course.SubjectId +\r\n '©ToAssignments=' + copyToAssignments +\r\n '&recurrenceOption=' + recurrenceOption +\r\n '&recurrenceDuration=' + recurrenceDuration +\r\n '&recurrenceWeeks=' + recurrenceWeeks +\r\n '&recurrenceUntilDate=' + recurrenceUntilDate +\r\n '&siteSectionIds=' + siteSectionIds;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9Assignments' + queryString, data);\r\n }\r\n\r\n saveGradebookV9AssignmentShowOnPortal(assignmentId: number, showOnPortal: boolean) {\r\n let queryString = '';\r\n queryString += '?gradebookAssignmentId=' + assignmentId +\r\n '&showOnPortal=' + showOnPortal;\r\n return this.http.get(System.apiURL.Classroom + 'SaveGradebookV9AssignmentShowOnPortal' + queryString);\r\n }\r\n\r\n deleteGradebookV9Assignment(assignmentId: number) {\r\n let queryString = '';\r\n queryString += '?gradebookAssignmentId=' + assignmentId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'DeleteGradebookV9Assignment' + queryString);\r\n }\r\n\r\n getGradebookV9Formula(assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?gradebookAssignmentId=' + assignmentId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Formula' + queryString);\r\n }\r\n\r\n saveGradebookV9Formula(assignmentId: number, formula: Formula) {\r\n let queryString = '';\r\n queryString += '?gradebookAssignmentId=' + assignmentId;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9Formula' + queryString, formula);\r\n }\r\n\r\n getGradebookV9Student(): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.schoolId +\r\n '&yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Student' + queryString);\r\n }\r\n\r\n updateGradebookV9GradebookStudents(students: GradebookStudent[]) {\r\n this.gradebookStudents = students;\r\n this.observableGradebookStudents.next(students);\r\n }\r\n\r\n getGradebookV9ScoresAssignments(gradebookAssignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.schoolId +\r\n '&yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id +\r\n '&assignmentTypeId=' + this.selectedCategory.Id +\r\n '&gradebookUnitId=' + this.selectedUnit.Id +\r\n '&gradebookAssignmentId=' + gradebookAssignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9ScoresAssignments' + queryString);\r\n }\r\n\r\n getGradebookV9ScoresStudentMarks(gradebookAssignmentId: number, studentId: number, assignmentTypeId: number): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.schoolId +\r\n '&yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id +\r\n '&assignmentTypeId=' + assignmentTypeId +\r\n '&gradebookUnitId=' + this.selectedUnit.Id +\r\n '&gradebookAssignmentId=' + gradebookAssignmentId +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9ScoresStudentMarks' + queryString);\r\n }\r\n\r\n updateGradebookV9GradebookScoresTab(scoresStudentMarks: ScoresStudentMark[]) {\r\n this.scoresStudentMarks = scoresStudentMarks;\r\n this.observableGradebookScoresTab.next(scoresStudentMarks);\r\n }\r\n\r\n saveGradebookV9ScoresStudentMarks(studentMarks: ScoresStudentMark[]) {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9ScoresStudentMarks' + queryString, studentMarks);\r\n }\r\n\r\n saveGradebookV9StudentScoreComment(gradebookStudentMarkId: number, comment: string[]) {\r\n let queryString = '';\r\n queryString += '?gradebookStudentMarkId=' + gradebookStudentMarkId;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9StudentScoreComment' + queryString, comment);\r\n }\r\n\r\n getGradebookV9StudentMarksByStudentId(studentId: number, gradeBookAssignmentId: number, data: string[]): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&studentId=' + studentId +\r\n '&gradeBookAssignmentId=' + gradeBookAssignmentId +\r\n '&termDefinitionId=' + this.selectedTerm.Id +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.post(System.apiURL.Classroom + 'GetGradebookV9StudentMarksByStudentId' + queryString, data);\r\n }\r\n\r\n getGradebookV9AssignmentsToStandards(assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id +\r\n '&assignmentTypeId=' + this.selectedCategory.Id +\r\n '&gradebookUnitId=' + this.selectedUnit.Id +\r\n '&gradebookAssignmentId=' + assignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9AssignmentsToStandards' + queryString);\r\n }\r\n\r\n getGradebookV9Standards(assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id +\r\n '&assignmentTypeId=' + this.selectedCategory.Id +\r\n '&gradebookUnitId=' + this.selectedUnit.Id +\r\n '&gradebookAssignmentId=' + assignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Standards' + queryString);\r\n }\r\n\r\n getGradebookV9StandardsStudentMarks(assignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id +\r\n '&assignmentTypeId=' + this.selectedCategory.Id +\r\n '&gradebookUnitId=' + this.selectedUnit.Id +\r\n '&gradebookAssignmentId=' + assignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9StandardsStudentMarks' + queryString);\r\n }\r\n\r\n updateGradebookV9GradebookStandardsTab(assignmentsToStandards: AssignmentToStandard[]) {\r\n this.assignmentsToStandards = assignmentsToStandards;\r\n this.observableGradebookStandardsTab.next(assignmentsToStandards);\r\n }\r\n\r\n saveGradebookV9StandardsStudentMarks(data: StandardsStudentMark[]) {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9StandardsStudentMarks' + queryString, data);\r\n }\r\n\r\n getGradebookV9ExportBase64(): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.schoolId +\r\n '&yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id +\r\n '&assignmentTypeId=' + this.selectedCategory.Id +\r\n '&gradebookUnitId=' + this.selectedUnit.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9ExportBase64' + queryString);\r\n }\r\n\r\n saveGradebookV9CopyAssignments(data: string[]): Observable {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9CopyAssignments', data);\r\n }\r\n\r\n getGradebookV9BackupSets(backupId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id +\r\n '&backupId=' + backupId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9BackupSets' + queryString);\r\n }\r\n\r\n createGradebookV9Backup(backupCreateNewOption: number, backupCreateNewText: string): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + this.course.Id +\r\n '&siteYearId=' + this.siteYearId +\r\n '&backupCreateNewOption=' + backupCreateNewOption +\r\n '&backupCreateNewText=' + backupCreateNewText;\r\n return this.http.get(System.apiURL.Classroom + 'CreateGradebookV9Backup' + queryString);\r\n }\r\n\r\n restoreGradebookV9Backup(ignoreExceedDate: boolean, attachment: GradebookBackup): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&schoolId=' + this.schoolId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&ignoreExceedDate=' + ignoreExceedDate;\r\n return this.http.post(System.apiURL.Classroom + 'RestoreGradebookV9Backup' + queryString, attachment);\r\n }\r\n\r\n deleteGradebookV9BackupSet(backupId: number): Observable {\r\n let queryString = '';\r\n queryString += '?backupId=' + backupId;\r\n return this.http.get(System.apiURL.Classroom + 'DeleteGradebookV9BackupSet' + queryString);\r\n }\r\n\r\n getGradebookV9SystemColumns(): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9SystemColumns' + queryString);\r\n }\r\n\r\n gradebookV9FormulaCopy(desinationChoice: number, assignmentIds: number[]) {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&desinationChoice=' + desinationChoice;\r\n return this.http.post(System.apiURL.Classroom + 'GradebookV9FormulaCopy' + queryString, assignmentIds);\r\n }\r\n\r\n getGradebookV9SystemGradeAssignments(): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + this.selectedTerm.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9SystemGradeAssignments' + queryString);\r\n }\r\n\r\n gradebookV9ResetFormulas() {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GradebookV9ResetFormulas' + queryString);\r\n }\r\n\r\n importObjMarksFromGradebookToStudentCurriculumMarks() {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '¤tTermCycleId=' + this.gradebookSettings.CurrentGradeCycleId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'ImportObjMarksFromGradebookToStudentCurriculumMarks' + queryString);\r\n }\r\n\r\n saveGradebookV9SpecialMarks(data: SpecialMark[]): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9SpecialMarks' + queryString, data);\r\n }\r\n\r\n saveGradebookV9Units(gradebookUnits: Unit[]) {\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9Units', gradebookUnits);\r\n }\r\n\r\n deleteGradebookV9Unit(unitId: number) {\r\n let queryString = '';\r\n queryString += '?unitId=' + unitId;\r\n return this.http.get(System.apiURL.Classroom + 'DeleteGradebookV9Unit' + queryString);\r\n }\r\n\r\n saveGradebookV9StudentSequence(gradebookStudents: GradebookStudent[]) {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradebookV9StudentSequence' + queryString, gradebookStudents);\r\n }\r\n\r\n getGradebookV9CategoryPointsSummary(): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9CategoryPointsSummary' + queryString);\r\n }\r\n\r\n getGradebookV9MismatchScores(): Observable {\r\n const termId = this.selectedTerm == undefined ? 0 : this.selectedTerm.Id;\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.schoolId +\r\n '&yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + termId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9MismatchScores' + queryString);\r\n }\r\n\r\n updateGradebookV9MismatchScores(gradebookMismatchScores: GradebookMismatchScores[]) {\r\n this.gradebookMismatchScores = gradebookMismatchScores;\r\n this.observableGradebookMismatchScores.next(gradebookMismatchScores);\r\n }\r\n\r\n gradebookV9CalculateGPA(data: string[]) {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.post(System.apiURL.Classroom + 'GradebookV9CalculateGPA' + queryString, data);\r\n }\r\n\r\n // -------------------------- Other ---------------\r\n getSiteSectionByStudentId(studentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetSiteSectionByStudentId' + queryString);\r\n }\r\n\r\n // -- TODO: Need to rewrite\r\n getGradeBookAssignmentByStudentId(selectedCourseId: number, studentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?courseId=' + this.course.Id +\r\n '&siteSectionId=' + selectedCourseId +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradeBookAssignmentReadByStudentId' + queryString);\r\n }\r\n\r\n // -- TODO: Need to rewrite\r\n gradeBookStudentMarksCopy(studentId: number, data: number[]) {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&studentId=' + studentId;\r\n return this.http.post(System.apiURL.Classroom + 'GradeBookStudentMarksCopy' + queryString, data);\r\n }\r\n\r\n /////////////////// Report Card Grades /////////////////////\r\n\r\n getReportCardGradesData(importGrades: boolean, importScoresForSeniorsOnly = false): Observable {\r\n let queryString = '';\r\n if (this.gradebookSettings != undefined) {\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&courseId=' + this.course.Id +\r\n '&importGrades=' + importGrades +\r\n '¤tTermCycleId=' + this.gradebookSettings.CurrentGradeCycleId +\r\n '&importScoresForSeniorsOnly=' + importScoresForSeniorsOnly;\r\n return this.http.get(System.apiURL.Classroom + 'GetReportCardGradesData' + queryString);\r\n }\r\n else {\r\n return of(null);\r\n }\r\n }\r\n\r\n getTermGradeListCommentLookup(includeInactive: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.schoolId +\r\n '&includeInactive=' + includeInactive;\r\n return this.http.get(System.apiURL.Classroom + 'GetTermGradeListCommentLookup' + queryString);\r\n }\r\n\r\n saveReportCardGrades(usingPercentageGrades: boolean, termGrades: TermGrades[]): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '¤tTermCycleId=' + this.gradebookSettings.CurrentGradeCycleId +\r\n '&courseId=' + this.course.Id +\r\n '&usingPercentageGrades=' + usingPercentageGrades;\r\n return this.http.post(System.apiURL.Classroom + 'SaveReportCardGrades' + queryString, termGrades);\r\n }\r\n\r\n getBehaviorSkillRecordForAllTermGradeCycles(studentId: string, usingPercentageGrades: boolean, curriculumHeaderTermType: TermgradeCycleHeader[]): Observable {\r\n let queryString = '';\r\n queryString = '?siteYearId=' + this.siteYearId +\r\n '&courseId=' + this.course.Id +\r\n '&studentId=' + studentId +\r\n '&usingPercentageGrades=' + usingPercentageGrades +\r\n '¤tTermCycleId=' + this.gradebookSettings.CurrentGradeCycleId;\r\n return this.http.post(System.apiURL.Classroom + 'GetBehaviorSkillRecordForAllTermGradeCycles' + queryString, curriculumHeaderTermType);\r\n }\r\n\r\n getCurriculumnMarksandStandards(termGrades: TermGrades[]): Observable {\r\n let queryString = '';\r\n queryString = '?siteYearId=' + this.siteYearId +\r\n '&yearId=' + this.yearId +\r\n '&courseId=' + this.course.Id +\r\n '¤tTermCycleId=' + this.gradebookSettings.CurrentGradeCycleId;\r\n return this.http.post(System.apiURL.Classroom + 'GetCurriculumnMarksandStandards' + queryString, termGrades);\r\n }\r\n\r\n getCurriculumMarkTypesReadForSubject(): Observable {\r\n return this.sharedService.getCurriculumMarkTypesReadForSubject(this.course.Id);\r\n }\r\n\r\n getCurriculumStudentsMarks() {\r\n let queryString = '';\r\n queryString = '?siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetCurriculumStudentsMarks' + queryString);\r\n }\r\n\r\n getBehaviorSkillRecord(usingPercentageGrades: boolean, termGrades: TermGrades[]): Observable {\r\n let queryString = '';\r\n queryString += '?courseId=' + this.course.Id +\r\n '&usingPercentageGrades=' + usingPercentageGrades;\r\n return this.http.post(System.apiURL.Classroom + 'GetBehaviorSkillRecord' + queryString, termGrades);\r\n }\r\n\r\n getReportcardViewComments(termId: number, C360GradebookLimitNumberOfComments: boolean, currentDate: Date, forAssignments: boolean, termCommentStudentId: number) {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&schoolId=' + this.schoolId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + termId +\r\n '&C360GradebookLimitNumberOfComments=' + C360GradebookLimitNumberOfComments +\r\n '¤tDate=' + currentDate +\r\n '&forAssignments=' + forAssignments +\r\n '&termCommentStudentId=' + termCommentStudentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradingPeriodComments' + queryString);\r\n }\r\n\r\n getGradingPeriodComments(termId, C360GradebookLimitNumberOfComments, currentDate, forAssignments, termCommentStudentId): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&schoolId=' + this.schoolId +\r\n '&siteSectionId=' + this.course.Id +\r\n '&termId=' + termId +\r\n '&C360GradebookLimitNumberOfComments=' + C360GradebookLimitNumberOfComments +\r\n '¤tDate=' + currentDate +\r\n '&forAssignments=' + forAssignments +\r\n '&termCommentStudentId=' + termCommentStudentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradingPeriodComments' + queryString);\r\n }\r\n\r\n saveGradingPeriodComment(GradingPeriodCommentDTOs: GradingPeriodCommentDTO[]): Observable {\r\n let queryString = '';\r\n queryString += '?courseId=' + this.course.Id;\r\n return this.http.post(System.apiURL.Classroom + 'SaveGradingPeriodComment' + queryString, GradingPeriodCommentDTOs);\r\n }\r\n\r\n saveBehaviorSkillGrades(usingPercentageGrades: boolean, RCGBehaviorSkillsDTOs: BehaviorSkillGrades[]): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&courseId=' + this.course.Id +\r\n '&usingPercentageGrades=' + usingPercentageGrades +\r\n '¤tTermCycleId=' + this.gradebookSettings.CurrentGradeCycleId;\r\n return this.http.post(System.apiURL.Classroom + 'SaveBehaviorSkillGrades' + queryString, RCGBehaviorSkillsDTOs);\r\n }\r\n\r\n saveCurriculumMarks(courseObjectives): Observable {\r\n let queryString = '';\r\n queryString += '?courseId=' + this.course.Id;\r\n return this.http.post(System.apiURL.Classroom + 'SaveCurriculumMarks' + queryString, courseObjectives);\r\n }\r\n\r\n getGradebookAssignmentLinkedByObjectives(selectedObjectiveId: number): Observable {\r\n let queryString = '';\r\n queryString += '?courseId=' + this.course.Id +\r\n '&SubjectId=' + this.course.SubjectId +\r\n '&siteYearId=' + this.siteYearId +\r\n '&selectedStudentId=' + selectedObjectiveId +\r\n '§ion=' + this.course.Section;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookAssignmentLinkedByObjectives' + queryString);\r\n }\r\n\r\n getGradebookAssignmentLinkedObjectivesByObjectiveId(selectedObjectiveId: number): Observable {\r\n let queryString = '';\r\n queryString += '?courseId=' + this.course.Id +\r\n '&SubjectId=' + this.course.SubjectId +\r\n '&siteYearId=' + this.siteYearId +\r\n '&selectedObjectiveId=' + selectedObjectiveId +\r\n '§ion=' + this.course.Section;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookAssignmentLinkedObjectivesByObjectiveId' + queryString);\r\n }\r\n\r\n getValidGradeTemplates(id: number, studentId: number): Observable {\r\n const subjectId = this.course != null && this.course.SubjectId != null ? this.course.SubjectId : 0;\r\n let queryString = '';\r\n queryString += '?siteYearId=' + this.siteYearId +\r\n '&id=' + id +\r\n '&studentId=' + studentId +\r\n '&subjectId=' + subjectId;\r\n return this.http.get(System.apiURL.Classroom + 'GetValidGradeTemplates' + queryString);\r\n }\r\n\r\n finalizeGrades() {\r\n let queryString = '';\r\n queryString += '?courseId=' + this.course.Id +\r\n '¤tTermCycleId=' + this.gradebookSettings.CurrentGradeCycleId +\r\n '&finalize=' + true;\r\n return this.http.get(System.apiURL.Classroom + 'FinalizeGrades' + queryString);\r\n }\r\n\r\n importGradesFromExternalGradebook(attachment: TermGradesBackup[]): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&siteYearId=' + this.siteYearId +\r\n '&termGradeCycleId=' + this.gradebookSettings.CurrentGradeCycleId +\r\n '¤tTermId=' + 0 +\r\n '&TeacherCanGenerateEndofTermLetterGrade=' + this.gradebookSettings.TeacherCanImportObjectiveScores;\r\n return this.http.post(System.apiURL.Classroom + 'ImportGradesFromExternalGradebook' + queryString, attachment);\r\n }\r\n\r\n /////////////////// Indicators /////////////////////\r\n getGradebookIndicators(courseId: number): Observable {\r\n return this.sharedGradeBookService.getGradebookIndicators(courseId, 0);\r\n }\r\n\r\n saveGradebookIndicator(gradebookIndicators: GradebookIndicator): Observable {\r\n return this.sharedGradeBookService.saveGradebookIndicator(gradebookIndicators, this.course.Id);\r\n }\r\n\r\n deleteGradebookIndicator(id: number): Observable {\r\n return this.sharedGradeBookService.deleteGradebookIndicator(id);\r\n }\r\n\r\n saveGradebookV9CopyIndicator(indicatorIds: string, siteSectionIds: string): Observable {\r\n let queryString = '';\r\n queryString += '?indicatorIds=' + indicatorIds +\r\n '&siteSectionIds=' + siteSectionIds;\r\n return this.http.get(System.apiURL.Classroom + 'SaveGradebookV9CopyIndicators' + queryString);\r\n }\r\n\r\n getGradebookV9AnalysisStudentsAttendance(): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.schoolId +\r\n '&yearId=' + this.yearId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9AnalysisStudents' + queryString);\r\n }\r\n\r\n getGradebookV9AnalysisTerms(): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearId +\r\n '&schoolId=' + this.schoolId +\r\n '&siteSectionId=' + this.course.Id;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9AnalysisTerms' + queryString);\r\n }\r\n\r\n exportBase64ToFile(base64Document: string, fileName: string, fileType: string) {\r\n const byteArrays: any[] = [];\r\n const byteCharacters = atob(base64Document);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n const blob = new Blob(byteArrays, { type: fileType });\r\n\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.style.visibility = 'hidden';\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n}\r\n","
\r\n GRADEBOOK ACCESS DENIED\r\n
\r\n\r\n
\r\n
\r\n Missing Default Grade Scale for Site-Year\r\n
\r\n
\r\n This gradebook is set up to use curriculum marks instead of numeric entries for standards.\r\n

\r\n In order to be used for standards, curriculum marks must have Score Values defined.\r\n Score Values need to be entered on the curriculum marks associalted with this course.\r\n

\r\n Curriculum marks are managed in District Settings.\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ClassroomSummary } from '../../../../classroom-summary/models/classroom-summary.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-gradebook-access-denied',\r\n templateUrl: './gradebook-access-denied.component.html',\r\n styles: []\r\n})\r\nexport class GradebookAccessDeniedComponent implements OnInit, OnDestroy {\r\n\r\n course: ClassroomSummary;\r\n constructor(\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked');\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'app-no-class-selected-warning-dialog',\r\n\ttemplateUrl: './no-class-selected-warning-dialog.component.html',\r\n\tstyleUrls: ['./no-class-selected-warning-dialog.component.css']\r\n})\r\nexport class NoClassSelectedWarningDialogComponent implements OnInit {\r\n\r\n\t// Properties\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tok() {\r\n\t\t// PRE: the OK button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n

\r\n\tNo Class Selected\r\n

\r\n\r\n\r\n\r\n\tAt least one class must be selected.\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t
\r\n
","\r\n
\r\n
\r\n {{headerText | translate}}\r\n
\r\n
\r\n \r\n \r\n \r\n {{item.display}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{term.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Meets\r\n \r\n \r\n \r\n \r\n {{course.Meets}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Term\r\n \r\n \r\n \r\n \r\n {{course.Term}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Course-Section\r\n \r\n \r\n \r\n {{course.CourseSection}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Course Name\r\n \r\n \r\n \r\n \r\n {{course.Course}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Instructor\r\n \r\n \r\n \r\n {{course.Instructor}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Room\r\n \r\n \r\n \r\n \r\n {{course.Room}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Enrolled\r\n \r\n \r\n \r\n {{course.Enrolled}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Class Information\r\n \r\n \r\n \r\n {{course.CourseHasProfile ? 'Y' : ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Seating Chart\r\n \r\n \r\n {{course.SeatingCharts != 0 ? course.SeatingCharts : ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Gradebook Updated\r\n \r\n \r\n {{course.UpdatedDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Subscription } from 'rxjs';\r\nimport { SharedService } from '../../../../shared-components/shared.service';\r\nimport { UserPreferencesService } from '../../../../shared-components/user-preferences/user-preferences.service';\r\nimport { Year } from '../../../../shared-components/year/year.model';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { ClassroomSummaryService } from '../../../classroom-summary/classroom-summary.service';\r\nimport { Classroom360Service } from '../../../classroom360.service';\r\nimport { GradebookV10Service } from '../../../gradebook/v10/gradebook-V10.service';\r\nimport { GradebookAccessDefinedComponent } from '../../../gradebook/v10/modals/gradebook-access-defined/gradebook-access-defined.component';\r\nimport { InitGradebookPreferencesComponent } from '../../../gradebook/v10/modals/init-gradebook-preferences/init-gradebook-preferences.component';\r\nimport { GradebookV9Service } from '../../../gradebook/v9/gradebook-v9.service';\r\nimport { GradebookAccessDeniedComponent } from '../../../gradebook/v9/modals/gradebook-access-denied/gradebook-access-denied.component';\r\nimport { NoClassSelectedWarningDialogComponent } from '../no-class-selected-warning-dialog/no-class-selected-warning-dialog.component';\r\nimport { TylerMatTableDataSource } from './../../../../shared-components/angular-material/extended.class';\r\nimport { System } from './../../../../shared-components/System';\r\nimport { UserService } from './../../../../shared-components/user/user.service';\r\nimport { LoginService } from './../../../../shared-modules/login/login.service';\r\nimport { FilterClass } from './../../../classroom-summary/classFilter.pipe';\r\nimport { ClassroomSummaryFilter } from './../../../classroom-summary/models/classroom-summary-filter';\r\nimport { ClassroomSummary } from './../../../classroom-summary/models/classroom-summary.model';\r\nimport { ClassroomTerm } from './../../../classroom-summary/models/classroom-term.model';\r\n\r\n/**\r\n * This course forces a class selection. It takes the following injected properties:\r\n *\r\n * headerText: this is the text that shows in the header\r\n * multiselect: this determines if multiple courses should be selected\r\n *\r\n * It returns the selected class(es) on a close\r\n */\r\n@Component({\r\n selector: 'select-course-dialog',\r\n templateUrl: './select-course-dialog.component.html',\r\n styleUrls: [\r\n './select-course-dialog.component.css'\r\n ]\r\n})\r\nexport class SelectCourseDialogComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n headerText = 'Select Class';\r\n multiselect = false;\r\n\r\n // Properties\r\n private _sort: MatSort;\r\n terms: ClassroomTerm[];\r\n selectedTerm: ClassroomTerm;\r\n classes: ClassroomSummary[];\r\n tableData = new TylerMatTableDataSource();\r\n V10: boolean;\r\n defaultYear: Year;\r\n columns = ['meets', 'term', 'course section', 'course name', 'room', 'enrolled', 'gradebook updated'];\r\n userIsTeacher: boolean;\r\n showFilter = new EventEmitter();\r\n filterData: ClassroomSummaryFilter;\r\n subscriptions: Subscription[] = [];\r\n viewOptions: any;\r\n selectedView: any;\r\n selectedCourses: ClassroomSummary[] = [];\r\n spinner = false;\r\n gbAccessDeniedDialog: MatDialogRef;\r\n initGBPrefDialog: MatDialogRef;\r\n disableView: boolean;\r\n selectAllCourse: boolean;\r\n\r\n // Class Functions\r\n constructor(\r\n private classroomSummaryService: ClassroomSummaryService,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private classroom360Service: Classroom360Service,\r\n private userPreferencesService: UserPreferencesService,\r\n private gradebookService: GradebookV10Service,\r\n private gradebookV9Service: GradebookV9Service,\r\n private dialogBox: MatDialogRef,\r\n private filterClass: FilterClass,\r\n private sharedService: SharedService,\r\n private yearService: YearService,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialog: MatDialog\r\n ) {\r\n this.defaultYear = this.yearService.defaultYear;\r\n }\r\n\r\n get sort() {\r\n return this._sort;\r\n }\r\n\r\n @ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.tableData.sort = value;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected dialog data with terms\r\n // POST: initializes the data\r\n this.selectAllCourse = false;\r\n // Setting the injected Properties\r\n if (this.data) {\r\n if (this.data.headerText) {\r\n this.headerText = this.data.headerText;\r\n }\r\n if (this.data.multiselect) {\r\n this.multiselect = this.data.multiselect;\r\n }\r\n }\r\n\r\n // Setting the service properties\r\n this.terms = this.classroomSummaryService.terms;\r\n this.userIsTeacher = this.userService.currentUser.UserIsTeacher;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n if (this.classroomSummaryService.selectedTerm) {\r\n this.selectedTerm = this.classroomSummaryService.selectedTerm;\r\n }\r\n else {\r\n this.selectedTerm = this.terms.find(term => term.Id == 0);\r\n }\r\n\r\n if (this.multiselect) {\r\n this.columns = System.insertAt(this.columns, 'select', 0);\r\n }\r\n if (!this.userIsTeacher) {\r\n this.columns = System.insertAt(this.columns, 'instructor', 4);\r\n }\r\n if (this.V10) {\r\n this.columns = System.insertAt(this.columns, 'profile', 6);\r\n }\r\n if (this.classroomSummaryService.filterData) {\r\n this.filterData = this.classroomSummaryService.filterData;\r\n } else {\r\n this.filterData = new ClassroomSummaryFilter();\r\n }\r\n this.viewOptions = this.classroomSummaryService.viewOptions;\r\n this.selectedTerm = this.classroomSummaryService.selectedTerm;\r\n this.selectedView = this.classroomSummaryService.selectedView;\r\n\r\n // Syncing the data\r\n this.subscriptions.push(\r\n this.classroomSummaryService.observableSelectedTermStream$.subscribe(selectedTerm => {\r\n this.selectedTerm = selectedTerm;\r\n }),\r\n this.classroomSummaryService.observableSelectedViewStream$.subscribe(selectedView => {\r\n this.selectedView = selectedView;\r\n }),\r\n this.classroomSummaryService.observableMyClassesStream$.subscribe(classes => {\r\n if (this.classes == undefined) {\r\n if (this.classroom360Service.gradebookPortalSelected) {\r\n this.disableView = true;\r\n this.selectedView = this.viewOptions.filter(v => v.value.toString() == '3')[0];\r\n this.classes = (this.V10) ? this.classroomSummaryService.gradebookClasses : this.classroomSummaryService.myClasses;\r\n }\r\n else if (this.classroom360Service.attendancePortalSelected) {\r\n this.disableView = true;\r\n this.selectedView = this.viewOptions.filter(v => v.value.toString() == '2')[0];\r\n this.classroomSummaryService.getGradebookAttendanceClasses(false, this.selectedTerm.Id).subscribe((courses) => {\r\n this.classes = courses.filter(course => course.Enrolled > 0);\r\n this.setupCourses();\r\n });\r\n }\r\n else if (this.classroom360Service.courseInfoPortalSelected) {\r\n this.disableView = true;\r\n if (this.selectedView.value.toString() != '1') {\r\n this.selectedView = this.viewOptions.filter(v => v.value.toString() == '1')[0];\r\n this.classroomSummaryService.getClassesWithoutBroadcast(this.defaultYear.Id, this.defaultYear.SchoolID, this.selectedTerm.Id, this.selectedView.value).subscribe((courses) => {\r\n this.classes = courses;\r\n this.setupCourses();\r\n });\r\n }\r\n else {\r\n this.classes = this.classroomSummaryService.myClasses;\r\n }\r\n }\r\n else {\r\n this.classes = classes;\r\n }\r\n if (this.classes) {\r\n this.setupCourses();\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n setupCourses() {\r\n this.selectAllCourse = false;\r\n const ssecIds = [];\r\n for (const course of this.classes) {\r\n ssecIds.push(course.SSEC_ID);\r\n }\r\n if (this.V10) {\r\n this.classroomSummaryService.getCourseProfileExistence(ssecIds).subscribe((result) => {\r\n for (const course of this.classes) {\r\n const courseHasProfile = result.find(profile => profile.SSEC_ID == course.SSEC_ID);\r\n if (courseHasProfile && courseHasProfile.HasProfile) {\r\n course.CourseHasProfile = true;\r\n }\r\n else {\r\n course.CourseHasProfile = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Arranging the table\r\n if (this.V10 == false && this.classroom360Service.gradebookPortalSelected) {\r\n this.tableData.data = this.classes.filter(c => c.UsedForGrading == true);\r\n }\r\n else if (this.V10 == false && this.classroom360Service.attendancePortalSelected) {\r\n this.tableData.data = this.classes.filter(c => c.Enrolled > 0 && c.AttendanceRequired == true);\r\n }\r\n else {\r\n this.tableData.data = this.classes.filter(c => c.Enrolled > 0);\r\n }\r\n this.tableData.filters = (this.classroomSummaryService.classSourceFilters) ? this.classroomSummaryService.classSourceFilters : this.tableData.filters;\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: unsubscribes to all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n save() {\r\n // PRE: the save button is clicked (which means that this is a multiselect)\r\n // POST: checks the number of selected courses.\r\n // If there are some, closes with the list of selected courses\r\n // If there are none, shows a warning dialog\r\n if (this.selectedCourses.length > 0) {\r\n this.dialogBox.close(this.selectedCourses);\r\n } else {\r\n this.dialog.open(NoClassSelectedWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button or the background is clicked\r\n // POST: closes the dialog box\r\n this.classroom360Service.gradebookPortalSelected = false;\r\n this.classroom360Service.attendancePortalSelected = false;\r\n this.classroom360Service.courseInfoPortalSelected = false;\r\n this.dialogBox.close();\r\n }\r\n\r\n filter(filter?: ClassroomSummaryFilter) {\r\n // PRE: the filter button is clicked\r\n // POST: opens the filter\r\n if (filter) {\r\n this.filterData = filter;\r\n this.classroomSummaryService.filterData = filter;\r\n }\r\n if (this.V10 == false && this.classroom360Service.gradebookPortalSelected) {\r\n this.tableData.data = this.filterClass.transform(this.classes.filter(o => o.UsedForGrading == true), this.filterData);\r\n }\r\n else {\r\n this.tableData.data = this.filterClass.transform(this.classes, this.filterData);\r\n }\r\n this.classroomSummaryService.filterChange.emit();\r\n }\r\n\r\n clearFilter() {\r\n // PRE: the clear filter button is clicked (in the filter notification)\r\n // POST: clears out the filter and applies it\r\n // NOTE: We don't need to perform a manual save because the classroom summary filter resets it on each push\r\n Object.assign(this.filterData, new ClassroomSummaryFilter());\r\n this.filter();\r\n }\r\n\r\n setSelectedTerm(selectedTerm: ClassroomTerm) {\r\n // PRE: a selected term change is made\r\n // POST: sets the selected term\r\n this.classroomSummaryService.selectedTerm = selectedTerm;\r\n this.getClasses();\r\n }\r\n\r\n setSelectedView(selectedView: any) {\r\n // PRE: a selected view change is made\r\n // POST: sets the selected view\r\n this.classroomSummaryService.selectedView = selectedView;\r\n this.getClasses();\r\n }\r\n\r\n setSelectAllCourse() {\r\n this.selectAllCourse = !this.selectAllCourse;\r\n\r\n this.selectedCourses = [];\r\n if (this.selectAllCourse == true) {\r\n this.tableData.data.forEach(course => {\r\n this.selectedCourses.push(course);\r\n });\r\n }\r\n }\r\n\r\n selectCourse(course: ClassroomSummary) {\r\n // PRE: a course is selected from the view\r\n // POST: selects a course. If this is a single selection, closes the dialog with that course.\r\n if (this.multiselect) {\r\n const indexOfCourse = this.selectedCourses.indexOf(course);\r\n if (indexOfCourse >= 0) {\r\n this.selectedCourses.splice(indexOfCourse, 1);\r\n } else {\r\n this.selectedCourses.push(course);\r\n }\r\n\r\n if (this.selectedCourses.length == this.tableData.data.length) {\r\n this.selectAllCourse = true;\r\n } else {\r\n this.selectAllCourse = false;\r\n }\r\n } else {\r\n if (this.classroom360Service.gradebookPortalSelected) {\r\n this.classroom360Service.gradebookPortalSelected = false;\r\n this.classroom360Service.attendancePortalSelected = false;\r\n this.classroom360Service.courseInfoPortalSelected = false;\r\n if (this.V10) {\r\n if (course.DataBucket_ID == 0 || course.GT_ID == 0) {\r\n this.gbAccessDeniedDialog = this.dialog.open(GradebookAccessDefinedComponent, { panelClass: 'tyl-mat-dialog', disableClose: true, width: '400px' });\r\n this.gbAccessDeniedDialog.componentInstance.noGradingScale = course.GT_ID == 0;\r\n this.gbAccessDeniedDialog.componentInstance.noGradingType = course.DataBucket_ID == 0;\r\n this.dialogBox.close();\r\n }\r\n else if (!course.GBDisplayConfigExists || !course.GBViewExists) {\r\n this.initGBPrefDialog = this.dialog.open(InitGradebookPreferencesComponent, { panelClass: 'tyl-mat-dialog', disableClose: true, width: '400px' });\r\n this.initGBPrefDialog.componentInstance.course = course;\r\n this.initGBPrefDialog.afterClosed().subscribe(() => {\r\n this.gradebookService.initPreferences = true;\r\n this.dialogBox.close(course);\r\n });\r\n }\r\n }\r\n else {\r\n let portalName = 'Gradebook';\r\n if (this.sharedService.currentPortal != null) {\r\n portalName = this.sharedService.currentPortal.PortalName;\r\n if (portalName == 'Gradebook' && (course.GradeScaleExists == false || course.GradebookAccess == false)) {\r\n const gradebookAccessDeniedDialogRef = this.dialog.open(GradebookAccessDeniedComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '500px',\r\n disableClose: true\r\n });\r\n gradebookAccessDeniedDialogRef.componentInstance.course = course;\r\n this.classroom360Service.gradebookPortalSelected = true;\r\n }\r\n else {\r\n this.gradebookV9Service.clearAllData();\r\n this.gradebookV9Service.course = course;\r\n if (!this.V10) {\r\n if (portalName == 'Report Card Grades' || this.userPreferencesService.gradebookV9SelectionPreferences.SelectedMainTab == 'ReportCardGrades') {\r\n this.gradebookV9Service.selectedTab = 'Report Card Grades';\r\n }\r\n else if (this.userPreferencesService.gradebookV9SelectionPreferences.SelectedMainTab == 'Indicators') {\r\n this.gradebookV9Service.selectedTab = 'Scores';\r\n }\r\n else {\r\n this.gradebookV9Service.selectedTab = this.userPreferencesService.gradebookV9SelectionPreferences.SelectedMainTab;\r\n }\r\n this.gradebookV9Service.nonScoreStandard = this.userPreferencesService.gradebookV9SelectionPreferences.ShowNonScoredStandards;\r\n }\r\n else {\r\n this.gradebookV9Service.selectedTab = portalName == 'Gradebook' ? 'Scores' : 'Report Card Grades';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.dialogBox.close(course);\r\n }\r\n }\r\n }\r\n\r\n // Methods\r\n filtered() {\r\n // POST: returns true if the data is being panelFiltered\r\n const filter = this.filterData;\r\n if (!filter) {\r\n return false;\r\n }\r\n if (!filter.AttStatusNone || !filter.AttStatusPartial || !filter.AttStatusAll || !filter.AttStatusPerfect || !filter.GradingNone ||\r\n !filter.GradingPartial || !filter.GradingAll || !filter.RCGNone || !filter.RCGAll || !filter.RCGEx) {\r\n return true;\r\n }\r\n else if ((filter.Meets != undefined && filter.Meets.length > 0) || (filter.Term != undefined && filter.Term.length > 0) ||\r\n (filter.CourseSection != undefined && filter.CourseSection.length > 0) || (filter.CourseName != undefined && filter.CourseName.length > 0)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n getClasses(): void {\r\n // POST: gets the classes from the server\r\n this.classroomSummaryService.getClassesWithoutBroadcast(this.defaultYear.Id, this.defaultYear.SchoolID, this.selectedTerm.Id, Number(this.selectedView.value)).subscribe((courses) => {\r\n this.classes = courses;\r\n this.setupCourses();\r\n });\r\n }\r\n}\r\n","\r\n
Add Link
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n Open using HTTPS\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n","import { Component, Host, HostBinding, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { Link, NewLink } from '../link.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-add-link',\r\n templateUrl: './add-link.component.html'\r\n})\r\nexport class AddLinkComponent implements OnInit {\r\n @HostBinding('class.sis-app-root') sisAppRoot: Host = true;\r\n linkName: string;\r\n linkUrl: string;\r\n V10: boolean;\r\n usingHttps = false;\r\n addLinkForm: FormGroup;\r\n nameErrorMessage = 'Required Field';\r\n constructor(private loginService: LoginService, private dialogRef: MatDialogRef, private userService: UserService, private yearService: YearService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.addLinkForm = new FormGroup({\r\n 'name': new FormControl(null, [\r\n Validators.required,\r\n Validators.maxLength(50)\r\n ]),\r\n 'url': new FormControl(null, [\r\n Validators.required,\r\n ])\r\n });\r\n this.onChanges();\r\n }\r\n\r\n onChanges(): void {\r\n this.addLinkForm.valueChanges.subscribe(val => {\r\n this.linkName = val['name'];\r\n this.linkUrl = val['url'];\r\n if (this.linkName && this.linkName.length > 50) {\r\n this.nameErrorMessage = 'Name must be 50 characters or less';\r\n } else {\r\n this.nameErrorMessage = 'Required Field';\r\n }\r\n });\r\n }\r\n\r\n cancelClick() {\r\n // POST: Close Dialog\r\n this.dialogRef.close();\r\n }\r\n\r\n saveClick() {\r\n if (this.addLinkForm.invalid) {\r\n // mark controls as touched\r\n this.addLinkForm.controls['name'].markAsTouched();\r\n this.addLinkForm.controls['url'].markAsTouched();\r\n } else {\r\n // POST: Create new link, Post to the server, update links stored in service, close the dialog\r\n const link: NewLink = new NewLink();\r\n link.Description = this.linkName;\r\n link.Id = -1;\r\n link.LinkToolTip = '';\r\n link.OpenAsHTTPS = this.usingHttps;\r\n link.OpenAsNewWindow = false;\r\n link.QuickJumpDescription = '';\r\n link.Sequence = 0;\r\n link.WebAddress = this.linkUrl;\r\n this.userService.saveLink(link).subscribe(response => {\r\n }, err => {\r\n console.log(err);\r\n }, () => {\r\n // Get the new set of links\r\n if (this.V10) {\r\n this.getUserLinks(this.userService.userId, this.yearService.defaultYear.AYIdentifier);\r\n }\r\n else {\r\n this.getUserLinks(0, this.yearService.defaultYear.Id);\r\n }\r\n });\r\n }\r\n }\r\n\r\n getUserLinks(id: number, yearId: any) {\r\n const linkList: Link[] = [];\r\n if (this.V10) {\r\n // v10\r\n if (this.userService.userType != 1) {\r\n // Parent/Student\r\n this.userService.getParentStudentLinks(id, yearId).subscribe(response => {\r\n // create a new link object for each object in the response body\r\n if (response.body != null) {\r\n for (let i = 0; i < response.body.length; i++) {\r\n const bLink = response.body[i];\r\n const link = new Link();\r\n link.LinkName = bLink.Description;\r\n link.Link_ID = bLink.Id;\r\n link.OpenAsHTTPS = bLink.OpenAsHTTPS;\r\n link.OpenAsNewWindow = bLink.OpenAsNewWindow;\r\n link.LinkUrl = bLink.WebAddress;\r\n link.IsDistrictLevel = 'Yes';\r\n linkList.push(link);\r\n }\r\n this.userService.links = linkList;\r\n }\r\n });\r\n } else {\r\n // Staff\r\n this.userService.getLinks(id, 0, yearId).subscribe(response => {\r\n this.userService.links = response.body;\r\n });\r\n }\r\n } else {\r\n // v9\r\n this.userService.getParentStudentLinks(id, yearId).subscribe(response => {\r\n // create a new link object for each object in the response body\r\n if (response.body != null) {\r\n for (let i = 0; i < response.body.length; i++) {\r\n const bLink = response.body[i];\r\n const link = new Link();\r\n link.LinkName = bLink.Description;\r\n link.Link_ID = bLink.Id;\r\n link.OpenAsHTTPS = bLink.OpenAsHTTPS;\r\n link.OpenAsNewWindow = bLink.OpenAsNewWindow;\r\n link.LinkUrl = bLink.WebAddress;\r\n link.IsDistrictLevel = 'No';\r\n linkList.push(link);\r\n }\r\n this.userService.links = linkList;\r\n }\r\n });\r\n }\r\n this.dialogRef.close();\r\n }\r\n}\r\n","export class Link {\r\n DistrictLink_ID: number;\r\n IconType: string;\r\n IsDistrictLevel: string;\r\n IsOneSISTile: string;\r\n LinkFormatted: string;\r\n LinkName: string;\r\n LinkOrder: number;\r\n LinkToolTip: string;\r\n LinkUrl: string;\r\n Link_ID: number;\r\n Mem_ID: number;\r\n OpenAsHTTPS: boolean;\r\n OpenAsNewWindow: boolean;\r\n TileColor: string;\r\n TileImageFile: string;\r\n}\r\n\r\nexport class NewLink {\r\n Description: string;\r\n Id: number;\r\n LinkToolTip: string;\r\n OpenAsHTTPS: any;\r\n OpenAsNewWindow: any;\r\n QuickJumpDescription: string;\r\n Sequence: number;\r\n WebAddress: string;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from '../../../shared-components/System';\r\nimport { Team } from '../../../student360/teams/team.model';\r\nimport { StaffCardPreferences } from './staff-card-settings/staff-card-preferences.model';\r\nimport { EFormInstance } from '../../../shared-components/e-forms/e-form-instance.model';\r\nimport * as moment from 'moment';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { StaffWork } from './staff-work-card/staff-work.model';\r\n\r\n@Injectable()\r\nexport class StaffCardsService {\r\n\r\n cardPreferences: StaffCardPreferences;\r\n surveyCardShowCountsForAllSchools = false;\r\n SurveyCardGetMostRecent = false;\r\n SurveyCardStartDateByDate: moment.Moment;\r\n SurveyCardStartDateByRange: moment.Moment;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n ) {\r\n }\r\n\r\n getAbsencesByCourseCard(numberOfAbsences: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetAbsenceByCourseCard?yearId=' + this.yearService.defaultYear.Id + '&siteId=' + this.yearService.defaultYear.SchoolID + '&numberOfAbsences=' + numberOfAbsences);\r\n }\r\n\r\n getRecentBehaviorCard(date): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetRecentBehaviorCard?yearId=' + this.yearService.defaultYear.Id + '&siteId=' + this.yearService.defaultYear.SchoolID + '&date=' + date);\r\n }\r\n\r\n getStaffTeamsCard(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetStaffTeamsCard?yearId=' + this.yearService.defaultYear.Id + '&siteId=' + this.yearService.defaultYear.SchoolID);\r\n }\r\n\r\n getSchoolsTodayCard(fromDate: string, toDate: string, siteYearId: number = 0, includeProjected: boolean = false): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetSchoolsTodayCard?yearId=' + this.yearService.defaultYear.Id + '&fromDate=' + fromDate + '&toDate=' + toDate + '&siteYearId=' + siteYearId + '&includeProjected=' + includeProjected);\r\n }\r\n\r\n getProgramEnrollmentCard(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetProgramEnrollmentCard?yearId=' + this.yearService.defaultYear.Id + '&siteId=' + this.yearService.defaultYear.SchoolID);\r\n }\r\n\r\n getStaffWorkCard(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetStaffWorkCard?yearId=' + this.yearService.defaultYear.Id + '&siteId=' + this.yearService.defaultYear.SchoolID);\r\n }\r\n\r\n getEFormSurveysForStaffCard(yearId: number, schoolId: number, showCountsForAllSchools: boolean, getMostRecent: boolean, startDate: string): Observable {\r\n const queryString = '?yearId=' + yearId +\r\n '&schoolId=' + schoolId +\r\n '&showCountsForAllSchools=' + showCountsForAllSchools +\r\n '&getMostRecent=' + getMostRecent +\r\n '&startDate=' + startDate;\r\n return this.http.get(System.apiURL.Admin + 'GetEFormSurveysForStaffCard' + queryString);\r\n }\r\n\r\n getUpcomingBirthdaysCard() {\r\n return this.http.get(System.apiURL.Classroom + 'GetUpcomingBirthdaysCard?yearId=' + this.yearService.defaultYear.Id);\r\n }\r\n\r\n}","\r\n
\r\n\tAdd Student List\r\n\tEdit Student List\r\n\tView Student List\r\n
\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\r\n \r\n
\r\n You must take ownership to edit the list.\r\n
\r\n\r\n \r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\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\t\t{{type.CodeDescription}}\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\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{scope.CodeDescription}}\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 \r\n \r\n Active\r\n \r\n \r\n Inactive\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n \r\n \r\n
\r\n {{studentList.OwnerLastName}}, {{studentList.OwnerFirstName}}\r\n  \r\n \r\n
\r\n\t
\r\n\r\n\t\r\n
\r\n \r\n\r\n \r\n \r\n \r\n Student #\r\n \r\n \r\n \r\n {{student.StudentNumber}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Name\r\n \r\n \r\n \r\n {{student.formattedName(generalPreferences)}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Delete\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\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\tAvailable to \r\n \r\n Selected Students\r\n \r\n\t\t\r\n\t\t\tSelected Sites\r\n\t\t\r\n\t
\r\n
\r\n","import {Component, ElementRef, EventEmitter, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport {StudentList} from '../student-list.model';\r\nimport {Student} from '../../../shared-components/student/student.model';\r\nimport {TylerMatTableDataSource} from '../../../shared-components/angular-material/extended.class';\r\nimport {LoginService} from '../../../shared-modules/login/login.service';\r\nimport {GeneralPreferences} from '../../../shared-components/user-preferences/general-preferences.model';\r\nimport {UserPreferencesService} from '../../../shared-components/user-preferences/user-preferences.service';\r\nimport {System} from '../../../shared-components/System';\r\nimport {Subscription} from 'rxjs';\r\nimport {StudentListsService} from '../student-lists.service';\r\nimport {ErrorList} from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport {NgForm} from '@angular/forms';\r\nimport {SharedService} from '../../../shared-components/shared.service';\r\nimport {LookupService} from '../../../shared-components/lookup/lookup.service';\r\nimport {Lookup} from '../../../shared-components/lookup/lookup.model';\r\nimport { SelectedSitesDialogComponent } from '../../../shared-components/controls/selected-sites-dialog/selected-sites-dialog.component';\r\nimport {UserService} from '../../../shared-components/user/user.service';\r\nimport {Staff} from '../../../shared-components/staff-search/staff.model';\r\nimport * as _ from 'lodash';\r\nimport {SecurityService} from '../../../shared-components/security/security.service';\r\nimport {take} from 'rxjs/operators';\r\nimport {StaffSearchService} from '../../../shared-components/staff-search/staff-search.service';\r\nimport {YearService} from '../../../shared-components/year/year.service';\r\nimport { SelectedSite } from '../../../shared-components/controls/selected-sites-dialog/selected-site';\r\nimport {StaffSearchComponent} from '../../../shared-components/staff-search/staff-search.component';\r\n\r\n@Component({\r\n\tselector: 'app-add-edit-student-list-dialog',\r\n\ttemplateUrl: './add-edit-student-list-dialog.component.html',\r\n\tstyleUrls: ['./add-edit-student-list-dialog.component.css']\r\n})\r\nexport class AddEditStudentListDialogComponent implements OnInit, OnDestroy {\r\n\r\n\t// Injected Properties\r\n\teditMode = false;\r\n\taddMode = false;\r\n\tinjectedStudents: Student[] = [];\r\n\tstudentList = new StudentList();\r\n\tdisableStudents = false;\r\n allowCreateDistrictLists = false;\r\n allowCreateSchoolLists = false;\r\n staffId: number;\r\n staff: Staff[];\r\n admin: boolean;\r\n\r\n\t// Interface properties\r\n\tstudentEmitter = new EventEmitter();\r\n\tsearchEmitter = new EventEmitter();\r\n\r\n\t// Properties\r\n\toriginalList = new StudentList();\r\n\tV10: boolean;\r\n\tgeneralPreferences: GeneralPreferences;\r\n\tsubscriptions: Subscription[] = [];\r\n\tinitialStudents: Student[] = [];\r\n\terrors: ErrorList[] = [];\r\n\t@ViewChild('nameField', { read: ElementRef, static: true }) nameField: ElementRef;\r\n\t@ViewChild('descriptionField', { read: ElementRef, static: true }) descriptionField: ElementRef;\r\n\t@ViewChild('form', { read: NgForm, static: true }) form: NgForm;\r\n\ttypes: Lookup[] = [];\r\n\tscopes: Lookup[] = [];\r\n\townerNotInStaff = false;\r\n\tinitialOwnerId = 0;\r\n\r\n\t// Table Properties\r\n\ttableData = new TylerMatTableDataSource();\r\n\tprivate _sort: MatSort;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate loginService: LoginService,\r\n\t\tprivate userPreferencesService: UserPreferencesService,\r\n\t\tprivate studentListsService: StudentListsService,\r\n\t\tprivate sharedService: SharedService,\r\n\t\tprivate lookupService: LookupService,\r\n private userService: UserService,\r\n private securityService: SecurityService,\r\n private staffSearchService: StaffSearchService,\r\n private yearService: YearService\r\n\t) { }\r\n\r\n\tget sort(): MatSort {\r\n\t\treturn this._sort;\r\n\t}\r\n\r\n\t@ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n\t\tthis._sort = value;\r\n\t\tthis.tableData.sort = value;\r\n\t}\r\n\r\n\tget viewMode() {\r\n\t\treturn !this.editMode && !this.addMode;\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\t\tthis.generalPreferences = this.userPreferencesService.generalPreferences;\r\n\r\n\t\t// Helper for handling properties\r\n let currentOwner: Staff;\r\n const handleStaff = (staff: Staff[]) => {\r\n this.staff = _.cloneDeep(staff);\r\n this.staff.sort((a, b) => {\r\n if (a.LastName.localeCompare(b.LastName) != 0) {\r\n return a.LastName.trim().localeCompare(b.LastName.trim());\r\n } else {\r\n return a.FirstName.trim().localeCompare(b.FirstName.trim());\r\n }\r\n });\r\n this.ownerNotInStaff = true;\r\n this.staff.forEach(staffMember => {\r\n if (staffMember.StaffId == this.staffId) {\r\n this.ownerNotInStaff = false;\r\n }\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t// For all new lists, the owner should be defaulted to the current user\r\n\t\t\tif (this.studentList.ID <= 0) {\r\n\t\t\t\tthis.studentList.Owner = this.staffId;\r\n\t\t\t\tthis.studentList.OwnerFirstName = this.userService.currentUser.FirstName;\r\n\t\t\t\tthis.studentList.OwnerMiddleName = this.userService.currentUser.MiddleName;\r\n\t\t\t\tthis.studentList.OwnerLastName = this.userService.currentUser.LastName;\r\n\t\t\t}\r\n\r\n // If the staff does not contain the owner of the list, add that to the list so it can show and be reverted\r\n if ((this.editMode && this.V10) || (!this.V10)) {\r\n currentOwner = this.staff.find(o => o.StaffId == this.studentList.Owner);\r\n if (currentOwner == null && this.staffId > 0) {\r\n currentOwner = new Staff();\r\n currentOwner.StaffId = this.studentList.Owner;\r\n currentOwner.FirstName = this.studentList.OwnerFirstName;\r\n currentOwner.MiddleName = this.studentList.OwnerMiddleName;\r\n currentOwner.LastName = this.studentList.OwnerLastName;\r\n this.staff.push(currentOwner);\r\n this.staff.sort((a: Staff, b: Staff) => {\r\n const lastNameCompare = a.LastName.localeCompare(b.LastName);\r\n const firstNameCompare = a.FirstName.localeCompare(b.FirstName);\r\n if (lastNameCompare != 0) {\r\n return lastNameCompare;\r\n } else {\r\n return firstNameCompare;\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n\t\t// Setting injected properties\r\n\t\tif (this.data) {\r\n\t\t\tthis.editMode = this.data.editMode;\r\n\t\t\tthis.addMode = this.data.addMode;\r\n\t\t\tthis.injectedStudents = this.data.students;\r\n\t\t\tthis.disableStudents = this.data.disableStudents;\r\n\t\t\tif (this.data.studentList) {\r\n\t\t\t\tthis.studentList = this.data.studentList.duplicate();\r\n this.initialOwnerId = this.studentList.Owner;\r\n\t\t\t}\r\n\t\t\tthis.allowCreateDistrictLists = this.data.allowCreateDistrictLists;\r\n\t\t\tthis.allowCreateSchoolLists = this.data.allowCreateSchoolLists;\r\n\t\t\tthis.staffId = this.data.staffId;\r\n\t\t\tif (this.data.staff) {\r\n handleStaff(this.data.staff);\r\n }\r\n\t\t\tthis.admin = this.data.admin;\r\n\t\t}\r\n\r\n\t\t// Obtaining staff and staffId if it is not provided\r\n // NOTE: we must check undefined here because admins deliberately use 0\r\n if (this.staffId == undefined) {\r\n this.loginService.getStaffIdByUserId().pipe(take(1)).subscribe(staffId => {\r\n this.staffId = staffId;\r\n if (this.studentList.ID <= 0) {\r\n this.studentList.Owner = this.staffId;\r\n }\r\n });\r\n }\r\n if (!this.staff || this.staff.length == 0) {\r\n this.staffSearchService.getStaffSearch(\r\n -1,\r\n this.yearService.defaultYear ? this.yearService.defaultYear.Id : this.yearService.loginYear.Id,\r\n true,\r\n '',\r\n '',\r\n '',\r\n this.yearService.schools.map(o => o.Id),\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n true\r\n ).pipe(take(1)).subscribe(\r\n staff => {\r\n handleStaff(staff);\r\n }\r\n );\r\n }\r\n\r\n\t\t// Checking permission properties if they were not injected\r\n const permissions = this.securityService.userPermissions;\r\n permissions.forEach(permission => {\r\n switch (permission.PrivilegeId) {\r\n case 2230:\r\n this.allowCreateDistrictLists = true;\r\n break;\r\n case 2229:\r\n this.allowCreateSchoolLists = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n\t\t// Setting up interface\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.studentEmitter.subscribe(students => {\r\n\t\t\t\tif (students) {\r\n\t\t\t\t\tfor (let i = 0; i < students.length; i++) {\r\n\t\t\t\t\t\tstudents[i] = System.convert(students[i], new Student());\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.studentList.Students = students;\r\n\t\t\t\t\tthis.tableData.data = this.studentList.Students;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\t// Obtaining types and scopes\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.lookupService.getStudentListScopes().subscribe(scopes => {\r\n\t\t\t\tthis.scopes = scopes;\r\n\t\t\t}),\r\n\t\t\tthis.lookupService.getStudentListTypes().subscribe(types => {\r\n\t\t\t\tthis.types = types;\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\t// Setting initial student list properties\r\n\t\tObject.assign(this.originalList, this.studentList);\t// We must do this before we mess with the student list at all\r\n\t\tif (this.addMode) {\r\n\t\t\tthis.studentList.Students = this.injectedStudents;\r\n\t\t}\r\n\t\tif (this.studentList.Students && this.studentList.Students.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.studentList.Students.length; i++) {\r\n\t\t\t\tthis.initialStudents.push(this.studentList.Students[i]);\r\n\t\t\t}\r\n\t\t} else if (!this.addMode) {\r\n\t\t\tthis.studentList.Students = [];\r\n\t\t\tthis.subscriptions.push(\r\n\t\t\t\tthis.studentListsService.getStudentList(this.studentList.ID).subscribe(studentList => {\r\n\t\t\t\t\tif (studentList) {\r\n\t\t\t\t\t\tif (studentList.Students) {\r\n\t\t\t\t\t\t\tthis.studentList.Students = studentList.Students;\r\n\t\t\t\t\t\t\tfor (let i = 0; i < this.studentList.Students.length; i++) {\r\n\t\t\t\t\t\t\t\tthis.studentList.Students[i] = System.convert(this.studentList.Students[i], new Student());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.initialStudents = this.studentList.Students;\r\n\t\t\t\t\t\t\tthis.tableData.data = this.studentList.Students;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (studentList.SchoolIds) {\r\n this.studentList.SchoolIds = studentList.SchoolIds;\r\n }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.sharedService.showBadSnackbar('Data failed to load');\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\tif (!this.studentList.Access) {\r\n\t\t this.studentList.Access = 'Private';\r\n }\r\n\r\n\t\t// Setting up student table\r\n\t\tthis.tableData.data = this.studentList.Students;\r\n\t\tthis.tableData.sortingDataAccessor = (data: Student, sortHeaderId: string): string|number => {\r\n\t\t\tswitch (sortHeaderId) {\r\n\t\t\t\tcase 'number':\r\n\t\t\t\t\treturn data.StudentNumber;\r\n\t\t\t\tcase 'name':\r\n\t\t\t\t\treturn data.formattedName(this.generalPreferences);\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif (data[sortHeaderId] instanceof Date) {\r\n\t\t\t\t\t\treturn data[sortHeaderId].getTime();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn this.tableData.defaultSortingAccessor(data, sortHeaderId);\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscriptions.forEach(subscription => {\r\n\t\t\tsubscription.unsubscribe();\r\n\t\t});\r\n\t}\r\n\r\n\tsave() {\r\n\t\t// PRE: the save button is clicked\r\n\t\t// POST: validates the data. If valid, saves.\r\n\t\tthis.validate();\r\n\t\tif (this.V10 == false && this.studentList.Owner == 0) {\r\n\t\t\tthis.studentList.Owner = this.staff.find(o => o.FirstName == 'sdmadmin' && o.LastName == 'sdmadmin').StaffId;\r\n\t\t}\r\n\t\tif (this.errors.length == 0) {\r\n\t\t\tthis.subscriptions.push(\r\n\t\t\t\tthis.studentListsService.saveStudentList(this.studentList).subscribe(id => {\r\n\t\t\t\t\tif (id < 0) {\r\n\t\t\t\t\t\tthis.sharedService.showBadSnackbar();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.studentList.ID = id;\r\n\t\t\t\t\t\tconst owner = this.staff.find(o => o.StaffId == this.studentList.Owner);\r\n if (owner != null) {\r\n this.studentList.OwnerLastName = owner.LastName;\r\n this.studentList.OwnerFirstName = owner.FirstName;\r\n this.studentList.OwnerMiddleName = owner.MiddleName;\r\n }\r\n\t\t\t\t\t\tthis.dialogBox.close(this.studentList);\r\n\t\t\t\t\t\tthis.sharedService.showGoodSnackbar();\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\tcancel() {\r\n\t\t// PRE: the cancel or close button is clicked\r\n\t\t// POST: resets the student list and closes the dialog box\r\n\t\tObject.assign(this.studentList, this.originalList);\r\n\t\tthis.studentList.Students = this.initialStudents;\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\tselectedSitesClick() {\r\n\t\t// PRE: the selected sites link is clicked\r\n\t\t// POST: opens the selected sites\r\n\t\tconst selectedSites: SelectedSite[] = [];\r\n\t\tthis.studentList.SchoolIds.forEach(o => {\r\n\t\t\t\t\tconst ss = new SelectedSite();\r\n\t\t\t\t\tss.Id = o;\r\n\t\t\t\t\tselectedSites.push(ss);\r\n\t\t\t\t});\r\n // Opening the modal\r\n\t\tconst selectedSitesDialogBox = this.dialog.open(SelectedSitesDialogComponent, {\r\n\t\t\tdisableClose: true,\r\n\t\t\twidth: '700px',\r\n\t\t\tdata: {\r\n\t\t\t\tselectedSites: selectedSites,\r\n viewOnly: this.viewMode || !this.allowCreateSchoolLists\r\n\t\t\t}\r\n\t\t});\r\n\t\tselectedSitesDialogBox.afterClosed().subscribe((results: SelectedSite[]) => {\r\n\t\t\tif (results) {\r\n\t\t\t\tthis.studentList.SchoolIds = results.map(o => o.Id);\r\n\t\t\t}\r\n\t\t\t// console.log(this.studentList);\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteStudent(student: Student) {\r\n\t\t// PRE: a student's delete link is clicked\r\n\t\t// POST: removes the student from the student list\r\n\t\tif (!this.viewMode && !this.disableStudents) {\r\n\t\t\tthis.studentList.Students.splice(this.studentList.Students.indexOf(student), 1);\r\n\t\t\tthis.tableData.data = this.studentList.Students;\r\n\t\t}\r\n\t}\r\n\r\n\tchangeStudents() {\r\n\t\t// PRE: the change student button is clicked\r\n\t\t// POST: opens the student search dialog to change the selected students\r\n\t\tthis.searchEmitter.emit({\r\n\t\t\tperformRoute: false,\r\n\t\t\treturnSelectedStudents: true,\r\n\t\t\tsearchAndSelect: true,\r\n\t\t\tselectedStudents: this.studentList.Students,\r\n creatingStudentList: true\r\n\t\t});\r\n\t}\r\n\r\n\tselectStaff() {\r\n\t // PRE: the SELECT STAFF button is clicked\r\n // POST: opens the staff search dialog to change the owner\r\n if (!this.viewMode) {\r\n const dialogBox = this.dialog.open(StaffSearchComponent, {\r\n disableClose: true,\r\n maxWidth: '100vw',\r\n maxHeight: '100vh',\r\n width: '100vw',\r\n height: '100vh',\r\n data: {\r\n searchAndSelect: false\r\n }\r\n });\r\n dialogBox.afterClosed().pipe(take(1)).subscribe((staff: Staff) => {\r\n if (staff) {\r\n this.studentList.Owner = staff.StaffId;\r\n this.studentList.OwnerFirstName = staff.FirstName;\r\n this.studentList.OwnerMiddleName = staff.MiddleName;\r\n this.studentList.OwnerLastName = staff.LastName;\r\n }\r\n });\r\n }\r\n }\r\n\r\n\t// Methods\r\n getHint(currentValue: string, maxLength: number) {\r\n\t return (maxLength - (currentValue ? currentValue.length : 0)).toString() + ' characters left';\r\n }\r\n\r\n getDisabled() {\r\n\t return this.viewMode || this.staffId != this.studentList.Owner;\r\n }\r\n\r\n\tvalidate() {\r\n\t\t// POST: sets up the errors\r\n\r\n\t\t// Resetting errors\r\n\t\tthis.errors = [];\r\n\r\n\t\t// Triggering field validation\r\n\t\tSystem.forceUpdateValidity(this.form);\r\n\r\n\t\t// Name is required\r\n\t\tif (!this.studentList.Name) {\r\n\t\t\tthis.errors.push({\r\n\t\t\t\tfieldName: 'Name',\r\n\t\t\t\tfieldRef: this.nameField,\r\n\t\t\t\terrorMsg: 'Required field.'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Description is required\r\n\t\tif (!this.studentList.Description) {\r\n\t\t\tthis.errors.push({\r\n\t\t\t\tfieldName: 'Description',\r\n\t\t\t\tfieldRef: this.descriptionField,\r\n\t\t\t\terrorMsg: 'Required field.'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Status is required\r\n\t\tif (this.studentList.Status == null) {\r\n\t\t\tconst element = new ElementRef(document.getElementById('statusActiveRadio'));\r\n\t\t\tthis.errors.push({\r\n\t\t\t\tfieldName: 'Status',\r\n\t\t\t\tfieldRef: element,\r\n\t\t\t\terrorMsg: 'Required field.'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Access is required\r\n\t\tif (!this.studentList.Access) {\r\n\t\t\tconst element = new ElementRef(document.getElementById('accessPrivateRadio'));\r\n\t\t\tthis.errors.push({\r\n\t\t\t\tfieldName: 'Access',\r\n\t\t\t\tfieldRef: element,\r\n\t\t\t\terrorMsg: 'Required field.'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// If access is public within school, sites are required\r\n\t\tif (this.studentList.Access == 'Public within School' &&\r\n\t\t\t(!this.studentList.SchoolIds || this.studentList.SchoolIds.length < 1)) {\r\n\t\t\tthis.errors.push({\r\n\t\t\t\tfieldName: 'Selected Sites',\r\n\t\t\t\tfieldRef: null,\r\n\t\t\t\terrorMsg: 'A site must be selected if the list is public within school.'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// At least one student must be present\r\n\t\tif (!this.studentList.Students || this.studentList.Students.length < 1) {\r\n\t\t\tthis.errors.push({\r\n\t\t\t\tfieldName: 'Students',\r\n\t\t\t\tfieldRef: null,\r\n\t\t\t\terrorMsg: 'At least one student must be a part of the list.'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import { Student } from '../../shared-components/student/student.model';\r\n\r\nexport class StudentList {\r\n\r\n\t// Properties\r\n\tID = -1;\r\n\tName: string;\r\n\tDescription: string;\r\n\tStatus = true;\r\n\tAccess: string;\r\n\tOwner: number;\r\n\tOwnerFirstName: string;\r\n\tOwnerMiddleName: string;\r\n\tOwnerLastName: string;\r\n\tAddedBy: number;\r\n\tAddedOn: Date;\r\n\tLastUpBy: number;\r\n\tLastUpOn: Date;\r\n\tDelBy: number;\r\n\tDelOn: Date;\r\n\tType: string;\r\n\tSchoolIds: number[] = [];\r\n\tScope: string;\r\n\tStudents: Student[];\r\n\r\n\t// Non DTO fields\r\n Selected = false;\r\n IsSelectedForMassEmail: boolean;\r\n MassEmailStudents: any[];\r\n listStudentsCheckAll: boolean;\r\n\r\n\t// Methods\r\n\tduplicate() {\r\n\t\tconst duplicate = new StudentList();\r\n\t\tObject.assign(duplicate, this);\r\n\t\treturn duplicate;\r\n\t}\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {StudentList} from './student-list.model';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {System} from '../../shared-components/System';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport {map} from 'rxjs/operators';\r\nimport {Observable} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StudentListsService {\r\n\r\n // Constructor\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService\r\n ) {\r\n }\r\n\r\n // Methods\r\n public getStudentLists(forAdmin = false, schoolId = this.yearService.defaultYear.SchoolID): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&schoolId=' + schoolId +\r\n '&forAdmin=' + forAdmin;\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentLists' + queryString).pipe(\r\n map(lists => {\r\n if (lists) {\r\n for (let i = 0; i < lists.length; i++) {\r\n lists[i] = System.convert(lists[i], new StudentList());\r\n }\r\n }\r\n return lists;\r\n })\r\n );\r\n }\r\n\r\n public getStudentList(listId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&listId=' + listId;\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentList' + queryString).pipe(\r\n map(list => {\r\n return System.convert(list, new StudentList());\r\n })\r\n );\r\n }\r\n\r\n public saveStudentList(studentList: StudentList): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Classroom + 'SaveStudentList' + queryString, studentList);\r\n }\r\n\r\n public deleteStudentList(listId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&listId=' + listId;\r\n return this.http.get(System.apiURL.Classroom + 'DeleteStudentList' + queryString);\r\n }\r\n\r\n getStudentListSchoolIds(listId: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + `GetStudentListSchoolIds?listId=${listId}`, { observe: 'response' });\r\n }\r\n}\r\n","\r\n

\r\n\t\r\n\t\tAdd Entry\r\n\t\r\n\t\r\n\t\tEdit Entry\r\n\t\r\n\t\r\n\t\t-\r\n\t\t\r\n\t\t\t\r\n\t\t\t[#{{note.StudentNumber}}]\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tMultiple Students\r\n\t\t\t\r\n\t\t\r\n\t\r\n

\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\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{{category.Code}}\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\t\t\r\n\t\t\r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Active\r\n \r\n \r\n Inactive\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n\t\t\r\n\t\t\r\n\t\t\tDisplay as Bold\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\tClassroom Note (will be shown as an alert)\r\n\t\t\r\n\t
\r\n
\r\n\r\n\r\n\r\n\r\n\t\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\r\n","import {Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport {StudentNote} from '../student-note.model';\r\nimport {StudentNoteCategory} from '../student-note-category.model';\r\nimport {System} from '../../../shared-components/System';\r\nimport {ErrorList} from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport {StudentNotesService} from '../student-notes.service';\r\nimport {LoginService} from '../../../shared-modules/login/login.service';\r\nimport {Student} from '../../../shared-components/student/student.model';\r\nimport {StudentsToAddDialogComponent} from '../../../shared-components/students-to-add-dialog/students-to-add-dialog.component';\r\nimport {Subscription} from 'rxjs';\r\nimport {UserService} from '../../../shared-components/user/user.service';\r\nimport * as moment from 'moment';\r\nimport {YearService} from '../../../shared-components/year/year.service';\r\n\r\n@Component({\r\n selector: 'add-edit-note-dialog',\r\n templateUrl: './add-edit-note-dialog.component.html',\r\n styleUrls: [\r\n './add-edit-note-dialog.component.css'\r\n ]\r\n})\r\nexport class AddEditNoteDialogComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n note: StudentNote;\r\n addNote: boolean;\r\n categories: StudentNoteCategory[] = [];\r\n junkDate = System.junkDate;\r\n multiAdd: boolean;\r\n multiStudents: Student[];\r\n\r\n // Local Properties\r\n errors: ErrorList[] = [];\r\n @ViewChild('categoryField', { read: ElementRef }) categoryField: ElementRef;\r\n @ViewChild('noteField', { read: ElementRef }) noteField: ElementRef;\r\n @ViewChild('orderField', { read: ElementRef }) orderField: ElementRef;\r\n @ViewChild('statusField', { read: ElementRef }) statusField: ElementRef;\r\n @ViewChild('startDateField', { read: ElementRef }) startDateField: ElementRef;\r\n @ViewChild('endDateField', { read: ElementRef }) endDateField: ElementRef;\r\n originalNote = new StudentNote();\r\n V10: boolean;\r\n subscriptions: Subscription[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n private studentNoteService: StudentNotesService,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private userSerivce: UserService,\r\n private yearService: YearService\r\n ) {\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n\r\n // Getting injected data\r\n if (this.data) {\r\n this.note = this.data.note;\r\n this.addNote = this.data.addNote;\r\n this.categories = this.data.categories;\r\n this.multiAdd = this.data.multiAdd;\r\n this.multiStudents = this.data.multiStudents;\r\n }\r\n if (!this.categories) {\r\n this.subscriptions.push(\r\n this.studentNoteService.getStudentNotesCategories().subscribe(categories => {\r\n this.categories = categories;\r\n })\r\n );\r\n }\r\n if (!this.note && (!this.multiAdd || !this.multiStudents)) {\r\n console.log('No student provided');\r\n }\r\n if (this.multiAdd) {\r\n this.note = new StudentNote();\r\n this.note.StartDate = null;\r\n this.note.EndDate = null;\r\n }\r\n\r\n // Setting up the local data\r\n Object.assign(this.originalNote, this.note);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n notePaste() {\r\n // PRE: text is pasted into the note\r\n // POST: truncates the text\r\n }\r\n\r\n save() {\r\n // PRE: the save button is clicked\r\n // POST: saves the note(s) and closes the dialog box\r\n // NOTE: closing with true here means there are new notes\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n\r\n // Adding multiple notes\r\n if (this.multiAdd) {\r\n\r\n // Creating student notes for each student\r\n const notes: StudentNote[] = [];\r\n this.multiStudents.forEach(student => {\r\n const note = new StudentNote();\r\n Object.assign(note, this.note);\r\n note.StudentID = student.Id;\r\n note.StudentNumber = student.StudentNumber;\r\n note.FirstName = student.FirstName;\r\n note.MiddleName = student.MiddleName;\r\n note.LastName = student.LastName;\r\n note.Nickname = student.NickName;\r\n notes.push(note);\r\n });\r\n\r\n // Service call\r\n this.studentNoteService.addStudentNotes(notes).subscribe(() => {\r\n this.dialogBox.close(true);\r\n });\r\n }\r\n\r\n // Adding a singular note\r\n else if (this.addNote) {\r\n this.studentNoteService.addStudentNote(this.note).subscribe(\r\n () => {\r\n this.dialogBox.close(true);\r\n }\r\n );\r\n }\r\n\r\n // Updating a singular note\r\n else {\r\n this.studentNoteService.updateStudentNotes([this.note]).subscribe(\r\n () => {\r\n this.note.LastUpOn = moment().format('MM/DD/YY');\r\n this.note.LastUpBy = this.userSerivce.currentUser.LastName + ', ' + this.userSerivce.currentUser.FirstName;\r\n this.dialogBox.close(false);\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: resets the note and closes the dialog box\r\n if (!this.addNote) {\r\n Object.assign(this.note, this.originalNote);\r\n }\r\n this.dialogBox.close();\r\n }\r\n\r\n viewStudents() {\r\n // PRE: the \"multiple students\" link is clicked\r\n // POST: opens the dialog to view those students\r\n this.dialog.open(StudentsToAddDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n students: this.multiStudents\r\n }\r\n });\r\n }\r\n\r\n // Methods\r\n validate() {\r\n // POST: sets the errors\r\n this.errors = [];\r\n\r\n // Category is required\r\n if (!this.note.SNCID) {\r\n this.errors.push({\r\n fieldName: 'Category',\r\n fieldRef: this.categoryField,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n // Note is required\r\n if (!this.note.Note) {\r\n this.errors.push({\r\n fieldName: 'Note',\r\n fieldRef: this.noteField,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n // Order is required\r\n if (!this.note.Order) {\r\n this.errors.push({\r\n fieldName: 'Order',\r\n fieldRef: this.orderField,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n // Order must be a number\r\n if (this.note.Order && typeof this.note.Order != 'number') {\r\n\r\n // Correcting for string entries\r\n if (!Number.isNaN(Number.parseInt(this.note.Order, 10))) {\r\n this.note.Order = Number.parseInt(this.note.Order, 10);\r\n }\r\n\r\n // Catching error if it's a word\r\n else {\r\n this.errors.push({\r\n fieldName: 'Order',\r\n fieldRef: this.orderField,\r\n errorMsg: 'Value must be a number.'\r\n });\r\n }\r\n }\r\n\r\n // Status is required\r\n if (!this.note.Status) {\r\n this.errors.push({\r\n fieldName: 'Status',\r\n fieldRef: this.statusField,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n // End Date must be after Start Date\r\n if (this.note.StartDate && this.note.EndDate && this.note.StartDate > this.note.EndDate) {\r\n this.errors.push({\r\n fieldName: 'Dates',\r\n fieldRef: this.startDateField,\r\n errorMsg: 'The End Date must be on or after the Start Date.'\r\n });\r\n }\r\n }\r\n}\r\n","import { StudentNoteCategory } from './student-note-category.model';\r\n\r\nexport class StudentNote {\r\n\r\n // Static Properties\r\n\tstatic junkDate = new Date('Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)');\r\n\tstatic junkDateString = 'Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)';\r\n\r\n // Server Properties\r\n AddedBy: string;\r\n AddedOn: string;\r\n ClassroomNote: boolean;\r\n DelStatus: boolean;\r\n DisplayBold = false;\r\n DisplayInStudentProfile = true;\r\n DisplayInTile = false;\r\n EndDate = new Date(StudentNote.junkDateString);\r\n FirstName: string;\r\n Id = -1;\r\n LastName: string;\r\n LastUpBy?: string;\r\n LastUpOn?: string;\r\n MiddleName: string;\r\n Nickname?: string;\r\n Note: string;\r\n Order: number;\r\n SNCID: number;\r\n StartDate = new Date(StudentNote.junkDateString);\r\n Status = 'Active';\r\n StudentID: number;\r\n StudentNumber: string;\r\n\r\n // Local Properties\r\n private _category: StudentNoteCategory;\r\n\r\n // Class Functions\r\n\t// NOTE: these are used for sorting. Do not delete.\r\n get displayBoldString(): string {\r\n if (this.DisplayBold) {\r\n return 'Y';\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n get classroomNoteString(): string {\r\n \tif (this.ClassroomNote) {\r\n \t\treturn 'Y';\r\n\t\t} else {\r\n \t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n // Methods\r\n category(categories: StudentNoteCategory[]): StudentNoteCategory {\r\n \t// PRE: a list of categories\r\n\t\t// POST: returns the category of this student note\r\n if (categories && (!this._category || this._category.Id != this.SNCID)) {\r\n this._category = categories.find(category => category.Id == this.SNCID);\r\n }\r\n return this._category;\r\n }\r\n\r\n clearJunkDates() {\r\n \t// POST: clears the junk dates out from the note\r\n if (this.StartDate && this.StartDate.toString() == StudentNote.junkDate.toString()) {\r\n this.StartDate = null;\r\n }\r\n if (this.EndDate && this.EndDate.toString() == StudentNote.junkDate.toString()) {\r\n this.EndDate = null;\r\n }\r\n }\r\n}","export class StudentNoteFilter {\r\n\tstudentNumber = '';\r\n\tcategory = '';\r\n\tnote = '';\r\n\tstatus = '';\r\n\tstartDateFrom: Date = undefined;\r\n\tstartDateTo: Date = undefined;\r\n\tendDateFrom: Date = undefined;\r\n\tendDateTo: Date = undefined;\r\n}","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {StudentNote} from '../student-note.model';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {StudentNotesService} from '../student-notes.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n\tselector: 'delete-note-dialog',\r\n\ttemplateUrl: './delete-note-dialog.component.html',\r\n\tstyleUrls: [\r\n\t\t'./delete-note-dialog.component.css'\r\n\t]\r\n})\r\nexport class DeleteNoteDialogComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\tnote: StudentNote;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\tprivate studentNoteService: StudentNotesService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: initializes the data\r\n\t\tif (this.data) {\r\n\t\t\tthis.note = this.data.note;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// NOTE: this is implemented for @AutoUnsubscribe\r\n\t}\r\n\r\n\tOK() {\r\n\t\t// PRE: the OK button is clicked\r\n\t\t// POST: deletes the note and closes the dialog\r\n\t\tthis.studentNoteService.deleteStudentNote(this.note.Id).subscribe(() => {\r\n\t\t\tthis.dialogBox.close(true);\r\n\t\t});\r\n\t}\r\n\r\n\tcancel() {\r\n\t\t// PRE: the cancel button is clicked\r\n\t\t// POST: closes the dialog\r\n\t\tthis.dialogBox.close(false);\r\n\t}\r\n\r\n\t// Methods\r\n}","\r\n

\r\n\tDelete Note\r\n

\r\n\r\n\r\n\r\n\tAre you sure you want to delete this Student Note?\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
","import {Component} from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport {SharedService} from '../../../shared-components/shared.service';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n\tselector: 'no-categories-warning-dialog',\r\n\ttemplateUrl: './no-categories-warning-dialog.component.html',\r\n\tstyleUrls: [\r\n\t\t'./no-categories-warning-dialog.component.css'\r\n\t]\r\n})\r\nexport class NoCategoriesWarningDialogComponent {\r\n\r\n\t// Properties\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\tprivate sharedService: SharedService,\r\n\t\tprivate router: Router\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tclose() {\r\n\t\t// POST: closes the dialog box and reroutes to the previous route\r\n\t\tthis.dialogBox.close();\r\n\t\tthis.router.navigateByUrl(this.sharedService.previousUrl);\r\n\t}\r\n\r\n\t// Methods\r\n}","\r\n

\r\n\tNo Categories Defined\r\n

\r\n\r\n\r\n\r\n\t\r\n\t\tData Definitions for Student Note Categories have not been defined.\r\n\t\r\n\t
\r\n\t\r\n\t\tThese are needed in order to use the Student Notes option.\r\n\t\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t
\r\n
","
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n No Student Notes data for this year.\r\n
\r\n\r\n \r\n 0\" [ngStyle]=\"{\r\n 'min-width': minTableWidth + 'px'\r\n }\" matSort matSortDisableClear matSortActive=\"student\" matSortDirection=\"asc\" multiTemplateDataRows>\r\n\r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Student\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Student\r\n \r\n \r\n \r\n #{{note.StudentNumber}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Category\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{category.Code}}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{note.category(categories) ? note.category(categories).Code : ''}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Note\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{note.Note ? 1000 - note.Note.length : 1000}} characters left\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{note.Note}}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Order\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{note.Order}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Active\r\n \r\n \r\n Inactive\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{note.Status}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Start Date\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{note.StartDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n End Date\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{note.EndDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Display
as Bold\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{note.DisplayBold ? 'Y' : ''}}\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n Classroom
Note\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{note.ClassroomNote ? 'Y' : ''}}\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Created By{{note.AddedBy ? note.AddedBy : ' '}}Last Edited By{{note.LastUpBy ? note.LastUpBy : ' '}}
Created On{{note.AddedOn ? (note.AddedOn | date:'MM/dd/yy') : ' '}}Last Edited On{{note.LastUpOn ? (note.LastUpOn | date:'MM/dd/yy') : ' '}}
 
Note{{note.Note}}
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n Filter\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { StudentNoteFilter } from './student-note-filter';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort } from '@angular/material/sort';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { UserPermission } from '../../shared-components/user/user-permission.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { GeneralPreferences } from '../../shared-components/user-preferences/general-preferences.model';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { StudentNotesService } from './student-notes.service';\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n TemplateRef,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { StudentNote } from './student-note.model';\r\nimport { StudentNoteCategory } from './student-note-category.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { StudentSearchComponent } from '../../shared-components/student-search/student-search.component';\r\nimport { AddEditNoteDialogComponent } from './add-edit-note-dialog/add-edit-note-dialog.component';\r\nimport { DeleteNoteDialogComponent } from './delete-note-dialog/delete-note-dialog.component';\r\nimport { NoCategoriesWarningDialogComponent } from './no-categories-warning-dialog/no-categories-warning-dialog.component';\r\nimport { HasErrors } from '../../shared-components/guards/check-for-errors/HasErrors';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ActivatedRoute, RouterStateSnapshot } from '@angular/router';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { StudentInformationComponent } from '../../shared-components/student-information/student-information.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { TylCheckboxComponent } from '../../shared-components/controls/tyl-checkbox/tyl-checkbox.component';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { PermissionEnum } from '../../shared-components/security/permissions.enums';\r\nimport { FilterModel } from '../../shared-components/controls/filter/filter.model';\r\n\r\n@Component({\r\n selector: 'student-notes',\r\n templateUrl: './student-notes.component.html',\r\n styleUrls: [\r\n './student-notes.component.css'\r\n ],\r\n animations: [\r\n detailExpand\r\n ]\r\n})\r\nexport class StudentNotesComponent implements OnInit, AfterViewInit, OnDestroy, HasErrors {\r\n\r\n // Properties\r\n private studentFilters: Student[] = [];\r\n private previousStudentFilters: Student[] = [];\r\n private selectedStudent: Student;\r\n private _sort: MatSort;\r\n\r\n errors: ErrorList[] = [];\r\n studentNotes: StudentNote[];\r\n displayedStudentNotes: StudentNote[] = [];\r\n categories: StudentNoteCategory[] = [];\r\n toggleExpandRows = new EventEmitter();\r\n tableData = new TylerMatTableDataSource();\r\n columns = [\r\n 'more',\r\n 'student',\r\n 'studentNumber',\r\n 'category',\r\n 'note',\r\n 'order',\r\n 'status',\r\n 'start-date',\r\n 'end-date',\r\n 'display-as-bold',\r\n 'classroom-note',\r\n 'actions'\r\n ];\r\n columnWidths: { [key: string]: number } = {\r\n 'more': 70,\r\n 'actions': 70,\r\n 'student': 150,\r\n 'note': 400,\r\n 'start-date': 135,\r\n 'end-date': 135,\r\n 'status': 90,\r\n 'order': 90,\r\n 'category': 105,\r\n 'display-as-bold': 100,\r\n 'classroom-note': 130,\r\n 'studentNumber': 100\r\n };\r\n selectedRow: StudentNote;\r\n generalPreferences: GeneralPreferences;\r\n userPermissions: UserPermission[];\r\n userCanEditNotes = false;\r\n tableHeight: number;\r\n minTableWidth: number;\r\n numberMask: (rawValue: string) => {};\r\n showFilter = false;\r\n filter = new StudentNoteFilter();\r\n previousFilter = new StudentNoteFilter();\r\n StudentInfoDialog: MatDialogRef;\r\n subscriptions: Subscription[] = [];\r\n studentPortal = false;\r\n loading = false;\r\n v10: boolean;\r\n\r\n // View Properties\r\n @ViewChild('pusherFilter', { read: TemplateRef }) pusherFilter: TemplateRef;\r\n @ViewChild('formRef', { read: NgForm, static: true }) formRef: NgForm;\r\n @ViewChild('categoryField', { read: ElementRef }) categoryField: ElementRef;\r\n @ViewChild('noteField', { read: ElementRef }) noteField: ElementRef;\r\n @ViewChild('orderField', { read: ElementRef }) orderField: ElementRef;\r\n @ViewChild('statusField', { read: ElementRef }) statusField: ElementRef;\r\n @ViewChild('startDateField', { read: ElementRef }) startDateField: ElementRef;\r\n @ViewChild('endDateField', { read: ElementRef }) endDateField: ElementRef;\r\n @ViewChild('displayBoldCheckbox', { read: TylCheckboxComponent }) displayAsBoldCheckbox: TylCheckboxComponent;\r\n @ViewChild('classroomNoteCheckbox', { read: TylCheckboxComponent }) classroomNoteCheckbox: TylCheckboxComponent;\r\n private _paginator: MatPaginator;\r\n @ViewChild(MatPaginator, { static: true }) set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.tableData.paginator = value;\r\n }\r\n // Class Functions\r\n constructor(\r\n private studentNotesService: StudentNotesService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private userService: UserService,\r\n private sharedService: SharedService,\r\n private dialog: MatDialog,\r\n private studentService: StudentService,\r\n private route: ActivatedRoute,\r\n private loginService: LoginService,\r\n private changeDetector: ChangeDetectorRef\r\n ) { }\r\n\r\n get filteringStudents(): boolean {\r\n return this.studentFilters.length > 0 && !!this.selectedStudent;\r\n }\r\n\r\n get filtering(): boolean {\r\n return this.filteringStudents ||\r\n (\r\n !System.isEqual(this.filter, new StudentNoteFilter())\r\n && (this.filter.startDateFrom ? this.filter.startDateFrom.toString() != 'Invalid Date' : true)\r\n && (this.filter.startDateTo ? this.filter.startDateTo.toString() != 'Invalid Date' : true)\r\n && (this.filter.endDateFrom ? this.filter.endDateFrom.toString() != 'Invalid Date' : true)\r\n && (this.filter.endDateTo ? this.filter.endDateTo.toString() != 'Invalid Date' : true)\r\n );\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.tableData.sort = this.sort;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n if (this.sharedService.currentPortal != undefined) {\r\n this.sharedService.currentPortal.applyFilterStudents = true;\r\n }\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n\r\n // Marking this as loading\r\n this.loading = true;\r\n\r\n // Setting the initial values\r\n this.generalPreferences = this.userPreferencesService.generalPreferences;\r\n this.numberMask = System.numberMask;\r\n\r\n if (!this.generalPreferences.ShowStudentNumber) {\r\n this.removeElement(this.columns, 'studentNumber');\r\n }\r\n\r\n // Performing subscriptions\r\n this.subscriptions.push(\r\n this.route.queryParamMap.subscribe(params => {\r\n this.studentPortal = params.get('studentPortal') == 'true';\r\n if (this.studentPortal) {\r\n if (this.studentService.selectedStudent) {\r\n this.previousStudentFilters = [this.studentService.selectedStudent];\r\n // this.studentFilters = [this.studentService.selectedStudent];\r\n this.studentFilters = this.studentService.students;\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n } else {\r\n this.previousStudentFilters = [];\r\n this.studentFilters = [];\r\n this.selectedStudent = null;\r\n }\r\n }\r\n\r\n // If we aren't filtering students, remove the student in focus\r\n else {\r\n if (this.userService.selectedStudentInfoPortal != 'Student Notes') {\r\n this.studentService.selectedStudent = null;\r\n this.studentService.updateSelectedStudent(null);\r\n }\r\n else {\r\n this.previousStudentFilters = [this.studentService.selectedStudent];\r\n this.studentFilters = this.studentService.students;\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n }\r\n }\r\n\r\n // Arranging the table data after we've configured initial filters\r\n this.arrangeTableData();\r\n }),\r\n this.yearService.observableDefaultYearStream$.subscribe(() => {\r\n this.getStudentNotes();\r\n this.getPermissions();\r\n }),\r\n this.toggleExpandRows.subscribe(expand => {\r\n this.tableData.expandAll(expand);\r\n }),\r\n // this.studentService.observableStudentsStream$.subscribe(students => {\r\n // \tif (students && (!this.loading || this.studentPortal)) {\r\n // \t\tthis.studentFilters = students;\r\n // \t}\r\n // }),\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n if (!this.loading || this.studentPortal) {\r\n this.previousStudentFilters = [this.studentService.selectedStudent];\r\n // this.studentFilters = [this.studentService.selectedStudent];\r\n this.studentFilters = this.studentService.students;\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n this.arrangeTableData();\r\n }\r\n }),\r\n this.userPreferencesService.observablegeneralPreferencesStream$.subscribe(preferences => {\r\n this.generalPreferences = preferences;\r\n if (!this.generalPreferences.ShowStudentNumber) {\r\n this.removeElement(this.columns, 'studentNumber');\r\n }\r\n else {\r\n let index: number = this.columns.findIndex(column => column == 'studentNumber');\r\n if (index == -1) {\r\n index = this.columns.findIndex(column => column == 'student');\r\n this.columns.splice(index + 1, 0, 'studentNumber');\r\n }\r\n }\r\n })\r\n );\r\n this.getStudentNotes();\r\n this.getPermissions();\r\n\r\n // Setting the tables sort accessor\r\n this.tableData.sortingDataAccessor = (data: any, sortHeaderId: string): string | number => {\r\n // PRE: a sort or filter is called on a table\r\n // POST: returns the data for a cell for sorting\r\n const student = new Student();\r\n\r\n switch (sortHeaderId) {\r\n case 'studentNumber':\r\n return student.StudentNumber;\r\n case 'student':\r\n Object.assign(student, data);\r\n return student.formattedNameWithNumber(this.generalPreferences);\r\n case 'category':\r\n return data.category(this.categories).Code;\r\n case 'display-as-bold':\r\n if (data['DisplayBold']) {\r\n return 'Y';\r\n } else {\r\n return '';\r\n }\r\n case 'classroom-note':\r\n if (data['ClassroomNote']) {\r\n return 'Y';\r\n } else {\r\n return '';\r\n }\r\n default:\r\n return this.tableData.defaultSortingAccessor(data, sortHeaderId);\r\n }\r\n };\r\n\r\n // Marking this as not loading\r\n this.loading = false;\r\n }\r\n\r\n ngAfterViewInit() {\r\n // POST: sets the table height\r\n this.resize();\r\n }\r\n\r\n ngOnDestroy() {\r\n // NOTE: implemented for @AutoUnsubscribe\r\n if (this.sharedService.currentPortal != undefined) {\r\n this.sharedService.currentPortal.applyFilterStudents = false;\r\n }\r\n }\r\n\r\n studentChange(studentId: number) {\r\n // PRE: the student is changed in the header\r\n // POST: changes the selected student and applies the filter\r\n\r\n }\r\n\r\n checkErrors(nextState?: RouterStateSnapshot): number {\r\n // PRE: the user tries to navigate away\r\n // POST: checks the errors.\r\n // If 4, shows the warning dialog. If the result is true, it will wait for the save before it continues.\r\n // If 3, shows the warning, but doesn't perform route on the save (lets the component do it)\r\n // If 2, continues without save.\r\n // If 1, continues with save.\r\n // If 0, shows warning.\r\n // If -1, stops.\r\n this.validate();\r\n if (this.formRef) {\r\n if (this.formRef.pristine && this.errors.length == 0) {\r\n return 2;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n }\r\n\r\n save(): any {\r\n // PRE: the data has been validated and there is no errors\r\n // POST: performs a save on route\r\n this.studentNotesService.updateStudentNotes(this.displayedStudentNotes).subscribe(\r\n () => {\r\n this.sharedService.showGoodSnackbar();\r\n this.formRef.form.markAsPristine();\r\n this.selectedRow = null;\r\n },\r\n () => {\r\n this.sharedService.showBadSnackbar();\r\n this.selectedRow = null;\r\n }\r\n );\r\n }\r\n\r\n saveClick() {\r\n // PRE: the save button is clicked\r\n // POST: validates and then performs save\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.save();\r\n }\r\n }\r\n\r\n showFilterClick() {\r\n // PRE: the filter button from the footer notification or the footer itself is clicked\r\n // POST: opens the filter menu\r\n this.showFilter = !this.showFilter;\r\n }\r\n\r\n clearFilter() {\r\n // PRE: the clear filter button is clicked\r\n // POST: clears the filter but does not close it\r\n setTimeout(() => {\r\n Object.assign(this.filter, new StudentNoteFilter());\r\n this.studentService.students = [];\r\n this.studentService.updateSelectedStudent(null);\r\n // Detecting page changes to deal with ExpressionChanged errors\r\n this.changeDetector.detectChanges();\r\n }, 0);\r\n }\r\n\r\n clearFilterFromFooter() {\r\n // PRE: the clear filter button on the footer notification is clicked\r\n // POST: clears the filter and saves it\r\n setTimeout(() => {\r\n Object.assign(this.filter, new StudentNoteFilter());\r\n this.studentService.students = [];\r\n this.studentService.updateSelectedStudent(null);\r\n Object.assign(this.previousFilter, this.filter);\r\n this.previousStudentFilters = JSON.parse(JSON.stringify(this.studentFilters));\r\n this.tableData.removeAllFilters();\r\n // Detecting page changes to deal with ExpressionChanged errors\r\n this.changeDetector.detectChanges();\r\n }, 0);\r\n }\r\n\r\n cancelFilter() {\r\n this.showFilterClick();\r\n }\r\n\r\n studentSearchFilter() {\r\n // PRE: the search for students filter button is clicked\r\n // POST: opens the student search for multiselect to filter the students\r\n const dialogBox = this.dialog.open(StudentSearchComponent, {\r\n data: {\r\n selectedStudents: this.studentFilters,\r\n searchAndSelect: true,\r\n returnSelectedStudents: true,\r\n schools: this.studentNotesService.viewSchools,\r\n useLastSelectedSchool: false\r\n },\r\n disableClose: true,\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n });\r\n dialogBox.afterClosed().subscribe((selectedStudents: Student[]) => {\r\n if (selectedStudents && selectedStudents.length > 0) {\r\n this.studentService.updateStudents(selectedStudents);\r\n }\r\n });\r\n }\r\n\r\n clearStudentSearchFilter() {\r\n // PRE: the clear student search filter button is clicked\r\n // POST: removes all the students from the student filter array\r\n this.studentService.students = [];\r\n this.studentService.updateSelectedStudent(null);\r\n // Detecting page changes to deal with ExpressionChanged errors\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n massAdd() {\r\n // PRE: the mass add button is clicked\r\n // POST: opens the mass add dialog\r\n let dialogBox: MatDialogRef = this.dialog.open(StudentSearchComponent, {\r\n disableClose: true,\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw',\r\n data: {\r\n searchAndSelect: true,\r\n acceptLabel: 'Continue',\r\n schools: this.studentNotesService.addEditSchools,\r\n useLastSelectedSchool: false\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(students => {\r\n if (students && students.length > 0) {\r\n dialogBox = this.dialog.open(AddEditNoteDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n categories: this.categories,\r\n multiAdd: true,\r\n multiStudents: students\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(newNotes => {\r\n if (newNotes) {\r\n this.getStudentNotes();\r\n }\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n cellClick(note: StudentNote, cellName: string) {\r\n // PRE: a cell is clicked\r\n // POST: toggles that row's fields and sets the focused one to the right input\r\n\r\n // We only focus fields if the user can edit notes\r\n if (!this.userCanEditNotes) {\r\n return;\r\n }\r\n\r\n // This toggles the rows fields\r\n this.selectedRow = note;\r\n\r\n // Once the change detection creates the fields, focus the proper one\r\n setTimeout(() => {\r\n switch (cellName) {\r\n case 'category':\r\n this.categoryField.nativeElement.focus();\r\n break;\r\n case 'note':\r\n this.noteField.nativeElement.focus();\r\n break;\r\n case 'order':\r\n this.orderField.nativeElement.focus();\r\n break;\r\n case 'status':\r\n this.statusField.nativeElement.focus();\r\n break;\r\n case 'startDate':\r\n this.startDateField.nativeElement.focus();\r\n break;\r\n case 'endDate':\r\n this.endDateField.nativeElement.focus();\r\n break;\r\n case 'displayAsBold':\r\n this.displayAsBoldCheckbox.focus();\r\n break;\r\n case 'classroomNote':\r\n this.classroomNoteCheckbox.focus();\r\n break;\r\n default:\r\n break;\r\n }\r\n }, 0);\r\n }\r\n\r\n // Methods\r\n resize() {\r\n // POST: sets the table width\r\n setTimeout(() => {\r\n\r\n // Determining the minimum table width of the grid\r\n this.minTableWidth = 0;\r\n for (let i = 0; i < this.columns.length; i++) {\r\n if (this.columnWidths[this.columns[i]]) {\r\n this.minTableWidth += this.columnWidths[this.columns[i]];\r\n }\r\n }\r\n }, 0);\r\n }\r\n\r\n getStudentNotes() {\r\n // POST: obtains the student notes and student notes categories from the server\r\n\r\n // Obtaining student notes\r\n const noteSubscription = this.studentNotesService.getStudentNotes().subscribe(studentNotes => {\r\n\r\n // Performing conversions\r\n this.studentNotes = studentNotes;\r\n for (let i = 0; i < this.studentNotes.length; i++) {\r\n this.studentNotes[i] = System.convert(this.studentNotes[i], new StudentNote());\r\n this.studentNotes[i].clearJunkDates();\r\n }\r\n\r\n // Arranging table data\r\n this.arrangeTableData();\r\n // Detecting page changes to deal with ExpressionChanged errors\r\n this.changeDetector.detectChanges();\r\n });\r\n\r\n // Obtaining student note categories\r\n this.studentNotesService.getStudentNotesCategories().subscribe(categories => {\r\n this.categories = categories;\r\n if (!this.categories || this.categories.length == 0) {\r\n noteSubscription.unsubscribe();\r\n this.dialog.open(NoCategoriesWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n }\r\n });\r\n }\r\n\r\n arrangeTableData() {\r\n // POST: filters through the data for the students searched for and then sets the table data\r\n if (!this.studentNotes) {\r\n return;\r\n }\r\n this.tableData.cacheExpanded();\r\n this.displayedStudentNotes = this.studentNotes;\r\n\r\n // Student Number Filter\r\n if (this.filter.studentNumber) {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.StudentNumber.includes(this.filter.studentNumber)\r\n );\r\n }\r\n\r\n // Student Filter\r\n if (this.studentFilters.length > 0 && this.selectedStudent) {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.StudentID == this.selectedStudent.Id\r\n );\r\n }\r\n\r\n // Category Filter\r\n if (this.filter.category) {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.category(this.categories).Code.toLowerCase().includes(this.filter.category)\r\n );\r\n }\r\n\r\n // Note Filter\r\n if (this.filter.note) {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.Note.toLowerCase().includes(this.filter.note.toLowerCase())\r\n );\r\n }\r\n\r\n // Status Filter\r\n if (this.filter.status) {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.Status.toLowerCase().includes(this.filter.status.toLowerCase())\r\n );\r\n }\r\n\r\n // Start Date From\r\n if (this.filter.startDateFrom && this.filter.startDateFrom.toString() != 'Invalid Date') {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.StartDate >= this.filter.startDateFrom\r\n );\r\n }\r\n\r\n // Start Date To\r\n if (this.filter.startDateTo && this.filter.startDateTo.toString() != 'Invalid Date') {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.StartDate <= this.filter.startDateTo\r\n );\r\n }\r\n\r\n // End Date From\r\n if (this.filter.endDateFrom && this.filter.endDateFrom.toString() != 'Invalid Date') {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.EndDate >= this.filter.endDateFrom\r\n );\r\n }\r\n\r\n // End Date To\r\n if (this.filter.endDateTo && this.filter.endDateTo.toString() != 'Invalid Date') {\r\n this.displayedStudentNotes = this.displayedStudentNotes.filter(note =>\r\n note.EndDate <= this.filter.endDateTo\r\n );\r\n }\r\n\r\n // Setting table data\r\n this.tableData.data = this.displayedStudentNotes;\r\n this.tableData.assertCachedExpanded('Id');\r\n this.resize();\r\n }\r\n\r\n addNote() {\r\n // POST: opens the add modal\r\n const note = new StudentNote();\r\n note.clearJunkDates();\r\n let clicked = false;\r\n\r\n // Helper function for clicking on a student\r\n const assignStudent = (student) => {\r\n note.StudentID = student.Id;\r\n note.StudentNumber = student.StudentNumber;\r\n note.FirstName = student.FirstName;\r\n note.MiddleName = student.MiddleName;\r\n note.LastName = student.LastName;\r\n note.Nickname = student.NickName;\r\n };\r\n const clickHandler = (event) => {\r\n assignStudent(event.row);\r\n clicked = true;\r\n };\r\n\r\n // Helper function to open add/edit note\r\n const openAddEdit = () => {\r\n const dialogBox2 = this.dialog.open(AddEditNoteDialogComponent, {\r\n data: {\r\n addNote: true,\r\n categories: this.categories,\r\n note: note\r\n }\r\n });\r\n dialogBox2.afterClosed().subscribe(newNote => {\r\n if (newNote) {\r\n this.getStudentNotes();\r\n }\r\n });\r\n };\r\n\r\n // If we have a selected student, opens the add/edit with that student\r\n if (this.selectedStudent && this.filteringStudents) {\r\n assignStudent(this.selectedStudent);\r\n openAddEdit();\r\n } else {\r\n const dialogBox = this.dialog.open(StudentSearchComponent, {\r\n data: {\r\n performRoute: false,\r\n clickHandler: clickHandler,\r\n schools: this.studentNotesService.addEditSchools,\r\n useLastSelectedSchool: false\r\n },\r\n disableClose: true,\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n });\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (clicked) {\r\n openAddEdit();\r\n }\r\n });\r\n }\r\n }\r\n\r\n editNote(note: StudentNote) {\r\n // POST: opens the edit modal for a note\r\n this.dialog.open(AddEditNoteDialogComponent, {\r\n data: {\r\n addNote: false,\r\n categories: this.categories,\r\n note: note\r\n }\r\n });\r\n }\r\n\r\n deleteNote(note: StudentNote) {\r\n // POST: opens the delete modal for a note\r\n const dialogBox = this.dialog.open(DeleteNoteDialogComponent, {\r\n data: {\r\n note: note\r\n }\r\n });\r\n dialogBox.afterClosed().subscribe(deleted => {\r\n if (deleted) {\r\n this.studentNotes.splice(this.studentNotes.indexOf(note), 1);\r\n this.arrangeTableData();\r\n }\r\n });\r\n }\r\n\r\n viewStudent(note: StudentNote) {\r\n this.studentService.getStudent(note.StudentID).subscribe((studentData) => {\r\n const studentRecord = { Id: note.StudentID, FirstName: note.FirstName, LastName: note.LastName, MiddleName: note.MiddleName, NickName: note.Nickname, Picture: studentData.Picture };\r\n const studentRecords = [studentRecord];\r\n this.displayedStudentNotes.forEach(student => {\r\n if (studentRecords.findIndex(record => record.Id == student.StudentID) == -1) {\r\n studentRecords.push({\r\n Id: student.StudentID,\r\n FirstName: student.FirstName,\r\n LastName: student.LastName,\r\n MiddleName: student.MiddleName,\r\n NickName: student.Nickname,\r\n Picture: undefined\r\n });\r\n }\r\n });\r\n this.StudentInfoDialog = this.dialog.open(StudentInformationComponent, { panelClass: 'tyl-mat-dialog', disableClose: true, height: '100%', position: { top: '0px', right: '0px' } });\r\n this.StudentInfoDialog.componentInstance.student = studentRecord;\r\n this.StudentInfoDialog.componentInstance.students = studentRecords;\r\n this.StudentInfoDialog.componentInstance.initMenu();\r\n });\r\n }\r\n\r\n validate() {\r\n // POSt: sets the errors\r\n\r\n // Resetting the errors\r\n this.errors = [];\r\n\r\n // Checking each displayed note\r\n for (let i = 0; i < this.displayedStudentNotes.length; i++) {\r\n const note = this.displayedStudentNotes[i];\r\n\r\n // Note is required\r\n if (!note.Note) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'Note',\r\n errorMsg: 'Field is required.',\r\n clickCallback: () => {\r\n this.cellClick(note, 'note');\r\n }\r\n });\r\n }\r\n\r\n // Order is required\r\n if (!note.Order) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'Order',\r\n errorMsg: 'Field is required.',\r\n clickCallback: () => {\r\n this.cellClick(note, 'order');\r\n }\r\n });\r\n }\r\n\r\n // Order must be a number\r\n if (typeof note.Order != 'number') {\r\n\r\n // Correcting for string entries\r\n if (Number.parseInt(note.Order, 10)) {\r\n note.Order = Number.parseInt(note.Order, 10);\r\n }\r\n\r\n // Catching error if it's a word\r\n else {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'Order',\r\n errorMsg: 'Value must be a number.',\r\n clickCallback: () => {\r\n this.cellClick(note, 'order');\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Status is required\r\n if (!note.Status) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'Status',\r\n errorMsg: 'Field is required.',\r\n clickCallback: () => {\r\n this.cellClick(note, 'status');\r\n }\r\n });\r\n }\r\n\r\n // End date must be after start date\r\n if (note.StartDate && note.EndDate && note.EndDate < note.StartDate) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'Dates',\r\n errorMsg: 'The End Date must be on or after the Start Date.',\r\n clickCallback: () => {\r\n this.cellClick(note, 'startDate');\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n getPermissions() {\r\n if (this.v10) {\r\n // POST: getting the user permissions and the schols they have access to\r\n this.subscriptions.push(\r\n // Getting the schools the user has access to for student notes\r\n this.userService.getUserPermissionByPrivilegeIds(\r\n this.yearService.defaultYear.Id,\r\n 0, // We do this to get all sites\r\n [\r\n PermissionEnum.StudentNotesCounselorAddEdit,\r\n PermissionEnum.StudentNotesCounselorView,\r\n PermissionEnum.StudentNotesMyStudentsAddEdit,\r\n PermissionEnum.StudentNotesMyStudentsView,\r\n PermissionEnum.StudentNotesStudentRecordAddEdit,\r\n PermissionEnum.StudentNotesStudentRecordView\r\n ]\r\n ).subscribe(permissions => {\r\n this.studentNotesService.addEditSchools = [];\r\n this.studentNotesService.viewSchools = [];\r\n permissions.forEach(permission => {\r\n const school = this.yearService.allDistrictSchools.find(s => s.Id == permission.SiteId);\r\n if (school) {\r\n if (!this.studentNotesService.viewSchools.includes(school)) {\r\n this.studentNotesService.viewSchools.push(school);\r\n }\r\n if (permission.PrivilegeId == PermissionEnum.StudentNotesCounselorAddEdit\r\n || permission.PrivilegeId == PermissionEnum.StudentNotesMyStudentsAddEdit\r\n || permission.PrivilegeId == PermissionEnum.StudentNotesStudentRecordAddEdit) {\r\n if (!this.studentNotesService.addEditSchools.includes(school)) {\r\n this.studentNotesService.addEditSchools.push(school);\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.userPermissions = permissions.filter(o => o.SiteId == this.yearService.defaultYear.SchoolID);\r\n\r\n // Determining if the user can edit notes\r\n if (this.userPermissions.find(permission => permission.PermissionName == 'Add/Edit Student Notes')) {\r\n this.userCanEditNotes = true;\r\n } else {\r\n this.userCanEditNotes = false;\r\n }\r\n\r\n // Determining which columns should display based on that\r\n if (this.userCanEditNotes && !this.columns.includes('actions')) {\r\n this.columns.push('actions');\r\n } else if (!this.userCanEditNotes && this.columns.includes('actions')) {\r\n this.columns.splice(this.columns.indexOf('actions'), 1);\r\n }\r\n\r\n // Determining the width of the table with the new information\r\n this.resize();\r\n })\r\n\r\n\r\n );\r\n }\r\n else {\r\n // POST: getting the user permissions they have access to\r\n (\r\n this.userService.getUserPermissions(\r\n this.yearService.defaultYear.Id,\r\n this.yearService.defaultYear.SchoolID\r\n ).subscribe(permissions => {\r\n this.userPermissions = permissions;\r\n // Determining if the user can edit notes\r\n if (this.userPermissions.find(permission => permission.PermissionName == 'Maintain Student Notes')) {\r\n this.userCanEditNotes = true;\r\n } else {\r\n this.userCanEditNotes = false;\r\n }\r\n\r\n // Determining which columns should display based on that\r\n if (this.userCanEditNotes && !this.columns.includes('actions')) {\r\n this.columns.push('actions');\r\n } else if (!this.userCanEditNotes && this.columns.includes('actions')) {\r\n this.columns.splice(this.columns.indexOf('actions'), 1);\r\n }\r\n\r\n // Determining the width of the table with the new information\r\n this.resize();\r\n }));\r\n }\r\n }\r\n\r\n removeElement(array: any[], element: any) {\r\n const index: number = array.indexOf(element);\r\n if (index != -1) {\r\n array.splice(index, 1);\r\n }\r\n }\r\n headerFilterChanged(column: string) {\r\n const row = this.tableData.filters.find(o => o.column == column);\r\n if (column == 'Status') {\r\n this.tableData.removeFilter(row);\r\n if (row.operator == '1') {\r\n this.tableData.data = this.displayedStudentNotes.filter(o => o.Status == 'Active');\r\n this.tableData.addFilter(new FilterModel('Active', column, '1', 'string', undefined), this.tableData);\r\n }\r\n else if (row.operator == '2') {\r\n this.tableData.data = this.displayedStudentNotes.filter(o => o.Status == 'Inactive');\r\n this.tableData.addFilter(new FilterModel('Inactive', column, '2', 'string', undefined), this.tableData);\r\n }\r\n else if (row.operator == '0') {\r\n this.tableData.data = this.displayedStudentNotes;\r\n this.tableData.addFilter(new FilterModel('', column, '0', 'boolean', undefined), this.tableData);\r\n }\r\n }\r\n // Detecting page changes to deal with ExpressionChanged errors\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n continuedWithoutSave(): any {\r\n }\r\n}\r\n","import {HttpClient} from '@angular/common/http';\r\nimport {Injectable} from '@angular/core';\r\nimport {StudentNoteCategory} from './student-note-category.model';\r\nimport {Observable} from 'rxjs';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport {System} from '../../shared-components/System';\r\nimport {StudentNote} from './student-note.model';\r\nimport {School} from '../../shared-components/year/school.model';\r\nimport {SharedService} from '../../shared-components/shared.service';\r\n\r\n@Injectable()\r\nexport class StudentNotesService {\r\n\r\n // Properties\r\n addEditSchools: School[] = [];\r\n viewSchools: School[] = [];\r\n \r\n // Class Functions\r\n constructor(\r\n private yearService: YearService,\r\n private http: HttpClient,\r\n private sharedService: SharedService\r\n ) {\r\n }\r\n\r\n // Methods\r\n getStudentNotesCategories(): Observable {\r\n // POST: Gets the student notes categories from the server\r\n return this.sharedService.getStudentNoteCategories(this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.Id);\r\n }\r\n\r\n getStudentNotes(): Observable {\r\n // POST: obtains the student notes for this user from the server\r\n // NOTE: on the server, they accidentally used these backwards\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.Id +\r\n '&yearId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentNotesByUserId' + queryString);\r\n }\r\n\r\n addStudentNote(note: StudentNote): Observable {\r\n // PRE: a note to add for a student\r\n // POST: adds that note to the server which returns the Id\r\n return this.http.post(System.apiURL.Classroom + 'AddStudentNote', note);\r\n }\r\n\r\n addStudentNotes(notes: StudentNote[]): Observable {\r\n // PRE: a list of notes to add\r\n // POST: adds those notes to the server\r\n return this.http.post(System.apiURL.Classroom + 'AddStudentNotes', notes);\r\n }\r\n\r\n updateStudentNotes(notes: StudentNote[]): Observable {\r\n // PRE: a list of notes to update\r\n // POST: updates those notes on the server\r\n return this.http.post(System.apiURL.Classroom + 'UpdateStudentNotes', notes);\r\n }\r\n\r\n deleteStudentNote(noteId: number): Observable {\r\n // PRE: the id of the note you want to delete\r\n // POST: deletes the note from the server\r\n const queryString = '?noteId=' + noteId;\r\n return this.http.get(System.apiURL.Classroom + 'DeleteStudentNote' + queryString);\r\n }\r\n}\r\n","import { Lookup } from '../../../shared-components/lookup/lookup.model';\r\nimport { BehaviorActionCode } from '../models/behavior-action-code.model';\r\n\r\nexport class BehaviorEventsFilterParam {\r\n eventDateFrom: Date;\r\n eventDateTo: Date;\r\n actionDateFrom: Date;\r\n actionDateTo: Date;\r\n incidentCode: Lookup;\r\n actionCode: BehaviorActionCode;\r\n reportedToState: boolean;\r\n onlyShowSuspensions: boolean;\r\n location: Lookup;\r\n offender?: string;\r\n victim?: string;\r\n comment?: string;\r\n incidentApproveAction = false;\r\n}\r\n","import { Lookup } from \"../../../shared-components/lookup/lookup.model\";\r\nimport { Student } from \"../../../shared-components/student/student.model\";\r\n\r\nexport class BehaviorInterventionsFilterParam {\r\n startDateFrom?: Date=null;\r\n startDateTo?: Date=null;\r\n endDateFrom?: Date=null;\r\n endDateTo?: Date=null;\r\n nextMeetingDateFrom?: Date=null;\r\n nextMeetingDateTo?: Date=null;\r\n interventionist?: Lookup=null;\r\n refferedBy?: Lookup=null;\r\n refferedByOther?: string=null;\r\n status?: Lookup=null;\r\n notes?: string=null;\r\n students: Student[] = [];\r\n selectedReasons?: string[] = [];\r\n enteredBy?: string=null;\r\n statusV9?: string[] = [];\r\n}\r\n","\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n","import { Component, OnInit, ViewChild, Inject, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport * as _ from 'lodash';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { EFormViewerComponent } from '../../../../shared-components/e-forms/e-form-viewer/e-form-viewer.component';\r\nimport { EFormDataObject } from '../../../../shared-components/e-forms/e-formDataObject.model';\r\nimport { EForm } from '../../../../shared-components/e-forms/e-form.model';\r\nimport { EFormInstance } from '../../../../shared-components/e-forms/e-form-instance.model';\r\nimport { EFormConfiguration } from '../../../../shared-components/e-forms/e-form-config.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { EFormService } from '../../../../shared-components/e-forms/e-form.service';\r\nimport { SpinnerService } from '../../../../shared-components/spinner/spinner.service';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-behavior-letter-viewer-modal',\r\n templateUrl: './behavior-letter-viewer-modal.component.html',\r\n styleUrls: ['./behavior-letter-viewer-modal.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BehaviorLetterViewerModalComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(EFormViewerComponent, { static: true }) eFormViewer: EFormViewerComponent;\r\n eFormData: EFormDataObject;\r\n selectedForm: EForm;\r\n selectedInstance: EFormInstance;\r\n config = new EFormConfiguration();\r\n\r\n errors: ErrorList[] = [];\r\n\r\n isPreview: boolean = false;\r\n isReview: boolean = false;\r\n editable: boolean = true;\r\n showNextPreviousButtons: boolean = false;\r\n isLP: boolean = true;\r\n isFP: boolean = true;\r\n\r\n subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private eFormService: EFormService,\r\n private spinnerService: SpinnerService,\r\n private dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ) {\r\n if (data) {\r\n if (data.config) {\r\n this.config = data.config;\r\n }\r\n\r\n }\r\n\r\n if (this.config.ReadOnly) {\r\n this.editable = false;\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.selectedForm = _.cloneDeep(this.eFormService.selectedForm);\r\n this.eFormData = _.cloneDeep(this.eFormService.selectedFormData);\r\n\r\n if (this.eFormData.Tabs.length > 1 || this.eFormData.Tabs[0].Pages.length > 1) {\r\n this.showNextPreviousButtons = true;\r\n }\r\n\r\n this.subscriptions.push(this.eFormService.observableIsFirstPageStream$.subscribe(isFirstPage => {\r\n this.isFP = isFirstPage;\r\n }));\r\n this.subscriptions.push(this.eFormService.observableIsLastPageStream$.subscribe(isLastPage => {\r\n this.isLP = isLastPage;\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n async printClick() {\r\n // Initialize pdf\r\n this.eFormService.pdfDataURIs = [];\r\n\r\n this.eFormViewer.fileNameOverride = true;\r\n this.eFormViewer.localPrint = true;\r\n this.eFormViewer.showAllConditionalsPrint = true;\r\n if( this.config && this.config.Title) {\r\n this.eFormViewer.fileNameInput = this.config.Title;\r\n }\r\n else { \r\n this.eFormViewer.fileNameInput = 'form';\r\n }\r\n\r\n this.eFormViewer.showPrintDiv = true; \r\n this.spinnerService.showSpinner = true;\r\n }\r\n\r\n previousClick() {\r\n this.eFormViewer.previousClick();\r\n }\r\n\r\n nextClick() {\r\n this.eFormViewer.nextClick();\r\n }\r\n\r\n saveClick() {\r\n\r\n } \r\n\r\n cancelClick() {\r\n this.dialogRef.close('cancel');\r\n }\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { EventEmitter, Injectable } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { AttendanceCode } from '../../classroom360/attendance/models/attendance-code.model';\r\nimport { DisciplineReferral } from '../../classroom360/discipline-referral/discipline-referral.model';\r\nimport { BehaviorSharedService } from '../../shared-components/behavior/behavior-shared.service';\r\nimport { CustomField } from '../../shared-components/custom-page/models/custom-field.model';\r\nimport { EFormTemplate } from '../../shared-components/e-forms/e-form-template.model';\r\nimport { Lookup } from '../../shared-components/lookup/lookup.model';\r\nimport { ScheduleCalendar } from '../../shared-components/models/schedule-calendar.model';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { GeneralPreferences } from '../../shared-components/user-preferences/general-preferences.model';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { School } from '../../shared-components/year/school.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { CommunicationLog } from '../../shared-modules/communication-log/models/communication-log.model';\r\nimport { ReportingService } from '../../shared-modules/reporting/reporting.service';\r\nimport { StudentAttachment } from '../../shared-modules/student-attachment/student-attachment.model';\r\nimport { BehaviorEventsFilterParam } from './behavior-events/behavior-events-filter-param';\r\nimport { BehaviorInterventionsFilterParam } from './behavior-interventions/behavior-interventions-filter-param';\r\nimport { BehaviorActionCode } from './models/behavior-action-code.model';\r\nimport { BehaviorAction } from './models/behavior-action.model';\r\nimport { BehaviorAttachment } from './models/behavior-attachment.model';\r\nimport { BehaviorEvent } from './models/behavior-event.model';\r\nimport { BehaviorIncidentLetter } from './models/behavior-incident-letter.model';\r\nimport { BehaviorIncidentSearch } from './models/behavior-incident-search.model';\r\nimport { BehaviorIncident } from './models/behavior-incident.model';\r\nimport { AssociateInterventionPopup, BehaviorIntervention, Contract, CounselorStudentMeetingInterventions, DisciplineEventIntervention, InterventionAttachment, InterventionMeeting } from './models/behavior-intervention.model';\r\nimport { BehaviorLetter, GenerateMailingLabels, BehaviorLetterEmailAddress } from './models/behavior-letter.model';\r\nimport { BehaviorPolicies } from './models/behavior-policies.model';\r\nimport { BehaviorStudent } from './models/behavior-student.model';\r\n\r\n@Injectable()\r\nexport class BehaviorService {\r\n isAttachmentDeleteInEventTab = false;\r\n addEditSchools: School[] = [];\r\n viewOnlySchools: School[] = [];\r\n quickAddSchools: School[] = [];\r\n\r\n behaviorLetterTemplates: EFormTemplate[] = [];\r\n\r\n attachmentsComponent: any;\r\n private _behaviorEvent: BehaviorEvent;\r\n public get behaviorEvent(): BehaviorEvent {\r\n return this._behaviorEvent;\r\n }\r\n\r\n public set behaviorEvent(value: BehaviorEvent) {\r\n this._behaviorEvent = value;\r\n this.observableBehaviorEvent.next(value);\r\n }\r\n\r\n public observableBehaviorEvent = new Subject();\r\n observableBehaviorEventStream$ = this.observableBehaviorEvent.asObservable();\r\n\r\n eventComments: Lookup[] = [];\r\n\r\n get locations(): Lookup[] {\r\n if (this.behaviorSharedService.locations == null) {\r\n return [];\r\n } else {\r\n return this.behaviorSharedService.locations;\r\n }\r\n }\r\n\r\n set locations(locations: Lookup[]) {\r\n this.behaviorSharedService.locations = locations;\r\n }\r\n\r\n get incidentCodes(): Lookup[] {\r\n if (this.behaviorSharedService.incidentCodes == null) {\r\n return [];\r\n } else {\r\n return this.behaviorSharedService.incidentCodes;\r\n }\r\n }\r\n\r\n set incidentCodes(codes: Lookup[]) {\r\n this.behaviorSharedService.incidentCodes = codes;\r\n }\r\n\r\n get contextCodes(): Lookup[] {\r\n if (this.behaviorSharedService.contextCodes == null) {\r\n return [];\r\n } else {\r\n return this.behaviorSharedService.contextCodes;\r\n }\r\n }\r\n\r\n set contextCodes(codes: Lookup[]) {\r\n this.behaviorSharedService.contextCodes = codes;\r\n }\r\n\r\n get reportedByCodes(): Lookup[] {\r\n if (this.behaviorSharedService.reportedByCodes == null) {\r\n return [];\r\n } else {\r\n return this.behaviorSharedService.reportedByCodes;\r\n }\r\n }\r\n\r\n set reportedByCodes(codes: Lookup[]) {\r\n this.behaviorSharedService.reportedByCodes = codes;\r\n }\r\n\r\n quickAddAttachments: BehaviorAttachment[] = [];\r\n quickAddAction: BehaviorAction;\r\n quickAddStudents: BehaviorStudent[] = [];\r\n quickAdd: Boolean;\r\n quickAddAFEvent: CustomField[] = [];\r\n quickAddAFIncident: CustomField[] = [];\r\n quickAddAFAction: CustomField[] = [];\r\n quickAddComment: string;\r\n\r\n studentSchedule: BehaviorAction[] = [];\r\n studentTeamSchedule: BehaviorAction[] = [];\r\n scheduleFromDate: Date;\r\n scheduleToDate: Date;\r\n\r\n actionCodes: BehaviorActionCode[] = [];\r\n genderOptions: Lookup[] = [];\r\n raceOptions: Lookup[] = [];\r\n notificationCodes: Lookup[] = [];\r\n hearingTypeCodes: Lookup[] = [];\r\n modifiedCodes: Lookup[] = [];\r\n weaponTypes: Lookup[] = [];\r\n finalSanctions: Lookup[] = [];\r\n parentNotificationCodes: Lookup[] = [];\r\n maxAttachmentSize = 0;\r\n victimTypes: Lookup[] = [];\r\n victimInjury: Lookup[] = [];\r\n TimeCodes: Lookup[] = [];\r\n DrugCodes: Lookup[] = [];\r\n\r\n _filterParam: BehaviorEventsFilterParam;\r\n filterChange = new EventEmitter();\r\n generalPreferences: GeneralPreferences;\r\n behaviorUniqueStudents: BehaviorStudent;\r\n\r\n set filterParam(filterParam: BehaviorEventsFilterParam) {\r\n this._filterParam = filterParam;\r\n this.filterChange.emit();\r\n }\r\n\r\n get filterParam() {\r\n return this._filterParam;\r\n }\r\n createFromSaveClick = false;\r\n formIsDirty = false;\r\n // Intervention\r\n private _behaviorIntervention: BehaviorIntervention;\r\n interventionReasons: Lookup[] = [];\r\n interventionists: Lookup[] = [];\r\n interventionReferrers: Lookup[] = [];\r\n interventionAdministrators: Lookup[] = [];\r\n contractIssued: Lookup[] = [];\r\n contractCategories: Lookup[] = [];\r\n informOthers: Lookup[] = [];\r\n interventionStatus: Lookup[] = [];\r\n gangStatus: Lookup[] = [];\r\n interventionName: Lookup[] = [];\r\n addEditInterventionSchools: School[] = [];\r\n interventionHeaderText: string;\r\n parameters = [];\r\n param = [];\r\n\r\n public get behaviorIntervention(): BehaviorIntervention {\r\n return this._behaviorIntervention;\r\n }\r\n\r\n public set behaviorIntervention(value: BehaviorIntervention) {\r\n this._behaviorIntervention = value;\r\n this.observableIntervention.next(value);\r\n }\r\n\r\n public observableIntervention = new Subject();\r\n observableInterventionStream$ = this.observableIntervention.asObservable();\r\n\r\n public observableInterventionAttachmentRefresh = new Subject();\r\n observableInterventionAttachmentRefreshStream$ = this.observableInterventionAttachmentRefresh.asObservable();\r\n\r\n public observableAssociateInterventionPopup = new Subject();\r\n observableAssociateInterventionPopupStream$ = this.observableAssociateInterventionPopup.asObservable();\r\n\r\n _filterParamIntervention: BehaviorInterventionsFilterParam;\r\n filterChangeIntervention = new EventEmitter();\r\n\r\n set filterParamIntervention(filterParamIntervention: BehaviorInterventionsFilterParam) {\r\n this._filterParamIntervention = filterParamIntervention;\r\n this.filterChangeIntervention.emit();\r\n }\r\n\r\n get filterParamIntervention() {\r\n return this._filterParamIntervention;\r\n }\r\n private _behaviorLetterCurrentStep: number;\r\n public get behaviorLetterCurrentStep(): number {\r\n return this._behaviorLetterCurrentStep;\r\n }\r\n\r\n public set behaviorLetterCurrentStep(value: number) {\r\n this._behaviorLetterCurrentStep = value;\r\n this.observableBehaviorLetterCurrentStep.next(value);\r\n }\r\n\r\n public observableBehaviorLetterCurrentStep = new Subject();\r\n observableBehaviorLetterCurrentStepStream$ = this.observableBehaviorLetterCurrentStep.asObservable();\r\n public generateLetter = false;\r\n public generateMailingLabels: GenerateMailingLabels = new GenerateMailingLabels();\r\n\r\n showActiveLookups(items: Lookup[], field: any) {\r\n if (!Array.isArray(field)) {\r\n return items.filter(o => o.DelStatus == false || o.Code == (!field ? '' : field));\r\n } else {\r\n return items.filter(o => o.DelStatus == false || field.find(f => f == o.Code));\r\n }\r\n }\r\n\r\n isFiltered(): boolean {\r\n return !!this.filterParam.eventDateFrom ||\r\n !!this.filterParam.eventDateTo ||\r\n !!this.filterParam.actionDateFrom ||\r\n !!this.filterParam.actionDateTo ||\r\n !!this.filterParam.incidentCode ||\r\n !!this.filterParam.actionCode ||\r\n !!this.filterParam.reportedToState ||\r\n !!this.filterParam.onlyShowSuspensions ||\r\n !!this.filterParam.offender ||\r\n !!this.filterParam.victim ||\r\n !!this.filterParam.location ||\r\n !!this.filterParam.comment ||\r\n !!this.filterParam.incidentApproveAction;\r\n }\r\n\r\n isFilteredIntervention(): boolean {\r\n return !!this.filterParamIntervention.startDateFrom ||\r\n !!this.filterParamIntervention.startDateTo ||\r\n !!this.filterParamIntervention.endDateFrom ||\r\n !!this.filterParamIntervention.endDateTo ||\r\n !!this.filterParamIntervention.nextMeetingDateFrom ||\r\n !!this.filterParamIntervention.nextMeetingDateTo ||\r\n !!this.filterParamIntervention.interventionist ||\r\n !!this.filterParamIntervention.refferedBy ||\r\n !!this.filterParamIntervention.refferedByOther ||\r\n !!this.filterParamIntervention.notes ||\r\n !!this.filterParamIntervention.status ||\r\n !!(\r\n this.filterParamIntervention.selectedReasons != null &&\r\n this.filterParamIntervention.selectedReasons.length > 0\r\n ) ||\r\n !!(\r\n this.filterParamIntervention.students != null &&\r\n this.filterParamIntervention.students.length > 0\r\n ) ||\r\n !!this.filterParamIntervention.enteredBy;\r\n }\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private behaviorSharedService: BehaviorSharedService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private reportService: ReportingService,\r\n private userPreferencesService: UserPreferencesService,\r\n private sharedService: SharedService\r\n ) {\r\n this._filterParam = new BehaviorEventsFilterParam();\r\n this._filterParamIntervention = new BehaviorInterventionsFilterParam();\r\n this.generalPreferences = this.userPreferencesService.generalPreferences;\r\n }\r\n\r\n // HTTP Calls\r\n public getBehaviorEventCount(yearId = this.yearService.defaultYear.Id, schoolId = this.yearService.defaultYear.SchoolID): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorEventCount?yearId=${yearId}&schoolId=${schoolId}`);\r\n }\r\n\r\n public getBehaviorEvents(yearId: number, schoolId: number, disciplineEventId = 0, pageNumber = 0, pageSize = -1, calledFromCard = false , ShowAllSchoolsEntries = false): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorEvents?yearId=${yearId}&schoolId=${schoolId}&disciplineEventId=${disciplineEventId}&pageNumber=${pageNumber}&pageSize=${pageSize}&calledFromCard=${calledFromCard}&ShowAllSchoolsEntries=${ShowAllSchoolsEntries}`);\r\n }\r\n public getInterventionLookups(interventionId: number, lookupType: string, yearId: number, schoolId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetInterventionLookups?interventionId=${interventionId}&type=${lookupType}&yearId=${yearId}&schoolId=${schoolId}`);\r\n }\r\n\r\n public getBehaviorIncidents(eventId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorIncidents?eventId=${eventId}`);\r\n }\r\n\r\n public getEventAttachments(eventId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorEventAttachments?eventId=${eventId}`);\r\n }\r\n\r\n public getIncidentAttachments(eventId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorIncidentAttachments?incidentId=${eventId}`);\r\n }\r\n\r\n public getIncidentsByEvent(filter: BehaviorIncidentSearch): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'GetIncidentsByEvent', filter);\r\n }\r\n\r\n public getBehaviorActions(eventId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorActions?eventId=${eventId}&yearId=${this.yearService.defaultYear.Id}&schoolId=${this.yearService.defaultYear.SchoolID}`);\r\n }\r\n\r\n public getBehaviorActionCodes(yearId: number, profileArea: string): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorActionCodes?yearId=${yearId}&schoolId=${this.yearService.defaultYear.SchoolID}&profileArea=${profileArea}`);\r\n }\r\n\r\n public saveAttachment(attachment: BehaviorAttachment, attachmentType: string): Observable {\r\n return this.http.post(System.apiURL.Counselor + `SaveBehaviorAttachment?attachmentType=${attachmentType}`, attachment);\r\n }\r\n\r\n public disciplineAttendanceBulkInsertModify(attendance: BehaviorAction[], startDate: Date, endDate: Date, aYIdentifier: string, DA_ID: number): Observable {\r\n const startDateFormatted = formatDate(startDate, 'MM/dd/yyyy', 'en-US');\r\n const endDateFormatted = formatDate(endDate, 'MM/dd/yyyy', 'en-US');\r\n return this.http.post(System.apiURL.Counselor + `DisciplineAttendanceBulkInsertModify?startDate=${startDateFormatted}&endDate=${endDateFormatted}&aYIdentifier=${aYIdentifier}&DA_ID=${DA_ID}`, attendance);\r\n }\r\n\r\n public disciplineTeamAttendanceBulkInsertModify(attendance: BehaviorAction[], startDate: Date, endDate: Date, aYIdentifier: string, DA_ID: number): Observable {\r\n const startDateFormatted = formatDate(startDate, 'MM/dd/yyyy', 'en-US');\r\n const endDateFormatted = formatDate(endDate, 'MM/dd/yyyy', 'en-US');\r\n return this.http.post(System.apiURL.Counselor + `DisciplineTeamAttendanceBulkInsertModify?startDate=${startDateFormatted}&endDate=${endDateFormatted}&aYIdentifier=${aYIdentifier}&DA_ID=${DA_ID}`, attendance);\r\n }\r\n\r\n public saveBehaviorAction(action: BehaviorAction): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'SaveBehaviorAction', action);\r\n }\r\n\r\n public getMaxFileSize(): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetMaxFileSize');\r\n }\r\n\r\n public getStudentCalendar(studentId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetScheduleCalendarByStudentId?studentId=${studentId}&yearId=${yearId}`);\r\n }\r\n\r\n public isOverlapActionDates(studentId: number, fromDate: string, toDate: string, actionId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `IsOverlapActionDates?studentId=${studentId}&fromDate=${fromDate}&toDate=${toDate}&actionId=${actionId}`);\r\n }\r\n\r\n public isDisciplineCodeDetSusExpType(actionCode: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `IsDisciplineCodeDetSusExpType?actionCode=${actionCode}&yearId=${yearId}`);\r\n }\r\n\r\n public isDisciplineCodeSuspensionType(actionCode: string, ayIdentifier: string): Observable {\r\n return this.http.get(System.apiURL.Counselor + `IsDisciplineCodeSuspensionType?actionCode=${actionCode}&ayIdentifier=${ayIdentifier}`);\r\n }\r\n\r\n public getEndDateFromStartAndDuration(calendarId: number, startDate: string, duration: number, holidayIn: boolean): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetEndDateFromStartAndDuration?calendarId=${calendarId}&startDate=${startDate}&duration=${duration}&holidayIn=${holidayIn}`);\r\n }\r\n\r\n public getDurationFromStartAndEndDate(calendarId: number, startDate: string, endDate: string, holidayIn: boolean): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetDurationFromStartAndEndDate?calendarId=${calendarId}&startDate=${startDate}&endDate=${endDate}&holidayIn=${holidayIn}`);\r\n }\r\n\r\n public getReferralsByEventId(eventId: number, schoolId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetDisciplineReferralsByEventId?eventId=${eventId}&schoolId=${schoolId}&yearId=${yearId}`);\r\n }\r\n\r\n public getAttendanceCodeLookup(isTeacher: boolean, schoolId: number, yearId: number): Observable {\r\n return this.sharedService.getAttendanceCodeLookup(isTeacher, schoolId, yearId);\r\n }\r\n\r\n public getStudentScheduleforSuspensionAttendance(ayIdentifier: string, studentId: number, fromDate: Date, toDate: Date, DA_ID: number): Observable {\r\n const startDate = formatDate(fromDate, 'MM/dd/yyyy', 'en-US');\r\n const endDate = formatDate(toDate, 'MM/dd/yyyy', 'en-US');\r\n return this.http.get(System.apiURL.Counselor + `GetStudentScheduleforSuspensionAttendance?ayIdentifier=${ayIdentifier}&studentId=${studentId}&fromDate=${startDate}&toDate=${endDate}&DA_ID=${DA_ID}`);\r\n }\r\n\r\n public getStudentTeamSchedulebyDate(ayIdentifier: string, studentId: number, fromDate: Date, toDate: Date): Observable {\r\n const startDate = formatDate(fromDate, 'MM/dd/yyyy', 'en-US');\r\n const endDate = formatDate(toDate, 'MM/dd/yyyy', 'en-US');\r\n return this.http.get(System.apiURL.Counselor + `GetStudentTeamSchedulebyDate?ayIdentifier=${ayIdentifier}&studentId=${studentId}&fromDate=${startDate}&toDate=${endDate}`);\r\n }\r\n\r\n public createNonStudent(student: BehaviorStudent): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'CreateNonStudent', student);\r\n }\r\n\r\n public deletNonStudent(student: BehaviorStudent): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'DeleteNonStudent', student);\r\n }\r\n\r\n public getBehaviorPolicies(schoolId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorPolicies?schoolId=${schoolId}&yearId=${yearId}`);\r\n }\r\n\r\n public getBehaviorDaysServed(studentId: number, yearId: number, actionId: number, actionType: string, actionCodeType: string): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorDaysServed?studentId=${studentId}&yearId=${yearId}&actionId=${actionId}&actionType=${actionType}&actionCodeType=${actionCodeType}`);\r\n }\r\n\r\n public getBehaviorInterventions(yearId: number, schoolId: number, interventionId: number = 0): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorInterventions?yearId=${yearId}&schoolId=${schoolId}&interventionId=${interventionId}`);\r\n }\r\n\r\n public saveBehaviorIntervention(e: BehaviorIntervention): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'SaveBehaviorIntervention', e);\r\n }\r\n\r\n public getBehaviorLetterTemplates(yearId: number, schoolId: number, templateId: number = 0): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorLetterTemplates?yearId=${yearId}&schoolId=${schoolId}&templateId=${templateId}`);\r\n }\r\n\r\n public saveBehaviorLetterTemplate(blt: EFormTemplate): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'SaveBehaviorLetterTemplate', blt);\r\n }\r\n\r\n public getBehaviorLetters(yearId: number, schoolId: number, DGL_ID: number = 0, templateId: number = 0, includeEForm: boolean = false, includePDF: boolean = false): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetBehaviorLetters?yearId=${yearId}&schoolId=${schoolId}&DGL_ID=${DGL_ID}&templateId=${templateId}&includeEForm=${includeEForm}&includePDF=${includePDF}`);\r\n }\r\n\r\n public saveBehaviorLetters(behaviorLetters: BehaviorLetter[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'SaveBehaviorLetters', behaviorLetters);\r\n }\r\n\r\n public deleteBehaviorLetters(behaviorLetterIDs: number[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'DeleteBehaviorLetters', behaviorLetterIDs);\r\n }\r\n\r\n public saveInterventionMeeting(meetings: InterventionMeeting[], interventionId: number): Observable {\r\n return this.http.post(System.apiURL.Counselor + `SaveInterventionMeeting?interventionId=${interventionId}`, meetings);\r\n }\r\n\r\n public saveInterventionAttachment(attachment: InterventionAttachment, attachmentType: string, userId: number): Observable {\r\n return this.http.post(System.apiURL.Counselor + `SaveInterventionAttachment?attachmentType=${attachmentType}&userId=${userId}`, attachment);\r\n }\r\n\r\n public saveContract(e: Contract): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'SaveContract', e);\r\n }\r\n\r\n public saveAssociateIntervention(userId: number, csmis: CounselorStudentMeetingInterventions[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + `SaveAssociateIntervention?userId=${userId}`, csmis);\r\n }\r\n\r\n public getAssociateInterventions(userId: number, ClId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetAssociateInterventions?userId=${userId}&clId=${ClId}`);\r\n }\r\n\r\n public saveAssociateEvent(userId: number, deis: DisciplineEventIntervention[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + `SaveAssociateEvent?userId=${userId}`, deis);\r\n }\r\n\r\n public saveCommunicaitonLogIntervention(cl: CommunicationLog, i: number, userId: number): Observable {\r\n // NOTE: we copy to prevent other errors from propagating\r\n const copyLog = new CommunicationLog();\r\n Object.assign(copyLog, cl);\r\n copyLog.Reason = '';\r\n copyLog.InformOthers = '';\r\n return this.http.post(System.apiURL.Counselor + `SaveCounselorStudentMeetingIntervention?interventionId=${i}&userId=${userId}`, copyLog);\r\n }\r\n\r\n public saveBehaviorIncident(incident: BehaviorIncident): Observable {\r\n return this.behaviorSharedService.saveBehaviorIncident(incident);\r\n }\r\n\r\n getIncidentDescription(incidentCode: string, getById: boolean, truncate: number = 0): string {\r\n let incidentLookup: Lookup;\r\n if (getById) {\r\n incidentLookup = this.incidentCodes.find(function (i) {\r\n return i.Id.toString() == incidentCode.toString();\r\n });\r\n } else {\r\n incidentLookup = this.incidentCodes.find(function (i) {\r\n return i.Code == incidentCode;\r\n });\r\n }\r\n if (incidentLookup != null) {\r\n if (truncate > 0 && incidentLookup.CodeDescription.length > truncate) {\r\n return incidentLookup.Code + ' - ' + incidentLookup.CodeDescription.substring(0, truncate) + '...';\r\n }\r\n return incidentLookup.Code + ' - ' + incidentLookup.CodeDescription;\r\n } else {\r\n return ' ';\r\n }\r\n }\r\n\r\n public generateNewIncident(): BehaviorIncident {\r\n let id = Math.min.apply(null, this.behaviorEvent.Incidents.map(i => i.Id));\r\n if (id >= 0) {\r\n id = -1;\r\n } else {\r\n id = id - 1;\r\n }\r\n const newIncident = new BehaviorIncident();\r\n newIncident.Id = id;\r\n newIncident.EventId = this.behaviorEvent.Id;\r\n newIncident.InvolvementType = 'Offender';\r\n newIncident.AlcoholRelated = this.behaviorEvent.DefaultAlcoholRelated;\r\n newIncident.DrugRelated = this.behaviorEvent.DefaultDrugRelated;\r\n newIncident.GangRelated = this.behaviorEvent.DefaultGangRelated;\r\n newIncident.HateCrimeRelated = this.behaviorEvent.DefaultHateRelated;\r\n newIncident.WeaponRelated = this.behaviorEvent.DefaultWeaponRelated;\r\n newIncident.IncidentCode = this.behaviorEvent.DefaultIncidentCodeId;\r\n newIncident.ReportedToPolice = this.behaviorEvent.DefaultReportedToPolice;\r\n newIncident.DisciplineIncidentSubCodesId = this.behaviorEvent.DisciplineIncidentSubCodeId;\r\n newIncident.AddedOn = new Date();\r\n newIncident.AddedBy = this.userService.currentUser.Id;\r\n const selectedCode = this.incidentCodes.find(c => c.Code == newIncident.IncidentCode);\r\n if (selectedCode != null) {\r\n newIncident.DCID = parseInt(selectedCode.Id, 10);\r\n }\r\n return newIncident;\r\n }\r\n\r\n refreshAttachmentGrid() {\r\n if (this.attachmentsComponent != null) {\r\n this.attachmentsComponent.refreshGrid();\r\n }\r\n }\r\n\r\n uniqueStudents(studentId: number): string {\r\n // Returning the unique students\r\n if (studentId > 0) {\r\n this.behaviorUniqueStudents = this.behaviorEvent.Students.filter(s => s.Id == studentId && s.Deleted == false)[0];\r\n let studentNumber = '';\r\n if (this.behaviorUniqueStudents != undefined) {\r\n studentNumber += ' ' + this.behaviorUniqueStudents.StudentNumber;\r\n }\r\n return studentNumber;\r\n }\r\n }\r\n\r\n removeElement(array: any[], element: any) {\r\n const index: number = array.indexOf(element);\r\n if (index != -1) {\r\n array.splice(index, 1);\r\n }\r\n }\r\n\r\n public disciplineReferralIncidentLookup(yearId: number): Observable {\r\n return this.behaviorSharedService.disciplineReferralIncidentLookup(yearId, 'Discipline');\r\n }\r\n\r\n public saveBehaviorEvent(e: BehaviorEvent): Observable {\r\n return this.behaviorSharedService.saveBehaviorEvent(e);\r\n }\r\n\r\n public getDisciplineLocations(schoolId: number): Observable {\r\n return this.behaviorSharedService.getDisciplineReferralPlacesLookup(schoolId);\r\n }\r\n\r\n public getDisciplineReferralLookups(lookupType: string, yearId: number, schoolId: number): Observable {\r\n return this.behaviorSharedService.getDisciplineReferralLookups(lookupType, yearId, schoolId);\r\n }\r\n\r\n public getInterventionById(yearId: number, schoolId: number, interventionId: number) {\r\n this.getBehaviorInterventions(yearId, schoolId, interventionId).subscribe((interventions: BehaviorIntervention[]) => {\r\n this.behaviorIntervention = _.cloneDeep(interventions[0]);\r\n if (this.behaviorIntervention.NextMeetingDate && this.getCellClass(this.behaviorIntervention.NextMeetingDate)) {\r\n this.behaviorIntervention.nextMValue = true;\r\n }\r\n });\r\n }\r\n\r\n getCellClass(value) {\r\n if (value != null) {\r\n return (moment(moment(value, 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY'), 'MM/DD/YY').isBefore(moment(new Date(), 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY')) ? true : false);\r\n }\r\n }\r\n\r\n refresInterventionAttachmentGrid(attachment: InterventionAttachment[]) {\r\n this.observableInterventionAttachmentRefresh.next(attachment);\r\n }\r\n\r\n openAssociateInterventionPopup(aip: AssociateInterventionPopup) {\r\n this.observableAssociateInterventionPopup.next(aip);\r\n }\r\n\r\n generateMailingAddresses(studentIds: number[]) {\r\n if (studentIds && studentIds.length > 0) {\r\n let xml = '';\r\n xml += '';\r\n studentIds.forEach(studentId => {\r\n xml += '';\r\n xml += '' + studentId + '';\r\n xml += '';\r\n });\r\n xml += '';\r\n\r\n const studentIdParameter: string = '@p_Student_Id=\\'' + xml + '\\'';\r\n const addressTypeParameter = '@AddressType=\\'Default\\'';\r\n const queryString: string = studentIdParameter + ', ' + addressTypeParameter;\r\n\r\n this.reportService.runManualReport(30075, queryString).subscribe(results => {\r\n this.runReportByType('PDF', results, 'MailingLabels');\r\n });\r\n }\r\n }\r\n\r\n runReportByType(reportType: string, results, name: string): void {\r\n\r\n try {\r\n\r\n const byteCharacters: string = atob(results);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n\r\n const byteArray: Uint8Array = new Uint8Array(byteNumbers);\r\n\r\n const fileExtension = '.pdf';\r\n const mimeType = 'application/pdf';\r\n\r\n let FileAsBlob: Blob;\r\n\r\n FileAsBlob = new Blob([byteArray], { type: 'application/pdf' });\r\n\r\n // For other browsers:\r\n // Create a link pointing to the ObjectURL containing the blob.\r\n\r\n const reportNameWithoutSpaces: string = name.replace(/ /g, '');\r\n\r\n const data = window.URL.createObjectURL(FileAsBlob);\r\n const link = document.createElement('a');\r\n link.href = data;\r\n link.download = reportNameWithoutSpaces + fileExtension;\r\n link.click();\r\n\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n setTimeout(this.revokeObjectURL(data), 100);\r\n\r\n } catch {\r\n }\r\n\r\n } // end runReportPDF\r\n\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n revokeObjectURL(data): any {\r\n window.URL.revokeObjectURL(data);\r\n }\r\n\r\n // V9 Only\r\n generateV9MailingAddresses(generateMailingLabels: GenerateMailingLabels, reportName: string, reportType: number): Observable {\r\n\r\n this.generateLetter = false;\r\n this.parameters = [];\r\n this.param = [];\r\n let Ids = '';\r\n Ids = generateMailingLabels.studentIds.join(',');\r\n if (generateMailingLabels.householdParents === false && generateMailingLabels.nonresidentParents === false) {\r\n generateMailingLabels.householdParents = true;\r\n }\r\n this.param.push({ ParamName: 'lngSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n this.param.push({ ParamName: 'strStudentSelectionStatus', ParamStringValue: 'Custom' });\r\n this.param.push({ ParamName: 'strStudentIds', ParamStringValue: Ids });\r\n this.param.push({ ParamName: 'blnPrimaryParentsAddress', ParamStringValue: generateMailingLabels.householdParents });\r\n this.param.push({ ParamName: 'blnAlternateParentsAddress', ParamStringValue: generateMailingLabels.nonresidentParents });\r\n this.param.push({ ParamName: 'blnAlternateParAddrOnlyIfRequested', ParamStringValue: generateMailingLabels.onlyIfRequested });\r\n this.param.push({ ParamName: 'blnParentsCombinedName', ParamStringValue: true });\r\n this.param.push({ ParamName: 'blnParent1NameOnly', ParamStringValue: false });\r\n this.param.push({ ParamName: 'blnStudentNameOnly', ParamStringValue: false });\r\n this.param.push({ ParamName: 'blnIsGenericParentsGreeting', ParamStringValue: false });\r\n this.param.push({ ParamName: 'strGenericParentsGreeting', ParamStringValue: '' });\r\n this.param.push({ ParamName: 'blnGenericParentsGreetingIncludeName', ParamStringValue: false });\r\n\r\n this.param.push({ ParamName: 'lngLinePerPage', ParamStringValue: 10 });\r\n this.param.push({ ParamName: 'lngColumnsPerPage', ParamStringValue: 3 });\r\n this.param.push({ ParamName: 'lngStartDown', ParamStringValue: 1 });\r\n this.param.push({ ParamName: 'lngStartAcross', ParamStringValue: 1 });\r\n this.param.push({ ParamName: 'blnCustomInformation', ParamStringValue: false });\r\n this.param.push({ ParamName: 'strBody1', ParamStringValue: '' });\r\n this.param.push({ ParamName: 'blnReverseName', ParamStringValue: true });\r\n this.param.push({ ParamName: 'blnAutoSortZipCode', ParamStringValue: false });\r\n this.param.push({ ParamName: 'lngPrintCopies', ParamStringValue: 1 });\r\n this.param.push({ ParamName: 'blnPrintDulicateAddress', ParamStringValue: true });\r\n this.param.push({ ParamName: 'blnAllCaps', ParamStringValue: true });\r\n\r\n this.parameters.push(JSON.stringify(this.param));\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: 0,\r\n DocumentName: reportName,\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: '',\r\n ReportParameters: this.parameters,\r\n ReportType: reportType\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n const win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n win.focus();\r\n const timer = setInterval(() => {\r\n if (!timer) {\r\n clearInterval(timer);\r\n }\r\n if (win.closed) {\r\n // using for reprint lables only for print only\r\n // if (this.behaviorLetterCurrentStep < 5 && generateMailingLabels.printOnly) {\r\n // this.behaviorLetterCurrentStep = this.behaviorLetterCurrentStep + 1;\r\n // }\r\n // else if (this.behaviorLetterCurrentStep < 6 && generateMailingLabels.printOnly == false) {\r\n // this.behaviorLetterCurrentStep = this.behaviorLetterCurrentStep + 1;\r\n // }\r\n clearInterval(timer);\r\n win.focus();\r\n }\r\n }, 1000);\r\n return this.observableBehaviorLetterCurrentStepStream$;\r\n }\r\n\r\n public getEmailAddressessByStudentIds(studentIds: number[], studentStatus: string, reverseName = 0): Observable {\r\n const siteYearId = this.yearService.defaultYear.SiteYearId;\r\n return this.http.post(System.apiURL.Counselor + `GetEmailAddressessByStudentIds?studentStatus=${studentStatus}&siteYearId=${siteYearId}&reverseName=${reverseName}`, studentIds);\r\n }\r\n}\r\n","import { BehaviorStudent } from './behavior-student.model';\r\nimport { BehaviorIncident } from './behavior-incident.model';\r\nimport { BehaviorAttachment } from './behavior-attachment.model';\r\nimport { BehaviorAction } from './behavior-action.model';\r\nimport { BehaviorFunctional } from './behavior-functional.model';\r\n\r\nexport class BehaviorEvent {\r\n Id = -1;\r\n EventNumber = '';\r\n StaffName = '';\r\n EventName = '';\r\n Description = '';\r\n AYIdentifier = '';\r\n Date: Date | string = null; // DTO returns a string which can sometimes contain an offset\r\n // Allowing string type allows the offset to be removed without causing additional timezone issues by converting to Date object\r\n SentOn: Date = null;\r\n StaffComment = '';\r\n AdminComment = '';\r\n AddedBy: number;\r\n AddedByName: string;\r\n AddedOn: Date = null;\r\n ViewedByAdmin: number;\r\n ViewedByAdminOn: Date = null;\r\n Location = '';\r\n Publish: boolean;\r\n ClosedEvent: boolean;\r\n Context = '';\r\n SiteId: number;\r\n Reported: boolean;\r\n ReportedBy: number;\r\n CaseNumber = '';\r\n ActionsNotReq: boolean;\r\n LastUpBy: number;\r\n LastUpByName: string;\r\n LastUpOn: Date = null;\r\n OutOfDistrictSchool = '';\r\n Suspended: boolean;\r\n Students: BehaviorStudent[] = [];\r\n SchoolId = -1;\r\n Deleted: boolean;\r\n Incidents: BehaviorIncident[] = [];\r\n Actions: BehaviorAction[] = [];\r\n Attachments: BehaviorAttachment[] = [];\r\n DefaultIncidentCodeId: string;\r\n DefaultAlcoholRelated: boolean;\r\n DefaultGangRelated: boolean;\r\n DefaultDrugRelated: boolean;\r\n DefaultHateRelated: boolean;\r\n DefaultWeaponRelated: boolean;\r\n DefaultReportedToPolice: boolean;\r\n ReferralId: number;\r\n IncidentTime: string;\r\n RoomNumber: string;\r\n IncidentsFunctionalCodeId: number;\r\n DisciplineIncidentSubCodeId: number;\r\n Functional: BehaviorFunctional[] = [];\r\n LocationId = '';\r\n OffenderType: string;\r\n // not part of DTO\r\n readOnly = false;\r\n // v9\r\n IncidentId: number;\r\n CodeDesc = '';\r\n StateCode = '';\r\n SiteName: string;\r\n EnteredBy: number;\r\n AdminVerified: boolean;\r\n ViolenceRelated: boolean;\r\n CriminalOffense: boolean;\r\n IncidentWeaponCodeId: number;\r\n IncidentDrugCodeId: number;\r\n IncidentTimeCodeId: number;\r\n ActionCodeDesc:string;\r\n}\r\n","import { BehaviorAttachment } from './behavior-attachment.model';\r\nimport { BehaviorStudent } from './behavior-student.model';\r\n\r\nexport class BehaviorIncident {\r\n Id: number;\r\n EventId: number;\r\n StudentId: number;\r\n IncidentCode = '';\r\n DCID: number;\r\n Comments = '';\r\n AddedBy: number;\r\n AddedOn: Date;\r\n LastUpBy: number;\r\n LastUpOn: Date;\r\n GangRelated = false;\r\n AlcoholRelated = false;\r\n DrugRelated = false;\r\n HateCrimeRelated = false;\r\n WeaponRelated = false;\r\n ReportedToPolice = false;\r\n WeaponDescription = '';\r\n DelStatus = false;\r\n DelBy: number;\r\n InvolvementType = '';\r\n Firearms = '';\r\n NonFireArms = '';\r\n IsNonStudent = false;\r\n IsUnknownStudent = false;\r\n MemId: number;\r\n IsReportedToState = false;\r\n CampusOfResponsibility: number;\r\n ConsecutiveDays: number;\r\n PublishCommentsToParent = false;\r\n IncidentNumber = '';\r\n Attachments: BehaviorAttachment[] = [];\r\n SeriousBodilyInjury = false;\r\n InfractionCost = '';\r\n // v9\r\n ActionCode: string;\r\n IncidentsFunctionalCodeId: number;\r\n FunctionalMotivational: string;\r\n SchoolId: number;\r\n AYIdentifier: string;\r\n IncidentTime: string;\r\n Date: Date = null;\r\n Location = '';\r\n ReportedBy: number;\r\n Students: BehaviorStudent[] = [];\r\n ZeroTolerancePolicy: boolean;\r\n EducationalServices: boolean;\r\n WeaponCode: number;\r\n InterimAlternativeSetting: string;\r\n DisciplineModifier: string;\r\n ConversionDays: string;\r\n PrimaryWeaponCode: number;\r\n SecondaryWeaponCode: number;\r\n TertiaryWeaponCode: number;\r\n ViolentCriminalArrest: false;\r\n PerpetratorInjury: string;\r\n SchoolPolicyDescription: string;\r\n Seclusion: boolean;\r\n Restraint: boolean;\r\n AcademicServices: string;\r\n BehaviorServices: string;\r\n ReengagementMeeting: Date = null;\r\n SubmissionPetitionForReadmission: Date = null;\r\n GrantedPetitionForReadmission: Date = null;\r\n PetitionforExtension: string;\r\n AppealCode: string;\r\n ReengagementPlan: string;\r\n StudentNickName: string;\r\n NonStudentId: number;\r\n AddedByStaff: string;\r\n IncidentRefferalId: number;\r\n DisciplineIncidentSubCodesId: number;\r\n EnteredBy: number;\r\n}\r\n","import { TylTranslation } from '../../../shared-components/models/tyl-translation.model';\r\nimport { EFormTemplate } from '../../../shared-components/e-forms/e-form-template.model';\r\n\r\nexport class BehaviorLetter {\r\n Id: number;\r\n IncidentId: number;\r\n StudentId: number;\r\n TemplateId: number;\r\n StudentNumberIdentifier: string;\r\n FirstName: string;\r\n LastName: string;\r\n Gender: string;\r\n GradeIdentifier: string;\r\n GradeLevelId: number;\r\n SchoolId: number;\r\n AYIdentifier: string;\r\n EventName: string;\r\n TemplateName: string;\r\n FormData: string;\r\n base64PDF: string;\r\n AddedBy: number;\r\n AddedByName: string;\r\n AddedOn: Date;\r\n LastUpBy: number;\r\n LastUpOn: Date;\r\n DelStatus: boolean;\r\n Selected: boolean = false;\r\n // V9 Only\r\n DocId: number;\r\n FileType: string;\r\n DocTypeId: number;\r\n\tletterOnlyForNonResidentParent = false;\r\n\r\n}\r\n\r\nexport class GenerateMailingLabels {\r\n studentIds: number[] = [];\r\n householdParents = false;\r\n nonresidentParents = false;\r\n onlyIfRequested = false;\r\n printOnly = true;\r\n message = '';\r\n subject = 'Behavior Letter Notification';\r\n translations: TylTranslation[] = [];\r\n action = '';\r\n steps: number;\r\n behaviorLetterTemplate: EFormTemplate;\r\n behaviorLetterEmailAddress: BehaviorLetterEmailAddress[] = [];\r\n}\r\n\r\nexport class BehaviorLetterEmailAddress {\r\n ID: number;\r\n Student_ID: string;\r\n StudentName: string;\r\n EmailId: string;\r\n EmailType: string;\r\n RequestingMail: boolean;\r\n SiteYear: string;\r\n ParentName: string;\r\n}\r\n\r\n","import { StudentAlerts } from '../../../shared-components/models/student-alerts.model';\r\n\r\nexport class BehaviorStudent {\r\n Id: number = null;\r\n MemId: number = null;\r\n StudentId: number = null;\r\n FirstName = '';\r\n MiddleName = '';\r\n LastName = '';\r\n Nickname = '';\r\n StudentNumber: string = null;\r\n IncidentCount: number = null;\r\n Involvement: string = null;\r\n Alerts: StudentAlerts[] = [];\r\n Suspended = false;\r\n IsValidDisciplineTeam = false;\r\n IsUnknownStudent = false;\r\n PhoneNumber = '';\r\n Gender: string = null;\r\n Race = '';\r\n DOB: Date = null;\r\n Deleted = false;\r\n FormattedName = '';\r\n UserHasPermissionForStudent: boolean;\r\n // v9\r\n InvolvementType: number;\r\n NonStudentId: number;\r\n VictimStrId: string;\r\n VictimTypeId: number;\r\n VictimInjuryId: number;\r\n SchoolChoiceVictim: string;\r\n }\r\n","export class SchoolsForRemoveGradeLevelRequirements {\r\n\r\n // Server Properties\r\n School_ID: number;\r\n SchoolCode: string;\r\n SchoolName: string;\r\n GradeLevels: string;\r\n InUse: boolean;\r\n\r\n Selected: boolean;\r\n\r\n // Accessors\r\n get kendoSelectable(): boolean {\r\n return !this.InUse;\r\n }\r\n\r\n get schoolDisplay(): string {\r\n return (this.SchoolCode ? this.SchoolCode + '-' : '') + this.SchoolName;\r\n }\r\n}","import { SchoolsForRemoveGradeLevelRequirements } from './district-course-request/remove-requirements/schools-for-remove-grade-level-requirements.model';\r\nimport { Injectable, EventEmitter } from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {System} from '../../../shared-components/System';\r\nimport {CourseRequestDistrictGradeLevelCreditsDTO} from './models/districtGradeLevelCreditsSource.model';\r\nimport {\r\n CourseRequestDistrictGradeLevelRequirementsDTO,\r\n DistrictCoursesForRequirementDTO,\r\n SchoolsForRequirementAssignmentDTO\r\n} from './models/districtGradeLevelRequirements.model';\r\nimport {YearService} from '../../../shared-components/year/year.service';\r\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask';\r\nimport {SchoolCourseRequestModel} from './models/school-course-request-model';\r\nimport {UserService} from '../../../shared-components/user/user.service';\r\nimport {SchoolGradeLevelCreditsDTO} from './models/schoolGradeLevelCredits.model';\r\nimport {SchoolGradeLevelRequirementDTO} from './models/schoolGradeLevelRequirement.model';\r\nimport {LoginService} from '../../../shared-modules/login/login.service';\r\nimport {RequestTallyCourseHeaderDTO} from './models/requestTallyCourse.model';\r\nimport {RequestConflictModelDTO} from './models/requestConflict.model';\r\nimport {SchoolStaffDTO} from './models/SchoolStaff.model';\r\nimport {SchoolTermsDTO} from './models/schoolTerms.model';\r\nimport {\r\n CourseRequestStudentSummarySpecialStudentFilterModel,\r\n CourseRequestStudentSummaryModel,\r\n MassAddCourseRequestsDTO,\r\n CourseRequestStudentSummaryFilterModel\r\n} from './models/courserequestStudentSummary.model';\r\nimport {RebuildRequestConflictParametersDTO} from './models/rebuildRequestConflictParameters.model';\r\nimport {ScheduleFolderService} from '../schedule-folder/schedule-folder.service';\r\nimport {IdentifiedConflictsDTO} from './models/identifiedConflicts.model';\r\nimport {StudentScheduleProgressDTO} from '../shared/student-schedule-progress/student-schedule-progress.model';\r\nimport {StudentSchedulingParameters} from '../shared/student-scheduling-parameters.model';\r\nimport { ClearStudentSectionsDTO } from './models/clear-student-sections.model';\r\nimport { map, take } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class CourseRequestMgmtService {\r\n\r\n\r\n // any course request changes made on the Course Request tab\r\n // increment _requestsChanged +1\r\n private _requestsChanged = 0;\r\n public observableRequestsChanged = new Subject();\r\n observableRequestsChangedStream$ = this.observableRequestsChanged.asObservable();\r\n\r\n get requestsChanged(): number {\r\n return this._requestsChanged;\r\n }\r\n\r\n set requestsChanged(value: number) {\r\n this._requestsChanged = value;\r\n this.observableRequestsChanged.next(this._requestsChanged);\r\n }\r\n\r\n // any course request changes made on the Student Summary tab\r\n // increment _studentSummaryRequestsChanged +1\r\n private _studentSummaryRequestsChanged = 0;\r\n public observableStudentSummaryRequestsChanged = new Subject();\r\n observableStudentSummaryRequestsChangedStream$ = this.observableStudentSummaryRequestsChanged.asObservable();\r\n\r\n get studentSummaryRequestsChanged(): number {\r\n return this._studentSummaryRequestsChanged;\r\n }\r\n\r\n set studentSummaryRequestsChanged(value: number) {\r\n this._studentSummaryRequestsChanged = value;\r\n this.observableStudentSummaryRequestsChanged.next(this._studentSummaryRequestsChanged);\r\n }\r\n\r\n districtCourses: DistrictCoursesForRequirementDTO[];\r\n schoolCourses: DistrictCoursesForRequirementDTO[];\r\n creditsDecimalPlaces = 2;\r\n\r\n modifyRequirementEvent = new EventEmitter();\r\n OnNavigateToStudentSummaryTab = new EventEmitter();\r\n OnNavigateToStudentCourseRequestTab = new EventEmitter();\r\n\r\n schoolCRM_selectedTab: string;\r\n districtCRM_selectedTab: string;\r\n\r\n // permissions\r\n allow_DistrictCourseRequestSetupWrite = true;\r\n allow_GradeLevelCourseRequestSetupWrite = true;\r\n\r\n // Filter Properties\r\n studentSummarySpecialFilter: CourseRequestStudentSummarySpecialStudentFilterModel;\r\n studentSummaryFilter = new CourseRequestStudentSummaryFilterModel();\r\n\r\n constructor(\r\n private http: HttpClient, private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private scheduleFolderService: ScheduleFolderService\r\n ) {\r\n }\r\n\r\n isTabSelected(tab): boolean {\r\n return this.schoolCRM_selectedTab === tab;\r\n }\r\n\r\n isDistrictTabSelected(tab): boolean {\r\n return this.districtCRM_selectedTab === tab;\r\n }\r\n\r\n getDistrictGradeLevelCredits(): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetCourseRequestDistrictGradeLevelCredits?ayIdentifier=' + this.yearService.defaultYear.AYIdentifier);\r\n }\r\n\r\n updateDistrictGradeLevelCredits(data: CourseRequestDistrictGradeLevelCreditsDTO[]): Observable {\r\n const queryString = '?ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.post(System.apiURL.Counselor + 'UpdateCourseRequestDistrictGradeLevelCredits' + queryString, data);\r\n }\r\n\r\n /* getCourseRequestGetDistrictGradeLevelRequirements(): Observable {\r\n return this.getCourseRequestGetDistrictGradeLevelRequirementsBySchool(-1);\r\n } */\r\n\r\n getCourseRequestGetDistrictGradeLevelRequirementsBySchool(school_Id: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetCourseRequestGetDistrictGradeLevelRequirements?ayIdentifier=' + this.yearService.defaultYear.AYIdentifier + '&siteId=' + school_Id);\r\n }\r\n\r\n getCourseRequestGetDistrictGradeLevelRequirementsByYear(ayIdentifier: string): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetCourseRequestGetDistrictGradeLevelRequirements?ayIdentifier=' + ayIdentifier + '&siteId=-1');\r\n }\r\n\r\n\r\n getSchoolsForRequirementAssignment(requirements: string): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetSchoolsForRequirementAssignment?requirements=' + requirements);\r\n }\r\n\r\n assignSchoolToRequirements(requirements: string, schools: number[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'AssignSchoolToRequirements?requirements=' + requirements, schools);\r\n }\r\n\r\n deleteDistrictGradeLevelRequirement(requirement_ID: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'deleteDistrictGradeLevelRequirement?requirementId=' + requirement_ID);\r\n }\r\n\r\n getCoursesForDistrictRequirement(schoolId = -1): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetCoursesForDistrictRequirement?ayIdentifier=' + this.yearService.defaultYear.AYIdentifier + '&schoolId=' + schoolId);\r\n }\r\n\r\n getSchoolCourseRequests(schoolId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetSchoolCourseRequests?ayIdentifier=' + this.yearService.defaultYear.AYIdentifier + '&schoolId=' + schoolId);\r\n }\r\n\r\n deleteSchoolCourseRequests(data: SchoolCourseRequestModel[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'DeleteSchoolCourseRequests', data);\r\n }\r\n\r\n approveSchoolCourseRequests(data: SchoolCourseRequestModel[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'ApproveSchoolCourseRequests', data);\r\n }\r\n\r\n updateSchoolCourseRequests(data: SchoolCourseRequestModel[]): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'UpdateSchoolCourseRequests', data);\r\n }\r\n\r\n updateDistrictGradeLevelRequirement(data: CourseRequestDistrictGradeLevelRequirementsDTO): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'UpdateDistrictGradeLevelRequirement?ayIdentifier=' + this.yearService.defaultYear.AYIdentifier, data);\r\n }\r\n\r\n getSchoolGradeLevelCreditsOverview(siteYear_ID: number): Observable {\r\n const queryString = '?siteYear_ID=' + siteYear_ID;\r\n return this.http.get(System.apiURL.Counselor + 'GetSchoolGradeLevelCreditOveriew' + queryString);\r\n }\r\n\r\n GetSchoolGradeLevelCreditsForAddEdit(schoolId: number): Observable {\r\n const queryString = '?school_ID=' + schoolId + '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.get(System.apiURL.Counselor + 'GetSchoolGradeLevelCreditsForAddEdit' + queryString);\r\n }\r\n\r\n UpdateSchoolGradeLevelCredits(updateType: string, data: SchoolGradeLevelCreditsDTO[]): Observable {\r\n const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId) + '&updateType=' + updateType;\r\n return this.http.post(System.apiURL.Counselor + 'UpdateCourseRequestSchoolGradeLevelCredits' + queryString, data);\r\n }\r\n\r\n GetSchoolGradeLevelRequirements(): Observable {\r\n const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId) + '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.get(System.apiURL.Counselor + 'GetSchoolGradeLevelRequirements' + queryString);\r\n }\r\n\r\n UpdateSchoolGradeLevelRequirement(updateType: string, data: any): Observable {\r\n const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId) + '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier + '&updateType=' + updateType;\r\n return this.http.post(System.apiURL.Counselor + 'UpdateSchoolGradeLevelRequirement' + queryString, data);\r\n }\r\n\r\n GetRequestTallyCourses(): Observable {\r\n const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId)\r\n + '&scheduleFolders_ID=' + this.scheduleFolderService.selectedScheduleFolder.ID;\r\n return this.http.get(System.apiURL.Counselor + 'GetRequestTallyCourses' + queryString);\r\n }\r\n\r\n getRequestConflicts(schoolId: number, requestParameters: RebuildRequestConflictParametersDTO): Observable {\r\n // const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId);\r\n return this.http.post(System.apiURL.Counselor + 'GetRequestConflicts?ayIdentifier=' + this.yearService.defaultYear.AYIdentifier + '&schoolDomain=' + schoolId, requestParameters);\r\n }\r\n\r\n getSchoolStaff(schoolDomain: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetSchoolStaff?schoolDomain=' + schoolDomain);\r\n }\r\n\r\n getSchoolTerms(): Observable {\r\n const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId);\r\n return this.http.get(System.apiURL.Counselor + 'GetSchoolTerms' + queryString);\r\n }\r\n\r\n getCourseRequestStudentSummary(scheduleFolders_ID: number, specialFilter: CourseRequestStudentSummarySpecialStudentFilterModel): Observable {\r\n const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId) + '&scheduleFolders_ID=' + scheduleFolders_ID;\r\n return this.http.post(System.apiURL.Counselor + 'GetCourseRequestStudentSummary' + queryString, specialFilter);\r\n }\r\n\r\n AddRemoveCourseRequestInMass(data: any, addedByStudent: boolean, siteYear_ID?: number): Observable {\r\n siteYear_ID = siteYear_ID == null ? this.yearService.defaultYear.Id : siteYear_ID;\r\n const queryString = '?siteYear_ID=' + siteYear_ID + '&AddedByStudent=' + addedByStudent;\r\n return this.http.post(System.apiURL.Counselor + 'AddRemoveCourseRequestInMass' + queryString, data);\r\n }\r\n\r\n RebuildRequestConflicts(schoolId: number, data: RebuildRequestConflictParametersDTO): Observable {\r\n const queryString = '?schoolDomain=' + schoolId + '&siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId) + '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.post(System.apiURL.Counselor + 'RebuildRequestConflicts' + queryString, data);\r\n }\r\n\r\n OverrideConflicts(data: IdentifiedConflictsDTO[]): Observable {\r\n const queryString = '?siteYear_ID=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId);\r\n return this.http.post(System.apiURL.Counselor + 'OverrideConflicts' + queryString, data);\r\n }\r\n\r\n checkStudentScheduleBatch() {\r\n const queryString = '?scheduleFolders_ID=' + this.scheduleFolderService.selectedScheduleFolder.ID;\r\n return this.http.get(System.apiURL.Counselor + 'CheckStudentScheduleBatch' + queryString);\r\n }\r\n\r\n createStudentScheduleBatch(scheduleFolders_ID: number, data: StudentSchedulingParameters): Observable {\r\n const queryString = '?scheduleFolders_ID=' + scheduleFolders_ID;\r\n // const data = [];\r\n // data.push(StudentIDs);\r\n return this.http.post(System.apiURL.Counselor + 'CreateStudentScheduleBatch' + queryString, data);\r\n }\r\n\r\n getStudentScheduleBatchData(Batch_ID: number): Observable {\r\n const queryString = '?Batch_ID=' + Batch_ID;\r\n return this.http.get(System.apiURL.Counselor + 'GetStudentScheduleBatchData' + queryString);\r\n }\r\n\r\n performStudentScheduling(data: StudentSchedulingParameters): Observable {\r\n const queryString = '?scheduleFolder_ID=' + this.scheduleFolderService.selectedScheduleFolder.ID;\r\n return this.http.post(System.apiURL.Counselor + 'PerformStudentScheduling' + queryString, data);\r\n }\r\n\r\n processStudentScheduleBatch(batch_ID: number, includeAlternateRequests: boolean, data: StudentSchedulingParameters): Observable {\r\n const queryString = '?batch_ID=' + batch_ID + '&includeAlternateRequests=' + includeAlternateRequests;\r\n return this.http.post(System.apiURL.Counselor + 'ProcessStudentScheduleBatch' + queryString, data);\r\n }\r\n\r\n stopStudentScheduleBatch(batch_ID: number): Observable {\r\n const queryString = '?batch_ID=' + batch_ID;\r\n return this.http.get(System.apiURL.Counselor + 'StopStudentScheduleBatch' + queryString);\r\n }\r\n\r\n saveStudentScheduleBatch(batch_ID: number): Observable {\r\n const queryString = '?batch_ID=' + batch_ID;\r\n return this.http.get(System.apiURL.Counselor + 'SaveStudentScheduleBatch' + queryString);\r\n }\r\n\r\n rejectStudentScheduleBatch(batch_ID: number): Observable {\r\n const queryString = '?batch_ID=' + batch_ID;\r\n return this.http.get(System.apiURL.Counselor + 'RejectStudentScheduleBatch' + queryString);\r\n }\r\n\r\n getNumberMask() {\r\n return {\r\n guide: true,\r\n mask: createNumberMask({\r\n prefix: '',\r\n includeThousandsSeparator: false,\r\n integerLimit: 2,\r\n allowDecimal: true,\r\n decimalLimit: this.creditsDecimalPlaces\r\n })\r\n };\r\n }\r\n\r\n getCreditFormatPipString() {\r\n return '1.' + this.creditsDecimalPlaces.toString();\r\n }\r\n\r\n clearStudentSchedule(scheduleFoldersId: number, studentIds: number[]) {\r\n const queryString = '?scheduleFoldersId=' + scheduleFoldersId;\r\n return this.http.post(System.apiURL.Counselor + 'ClearStudentSections' + queryString, studentIds);\r\n }\r\n\r\n massAddRequiredCourseRequests(studentIds: number[]) {\r\n const queryString = '?siteYearId=' + ((this.loginService.LoginSettings.V10 == true) ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId);\r\n return this.http.post(System.apiURL.Counselor + 'MassAddRequiredCourseRequests' + queryString, studentIds);\r\n }\r\n\r\n\r\n getSchoolsForRemoveGradeLevelRequirements(gradeLevelRequirementId: number) {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id\r\n + '&gradeLevelRequirementId=' + gradeLevelRequirementId;\r\n return this.http.get(\r\n System.apiURL.Counselor + 'GetSchoolsForRemoveGradeLevelRequirements' + queryString\r\n ).pipe(\r\n take(1),\r\n map(schools => {\r\n for (let i = 0; i < schools.length; i++) {\r\n schools[i] = System.convert(schools[i], new SchoolsForRemoveGradeLevelRequirements());\r\n }\r\n return schools;\r\n })\r\n );\r\n }\r\n\r\n removeGradeLevelRequirementsForSchools(sites: number[], gradeLevelRequirementId: number) {\r\n const queryString = '?gradeLevelRequirementId=' + gradeLevelRequirementId;\r\n return this.http.post(\r\n System.apiURL.Counselor + 'RemoveGradeLevelRequirementsFromSchools' + queryString,\r\n sites\r\n ).pipe(\r\n take(1)\r\n );\r\n }s\r\n}\r\n","\r\nimport { IdentifiedConflictsDTO } from './identifiedConflicts.model';\r\n\r\nexport class MassAddCourseRequestsDTO {\r\n identifiedConflicts: IdentifiedConflictsDTO[] = [];\r\n addedCourseRequests: AddedCourseRequestsDTO[] = [];\r\n modifiedCourseRequests: ModifiedCourseRequestsDTO[] = [];\r\n}\r\n\r\nexport class AddedCourseRequestsDTO {\r\n ID: number;\r\n Student_ID: number;\r\n DistrictCourse_ID: number;\r\n}\r\n\r\nexport class ModifiedCourseRequestsDTO {\r\n ID: number;\r\n Modification: string;\r\n Student_ID: number;\r\n DistrictCourse_ID: number;\r\n}\r\n\r\nexport class CourseRequestStudentSummaryModel {\r\n Student_Id: number;\r\n LastName: string;\r\n FirstName: string;\r\n StudentNumber: string;\r\n GradeIdentifier: string;\r\n SumOfEarnedCredit: number;\r\n NoOfFailedCourse: number;\r\n NoOfRequestCourse: number;\r\n SumOfRequestCredit: number;\r\n NoOfUnmetRequirement: number;\r\n NoOfConflictRequest: number;\r\n NoOfRequestReview: number;\r\n NoOfScheduledCourse: number;\r\n PrimaryCounselorId: number;\r\n SumOfScheduledCredit: number;\r\n StudentCourseRequestedAndScheduledDetails: StudentCourseRequestedAndScheduledDetailDTO[] = [];\r\n detailRow: boolean;\r\n displayRequestCourseCredit: string;\r\n displayScheduledCourseCredit: string;\r\n}\r\n\r\nexport class StudentCourseRequestedAndScheduledDetailDTO {\r\n CourseRequestStudentCourseRequests_ID: number;\r\n Student_Id: number;\r\n SchoolCourses_ID: number;\r\n DistrictCourse_ID: number;\r\n RequestNbr: number; // instance of a request, to multiple requests for the same SchoolCourses_ID\r\n CourseFormattedName: string;\r\n CourseRequirementName: string;\r\n Credits: number;\r\n TermType: string;\r\n isScheduled: boolean;\r\n Classes_ID: number;\r\n ClassName: string;\r\n MeetingPatterns: string;\r\n ClassRooms: string;\r\n ClassPeriods: string;\r\n Teachers: string;\r\n Terms: string;\r\n ShceduledStudentCountInClass: number;\r\n isNewlyRequested: boolean; // True if request has been added via student summary detail\r\n Type: string;\r\n Status: string;\r\n LinkedAlternate: string;\r\n}\r\n\r\nexport class CourseRequestStudentSummaryFilterModel {\r\n students: number[] = [];\r\n specialFilter: CourseRequestStudentSummarySpecialStudentFilterModel = null;\r\n gradeLevels = [];\r\n requestCoursesMin: number = null;\r\n requestCoursesMax: number = null;\r\n requestCreditsMin: number = null;\r\n requestCreditsMax: number = null;\r\n scheduledCoursesMin: number = null;\r\n scheduledCoursesMax: number = null;\r\n scheduledCreditsMin: number = null;\r\n scheduledCreditsMax: number = null;\r\n selectedCounselorId = 0;\r\n requestCourses: number[] = [];\r\n missing_requestCourses: number[] = [];\r\n scheduledCourses: number[] = [];\r\n missing_scheduledCourses: number[] = [];\r\n conflict_selectedCourseNameNumber = '';\r\n conflict_selectedConflictingCourseNameNumber = '';\r\n}\r\n\r\nexport class CourseRequestStudentSummarySpecialStudentFilterModel {\r\n filterGroup: string;\r\n rowHeaderName: string;\r\n rowHeaderValue: number | string;\r\n columnHeaderName: string;\r\n columnHeaderValue: string;\r\n filterDescription: string;\r\n}\r\n","import { BellSchedulesDTO } from '../bell-schedule/models/bell-schedule.model';\r\n\r\n\r\nexport class ScheduleFolderDTO {\r\n Selected: boolean;\r\n ID: number;\r\n Site_ID: number;\r\n Year_ID: number;\r\n Name: string;\r\n Type: number;\r\n AddedMethod: string;\r\n IsDefault: boolean;\r\n SourceSchedulingFolders_ID: number;\r\n AddedBy: number;\r\n AddedOn: Date;\r\n LastUpdatedBy: number;\r\n LastUpdatedOn: Date;\r\n SchoolName: string;\r\n BellSchedules: BellSchedulesDTO[];\r\n\r\n // Local Properties\r\n get typeName() {\r\n switch (this.Type) {\r\n case 1:\r\n return (this.IsDefault ? 'Default ' : '') + 'Plan';\r\n case 2:\r\n return 'Source';\r\n case 3:\r\n return 'Active';\r\n }\r\n }\r\n}\r\n\r\nexport class ScheduleFolderDetails extends ScheduleFolderDTO{\r\n\r\n // Server Properties\r\n ScheduleFolders_ID: number;\r\n ScheduleFoldersName: string;\r\n MeetingPatterns: number;\r\n Classes_Total: number;\r\n Classes_NoTeacher: number;\r\n Classes_NoRoom: number;\r\n Classes_NoMeetingPattern: number;\r\n Classes_NoTerm: number;\r\n Teacehrs_Total: number;\r\n Teacehrs_NoSchedule: number;\r\n Teacehrs_PartiallySchedule: number;\r\n Teacehrs_FullySchedule: number;\r\n Teacehrs_AverageUtilization: number;\r\n Rooms_Total: number;\r\n Rooms_NoSchedule: number;\r\n Rooms_PartiallySchedule: number;\r\n Rooms_FullySchedule: number;\r\n Rooms_AverageUtilization: number;\r\n ScheduleFolderGradeLevels: ScheduleFolderGradeLevelsDTO[];\r\n\r\n // Local Properties\r\n get nameAndStatus(): string {\r\n return this.typeName + ' - ' + this.ScheduleFoldersName;\r\n }\r\n}\r\nexport class ScheduleFolderGradeLevelsDTO {\r\n ScheduleFolders_ID: number;\r\n GradeLevel: string;\r\n Total: number;\r\n NoSchedule: number;\r\n PartiallySchedule: number;\r\n FullySchedule: number;\r\n AverageUtilization: number;\r\n}\r\nexport class SFCards {\r\n Card1: ScheduleFolderDetails;\r\n Card2: ScheduleFolderDetails;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport { Observable, ReplaySubject, Subscription } from 'rxjs';\r\n\r\nimport {System} from '../../../shared-components/System';\r\nimport {UnsavedChangesGuard} from '../../../shared-components/guards/unsaved-changes/unsaved-changes.guard';\r\nimport {CheckForErrorsGuard} from '../../../shared-components/guards/check-for-errors/check-for-errors.guard';\r\n\r\nimport {ScheduleFolderDTO, ScheduleFolderDetails} from './schedule-folder.model';\r\nimport {YearService} from '../../../shared-components/year/year.service';\r\nimport {map, take} from 'rxjs/operators';\r\nimport {LoginService} from '../../../shared-modules/login/login.service';\r\nimport {RolloverValidation} from './rollover-validation.model';\r\n\r\n@Injectable()\r\nexport class ScheduleFolderService {\r\n\r\n // Subscriptions\r\n yearSubscription: Subscription;\r\n\r\n // School folders\r\n private _schoolSchedulingFolders: ScheduleFolderDTO[] = [];\r\n private observableSchoolSchedulingFolders = new ReplaySubject(1);\r\n public observableSchoolSchedulingFoldersStream$ = this.observableSchoolSchedulingFolders.asObservable();\r\n\r\n get schoolSchedulingFolders(): ScheduleFolderDTO[] {\r\n return this._schoolSchedulingFolders;\r\n }\r\n\r\n set schoolSchedulingFolders(value: ScheduleFolderDTO[]) {\r\n this._schoolSchedulingFolders = value;\r\n if (this.selectedScheduleFolder) {\r\n const selectedCopy = this._schoolSchedulingFolders.find(folder =>\r\n folder.ID == this.selectedScheduleFolder.ID\r\n );\r\n if (selectedCopy) {\r\n this.selectedScheduleFolder = selectedCopy;\r\n }\r\n }\r\n this.observableSchoolSchedulingFolders.next(this._schoolSchedulingFolders);\r\n }\r\n\r\n // District Folder\r\n private _districtScheduleFolder: ScheduleFolderDTO;\r\n public observableDistrictScheduleFolder = new ReplaySubject(1);\r\n observableDistrictScheduleFolderStream$ = this.observableDistrictScheduleFolder.asObservable();\r\n\r\n get districtScheduleFolder(): ScheduleFolderDTO {\r\n return this._districtScheduleFolder;\r\n }\r\n\r\n set districtScheduleFolder(value: ScheduleFolderDTO) {\r\n this._districtScheduleFolder = value;\r\n this.observableDistrictScheduleFolder.next(this._districtScheduleFolder);\r\n }\r\n\r\n // Selected Schedule Folder\r\n private _selectedScheduleFolder: ScheduleFolderDTO;\r\n public observableSelectedScheduleFolder = new ReplaySubject(1);\r\n observableSelectedScheduleFolderStream$ = this.observableSelectedScheduleFolder.asObservable();\r\n\r\n get selectedScheduleFolder(): ScheduleFolderDTO {\r\n return this._selectedScheduleFolder;\r\n }\r\n\r\n set selectedScheduleFolder(value: ScheduleFolderDTO) {\r\n this._selectedScheduleFolder = value;\r\n this.observableSelectedScheduleFolder.next(this._selectedScheduleFolder);\r\n }\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private unsavedChangesGuard: UnsavedChangesGuard,\r\n private checkForErrorsGuard: CheckForErrorsGuard,\r\n private loginService: LoginService\r\n ) {\r\n }\r\n\r\n\r\n // Service Methods\r\n maintainSchoolFolders() {\r\n // POST: updates the folders along with the year\r\n if (!this.yearSubscription) {\r\n this.yearSubscription = this.yearService.observableDefaultYearStream$.subscribe(() => {\r\n this.resetScheduleFolders();\r\n });\r\n this.resetScheduleFolders();\r\n }\r\n }\r\n\r\n resetScheduleFolders() {\r\n // POST: reobtains the folders and sets the associated properties\r\n\r\n // Obtaining the district folder\r\n this.getDistrictScheduleFolder().subscribe(districtFolder => {\r\n if (districtFolder) {\r\n this.districtScheduleFolder = districtFolder;\r\n } else {\r\n this.districtScheduleFolder = undefined;\r\n }\r\n });\r\n\r\n // Obtaining the school folders\r\n this.getScheduleFolders().subscribe(schoolFolders => {\r\n\r\n // Setting the school folders, while also sorting them\r\n if (schoolFolders && schoolFolders.length > 0) {\r\n this.schoolSchedulingFolders = schoolFolders.sort((a, b) => {\r\n if (a.Type > b.Type) {\r\n return -1;\r\n } else if (b.Type > a.Type) {\r\n return 1;\r\n } else {\r\n if (a.IsDefault && !b.IsDefault) {\r\n return -1;\r\n } else if (b.IsDefault && !a.IsDefault) {\r\n return 1;\r\n } else {\r\n return a.Name.localeCompare(b.Name);\r\n }\r\n }\r\n });\r\n } else {\r\n this.schoolSchedulingFolders = [];\r\n }\r\n\r\n // Setting the selected folder\r\n let newSelectedFolder = this.selectedScheduleFolder;\r\n if (this.schoolSchedulingFolders.length > 0) {\r\n if (newSelectedFolder) {\r\n newSelectedFolder = this.schoolSchedulingFolders.find(schoolFolder => schoolFolder.ID == this.selectedScheduleFolder.ID);\r\n }\r\n if (!newSelectedFolder) {\r\n const defaultSF = this.schoolSchedulingFolders.find(x => x.IsDefault == true);\r\n if (defaultSF) {\r\n newSelectedFolder = defaultSF;\r\n } else {\r\n newSelectedFolder = this.schoolSchedulingFolders[0];\r\n }\r\n }\r\n } else {\r\n newSelectedFolder = undefined;\r\n }\r\n this.selectedScheduleFolder = newSelectedFolder;\r\n });\r\n }\r\n\r\n // Http Methods\r\n getDistrictScheduleFolder(): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Counselor + 'GetDistrictScheduleFolder' + queryString)\r\n .pipe(\r\n map(folder => {\r\n folder = System.convert(folder, new ScheduleFolderDTO());\r\n return folder;\r\n })\r\n );\r\n }\r\n\r\n getScheduleFolders(\r\n siteId = this.yearService.defaultYear.SchoolID,\r\n yearId = this.yearService.defaultYear.Id,\r\n allScheduleFolders = false\r\n ): Observable {\r\n const queryString = '?siteId=' + siteId + '&yearId=' + yearId + '&allScheduleFolders=' + allScheduleFolders;\r\n return this.http.get(System.apiURL.Counselor + 'GetScheduleFolders' + queryString)\r\n .pipe(\r\n map(folders => {\r\n for (let i = 0; i < folders.length; i++) {\r\n folders[i] = System.convert(folders[i], new ScheduleFolderDTO());\r\n }\r\n return folders;\r\n })\r\n );\r\n }\r\n\r\n getScheduleFolderDetails(siteId: number, yearId: number): Observable {\r\n const queryString = '?siteId=' + siteId + '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Counselor + 'GetScheduleFolderDetails' + queryString).pipe(\r\n map(results => {\r\n for (let i = 0; i < results.length; i++) {\r\n results[i] = System.convert(results[i], new ScheduleFolderDetails());\r\n }\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n addEditScheduleFolder(siteId: number, yearId: number, scheduleFolder: ScheduleFolderDTO): Observable {\r\n const queryString = '?siteId=' + siteId + '&yearId=' + yearId;\r\n return this.http.post(System.apiURL.Counselor + 'AddEditScheduleFolder' + queryString, scheduleFolder);\r\n }\r\n\r\n copyScheduleFolder(siteId: number, yearId: number, sourceScheduleFolderId: number, newFolderName: string): Observable {\r\n const queryString = '?siteId=' + siteId + '&yearId=' + yearId + '&sourceScheduleFolderId=' + sourceScheduleFolderId + '&newFolderName=' + newFolderName;\r\n return this.http.get(System.apiURL.Counselor + 'CopyScheduleFolder' + queryString);\r\n }\r\n\r\n activateScheduleFolder(siteId: number, yearId: number, scheduleFolderId: number): Observable {\r\n const queryString = '?siteId=' + siteId + '&yearId=' + yearId + '&scheduleFolderId=' + scheduleFolderId;\r\n return this.http.get(System.apiURL.Counselor + 'ActivateScheduleFolder' + queryString);\r\n }\r\n\r\n deactivateScheduleFolder(siteId: number, yearId: number, scheduleFolderId: number): Observable {\r\n const queryString = '?siteId=' + siteId + '&yearId=' + yearId + '&scheduleFolderId=' + scheduleFolderId;\r\n return this.http.get(System.apiURL.Counselor + 'DeactivateScheduleFolder' + queryString);\r\n }\r\n\r\n deleteScheduleFolder(scheduleFolderId: number): Observable {\r\n const queryString = '?scheduleFolderId=' + scheduleFolderId;\r\n return this.http.get(System.apiURL.Counselor + 'DeleteScheduleFolder' + queryString);\r\n }\r\n\r\n rolloverScheduleFolder(scheduleFolderName: string): Observable {\r\n const queryString = '?siteYearId=' + (this.loginService.LoginSettings.V10 ? this.yearService.defaultYear.Id : this.yearService.defaultYear.SiteYearId)\r\n + '&folderName=' + scheduleFolderName;\r\n return this.http.get(System.apiURL.Counselor + 'RolloverScheduleFolder' + queryString);\r\n }\r\n\r\n isClassicFolderActive(yearId = this.yearService.defaultYear.Id): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Counselor + 'IsClassicFolderActive' + queryString);\r\n }\r\n}\r\n","import {DayTypeDTO, PeriodDTO} from '../bell-schedule/models/bell-schedule.model';\r\nimport {Term} from '../shared/models/term.model';\r\nimport {ScheduleSection} from './schedule-section.model';\r\nimport {CourseLink} from './course-link.model';\r\nimport {SectionLink} from './section-link.model';\r\nimport {SchedulingSettingsDTO} from '../shared/scheduling-settings/scheduling.settings.model';\r\nimport {ScheduleTeacher} from '../schedule-teacher.model';\r\n\r\nexport class ScheduleSlot {\r\n\r\n // Static Properties\r\n public static Displays = {\r\n Period: 'Period Label',\r\n Day: 'Day',\r\n Term: 'Term'\r\n };\r\n\r\n // Slot Properties\r\n SlotName: string;\r\n\r\n // Reference Properties\r\n periods: PeriodDTO[] = [];\r\n dayType: DayTypeDTO;\r\n term: Term;\r\n scheduledSection: ScheduleSection;\r\n greyedOut: boolean;\r\n scrollTo = false;\r\n changed = false;\r\n topActionMenuItems: string[] = [];\r\n bottomActionMenuItems: string[] = [];\r\n courseCount: number;\r\n\r\n // Constructor\r\n constructor(periods: PeriodDTO[], dayType: DayTypeDTO, term: Term, order: string[]) {\r\n\r\n // Setting internal properties\r\n this.periods = periods;\r\n if (!this.periods) {\r\n this.periods = [];\r\n }\r\n this.dayType = dayType;\r\n this.term = term;\r\n this.greyedOut = false;\r\n\r\n // Setting the slot name\r\n const periodName = this.periods.length > 0 ? this.periods[0].PeriodName : '';\r\n const dayName = this.dayType ? this.dayType.DayName : (this.periods.length > 0 ? this.periods[0].DayTypeName : '');\r\n const termName = this.term ? this.term.ShortDescription : '';\r\n\r\n // Setting the slot name\r\n this.SlotName = '';\r\n const appendName = (name: string) => {\r\n if (name) {\r\n if (this.SlotName) {\r\n this.SlotName += ' - ';\r\n }\r\n this.SlotName += name;\r\n }\r\n };\r\n order.forEach(type => {\r\n switch (type) {\r\n case ScheduleSlot.Displays.Period:\r\n appendName(periodName);\r\n break;\r\n\r\n case ScheduleSlot.Displays.Day:\r\n appendName(dayName);\r\n break;\r\n\r\n case ScheduleSlot.Displays.Term:\r\n appendName(termName);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n get ClassName(): string {\r\n return this.scheduledSection ? this.scheduledSection.ClassName : null;\r\n }\r\n\r\n get StudentsInSlot(): number {\r\n return this.scheduledSection ? this.scheduledSection.StudentsAssignedToSection : null;\r\n }\r\n\r\n get SeatsInSlot(): number {\r\n return this.scheduledSection ? this.scheduledSection.MaxSeatsOfSection : null;\r\n }\r\n\r\n get TeacherNames(): string {\r\n return this.scheduledSection ? this.scheduledSection.teacherNames : null;\r\n }\r\n\r\n get RoomName(): string {\r\n return this.scheduledSection ? this.scheduledSection.ClassRoomName : null;\r\n }\r\n\r\n get MeetingPatternName(): string {\r\n return this.scheduledSection ? this.scheduledSection.MeetingPatternName : null;\r\n }\r\n\r\n get TermName(): string {\r\n return this.scheduledSection ? this.scheduledSection.TermName : null;\r\n }\r\n\r\n get Start(): Date {\r\n return this.scheduledSection ? this.scheduledSection.StartDate : null;\r\n }\r\n\r\n set Start(date: Date) {\r\n if (this.scheduledSection) {\r\n this.scheduledSection.StartDate = date;\r\n }\r\n }\r\n\r\n get End(): Date {\r\n return this.scheduledSection ? this.scheduledSection.EndDate : null;\r\n }\r\n\r\n set End(date: Date) {\r\n if (this.scheduledSection) {\r\n this.scheduledSection.EndDate = date;\r\n }\r\n }\r\n\r\n get SubjectArea(): string {\r\n return this.scheduledSection ? this.scheduledSection.SubjectArea : null;\r\n }\r\n\r\n get Department(): string {\r\n return this.scheduledSection ? this.scheduledSection.Department : null;\r\n }\r\n\r\n get CreditCode(): string {\r\n return this.scheduledSection ? this.scheduledSection.CreditCode : null;\r\n }\r\n\r\n get SectionLinks(): SectionLink[] {\r\n return this.scheduledSection ? this.scheduledSection.SectionLinks : [];\r\n }\r\n\r\n get CourseLinks(): CourseLink[] {\r\n return this.scheduledSection ? this.scheduledSection.CourseLinks : [];\r\n }\r\n\r\n get CourseSection(): string {\r\n return this.scheduledSection ? this.scheduledSection.courseSection : '';\r\n }\r\n\r\n get CourseLinkConcatenated(): string {\r\n let concatenatedString = '';\r\n for (let i = 0; i < this.CourseLinks.length; i++) {\r\n if (concatenatedString.length > 0) {\r\n concatenatedString += ',';\r\n }\r\n concatenatedString += this.CourseLinks[i].Name;\r\n }\r\n return concatenatedString;\r\n }\r\n\r\n get SectionLinkConcatenated(): string {\r\n let concatenatedString = '';\r\n for (let i = 0; i < this.SectionLinks.length; i++) {\r\n if (concatenatedString.length > 0) {\r\n concatenatedString += ',';\r\n }\r\n concatenatedString += this.SectionLinks[i].Name;\r\n }\r\n return concatenatedString;\r\n }\r\n\r\n get teacherDisplayString(): string {\r\n return this.scheduledSection ? this.scheduledSection.teacherDisplayString : '';\r\n }\r\n\r\n get WithdrawalCode(): string {\r\n return this.scheduledSection ? this.scheduledSection.WithdrawalCode : '';\r\n }\r\n\r\n set WithdrawalCode(code: string) {\r\n if (this.scheduledSection) {\r\n this.scheduledSection.WithdrawalCode = code;\r\n }\r\n }\r\n\r\n // Methods\r\n setScheduleSection(section: ScheduleSection, schedulingSettings: SchedulingSettingsDTO) {\r\n // PRE: a section to set to the slot\r\n // POST: sets the internal data from the section to the slot\r\n this.scheduledSection = section;\r\n this.scheduledSection.getCourseSection(schedulingSettings);\r\n if (section != null && section.WithdrawalCode != null) {\r\n this.greyedOut = true;\r\n }\r\n }\r\n\r\n getTeachersDisplayString(teachers: ScheduleTeacher[]) {\r\n // POST: obtains the teachers that should display for the scheduleClass\r\n if (this.scheduledSection) {\r\n this.scheduledSection.getTeachersDisplayString(teachers);\r\n }\r\n return this.teacherDisplayString;\r\n }\r\n}\r\n","export enum StaffHealthTabsIndex {\r\n StaffMedicalConditions,\r\n StaffHealthVisitLog\r\n}\r\n\r\nexport class StaffMedicalCondition {\r\n Id: number;\r\n DateConditionStarted: Date;\r\n DateConditionEnded: Date;\r\n GenerateAlert: boolean;\r\n NonNurseViewable: boolean;\r\n MedicalConditionCodeId: number;\r\n Comment: string;\r\n MedicalConditionCode: string;\r\n MedicalConditionDescription: string;\r\n Note: string;\r\n}\r\n\r\nexport class StaffHealthVisitLog {\r\n Id: number;\r\n DateVisit: Date;\r\n DOHSurveillanceId: number;\r\n Reason: string;\r\n TimeIn: string;\r\n TimeOut: string;\r\n CallMadeTo: string;\r\n InjuryMajor: boolean;\r\n InjuryMinor: boolean;\r\n Referral: boolean;\r\n Report: boolean;\r\n Illness: boolean;\r\n EMSCall: boolean;\r\n Treated: boolean;\r\n NoticeSent: boolean;\r\n AEDUsed: boolean;\r\n ReferralReturnedToSchool: boolean;\r\n Temperature: number;\r\n UserName: string;\r\n ICD9: string;\r\n EvaluationOfClinicVisit: string;\r\n Comments: string;\r\n Glucose: string;\r\n Units: string;\r\n Carb: string;\r\n BloodPressure: string;\r\n OnDutyUserId: number;\r\n SelectedCodeTreatmentIds: string;\r\n DateReferralReturned: Date;\r\n ClinicVisitLogCodeId: number;\r\n Site: string;\r\n LastUpdatedByUserName: string;\r\n LastUpdatedDate: Date;\r\n NatureOfInjuryId: number;\r\n TimePeriodOfInjuryId: number;\r\n LocationOfInjuryId: number;\r\n Pulse: string;\r\n Respiration: string;\r\n SpO2: string;\r\n\r\n // Non DTO Field //\r\n TreatmentIds: string [] = [];\r\n}\r\n\r\nexport class ClinicVisitLogCodes {\r\n ClinicVisitCodeId: number;\r\n ClinicVisitCode: string;\r\n ClinicVisitCodeDescription: string;\r\n ClinicVisitDescription: string;\r\n}\r\n\r\nexport class MedicalUsers {\r\n OnDutyUserId: number;\r\n UserName: string;\r\n OnDutyUserFullName: string;\r\n}\r\n\r\nexport class MedicalCodeTreatment {\r\n Id: number;\r\n Code: string;\r\n Description: string;\r\n SequenceNumber: number;\r\n}\r\n","\r\n

\r\n {{title}}\r\n

\r\n\r\n

WARNING

\r\n\r\n\r\n\r\n {{message}}\r\n\r\n\r\n\r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ProgramAndServiceService } from '../program-and-service.service';\r\nimport { ProgramAndService } from '../../../student360/programs-and-services/programs-and-services.model';\r\n\r\n@Component({\r\n selector: 'app-delete-program-service-dialog',\r\n templateUrl: './delete-program-service-dialog.component.html',\r\n styleUrls: ['./delete-program-service-dialog.component.css']\r\n})\r\nexport class DeleteProgramServiceDialogComponent implements OnInit {\r\n\r\n // Injected Properties\r\n id: number;\r\n programAndServices: ProgramAndService[] = [];\r\n type = '';\r\n title: string;\r\n message: string;\r\n\r\n // Local Properties\r\n errors: ErrorList[] = [];\r\n subscriptions: Subscription[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n private programsAndServicesService: ProgramAndServiceService,\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n if (this.data) {\r\n if (this.data.id) {\r\n this.id = this.data.id;\r\n }\r\n if (this.data.programAndServices) {\r\n this.programAndServices = this.data.programAndServices;\r\n }\r\n this.type = this.data.type;\r\n this.title = this.data.title;\r\n this.message = this.data.message;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n OK() {\r\n // PRE: the OK button is clicked\r\n // POST: deletes the program code, service code and field and closes the dialog\r\n if (this.type == 'delete') {\r\n this.subscriptions.push(\r\n // Delete program code\r\n this.programsAndServicesService.deleteProgramService(this.id).subscribe(res => {\r\n if (res) {\r\n this.dialogBox.close(true);\r\n }\r\n })\r\n );\r\n }\r\n else if (this.type == 'mass-delete') {\r\n\r\n this.subscriptions.push(\r\n // Delete program code\r\n this.programsAndServicesService.massDeleteProgramService(this.programAndServices).subscribe(res => {\r\n if (res != null && res == 'Successful') {\r\n this.dialogBox.close(true);\r\n }\r\n else {\r\n this.message = res;\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: closes the dialog\r\n this.dialogBox.close(false);\r\n }\r\n}\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { ProgramAndServiceDetail } from '../../student360/programs-and-services/programs-and-services-detail.model';\r\nimport { ProgramAndService } from '../../student360/programs-and-services/programs-and-services.model';\r\nimport { ProgramServiceConfig } from '../district/models/program-service.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProgramAndServiceService {\r\n // Class Functions\r\n constructor(\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private http: HttpClient,\r\n private router: Router\r\n ) {\r\n }\r\n\r\n // Event Functions\r\n\r\n // Methods\r\n getProgramsAndServices(viewOption = 0) {\r\n const siteYearId = (this.router.url.indexOf('registrationEnroll') == -1) ? this.studentService.studentEnrollment.SiteYearId : this.yearService.defaultYear.SiteYearId;\r\n // POST: obtains the programs and services for the student in the selected year\r\n const queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '&siteYearId=' + siteYearId +\r\n '&viewOption=' + viewOption;\r\n return this.http.get(System.apiURL.Student + 'GetProgramAndServices' + queryString);\r\n }\r\n\r\n // Methods\r\n // getProgramCodeLookup() {\r\n // // POST: obtains the program code lookup data\r\n // const queryString = '?yearId=' + this.yearService.student360Year.Id;\r\n // return this.http.get(System.apiURL.Admin + 'GetProgramCodeLookups' + queryString);\r\n // }\r\n\r\n // getServiceCodeLookup(programCodeId: number) {\r\n // // POST: obtains the service code lookup data\r\n // const queryString = '?programCodeId=' + programCodeId;\r\n // return this.http.get(System.apiURL.Admin + 'GetProgramServiceCodeLookups' + queryString);\r\n // }\r\n\r\n getServiceDetailByServiceCodeId(programServiceCodeId: number, programServiceId: number = 0) {\r\n // POST: obtains the field by serviceCodeId\r\n const queryString = '?servicesCodeId=' + programServiceCodeId + '&programServiceId=' + programServiceId;\r\n return this.http.get(System.apiURL.Student + 'GetProgramAndServicesDetailByServiceCodeId' + queryString);\r\n }\r\n\r\n // Save Program Codes\r\n saveProgramAndService(studentId: number, program: ProgramAndService): Observable {\r\n // PRE: a program to add\r\n // POST: adds that program to the server which returns boolean\r\n if (program.EntryDate != null && (program.EntryDate.toString() == System.junkDate.toString())) {\r\n program.EntryDate = null;\r\n }\r\n if (program.ExitDate != null && (program.ExitDate.toString() == System.junkDate.toString())) {\r\n program.ExitDate = null;\r\n }\r\n const queryString = '?studentId=' + studentId;\r\n return this.http.post(System.apiURL.Student + 'SaveProgramAndService' + queryString, program);\r\n }\r\n\r\n // Delete Program Service\r\n deleteProgramService(programServiceId: number): Observable {\r\n // PRE: a programservice to delete\r\n // POST: delete programservice from server\r\n const queryString = '?programServiceId=' + programServiceId;\r\n return this.http.get(System.apiURL.Student + 'DeleteProgramService' + queryString);\r\n }\r\n\r\n // Mass Delete Program Service\r\n massDeleteProgramService(programAndServices: ProgramAndService[]): Observable {\r\n // PRE: programservices to delete\r\n // POST: delete programservices from server\r\n return this.http.post(System.apiURL.Student + 'MassDeleteProgramService', programAndServices);\r\n }\r\n\r\n getProgramsAndServiceForMassUpdate(schoolId: number, yearId: number, programCodeId: number, serviceCodeId: number) {\r\n // POST: obtains the programs and services for the student in the selected year\r\n const queryString = '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&programCodeId=' + programCodeId +\r\n '&serviceCodeId=' + serviceCodeId;\r\n return this.http.get(System.apiURL.Student + 'GetProgramAndServiceForMassUpdate' + queryString);\r\n }\r\n\r\n massAddProgramAndService(program: ProgramAndService): Observable {\r\n // PRE: a program to add with multipple student\r\n // POST: adds that program to the server which returns string\r\n if (program.EntryDate != null && (program.EntryDate.toString() == System.junkDate.toString())) {\r\n program.EntryDate = null;\r\n }\r\n if (program.ExitDate != null && (program.ExitDate.toString() == System.junkDate.toString())) {\r\n program.ExitDate = null;\r\n }\r\n return this.http.post(System.apiURL.Student + 'MassAddProgramAndService', program);\r\n }\r\n\r\n massEditProgramAndService(programs: ProgramAndService[]): Observable {\r\n // PRE: Mass update program and service\r\n // POST: updates that program to the server which returns string\r\n programs.forEach(ps => {\r\n if (ps.EntryDate != null && (ps.EntryDate.toString() == System.junkDate.toString())) {\r\n ps.EntryDate = null;\r\n }\r\n if (ps.ExitDate != null && (ps.ExitDate.toString() == System.junkDate.toString())) {\r\n ps.ExitDate = null;\r\n }\r\n });\r\n return this.http.post(System.apiURL.Student + 'MassEditProgramAndService', programs);\r\n }\r\n\r\n getInvalidStudentForSelectedProgramAndServiceCode(programAndService: ProgramAndService) {\r\n // POST: obtains the list of invalid student in selected program and services\r\n if (programAndService.EntryDate != null && (programAndService.EntryDate.toString() == System.junkDate.toString())) {\r\n programAndService.EntryDate = null;\r\n }\r\n if (programAndService.ExitDate != null && (programAndService.ExitDate.toString() == System.junkDate.toString())) {\r\n programAndService.ExitDate = null;\r\n }\r\n return this.http.post(System.apiURL.Student + 'GetInvalidStudentForSelectedProgramAndServiceCode', programAndService);\r\n }\r\n\r\n // Delete Program Service\r\n importStudentProgramAndServices(yearId: number, siteId: number, file: string, fileName: string, matchIdOption: number, programServiceOverrideSetting: boolean, programServerOverrideOption: number): Observable {\r\n // PRE: a programservice to delete\r\n // POST: delete programservice from server\r\n const queryString = '?yearId=' + yearId +\r\n '&siteId=' + siteId +\r\n '&file=' + file +\r\n '&fileName=' + fileName +\r\n '&matchIdOption=' + matchIdOption +\r\n '&programServiceOverrideSetting=' + programServiceOverrideSetting +\r\n '&programServerOverrideOption=' + programServerOverrideOption;\r\n return this.http.get(System.apiURL.Student + 'ImportStudentProgramAndService' + queryString);\r\n }\r\n\r\n getProgramServiceCodesByUserId(yearId: number, schoolId: number): Observable {\r\n const queryString = '?yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n\r\n return this.http.get(System.apiURL.Management + 'GetProgramServiceCodesByUserId' + queryString);\r\n }\r\n}\r\n","import { FieldLookups } from \"../../management360/district/models/program-service.model\";\r\n\r\nexport class ProgramAndServiceDetail {\r\n\tFieldName: string;\r\n\tFieldValue: string;\r\n\tId: number;\r\n\tSequence: number;\r\n\tProgramServiceField = '';\r\n\tFieldType = 0;\r\n\tFieldLookupValues: FieldLookups[] = [];\r\n\tFieldValueId: number;\r\n\tFieldId = 0;\r\n\tFieldLength = 0;\r\n\tFieldDecimal = 0;\r\n\tFieldLengthString = '';\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { Student } from '../../../../shared-components/student/student.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ProgramAndServiceService } from '../../program-and-service.service';\r\n\r\n@Component({\r\n selector: 'app-invalid-selection-dialog',\r\n templateUrl: './invalid-selection-dialog.component.html',\r\n styleUrls: ['./invalid-selection-dialog.component.css']\r\n})\r\nexport class InvalidSelectionDialogComponent implements OnInit {\r\n\r\n // Injected Properties\r\n invalidStudent: Student[] = [];\r\n\r\n // Local Properties\r\n message = '';\r\n subscriptions: Subscription[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n private programAndServiceService: ProgramAndServiceService\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n if (this.data) {\r\n if (this.data.invalidStudent) {\r\n this.invalidStudent = this.data.invalidStudent;\r\n this.prepareMessage();\r\n }\r\n }\r\n }\r\n\r\n prepareMessage() {\r\n if (this.invalidStudent.length > 0) {\r\n this.invalidStudent.forEach(s => {\r\n this.message += s.LastName + ', ' + s.FirstName + '\\n';\r\n });\r\n if (this.message.length > 0) {\r\n this.message = this.message + '\\n';\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n continue(choice: number) {\r\n // PRE: the Continue button is clicked\r\n // POST: continue to load landing page and closes the dialog\r\n this.dialogBox.close(choice);\r\n }\r\n\r\n back(choice: number) {\r\n // PRE: the back button is clicked\r\n // POST: closes the dialog and render the add/edit program and service page\r\n this.dialogBox.close(choice);\r\n }\r\n}\r\n\r\n","\r\n

\r\n INVALID SELECTION\r\n

\r\n\r\n\r\n\r\n
\r\n The following students already have this program/service:\r\n
\r\n
\r\n {{message}}\r\n
\r\n
\r\n Either go back to select a different program/service or continue and delete the student to remove program/service.\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
","\r\n \r\n 12 ? (field.FieldName.length*12 + 'px') : '130px'}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{lk.Description}} \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ProgramAndServiceDetail } from '../../student360/programs-and-services/programs-and-services-detail.model';\r\n\r\n@Component({\r\n selector: 'program-and-service-fields',\r\n templateUrl: './program-and-service-fields.component.html',\r\n styleUrls: ['./program-and-service-fields.component.css']\r\n})\r\nexport class ProgramAndServiceFieldsComponent implements OnInit {\r\n\r\n @Input() field: ProgramAndServiceDetail;\r\n fieldLengthString = '200';\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.fieldLengthString = this.field.FieldLength.toString();\r\n }\r\n\r\n}\r\n","\r\n

\r\n \r\n {{header|translate}}\r\n \r\n \r\n {{header|translate}}\r\n \r\n \r\n {{showSteps|translate}}\r\n \r\n\r\n\r\n

\r\n\r\n\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{pc.Code}}-{{pc.Description}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{sc.Code}}-{{sc.Description}}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n Service-Specific Fields\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
Attachments
\r\n \r\n \r\n \r\n Description\r\n {{element.AttachmentDescription}} \r\n \r\n \r\n \r\n File\r\n {{element.AttachmentFileName}}\r\n \r\n \r\n \r\n Uploaded On\r\n {{element.AttachmentAddedOn | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n \r\n Uploaded By\r\n \r\n {{element.AttachmentAddedBy}}\r\n \r\n \r\n \r\n \r\n Actions\r\n \r\n Delete\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n","import { Component, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { AddAttachmentDialogComponent } from '../../../../shared-components/add-attachment-dialog/add-attachment-dialog.component';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { GeneralConfirmationComponent } from '../../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { Attachment } from '../../../../shared-components/models/attachment.model';\r\nimport { ProfileService } from '../../../../shared-components/profile-table/profile.service';\r\nimport { SharedService } from '../../../../shared-components/shared.service';\r\nimport { Student } from '../../../../shared-components/student/student.model';\r\nimport { System } from '../../../../shared-components/System';\r\nimport { UserService } from '../../../../shared-components/user/user.service';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { ProgramAndServiceDetail } from '../../../../student360/programs-and-services/programs-and-services-detail.model';\r\nimport { ProgramAndService } from '../../../../student360/programs-and-services/programs-and-services.model';\r\nimport { ProgramServiceConfig, Services } from '../../../district/models/program-service.model';\r\nimport { ProgramAndServiceService } from '../../program-and-service.service';\r\nimport { InvalidSelectionDialogComponent } from '../invalid-selection-dialog/invalid-selection-dialog.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-add-edit-program-service-single-student',\r\n templateUrl: './add-edit-program-service-single-student.component.html',\r\n styleUrls: ['./add-edit-program-service-single-student.component.css']\r\n})\r\nexport class AddEditProgramServiceSingleStudentComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n header = 'Edit Program/Services';\r\n programAndService: ProgramAndService;\r\n addProgram: boolean;\r\n junkDateString = System.junkDateString;\r\n type = '';\r\n massEditProgramAndServices: ProgramAndService[] = [];\r\n // Local Properties\r\n selectedProgramCode: ProgramServiceConfig;\r\n selectedServiceCodeId = 0;\r\n programCodes: ProgramServiceConfig[] = [];\r\n serviceCodes: Services[] = [];\r\n serviceFields: ProgramAndServiceDetail[] = [];\r\n originalProgram = new ProgramAndService();\r\n subscriptions: Subscription[] = [];\r\n errors: ErrorList[] = [];\r\n userCanEditPrograms = true;\r\n studentId = 0;\r\n invalidStudent: Student[] = [];\r\n selectedStudents: any;\r\n steps: boolean;\r\n showSteps = '';\r\n @Input() okButtonLabel = 'Save';\r\n @Input() okButtonImage = 'save.png';\r\n @Input() backButtonLabel = 'Back';\r\n @Input() backButtonImage = 'previous arrow.png';\r\n @Output() previousEventaction = new EventEmitter();\r\n @Output() confirmEventAction = new EventEmitter();\r\n\r\n // Attachement properties\r\n dataSource: MatTableDataSource = new MatTableDataSource();\r\n displayedColumns = ['Description', 'FileName', 'UploadedBy', 'UploadedOn', 'Actions'];\r\n\r\n // View Properties\r\n @ViewChild('programCodeField', { read: ElementRef }) programCodeField: ElementRef;\r\n @ViewChild('serviceCodeField', { read: ElementRef }) serviceCodeField: ElementRef;\r\n @ViewChild('entryDateField', { read: ElementRef }) entryDateField: ElementRef;\r\n confirmback = false;\r\n\r\n // Class Function\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n private dialog: MatDialog,\r\n private yearService: YearService,\r\n private programsAndServicesService: ProgramAndServiceService,\r\n private userService: UserService,\r\n private sharedService: SharedService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n // Getting injected data\r\n if (this.data) {\r\n this.studentId = this.data.studentId ? this.data.studentId : 0;\r\n this.addProgram = this.data.addProgram;\r\n this.programCodes = _.cloneDeep(this.data.programCodes);\r\n this.programAndService = this.data.programAndService;\r\n this.selectedStudents = this.data.selectedStudents;\r\n this.showSteps = this.data.showSteps;\r\n this.steps = this.data.steps;\r\n\r\n if (this.addProgram) {\r\n this.header = 'Add Program/Services';\r\n }\r\n else {\r\n this.header = 'Edit Program/Services';\r\n }\r\n\r\n // Filter out Active program code with history\r\n this.programCodes = this.programCodes.filter(x => x.IsInActive == false);\r\n if (!this.addProgram) {\r\n if (this.programAndService.ProgramCodeId > 0) {\r\n const selectedProgCode = this.data.programCodes.filter(p => p.Id == this.programAndService.ProgramCodeId.toString());\r\n if (selectedProgCode && selectedProgCode.length > 0) {\r\n if (!this.programCodes.find(p => p.Id == selectedProgCode[0].Id)) {\r\n this.programCodes.push(selectedProgCode[0]);\r\n this.programCodes = _.sortBy(this.programCodes, p => p.Code.toLowerCase() + '-' + p.Description.toLowerCase());\r\n }\r\n }\r\n }\r\n }\r\n if (this.data.type) {\r\n this.type = this.data.type;\r\n }\r\n if (this.data.massEditProgramAndServices && this.data.massEditProgramAndServices.length > 0) {\r\n this.massEditProgramAndServices = this.data.massEditProgramAndServices;\r\n }\r\n\r\n if (this.showSteps == null) {\r\n this.steps = false;\r\n }\r\n else {\r\n this.steps = true;\r\n }\r\n\r\n this.getProgramServiceCodesByUserId();\r\n\r\n\r\n // Intialize the values\r\n if (!this.programAndService.Attachments) {\r\n this.programAndService.Attachments = [];\r\n }\r\n if (this.programAndService.EntryDate.toString() == System.junkDate.toString()) {\r\n this.programAndService.EntryDate = null;\r\n }\r\n if (this.programAndService.ExitDate.toString() == System.junkDate.toString()) {\r\n this.programAndService.ExitDate = null;\r\n }\r\n\r\n // Setting up the local data\r\n Object.assign(this.originalProgram, this.programAndService);\r\n this.dataSource.data = this.programAndService.Attachments;\r\n this.dataSource.filterPredicate = (data: Attachment, filter: string) => (data.Deleted == null || data.Deleted == false);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n getProgramServiceCodesByUserId() {\r\n this.programsAndServicesService.getProgramServiceCodesByUserId(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(result => {\r\n this.programCodes = result.filter(o => o.UserHasEditPermission == true);\r\n\r\n if (this.programAndService.ProgramCodeId != null && this.programAndService.ProgramCodeId > 0) {\r\n this.selectedProgramCode = this.programCodes.find(o => o.Id == this.programAndService.ProgramCodeId || o.Code == this.programAndService.ProgramCodeId.toString());\r\n this.onProgramCodeChange(true);\r\n }\r\n });\r\n }\r\n\r\n backClick() {\r\n if (this.confirmback == true) {\r\n const ps = this.data.programAndService;\r\n const service = this.serviceCodes.filter(o => o.Id == this.selectedServiceCodeId)[0];\r\n const programcode = this.selectedProgramCode ? this.selectedProgramCode.Code : '';\r\n const serviceCode = service ? service.Code : '';\r\n const selectedprog = this.selectedProgramCode ? this.selectedProgramCode.Code + '-' + this.selectedProgramCode.Description : '';\r\n const selectedser = service ? service.Code + '-' + service.Description : '';\r\n const itemMenu = { itemName: 'General Confirmation', selectedStudents: this.data.selectedStudents, programCodes: selectedprog, programService: selectedser, programcode, serviceCode, ps };\r\n this.dialogBox.close(itemMenu);\r\n }\r\n\r\n if (this.confirmback == false) {\r\n const itemMenu = { itemName: 'Mass Enroll Into Service', selectedStudents: this.data.selectedStudents };\r\n this.dialogBox.close(itemMenu);\r\n }\r\n }\r\n\r\n onProgramCodeChange(init = false) {\r\n this.programAndService.ProgramCodeId = 0;\r\n if (init == false) {\r\n this.programAndService.ServiceCodeId = 0;\r\n }\r\n if (this.selectedProgramCode) {\r\n this.programAndService.ProgramCodeId = this.selectedProgramCode.Id;\r\n const serviceCodeId = this.programAndService.ServiceCodeId != null ? this.programAndService.ServiceCodeId : 0;\r\n this.serviceCodes = this.selectedProgramCode.ProgramServices.filter(o => o.Id == serviceCodeId || o.Inactive == false);\r\n if (serviceCodeId > 0) {\r\n this.selectedServiceCodeId = serviceCodeId;\r\n }\r\n this.getServiceFieldByServiceCodeId(this.programAndService.ServiceCodeId, this.programAndService.id, init);\r\n }\r\n }\r\n\r\n onServiceCodeChange() {\r\n // PRE: Initialize service codes\r\n // POST: populate the associated field on changed\r\n if (this.selectedServiceCodeId != null && this.selectedServiceCodeId > 0) {\r\n this.programAndService.ServiceCodeId = this.selectedServiceCodeId;\r\n } else {\r\n this.programAndService.ServiceCodeId = 0;\r\n }\r\n this.getServiceFieldByServiceCodeId(this.programAndService.ServiceCodeId, this.programAndService.Id);\r\n }\r\n\r\n getServiceFieldByServiceCodeId(serviceCodeId: number, programAndServiceId: number, init: boolean = false) {\r\n // POST: Get ServiceFields associated to service from server\r\n this.programAndService.ProgramAndServicesDetail = [];\r\n this.subscriptions.push(\r\n this.programsAndServicesService.getServiceDetailByServiceCodeId(serviceCodeId, programAndServiceId).subscribe(res => {\r\n this.programAndService.ProgramAndServicesDetail = res;\r\n if (init) {\r\n this.programAndService.ProgramAndServicesDetail.forEach(detail => {\r\n const originalFieldValue = this.originalProgram.ProgramAndServicesDetail.find(o => o.FieldId == detail.FieldId);\r\n if (originalFieldValue) {\r\n detail.FieldType = originalFieldValue.FieldType;\r\n detail.FieldValue = originalFieldValue.FieldValue;\r\n detail.FieldValueId = originalFieldValue.FieldValueId;\r\n detail.ProgramServiceField = originalFieldValue.ProgramServiceField;\r\n }\r\n });\r\n } else {\r\n this.programAndService.ProgramAndServicesDetail = res;\r\n }\r\n })\r\n );\r\n }\r\n\r\n setCurrent(value: string) {\r\n // POST: The Entry/Exit date to current date\r\n const date = new Date();\r\n const datePart = moment(date).format('MM-DD-YYYY');\r\n if (value == 'EntryDate') {\r\n this.programAndService.EntryDate = moment(datePart, 'MM-DD-YYYY').toDate();\r\n }\r\n else if (value == 'ExitDate') {\r\n this.programAndService.ExitDate = moment(datePart, 'MM-DD-YYYY').toDate();\r\n }\r\n }\r\n\r\n cancel() {\r\n // for mass enroll cancel passing selected student to uncheck\r\n const itemMenu = { itemName: 'Mass Enroll Into Service Cancel', selectedStudents: this.data.selectedStudents };\r\n // PRE: the cancel button is clicked\r\n // POST: resets the program and closes the dialog box\r\n if (!this.addProgram) {\r\n Object.assign(this.programAndService, this.originalProgram);\r\n\r\n }\r\n this.dialogBox.close(itemMenu);\r\n }\r\n\r\n // Atachemnt methods\r\n\r\n deleteAttachmentClick(attachment: Attachment) {\r\n // PRE: Attachement grid is intialized\r\n // POST: Set attachemnt.Deleted to true and remove the row from grid\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Attachment';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete ' + attachment.FileName + '?';\r\n deleteConfirmDialog.componentInstance.okButtonLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((confirmed: boolean) => {\r\n if (confirmed) {\r\n if (attachment.AttachmentId && attachment.AttachmentId > 0) {\r\n attachment.Deleted = true;\r\n } else {\r\n const index = this.programAndService.Attachments.indexOf(attachment);\r\n if (index > -1) {\r\n this.programAndService.Attachments.splice(index, 1);\r\n }\r\n }\r\n this.dataSource.data = this.programAndService.Attachments.filter(o => o.Deleted == false);\r\n }\r\n });\r\n }\r\n\r\n attachmentClick = (attachment: Attachment) => {\r\n // PRE: Attachement grid is intialized\r\n // POST: View or download the attachemnt\r\n System.viewFileFromId(attachment.AttachmentId, attachment.AttachmentFileName);\r\n }\r\n\r\n addAttachmentClick() {\r\n // POST: opens a modal to add an attachment\r\n\r\n // Initializing attachment\r\n const attachment = new Attachment();\r\n attachment.FileType = '';\r\n attachment.FileExtension = '';\r\n attachment.Description = '';\r\n attachment.AttachmentFileName = '';\r\n attachment.OriginalFileName = '';\r\n attachment.AttachmentAddedOn = new Date();\r\n attachment.AttachmentDescription = '';\r\n\r\n // Opening modal\r\n const dialogBox = this.dialog.open(AddAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment,\r\n newAttachment: true\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n attachment.AttachmentDescription = attachment.Description;\r\n attachment.AttachmentFileName = attachment.FileName;\r\n attachment.DocumentBase64 = attachment.MyFileBase64String;\r\n attachment.AttachmentFileMimeType = attachment.FileType;\r\n attachment.AttachmentAddedBy = this.userService.currentUser.LastName + ', ' + this.userService.currentUser.FirstName;\r\n this.programAndService.Attachments.push(attachment);\r\n this.dataSource.data = this.programAndService.Attachments;\r\n }\r\n })\r\n );\r\n }\r\n\r\n // Save\r\n\r\n // Save functions\r\n save() {\r\n // PRE: the save button is clicked\r\n // POST: saves the program and closes the dialog box\r\n // NOTE: closing with true here means there are new program and service record\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n\r\n // Add/Edit a program\r\n if (this.programAndService) {\r\n if (this.type == 'MassAdd') {\r\n this.massAddProgramAndService();\r\n }\r\n else if (this.type == 'MassEdit') {\r\n this.massEditProgramAndService();\r\n }\r\n else if (this.type == 'Mass Enroll Into Service') {\r\n this.confirmback = true;\r\n this.backClick();\r\n }\r\n else {\r\n this.subscriptions.push(this.programsAndServicesService.saveProgramAndService(this.studentId, this.programAndService).subscribe(\r\n () => {\r\n this.dialogBox.close(true);\r\n }\r\n ));\r\n }\r\n }\r\n }\r\n }\r\n\r\n private massAddProgramAndService() {\r\n // PRE: the save button is clicked\r\n // POST: Mass add the program and service and closes the dialog box\r\n // validate student\r\n this.invalidStudent = [];\r\n this.programsAndServicesService.getInvalidStudentForSelectedProgramAndServiceCode(this.programAndService).subscribe(result => {\r\n if (result && result.length > 0) {\r\n this.invalidStudent = result;\r\n result.forEach(s => {\r\n this.programAndService.Students = this.programAndService.Students.filter(o => o.Id != s.Id);\r\n });\r\n }\r\n\r\n // save program and service\r\n if (this.programAndService.Students.length > 0) {\r\n this.programsAndServicesService.massAddProgramAndService(this.programAndService).subscribe(res => {\r\n if (res && res != '' && res == 'Successful') {\r\n // open popup if there is invalid student selection found\r\n if (!this.invalidStudent || this.invalidStudent.length == 0) {\r\n this.dialogBox.close(true);\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (this.invalidStudent && this.invalidStudent.length > 0) {\r\n const dialogBoxInvalidSelection = this.dialog.open(InvalidSelectionDialogComponent, {\r\n data: {\r\n invalidStudent: this.invalidStudent,\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBoxInvalidSelection.afterClosed().subscribe(dialogResult => {\r\n this.programAndService.Students = this.invalidStudent;\r\n if (dialogResult == 2) {\r\n this.programsAndServicesService.massAddProgramAndService(this.programAndService).subscribe(() => {\r\n this.dialogBox.close(true);\r\n });\r\n }\r\n })\r\n );\r\n }\r\n });\r\n }\r\n\r\n private massEditProgramAndService() {\r\n // PRE: the save button is clicked\r\n // POST: Mass add the program and service and closes the dialog box\r\n const fieldDetails: ProgramAndServiceDetail[] = [];\r\n this.programAndService.ProgramAndServicesDetail.forEach(ps => {\r\n const field = new ProgramAndServiceDetail();\r\n field.FieldName = ps.FieldName;\r\n field.FieldValue = ps.FieldValue;\r\n field.Id = ps.Id;\r\n field.Sequence = ps.Sequence;\r\n field.ProgramServiceField = ps.ProgramServiceField;\r\n field.FieldType = ps.FieldType;\r\n field.FieldLookupValues = ps.FieldLookupValues;\r\n field.FieldValueId = ps.FieldValueId;\r\n field.FieldId = ps.FieldId;\r\n field.FieldLength = ps.FieldLength;\r\n field.FieldDecimal = ps.FieldDecimal;\r\n fieldDetails.push(field);\r\n });\r\n\r\n this.massEditProgramAndServices.forEach(ps => {\r\n ps.ProgramCodeId = _.cloneDeep(this.programAndService.ProgramCodeId);\r\n ps.ServiceCodeId = _.cloneDeep(this.programAndService.ServiceCodeId);\r\n ps.EntryDate = _.cloneDeep(this.programAndService.EntryDate);\r\n ps.ExitDate = _.cloneDeep(this.programAndService.ExitDate);\r\n ps.ProgramAndServicesDetail = _.cloneDeep(fieldDetails);\r\n });\r\n\r\n // Save program and service\r\n this.subscriptions.push(this.programsAndServicesService.massEditProgramAndService(this.massEditProgramAndServices).subscribe(res => {\r\n if (res && res != '' && res == 'Successful') {\r\n // Open popup if there is invalid student selection found\r\n this.dialogBox.close(true);\r\n }\r\n }));\r\n }\r\n\r\n validate() {\r\n // POST: sets the errors\r\n this.errors = [];\r\n\r\n // Program Code is required\r\n if (!this.programAndService.ProgramCodeId || this.programAndService.ProgramCodeId <= 0) {\r\n this.errors.push({\r\n fieldName: 'Program Code',\r\n fieldRef: this.programCodeField,\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n\r\n // Service Code is required\r\n if (!this.programAndService.ServiceCodeId || this.programAndService.ServiceCodeId <= 0) {\r\n this.errors.push({\r\n fieldName: 'Service Code',\r\n fieldRef: this.serviceCodeField,\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n\r\n // Entry Date is required\r\n if (!this.programAndService.EntryDate || this.programAndService.EntryDate.toString() == System.junkDate.toString()) {\r\n this.errors.push({\r\n fieldName: 'Entry Date',\r\n fieldRef: this.entryDateField,\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n No Programs and Services data for student.\r\n
\r\n\r\n \r\n 0\"\r\n matSort matSortDisableClear matSortActive=\"ProgramName\" matSortDirection=\"asc\"\r\n multiTemplateDataRows>\r\n\r\n \r\n \r\n \r\n 0\" [ngClass]=\"{\r\n 'detail-row-expanded-icon': isProgramRowsExpanded,\r\n 'detail-row-collapsed-icon': !isProgramRowsExpanded\r\n }\" (click)=\"expandAll(isProgramRowsExpanded, 'program' , tableData)\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n Program\r\n \r\n \r\n \r\n \r\n {{programAndService.ProgramName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Service\r\n \r\n \r\n \r\n \r\n {{programAndService.ServiceName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Entry Date\r\n \r\n \r\n \r\n \r\n {{programAndService.EntryDate && programAndService.EntryDate.toDateString() !=\r\n junkDate.toDateString() ? (programAndService.EntryDate | date: 'MM/dd/yy') : ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Exit Date\r\n \r\n \r\n \r\n \r\n {{programAndService.ExitDate && programAndService.ExitDate.toDateString() !=\r\n junkDate.toDateString() ? (programAndService.ExitDate | date: 'MM/dd/yy') : ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{programAndService.hasCommentsString}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{programAndService.hasAttachmentsString}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n

Service Details

\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{programAndServiceDetail.FieldName}}
\r\n {{programAndServiceDetail.FieldValue}}\r\n {{programAndServiceDetail.FieldValue\r\n | date:'MM/dd/yy'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n

Comments

\r\n
\r\n {{programAndService.Comments}}
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Filter\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n {{pc.Description}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n","import { ChangeDetectorRef, Component, EventEmitter, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { System } from '../../../shared-components/System';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { ProgramsAndServicesFilter } from '../../../student360/programs-and-services/programs-and-services-filter';\r\nimport { ProgramAndService } from '../../../student360/programs-and-services/programs-and-services.model';\r\nimport { ProgramServiceConfig } from '../../district/models/program-service.model';\r\nimport { DeleteProgramServiceDialogComponent } from '../delete-program-service-dialog/delete-program-service-dialog.component';\r\nimport { ProgramAndServiceService } from '../program-and-service.service';\r\nimport { AddEditProgramServiceSingleStudentComponent } from './add-edit-program-service-single-student/add-edit-program-service-single-student.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'single-student',\r\n templateUrl: './single-student.component.html',\r\n styleUrls: ['./single-student.component.css'],\r\n animations: [\r\n detailExpand\r\n ]\r\n})\r\nexport class SingleStudentComponent implements OnInit, OnDestroy {\r\n // Properties\r\n private _sort: MatSort;\r\n @ViewChild('filterMenu', { read: TemplateRef }) filterMenu: TemplateRef;\r\n subscriptions: Subscription[] = [];\r\n programsAndServices: ProgramAndService[];\r\n originalProgramsAndServices: ProgramAndService[];\r\n tableData = new TylerMatTableDataSource();\r\n columns = ['More', 'ProgramName', 'ServiceName', 'EntryDate', 'ExitDate', 'Comments', 'Attachments', 'Actions'];\r\n junkDate = new Date('0001-01-01T00:00:00');\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n gridHeight = 0;\r\n expanded: { [key: number]: boolean } = {};\r\n showFilter = false;\r\n filter: ProgramsAndServicesFilter;\r\n previousFilter: ProgramsAndServicesFilter;\r\n userCanEditPrograms = false;\r\n programCodes: ProgramServiceConfig[] = [];\r\n isProgramRowsExpanded = false;\r\n showInactiveProg = false;\r\n showInactiveProgram = 4;\r\n // Class Functions\r\n constructor(\r\n private dialog: MatDialog,\r\n private programsAndServicesService: ProgramAndServiceService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private changeDetector: ChangeDetectorRef,\r\n private router: Router\r\n ) { }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n if (this.tableData) {\r\n this.tableData.sort = this._sort;\r\n }\r\n }\r\n\r\n private _paginator: MatPaginator;\r\n @ViewChild(MatPaginator, { static: true }) set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.tableData.paginator = value;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes and obtains the necessary data\r\n\r\n // Initializing data\r\n this.filter = new ProgramsAndServicesFilter();\r\n this.previousFilter = new ProgramsAndServicesFilter();\r\n this.filter.shown = 5;\r\n this.previousFilter.shown = 0;\r\n\r\n if (this.studentService.selectedProgramName && this.studentService.selectedServiceName) {\r\n this.filter.programName = this.studentService.selectedProgramName;\r\n this.filter.serviceName = this.studentService.selectedServiceName;\r\n\r\n this.studentService.selectedProgramName = '';\r\n this.studentService.selectedServiceName = '';\r\n }\r\n\r\n // Getting data\r\n this.getProgramServiceCodesByUserId();\r\n this.subscriptions.push(\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n this.getProgramsAndServices();\r\n }),\r\n this.toggleAllRows.subscribe(toggle => {\r\n this.tableData.expandAll(toggle);\r\n }),\r\n this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.getProgramServiceCodesByUserId();\r\n }),\r\n this.studentService.observableSelectedProgramAndServiceStream.subscribe(() => {\r\n if (this.studentService.selectedProgramName && this.studentService.selectedServiceName) {\r\n this.filter.programName = this.studentService.selectedProgramName;\r\n this.filter.serviceName = this.studentService.selectedServiceName;\r\n\r\n this.studentService.selectedProgramName = '';\r\n this.studentService.selectedServiceName = '';\r\n\r\n this.tableData.removeAllFilters();\r\n this.applyFilter();\r\n this.changeDetector.detectChanges();\r\n }\r\n })\r\n );\r\n this.tableData.sort = this.sort;\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n openFilter() {\r\n this.showFilter = !this.showFilter;\r\n }\r\n\r\n clearFilter() {\r\n // PRE: the user clicks on the clear button in the filter\r\n // POST: clears the filter data and DOES NOT CLOSE THE FILTER\r\n this.showInactiveProg = false;\r\n let getNewData = false;\r\n const initializeFilter = new ProgramsAndServicesFilter();\r\n initializeFilter.shown = 5;\r\n if (this.filter.shown != initializeFilter.shown) {\r\n getNewData = true;\r\n }\r\n Object.assign(this.filter, initializeFilter);\r\n if (getNewData) {\r\n this.getProgramsAndServices();\r\n } else {\r\n this.applyFilter();\r\n }\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n clearFilterFromNotice() {\r\n // PRE: the user clicks the clear filter link from the notice on the footer\r\n // POTS: clears the footer and resets ALL of the values (because the filter isn't open)\r\n this.showInactiveProg = false;\r\n let getNewData = false;\r\n const initializeFilter = new ProgramsAndServicesFilter();\r\n initializeFilter.shown = 5;\r\n if (this.filter.shown != initializeFilter.shown) {\r\n getNewData = true;\r\n }\r\n Object.assign(this.filter, initializeFilter);\r\n this.tableData.removeAllFilters();\r\n if (getNewData) {\r\n this.getProgramsAndServices();\r\n } else {\r\n this.applyFilter();\r\n }\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n closeFilter() {\r\n this.openFilter();\r\n }\r\n\r\n // Methods\r\n isFiltered() {\r\n // POST: returns true if the data is being panelFiltered\r\n if (this.filter.entryDateStart && this.filter.entryDateStart.toString() == 'Invalid Date') {\r\n this.filter.entryDateStart = undefined;\r\n }\r\n if (this.filter.entryDateEnd && this.filter.entryDateEnd.toString() == 'Invalid Date') {\r\n this.filter.entryDateEnd = undefined;\r\n }\r\n if (this.filter.exitDateStart && this.filter.exitDateStart.toString() == 'Invalid Date') {\r\n this.filter.exitDateStart = undefined;\r\n }\r\n if (this.filter.exitDateEnd && this.filter.exitDateEnd.toString() == 'Invalid Date') {\r\n this.filter.exitDateEnd = undefined;\r\n }\r\n const initialFilter = new ProgramsAndServicesFilter();\r\n initialFilter.shown = 5;\r\n return !System.isEqual(this.filter, initialFilter) || this.tableData.isFiltered();\r\n }\r\n\r\n toggleExpanded(rowId: number) {\r\n // POST: toggles the expansion of that row\r\n this.expanded[rowId] = !this.expanded[rowId];\r\n }\r\n\r\n getProgramsAndServices() {\r\n // POST: uses the services to get programs and services, returning the observable\r\n this.subscriptions.push(\r\n this.programsAndServicesService.getProgramsAndServices(this.filter.shown).subscribe(programsAndServices => {\r\n this.programsAndServices = [];\r\n programsAndServices.forEach(programAndService => {\r\n for (let i = 0; i < programAndService.Attachments.length; i++) {\r\n programAndService.Attachments[i] = System.convert(programAndService.Attachments[i], new Attachment());\r\n }\r\n this.programsAndServices.push(System.convert(programAndService, new ProgramAndService()));\r\n });\r\n\r\n this.programCodes.filter(o => o.UserHasEditPermission == true).forEach(pc => {\r\n this.programsAndServices.filter(o => o.ProgramCodeId == pc.Id).forEach(ps => {\r\n ps.UserHasEditPermission = true;\r\n });\r\n });\r\n\r\n this.programCodes.filter(o => o.UserHasDeletePermission == true).forEach(pc => {\r\n this.programsAndServices.filter(o => o.ProgramCodeId == pc.Id).forEach(ps => {\r\n ps.UserHasDeletePermission = true;\r\n });\r\n });\r\n\r\n setTimeout(\r\n () => {\r\n this.originalProgramsAndServices = _.cloneDeep(this.programsAndServices);\r\n this.tableData.data = this.programsAndServices;\r\n this.applyFilter();\r\n this.expanded = {};\r\n if (this.sort) {\r\n this.tableData.sort = this.sort;\r\n }\r\n },\r\n 0\r\n );\r\n })\r\n );\r\n }\r\n\r\n hasDetails(programAndService: ProgramAndService): boolean {\r\n // POST: returns true if the program and service has details\r\n return programAndService.Comments != '' ||\r\n (programAndService.ProgramAndServicesDetail && programAndService.ProgramAndServicesDetail.length > 0);\r\n }\r\n\r\n applyFilter() {\r\n // POST: applies the filter to the data\r\n let data = this.programsAndServices;\r\n\r\n // Entry Date\r\n if (this.filter.entryDateStart && this.filter.entryDateStart.toString() != 'Invalid Date') {\r\n System.roundDateDown(this.filter.entryDateStart);\r\n data = data.filter(datum =>\r\n datum.EntryDate >= this.filter.entryDateStart\r\n );\r\n }\r\n if (this.filter.entryDateEnd && this.filter.entryDateEnd.toString() != 'Invalid Date') {\r\n System.roundDateUp(this.filter.entryDateEnd);\r\n data = data.filter(datum =>\r\n datum.EntryDate <= this.filter.entryDateEnd\r\n );\r\n }\r\n\r\n // Exit Date\r\n if (this.filter.exitDateStart && this.filter.exitDateStart.toString() != 'Invalid Date') {\r\n System.roundDateDown(this.filter.exitDateStart);\r\n data = data.filter(datum =>\r\n datum.ExitDate >= this.filter.exitDateStart\r\n );\r\n }\r\n if (this.filter.exitDateEnd && this.filter.exitDateEnd.toString() != 'Invalid Date') {\r\n System.roundDateUp(this.filter.exitDateEnd);\r\n data = data.filter(datum =>\r\n datum.ExitDate <= this.filter.exitDateEnd\r\n );\r\n }\r\n\r\n // Show Services active on this date\r\n if (this.filter.onThisDate && this.filter.onThisDate.toString() != 'Invalid Date') {\r\n System.roundDateDown(this.filter.onThisDate);\r\n const that = this;\r\n data = data.filter(datum =>\r\n datum.EntryDate <= this.filter.onThisDate && (datum.ExitDate.toString() == that.junkDate.toString() || datum.ExitDate >= this.filter.onThisDate)\r\n );\r\n }\r\n\r\n // Program Name\r\n if (this.filter.programName) {\r\n data = data.filter(datum =>\r\n datum.ProgramName.toLowerCase().includes(this.filter.programName.toLowerCase())\r\n );\r\n }\r\n\r\n // Setting the table data\r\n this.tableData.data = data;\r\n }\r\n\r\n onShowInactiveProgram(event) {\r\n // PRE: Initialize the Student Programs and Services landing page\r\n // POST: Show only Inactive programs\r\n\r\n if (event) {\r\n // ViewOption = 4 To Show inactive program and service\r\n this.subscriptions.push(\r\n this.programsAndServicesService.getProgramsAndServices(this.showInactiveProgram).subscribe(programsAndServices => {\r\n this.programsAndServices = [];\r\n programsAndServices.forEach(programAndService => {\r\n for (let i = 0; i < programAndService.Attachments.length; i++) {\r\n programAndService.Attachments[i] = System.convert(programAndService.Attachments[i], new Attachment());\r\n }\r\n this.programsAndServices.push(System.convert(programAndService, new ProgramAndService()));\r\n });\r\n \r\n this.programCodes.filter(o => o.UserHasEditPermission == true).forEach(pc => {\r\n this.programsAndServices.filter(o => o.ProgramCodeId == pc.Id).forEach(ps => {\r\n ps.UserHasEditPermission = true;\r\n });\r\n });\r\n \r\n setTimeout(\r\n () => {\r\n this.originalProgramsAndServices = _.cloneDeep(this.programsAndServices);\r\n this.tableData.data = this.programsAndServices; \r\n this.applyFilter();\r\n this.expanded = {};\r\n if (this.sort) {\r\n this.tableData.sort = this.sort;\r\n }\r\n },\r\n 0\r\n );\r\n })\r\n ); \r\n }\r\n else {\r\n this.filter.shown = 5;\r\n this.clearFilterFromNotice();\r\n this.getProgramsAndServices();\r\n }\r\n\r\n }\r\n\r\n getProgramServiceCodesByUserId() {\r\n this.userCanEditPrograms = false;\r\n this.programsAndServicesService.getProgramServiceCodesByUserId(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(result => {\r\n this.programCodes = result;\r\n this.getProgramsAndServices();\r\n\r\n if (this.programCodes.filter(o => o.UserHasEditPermission == true).length > 0) {\r\n this.userCanEditPrograms = true;\r\n }\r\n });\r\n }\r\n\r\n // Add/Edit Program service events\r\n addProgram() {\r\n // POST: opens the add modal\r\n const programAndService = new ProgramAndService();\r\n const studentId = this.studentService.selectedStudent.Id;\r\n // Open add/edit program and service\r\n const dialogBox = this.dialog.open(AddEditProgramServiceSingleStudentComponent, {\r\n data: {\r\n addProgram: true,\r\n programAndService: programAndService,\r\n programCodes: this.programCodes,\r\n studentId: studentId\r\n },\r\n disableClose: true,\r\n minWidth: '120vh',\r\n maxWidth: '120vh',\r\n });\r\n dialogBox.afterClosed().subscribe(newProgram => {\r\n this.getProgramsAndServices();\r\n });\r\n }\r\n\r\n editProgram(program: ProgramAndService) {\r\n // POST: opens the edit modal for a program\r\n const studentId = this.studentService.selectedStudent.Id;\r\n const dialogBox = this.dialog.open(AddEditProgramServiceSingleStudentComponent, {\r\n data: {\r\n addProgram: false,\r\n programAndService: program,\r\n programCodes: this.programCodes,\r\n studentId: studentId\r\n },\r\n disableClose: true,\r\n minWidth: '120vh',\r\n maxWidth: '120vh',\r\n });\r\n dialogBox.afterClosed().subscribe(newProgram => {\r\n this.getProgramsAndServices();\r\n });\r\n }\r\n\r\n expandAll(expand: boolean, type: string, dataSource: any) {\r\n // POST: expands or collapses semesters/terms rows\r\n if (type === 'program') {\r\n this.isProgramRowsExpanded = !expand;\r\n this.tableData.data.forEach(program => {\r\n program.detailRow = this.isProgramRowsExpanded;\r\n });\r\n }\r\n }\r\n\r\n deleteProgram(program: ProgramAndService) {\r\n // POST: opens the delete modal for program\r\n let delMessage = '';\r\n delMessage = 'Are you sure you want to delete ' + program.ProgramName + ' - ' + program.ServiceName + ' from ' + this.studentService.selectedStudent.LastName + ', ' + this.studentService.selectedStudent.FirstName + '?';\r\n const dialogBox = this.dialog.open(DeleteProgramServiceDialogComponent, {\r\n data: {\r\n id: program.Id,\r\n type: 'delete',\r\n title: 'Delete Program/Service',\r\n message: delMessage\r\n },\r\n minWidth: '40vh',\r\n maxWidth: '55vh',\r\n });\r\n dialogBox.afterClosed().subscribe(deleted => {\r\n if (deleted) {\r\n this.getProgramsAndServices();\r\n }\r\n });\r\n }\r\n\r\n getInactiveChkStyle() {\r\n if (this.regEnrollMode()) {\r\n return { position: 'fixed', right: '70px' };\r\n }\r\n }\r\n\r\n regEnrollMode() {\r\n return this.router.url.toLowerCase().indexOf('registrationenrollment') > -1;\r\n }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from '../../../shared-components/System';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { AttendanceCodes, AttendanceOptions, AttendanceStepDefinition, AttendanceCodeStepDefinition, ReportingSystemTemplatesForAttendance } from './school-settings-attendance.model';\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SchoolSettingsAttendanceService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService\r\n ) { }\r\n\r\n getSchoolSettingsAttendanceCode(): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Management + 'GetSchoolSettingsAttendanceCode' + queryString);\r\n }\r\n\r\n updateSchoolSettingsAttendanceCode(data: AttendanceCodes[]): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Management + 'UpdateSchoolSettingsAttendanceCode' + queryString, data);\r\n }\r\n\r\n getSchoolSettingsAttendanceOptions(): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Management + 'GetSchoolSettingsAttendanceOptions' + queryString);\r\n }\r\n\r\n updateSchoolSettingsAttendanceOptions(data: AttendanceOptions): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Management + 'UpdateSchoolSettingsAttendanceOptions' + queryString, data);\r\n }\r\n\r\n getSchoolSettingsStepDefinitions(): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Management + 'GetSchoolSettingsStepDefinitions' + queryString);\r\n }\r\n\r\n getSchoolSettingsAttendanceCodeByStepDefinitionId(stepDefinitionId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&stepDefinitionId=' + stepDefinitionId;\r\n return this.http.get(System.apiURL.Management + 'GetAttendanceCodesByStepDefinitionId' + queryString);\r\n }\r\n\r\n updateAttendanceTrackingGroup(data: AttendanceStepDefinition, ac: AttendanceCodes[]): Observable {\r\n data.AttendanceCodes = _.cloneDeep(ac);\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Management + 'UpdateAttendanceTrackingGroup' + queryString, data);\r\n }\r\n\r\n attendanceStepDEfinitionDuplicateCheck(description: string): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&description=' + description;\r\n return this.http.get(System.apiURL.Management + 'AttendanceStepDEfinitionDuplicateCheck' + queryString);\r\n }\r\n\r\n stepSystemRunBatch(templateId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&templateId=' + templateId;\r\n return this.http.get(System.apiURL.Management + 'StepSystemRunBatch' + queryString);\r\n }\r\n\r\n getSchoolSettingsReportingSystemTemplates(): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Management + 'GetSchoolSettingsReportingSystemTemplates' + queryString);\r\n }\r\n\r\n deleteAttendanceTrackingGroup(templateId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&templateId=' + templateId;\r\n return this.http.get(System.apiURL.Management + 'DeleteAttendanceTrackingGroup' + queryString);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from '../../../shared-components/System';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { PermissionGroupDescription, PermissionGroupUsers, PermissionsGroupsAssignedToStaff, PermissionsList, WhoHasPermissions } from './permissions-groups.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermissionsGroupsService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService\r\n ) { }\r\n\r\n getPermissionGroupDescription(): Observable {\r\n return this.http.get(System.apiURL.Management + 'GetPermissionGroupDescription');\r\n }\r\n\r\n getAllUsersAssignedToPermissionsGroups(): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Management + 'GetAllUsersAssignedToPermissionsGroups' + queryString);\r\n }\r\n\r\n isPermissionsGroupExists(permissionsGroupName: string, permissionsGroupId: number): Observable {\r\n const queryString = '?permissionsGroupName=' + permissionsGroupName + '&permissionsGroupId=' + permissionsGroupId;\r\n return this.http.get(System.apiURL.Management + 'IsPermissionsGroupExists' + queryString);\r\n }\r\n\r\n copyPermissionsGroup(copyFromGroupId: number, permissionsGroupName: string): Observable {\r\n const queryString = '?copyFromGroupId=' + copyFromGroupId + '&permissionsGroupName=' + permissionsGroupName;\r\n return this.http.get(System.apiURL.Management + 'CopyPermissionsGroup' + queryString);\r\n }\r\n\r\n copyPermissions(action: boolean, copyFromGroupId: number, copyToGroupIdList: number[]): Observable {\r\n const queryString = '?action=' + action + '©FromGroupId=' + copyFromGroupId;\r\n return this.http.post(System.apiURL.Management + 'CopyPermissions' + queryString, copyToGroupIdList);\r\n }\r\n\r\n deletePermissionsGroup(permissionsGroupId: number): Observable {\r\n const queryString = '?permissionsGroupId=' + permissionsGroupId;\r\n return this.http.get(System.apiURL.Management + 'DeletePermissionsGroup' + queryString);\r\n }\r\n\r\n getPermissionsList(permissionsGroupId: number): Observable {\r\n const queryString = '?permissionsGroupId=' + permissionsGroupId;\r\n return this.http.get(System.apiURL.Management + 'GetPermissionsList' + queryString);\r\n }\r\n\r\n savePermissionsGroup(permissionsGroupId: number, permissionsGroupName: string, permissionsList: PermissionsList[]): Observable {\r\n const queryString = '?permissionsGroupId=' + permissionsGroupId + '&permissionsGroupName=' + permissionsGroupName;\r\n return this.http.post(System.apiURL.Management + 'SavePermissionsGroup' + queryString, permissionsList);\r\n }\r\n\r\n getWhoHasPermissions(permissionAreaId: number, permissionName: string): Observable {\r\n const queryString = '?permissionAreaId=' + permissionAreaId + '&permissionName=' + permissionName;\r\n return this.http.get(System.apiURL.Management + 'GetWhoHasPermissions' + queryString);\r\n }\r\n\r\n getUserPermissions(permissionsGroupId: number, staffUserId: number, schoolId: number): Observable {\r\n const queryString = '?siteId=' + schoolId + '&permissionsGroupId=' + permissionsGroupId + '&staffUserId=' + staffUserId;\r\n return this.http.get(System.apiURL.Management + 'GetUserPermissions' + queryString);\r\n }\r\n\r\n saveUserPermissionsGroups(staffUserId: number, schoolId: number, permissionsGroups: PermissionGroupDescription[]): Observable {\r\n const queryString = '?staffUserId=' + staffUserId + '&schoolId=' + schoolId;\r\n return this.http.post(System.apiURL.Management + 'SaveUserPermissionsGroups' + queryString, permissionsGroups);\r\n }\r\n\r\n getPermissionsGroupsAssignedToStaffUser(staffUserId: number, schoolId: number, primaryGroupOnly: boolean): Observable {\r\n const queryString = '?staffUserId=' + staffUserId + '&schoolId=' + schoolId + '&primaryGroupOnly=' + primaryGroupOnly;\r\n return this.http.get(System.apiURL.Management + 'GetPermissionsGroupsAssignedToStaffUser' + queryString);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { Staff, StaffEmergencyContact } from '../../shared-components/staff-search/staff.model';\r\nimport { System } from '../../shared-components/System';\r\nimport { HttpClient } from '@angular/common/http';\r\n// import { StaffMedicalCondition, StaffHealthVisitLog, ClinicVisitLogCodes, MedicalUsers, MedicalCodeTreatment } from './staff-health/staff-health.model';\r\nimport { StaffAssignedSchoolsAndRoles } from './staff-header.model';\r\nimport { UnsavedChangesGuard } from '../../shared-components/guards/unsaved-changes/unsaved-changes.guard';\r\nimport { CheckForErrorsGuard } from '../../shared-components/guards/check-for-errors/check-for-errors.guard';\r\nimport { PhotoIdLayout, StaffRolesLookup, StaffUser } from './staff.model';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { StaffAttendance } from './staff-attendance/staff-attendance.model';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { FacultyStaff, StaffAddress, StaffAditionalAdress, StaffAssociation, StaffDocument, StaffDocumentType, StaffStateReporting } from './models/faculty-staff.model';\r\nimport { SchoolYearAssignmentPermissions } from './models/school-year-assignment.model';\r\nimport { StaffUserRoles } from './models/staffUserRoles.model';\r\nimport { PermissionsList } from './permissions-groups/permissions-groups.model';\r\nimport { ClinicVisitLogCodes, MedicalCodeTreatment, MedicalUsers, StaffHealthVisitLog, StaffMedicalCondition } from '../../health360/staff-health/staff-health.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StaffService {\r\n\r\n staffList: Staff[] = [];\r\n staffAlerts: StaffMedicalCondition[] = [];\r\n copyStaffMedicalConditionRecord = new StaffMedicalCondition();\r\n copyStaffHealthVisitLog = new StaffHealthVisitLog();\r\n recordCopied = false;\r\n familyId: number;\r\n updatedUsers: number [] = [];\r\n\r\n private _selectedStaff: Staff;\r\n public get selectedStaff(): Staff {\r\n return this._selectedStaff;\r\n }\r\n\r\n public set selectedStaff(value: Staff) {\r\n this._selectedStaff = value;\r\n this.observableSelectedStaff.next(value);\r\n }\r\n\r\n public observableSelectedStaff = new Subject();\r\n observableSelectedStaffStream$ = this.observableSelectedStaff.asObservable();\r\n\r\n public observableStateReportingPermition = new Subject();\r\n observableStateReportingPermitionStream$ = this.observableStateReportingPermition.asObservable();\r\n\r\n constructor(private http: HttpClient,\r\n private unsavedChangesGuard: UnsavedChangesGuard,\r\n private checkForErrorsGuard: CheckForErrorsGuard,\r\n private yearService: YearService) { }\r\n\r\n private _staffCurrentMedicalConditionChecked: boolean;\r\n public get staffCurrentMedicalConditionChecked(): boolean {\r\n return this._staffCurrentMedicalConditionChecked;\r\n }\r\n\r\n public set staffCurrentMedicalConditionChecked(value: boolean) {\r\n this._staffCurrentMedicalConditionChecked = value;\r\n this.observableStaffCurrentMedicalConditionChecked.next(value);\r\n }\r\n\r\n public observableStaffCurrentMedicalConditionChecked = new Subject();\r\n observableStaffCurrentMedicalConditionCheckedStream$ = this.observableStaffCurrentMedicalConditionChecked.asObservable();\r\n\r\n private _medicalConditionShowAlert: boolean;\r\n public get medicalConditionShowAlert(): boolean {\r\n return this._medicalConditionShowAlert;\r\n }\r\n\r\n public set medicalConditionShowAlert(value: boolean) {\r\n this._medicalConditionShowAlert = value;\r\n this.observableMedicalConditionShowAlert.next(value);\r\n }\r\n\r\n public observableMedicalConditionShowAlert = new Subject();\r\n observableMedicalConditionShowAlertStream$ = this.observableMedicalConditionShowAlert.asObservable();\r\n\r\n updateStaff(staffList: Staff[], selectedStaff: Staff) {\r\n this.staffList = staffList;\r\n this.selectedStaff = this.staffList.find(x => x.StaffId == selectedStaff.StaffId);\r\n if (staffList.length > 0) {\r\n this.updateSelectedStaff(selectedStaff);\r\n }\r\n // this.selectedStaff = this.staffList.find(x => x.StaffId == selectedStaff.StaffId);\r\n }\r\n\r\n setUnmask(phone: string) {\r\n phone = phone.replace('(', '');\r\n phone = phone.replace(')', '');\r\n phone = phone.replace('____', '');\r\n phone = phone.replace('___', '');\r\n phone = phone.replace('__', '');\r\n phone = phone.replace('-', '');\r\n phone = phone.replace('_', '');\r\n phone = phone.replace(' ', '');\r\n return phone.trim();\r\n }\r\n\r\n getStaffPicture(staffId: number, yearId: number): Observable {\r\n const queryString = '?staffId=' + staffId + '&siteYearId=' + yearId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffPicture' + queryString);\r\n }\r\n\r\n getStaffHeaderDetail(staffId: number): Observable {\r\n const queryString = '?staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffHeaderDetail' + queryString);\r\n }\r\n\r\n getStaffMedicalAlerts(staffId: number): Observable {\r\n const queryString = '?staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffMedicalAlerts' + queryString);\r\n }\r\n\r\n getStaffAssignedSchools(staffId: number, yearId: number): Observable {\r\n const queryString = '?staffId=' + staffId + '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffAssignedSchools' + queryString);\r\n }\r\n\r\n getMedicalConditionReadByStaffId(staffId: number, siteId: number, yearId: number, currentMedicalCondition: boolean): Observable {\r\n const showCurrentMedicalCondition = currentMedicalCondition == undefined ? false : currentMedicalCondition;\r\n const queryString = '?staffId=' + staffId + '&siteId=' + siteId + '&yearId=' + yearId + '&showCurrentMedicalCondition=' + showCurrentMedicalCondition;\r\n return this.http.get(System.apiURL.Management + 'GetMedicalConditionReadByStaffId' + queryString);\r\n }\r\n\r\n SaveStaffMedicalCondition(staffId: number, siteYearId: number, data: StaffMedicalCondition): Observable {\r\n const queryString = '?staffId=' + staffId\r\n + '&siteYearId=' + siteYearId;\r\n return this.http.post(System.apiURL.Management + 'SaveStaffMedicalCondition' + queryString, data);\r\n }\r\n\r\n getStaffHealthVisitLogReadByStaffId(staffId: number, siteId: number, yearId: number): Observable {\r\n const queryString = '?staffId=' + staffId + '&siteId=' + siteId + '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffHealthVisitLog' + queryString);\r\n }\r\n\r\n getStaffHealthVisitLogReadById(visitId: number, siteId: number, yearId: number): Observable {\r\n const queryString = '?visitId=' + visitId + '&siteId=' + siteId + '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffHealthVisitLogReadById' + queryString);\r\n }\r\n\r\n getStaffDocuments(staffId: number, yearId: number): Observable {\r\n const queryString = '?staffId=' + staffId + '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffDocuments' + queryString);\r\n }\r\n\r\n getStaffDocumentType(): Observable {\r\n return this.http.get(System.apiURL.Management + 'GetStaffDocumentType');\r\n }\r\n\r\n saveStaffDocument(document: StaffDocument): Observable {\r\n return this.http.post(System.apiURL.Management + 'SaveStaffDocument', document);\r\n }\r\n\r\n deleteStaffDocument(documentId: number): Observable {\r\n const queryString = '?documentId=' + documentId;\r\n return this.http.get(System.apiURL.Management + 'DeleteStaffDocument' + queryString);\r\n }\r\n\r\n getClinicLogVisitCodes(): Observable {\r\n return this.http.get(System.apiURL.Management + 'GetClinicLogVisitCodes');\r\n }\r\n\r\n updateSelectedStaff(staff: Staff) {\r\n const canContinue = this.unsavedChangesGuard.checkForDeactivation() && this.checkForErrorsGuard.checkForDeactivation();\r\n if (canContinue instanceof Observable) {\r\n canContinue.subscribe(clickedOk => {\r\n if (clickedOk) {\r\n if (staff != null) {\r\n this.selectedStaff = staff;\r\n } else {\r\n this.observableSelectedStaff.next(null);\r\n }\r\n }\r\n });\r\n } else if (canContinue) {\r\n if (staff != null) {\r\n this.selectedStaff = staff;\r\n } else {\r\n this.selectedStaff = null;\r\n this.observableSelectedStaff.next(null);\r\n }\r\n }\r\n }\r\n\r\n getStaffClassesByStaffId(staffId: number, yearId: number, siteId: number): Observable {\r\n const queryString = '?staffId=' + staffId + '&yearId=' + yearId + '&siteId=' + siteId;\r\n return this.http.get(System.apiURL.Classroom + 'GetStaffClassesByStaffId' + queryString);\r\n }\r\n\r\n getOnDutyUsers(siteYearId: number): Observable {\r\n const queryString = '?siteYearId=' + siteYearId;\r\n return this.http.get(System.apiURL.Management + 'GetMedicalUserBySiteYearId' + queryString);\r\n }\r\n\r\n getMedicalCodeTreatmentBySiteId(siteId: number): Observable {\r\n const queryString = '?siteId=' + siteId;\r\n return this.http.get(System.apiURL.Management + 'GetMedicalCodeTreatmentBySiteId' + queryString);\r\n }\r\n\r\n deleteHealthVisitLogById(clinicLogId: number): Observable {\r\n const queryString = '?clinicLogId=' + clinicLogId;\r\n return this.http.get(System.apiURL.Management + 'DeleteHealthVisitLogById' + queryString);\r\n }\r\n\r\n saveHealthVisitLog(staffId: number, siteYearId: number, data: StaffHealthVisitLog): Observable {\r\n const queryString = '?staffId=' + staffId\r\n + '&siteYearId=' + siteYearId;\r\n return this.http.post(System.apiURL.Management + 'SaveHealthVisitLog' + queryString, data);\r\n }\r\n saveTreatmentCode(clinicLogId: number, data: number[]) {\r\n const queryString = '?clinicLogId=' + clinicLogId;\r\n return this.http.post(System.apiURL.Management + 'SaveClinicLogToClinicTreatments' + queryString, data);\r\n }\r\n\r\n deleteClinicTreatmentByClinicLogId(clinicLogId: number): Observable {\r\n const queryString = '?clinicLogId=' + clinicLogId;\r\n return this.http.get(System.apiURL.Management + 'DeleteClinicLogTreatmentByClinicLogId' + queryString);\r\n }\r\n\r\n getStaffByStaffId(staffId: number, yearId: number): Observable {\r\n const queryString = '?staffId=' + staffId + '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Management + 'GetFacultyStaffById' + queryString);\r\n }\r\n\r\n // --------------------\r\n getPrimayAddressByFamilyId(familyId: number): Observable {\r\n const queryString = '?familyId=' + familyId;\r\n return this.http.get(System.apiURL.Management + 'GetPrimayAddressByFamilyId' + queryString);\r\n }\r\n\r\n getAditionlaAddressesByFamilyId(familyId: number): Observable {\r\n const queryString = '?familyId=' + familyId;\r\n return this.http.get(System.apiURL.Management + 'GetAditionlaAddressesByFamilyId' + queryString);\r\n }\r\n\r\n saveStaffPrimayAddress(address: StaffAddress): Observable {\r\n return this.http.post(System.apiURL.Management + 'SaveStaffPrimayAddress', address);\r\n }\r\n\r\n saveStaffAditionalAddress(aditionalAddress: StaffAditionalAdress): Observable {\r\n return this.http.post(System.apiURL.Management + 'SaveStaffAditionalAddress', aditionalAddress);\r\n }\r\n\r\n deleteStaffAddress(familyId: number, addressId: number): Observable {\r\n const queryString = '?lngFamilyId=' + familyId + '&lngAddressId=' + addressId;\r\n return this.http.get(System.apiURL.Management + 'DeleteStaffAddress' + queryString);\r\n }\r\n\r\n isExistStudentAndStaffStrLunchPin(lunchPin: string, studentId: number, staffId: number): Observable {\r\n const queryString = '?lunchPin=' + lunchPin\r\n + '&studentId=' + studentId\r\n + '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'IsExistStudentAndStaffStrLunchPin' + queryString);\r\n }\r\n\r\n isExistStudentAndStaffStrID(strIds: string, studentId: number, staffId: number, specialCase = false): Observable {\r\n const queryString = '?strIds=' + strIds\r\n + '&studentId=' + studentId\r\n + '&staffId=' + staffId\r\n + '&specialCase=' + specialCase;\r\n return this.http.get(System.apiURL.Management + 'IsExistStudentAndStaffStrID' + queryString);\r\n }\r\n\r\n saveFacultyStaff(staff: FacultyStaff): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id\r\n + '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Management + 'SaveFacultyStaff' + queryString, staff);\r\n }\r\n\r\n saveFacultyStaffPhoto(staff: FacultyStaff): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id\r\n + '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Management + 'SaveFacultyStaffPhoto' + queryString, staff);\r\n }\r\n\r\n deleteFacultyStafftById(staffId: number): Observable {\r\n const queryString = '?staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'DeleteFacultyStaffById' + queryString);\r\n }\r\n facultyStaffReadByNameDuplicateChk(firstName: string, lastName: string, staffId: number): Observable {\r\n const queryString = '?lastName=' + lastName\r\n + '&firstName=' + firstName\r\n + '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'FacultyStaffReadByNameDuplicateChk' + queryString);\r\n }\r\n\r\n isStaffInUse(staffId: number): Observable {\r\n const queryString = '?staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'IsStaffInUse' + queryString);\r\n }\r\n\r\n // Staff Attendance\r\n getStaffAttendance(staffId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffAttendance' + queryString);\r\n }\r\n\r\n updateStaffAttendance(staffAtt: StaffAttendance): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Management + 'UpdateStaffAttendance' + queryString, staffAtt);\r\n }\r\n\r\n deleteStaffAttendance(attendanceId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&attendanceId=' + attendanceId;\r\n return this.http.get(System.apiURL.Management + 'DeleteStaffAttendance' + queryString);\r\n }\r\n\r\n // Staff User\r\n getStaffUser(staffId: number): Observable {\r\n const queryString = '?staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffUser' + queryString);\r\n }\r\n\r\n saveStaffUser(staffUser: StaffUser): Observable {\r\n const queryString = '?schoolYearId=' + this.yearService.defaultYear.SiteYearId;\r\n return this.http.post(System.apiURL.Management + 'SaveStaffUser' + queryString, staffUser);\r\n }\r\n getUserByUserId(userId: number, userType: number): Observable {\r\n const queryString = '?userId=' + userId\r\n + '&userType=' + userType;\r\n return this.http.get(System.apiURL.Student + 'GetUserByUserId' + queryString);\r\n }\r\n\r\n // Staff Emergency Contact\r\n getStaffEmergencyContacts(staffId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffEmergencyContacts' + queryString);\r\n }\r\n\r\n saveStaffEmergencyContactSequence(staffEmergencyContacts: StaffEmergencyContact[]): Observable {\r\n return this.http.post(System.apiURL.Management + 'SaveStaffEmergencyContactSequence', staffEmergencyContacts);\r\n }\r\n\r\n updateStaffEmergencyContact(emergencyContact: StaffEmergencyContact): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Management + 'UpdateStaffEmergencyContact' + queryString, emergencyContact);\r\n }\r\n\r\n deleteStaffEmergencyContact(familyId: number, peopleId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&siteId=' + this.yearService.defaultYear.SchoolID +\r\n '&familyId=' + familyId + '&peopleId=' + peopleId;\r\n return this.http.get(System.apiURL.Management + 'DeleteStaffEmergencyContact' + queryString);\r\n }\r\n\r\n // School Year Assignment Permissions\r\n getStaffSchoolAssignments(staffId: number): Observable {\r\n const queryString = '?yearId=' + '0' +\r\n '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffSchoolAssignments' + queryString);\r\n }\r\n\r\n saveStaffSchoolAssignments(schoolYearAssignmentPermissions: SchoolYearAssignmentPermissions[], specificPermissions: boolean): Observable {\r\n const queryString = '?specificPermissions=' + specificPermissions;\r\n return this.http.post(System.apiURL.Management + 'SaveStaffSchoolAssignments' + queryString, schoolYearAssignmentPermissions);\r\n }\r\n\r\n saveStaffReporting(staffStateReporting: StaffStateReporting): Observable {\r\n return this.http.post(System.apiURL.Management + 'SaveStaffReporting', staffStateReporting);\r\n }\r\n\r\n getCMPComponentValidation(): Observable {\r\n return this.http.get(System.apiURL.Management + 'GetCMPComponentValidation');\r\n }\r\n\r\n getStaffClassifications(): Observable {\r\n return this.http.get(System.apiURL.Management + 'GetStaffClassifications');\r\n }\r\n\r\n getStaffHeigherEducations(): Observable {\r\n return this.http.get(System.apiURL.Management + 'GetStaffHeigherEducations');\r\n }\r\n\r\n getPhotoIdLayout(siteYearId: number): Observable {\r\n const queryString = '?siteYearId=' + siteYearId;\r\n return this.http.get(System.apiURL.Management + 'GetPhotoIdLayout' + queryString);\r\n }\r\n\r\n // Staff Administration - Permissions\r\n copyUserPermissions(copyFromStaffId: number, copyToStaffIdList: number[], copyPermissionGroups: boolean, copyRoles: boolean, copyIndividualPermissions: boolean, copySchools: boolean, action: boolean): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '©FromStaffId=' + copyFromStaffId +\r\n '©PermissionGroups=' + copyPermissionGroups +\r\n '©Roles=' + copyRoles +\r\n '©IndividualPermissions=' + copyIndividualPermissions +\r\n '©Schools=' + copySchools +\r\n '&action=' + action;\r\n return this.http.post(System.apiURL.Management + 'CopyUserPermissions' + queryString, copyToStaffIdList);\r\n }\r\n\r\n getStaffRoles(staffId: number, schoolId: number = this.yearService.defaultYear.SchoolID, yearId: number = this.yearService.defaultYear.Id): Observable {\r\n const queryString = '?yearId=' + yearId\r\n + '&siteId=' + schoolId\r\n + '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'GetStaffRoles' + queryString);\r\n }\r\n saveStaffRoles(userRoles: StaffUserRoles, schoolId: number = this.yearService.defaultYear.SchoolID, yearId: number = this.yearService.defaultYear.Id): Observable {\r\n const queryString = '?yearId=' + yearId\r\n + '&siteId=' + schoolId;\r\n return this.http.post(System.apiURL.Management + 'SaveStaffRoles' + queryString, userRoles);\r\n }\r\n clearPersmissions(staffId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id\r\n + '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'ClearStaffAllSchoolsPermissions' + queryString);\r\n }\r\n\r\n mergeStaffAllSchoolsPermissions(staffId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id\r\n + '&staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'MergeStaffAllSchoolsPermissions' + queryString);\r\n }\r\n\r\n isPhoneValid(phoneNumber: string): boolean {\r\n let blnIsValid = true;\r\n if (phoneNumber != null && phoneNumber != '') {\r\n const pNumber = this.setUnmask(phoneNumber);\r\n if (pNumber.trim().length < 10 || pNumber.trim().length > 10) {\r\n blnIsValid = false;\r\n }\r\n }\r\n return blnIsValid;\r\n }\r\n isValidEmailAdress(emailAddress: string): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&email=' + emailAddress;\r\n return this.http.get(System.apiURL.Management + 'IsValidEmail' + queryString);\r\n }\r\n\r\n deleteSpousePeopleById(Id: number): Observable {\r\n const queryString = '?Id=' + Id;\r\n return this.http.post(System.apiURL.Management + 'DeleteSpousePeople' + queryString, null);\r\n }\r\n\r\n saveUserPermissions(staffUserId: number, schoolId: number, permissionsList: PermissionsList[]): Observable {\r\n const queryString = '?staffUserId=' + staffUserId + '&schoolId=' + schoolId;\r\n return this.http.post(System.apiURL.Management + 'SaveUserPermissions' + queryString, permissionsList);\r\n }\r\n\r\n isStaffHasSchoolSpecificPermissions(staffId: number): Observable {\r\n const queryString = '?staffId=' + staffId;\r\n return this.http.get(System.apiURL.Management + 'IsStaffHasSchoolSpecificPermissions' + queryString);\r\n }\r\n\r\n copyUserPermissionsToAssignedSchools(staffId: number, copyFromSchoolId: number, copyToSchoolIdList: number[], copyPermissionGroups: boolean, copyRoles: boolean, copyIndividualPermissions: boolean, copySchools: boolean, action: boolean): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&staffId=' + staffId +\r\n '©FromSchoolId=' + copyFromSchoolId +\r\n '©PermissionGroups=' + copyPermissionGroups +\r\n '©Roles=' + copyRoles +\r\n '©IndividualPermissions=' + copyIndividualPermissions +\r\n '©Schools=' + copySchools +\r\n '&action=' + action;\r\n return this.http.post(System.apiURL.Management + 'CopyUserPermissionsToAssignedSchools' + queryString, copyToSchoolIdList);\r\n }\r\n\r\n isUserNameAlreadyExists(userName: string, peopleId: number): Observable {\r\n const queryString = '?userName=' + userName +\r\n '&peopleId=' + peopleId;\r\n return this.http.get(System.apiURL.Management + 'IsUserNameAlreadyExists' + queryString);\r\n }\r\n\r\n getStaffByRoles(yearId: number, roles: string): Observable {\r\n const queryString = '?yearId=' + yearId + '&roles=' + roles;\r\n return this.http.get(System.apiURL.Management + 'GetStaffByRoles' + queryString);\r\n }\r\n\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Attachment } from './models/attachment.model';\r\nimport { NgForm } from '@angular/forms';\r\n\r\nexport class System {\r\n\r\n // Properties\r\n static apiURL = {\r\n Student: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Student/',\r\n Counselor: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Counselor/',\r\n Admin: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Admin/',\r\n Shared: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Shared/',\r\n Classroom: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Classroom/',\r\n Reporting: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Reporting/',\r\n Management: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Management/',\r\n StateReporting: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/StateReporting/',\r\n Health: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/Health/',\r\n SpecialEd: location.protocol + '//' + location.host + System.getBaseLocation() + 'AppApi/TylerSIS/SpecialEd/'\r\n };\r\n static tokenURL = location.protocol + '//' + location.host + System.getBaseLocation() + 'token';\r\n static baseUrl = location.protocol + '//' + location.host + System.getBaseLocation();\r\n static junkDateString = '0001-01-01T00:00:00';\r\n static junkDate = new Date(System.junkDateString);\r\n static mailRegexp = /^\\s*(?:[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[A-Za-z0-9-]*[A-Za-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])\\s*$/;\r\n static phoneRegexp = /^(\\(\\d{3}\\) )?(\\d{3})-(\\d{4})$/;\r\n static phoneTextMask = ['(', /\\d/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\r\n static zipRegexp = /^\\d{5}(?:-\\d{4})?$/;\r\n static postalCodeRegexp = /[a-zA-Z]\\d[a-zA-Z]\\s\\d[a-zA-Z]\\d/;\r\n static twelveHourTimeRegexp = /^(0[1-9]|1[012]):[0-5]\\d\\s[apAP][mM]$/;\r\n // static twentyFourHourTimeRegexp = /^(0\\d|1[012]|2[0123]):[0-5]\\d(:[0-5]\\d)?$/;\r\n // ONE-12279\r\n static twentyFourHourTimeRegexp = /^([01]\\d|2[0-3]):?([0-5]\\d)$/;\r\n static twelveHourTimeMask = [/[01]/, /\\d/, ':', /[0-5]/, /\\d/, ' ', /[apAP]/, /[mM]/];\r\n static twentyFourHourTimeMask = [/[012]/, /\\d/, ':', /[0-5]/, /\\d/];\r\n static paginatorPageSizes = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 500, 1000];\r\n static paginatorDefaultSize = 100;\r\n\r\n private static iso8601RegEx = /(19|20|21)\\d\\d([-/.])(0[1-9]|1[012])\\2(0[1-9]|[12][0-9]|3[01])T(\\d\\d)([:/.])(\\d\\d)([:/.])(\\d\\d)/;\r\n\r\n static mimeTypes: string[] = [\r\n 'text/html',\r\n 'text/css',\r\n 'text/xml',\r\n 'image/gif',\r\n 'image/jpeg',\r\n 'image/jpg',\r\n 'image/webp',\r\n 'image/png',\r\n 'video/mp4',\r\n 'audio/x-m4a',\r\n 'audio/mp3',\r\n 'video/ogg',\r\n 'audio/ogg',\r\n 'video/webm',\r\n 'audio/webm',\r\n 'audio/wav',\r\n 'application/xhtml+xml',\r\n 'application/x-chrome-extension',\r\n 'multipart/related',\r\n 'application/pdf',\r\n 'image/bmp',\r\n 'image/x-icon',\r\n 'image/vnd.microsoft.icon',\r\n 'image/tiff',\r\n 'image/x-xbitmap',\r\n 'image/svg+xml',\r\n 'text/xml',\r\n 'text/plain'\r\n ];\r\n\r\n // Functions\r\n static isDateEqual(dateA: Date, dateB: Date) {\r\n return (!dateA && !dateB)\r\n || (\r\n dateA\r\n && dateB\r\n && dateA.toString() == dateB.toString()\r\n );\r\n }\r\n\r\n static removeIdFields(object: any) {\r\n // POST: removes the $id fields from an object\r\n if (object != null) {\r\n const keys = Object.keys(object);\r\n if (keys.includes('$id')) {\r\n delete object['$id'];\r\n }\r\n for (let i = 0; i < keys.length; i++) {\r\n if (typeof (object[keys[i]]) == 'object') {\r\n System.removeIdFields(object[keys[i]]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n static removeFromList(list: T[], value: T) {\r\n const index = list.indexOf(value);\r\n if (index >= 0) {\r\n list.splice(index, 1);\r\n }\r\n }\r\n\r\n static createUniqueName(currentName: string, allNames: string[], excludedNames: string[] = []) {\r\n let newName = currentName;\r\n while (allNames.find(name => name == newName) || excludedNames.find(name => name == newName)) {\r\n newName = System.createNextName(newName);\r\n }\r\n return newName;\r\n }\r\n\r\n static createNextName(currentName: string) {\r\n // POST: create a new name with (#) appended to it\r\n const numberRegexp = /\\(\\d+\\)/g;\r\n const matches = currentName.match(numberRegexp);\r\n let nextName = currentName;\r\n if (matches && matches.length > 0) {\r\n const lastMatch = matches[matches.length - 1];\r\n const indexOfNumber = nextName.lastIndexOf(lastMatch);\r\n const number = parseInt(\r\n lastMatch.substr(1, lastMatch.length - 1),\r\n 10\r\n );\r\n nextName = nextName.slice(0, indexOfNumber) +\r\n '(' + (number + 1) + ')' +\r\n nextName.slice(indexOfNumber + lastMatch.length);\r\n } else {\r\n nextName += ' (1)';\r\n }\r\n return nextName;\r\n }\r\n\r\n static overlappingTimes(startA: string, endA: string, startB: string, endB: string, twelveHour = false) {\r\n if (twelveHour) {\r\n startA = this.convert12HourTimeTo24HourTime(startA);\r\n endA = this.convert12HourTimeTo24HourTime(endA);\r\n startB = this.convert12HourTimeTo24HourTime(startB);\r\n endB = this.convert12HourTimeTo24HourTime(endB);\r\n }\r\n const convertToDate = (timeString: string): Date => {\r\n const hours = Number.parseInt(timeString.charAt(0) + timeString.charAt(1), 10);\r\n const minutes = Number.parseInt(timeString.charAt(3) + timeString.charAt(4), 10);\r\n const date = new Date();\r\n date.setHours(hours);\r\n date.setMinutes(minutes);\r\n return date;\r\n };\r\n const dateStartA = convertToDate(startA);\r\n const dateEndA = convertToDate(endA);\r\n const dateStartB = convertToDate(startB);\r\n const dateEndB = convertToDate(endB);\r\n return this.overlappingDates(dateStartA, dateEndA, dateStartB, dateEndB);\r\n }\r\n\r\n static overlappingDates(startA: Date, endA: Date, startB: Date, endB: Date) {\r\n // POST: returns true if the start and end of A overlap with the start and end of B\r\n return (\r\n (!(startA >= endB || endA <= startB))\r\n || (\r\n startB.toString() == startA.toString()\r\n && startA.toString() == endA.toString()\r\n && endA.toString() == endB.toString()\r\n )\r\n );\r\n // return (startA > startB && startA < endB) // B --- A ---- B ---- A\r\n // || (startB > startA && startB < endA) // A --- B ---- A ---- B\r\n // || (startA <= startB && endA >= endB) // A --- B ---- B ---- A or AB --- BA\r\n // || (startB <= startA && endB >= endA) // B --- A ---- A ---- B or BA --- AB\r\n // || (\r\n // startB.toString() == startA.toString()\r\n // && startA.toString() == endA.toString()\r\n // && endA.toString() == endB.toString()\r\n // ); // ABBA (we need this in scheduling to prevent unique key conflicts)\r\n }\r\n\r\n static validate12HourTime(timeString: string): boolean {\r\n return timeString.match(this.twelveHourTimeRegexp) != null;\r\n }\r\n\r\n static validate24HourTime(timeString: string): boolean {\r\n return timeString.match(this.twentyFourHourTimeRegexp) != null;\r\n }\r\n\r\n static convert24HourTimeTo12HourTime(timeString: string): string {\r\n if (this.validate24HourTime(timeString)) {\r\n let hours = Number.parseInt(timeString.charAt(0) + timeString.charAt(1), 10);\r\n const minutes = Number.parseInt(timeString.charAt(3) + timeString.charAt(4), 10);\r\n let meridian = '';\r\n if (hours >= 12) {\r\n meridian = 'PM';\r\n } else {\r\n meridian = 'AM';\r\n }\r\n if (hours == 0) {\r\n hours = 12;\r\n } else if (hours > 12) {\r\n hours -= 12;\r\n }\r\n let convertedTime = '';\r\n if (hours < 10) {\r\n convertedTime += '0' + hours.toString();\r\n } else {\r\n convertedTime += hours.toString();\r\n }\r\n convertedTime += ':';\r\n if (minutes < 10) {\r\n convertedTime += '0' + minutes.toString();\r\n } else {\r\n convertedTime += minutes.toString();\r\n }\r\n convertedTime += ' ' + meridian;\r\n return convertedTime;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n static convert12HourTimeTo24HourTime(timeString: string): string {\r\n if (this.validate12HourTime(timeString)) {\r\n let hours = Number.parseInt(timeString.charAt(0) + timeString.charAt(1), 10);\r\n const minutes = Number.parseInt(timeString.charAt(3) + timeString.charAt(4), 10);\r\n const meridian = timeString.charAt(6) + timeString.charAt(7);\r\n if (meridian.includes('P') && hours != 12) {\r\n hours += 12;\r\n }\r\n let convertedTime = '';\r\n if (hours < 10) {\r\n convertedTime += '0' + hours.toString();\r\n } else {\r\n convertedTime += hours.toString();\r\n }\r\n convertedTime += ':';\r\n if (minutes < 10) {\r\n convertedTime += '0' + minutes.toString();\r\n } else {\r\n convertedTime += minutes.toString();\r\n }\r\n convertedTime += ':00';\r\n return convertedTime;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n static forceUpdateValidity(form: NgForm) {\r\n // PRE: an ngForm\r\n // POST: updates the validity of each control\r\n setTimeout(() => {\r\n const controlKeys = Object.keys(form.controls);\r\n controlKeys.forEach(key => {\r\n form.controls[key].markAsTouched();\r\n try {\r\n form.controls[key].updateValueAndValidity();\r\n } catch (error) {\r\n console.log('Error while validating. Probably just a checkbox.');\r\n }\r\n });\r\n }, 10);\r\n }\r\n\r\n static roundDateUp(date: Date) {\r\n // PRE: a date to round up\r\n // POST: rounds the date up as close to the following day as possible\r\n if (date) {\r\n date.setHours(23);\r\n date.setMinutes(59);\r\n date.setSeconds(59);\r\n date.setMilliseconds(999);\r\n }\r\n }\r\n\r\n static roundDateDown(date: Date) {\r\n // PRE: a date to round down\r\n // POST: rounds the date down as close to the previous day as possible\r\n if (date) {\r\n date.setHours(0);\r\n date.setMinutes(0);\r\n date.setSeconds(0);\r\n date.setMilliseconds(0);\r\n }\r\n }\r\n\r\n static copyToClipboard(str: string) {\r\n const el = document.createElement('textarea') as HTMLTextAreaElement;\r\n el.value = str;\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n }\r\n\r\n static isNumeric(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n static convertDateToUTC(value: string): Date {\r\n // PRE: a string that represents a time\r\n // POST: converts that string to a date in UTC time zone\r\n if (value != null) {\r\n let date = new Date(value);\r\n if (typeof (value) != 'object' && value.indexOf('Z') < 0 && value.length > 10) {\r\n value = value + 'Z';\r\n date = new Date(Date.parse(value));\r\n }\r\n else if (typeof (value) != 'object' && value.length <= 10) {\r\n const objDate = value.split('/');\r\n date = new Date(Number(objDate[2]), (Number(objDate[0]) - 1), Number(objDate[1]));\r\n }\r\n date = new Date(date.getTime() + (60000 * date.getTimezoneOffset()));\r\n return date;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n static htmlToText(text: any) {\r\n if (!text) {\r\n return '';\r\n }\r\n if (typeof text != 'string') {\r\n text = text.toString();\r\n }\r\n text = text.replace(/ /g, ' ');\r\n text = text.replace(/&/g, '&');\r\n text = text.replace(/'/g, '\\'');\r\n text = text.replace(/"/g, '\"');\r\n text = text.replace(/"/g, '\"');\r\n text = text.replace(/</g, '<');\r\n text = text.replace(/</g, '<');\r\n text = text.replace(/>/g, '>');\r\n text = text.replace(/>/g, '>');\r\n text = text.replace(/=/g, '=');\r\n return text;\r\n }\r\n\r\n static textToHtml(html) {\r\n let text = '';\r\n if (html) {\r\n text = text + html;\r\n }\r\n text = text.replace(//g, '>');\r\n text = text.replace(/\"/g, '"');\r\n text = text.replace(/'/g, ''');\r\n text = text.replace(/&/g, '&');\r\n text = text.replace(/=/g, '=');\r\n return text;\r\n }\r\n\r\n static xmlToText(text: any) {\r\n if (!text) {\r\n return '';\r\n }\r\n if (typeof text != 'string') {\r\n text = text.toString();\r\n }\r\n text = text.replace(/&/g, '&');\r\n text = text.replace(/'/g, '\\'');\r\n text = text.replace(/"/g, '\"');\r\n text = text.replace(/</g, '<');\r\n text = text.replace(/>/g, '>');\r\n text = text.replace(/<>/g, 'Not=');\r\n return text;\r\n }\r\n\r\n static textToXML(xml) {\r\n let text = '';\r\n if (xml) {\r\n text = text + xml;\r\n }\r\n text = text.replace(//g, '>');\r\n text = text.replace(/\"/g, '"');\r\n text = text.replace(/'/g, ''');\r\n text = text.replace(/&/g, '&');\r\n text = text.replace(/Not=/g, '<>');\r\n return text;\r\n }\r\n\r\n static numberMask(rawValue: string) {\r\n // PRE: a string for an input\r\n // POST: returns a mask for only number values\r\n // NOTE: this is to be used with angular2-text-mask\r\n const mask = [];\r\n for (let i = 0; i < rawValue.length; i++) {\r\n mask.push('\\d');\r\n }\r\n return mask;\r\n }\r\n\r\n static currentTime(): string {\r\n // POST: returns a 12-hour string representation of the current time\r\n const currentDateTime = new Date();\r\n let currentHour = currentDateTime.getHours();\r\n const currentMinutes = currentDateTime.getMinutes();\r\n let am = true;\r\n if (currentHour >= 12) {\r\n am = false;\r\n currentHour -= 12;\r\n }\r\n return currentHour + ':' + (currentMinutes < 10 ? '0' + currentMinutes : currentMinutes) + ' ' + (am ? 'am' : 'pm');\r\n }\r\n\r\n static viewFileFromId(id: number, fileName: string, windowToUse?: Window) {\r\n // PRE: an ID and a file name. Optionally, a window to use.\r\n // POST: looks the attachment up and, if it is found, displays it\r\n const attachment = new Attachment();\r\n attachment.DocumentId = id;\r\n attachment.DocumentName = fileName;\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(attachment));\r\n let newWindow = null;\r\n if (windowToUse) {\r\n newWindow = windowToUse;\r\n } else {\r\n newWindow = window.open(System.baseUrl + 'studentattachment');\r\n }\r\n if (newWindow) {\r\n newWindow.focus();\r\n }\r\n }\r\n\r\n static viewFileFromBase(dataBase64: string, fileType: string, fileName: string, windowToUse?: Window) {\r\n // PRE: a base64, a file type, and a file name of the displayed file. Optionally, a window to use.\r\n // POST: views the file in a new window. If a window is provided, it will use that one.\r\n // If the file is too big or we can't show a new window, downloads the file instead\r\n if (this.checkEdge()) {\r\n this.saveFile(dataBase64, fileType, fileName);\r\n }\r\n else {\r\n try {\r\n const attachment = new Attachment();\r\n attachment.DocumentBase64 = dataBase64;\r\n attachment.DocumentMimeType = fileType;\r\n attachment.DocumentName = fileName;\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(attachment));\r\n let newWindow = null;\r\n if (windowToUse && System.mimeTypes.filter(type => type == fileType).length > 0) {\r\n newWindow = windowToUse;\r\n }\r\n else if (System.mimeTypes.filter(type => type == fileType).length > 0) {\r\n newWindow = window.open(System.baseUrl + 'studentattachment');\r\n }\r\n if (newWindow) {\r\n newWindow.focus();\r\n }\r\n else {\r\n this.saveFile(dataBase64, fileType, fileName);\r\n }\r\n } catch (e) {\r\n this.saveFile(dataBase64, fileType, fileName);\r\n }\r\n }\r\n }\r\n\r\n static checkEdge() {\r\n const ua = window.navigator.userAgent;\r\n const edge = ua.indexOf('Edge/');\r\n return edge > 1;\r\n }\r\n\r\n static saveFile(dataBase64, fileType, fileName) {\r\n // PRE: a base64, a file type, and a file name to set up a download\r\n // POST: downloads the file from the browser\r\n const byteCharacters = atob(dataBase64);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: fileType });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.style.display = 'none';\r\n document.body.appendChild(a);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n static saveTextToFile(filename: string, text: string) {\r\n const blob = new Blob([text], { type: 'text/plain' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.style.display = 'none';\r\n document.body.appendChild(a);\r\n a.href = url;\r\n a.download = filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n static getTableHeight(tableContainerRef: ElementRef): number {\r\n // PRE: a reference to the table's container\r\n // POST: returns the amount of space the table may take up\r\n // NOTE: this won't work if you have multiple dynamic elements one after the other; you'll need to adjust it\r\n const tableHeightString = window.getComputedStyle(tableContainerRef.nativeElement.offsetParent, null).getPropertyValue('padding-bottom');\r\n // tslint:disable-next-line:radix\r\n let tableHeight = -(Number.parseInt(tableHeightString.replace('px', '')));\r\n tableHeight -= tableContainerRef.nativeElement.offsetTop;\r\n if (tableContainerRef) {\r\n if (tableContainerRef.nativeElement.nextElementSibling) {\r\n tableHeight += tableContainerRef.nativeElement.nextElementSibling.offsetTop;\r\n } else {\r\n if (tableContainerRef.nativeElement.offsetParent.clientHeight < tableContainerRef.nativeElement.offsetParent.offsetHeight) {\r\n tableHeight += tableContainerRef.nativeElement.offsetParent.clientHeight;\r\n } else {\r\n tableHeight += tableContainerRef.nativeElement.offsetParent.offsetHeight;\r\n }\r\n }\r\n }\r\n return tableHeight;\r\n }\r\n\r\n static getTableWidth(tableContainerRef: ElementRef): number {\r\n // PRE: a reference to the table's container\r\n // POST: returns how much width the table may take up\r\n if (tableContainerRef) {\r\n return tableContainerRef.nativeElement.scrollWidth;\r\n }\r\n }\r\n\r\n static getElementHeight(element: ElementRef): number {\r\n // POST: returns an elements offsetHeight\r\n return element.nativeElement.offsetHeight;\r\n }\r\n\r\n static getBaseLocation() {\r\n if (location.host != 'localhost:4200') {\r\n const paths: string[] = location.pathname.split('/').splice(1, 1);\r\n const basePath: string = (paths && paths[0]) || '/';\r\n return '/' + basePath + '/';\r\n } else {\r\n return '/';\r\n }\r\n }\r\n\r\n static stripHTML = (str: string): string => {\r\n // POST: strips the HTML from a string\r\n return str ? str.replace(/(<(?:.|\\n)*?>| )/gm, '') : '';\r\n }\r\n\r\n static toCamelCase = (str: string): string => {\r\n // POST: returns the string in camelCase\r\n if (!str) {\r\n return '';\r\n }\r\n return str.toString().replace(/(?:\\b\\w|\\s)/g, function (letter: string, index: number) {\r\n if (letter.match(/\\s/)) {\r\n return '';\r\n } else {\r\n return index == 0 ? letter.toLowerCase() : letter.toUpperCase();\r\n }\r\n });\r\n }\r\n\r\n static randomString = (length = 5): string => {\r\n // POST: generates a random string of the specified length\r\n return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, length);\r\n }\r\n\r\n static fnConverDate(data: any) {\r\n // POST: convert date string to date object if date string matches the regular expression.\r\n if (typeof data !== 'object') { return data; }\r\n\r\n for (const key in data) {\r\n if (!data.hasOwnProperty(key)) { continue; }\r\n\r\n const value = data[key];\r\n const type = typeof value;\r\n let match;\r\n if (type == 'string' && (match = value.match(System.iso8601RegEx))) {\r\n data[key] = new Date(value);\r\n }\r\n else if (type === 'object') {\r\n this.fnConverDate(value);\r\n }\r\n }\r\n }\r\n\r\n static convert = (toConvert: Object, convertedTo: T): T => {\r\n // PRE: an object to convert and an object to convert to\r\n // \tThe object converted to must have its properties defined\r\n // \tSystem is due to a limitation on javascript (it doesn't remember types at runtime)\r\n // \tconvertedTo should also not be an important reference\r\n // POST: converts the first object into the second\r\n // NOTE: each object type you want suported has to be included in the for loop below.\r\n // \t\t currently supports: Date, Array\r\n if (toConvert == null) {\r\n if (convertedTo) {\r\n return convertedTo;\r\n } else {\r\n return null;\r\n }\r\n }\r\n const convertedToProps = Object.getOwnPropertyNames(convertedTo);\r\n const toConvertProps = Object.getOwnPropertyNames(toConvert);\r\n for (let i = 0; i < convertedToProps.length; i++) {\r\n\r\n // If the object to be converted has that value ...\r\n if (toConvertProps.includes(convertedToProps[i])) {\r\n\r\n // If that is an array, convert each element that's an object\r\n if (Array.isArray(toConvert[convertedToProps[i]])) {\r\n toConvert[convertedToProps[i]] = System.copyArray(toConvert[convertedToProps[i]]);\r\n }\r\n\r\n // If a date, convert to date\r\n let match;\r\n if ((System.getType(convertedTo[convertedToProps[i]]) == 'Date' &&\r\n System.getType(toConvert[convertedToProps[i]]) != 'Date') ||\r\n (System.getType(toConvert[convertedToProps[i]]) === 'String' && (match = toConvert[convertedToProps[i]].match(System.iso8601RegEx)))) {\r\n toConvert[convertedToProps[i]] = new Date(toConvert[convertedToProps[i]]);\r\n }\r\n\r\n // If not, just maintain the value\r\n }\r\n\r\n // If the object does not have the converted value, add the value to the converted object\r\n else {\r\n toConvert[convertedToProps[i]] = convertedTo[convertedToProps[i]];\r\n }\r\n }\r\n return Object.assign(convertedTo, toConvert);\r\n }\r\n\r\n static copyObject = (copiedObject: Object, conversionObject: T): T => {\r\n // PRE: the object to be copied and a blank object to copy to\r\n // \tThe conversion object must have its properties defined\r\n // \tSystem is due to a limitation on javascript (it doesn't remember types at runtime)\r\n // \tconversionObject should also not be an important reference\r\n // POST: copies the object to the blank object\r\n // NOTE: System doesn't perform any type conversions\r\n // each object type you want suported has to be included in the for loop below.\r\n // \t\t currently supports: Date\r\n return System.convert(JSON.parse(JSON.stringify(copiedObject)), conversionObject);\r\n }\r\n\r\n static copyArray = (copiedArray) => {\r\n // POST: copies the array into a new array\r\n const newArray = [];\r\n for (let i = 0; i < copiedArray.length; i++) {\r\n\r\n // If it's an array, copy that\r\n if (Array.isArray(copiedArray[i])) {\r\n newArray.push(System.copyArray(copiedArray[i]));\r\n }\r\n\r\n // If it's an object, convert it\r\n else if (typeof (copiedArray[i]) == 'object' && copiedArray[i] != null) {\r\n newArray.push(System.convert(copiedArray[i], Object.assign({}, copiedArray[i])));\r\n }\r\n\r\n // If it's not an object, just copy it\r\n else {\r\n newArray.push(copiedArray[i]);\r\n }\r\n }\r\n return newArray;\r\n }\r\n\r\n static insertAt = (arr: T[], item: T, index: number): T[] => {\r\n // PRE: an array, an item to insert, and an index\r\n // POST: inserts the item at that position in the array\r\n let newArr = arr.splice(0, index);\r\n newArr.push(item);\r\n newArr = newArr.concat(arr);\r\n return newArr;\r\n }\r\n\r\n static isEqual = (a: Object, b: Object): boolean => {\r\n // PRE: two objects to compare\r\n // POST: determines if the two objects have equal values\r\n if (a == null || b == null) {\r\n return a == b;\r\n }\r\n const aProps = Object.getOwnPropertyNames(a);\r\n const bProps = Object.getOwnPropertyNames(b);\r\n if (aProps.length != bProps.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < aProps.length; i++) {\r\n const propName = aProps[i];\r\n if (typeof a[propName] == 'object' && a[propName] != null) {\r\n if (typeof b[propName] != 'object' || b[propName] == null) {\r\n return false;\r\n } else if (!System.isEqual(a[propName], b[propName])) {\r\n return false;\r\n }\r\n } else if (a[propName] != b[propName]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static arrayEqual = (a: Array, b: Array): boolean => {\r\n // PRE: two arrays to compare\r\n // POST: determines if the two arrays are equal\r\n // NOTE: this is not a deep equality\r\n if (a == null || b == null) {\r\n return a == b;\r\n }\r\n if (a.length != b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i] != b[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static getType = (a: object): string => {\r\n // POST: returns the name of the object\r\n if (a == null) {\r\n return '';\r\n } else {\r\n return a.constructor.name;\r\n }\r\n }\r\n\r\n static isValid(val: any): boolean {\r\n if (val != null && val !== undefined) {\r\n if (val.length != null) {\r\n if (val.length > 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static isValidDate(d: Date | string): boolean {\r\n if (d instanceof Date) {\r\n return !isNaN(d.getTime());\r\n }\r\n else {\r\n const dt = new Date(d);\r\n return !isNaN(dt.getTime());\r\n }\r\n }\r\n\r\n static isEven(rowId) {\r\n return (rowId % 2) === 0;\r\n }\r\n\r\n static generateUUID(): string {\r\n let d = new Date().getTime(); // Timestamp\r\n let d2 = (performance && performance.now && (performance.now() * 1000)) || 0; // Time in microseconds since page-load or 0 if unsupported\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = Math.random() * 16; // random number between 0 and 16\r\n if (d > 0) {// Use timestamp until depleted\r\n // tslint:disable-next-line:no-bitwise\r\n r = (d + r) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n } else {// Use microseconds since page-load if supported\r\n // tslint:disable-next-line:no-bitwise\r\n r = (d2 + r) % 16 | 0;\r\n d2 = Math.floor(d2 / 16);\r\n }\r\n // tslint:disable-next-line:no-bitwise\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n }\r\n}\r\n","\r\n
\r\n
\r\n Add Attachment\r\n Edit Attachment\r\n
\r\n
\r\n {{attachment.AttachmentDescription}}\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n\r\n \r\n
0\">\r\n \r\n \r\n \r\n {{documentType.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Allow parent/student to view file on portal\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n","import { LoginService } from '../../shared-modules/login/login.service';\r\nimport { ErrorList } from '../controls/error-prompt/error-list.model';\r\nimport { Attachment } from '../models/attachment.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { Component, Inject, OnInit, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\r\nimport { Lookup } from '../lookup/lookup.model';\r\nimport { NgForm } from '@angular/forms';\r\nimport { System } from '../System';\r\n\r\n/**\r\n * This dialog can be used whenever you need to upload an attachment.\r\n *\r\n * MAT_DIALOG_DATA:\r\n * attachment: an attachment that the file will be attached to\r\n * newAttachment: a boolean indicating whether this is adding or editing\r\n *\r\n * After saving, the attachment will have a file base 64 string in MyFileBase64String\r\n */\r\n@Component({\r\n selector: 'add-attachment',\r\n templateUrl: './add-attachment-dialog.component.html',\r\n styleUrls: [\r\n './add-attachment-dialog.component.css'\r\n ]\r\n})\r\nexport class AddAttachmentDialogComponent implements OnInit {\r\n\r\n // Static Properties\r\n static DefaultAllowedFileTypes: string[] = [\r\n 'pdf',\r\n 'jpg',\r\n 'jpeg',\r\n 'png',\r\n 'gif',\r\n 'txt',\r\n 'doc',\r\n 'docx',\r\n 'xls',\r\n 'xlsx',\r\n 'mp3',\r\n 'mp4',\r\n 'm4a',\r\n 'm4v'\r\n ];\r\n\r\n // Properties\r\n attachment: Attachment;\r\n errors: ErrorList[] = [];\r\n originalAttachment: Attachment;\r\n documentTypeId: string;\r\n documentTypes: Lookup[];\r\n V10: boolean;\r\n saved = false;\r\n newAttachment = false;\r\n showPortalVisibility = false;\r\n forGradebook: boolean;\r\n type = '';\r\n @Output() saveEvent = new EventEmitter();\r\n requireDescription: boolean;\r\n requireDocumentType: boolean;\r\n @ViewChild('form', { read: NgForm, static: true }) formRef: NgForm;\r\n @ViewChild('descriptionField', { read: ElementRef }) descriptionField: ElementRef;\r\n @ViewChild('documentTypeField', { read: ElementRef }) documentTypeField: ElementRef;\r\n allowedFileTypes: string[] = AddAttachmentDialogComponent.DefaultAllowedFileTypes;\r\n\r\n // Class Functions\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n private loginService: LoginService\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected dialog data with attachment and\r\n // POST: initializes the data\r\n this.type = this.data.type;\r\n this.attachment = this.data.attachment;\r\n this.newAttachment = this.data.newAttachment;\r\n this.originalAttachment = new Attachment();\r\n Object.assign(this.originalAttachment, this.attachment);\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.documentTypes = this.data.documentTypes;\r\n this.forGradebook = this.data.forGradebook;\r\n this.requireDescription = this.data.requireDescription;\r\n this.requireDocumentType = this.data.requireDocumentType;\r\n if (this.data.allowedFileTypes) {\r\n this.allowedFileTypes = this.data.allowedFileTypes;\r\n }\r\n if (this.newAttachment == false) {\r\n const filExtension = this.attachment.FileName.split('.');\r\n this.attachment.FileExtension = filExtension[1];\r\n // Needed because DocumentTypeId is a number, while LookUp id is a string\r\n this.documentTypeId = this.attachment.DocumentTypeId.toString();\r\n }\r\n }\r\n\r\n save() {\r\n // PRE: the save button is clicked\r\n // POST: if valid, closes the dialog with saved as true\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.saved = true;\r\n // Needed because DocumentTypeId is a number, while LookUp id is a string\r\n this.attachment.DocumentTypeId = parseInt(this.documentTypeId, 10);\r\n this.saveEvent.emit(this.attachment);\r\n this.dialogBox.close(true);\r\n } else {\r\n System.forceUpdateValidity(this.formRef);\r\n }\r\n }\r\n\r\n close() {\r\n // PRE: the close button is clicked\r\n // POST: resets the attachment and closes the dialog\r\n Object.assign(this.attachment, this.originalAttachment);\r\n this.dialogBox.close(false);\r\n }\r\n\r\n // Methods\r\n validate() {\r\n // POST: sets the errors or changes the data to conform with preconditions\r\n this.errors = [];\r\n\r\n if (this.attachment.FileName == '') {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'File required.'\r\n });\r\n }\r\n if (this.attachment.FileName.split('.').slice(0, -1).join('.').length > 100) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'The file name you are attaching is greater than 100 characters. Please rename the file you are attaching to 100 characters or less.'\r\n });\r\n }\r\n if (this.requireDescription && !this.V10 && !this.attachment.Description) {\r\n this.errors.push({\r\n fieldRef: this.descriptionField,\r\n fieldName: 'Description',\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n else if (this.requireDescription && this.V10 && !this.attachment.FileDescription) {\r\n this.errors.push({\r\n fieldRef: this.descriptionField,\r\n fieldName: 'File Description',\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n\r\n else if (this.type == 'ImportedDocuments') {\r\n if (!this.attachment.Description) {\r\n this.errors.push({\r\n fieldRef: this.descriptionField,\r\n fieldName: 'File Description',\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n }\r\n if (this.requireDocumentType && this.V10 && !this.documentTypeId) {\r\n this.errors.push({\r\n fieldRef: this.documentTypeField,\r\n fieldName: 'File Type',\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n\r\n // Validating file if no other errors are present\r\n if (this.errors.length == 0) {\r\n const fileExtensionRegExp = /\\.[a-z0-9]*$/;\r\n if (!this.allowedFileTypes.includes(this.attachment.FileExtension.toLowerCase())) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'Only .txt, .doc(x), .xls(x), .pdf, .jpg, .png, .gif, .mp3, m4a, .mp4, and m4v files can be uploaded.'\r\n });\r\n } else if (fileExtensionRegExp.test(this.attachment.FileName)) {\r\n const fileExt = this.attachment.FileName.split('.');\r\n if (fileExt[fileExt.length - 1] != this.attachment.FileExtension) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: '',\r\n errorMsg: 'The file name\\'s extension does not match the uploaded file.'\r\n });\r\n }\r\n } else {\r\n this.attachment.FileName += '.' + this.attachment.FileExtension;\r\n }\r\n }\r\n }\r\n}","import { OnDestroy, OnInit, Directive } from '@angular/core';\r\nimport { DataQuery } from '../../classroom360/data-query/data-query.model';\r\nimport { DataQueryInformation } from '../../classroom360/data-query/data-query-information';\r\nimport { DataQueryPreferences } from '../user-preferences/data-query-preferences.model';\r\nimport { DataQueryField } from '../../classroom360/data-query/data-query-field.model';\r\nimport { DataQueryService } from '../../classroom360/data-query/data-query.service';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { GeneralPreferences } from '../user-preferences/general-preferences.model';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { DataQueryFieldFilter } from '../../classroom360/data-query/data-query-field-filter.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { DataQueryResult } from '../../classroom360/data-query/data-query-result.model';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { LookupService } from '../lookup/lookup.service';\r\nimport { YearService } from '../year/year.service';\r\nimport { InsertFieldDialogComponent } from '../../classroom360/data-query/data-query-settings-for-export/insert-field-dialog/insert-field-dialog.component';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport { ErrorList } from '../controls/error-prompt/error-list.model';\r\n\r\n@Directive()\r\n// tslint:disable-next-line:directive-class-suffix\r\nexport class AdvancedFilterComponent implements OnInit, OnDestroy {\r\n\r\n // Data Query Properties\r\n private _currentQuery = new DataQuery();\r\n private _information = new DataQueryInformation();\r\n private _preferences = new DataQueryPreferences();\r\n\r\n // Initialization Properties\r\n title: string;\r\n recentFilters: DataQuery[] = [];\r\n fieldsWithoutFilters: string[] = [];\r\n\r\n // Other Properties\r\n subscriptions: Subscription[] = [];\r\n generalPreferences: GeneralPreferences;\r\n allFilters: DataQueryFieldFilter[] = [];\r\n originalQuery = new DataQuery();\r\n\r\n advancedStudentSearchErrors: ErrorList[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n public dataQueryService: DataQueryService,\r\n public userPreferencesService: UserPreferencesService,\r\n public loginService: LoginService,\r\n public dialogBox: MatDialogRef,\r\n public lookupService: LookupService,\r\n public yearService: YearService,\r\n public dialog: MatDialog\r\n ) { }\r\n\r\n get currentQuery() {\r\n return this._currentQuery;\r\n }\r\n\r\n set currentQuery(value: DataQuery) {\r\n this.dataQueryService.checkDeactivationAndChange(value);\r\n }\r\n\r\n get information() {\r\n return this._information;\r\n }\r\n\r\n get preferences() {\r\n return this._preferences;\r\n }\r\n\r\n get filterFields(): DataQueryField[] {\r\n return this.currentQuery.filterFields;\r\n }\r\n\r\n set filterFields(value: DataQueryField[]) {\r\n this.currentQuery.filterFields.splice(0, this.currentQuery.filterFields.length);\r\n Object.assign(this.currentQuery.filterFields, value);\r\n }\r\n\r\n get filterTranslation() {\r\n return this.currentQuery ? this.currentQuery.filterTranslation : '';\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.generalPreferences = this.userPreferencesService.generalPreferences;\r\n this.initialize();\r\n\r\n // Utility function to load query\r\n const loadQuery = () => {\r\n\r\n // Only perform opreation if there is the proper data\r\n if (this.preferences && this.information) {\r\n\r\n // If our query is not set...\r\n if (this.currentQuery.filterFields.length == 0) {\r\n\r\n // Load default query\r\n if (this.dataQueryService.courseSearchQuery) {\r\n this.dataQueryService.loadQuery(this.dataQueryService.courseSearchQuery);\r\n } else {\r\n\r\n // Adding default fields\r\n this.dataQueryService.checkDefaultFilterFields(\r\n null,\r\n (field: DataQueryField) => {\r\n const addField = field.duplicate();\r\n this.addField(addField, !this.fieldsWithoutFilters.includes(addField.FieldName));\r\n this.setFilterValue(addField, true);\r\n }\r\n );\r\n }\r\n }\r\n\r\n // If our query is set...\r\n else {\r\n\r\n // Check default fields\r\n this.dataQueryService.checkDefaultFilterFields(\r\n this.currentQuery.filterFields,\r\n (field: DataQueryField) => {\r\n this.setFilterValue(field, false);\r\n }\r\n );\r\n }\r\n\r\n // Setting the filters for the table\r\n this.setAllFilters();\r\n\r\n // Updating the SQL translation\r\n this.dataQueryService.updateFilter();\r\n this.dataQueryService.pageSize = this.dataQueryService.initialPageSize;\r\n }\r\n };\r\n\r\n // Performing subscriptions\r\n this.subscriptions.push(\r\n\r\n // Syncing properties\r\n this.dataQueryService.observableCurrentQueryStream$.subscribe(query => {\r\n this._currentQuery = query;\r\n this.originalQuery = _.cloneDeep(query);\r\n loadQuery();\r\n this.setAllFilters();\r\n this._currentQuery.CourseSearch = this.dataQueryService.isCourseSearch;\r\n this._currentQuery.StudentSearch = this.dataQueryService.isStudentSearch;\r\n this._currentQuery.StaffSearch = this.dataQueryService.isStaffSearch;\r\n }),\r\n this.dataQueryService.observableInformationStream$.subscribe(information => {\r\n this._information = information;\r\n loadQuery();\r\n }),\r\n this.dataQueryService.observablePreferencesStream$.subscribe(preferences => {\r\n this._preferences = preferences;\r\n loadQuery();\r\n }),\r\n this.userPreferencesService.observablegeneralPreferencesStream$.subscribe(generalPreferences => {\r\n this.generalPreferences = generalPreferences;\r\n loadQuery();\r\n }),\r\n\r\n // Obtaining data\r\n this.dataQueryService.getInformation().subscribe(),\r\n this.dataQueryService.getPreferences().subscribe()\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n // Unsubscribing to all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n addFilter() {\r\n // PRE: the add filter button is clicked\r\n // POST: opens a dialog to select a field. Adds the selected field as a filter\r\n\r\n // We need to ensure we have all our fields properly set as disabled or enabled\r\n this.dataQueryService.disabledFields = {};\r\n this.information.fields.forEach(field => {\r\n this.dataQueryService.checkDisabledField(field, true);\r\n });\r\n\r\n // Opening the dialog with those disabled fields\r\n const insertFieldDialog = this.dialog.open(InsertFieldDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n information: this.information,\r\n isCourseSearch: this.dataQueryService.isCourseSearch,\r\n isStudentSearch: this.dataQueryService.isStudentSearch,\r\n isStaffSearch: this.dataQueryService.isStaffSearch,\r\n disabledFields: this.dataQueryService.disabledFields\r\n }\r\n });\r\n this.subscriptions.push(\r\n insertFieldDialog.afterClosed().subscribe((field: DataQueryField) => {\r\n if (field) {\r\n field = field.duplicate();\r\n this.currentQuery.queryChanged = true;\r\n this.filterFields.push(field);\r\n this.obtainFilterOptions(field, filterOptions => {\r\n this.setFilterField(filterOptions, field);\r\n this.setAllFilters();\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n apply() {\r\n this.advancedStudentSearchErrors = [];\r\n // Code for invalid Enrollment Date\r\n for (let i = 0; i < this.currentQuery.filterFields.length; i++) {\r\n if (this.currentQuery.filterFields[i].Alias == 'Enrollment Date') {\r\n for (let j = 0; j < this.currentQuery.filterFields[i].Filters.length; j++) {\r\n if (this.currentQuery.filterFields[i].Filters[j].Value && this.currentQuery.filterFields[i].Filters[j].Value != null) {\r\n // alert(this.currentQuery.filterFields[i].Filters[j].Value);\r\n const dateValue = this.currentQuery.filterFields[i].Filters[j].Value.toString();\r\n if (!moment(dateValue, ['MM/DD/YYYY']).isValid()\r\n || moment(dateValue, ['MM/DD/YYYY']).isBefore(moment('01/01/1900', ['MM/DD/YYYY']))\r\n || (moment('01/01/2070', ['MM/DD/YYYY'])).isBefore(moment(dateValue, ['MM/DD/YYYY']))) {\r\n this.advancedStudentSearchErrors.push({\r\n fieldName: 'Enrollment Date',\r\n fieldRef: null,\r\n errorMsg: 'Invalid'\r\n });\r\n return 0;\r\n }\r\n }\r\n\r\n if (this.currentQuery.filterFields[i].Filters[j].Value2 && this.currentQuery.filterFields[i].Filters[j].Value2 != null) {\r\n // alert(this.currentQuery.filterFields[i].Filters[j].Value);\r\n const dateValue = this.currentQuery.filterFields[i].Filters[j].Value2.toString();\r\n if (!moment(dateValue, ['MM/DD/YYYY']).isValid()\r\n || moment(dateValue, ['MM/DD/YYYY']).isBefore(moment('01/01/1900', ['MM/DD/YYYY']))\r\n || (moment('01/01/2070', ['MM/DD/YYYY'])).isBefore(moment(dateValue, ['MM/DD/YYYY']))) {\r\n this.advancedStudentSearchErrors.push({\r\n fieldName: 'Enrollment Date',\r\n fieldRef: null,\r\n errorMsg: 'Invalid'\r\n });\r\n return 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Code for invalid Birth Date\r\n for (let i = 0; i < this.currentQuery.filterFields.length; i++) {\r\n if (this.currentQuery.filterFields[i].Alias == 'Birth Date') {\r\n for (let j = 0; j < this.currentQuery.filterFields[i].Filters.length; j++) {\r\n if (this.currentQuery.filterFields[i].Filters[j].Value && this.currentQuery.filterFields[i].Filters[j].Value != null) {\r\n // alert(this.currentQuery.filterFields[i].Filters[j].Value);\r\n const dateValue = this.currentQuery.filterFields[i].Filters[j].Value.toString();\r\n if (!moment(dateValue, ['MM/DD/YYYY']).isValid()\r\n || moment(dateValue, ['MM/DD/YYYY']).isBefore(moment('01/01/1900', ['MM/DD/YYYY']))\r\n || (moment('01/01/2070', ['MM/DD/YYYY'])).isBefore(moment(dateValue, ['MM/DD/YYYY']))) {\r\n this.advancedStudentSearchErrors.push({\r\n fieldName: 'Birth Date',\r\n fieldRef: null,\r\n errorMsg: 'Invalid'\r\n });\r\n return 0;\r\n }\r\n }\r\n\r\n if (this.currentQuery.filterFields[i].Filters[j].Value2 && this.currentQuery.filterFields[i].Filters[j].Value2 != null) {\r\n // alert(this.currentQuery.filterFields[i].Filters[j].Value);\r\n const dateValue = this.currentQuery.filterFields[i].Filters[j].Value2.toString();\r\n if (!moment(dateValue, ['MM/DD/YYYY']).isValid()\r\n || moment(dateValue, ['MM/DD/YYYY']).isBefore(moment('01/01/1900', ['MM/DD/YYYY']))\r\n || (moment('01/01/2070', ['MM/DD/YYYY'])).isBefore(moment(dateValue, ['MM/DD/YYYY']))) {\r\n this.advancedStudentSearchErrors.push({\r\n fieldName: 'Birth Date',\r\n fieldRef: null,\r\n errorMsg: 'Invalid'\r\n });\r\n return 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // PRE: The apply button is clicked\r\n // POST: Shows the warning dialog for saving and/or continuing if the query is changed.\r\n // After, gets the results and closes with them\r\n let schoolIds = '';\r\n this.yearService.schools.forEach(school => {\r\n if (school.SchoolName == this.dataQueryService.studentSearchFilters.ddlSchool || this.dataQueryService.studentSearchFilters.ddlSchool == '') {\r\n schoolIds = schoolIds + (schoolIds == '' ? school.Id.toString() : ',' + school.Id.toString());\r\n }\r\n });\r\n let hasErrors = false;\r\n for (let i = 0; i < this.currentQuery.filterFields.length; i++) {\r\n for (let j = 0; j < this.currentQuery.filterFields[i].Filters.length; j++) {\r\n if (this.currentQuery.filterFields[i].Filters[j].showFilterError1 || this.currentQuery.filterFields[i].Filters[j].showFilterError2) {\r\n hasErrors = true;\r\n break;\r\n }\r\n }\r\n if (hasErrors) {\r\n break;\r\n }\r\n }\r\n if (!hasErrors) {\r\n this.checkCurrentQueryWarning(() => {\r\n this.dataQueryService.getResults(\r\n false,\r\n (results: DataQueryResult) => {\r\n console.log(results);\r\n this.dialogBox.close(results);\r\n },\r\n (dataQueryFormError: any) => {\r\n if (dataQueryFormError.blankAlias) {\r\n // TODO: Error circle?\r\n }\r\n if (dataQueryFormError.duplicateAlias) {\r\n // TODO: Error circle?\r\n }\r\n },\r\n true,\r\n true,\r\n schoolIds\r\n );\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: checks if we need to save and closes the dialog\r\n this.checkCurrentQueryWarning(() => {\r\n Object.assign(this.currentQuery, this.originalQuery);\r\n this.dialogBox.close();\r\n });\r\n }\r\n\r\n // Methods\r\n addField(field: DataQueryField, withFilter = true) {\r\n // PRE: a field to add to the query\r\n // POST: adds the field to the query appropriately\r\n field.IsDefaultFilterField = true;\r\n const addedField = field.duplicate();\r\n addedField.SortDirection = 'None';\r\n if (!this.currentQuery.reportFields.find(reportField => reportField.ID == addedField.ID)) {\r\n this.currentQuery.reportFields.push(addedField);\r\n }\r\n if (!this.currentQuery.sortFields.find(sortField => sortField.ID == addedField.ID)) {\r\n this.currentQuery.sortFields.push(addedField);\r\n }\r\n addedField.CategoryName = addedField.category.CategoryName;\r\n addedField.ObjectName = addedField.object.ObjectName;\r\n if (withFilter) {\r\n this.addDefaultFilterField(field);\r\n }\r\n }\r\n\r\n addDefaultFilterField(field: DataQueryField) {\r\n // POST: adds the default field filter for the field, including its enumeration values\r\n this.filterFields.push(field);\r\n this.obtainFilterOptions(field, filterOptions => {\r\n this.setFilterField(filterOptions, field.ID);\r\n this.setFilterValue(field, true);\r\n this.setAllFilters();\r\n });\r\n }\r\n\r\n checkCurrentQueryWarning(callback: Function) {\r\n // PRE: a callback function we're checking for\r\n // POST: shows the warning if needed and calls the callback if the user continues\r\n if (this.currentQuery.queryChanged) {\r\n const warning = this.dataQueryService.showWarning();\r\n if (warning instanceof Observable) {\r\n warning.subscribe(result => {\r\n if (result) {\r\n callback();\r\n }\r\n });\r\n } else {\r\n if (warning) {\r\n callback();\r\n }\r\n }\r\n } else {\r\n callback();\r\n }\r\n }\r\n\r\n obtainFilterOptions(field: DataQueryField, _callback: Function) {\r\n let filterOptions = [];\r\n if (field.FilterType == 3) {\r\n if (this.loginService.LoginSettings.V10 || field.FieldName != 'Pri Enrl Site Name') {\r\n this.subscriptions.push(\r\n this.lookupService.getDataQueryFieldLookupReadByFieldId(field.ID, field.CategoryID).subscribe(\r\n results => {\r\n filterOptions = results;\r\n },\r\n () => { },\r\n () => {\r\n _callback(filterOptions);\r\n }\r\n )\r\n );\r\n } else {\r\n this.subscriptions.push(\r\n this.yearService.getStudentSearchSchoolByYearId(this.yearService.defaultYear.Id).subscribe(\r\n results => {\r\n for (let i = 0; i < results.length; i++) {\r\n filterOptions.push({\r\n Id: results[i].SchoolId, Code: '',\r\n CodeDescription: results[i].SchoolName,\r\n Sequence: i + 2\r\n });\r\n }\r\n const allSchools = {\r\n Id: 0,\r\n Code: '',\r\n CodeDescription: 'All',\r\n Sequence: 1\r\n };\r\n filterOptions.unshift(allSchools);\t// Does this work???\r\n },\r\n () => { },\r\n () => {\r\n _callback(filterOptions);\r\n }\r\n )\r\n );\r\n }\r\n } else {\r\n _callback(filterOptions);\r\n }\r\n }\r\n\r\n setFilterField(filterOptions, fieldId) {\r\n // PRE: the options for the filter and the filter's field ID\r\n // POST: sets the filter for the field\r\n let filter = new DataQueryFieldFilter();\r\n let field: DataQueryField;\r\n if (typeof fieldId === 'number') {\r\n field = this.filterFields.find(f => f.ID == fieldId);\r\n } else if (fieldId.ID) {\r\n field = this.filterFields.find(f => f.ID == fieldId.ID);\r\n }\r\n\r\n // Creating new filter if one doesn't exist\r\n if (field.Filters.length == 0) {\r\n\r\n // Setting intermediary values\r\n filter.FilterID = DataQueryService.filterFieldId;\r\n filter.FilterOptions = filterOptions;\r\n this.setFilterPropertiesSwitch(field, filter);\r\n\r\n // Setting the filter fields\r\n this.dataQueryService.setShowOnReportParameters();\r\n filter.field = field;\r\n DataQueryService.filterFieldId = DataQueryService.filterFieldId + 1;\r\n }\r\n\r\n // Adding options if a filter does exist\r\n else if (filterOptions.length > 0) {\r\n filter = field.Filters[0];\r\n filter.FilterOptions = filterOptions;\r\n }\r\n\r\n // Added the filter if it isn't there\r\n if (!this.allFilters.includes(filter)) {\r\n this.allFilters.push(filter);\r\n }\r\n this.dataQueryService.setShowOnReportParameters();\r\n }\r\n\r\n setAllFilters() {\r\n // POST: sets the \"All Filters\" array, which controls the table data\r\n const allFilters = [];\r\n this.filterFields.forEach(field => {\r\n field.Filters.forEach(filter => {\r\n allFilters.push(filter);\r\n\r\n // Ensuring the filter is associated\r\n filter.field = field;\r\n\r\n // Setting the operator to the first viable one if one doesn't exist\r\n if (!filter.Operator) {\r\n const operators = filter.getFilterOperators();\r\n filter.Operator = operators[0];\r\n }\r\n });\r\n });\r\n this.allFilters = allFilters;\r\n\r\n // Updating the SQL translation\r\n this.dataQueryService.updateFilter();\r\n this.dataQueryService.pageSize = this.dataQueryService.initialPageSize;\r\n }\r\n\r\n setFilterValue(field: DataQueryField, updateUsing: boolean) {\r\n // POST: sets the value of each filter\r\n if (field.Filters.length > 0) {\r\n const filter = field.Filters[0];\r\n if (field.IsDefaultFilterField) {\r\n if (this.loginService.LoginSettings.V10 == false) {\r\n switch (field.DisplayName) {\r\n case 'Student ID':\r\n if (filter.UseFilterForStudentSearch) {\r\n this.dataQueryService.studentSearchFilters.StudentNumber = filter.Value;\r\n }\r\n break;\r\n case 'Name - First':\r\n if (filter.UseFilterForStudentSearch) {\r\n this.dataQueryService.studentSearchFilters.FirstName = filter.Value;\r\n }\r\n break;\r\n case 'Name - Last':\r\n if (filter.UseFilterForStudentSearch) {\r\n this.dataQueryService.studentSearchFilters.LastName = filter.Value;\r\n }\r\n break;\r\n case 'Grade':\r\n if (filter.UseFilterForStudentSearch) {\r\n this.dataQueryService.studentSearchFilters.Grade = filter.Value;\r\n }\r\n break;\r\n case 'Enrollment Date':\r\n if (filter.UseFilterForStudentSearch) {\r\n this.dataQueryService.studentSearchFilters.EnrollmentDate = filter.Value;\r\n }\r\n break;\r\n case 'Birth Date':\r\n if (filter.UseFilterForStudentSearch) {\r\n this.dataQueryService.studentSearchFilters.DOB = filter.Value;\r\n }\r\n break;\r\n }\r\n }\r\n this.setValueSwitch(field, filter, updateUsing);\r\n }\r\n }\r\n }\r\n\r\n // Override Functions\r\n initialize() {\r\n // NOTE: THIS SHOULD BE OVERRIDDEN\r\n }\r\n\r\n setValueSwitch(field: DataQueryField, filter: DataQueryFieldFilter, updateUsing: boolean) {\r\n // NOTE: THIS SHOULD BE OVERRIDDEN\r\n }\r\n\r\n setFilterPropertiesSwitch(field: DataQueryField, filter: DataQueryFieldFilter) {\r\n // NOTE: THIS SHOULD BE OVERRIDDEN\r\n }\r\n}\r\n","import { MatTableDataSource } from '@angular/material/table';\r\nimport { FilterModel } from '../controls/filter/filter.model';\r\n\r\nexport class TylerMatTableDataSource extends MatTableDataSource {\r\n\r\n // Properties\r\n filterNumber = 0;\r\n filterTestValue = '';\r\n // Used when filter value needs to be separate from sorting value\r\n useFilterDataAccessor = false;\r\n filters: FilterModel[] = [];\r\n private _cachedData: any[] = [];\r\n\r\n expandedElements: number[] = [];\r\n\r\n // Class Functions\r\n constructor(initialData?: any[]) {\r\n super(initialData);\r\n this.filterPredicate = this.genericFilter;\r\n }\r\n\r\n // Sorting Functions\r\n sortingDataAccessor: (data: any, sortHeaderId: string) => string | number = (data: any, sortHeaderId: string): string | number => {\r\n // created defaultSortingAccessor so components can override sortingAccessor and still fall back on the default if needed\r\n return this.defaultSortingAccessor(data, sortHeaderId);\r\n }\r\n\r\n defaultSortingAccessor: (data: any, sortHeaderId: string) => string | number = (data: any, sortHeaderId: string): string | number => {\r\n // PRE: a sort or filter is called on a table\r\n // POST: returns the data for a cell for sorting\r\n // NOTE: this is overriding the default behavior which type coerces into a number\r\n // NOTE: this does not work for negative numbers\r\n const value: any = data[sortHeaderId];\r\n if (value != undefined) {\r\n if (value instanceof Date) {\r\n return value.getTime();\r\n } else if (typeof (value) == 'string') {\r\n return (value != null ? value.trim().toLowerCase() : '');\r\n } else if (typeof (value) == 'number') {\r\n return (value != null ? value : -99999);\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n // Filter Functions\r\n filterDataAccessor: (data: any, sortHeaderId: string) => string | number = (data: any, sortHeaderId: string): string | number => {\r\n // PRE: a filter is called on a table\r\n // POST: returns the data for a cell for filtering\r\n // NOTE: this is overriding the default behavior which type coerces into a number, also overrides the sortingDataAccessor\r\n // NOTE: this does not work for negative numbers\r\n const value: any = data[sortHeaderId];\r\n if (value != undefined) {\r\n if (value instanceof Date) {\r\n return value.getTime();\r\n } else if (typeof (value) == 'string') {\r\n return value.trim();\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n // Detail Row Functions\r\n scrollTo(row: any) {\r\n // PRE: a row to scroll to\r\n // POST: scrolls to the row\r\n // NOTE: this will only work if you are using the scrollToRow directive\r\n if (row != undefined) {\r\n if (row.scrollTo == undefined || row.scrollTo == false) {\r\n row.scrollTo = true;\r\n }\r\n }\r\n }\r\n\r\n scrollToLast() {\r\n // POST: scrolls to the last row\r\n this.data[this.data.length - 1].scrollTo = true;\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n if (row != undefined) {\r\n if (row.detailRow == undefined || row.detailRow == false) {\r\n row.detailRow = true;\r\n }\r\n else {\r\n row.detailRow = false;\r\n }\r\n }\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n if (row.detailRow == undefined) {\r\n row.detailRow = false;\r\n }\r\n\r\n return row.detailRow;\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.data.forEach(element => {\r\n element.detailRow = expand;\r\n });\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n if (event.keyCode == 13) {\r\n this.toggleExpanded(row);\r\n }\r\n }\r\n\r\n cacheExpanded() {\r\n // PRE: the data is set\r\n // POST: sets the cached data to the current data\r\n this._cachedData = this.data;\r\n }\r\n\r\n assertCachedExpanded(identifier?: string) {\r\n // PRE: the cached data and data is set\r\n // POST: expands data based on the cached data's identifier\r\n\t\tif (this._cachedData && this.data) {\r\n\t\t\tif (!identifier) {\r\n\t\t\t\tfor (let i = 0; i < this.data.length; i++) {\r\n\t\t\t\t\tif (this._cachedData.length > i && this._cachedData[i].detailRow) {\r\n\t\t\t\t\t\tthis.toggleExpanded(this.data[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.data.forEach(datum => {\r\n\t\t\t\t\tfor (let i = 0; i < this._cachedData.length; i++) {\r\n\t\t\t\t\t\tconst cachedDatum = this._cachedData[i];\r\n\t\t\t\t\t\tif (cachedDatum[identifier] == datum[identifier] && this.checkExpanded(cachedDatum)) {\r\n\t\t\t\t\t\t\tdatum.detailRow = true;\r\n\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\t\t}\r\n\t\t}\r\n }\r\n\r\n setVisible(row: any, state: boolean) {\r\n // PRE: the row is defined\r\n // POST: toggles whether the row is visible\r\n // NOTE: this differs from expanded b/c this is meant to work with *ngIf\r\n if (row != undefined) {\r\n row.detailRowVisible = state;\r\n }\r\n }\r\n\r\n checkVisible(row: any): boolean {\r\n // PRE: the row is defined\r\n // POST: checks whether the row is visible\r\n // NOTE: this differs from expanded b/c this is meant to work with *ngIf\r\n if (row.detailRowVisible == undefined) {\r\n row.detailRowVisible = false;\r\n }\r\n\r\n return row.detailRowVisible;\r\n }\r\n\r\n // Filter Functions\r\n genericFilter(Data: any, Filter: string): boolean {\r\n\r\n let valid = true;\r\n for (let i = 0; i < this.filters.length; i++) {\r\n\r\n let value: string | Date;\r\n if (this.filters[i].columnIndex) {\r\n value = Data[this.filters[i].columnIndex];\r\n }\r\n else if (Data[this.filters[i].column] instanceof Date) {\r\n value = Data[this.filters[i].column];\r\n } else {\r\n if (this.useFilterDataAccessor) {\r\n value = String(this.filterDataAccessor(Data, this.filters[i].column));\r\n }\r\n else {\r\n value = String(this.sortingDataAccessor(Data, this.filters[i].column));\r\n }\r\n }\r\n if (value != undefined &&\r\n (\r\n (this.filters[i].value != undefined && this.filters[i].dataType != 'date') ||\r\n ((this.filters[i].value != undefined || this.filters[i].dateValue != undefined) && this.filters[i].dataType == 'date')\r\n )) {\r\n switch (this.filters[i].dataType) {\r\n case 'string':\r\n if (!this.stringFilter(String(value), i)) {\r\n valid = false;\r\n }\r\n break;\r\n case 'number':\r\n if (!this.numberFilter(String(value), i)) {\r\n valid = false;\r\n }\r\n break;\r\n case 'date':\r\n if (!this.dateFilter(value, i)) {\r\n valid = false;\r\n }\r\n break;\r\n case 'enumeration':\r\n if (!this.enumerationFilter(String(value), i)) {\r\n valid = false;\r\n }\r\n break;\r\n case 'nullable boolean':\r\n case 'boolean':\r\n if (!this.booleanFilter(String(value), i)) {\r\n valid = false;\r\n }\r\n break;\r\n }\r\n if (!valid) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n enumerationFilter(dataValue: string, i: number): boolean {\r\n let valid = true;\r\n if (this.filters[i].value) {\r\n switch (this.filters[i].operator) {\r\n case '0': // Equal\r\n if (dataValue.trim().toLocaleLowerCase() != this.filters[i].value.trim().toLocaleLowerCase()) {\r\n valid = false;\r\n }\r\n break;\r\n case '1': // Not Equal\r\n if (dataValue.toLocaleLowerCase() == this.filters[i].value.trim().toLocaleLowerCase()) {\r\n valid = false;\r\n }\r\n break;\r\n }\r\n }\r\n return valid;\r\n }\r\n\r\n stringFilter(dataValue: string, i: number): boolean {\r\n\r\n let valid = true;\r\n\r\n switch (this.filters[i].operator) {\r\n case '0':\r\n if (!dataValue.toString().trim().toLocaleLowerCase().includes(this.filters[i].value.trim().toLocaleLowerCase())) {\r\n valid = false;\r\n }\r\n break;\r\n case '1':\r\n if (!dataValue.toString().trim().toLocaleLowerCase().startsWith(this.filters[i].value.trim().toLocaleLowerCase())) {\r\n valid = false;\r\n }\r\n break;\r\n case '2':\r\n if (!dataValue.toString().trim().toLocaleLowerCase().endsWith(this.filters[i].value.trim().toLocaleLowerCase())) {\r\n valid = false;\r\n }\r\n break;\r\n case '3':\r\n if (this.filters[i].value != '' && !(dataValue.toString().trim().toLocaleLowerCase() == (this.filters[i].value.trim().toLocaleLowerCase()))) {\r\n valid = false;\r\n }\r\n break;\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n numberFilter(dataValue: string, i: number) {\r\n\r\n let valid = true;\r\n\r\n const testVar = Number.parseFloat(this.filters[i].value);\r\n const numberValue = Number.parseFloat(dataValue);\r\n\r\n if (!isNaN(testVar) && testVar != null && testVar != undefined) {\r\n switch (this.filters[i].operator) {\r\n case '0':\r\n if (!(numberValue == (Number.parseFloat(this.filters[i].value)))) {\r\n valid = false;\r\n }\r\n break;\r\n case '1':\r\n if (!(numberValue != (Number.parseFloat(this.filters[i].value)))) {\r\n valid = false;\r\n }\r\n break;\r\n case '2':\r\n if (!(numberValue < (Number.parseFloat(this.filters[i].value)))) {\r\n valid = false;\r\n }\r\n break;\r\n case '3':\r\n if (!(numberValue <= (Number.parseFloat(this.filters[i].value)))) {\r\n valid = false;\r\n }\r\n break;\r\n case '4':\r\n if (!(numberValue > (Number.parseFloat(this.filters[i].value)))) {\r\n valid = false;\r\n }\r\n break;\r\n case '5':\r\n if (!(numberValue >= (Number.parseFloat(this.filters[i].value)))) {\r\n valid = false;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n dateFilter(dataValue: string | Date, i: number) {\r\n // console.log('dateFilter');\r\n\r\n let valid = true;\r\n\r\n // strip time from dateTime values\r\n const dataDate: Date = new Date(dataValue);\r\n dataDate.setHours(0);\r\n dataDate.setMinutes(0);\r\n dataDate.setSeconds(0);\r\n let filterDate: Date = new Date(this.filters[i].dateValue);\r\n if (!filterDate) {\r\n filterDate = new Date(this.filters[i].value);\r\n }\r\n filterDate.setHours(0);\r\n filterDate.setMinutes(0);\r\n filterDate.setSeconds(0);\r\n\r\n if (filterDate.toString() != 'Invalid Date') {\r\n switch (this.filters[i].operator) {\r\n case '0':\r\n if (!(dataDate.toLocaleDateString() == filterDate.toLocaleDateString())) {\r\n valid = false;\r\n }\r\n break;\r\n case '1':\r\n if (!(dataDate.toLocaleDateString() != filterDate.toLocaleDateString())) {\r\n valid = false;\r\n }\r\n break;\r\n case '2':\r\n if (!(dataDate < filterDate)) {\r\n valid = false;\r\n }\r\n break;\r\n case '3':\r\n if (!(dataDate <= filterDate)) {\r\n valid = false;\r\n }\r\n break;\r\n case '4':\r\n if (!(dataDate > filterDate)) {\r\n valid = false;\r\n }\r\n break;\r\n case '5':\r\n if (!(dataDate >= filterDate)) {\r\n valid = false;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n booleanFilter(dataValue: string, i: number) {\r\n switch (this.filters[i].operator) {\r\n case '0':\r\n return true;\r\n case '1':\r\n case '2':\r\n case '3':\r\n default:\r\n return this.filters[i].value == dataValue;\r\n }\r\n }\r\n\r\n isFiltered(): boolean {\r\n // POST: returns true if the data is being panelFiltered by the data source\r\n const isFiltering = (filter: FilterModel): boolean => {\r\n if (filter.dataType.includes('boolean')) {\r\n return filter.operator != '0';\r\n } else {\r\n return (filter.value != '' && filter.value != undefined && filter.value != null) ||\r\n (filter.dateValue != undefined && filter.dateValue != null && filter.dateValue.toString() != 'Invalid Date');\r\n }\r\n };\r\n for (let i = 0; i < this.filters.length; i++) {\r\n if (isFiltering(this.filters[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n addRemoveFilter(newFilter: FilterModel, data?: TylerMatTableDataSource) {\r\n // POST: adds a filter or removes it if the value is ''\r\n\r\n let filterFound = false;\r\n\r\n if (!data) {\r\n data = this;\r\n }\r\n for (let i = 0; i < data.filters.length; i++) {\r\n if (data.filters[i].column == newFilter.column) {\r\n if (newFilter.value == '') {\r\n data.filters.splice(i, 1);\r\n filterFound = true;\r\n break;\r\n }\r\n else {\r\n data.filters[i].operator = newFilter.operator;\r\n data.filters[i].value = newFilter.value;\r\n filterFound = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!filterFound) {\r\n data.filters.push(newFilter);\r\n }\r\n\r\n data.filter = 'trigger';\r\n }\r\n\r\n addFilter(newFilter: FilterModel, data?: TylerMatTableDataSource) {\r\n // POST: adds a filter, regardless of the value\r\n\r\n let filterFound = false;\r\n\r\n if (!data) {\r\n data = this;\r\n }\r\n for (let i = 0; i < data.filters.length; i++) {\r\n if (data.filters[i].column == newFilter.column) {\r\n data.filters[i].operator = newFilter.operator;\r\n data.filters[i].value = newFilter.value;\r\n filterFound = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!filterFound) {\r\n data.filters.push(newFilter);\r\n }\r\n\r\n data.filter = 'trigger';\r\n }\r\n\r\n removeFilter(filter: FilterModel, data?: TylerMatTableDataSource) {\r\n // POST: removes the filter, regardless of the data\r\n if (!data) {\r\n data = this;\r\n }\r\n for (let i = 0; i < data.filters.length; i++) {\r\n if (data.filters[i].column == filter.column) {\r\n data.filters.splice(i, 1);\r\n break;\r\n }\r\n }\r\n data.filter = 'trigger';\r\n }\r\n\r\n removeAllFilters(data?: TylerMatTableDataSource) {\r\n // POST: removes all the filters\r\n if (!data) {\r\n data = this;\r\n }\r\n this.filters = [];\r\n data.filter = 'trigger';\r\n }\r\n\r\n getFilter(column: string, data?: TylerMatTableDataSource) {\r\n // POST: gets a filter for the column\r\n if (!data) {\r\n data = this;\r\n }\r\n for (let i = 0; i < data.filters.length; i++) {\r\n if (data.filters[i].column == column) {\r\n return data.filters[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n hasFilters() {\r\n return this.filters.map(o => o.value).filter(value => !!value).length > 0;\r\n }\r\n}\r\n\r\n","import { trigger, state, style, animate, transition } from '@angular/animations';\r\n\r\nconst expandedStyle = style({\r\n paddingTop: '10px',\r\n height: 'auto',\r\n paddingBottom: '25px',\r\n});\r\nconst collapsedStyle = style({\r\n paddingTop: '0px',\r\n height: '0px',\r\n minHeight: '0',\r\n paddingBottom: '0px',\r\n overflow: 'hidden',\r\n borderWidth: '0px'\r\n});\r\n\r\nexport const detailExpand = [\r\n trigger('detailExpand', [\r\n state('collapsed', collapsedStyle),\r\n state('expanded', expandedStyle),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n transition('void => expanded', [\r\n collapsedStyle,\r\n animate(\r\n '225ms cubic-bezier(0.4, 0.0, 0.2, 1)',\r\n expandedStyle\r\n )\r\n ]),\r\n transition('void => collapsed', [\r\n animate(\r\n '225ms cubic-bezier(0.4, 0.0, 0.2, 1)',\r\n collapsedStyle\r\n )\r\n ])\r\n ])\r\n];","import * as i0 from '@angular/core';\nimport { Directive, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, ContentChildren, NgModule } from '@angular/core';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1 from '@angular/cdk/platform';\n\n// Boilerplate for applying mixins to MatToolbar.\n/** @docs-private */\nconst _MatToolbarBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n});\nclass MatToolbarRow {\n}\nMatToolbarRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarRow, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatToolbarRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatToolbarRow, selector: \"mat-toolbar-row\", host: { classAttribute: \"mat-toolbar-row\" }, exportAs: [\"matToolbarRow\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-toolbar-row',\n exportAs: 'matToolbarRow',\n host: { 'class': 'mat-toolbar-row' },\n }]\n }] });\nclass MatToolbar extends _MatToolbarBase {\n constructor(elementRef, _platform, document) {\n super(elementRef);\n this._platform = _platform;\n // TODO: make the document a required param when doing breaking changes.\n this._document = document;\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._checkToolbarMixedModes();\n this._toolbarRows.changes.subscribe(() => this._checkToolbarMixedModes());\n }\n }\n /**\n * Throws an exception when developers are attempting to combine the different toolbar row modes.\n */\n _checkToolbarMixedModes() {\n if (this._toolbarRows.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n // Check if there are any other DOM nodes that can display content but aren't inside of\n // a element.\n const isCombinedUsage = Array.from(this._elementRef.nativeElement.childNodes)\n .filter(node => !(node.classList && node.classList.contains('mat-toolbar-row')))\n .filter(node => node.nodeType !== (this._document ? this._document.COMMENT_NODE : 8))\n .some(node => !!(node.textContent && node.textContent.trim()));\n if (isCombinedUsage) {\n throwToolbarMixedModesError();\n }\n }\n }\n}\nMatToolbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbar, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });\nMatToolbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatToolbar, selector: \"mat-toolbar\", inputs: { color: \"color\" }, host: { properties: { \"class.mat-toolbar-multiple-rows\": \"_toolbarRows.length > 0\", \"class.mat-toolbar-single-row\": \"_toolbarRows.length === 0\" }, classAttribute: \"mat-toolbar\" }, queries: [{ propertyName: \"_toolbarRows\", predicate: MatToolbarRow, descendants: true }], exportAs: [\"matToolbar\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\", styles: [\".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbar, decorators: [{\n type: Component,\n args: [{ selector: 'mat-toolbar', exportAs: 'matToolbar', inputs: ['color'], host: {\n 'class': 'mat-toolbar',\n '[class.mat-toolbar-multiple-rows]': '_toolbarRows.length > 0',\n '[class.mat-toolbar-single-row]': '_toolbarRows.length === 0',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"\\n\\n\", styles: [\".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { _toolbarRows: [{\n type: ContentChildren,\n args: [MatToolbarRow, { descendants: true }]\n }] } });\n/**\n * Throws an exception when attempting to combine the different toolbar row modes.\n * @docs-private\n */\nfunction throwToolbarMixedModesError() {\n throw Error('MatToolbar: Attempting to combine different toolbar modes. ' +\n 'Either specify multiple `` elements explicitly or just place content ' +\n 'inside of a `` for a single row.');\n}\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 */\nclass MatToolbarModule {\n}\nMatToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, declarations: [MatToolbar, MatToolbarRow], imports: [MatCommonModule], exports: [MatToolbar, MatToolbarRow, MatCommonModule] });\nMatToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, imports: [[MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatToolbar, MatToolbarRow, MatCommonModule],\n declarations: [MatToolbar, MatToolbarRow],\n }]\n }] });\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 */\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 */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatToolbar, MatToolbarModule, MatToolbarRow, throwToolbarMixedModesError };\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {CdkTableModule} from '@angular/cdk/table';\r\nimport {DragDropModule} from '@angular/cdk/drag-drop';\r\nimport {ScrollingModule} from '@angular/cdk/scrolling';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n MatAutocompleteModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatNativeDateModule,\r\n MatInputModule,\r\n MatRadioModule,\r\n MatSelectModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatMenuModule,\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n MatCardModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatListModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatButtonToggleModule,\r\n MatChipsModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatProgressBarModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatTooltipModule,\r\n MatPaginatorModule,\r\n MatSortModule,\r\n MatTableModule,\r\n CdkTableModule,\r\n ScrollingModule,\r\n DragDropModule\r\n ],\r\n declarations: []\r\n})\r\n\r\nexport class MaterialModule {\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-attendance-check-in-out-legend',\r\n templateUrl: './attendance-check-in-out-legend.component.html'\r\n})\r\nexport class AttendanceCheckInOutLegendComponent implements OnInit {\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","
\r\n Legend\r\n
\r\n\r\n\r\n
\r\n
\r\n
C\r\n
\r\n   \r\n Comment exists for this period or day\r\n
\r\n
\r\n\r\n
\r\n
\r\n
A\r\n
\r\n   \r\n Attendance was marked by an administrator\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Lookup } from '../lookup/lookup.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../System';\r\nimport { DisciplineReferral } from '../../classroom360/discipline-referral/discipline-referral.model';\r\nimport { YearService } from '../year/year.service';\r\nimport { UserService } from '../user/user.service';\r\nimport { BehaviorEvent } from '../../counselor360/behavior/models/behavior-event.model';\r\nimport { BehaviorIncident } from '../../counselor360/behavior/models/behavior-incident.model';\r\nimport { BehaviorStudent } from '../../counselor360/behavior/models/behavior-student.model';\r\nimport * as moment from 'moment';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { DisciplineReferralStudent } from '../../classroom360/discipline-referral/discipline-referral-student.model';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class BehaviorSharedService {\r\n\r\n locations: Lookup[] = [];\r\n incidentCodes: Lookup[] = [];\r\n contextCodes: Lookup[] = [];\r\n reportedByCodes: Lookup[] = [];\r\n behaviorEvent: BehaviorEvent = new BehaviorEvent();\r\n eventCreatedFromReferralPage: boolean = false;\r\n public observableEventCreatedFromReferral = new Subject();\r\n observableEventCreatedFromReferralStream$ = this.observableEventCreatedFromReferral.asObservable();\r\n referralCreated: boolean = false;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private router: Router\r\n ) {\r\n }\r\n\r\n public getDisciplineReferralPlacesLookup(schoolId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetDisciplineReferralPlacesLookup?schoolId=${schoolId}`);\r\n }\r\n\r\n public getDisciplineReferralLookups(lookupType: string, yearId: number, schoolId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `getDisciplineReferralLookups?type=${lookupType}&yearId=${yearId}&schoolId=${schoolId}`);\r\n }\r\n\r\n public disciplineReferralIncidentLookup(yearId: number, profileArea: string): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetDisciplineReferralIncidentLookup?yearId=${yearId}&schoolId=${this.yearService.defaultYear.SchoolID}&profileArea=${profileArea}`);\r\n }\r\n\r\n getClassroomDisciplineReferrals(showAllStaffEntries: boolean, hideTeams: boolean = false, referralStatusId: number = 0): Observable {\r\n // PRE: a boolean to show all staff entries or only the current ones, boolean to hide teams referrals when teams is active for the site\r\n // POST: obtains a list of discipline referrals\r\n return this.http.get(System.apiURL.Counselor + `GetClassroomDisciplineReferrals?yearId=${this.yearService.defaultYear.Id}&schoolId=${this.yearService.defaultYear.SchoolID}&AYIdentifier=${this.yearService.defaultYear.AYIdentifier}&showAllStaffEntries=${showAllStaffEntries}&hideTeams=${hideTeams}&statusId=${referralStatusId}`);\r\n }\r\n\r\n saveClassroomDisciplineReferral(referrals: DisciplineReferral[]): Observable {\r\n // PRE: a list of discipline referrals\r\n // POST: saves those referrals to the server\r\n // We need to create copies of the referrals to ensure that the PBIS fields are strings\r\n const copiedReferrals = [];\r\n referrals.forEach(referral => {\r\n const copiedReferral = new DisciplineReferral();\r\n Object.assign(copiedReferral, referral);\r\n if (copiedReferral.PBISSelectedOthersInvolved instanceof Array) {\r\n copiedReferral.PBISSelectedOthersInvolved = copiedReferral.PBISSelectedOthersInvolved.join();\r\n }\r\n if (copiedReferral.PBISSelectedPriorInterventions instanceof Array) {\r\n copiedReferral.PBISSelectedPriorInterventions = copiedReferral.PBISSelectedPriorInterventions.join();\r\n }\r\n copiedReferrals.push(copiedReferral);\r\n });\r\n // Sending request with copied referrals\r\n return this.http.post(System.apiURL.Counselor + `SaveClassroomDisciplineReferral?yearId=${this.yearService.defaultYear.Id}&schoolId=${this.yearService.defaultYear.SchoolID}`, copiedReferrals);\r\n }\r\n\r\n public saveBehaviorEvent(e: BehaviorEvent): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'SaveBehaviorEvent', e);\r\n }\r\n\r\n public saveBehaviorIncident(incident: BehaviorIncident): Observable {\r\n return this.http.post(System.apiURL.Counselor + 'SaveBehaviorIncident', incident);\r\n }\r\n\r\n getStudentsFromReferral(behaviorEvent: BehaviorEvent, referral: DisciplineReferral) {\r\n if (referral && referral.Students.length > 0) {\r\n behaviorEvent.Incidents = [];\r\n behaviorEvent.Actions = [];\r\n referral.Students.forEach(student => {\r\n const behaviorStudent = new BehaviorStudent();\r\n if (!student.UnknownStudent && !student.NonStudent) {\r\n behaviorStudent.StudentId = student.Id;\r\n }\r\n behaviorStudent.MemId = student.MemId;\r\n behaviorStudent.FirstName = student.FirstName;\r\n behaviorStudent.MiddleName = student.MiddleName;\r\n behaviorStudent.LastName = student.LastName;\r\n behaviorStudent.Nickname = student.NickName;\r\n behaviorStudent.StudentNumber = student.StudentNumber;\r\n behaviorStudent.Involvement = this.loginService.LoginSettings.V10 ? DisciplineReferralStudent.InvolvementTypes[student.InvolvementType] : DisciplineReferralStudent.V9InvolvementTypes[2];\r\n behaviorStudent.Alerts = student.StudentAlerts;\r\n behaviorStudent.IsUnknownStudent = student.UnknownStudent;\r\n behaviorStudent.PhoneNumber = student.CellPhone;\r\n behaviorStudent.Gender = student.Gender;\r\n behaviorStudent.DOB = moment(student.DateOfBirth).toDate();\r\n behaviorStudent.IncidentCount = 1;\r\n behaviorEvent.Students.push(behaviorStudent);\r\n\r\n if (this.loginService.LoginSettings.V10) {\r\n const behaviorIncident = new BehaviorIncident();\r\n behaviorIncident.EventId = behaviorEvent.Id;\r\n if (!student.UnknownStudent && !student.NonStudent) {\r\n behaviorIncident.StudentId = student.Id;\r\n }\r\n behaviorIncident.InvolvementType = DisciplineReferralStudent.InvolvementTypes[student.InvolvementType];\r\n behaviorIncident.IsNonStudent = student.NonStudent;\r\n behaviorIncident.IsUnknownStudent = student.UnknownStudent;\r\n behaviorIncident.Comments = student.IncidentComments;\r\n if (behaviorStudent.Involvement == 'Offender') {\r\n const code = this.incidentCodes.find(c => c.Id == student.DisciplineCode.toString());\r\n if (code != null) {\r\n behaviorIncident.IncidentCode = code.Code;\r\n if (!behaviorEvent.DefaultIncidentCodeId) {\r\n behaviorEvent.DefaultIncidentCodeId = code.Code;\r\n }\r\n }\r\n }\r\n behaviorIncident.AddedOn = new Date();\r\n behaviorIncident.AddedBy = this.userService.currentUser.MemberId;\r\n if (student.InvolvingType == '1') {\r\n const selectedCode = this.incidentCodes.find(c => c.Code == behaviorIncident.IncidentCode);\r\n if (selectedCode != null) {\r\n behaviorIncident.DCID = parseInt(selectedCode.Id, 10);\r\n }\r\n }\r\n this.saveBehaviorIncident(behaviorIncident).subscribe(incident => {\r\n Object.assign(behaviorIncident, incident);\r\n behaviorStudent.Id = incident.Id;\r\n behaviorEvent.Incidents.push(behaviorIncident);\r\n });\r\n } else {\r\n if (behaviorStudent.IsUnknownStudent == false && behaviorStudent.StudentId > 0) {\r\n const behaviorIncident = new BehaviorIncident();\r\n behaviorIncident.StudentId = behaviorStudent.StudentId;\r\n behaviorIncident.EventId = behaviorEvent.Id;\r\n behaviorIncident.MemId = student.MemId;\r\n behaviorIncident.IncidentCode = behaviorEvent.EventName;\r\n behaviorIncident.DCID = +behaviorEvent.EventNumber;\r\n behaviorIncident.InvolvementType = DisciplineReferralStudent.V9InvolvementTypes[2];\r\n behaviorIncident.IncidentsFunctionalCodeId = +behaviorEvent.IncidentsFunctionalCodeId;\r\n behaviorIncident.Date = new Date(behaviorEvent.Date);\r\n behaviorIncident.IncidentTime = behaviorEvent.IncidentTime.trim();\r\n behaviorIncident.SchoolId = behaviorEvent.SchoolId;\r\n behaviorIncident.AYIdentifier = behaviorEvent.AYIdentifier.toString();\r\n behaviorIncident.Location = behaviorEvent.RoomNumber;\r\n behaviorIncident.ReportedBy = behaviorEvent.ReportedBy;\r\n behaviorIncident.EnteredBy = behaviorEvent.EnteredBy;\r\n behaviorIncident.AddedByStaff = this.userService.currentUser.LastName + ' ' + this.userService.currentUser.FirstName;\r\n behaviorIncident.IncidentRefferalId = referral.Id;\r\n if (behaviorStudent.Involvement == 'Offender') {\r\n const code = this.incidentCodes.find(c => c.Id == student.DisciplineCode.toString());\r\n if (code != null) {\r\n behaviorIncident.IncidentCode = code.Code;\r\n if (!behaviorEvent.DefaultIncidentCodeId) {\r\n behaviorEvent.DefaultIncidentCodeId = code.Code;\r\n }\r\n }\r\n }\r\n behaviorIncident.Comments = behaviorEvent.StaffComment;\r\n this.saveBehaviorIncident(behaviorIncident).subscribe(incident => {\r\n Object.assign(behaviorIncident, incident);\r\n behaviorStudent.Id = incident.StudentId;\r\n behaviorStudent.StudentId = incident.StudentId;\r\n behaviorStudent.UserHasPermissionForStudent = true;\r\n behaviorEvent.Incidents.push(behaviorIncident);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n referral = null;\r\n }\r\n\r\n setInitialValues(behaviorEvent: BehaviorEvent) {\r\n if (behaviorEvent.Context == null || behaviorEvent.Context == '') {\r\n const onCampusContext = this.contextCodes.filter(function (o) {\r\n return o.CodeDescription.indexOf('On Campus') > -1;\r\n });\r\n if (onCampusContext.length > 0) {\r\n behaviorEvent.Context = onCampusContext[0].Id;\r\n } else if (this.contextCodes.length > 0) {\r\n behaviorEvent.Context = this.contextCodes[0].Id;\r\n }\r\n }\r\n if (behaviorEvent.DefaultIncidentCodeId == null || behaviorEvent.DefaultIncidentCodeId == '') {\r\n if (this.incidentCodes.length > 0) {\r\n behaviorEvent.DefaultIncidentCodeId = this.incidentCodes[0].Code;\r\n }\r\n }\r\n }\r\n\r\n acceptReferrals(selectedReferrals: DisciplineReferral[], openEvent: boolean = false) {\r\n selectedReferrals.forEach(referral => {\r\n const behaviorEvent: BehaviorEvent = new BehaviorEvent();\r\n behaviorEvent.SchoolId = this.yearService.defaultYear.SchoolID;\r\n this.setInitialValues(behaviorEvent);\r\n\r\n // Performing conversions\r\n referral = System.convert(referral, new DisciplineReferral());\r\n if (referral.Students) {\r\n for (let j = 0; j < referral.Students.length; j++) {\r\n referral.Students[j] = System.convert(referral.Students[j], new DisciplineReferralStudent());\r\n }\r\n }\r\n\r\n behaviorEvent.ReferralId = referral.Id;\r\n\r\n behaviorEvent.Date = moment(referral.Date.toString()).toDate();\r\n behaviorEvent.Date.setUTCSeconds(referral.Date.getSeconds());\r\n behaviorEvent.Date.setUTCHours(referral.Date.getHours());\r\n behaviorEvent.Date.setUTCMinutes(referral.Date.getMinutes());\r\n\r\n behaviorEvent.Location = referral.Location;\r\n behaviorEvent.StaffComment = referral.EventComment;\r\n if (this.loginService.LoginSettings.V10) {\r\n const reportedBy = Number(referral.ReportedBy);\r\n if (!isNaN(reportedBy)) {\r\n behaviorEvent.ReportedBy = reportedBy;\r\n }\r\n } else {\r\n this.loginService.getStaffIdByUserId().subscribe(staffId => {\r\n behaviorEvent.EnteredBy = staffId;\r\n });\r\n }\r\n behaviorEvent.Context = referral.Context;\r\n behaviorEvent.Description = referral.Description;\r\n behaviorEvent.AddedOn = new Date();\r\n behaviorEvent.AddedBy = this.userService.currentUser.MemberId;\r\n behaviorEvent.EventName = 'Referral - ' + referral.StaffName + ' - ' + referral.Location;\r\n behaviorEvent.AYIdentifier = this.yearService.defaultYear.AYIdentifier;\r\n if (!this.loginService.LoginSettings.V10) {\r\n if (referral.IncidentCodeId == null || referral.IncidentCodeId == '' || referral.IncidentCodeId == '0') {\r\n if (this.incidentCodes.length > 0) {\r\n behaviorEvent.DefaultIncidentCodeId = this.incidentCodes.find(i => i.Id != '0').Id;\r\n behaviorEvent.EventNumber = behaviorEvent.DefaultIncidentCodeId;\r\n }\r\n } else {\r\n behaviorEvent.EventNumber = referral.IncidentCodeId;\r\n }\r\n\r\n behaviorEvent.IncidentTime = referral.Time.trim();\r\n behaviorEvent.AYIdentifier = this.yearService.defaultYear.Id.toString();\r\n behaviorEvent.AddedBy = this.userService.currentUser.Id;\r\n behaviorEvent.LocationId = referral.LocationId;\r\n behaviorEvent.StaffComment = referral.Description;\r\n }\r\n this.saveBehaviorEvent(behaviorEvent).subscribe(result => {\r\n if (result) {\r\n Object.assign(behaviorEvent, result);\r\n if (behaviorEvent.Id > 0 && referral) {\r\n referral.EventId = behaviorEvent.Id;\r\n this.getStudentsFromReferral(behaviorEvent, referral);\r\n const referralAsList: DisciplineReferral[] = [referral];\r\n this.saveClassroomDisciplineReferral(referralAsList).subscribe(message => {\r\n this.behaviorEvent = behaviorEvent;\r\n if (openEvent) {\r\n this.eventCreatedFromReferralPage = true;\r\n this.router.navigateByUrl('/counselor360/behavior/behaviorEvents');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n // V9 only\r\n acceptReferralsinOpenEventModel(selectedReferrals: DisciplineReferral[], openEvent: boolean = false): Observable {\r\n selectedReferrals.forEach(referral => {\r\n const behaviorEvent: BehaviorEvent = new BehaviorEvent();\r\n behaviorEvent.SchoolId = this.yearService.defaultYear.SchoolID;\r\n this.setInitialValues(behaviorEvent);\r\n\r\n // Performing conversions\r\n referral = System.convert(referral, new DisciplineReferral());\r\n if (referral.Students) {\r\n for (let j = 0; j < referral.Students.length; j++) {\r\n referral.Students[j] = System.convert(referral.Students[j], new DisciplineReferralStudent());\r\n }\r\n }\r\n\r\n behaviorEvent.ReferralId = referral.Id;\r\n\r\n behaviorEvent.Date = moment(referral.Date.toString()).toDate();\r\n behaviorEvent.Date.setUTCSeconds(referral.Date.getSeconds());\r\n behaviorEvent.Date.setUTCHours(referral.Date.getHours());\r\n behaviorEvent.Date.setUTCMinutes(referral.Date.getMinutes());\r\n\r\n behaviorEvent.Location = referral.Location;\r\n behaviorEvent.StaffComment = referral.EventComment;\r\n\r\n const reportedBy = Number(referral.ReportedBy);\r\n if (!isNaN(reportedBy)) {\r\n behaviorEvent.ReportedBy = reportedBy;\r\n }\r\n this.loginService.getStaffIdByUserId().subscribe(staffId => {\r\n behaviorEvent.EnteredBy = staffId;\r\n });\r\n\r\n behaviorEvent.Context = referral.Context;\r\n behaviorEvent.Description = referral.Description;\r\n behaviorEvent.AddedOn = new Date();\r\n behaviorEvent.AddedBy = this.userService.currentUser.MemberId;\r\n behaviorEvent.EventName = 'Referral - ' + referral.StaffName + ' - ' + referral.Location;\r\n behaviorEvent.AYIdentifier = this.yearService.defaultYear.AYIdentifier;\r\n if (referral.ReferralSiteId > 0) {\r\n behaviorEvent.SchoolId = referral.ReferralSiteId;\r\n }\r\n if (!this.loginService.LoginSettings.V10) {\r\n if (referral.IncidentCodeId == null || referral.IncidentCodeId == '' || referral.IncidentCodeId == '0') {\r\n if (this.incidentCodes.length > 0 && openEvent === false) {\r\n behaviorEvent.DefaultIncidentCodeId = this.incidentCodes.find(i => i.Id != '0').Id;\r\n behaviorEvent.EventNumber = behaviorEvent.DefaultIncidentCodeId;\r\n }\r\n } else {\r\n behaviorEvent.EventNumber = referral.IncidentCodeId;\r\n }\r\n\r\n behaviorEvent.IncidentTime = referral.Time.trim();\r\n behaviorEvent.AYIdentifier = this.yearService.defaultYear.Id.toString();\r\n behaviorEvent.AddedBy = this.userService.currentUser.Id;\r\n behaviorEvent.LocationId = referral.LocationId;\r\n behaviorEvent.StaffComment = referral.Description;\r\n }\r\n if (!openEvent) {\r\n this.saveBehaviorEvent(behaviorEvent).subscribe(result => {\r\n if (result) {\r\n Object.assign(behaviorEvent, result);\r\n if (behaviorEvent.Id > 0 && referral) {\r\n if (!this.loginService.LoginSettings.V10) {\r\n referral.EventId = behaviorEvent.Id;\r\n }\r\n this.getStudentsFromReferral(behaviorEvent, referral);\r\n const referralAsList: DisciplineReferral[] = [referral];\r\n this.behaviorEvent = behaviorEvent;\r\n if (this.referralCreated == true) {\r\n this.referralCreated = false;\r\n this.observableEventCreatedFromReferral.next(true);\r\n }\r\n else {\r\n this.saveClassroomDisciplineReferral(referralAsList).subscribe(message => {\r\n this.observableEventCreatedFromReferral.next(true);\r\n if (openEvent) {\r\n this.eventCreatedFromReferralPage = true;\r\n this.router.navigateByUrl('/counselor360/behavior/behaviorEvents');\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n this.behaviorEvent = behaviorEvent;\r\n }\r\n });\r\n return this.observableEventCreatedFromReferralStream$;\r\n }\r\n\r\n syncToServer(referral: DisciplineReferral) {\r\n // POST: syncs the data from the local instance to the server representation\r\n if (referral.PBISSelectedOthersInvolved && referral.PBISSelectedOthersInvolved instanceof Array) {\r\n let othersInvolvedString = '';\r\n for (let i = 0; i < referral.PBISSelectedOthersInvolved.length; i++) {\r\n if (i > 0) {\r\n othersInvolvedString += ',';\r\n }\r\n othersInvolvedString += referral.PBISSelectedOthersInvolved[i];\r\n }\r\n referral.PBISSelectedOthersInvolved = othersInvolvedString;\r\n }\r\n if (referral.PBISSelectedPriorInterventions && referral.PBISSelectedPriorInterventions instanceof Array) {\r\n let priorInterventionsString = '';\r\n for (let i = 0; i < referral.PBISSelectedPriorInterventions.length; i++) {\r\n if (i > 0) {\r\n priorInterventionsString += ',';\r\n }\r\n priorInterventionsString += referral.PBISSelectedPriorInterventions[i];\r\n }\r\n referral.PBISSelectedPriorInterventions = priorInterventionsString;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, EventEmitter } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-change-email-message',\r\n templateUrl: './change-email-message.component.html',\r\n styleUrls: ['./change-email-message.component.css']\r\n})\r\nexport class ChangeEmailMessageComponent implements OnInit, OnDestroy {\r\n\r\n //Properties\r\n dialogBox: MatDialogRef;\r\n confirmEvent: EventEmitter = new EventEmitter ();\r\n\r\n //Class Functions\r\n constructor() { }\r\n\r\n //Event Functions\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnDestroy () {\r\n //POST: Emits a non-confirmation event\r\n this.confirmEvent.emit(false);\r\n }\r\n\r\n //Methods\r\n confirm (confirmation: boolean) {\r\n //PRE: confirmation should reflect if the user agrees or not\r\n //POST: sends a confirmation event to a receiving component\r\n this.confirmEvent.emit(confirmation);\r\n this.dialogBox.close();\r\n }\r\n}\r\n","\r\n

\r\n\tNote:\r\n

\r\n\r\n\r\n\r\n\tYour email address is also used as your Username, so changes made here will also affect the name you use to log in.\r\n\r\n\r\n\r\n\r\n\t
\r\n\t\t\r\n\t
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {isValidEmail} from '../../shared-modules/login/change-password/password-validator';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport {LoginService} from '../../shared-modules/login/login.service';\r\nimport {UserService} from '../user/user.service';\r\nimport {Router} from '@angular/router';\r\nimport {LoginSettings} from '../../shared-modules/login/loginSetting.model';\r\nimport {User} from '../user/user.model';\r\nimport {ChangeEmailMessageComponent} from './change-email-message/change-email-message.component';\r\nimport {map} from 'rxjs/operators';\r\nimport {SharedService} from '../shared.service';\r\n\r\n@Component({\r\n selector: 'app-change-email',\r\n templateUrl: './change-email.component.html',\r\n styleUrls: ['./change-email.component.css']\r\n})\r\nexport class ChangeEmailComponent implements OnInit {\r\n LoginSettings: LoginSettings;\r\n User: User;\r\n currentEmail: string;\r\n repeatNewEmail: string;\r\n dialogBox: MatDialogRef;\r\n newEmailError = 'Invalid email format';\r\n newEmail: string;\r\n repeatNewEmailError = 'Invalid email format';\r\n changeEmailForm: FormGroup;\r\n constructor( private dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private sharedService: SharedService,\r\n private dialog: MatDialog,\r\n private userService: UserService,\r\n private router: Router) { }\r\n\r\n ngOnInit() {\r\n this.User = this.userService.currentUser;\r\n this.currentEmail = this.User.Email;\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.changeEmailForm = new FormGroup({\r\n 'currentEmail': new FormControl({value: this.currentEmail, disabled: true}, [\r\n Validators.required,\r\n ]),\r\n 'newEmail': new FormControl(null, [\r\n Validators.required,\r\n isValidEmail(),\r\n ]),\r\n 'repeatNewEmail': new FormControl(null, [\r\n Validators.required\r\n ])\r\n });\r\n this.onChanges();\r\n }\r\n\r\n onChanges(): void {\r\n this.changeEmailForm.valueChanges.subscribe(val => {\r\n this.newEmail = val['newEmail'];\r\n this.repeatNewEmail = val['repeatNewEmail'];\r\n // Trim the leading and trailing spaces\r\n if (this.newEmail != null) {\r\n this.newEmail = this.newEmail.trim();\r\n }\r\n if (this.repeatNewEmail != null) {\r\n this.repeatNewEmail = this.repeatNewEmail.trim();\r\n }\r\n // check new Email\r\n if (this.changeEmailForm.controls.newEmail.invalid) {\r\n if (this.changeEmailForm.controls.newEmail.errors.hasOwnProperty('notValidEmail')) {\r\n this.newEmailError = 'Invalid email format';\r\n }\r\n }\r\n // Check Repeat New Email\r\n if (this.repeatNewEmail !== this.newEmail) {\r\n this.changeEmailForm.controls['repeatNewEmail'].setErrors({invalid: true});\r\n this.changeEmailForm.setErrors({invalid : true});\r\n this.repeatNewEmailError = 'Emails do not match';\r\n }\r\n });\r\n }\r\n\r\n closeClick() {\r\n // POST: the change password dialog is closed\r\n this.dialogRef.close();\r\n }\r\n\r\n saveClick() {\r\n if (!this.changeEmailForm.invalid) {\r\n if (this.User.Email == this.User.UserName) {\r\n this.showNotice().subscribe(\r\n result => {\r\n if (result) {\r\n this.saveEmail();\r\n }\r\n }\r\n );\r\n } else {\r\n this.saveEmail();\r\n }\r\n }\r\n }\r\n\r\n saveEmail() {\r\n this.userService.canUserChangeEmail(this.newEmail).subscribe(userCanChange => {\r\n if (!userCanChange) {\r\n this.sharedService.showCustomSnackbar('Email is already in use', 'failure');\r\n }\r\n else {\r\n this.userService.setUserEmail(this.newEmail).subscribe(res => {\r\n if (res.body) {\r\n this.User.Email = this.newEmail;\r\n // Close the modal and show a snack bar\r\n this.dialogRef.close();\r\n this.sharedService.showGoodSnackbar();\r\n } else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n showNotice () {\r\n // POST; shows the notice about changing email when it is your username\r\n this.dialogBox = this.dialog.open(ChangeEmailMessageComponent, {\r\n disableClose: true\r\n });\r\n this.dialogBox.componentInstance.dialogBox = this.dialogBox;\r\n return this.dialogBox.componentInstance.confirmEvent.pipe(map(result => {\r\n return result;\r\n }));\r\n }\r\n\r\n}\r\n","
Change Email
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n","\r\n\r\n\r\n
0\">\r\n \r\n \r\n \r\n \r\n Type\r\n \r\n \r\n {{st.Type}}\r\n \r\n\r\n \r\n \r\n Date\r\n \r\n \r\n {{st.Date | date: 'MM/dd/yyyy'}}\r\n \r\n \r\n \r\n \r\n \r\n Time\r\n \r\n \r\n {{st.Time}}\r\n \r\n \r\n \r\n \r\n \r\n Status\r\n \r\n \r\n {{st.Status}}\r\n \r\n \r\n \r\n \r\n \r\n Period\r\n \r\n \r\n {{st.Period}}\r\n \r\n\r\n \r\n \r\n \r\n Code\r\n \r\n \r\n {{st.Code}}\r\n \r\n \r\n \r\n \r\n \r\n Missing Minutes\r\n \r\n \r\n {{st.Minutes}}\r\n \r\n \r\n \r\n \r\n \r\n \"paperclip\"\r\n \r\n \r\n Y\r\n \r\n \r\n \r\n \r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { take } from 'rxjs/operators';\r\nimport { AddAttachmentDialogComponent } from '../add-attachment-dialog/add-attachment-dialog.component';\r\nimport { TylerMatTableDataSource } from '../angular-material/extended.class';\r\nimport { GeneralConfirmationComponent } from '../controls/general-confirmation/general-confirmation.component';\r\nimport { Attachment } from '../models/attachment.model';\r\nimport { SharedService } from '../shared.service';\r\nimport { Student } from '../student/student.model';\r\nimport { StudentService } from '../student/student.service';\r\nimport { AttendanceAdministrationService } from '../../admin360/attendance-administration/attendance-administration.service';\r\nimport { AttendanceCheckInOut } from '../../admin360/attendance-administration/attendance-check-in-out/attendance-check-in-out.model';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { SelfCheckInOutHistoryDialogComponent } from '../self-check-in-out-history-dialog/self-check-in-out-history-dialog.component';\r\nimport { AttendanceCheckInOutLegendComponent } from '../attendance-check-in-out-legend/attendance-check-in-out-legend.component';\r\nimport { AttendanceByStudentComponent } from '../../admin360/attendance-administration/attendance-by-student/attendance-by-student.component';\r\nimport { ViewAttachmentsComponent } from '../view-attachments/view-attachments.component';\r\nimport { UserService } from '../user/user.service';\r\n\r\n@Component({\r\n selector: 'app-check-in-out-view-history-dialog',\r\n templateUrl: './check-in-out-view-history-dialog.component.html',\r\n styleUrls: ['./check-in-out-view-history-dialog.component.css']\r\n})\r\nexport class CheckInOutViewHistoryDialogComponent implements OnInit {\r\n studentId: number;\r\n schoolId: number;\r\n checkInOutHistory: AttendanceCheckInOut[] = [];\r\n\r\n columnsToDisplay = ['Type', 'Date', 'Time', 'Status', 'Period', 'Code', 'LEMinutes', 'Attachment', 'Actions'];\r\n angularMatData = new TylerMatTableDataSource(this.checkInOutHistory);\r\n\r\n _sort: MatSort;\r\n useStudents: Student[] = [];\r\n selectedStudent: Student;\r\n isStaff = false;\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private attendanceAdminService: AttendanceAdministrationService,\r\n private sharedService: SharedService,\r\n private studentService: StudentService,\r\n private userService: UserService) {\r\n this.useStudents.push(this.data.selectedStudent);\r\n }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.angularMatData.sort = value;\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n ngOnInit() {\r\n this.studentId = this.data.selectedStudent.Id;\r\n this.schoolId = this.data.schoolId;\r\n this.isStaff = this.userService.currentUser.UserType == 1 ? true : false;\r\n if (this.isStaff == false) {\r\n this.columnsToDisplay = ['Type', 'Date', 'Time', 'Status', 'Period', 'Code', 'LEMinutes', 'Attachment'];\r\n }\r\n this.getCheckInOutHistory();\r\n }\r\n\r\n getCheckInOutHistory() {\r\n this.attendanceAdminService.getAttendanceCheckInOutHistoryByStudentId(this.schoolId, this.studentId).pipe(take(1)).subscribe(history => {\r\n this.checkInOutHistory = history;\r\n this.angularMatData.data = this.checkInOutHistory;\r\n });\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n deleteClick(recordId: number, type: string) {\r\n const date = this.checkInOutHistory.find(o => o.HistoryId == recordId).Date;\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Check In/Out Record';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete this Check In/Check Out Record?';\r\n deleteConfirmDialog.componentInstance.okButtonLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.attendanceAdminService.deleteCheckInOutRecordById(recordId, type).pipe(take(1)).subscribe(result => {\r\n if (result == true) {\r\n this.getCheckInOutHistory();\r\n const informationDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n maxWidth: '40vw',\r\n minWidth: '40vw'\r\n });\r\n informationDialog.componentInstance.headerLabel = 'Record Deleted';\r\n informationDialog.componentInstance.confirmMessage = 'The Check In (or Check Out) record has been deleted. It is recommended you visit this students attendance for this date ' + date + ' to correct/review their attendance.';\r\n informationDialog.componentInstance.disableConfirmation = true;\r\n informationDialog.componentInstance.informational = true;\r\n }\r\n else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n addAttachmentClick(historyId: number) {\r\n // POST: opens a modal to add an attachment\r\n\r\n // Initializing attachment\r\n const attachment = new Attachment();\r\n attachment.Id = -1;\r\n attachment.DocumentId = 0;\r\n attachment.FileName = '';\r\n attachment.Description = '';\r\n attachment.UploadedDate = new Date();\r\n attachment.MyFileBase64String = '';\r\n attachment.FileType = '';\r\n attachment.Comment = '';\r\n attachment.ViewFileOnWebsite = true;\r\n attachment.AttachmentDescription = '';\r\n\r\n // Opening modal\r\n const dialogBox = this.dialog.open(AddAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment,\r\n newAttachment: true,\r\n requireDocumentType: true\r\n },\r\n disableClose: true\r\n });\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n const attachmentData: Attachment[] = [];\r\n attachmentData.push(attachment);\r\n this.saveAttachment(historyId, attachmentData);\r\n }\r\n });\r\n }\r\n\r\n saveAttachment(historyId: number, attachment: Attachment[]) {\r\n attachment.forEach(att => {\r\n att.AttachmentDescription = att.Description;\r\n att.DocumentBase64 = att.MyFileBase64String;\r\n att.MyFileBase64String = '';\r\n });\r\n this.attendanceAdminService.saveCheckInOutHistoryAttachment(historyId, attachment).pipe(take(1)).subscribe(result => {\r\n if (result == true) {\r\n this.getCheckInOutHistory();\r\n }\r\n });\r\n }\r\n\r\n viewSelfCheckHistoryClick(calledFromMenu = false) {\r\n const dialogBox = this.dialog.open(SelfCheckInOutHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '80vw',\r\n maxWidth: '120vw',\r\n minHeight: '80vh',\r\n data: {\r\n studentId: this.studentId,\r\n calledFromMenu: calledFromMenu,\r\n selectedStudent: this.data.selectedStudent\r\n }\r\n });\r\n }\r\n\r\n legendClick() {\r\n const dialogBox = this.dialog.open(AttendanceCheckInOutLegendComponent, {\r\n disableClose: true,\r\n maxWidth: '40vw',\r\n maxHeight: '65vh'\r\n });\r\n }\r\n\r\n editClick(attendanceCheckInOut: AttendanceCheckInOut) {\r\n this.attendanceAdminService.getCheckInOutHistoryAttachmentById(attendanceCheckInOut.HistoryId, 'History').pipe(take(1)).subscribe(attachment => {\r\n attendanceCheckInOut.Attachments = attachment;\r\n this.studentService.getStudent(attendanceCheckInOut.StudentId).pipe(take(1)).subscribe(student => {\r\n this.selectedStudent = student;\r\n\r\n const attendanceByStudentDialog = this.dialog.open(AttendanceByStudentComponent, {\r\n data: {\r\n calledAsDialog: true,\r\n selectedStudent: this.selectedStudent,\r\n attendanceDate: new Date(attendanceCheckInOut.Date),\r\n attendanceCheckInOut: attendanceCheckInOut\r\n },\r\n disableClose: true,\r\n minWidth: '90vw',\r\n maxWidth: '90vw',\r\n minHeight: '90vh',\r\n maxHeight: '90vh'\r\n });\r\n\r\n attendanceByStudentDialog.afterClosed().subscribe(result => {\r\n if (result != undefined) {\r\n const attach = result.Attachments.filter(o => o.Id < 0 || o.Deleted == true);\r\n if (attach.length > 0) {\r\n this.saveAttachment(result.CheckInOutHistoryId, result.Attachments);\r\n }\r\n this.getCheckInOutHistory();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n viwAttachments(attendanceCheckInOut: AttendanceCheckInOut) {\r\n const id = attendanceCheckInOut.HistoryId != null && attendanceCheckInOut.HistoryId > 0 ? attendanceCheckInOut.HistoryId : attendanceCheckInOut.SubmissionId;\r\n const type = attendanceCheckInOut.HistoryId != null && attendanceCheckInOut.HistoryId > 0 ? 'History' : 'Submission';\r\n this.attendanceAdminService.getCheckInOutHistoryAttachmentById(id, type).pipe(take(1)).subscribe(attachment => {\r\n this.dialog.open(ViewAttachmentsComponent, {\r\n data: {\r\n attachments: attachment\r\n },\r\n disableClose: true,\r\n minWidth: '750px'\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'app-file-too-large-warning-dialog',\r\n\ttemplateUrl: './file-too-large-warning-dialog.component.html',\r\n\tstyleUrls: ['./file-too-large-warning-dialog.component.css']\r\n})\r\nexport class FileTooLargeWarningDialogComponent implements OnInit {\r\n\r\n\t// Properties\r\n\tmessage = 'The file is too large. Choose a smaller file or reduce the file's size.';\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tif (this.data.maxFileSizeMessage && this.data.maxFileSizeMessage.length > 0) {\r\n\t\t\tthis.message = this.data.maxFileSizeMessage;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n
\r\n\tFile Too Large\r\n
\r\n\r\n\r\n\r\n\t
\r\n
\r\n\r\n\r\n\r\n\t\r\n"," 0 ? setFile($event.srcElement.files[0]) : null\" />\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\t\r\n\t\r\n
","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n OnInit,\r\n HostListener\r\n} from '@angular/core';\r\nimport { SpinnerService } from '../../spinner/spinner.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FileTooLargeWarningDialogComponent } from './file-too-large-warning-dialog/file-too-large-warning-dialog.component';\r\n\r\n/**\r\n * This component allows the user to upload a file\r\n * @input fileString is the base 64 string of the file\r\n * @input fileType is the type of the file, such as \"image/png\"\r\n * @input fileExtension is the extension of the file, such as .png\r\n * @input fileName is the name of the file, including the extension, such as myImage.png\r\n * @input showFileName is a boolean that controls if the file name shows up as a label beside the button. It is true by default.\r\n * @input buttonLabel is a label that shows up on the button. It is 'BROWSE' by default.\r\n * @input disabled is whether the control should be disabled. It is false by default;\r\n * @input required is whether the control is required. This just puts a red start at the end of a blank file name.\r\n * @input readAsText is whether this should read the data as text or base64 data. Defaults to false;\r\n * @input accepts is a string to tell the file upload what file types are accepted\r\n * @input deleteable is a boolean that determines if the browse becomes delete when a file is present. Defaults to true.\r\n * @input deleteLabel is the label that shows on the delete button. Defaults to 'DELETE'\r\n * @input width is a string that sets the width of the component. Defaults to 400px.\r\n *\r\n * It provides you with the following\r\n * @output fileStringChange is an event that fires the fileString when it changes\r\n * @output fileTypeChange is an event that fires the fileType when it changes\r\n * @output fileExtensionChange is an event that fires the fileExtension when it changes\r\n * @output fileNameChange is an event that fires the fileName when it changes\r\n * @output changes is an event that fires whenever any variable changes\r\n *\r\n * Note: because each input has an output \"changes,\" you can use a two-way binding, e.g. [(fileString)]=\"myString\"\r\n * Note: even though this provides @input accepts, you must check the type in case of custom error messages\r\n */\r\n@Component({\r\n selector: 'add-file',\r\n templateUrl: './add-file.component.html',\r\n styleUrls: [\r\n './add-file.component.css'\r\n ]\r\n})\r\nexport class AddFileComponent implements OnInit {\r\n\r\n // Interface Properties\r\n @Input() fileString: string | ArrayBuffer;\r\n @Output() fileStringChange = new EventEmitter();\r\n\r\n @Input() fileType: string;\r\n @Output() fileTypeChange = new EventEmitter();\r\n\r\n @Input() fileExtension: string;\r\n @Output() fileExtensionChange = new EventEmitter();\r\n\r\n @Input() fileName: string;\r\n @Output() fileNameChange = new EventEmitter();\r\n\r\n @Input() fileSize: number;\r\n @Output() fileSizeChange = new EventEmitter();\r\n\r\n @Input() showFileName = true;\r\n @Input() deletable = true;\r\n @Input() deleteLabel = 'DELETE';\r\n @Input() buttonLabel = 'BROWSE';\r\n @Input() disabled = false;\r\n @Input() required = false;\r\n @Input() hideRequiredAsterisk = false;\r\n @Input() readAsText = false;\r\n @Input() accepts: string;\r\n @Input() width = '400px';\r\n @Input() maxFileSize = 10485760;\r\n @Input() maxFileSizeMessage = '';\r\n @Output() changes = new EventEmitter();\r\n\r\n // Local Properties\r\n @ViewChild('fileInput', { static: true }) fileInputRef: ElementRef;\r\n @ViewChild('browseButton', { read: ElementRef }) browseButton: ElementRef;\r\n @ViewChild('deleteButton', { read: ElementRef }) deleteButton: ElementRef;\r\n hoverTarget;\r\n droppable: boolean;\r\n hovering = false;\r\n\r\n // Class Functions\r\n constructor(\r\n private spinnerService: SpinnerService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the component\r\n const div = document.createElement('div');\r\n this.droppable = ('draggable' in div)\r\n || ('ondragstart' in div && 'ondrop' in div);\r\n }\r\n\r\n @HostListener('dragover', ['$event'])\r\n public onDragOver(evt) {\r\n if (this.droppable) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.hoverTarget = event.target;\r\n this.hovering = true;\r\n }\r\n }\r\n\r\n @HostListener('dragleave', ['$event'])\r\n public onDragLeave(evt) {\r\n if (this.droppable) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.hovering = false;\r\n }\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n public onDrop(evt) {\r\n if (this.droppable) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n const files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.hovering = false;\r\n this.setFile(files[files.length - 1]);\r\n }\r\n }\r\n }\r\n\r\n chooseFile() {\r\n // PRE: the choose file button is clicked\r\n // POST: opens the file selection\r\n this.fileInputRef.nativeElement.dispatchEvent(new MouseEvent('click'));\r\n }\r\n\r\n delete() {\r\n // PRE: the delete button is clicked\r\n // POST: clears the content of that attachment\r\n this.fileString = null;\r\n this.fileStringChange.emit(this.fileString);\r\n this.fileType = null;\r\n this.fileTypeChange.emit(this.fileType);\r\n this.fileExtension = null;\r\n this.fileExtensionChange.emit(this.fileExtension);\r\n this.fileName = null;\r\n this.fileNameChange.emit(this.fileName);\r\n this.fileInputRef.nativeElement.value = '';\r\n this.fileSize = 0;\r\n this.fileSizeChange.emit(0);\r\n this.changes.emit();\r\n }\r\n\r\n // Methods\r\n setFile(file: File) {\r\n // PRE: a file uploaded from \r\n // POST: sets up the file data\r\n\r\n // A file must be present\r\n if (!file) {\r\n return;\r\n }\r\n\r\n // The file must be no larger than 10 mb\r\n if (file.size > this.maxFileSize) {\r\n this.dialog.open(FileTooLargeWarningDialogComponent, {\r\n disableClose: true,\r\n data: { maxFileSizeMessage: this.maxFileSizeMessage }\r\n });\r\n return;\r\n }\r\n const reader = new FileReader();\r\n this.fileName = file.name;\r\n this.fileNameChange.emit(this.fileName);\r\n this.fileType = file.type;\r\n this.fileTypeChange.emit(this.fileType);\r\n this.fileExtension = file.name.split('.').pop();\r\n this.fileExtensionChange.emit(this.fileExtension);\r\n this.spinnerService.showSpinner = true;\r\n setTimeout(() => {\r\n if (this.readAsText) {\r\n reader.onload = (e) => {\r\n this.fileString = reader['result'];\r\n this.fileStringChange.emit(this.fileString);\r\n this.changes.emit();\r\n this.spinnerService.showSpinner = false;\r\n };\r\n reader.readAsText(file);\r\n } else {\r\n reader.onload = (e) => {\r\n this.fileTypeChange.emit(this.fileType);\r\n // const base64String = e.target['result'].match(/^data:.+\\/(.+);base64,(\\S*)$/);\t// This takes a lot of time\r\n const splitStrings = e.target['result'].toString().split(',');\r\n if (splitStrings.length == 2) {\r\n this.fileString = splitStrings[1];\r\n } else {\r\n this.fileString = e.target['result'];\r\n }\r\n this.fileStringChange.emit(this.fileString);\r\n this.fileSize = file.size;\r\n this.fileSizeChange.emit(file.size);\r\n this.changes.emit();\r\n this.spinnerService.showSpinner = false;\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }, 20);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component ({\r\n\tselector: 'expand-collapse-buttons',\r\n\ttemplateUrl: './expand-collapse-buttons.component.html',\r\n\tstyleUrls: ['./expand-collapse-buttons.component.css']\r\n})\r\nexport class ExpandCollapseButtonsComponent {\r\n\r\n\t// Properties\r\n\t@Input() expandEmitter;\r\n\r\n\t// Class Functions\r\n\tconstructor () {}\r\n\r\n\t// Events\r\n\r\n\t// Methods\r\n\texpandAll(expand: boolean) {\r\n\t\tif (this.expandEmitter != null) {\r\n\t\t\tthis.expandEmitter.emit (expand);\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\r\n\t\r\n\t\r\n","import { Component, OnInit, OnDestroy, EventEmitter, Input, Output, ElementRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport {SharedService} from '../../../shared.service';\r\n\r\n/**\r\n * This displays the save and cancel buttons positioned to the right of wherever its placed.\r\n * Notably, it also displays the small sticky dialog above the footer for \"Data saved successfully\" or\r\n * \"Data failed to save.\"\r\n * @Input() startOver: if it is true, it'll display a \"Start Over\" icon instead of the usual Cancel icon.\r\n * All other functionality remains exactly identical.\r\n * @Input() saveEnabled: enables the save button. This is true by default.\r\n * @Input() cancelEnabled: enables the cancel button. This is true by default. Note, there is no image for disabled cancel right now.\r\n * @Input() saveServerEvent: An event emitter for booleans (if the server successfully or unsuccessfully saves)\r\n * @Ouput() saveButtonEvent: true if clicked on save, false if clicked on cancel\r\n */\r\n@Component({\r\n selector: 'save-cancel-buttons',\r\n templateUrl: './save-cancel-buttons.component.html',\r\n styleUrls: ['./save-cancel-buttons.component.css']\r\n})\r\nexport class SaveCancelButtonsComponent implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n @Input() startOver = false;\r\n @Input() saveEnabled = true;\r\n @Input() cancelEnabled = true;\r\n @Input() saveServerEvent: EventEmitter; // True is success, false if failure\r\n @Output() saveButtonEvent: EventEmitter = new EventEmitter ();\r\n subscriptions: Subscription[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n private element: ElementRef,\r\n private sharedService: SharedService\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: subscribes to the server save and produces the right messages\r\n if (this.saveServerEvent != null) {\r\n this.subscriptions.push(this.saveServerEvent.subscribe(save => {\r\n if (save) {\r\n this.sharedService.showGoodSnackbar();\r\n } else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n }));\r\n }\r\n }\r\n\r\n ngOnDestroy () {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach (subscription => {\r\n subscription.unsubscribe ();\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{label | translate}}\r\n
\r\n
\r\n","import { System } from './../../System';\r\nimport { Component, EventEmitter, Output, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tyl-button',\r\n templateUrl: './tyl-button.component.html',\r\n styleUrls: [\r\n './tyl-button.component.css'\r\n ]\r\n})\r\nexport class TylButtonComponent implements OnInit {\r\n @Input() public image: string;\r\n @Input() public disabledImage: string;\r\n @Input() public label: string;\r\n @Input() public showLabel = true;\r\n @Input() public disabled = false;\r\n @Input() public textColor: string;\r\n @Input() public iconWidth: number;\r\n @Input() public noPadding = false;\r\n @Input() public id: string;\r\n @Output()\r\n clickEvent = new EventEmitter();\r\n srcUrl: string;\r\n private localDisabled = false; // to prevent double-clicking/ rapid clicks. This will disallow clicking but won't gray out the button\r\n toCamelCase: (str: string) => string;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.toCamelCase = System.toCamelCase;\r\n }\r\n\r\n onClick() {\r\n if (!this.disabled && !this.localDisabled) {\r\n this.localDisabled = true;\r\n this.clickEvent.emit();\r\n\r\n setTimeout(() => {\r\n this.localDisabled = false;\r\n }, 300);\r\n }\r\n }\r\n\r\n checkId() {\r\n if (!!this.id) {\r\n return this.id;\r\n } else {\r\n return this.toCamelCase(this.label) + 'Button';\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if ((event.key == 'Enter' || event.key == ' ') && !this.disabled) {\r\n event.stopPropagation();\r\n this.clickEvent.emit();\r\n }\r\n }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\n\r\nexport class ErrorList {\r\n id?: number = 0;\r\n fieldName: string;\r\n completFieldName?: string ='';\r\n errorMsg: string|null;\r\n fieldRef: ElementRef;\r\n\tobject?: any;\r\n\tclickCallback?: Function;\r\n}\r\n","import { ErrorList } from './error-list.model';\r\n\r\nexport class Errors {\r\n\r\n // Properties\r\n errorList: ErrorList[] = [];\r\n\r\n // Class Functions\r\n constructor(errorList: ErrorList[]) {\r\n this.errorList = errorList;\r\n }\r\n}","export class Dimensions {\r\n minWidth: number;\r\n maxWidth: number;\r\n}","
\r\n
0\"\r\n [ngStyle]=\"{'position': 'absolute',\r\n 'bottom': '0px',\r\n 'right': '0px',\r\n 'min-width': dimensions.minWidth ? dimensions.minWidth + 'px' : '300px',\r\n 'max-width': dimensions.maxWidth ? dimensions.maxWidth + 'px' : '',\r\n 'border': '1px solid #a20000',\r\n 'background-color': 'white'\r\n }\">\r\n
\r\n Errors were found. Please see details below.\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n 0\">\r\n {{error.fieldName}}\r\n {{error.fieldName}}\r\n : \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Component, OnInit, ElementRef, HostListener } from '@angular/core';\r\nimport { ErrorList } from './error-list.model';\r\nimport { Errors } from './errors';\r\nimport { Dimensions } from './dimensions';\r\n\r\n@Component({\r\n selector: 'error-prompt-messages',\r\n templateUrl: './error-prompt-messages.component.html'\r\n})\r\nexport class ErrorPromptMessagesComponent implements OnInit {\r\n\r\n // Properties\r\n errorList: ErrorList[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n private errors: Errors,\r\n private sanitizer: DomSanitizer,\r\n private overlayRef: OverlayRef,\r\n private elementRef: ElementRef,\r\n private dimensions: Dimensions\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.errorList = this.errors.errorList;\r\n }\r\n\r\n // Methods\r\n\r\n errorLinkClick(error: ErrorList) {\r\n \t// PRE: an error's link is clicked\r\n\t\t// POST: changes the focus to that field and calls the callback\r\n if (error.fieldRef) {\r\n error.fieldRef.nativeElement.focus();\r\n }\r\n \tif (error.clickCallback) {\r\n error.clickCallback(error.object);\r\n\t\t}\r\n this.overlayRef.dispose();\r\n\t}\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event) {\r\n // PRE: the dom is clicked outside of the error messages\r\n // POST: removes this from the dom\r\n if (!this.elementRef.nativeElement.contains(event.target)) {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n}\r\n","\r\n
0\"\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n style=\"cursor:pointer;\"\r\n (click)=\"errorCircleClick(); $event.stopPropagation();\" \r\n (keydown)=\"$event.key == 'Enter' || $event.key == ' ' ? errorCircleClick() : null\"\r\n aria-label=\"errors button. Press to view errors.\">\r\n \r\n
\r\n","import { Errors } from './errors';\r\nimport { Component, Input, OnInit, ElementRef, Injector, OnDestroy } from '@angular/core';\r\nimport { ErrorList } from './error-list.model';\r\nimport { Overlay, OverlayRef, } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { ErrorPromptMessagesComponent } from './error-prompt-messages.component';\r\nimport { Dimensions } from './dimensions';\r\n\r\n\r\n@Component({\r\n selector: 'error-prompt',\r\n templateUrl: './error-prompt.component.html',\r\n styleUrls: ['./error-prompt.component.css'],\r\n})\r\nexport class ErrorPromptComponent implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n @Input() errorList: ErrorList[];\r\n @Input() insideFlex: boolean; // deprecated - do not use\r\n @Input() minWidth: number;\r\n @Input() maxWidth: number;\r\n public overlayRef: OverlayRef;\r\n\r\n // Class Functions\r\n constructor(\r\n private _eref: ElementRef,\r\n private overlay: Overlay,\r\n private injector: Injector\r\n ) {}\r\n\r\n // Event Functions\r\n errorCircleClick() {\r\n // PRE: the error circle is clicked\r\n // POST: shows the error messages overlay\r\n if (this.overlayRef && this.overlayRef.hasAttached()) {\r\n this.overlayRef.dispose();\r\n } else {\r\n const position = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this._eref.nativeElement.parentElement)\r\n .withPositions([\r\n {\r\n offsetY: -5,\r\n offsetX: -10,\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n weight: 1\r\n }\r\n ]);\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: position\r\n });\r\n const injector = Injector.create(\r\n [\r\n {\r\n provide: Errors,\r\n useValue: new Errors(this.errorList),\r\n },\r\n {\r\n provide: OverlayRef,\r\n useValue: this.overlayRef\r\n },\r\n {\r\n provide: Dimensions,\r\n useValue: {\r\n minWidth: this.minWidth,\r\n maxWidth: this.maxWidth\r\n }\r\n }\r\n ],\r\n this.injector\r\n );\r\n const messagePortal = new ComponentPortal(ErrorPromptMessagesComponent, null, injector);\r\n this.overlayRef.attach(messagePortal);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: removes the error message overlay\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n}\r\n\r\n","
\r\n\t\r\n\t\tData is filtered.\r\n\t\r\n\t\r\n
\r\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {animate, state, style, transition, trigger} from '@angular/animations';\r\nimport {Subscription} from 'rxjs';\r\n\r\n// These are used for the transition\r\n\r\n/**\r\n * This is meant to provide a generic notification for all our filters. It includes the following:\r\n *\r\n * @Input panelFiltered: when true, this notification shows up. This defaults to true to allow the mere use of *ngIf.\r\n * @Output filter: this fires when the filter text is clicked.\r\n * \t\tNOTE: it is intended to make the filter show up. I didn't implement it here because you have to supply a template.\r\n * @Output clearFilter: this fires when the clear filter text is clicked.\r\n * \t\tNOTE: this is intended to clear out the filter AND reset the cancel state. Again, it's component specific.\r\n */\r\n@Component({\r\n\tselector: 'filter-notification',\r\n\ttemplateUrl: './filter-notification.component.html',\r\n\tstyleUrls: ['./filter-notification.component.css'],\r\n\tanimations: [\r\n\t\ttrigger('hovered', [\r\n\t\t\tstate('no-hover', style({\r\n\t\t\t\tbackgroundColor: 'transparent'\r\n\t\t\t})),\r\n\t\t\tstate('hover', style({\r\n\t\t\t\tbackgroundColor: '#C5CAE9'\r\n\t\t\t})),\r\n\t\t\ttransition('no-hover <=> hover', [\r\n\t\t\t\tanimate('.2s cubic-bezier(.35,0,.25,1)')\r\n\t\t\t])\r\n\t\t])\r\n\t]\r\n})\r\nexport class FilterNotificationComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\t@Input() filtered = true;\r\n\t@Output() filter = new EventEmitter();\r\n\t@Output() clearFilter = new EventEmitter();\r\n\tclearHover = false;\r\n\tfilterHover = false;\r\n\tclearSubscription: Subscription;\r\n\tfilterSubscription: Subscription;\r\n\r\n\t// Class Functions\r\n\tconstructor() { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.clearSubscription = this.clearFilter.subscribe(() => {\r\n\t\t\tthis.clearHover = false;\r\n\t\t});\r\n\t\tthis.filterSubscription = this.filter.subscribe(() => {\r\n\t\t\tthis.filterHover = false;\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\r\n\t}\r\n\r\n\t// Methods\r\n\r\n}\r\n","\r\nimport { EventEmitter, Output, Input, Directive } from '@angular/core';\r\nimport {TylerMatTableDataSource} from '../../angular-material/extended.class';\r\nimport {FilterModel} from './filter.model';\r\n\r\n\r\n/**\r\n * This is the contents of a filter. This can be useful when trying to build out a pusher filter which has the same contents as\r\n * the table filters.\r\n *\r\n * @Input dateValue: this is the date value for date data types\r\n * @Output dateValueChange: this allows you to use two-way binding on date values\r\n *\r\n * @Input filterValue: this is a string value for string or enumeration data types\r\n * @Ouput filterValueChange: this allows you to use two-way binding on filter values\r\n *\r\n * @Input operation: this is the operation of the filter\r\n * @Output operationChange: this allows you to use two-way binding on operation\r\n *\r\n * @Output menuTrigger: this is triggered when an encapsulating menu should close\r\n *\r\n * REQUIRED @Input data: this is the data source being panelFiltered on\r\n * REQUIRED @Input clearFilterEvent: this is an event emitter that fires whenever the filter is cleared from outside the component.\r\n * REQUIRED @Input dataType: this is the type of the data. Accepted values are number, boolean, string, date, and enumeration\r\n * REQUIRED @Input columnName: this is the name of the column your filtering on\r\n *\r\n * @Input columnIndex: used when filtering on string[] rather than objects\r\n * @Input enumerationValues: this is a list of strings that can be selected for enumeration data types\r\n *\r\n * @Input valueWidth: the width of the filter input. Defaults to 180px.\r\n * @Input operationMarginRight: the space to the right of the operation box. Defaults to 0px.\r\n * @Input floatLabel: whether or not labels should float above the input. Defaults to auto.\r\n * @Input fieldsMarginBottom: the size of the bottom margin. Defaults to 0px.\r\n * @Input showLabel: determines whether or not the label shows up. Defaults to true.\r\n *\r\n * @Output clickEvent: this event fires when the filter button is clicked\r\n * @Output filterChange: this event fires when the data have been changed by this component. The event is the data.\r\n * @Output filterOperationChange: this event fires when the operation has been changed by this component. The event is the operation.\r\n */\r\n@Directive()\r\n// tslint:disable-next-line:directive-class-suffix\r\nexport class HasFilter {\r\n\r\n\t// Properties\r\n\t@Output() dateValueChange = new EventEmitter();\r\n\t@Output() filterValueChange = new EventEmitter();\r\n\t@Output() operationChange = new EventEmitter();\r\n\t@Output() showTrueChange = new EventEmitter();\r\n\t@Output() showFalseChange = new EventEmitter();\r\n\r\n\t@Input() data: TylerMatTableDataSource;\r\n\t@Input() columnName: string;\r\n\t@Input() columnIndex: number;\r\n\t@Input() dataType: 'string' | 'number' | 'date' | 'boolean' | 'enumeration' | 'nullable boolean';\r\n\t@Output() clickEvent = new EventEmitter();\r\n\t@Input() enumerationValues: string[] = [];\r\n\t@Input() trueValue = 'Y';\r\n\t@Input() indeterminateValue = '';\r\n\t@Input() falseValue = '';\r\n\t@Input() showTrueLabel = 'Y';\r\n @Input() showIndeterminateLabel = '';\r\n\t@Input() showFalseLabel = '';\r\n\t@Input() debounceTime = 0;\r\n\r\n\t@Output() filterChange = new EventEmitter();\r\n\t@Output() filterOperationChange = new EventEmitter();\r\n\r\n\t// Class Functions\r\n\tget dateValue(): Date {\r\n\t if (this.data) {\r\n return this.filter.dateValue;\r\n } else {\r\n\t return null;\r\n }\r\n\t}\r\n\r\n\t@Input() set dateValue(value: Date) {\r\n\t if (this.data) {\r\n this.filter.dateValue = value;\r\n this.dateValueChange.emit(value);\r\n this.data.filter = 'trigger';\r\n }\r\n\t}\r\n\r\n\tget filterValue(): string {\r\n\t if (this.data) {\r\n return this.filter.value;\r\n } else {\r\n\t return '';\r\n }\r\n\t}\r\n\r\n\t@Input() set filterValue(value: string) {\r\n\t if (this.data) {\r\n this.filter.value = value;\r\n this.filterValueChange.emit(value);\r\n this.data.filter = 'trigger';\r\n }\r\n\t}\r\n\r\n\tget operation(): string {\r\n\t if (this.data) {\r\n return this.filter.operator;\r\n } else {\r\n\t return '';\r\n }\r\n\t}\r\n\r\n\t@Input() set operation(value: string) {\r\n\t if (this.data) {\r\n if (!value) {\r\n this.filter.operator = '0';\r\n } else {\r\n this.filter.operator = value;\r\n }\r\n if (this.dataType == 'boolean') {\r\n if (this.filter.operator == '1') {\r\n this.filter.value = this.trueValue;\r\n } else {\r\n this.filter.value = this.falseValue;\r\n }\r\n }\r\n if (this.dataType == 'nullable boolean') {\r\n if (this.filter.operator == '1') {\r\n this.filter.value = this.trueValue;\r\n } else if (this.filter.operator == '3') {\r\n this.filter.value = this.falseValue;\r\n } else {\r\n this.filter.value = this.indeterminateValue;\r\n }\r\n }\r\n this.operationChange.emit(value);\r\n this.data.filter = 'trigger';\r\n }\r\n\t}\r\n\r\n\tget filtered(): boolean {\r\n\t\tif (this.dataType.includes('boolean')) {\r\n\t\t\treturn this.operation != '0';\r\n\t\t} else {\r\n\t\t\treturn (this.filterValue != '' && this.filterValue != undefined && this.filterValue != null) ||\r\n\t\t\t\t(this.dateValue != undefined && this.dateValue != null && this.dateValue.toString() != '' && this.dateValue.toString() != 'Invalid Date');\r\n\t\t}\r\n\t}\r\n\r\n\tget filter(): FilterModel {\r\n\t if (this.data) {\r\n const filter = this.data.getFilter(this.columnName);\r\n if (filter) {\r\n return filter;\r\n } else {\r\n const newFilter = new FilterModel('', this.columnName, '0', this.dataType, null);\r\n if (this.columnIndex) {\r\n newFilter.columnIndex = this.columnIndex;\r\n }\r\n this.data.addFilter(newFilter);\r\n return newFilter;\r\n }\r\n } else {\r\n\t return null;\r\n }\r\n\t}\r\n\r\n\t// Methods\r\n\tapplyFilter() {\r\n\t\t// NOTE: Depreciated. This is no longer necessary.\r\n\t\t// POST: applies the filter\r\n\t\t//\r\n\t\t// // Date types\r\n\t\t// if (this.dataType == 'date' && this.dateValue) {\r\n\t\t// \tconst newFilter = new FilterModel(this.dateValue.toLocaleDateString(), this.columnName, this.operation, this.dataType, this.dateValue);\r\n\t\t// \tthis.data.addRemoveFilter(newFilter, this.data);\r\n\t\t// }\r\n\t\t//\r\n\t\t// // Boolean types\r\n\t\t// else if (this.dataType == 'boolean') {\r\n\t\t// \tconst trueFilter = new FilterModel(this.trueValue, this.columnName, this.operation, this.dataType, this.dateValue);\r\n\t\t// \tconst falseFilter = new FilterModel(this.falseValue, this.columnName, this.operation, this.dataType, this.dateValue);\r\n\t\t// \tif (this.operation == '0') {\r\n\t\t// \t\tthis.data.removeFilter(trueFilter, this.data);\r\n\t\t// \t\tthis.data.removeFilter(falseFilter, this.data);\r\n\t\t// \t} else if (this.operation == '1') {\r\n\t\t// \t\tthis.data.removeFilter(falseFilter, this.data);\r\n\t\t// \t\tthis.data.addFilter(trueFilter, this.data);\r\n\t\t// \t} else if (this.operation == '2') {\r\n\t\t// \t\tthis.data.removeFilter(trueFilter, this.data);\r\n\t\t// \t\tthis.data.addFilter(falseFilter, this.data);\r\n\t\t// \t}\r\n\t\t// }\r\n\t\t//\r\n\t\t// // Other types\r\n\t\t// else {\r\n\t\t// \tconst newFilter = new FilterModel(this.filterValue, this.columnName, this.operation, this.dataType, this.dateValue);\r\n\t\t// \tif (this.columnIndex) {\r\n\t\t// \t\tnewFilter.columnIndex = this.columnIndex;\r\n\t\t// \t}\r\n\t\t// \tthis.data.addRemoveFilter(newFilter, this.data);\r\n\t\t// }\r\n\t}\r\n\r\n\tremoveClick() {\r\n\t\tswitch (this.dataType) {\r\n\t\t\tcase 'date':\r\n\t\t\t\tthis.dateValue = undefined;\r\n\t\t\t\tthis.filterChange.emit(undefined);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'string':\r\n\t\t\t\tthis.filterValue = '';\r\n\t\t\t\tthis.filterChange.emit('');\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.dateValue = undefined;\r\n\t\t\t\tthis.filterValue = '';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n
\r\n \r\n \r\n\r\n \r\n \r\n Contains\r\n \r\n \r\n Starts with\r\n \r\n \r\n Ends with\r\n \r\n \r\n Equals\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n Equals\r\n \r\n \r\n Not Equal\r\n \r\n \r\n Less Than\r\n \r\n \r\n Less Than Or Equal To\r\n \r\n \r\n Greater Than\r\n \r\n \r\n Greater Than Or Equal To\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n Equals\r\n \r\n \r\n Not Equal\r\n \r\n \r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{enumerationValue}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, OnInit } from '@angular/core';\r\nimport {HasFilter} from '../has-filter';\r\n\r\n/** DEPRECIATED: WE ARE NO LONGER SYNCING FILTERS!\r\n * This is the contents of a filter. This can be useful when trying to build out a pusher filter which has the same contents as\r\n * the table filters.\r\n *\r\n * @Input dateValue: this is the date value for date data types\r\n * @Output dateValueChange: this allows you to use two-way binding on date values\r\n *\r\n * @Input filterValue: this is a string value for string or enumeration data types\r\n * @Ouput filterValueChange: this allows you to use two-way binding on filter values\r\n *\r\n * @Input operation: this is the operation of the filter\r\n * @Output operationChange: this allows you to use two-way binding on operation\r\n *\r\n * @Output menuTrigger: this is triggered when an encapsulating menu should close\r\n *\r\n * REQUIRED @Input data: this is the data source being panelFiltered on\r\n * REQUIRED @Input dataType: this is the type of the data. Accepted values are string, date, and enumeration\r\n * REQUIRED @Input columnName: this is the name of the column your filtering on\r\n *\r\n * @Input columnIndex: used when filtering string[] rather than objects\r\n * @Input enumerationValues: this is a list of strings that can be selected for enumeration data types\r\n *\r\n * @Input trueValue: this is the value of the column when the boolean is true. Defaults to 'Y'.\r\n * @Input falseValue: this is the value of the column when the boolean is false. Defaults to ''.\r\n * @Input showTrueLabel: this is the label for the show true checkbox. Defaults to the trueValue.\r\n * @Input showFalseLabel: this is the label for the show false checkbox. Defaults to the falseValue.\r\n *\r\n * @Input operationSelectWidth: the width of the operation selection box. Defaults to 180px.\r\n * @Input valueWidth: the width of the filter input. Defaults to 180px.\r\n * @Input operationMarginRight: the space to the right of the operation box. Defaults to 0px.\r\n * @Input floatLabel: whether or not labels should float above the input. Defaults to auto.\r\n * @Input fieldsMarginBottom: the size of the bottom margin. Defaults to 0px.\r\n * @Input showLabel: determines whether or not the label shows up. Defaults to true.\r\n *\r\n * @Input pusherMenuStyle: automatically styles the properties for the pusher menu (overrides)\r\n *\r\n * @Output filterChange: this event fires the new value only when the value is changed from this component\r\n * @Output filterOperationChange: this event fires when the operation has been changed by this component. The event is the operation.\r\n */\r\n@Component({\r\n selector: 'filter-contents',\r\n templateUrl: './filter-contents.component.html',\r\n styleUrls: [\r\n './filter-contents.component.css'\r\n ]\r\n})\r\nexport class FilterContentsComponent extends HasFilter implements OnInit {\r\n\r\n // Properties\r\n\r\n marginTop = '0px';\r\n\r\n @Output() menuTrigger = new EventEmitter();\r\n\r\n @Input() operationSelectWidth = '180px';\r\n @Input() valueWidth = '180px';\r\n @Input() operationMarginRight = '0px';\r\n @Input() fieldsMarginBottom = '0px';\r\n @Input() floatLabel = 'auto';\r\n @Input() showLabel = true;\r\n\r\n @Input() pusherMenuStyle = false;\r\n\r\n @ViewChild('filterInput', { read: ElementRef }) filterInputRef: ElementRef;\r\n\r\n // Class Functions\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: determines what the margin top should be\r\n if (this.pusherMenuStyle) {\r\n this.operationSelectWidth = '120px';\r\n this.operationMarginRight = '10px';\r\n if (this.dataType != 'date') {\r\n this.fieldsMarginBottom = '-.5em';\r\n }\r\n this.floatLabel = 'never';\r\n this.showLabel = false;\r\n }\r\n if (this.floatLabel == 'never') {\r\n this.marginTop = '-.5em';\r\n }\r\n\r\n // Checking if the data source doesn't already have a filter for this\r\n\t\tif (this.data && !this.filterValue && !this.dateValue) {\r\n\t\t\tconst existingFilter = this.data.getFilter(this.columnName);\r\n\t\t\tif (existingFilter) {\r\n\t\t\t\tthis.filterValue = existingFilter.value;\r\n\t\t\t\tthis.dateValue = existingFilter.dateValue;\r\n\t\t\t\tthis.operation = existingFilter.operator;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n // Methods\r\n}","
\r\n
\r\n \r\n \"FilterIcon\" \r\n \"FilterIcon\" \r\n
\r\n \r\n
\r\n \r\n\t\t\t\r\n
\r\n
\r\n
\r\n","import { FilterContentsComponent } from './filter-contents/filter-contents.component';\r\nimport {Component, EventEmitter, Input, OnInit, ViewChild, OnDestroy} from '@angular/core';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport {Subscription} from 'rxjs';\r\nimport {HasFilter} from './has-filter';\r\n\r\n\r\n/**\r\n * This is the contents of a filter. This can be useful when trying to build out a pusher filter which has the same contents as\r\n * the table filters.\r\n *\r\n * @Input dateValue: this is the date value for date data types\r\n * @Output dateValueChange: this allows you to use two-way binding on date values\r\n *\r\n * @Input filterValue: this is a string value for string or enumeration data types\r\n * @Ouput filterValueChange: this allows you to use two-way binding on filter values\r\n *\r\n * @Input operation: this is the operation of the filter\r\n * @Output operationChange: this allows you to use two-way binding on operation\r\n *\r\n * @Output menuTrigger: this is triggered when an encapsulating menu should close\r\n *\r\n * REQUIRED @Input data: this is the data source being panelFiltered on\r\n * REQUIRED @Input dataType: this is the type of the data. Accepted values are string, date, and enumeration\r\n * REQUIRED @Input columnName: this is the name of the column your filtering on\r\n *\r\n * @Input clearFilterEvent: this is an event emitter that fires whenever the filter is cleared from outside the component.\r\n *\r\n * @Input columnIndex: used when filtering on string[] rather than objects\r\n * @Input enumerationValues: this is a list of strings that can be selected for enumeration data types\r\n *\r\n * @Input valueWidth: the width of the filter input. Defaults to 180px.\r\n * @Input operationMarginRight: the space to the right of the operation box. Defaults to 0px.\r\n * @Input floatLabel: whether or not labels should float above the input. Defaults to auto.\r\n * @Input fieldsMarginBottom: the size of the bottom margin. Defaults to 0px.\r\n * @Input showLabel: determines whether or not the label shows up. Defaults to true.\r\n *\r\n * @Output clickEvent: this event fires when the filter button is clicked\r\n * @Output filterChange: this event fires when the data have been changed by this component. The event is the data.\r\n * @Output filterOperationChange: this event fires when the operation has been changed by this component. The event is the operation.\r\n */\r\n@Component({\r\n selector: 'filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: [\r\n './filter.component.css'\r\n ]\r\n})\r\nexport class FilterComponent extends HasFilter implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n\r\n @Input() clearFilterEvent: EventEmitter;\r\n clearFilterSubscription: Subscription;\r\n\r\n @ViewChild('filterContents', { read: FilterContentsComponent, static: true }) filterContents: FilterContentsComponent;\r\n @ViewChild(MatMenuTrigger, { static: true }) trigger: MatMenuTrigger;\r\n\r\n // Class Functions\r\n\r\n // Methods\r\n filterInputFocus() {\r\n if (this.filterContents && this.filterContents.filterInputRef) {\r\n this.filterContents.filterInputRef.nativeElement.focus();\r\n }\r\n }\r\n\r\n openMenu(event?: any) {\r\n this.trigger.openMenu();\r\n this.filterInputFocus();\r\n if (event) {\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n\t\tif (this.clearFilterEvent) {\r\n\t\t\tthis.clearFilterSubscription = this.clearFilterEvent.subscribe(() => {\r\n\t\t\t\tthis.filterValue = '';\r\n\t\t\t\tthis.dateValue = undefined;\r\n\t\t\t\tthis.operation = '0';\r\n\t\t\t});\r\n\t\t}\r\n }\r\n\r\n ngOnDestroy() {\r\n \tif (this.clearFilterSubscription) {\r\n \t\tthis.clearFilterSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","export class FilterModel {\r\n\r\n // Properties\r\n value: string;\r\n column: string;\r\n operator: string;\r\n dataType: string;\r\n dateValue: Date;\r\n columnIndex: number;\r\n\r\n // Class Functions\r\n constructor(value: string, column: string, operator: string, dataType: string, dateValue?: Date) {\r\n this.value = value;\r\n this.column = column;\r\n this.operator = operator;\r\n this.dataType = dataType;\r\n if (dateValue != undefined) {\r\n this.dateValue = dateValue;\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n {{headerLabel | translate}}\r\n
\r\n
\r\n {{showSteps | translate}}\r\n
\r\n\r\n
\r\n {{headerLabel | translate}}\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n
\r\n Proceed?\r\n
\r\n\r\n
\r\n {{secondMessage | translate}}\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n\r\n","import { Component, EventEmitter, Output, Input, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'general-confirmation',\r\n templateUrl: './general-confirmation.component.html'\r\n})\r\nexport class GeneralConfirmationComponent implements OnInit {\r\n\r\n @Input() headerLabel: string;\r\n @Input() confirmMessage: string;\r\n @Input() disableConfirmation: boolean;\r\n @Input() okButtonLabel: string;\r\n @Input() okButtonImage = 'save.png';\r\n @Input() backButtonLabel = 'Back';\r\n @Input() showProceed: boolean;\r\n @Input() informational = false;\r\n @Input() secondMessage: string;\r\n @Input() warning: boolean;\r\n @Input() headerCenterAlign = false;\r\n @Input() okTylerAstId = 'GenericDialogASTOk';\r\n @Input() closeTylerAstId = 'GenericDialogASTClose';\r\n @Output() confirmEvent = new EventEmitter();\r\n @Output() previousEvent = new EventEmitter();\r\n @Input() showSteps: string;\r\n\r\n cancelButtonLabel = 'Cancel';\r\n\r\n\r\n constructor(\r\n private dialog: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private loginService: LoginService,\r\n private sanitizer: DomSanitizer\r\n ) {\r\n if (this.okButtonLabel == undefined || this.okButtonLabel == '') {\r\n this.okButtonLabel = 'OK';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // Setting injected data\r\n if (this.data) {\r\n if (this.data.headerLabel) {\r\n this.headerLabel = this.data.headerLabel;\r\n }\r\n if (this.data.confirmMessage) {\r\n this.confirmMessage = this.data.confirmMessage;\r\n }\r\n if (this.data.disableConfirmation) {\r\n this.disableConfirmation = this.data.disableConfirmation;\r\n }\r\n if (this.data.okButtonLabel) {\r\n this.okButtonLabel = this.data.okButtonLabel;\r\n }\r\n if (this.data.showProceed) {\r\n this.showProceed = this.data.showProceed;\r\n }\r\n if (this.data.informational) {\r\n this.informational = this.data.informational;\r\n }\r\n if (this.data.secondMessage) {\r\n this.secondMessage = this.data.secondMessage;\r\n }\r\n if (this.data.warning) {\r\n this.warning = this.data.warning;\r\n }\r\n if (this.data.showSteps) {\r\n this.showSteps = this.data.showSteps;\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n okClick() {\r\n this.confirmEvent.emit(true);\r\n this.dialog.close(true);\r\n }\r\n backClick() {\r\n this.previousEvent.emit(true);\r\n this.dialog.close(true);\r\n };\r\n\r\n cancelClick() {\r\n this.dialog.close(false);\r\n }\r\n\r\n}\r\n","
\r\n {{v10 ? 'Grade Override Codes': 'Special Mark Codes'}}\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Code\r\n \r\n Description\r\n
\r\n {{code.Code}}\r\n \r\n {{code.Description}}\r\n
\r\n
\r\n\r\n\r\n \r\n","import { Component, AfterViewInit } from '@angular/core';\r\nimport { OverrideCode } from '../../../classroom360/gradebook/v10/models/override-code.model';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { System } from '../../../shared-components/System';\r\nimport { AssignmentService } from '../../../student360/assignment/assignment.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-grade-override-legend',\r\n templateUrl: './grade-override-legend.component.html'\r\n})\r\nexport class GradeOverrideLegendComponent implements AfterViewInit {\r\n\r\n forAssignments: boolean;\r\n overrideCodes: OverrideCode[];\r\n v10 = false;\r\n\r\n constructor(\r\n private assignmentService: AssignmentService,\r\n private loginService: LoginService,\r\n private dialog: MatDialogRef\r\n ) {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.loginService.LoginSettings.V10) {\r\n this.assignmentService.getOverrideCodes().subscribe((codes) => {\r\n this.overrideCodes = (this.forAssignments) ? codes.filter(c => c.ForAssignments) : codes.filter(c => c.ForGradeReporting);\r\n });\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n\r\n isEven(i: any) {\r\n return System.isEven(i);\r\n }\r\n}","export class MenuItem {\r\n\r\n // Properties\r\n itemName: string;\r\n data: any;\r\n\r\n \r\n // Class Functions\r\n constructor(itemName: string, data?: any) {\r\n this.itemName = itemName;\r\n this.data = data; \r\n }\r\n}\r\n","\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
","import { Component, Input, OnInit, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { MenuItem } from './menu-item.model';\r\n\r\n@Component({\r\n selector: 'tyl-general-mat-menu',\r\n templateUrl: 'tyl-general-mat-menu.component.html',\r\n exportAs: 'menuTrigger',\r\n})\r\n\r\nexport class TylGeneralMatMenuComponent implements OnInit {\r\n @ViewChild(MatMenu, { static: true }) menu: MatMenu;\r\n\r\n @Input() topMenuItems: string[];\r\n @Input() disabledTopMenuItems: string[] = [];\r\n @Input() disabledTopMenuItemsBoolean: boolean[] = [];\r\n\r\n @Input() bottomMenuItems: string[];\r\n @Input() disabledBottomMenuItems: string[] = [];\r\n @Input() disabledBottomMenuItemsBoolean: boolean[] = [];\r\n @Input() data: any;\r\n @Input() showSeparator: boolean;\r\n @Output() menuClick = new EventEmitter();\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n topMenuItemClicked(index: number) {\r\n if (!this.isTopMenuItemDisabled(index)) {\r\n\t\t\tconst menuItem = new MenuItem(this.topMenuItems[index], this.data);\r\n\r\n\t\t\tthis.menuClick.next(menuItem);\r\n }\r\n }\r\n\r\n bottomMenuItemClicked(index: number) {\r\n if (!this.isBottomMenuItemDisabled(index)) {\r\n\t\t\tconst menuItem = new MenuItem(this.bottomMenuItems[index], this.data);\r\n\r\n\t\t\tthis.menuClick.next(menuItem);\r\n }\r\n }\r\n\r\n isTopMenuItemDisabled(index: number): boolean {\r\n return this.disabledTopMenuItems.includes(this.topMenuItems[index]) || (this.disabledTopMenuItemsBoolean.length > 0 && this.disabledTopMenuItemsBoolean[index]);\r\n }\r\n\r\n isBottomMenuItemDisabled(index: number): boolean {\r\n return this.disabledBottomMenuItems.includes(this.bottomMenuItems[index]) || (this.disabledBottomMenuItemsBoolean.length > 0 && this.disabledBottomMenuItemsBoolean[index]);\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n {{label | translate}}\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n At least one checkbox must be selected
in order to use these options.\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport {TylGeneralMatMenuComponent} from './tyl-general-mat-menu.component';\r\n\r\n@Component({\r\n selector: 'tyl-mat-menu',\r\n templateUrl: 'tyl-mat-menu.component.html',\r\n exportAs: 'menuTrigger'\r\n})\r\n\r\nexport class TylMatMenuComponent extends TylGeneralMatMenuComponent implements OnInit {\r\n @Input() iconWidth: number;\r\n\r\n @Input() public image: string;\r\n @Input() public disabledImage: string;\r\n @Input() public label: string;\r\n @Input() public showLabel = true;\r\n @Input() public disabled = false;\r\n @Input() public textColor: string;\r\n @Input() public useLink = false;\r\n @Input() public showNoRowSelectedMsg = false;\r\n}\r\n","import { School } from '../../year/school.model';\r\nimport { GradeLevelLookup } from '../../lookup/grade-level-lookup.model';\r\nimport { Year } from '../../year/year.model';\r\n\r\n\r\nexport class SelectedSite extends School {\r\n\tselected: boolean;\r\n\tGradeLevels: GradeLevelLookup[];\r\n\tYears: Year[];\r\n}","\r\n

\r\n\tSchool Search\r\n

\r\n\r\n\r\n\r\n\r\n\t
\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t More \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\t\t\t\r\n\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\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\r\n\t\t\t\t\r\n\t\t\t\t\tSchool\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{site.SchoolName}}\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\t\r\n\t\t\t\t\tType\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{site.SchoolType}}\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{{gl.Description}}\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\t{{year.Description}}\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\r\n\t\t\t\r\n\t\t\t\r\n\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\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, Inject, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { SelectedSite } from './selected-site';\r\nimport { TylerMatTableDataSource } from '../../angular-material/extended.class';\r\nimport { YearService } from '../../year/year.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { UserPermission } from '../../user/user-permission.model';\r\nimport { GradeLevelLookup } from '../../lookup/grade-level-lookup.model';\r\nimport { LookupService } from '../../lookup/lookup.service';\r\nimport { take } from 'rxjs/operators';\r\nimport { detailExpand } from '../../angular-material/mat-animations';\r\nimport { Year } from '../../year/year.model';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n\tselector: 'app-selected-sites-dialog',\r\n\ttemplateUrl: './selected-sites-dialog.component.html',\r\n\tstyleUrls: ['./selected-sites-dialog.component.css'],\r\n\tanimations: [detailExpand],\r\n})\r\nexport class SelectedSitesDialogComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\tschools: SelectedSite[] = [];\r\n\ttypes: string[] = [];\r\n\ttableData = new TylerMatTableDataSource();\r\n\t@ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\tviewOnly = false;\r\n\tsubscriptions: Subscription[] = [];\r\n\tallSelected = false;\r\n\tV9UserPermissions: UserPermission[] = [];\r\n\tincludeGradeLevels = false;\r\n\tincludeYears = false;\r\n\tgradeLevels: GradeLevelLookup[] = [];\r\n\tselectedGradeLevelIds: number[] = [];\r\n\tselectedSites: SelectedSite[] = [];\r\n\tyears: Year[] = [];\r\n\tselectedSiteYearIds: number[] = [];\r\n\tcolumnsToDisplay = ['Selected', 'SchoolName', 'SchoolType'];\r\n\tmoreColumns = ['expandedDetailGradeLevel'];\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\tprivate yearService: YearService,\r\n\t\tprivate loginService: LoginService,\r\n\t\tprivate lookupService: LookupService,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any\r\n\t) { }\r\n\r\n\tngOnDestroy() { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: obtains the schools from the server\r\n\r\n\t\t// Getting the injected data\r\n\r\n\t\tlet schoolIds: number[] = [];\r\n\t\tif (this.data) {\r\n\t\t\t// if (this.data.selectedSites) {\r\n\t\t\t// \tselectedSites = this.data.selectedSites;\r\n\t\t\t// \tschoolIds = selectedSites.split(',');\r\n\t\t\t// \tfor (let i = 0; i < schoolIds.length; i++) {\r\n\t\t\t// \t\tschoolIds[i] = Number.parseInt((schoolIds[i]).trim(), 10);\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t\t// if (this.data.schoolIds) {\r\n\t\t\t// \tschoolIds = this.data.schoolIds;\r\n\t\t\t// \tfor (let i = 0; i < schoolIds.length; i++) {\r\n\t\t\t// \t\tif (i > 0) {\r\n\t\t\t// \t\t\tselectedSites += ',';\r\n\t\t\t// \t\t}\r\n\t\t\t// \t\tselectedSites += schoolIds;\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t\tif (this.data.selectedSites) {\r\n\t\t\t\tthis.selectedSites = this.data.selectedSites;\r\n\t\t\t\tschoolIds = this.selectedSites.map(o => o.Id);\r\n\t\t\t}\r\n\t\t\tthis.viewOnly = this.data.viewOnly;\r\n\t\t\tif (this.data.includeGradeLevels) {\r\n\t\t\t\tthis.columnsToDisplay = ['More', 'Selected', 'SchoolName', 'SchoolType'];\r\n\t\t\t\tthis.moreColumns = ['expandedDetailGradeLevel'];\r\n\t\t\t\tthis.includeGradeLevels = this.data.includeGradeLevels;\r\n\t\t\t\tthis.getGradeLevels();\r\n\t\t\t\tif (this.data.gradeLevelIds && this.data.gradeLevelIds.length > 0) {\r\n\t\t\t\t\tthis.selectedGradeLevelIds = this.data.gradeLevelIds;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (this.data.includeYears) {\r\n\t\t\t\tthis.columnsToDisplay = ['More', 'Selected', 'SchoolName', 'SchoolType'];\r\n\t\t\t\tthis.moreColumns = ['expandedDetailYear'];\r\n\t\t\t\tthis.includeYears = this.data.includeYears;\r\n\t\t\t\tif (this.data.siteYearIds && this.data.siteYearIds.length > 0) {\r\n\t\t\t\t\tthis.selectedSiteYearIds = this.data.siteYearIds;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// Getting the possible selected sites\r\n\t\tthis.schools = [];\r\n\t\tthis.types = [];\r\n\t\tif (this.data.availableSchools) {\r\n\t\t\tif (this.loginService.LoginSettings.V10 || this.data.availableSchools.length > 0 || this.data.maintainStudentsDistrictWide) {\r\n\t\t\t\tthis.subscriptions.push(this.yearService.getSchoolsBySchoolIds(this.data.availableSchools).subscribe(schools => {\r\n\t\t\t\t\tschools.forEach(school => {\r\n\t\t\t\t\t\tconst selectedSite = new SelectedSite();\r\n\t\t\t\t\t\tselectedSite.Id = school.Id;\r\n\t\t\t\t\t\tselectedSite.SchoolName = school.SchoolName;\r\n\t\t\t\t\t\tselectedSite.SchoolCode = school.SchoolCode;\r\n\t\t\t\t\t\tselectedSite.SchoolDescription = '';\r\n\t\t\t\t\t\tselectedSite.SchoolType = school.SchoolType;\r\n\t\t\t\t\t\tthis.schools.push(selectedSite);\r\n\r\n\t\t\t\t\t\tif (!this.types.includes(school.SchoolType)) {\r\n\t\t\t\t\t\t\tthis.types.push(school.SchoolType);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Getting the initially selected schools\r\n\t\t\t\t\t\tif (schoolIds.includes(school.Id)) {\r\n\t\t\t\t\t\t\tselectedSite.selected = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (this.includeGradeLevels) {\r\n\t\t\t\t\t\tthis.getGradeLevels();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.setGridData();\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconst schools = _.sortBy(this.yearService.schools, ['SchoolCode', 'SchoolName']);\r\n\t\t\t\tschools.forEach(obj => {\r\n\t\t\t\t\tconst school = new SelectedSite();\r\n\t\t\t\t\tschool.Id = obj.Id;\r\n\t\t\t\t\tschool.SchoolName = obj.SchoolName;\r\n\t\t\t\t\tschool.SchoolCode = obj.SchoolCode;\r\n\t\t\t\t\tschool.SchoolDescription = obj.SchoolDescription;\r\n\t\t\t\t\tschool.SchoolType = obj.SchoolType;\r\n\t\t\t\t\tthis.schools.push(school);\r\n\r\n\t\t\t\t\tif (!this.types.includes(school.SchoolType)) {\r\n\t\t\t\t\t\tthis.types.push(school.SchoolType);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Getting the initially selected schools\r\n\t\t\t\t\tif (schoolIds.includes(school.Id)) {\r\n\t\t\t\t\t\tschool.selected = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (this.includeGradeLevels) {\r\n\t\t\t\tthis.getGradeLevels();\r\n\t\t\t}\r\n\t\t\tthis.setGridData();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.loginService.LoginSettings.V10) {\r\n\t\t\t\tthis.yearService.years.filter(o => o.Description == this.yearService.defaultYear.Description).forEach(obj => {\r\n\t\t\t\t\tconst school = new SelectedSite();\r\n\t\t\t\t\tschool.Id = obj.SchoolID;\r\n\t\t\t\t\tschool.SchoolName = obj.SchoolName;\r\n\t\t\t\t\tschool.SchoolCode = obj.SchoolCode;\r\n\t\t\t\t\tschool.SchoolDescription = '';\r\n\t\t\t\t\tschool.SchoolType = obj.SchoolType;\r\n\t\t\t\t\tthis.schools.push(school);\r\n\r\n\t\t\t\t\tif (!this.types.includes(school.SchoolType)) {\r\n\t\t\t\t\t\tthis.types.push(school.SchoolType);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Getting the initially selected schools\r\n\t\t\t\t\tif (schoolIds.includes(school.Id)) {\r\n\t\t\t\t\t\tschool.selected = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (this.includeYears) {\r\n\t\t\t\t\tthis.yearService.yearsForC360.forEach(y => {\r\n\t\t\t\t\t\tconst obj = _.cloneDeep(y);\r\n\t\t\t\t\t\tlet school = this.schools.find(o => o.Id == obj.SchoolID);\r\n\t\t\t\t\t\tif (!school) {\r\n\t\t\t\t\t\t\tschool = new SelectedSite();\r\n\t\t\t\t\t\t\tschool.Id = obj.SchoolID;\r\n\t\t\t\t\t\t\tschool.SchoolName = obj.SchoolName;\r\n\t\t\t\t\t\t\tschool.SchoolCode = obj.SchoolCode;\r\n\t\t\t\t\t\t\tschool.SchoolDescription = '';\r\n\t\t\t\t\t\t\tschool.SchoolType = obj.SchoolType;\r\n\t\t\t\t\t\t\tthis.schools.push(school);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!this.types.includes(school.SchoolType)) {\r\n\t\t\t\t\t\t\tthis.types.push(school.SchoolType);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Getting the initially selected schools\r\n\t\t\t\t\t\tif (schoolIds.includes(school.Id)) {\r\n\t\t\t\t\t\t\tschool.selected = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Get selected years\r\n\t\t\t\t\t\tif (!school.Years) {\r\n\t\t\t\t\t\t\tschool.Years = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tschool.Years.push(obj);\r\n\r\n\t\t\t\t\t\tif (this.selectedSiteYearIds.includes(obj.SiteYearId)) {\r\n\t\t\t\t\t\t\tobj.selected = true;\r\n\t\t\t\t\t\t}\r\n\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\tthis.yearService.yearsForC360.filter(o => o.Description == this.yearService.defaultYear.Description).forEach(obj => {\r\n\t\t\t\t\t\tconst school = new SelectedSite();\r\n\t\t\t\t\t\tschool.Id = obj.SchoolID;\r\n\t\t\t\t\t\tschool.SchoolName = obj.SchoolName;\r\n\t\t\t\t\t\tschool.SchoolCode = obj.SchoolCode;\r\n\t\t\t\t\t\tschool.SchoolDescription = '';\r\n\t\t\t\t\t\tschool.SchoolType = obj.SchoolType;\r\n\t\t\t\t\t\tthis.schools.push(school);\r\n\r\n\t\t\t\t\t\tif (!this.types.includes(school.SchoolType)) {\r\n\t\t\t\t\t\t\tthis.types.push(school.SchoolType);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Getting the initially selected schools\r\n\t\t\t\t\t\tif (schoolIds.includes(school.Id)) {\r\n\t\t\t\t\t\t\tschool.selected = 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\t\tthis.setGridData();\r\n\t\t}\r\n\t}\r\n\r\n\tyearSelected(school: SelectedSite) {\r\n\t\tif (school.selected == undefined || school.selected == false) {\r\n\t\t\tschool.selected = true;\r\n\t\t}\r\n\t}\r\n\r\n\tgradeLevelSelected(school: SelectedSite) {\r\n\t\tif (school.selected == undefined || school.selected == false) {\r\n\t\t\tschool.selected = true;\r\n\t\t}\r\n\t}\r\n\r\n\tgetGradeLevels() {\r\n\t\tif (this.lookupService.gradeLevelLookups && this.lookupService.gradeLevelLookups.length > 0) {\r\n\t\t\tthis.gradeLevels = _.cloneDeep(this.lookupService.gradeLevelLookups);\r\n\t\t\tthis.updateSchoolGradeLevels();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.lookupService.getGradeLevelsLookup().pipe(take(1)).subscribe(gradelevels => {\r\n\t\t\t\tthis.gradeLevels = gradelevels;\r\n\t\t\t\tthis.lookupService.gradeLevelLookups = _.cloneDeep(gradelevels);\r\n\t\t\t\tthis.updateSchoolGradeLevels();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tupdateSchoolGradeLevels() {\r\n\t\tif (this.includeGradeLevels) {\r\n\t\t\tif (this.gradeLevels && this.gradeLevels.length > 0 && this.schools && this.schools.length > 0) {\r\n\t\t\t\tthis.schools.forEach(school => {\r\n\t\t\t\t\tif (this.loginService.LoginSettings.V10) {\r\n\t\t\t\t\t\tschool.GradeLevels = this.gradeLevels.filter(o => o.SiteID == school.Id);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tschool.GradeLevels = [];\r\n\t\t\t\t\t\tthis.gradeLevels.forEach(gl => {\r\n\t\t\t\t\t\t\tif (gl.SiteIDs.includes(school.Id)) {\r\n\t\t\t\t\t\t\t\tschool.GradeLevels.push(_.cloneDeep(gl));\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\tconst selectedSchool = this.selectedSites.find(o => o.Id == school.Id);\r\n\t\t\t\t\tif (selectedSchool) {\r\n\t\t\t\t\t\tschool.GradeLevels.forEach(gl => {\r\n\t\t\t\t\t\t\tif (selectedSchool.GradeLevels && selectedSchool.GradeLevels.length > 0) {\r\n\t\t\t\t\t\t\t\tif (selectedSchool.GradeLevels.find(o => o.Id == gl.Id) != null) {\r\n\t\t\t\t\t\t\t\t\tgl.selected = 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\telse if (this.loginService.LoginSettings.V10) { // if no grade levels are passed in, we assume all grade levels are selected. It's not valid to have a school selected with no grade levels.\r\n\t\t\t\t\t\t\t\tgl.selected = 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\t\t}\r\n\t}\r\n\r\n\tsetGridData() {\r\n\t\t// Setting the table data to the selected sites\r\n\t\tthis.tableData.data = this.schools.sort(function (a, b) {\r\n\t\t\tconst siteA = a.SchoolName.toLowerCase();\r\n\t\t\tconst siteB = b.SchoolName.toLowerCase();\r\n\r\n\t\t\tlet comparison = 0;\r\n\r\n\t\t\tif (siteA > siteB) {\r\n\t\t\t\tcomparison = 1;\r\n\t\t\t}\r\n\t\t\telse if (siteA < siteB) {\r\n\t\t\t\tcomparison = -1;\r\n\t\t\t}\r\n\r\n\t\t\treturn comparison;\r\n\t\t});\r\n\t\tthis.tableData.sort = this.sort;\r\n\t}\r\n\r\n\tsave() {\r\n\t\t// PRE: the save button is clicked\r\n\t\t// POST: returns the selected sites and grade Levels\r\n\t\tthis.selectedSites = this.schools.filter(o => o.selected);\r\n\t\tif (this.includeGradeLevels) {\r\n\t\t\tthis.selectedSites.forEach(o => {\r\n\t\t\t\tconst tempGradeLevels = [];\r\n\t\t\t\to.GradeLevels.forEach(gl => {\r\n\t\t\t\t\tif (gl.selected) {\r\n\t\t\t\t\t\tgl.SiteID = o.Id;\r\n\t\t\t\t\t\ttempGradeLevels.push(gl);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\to.GradeLevels = tempGradeLevels;\r\n\t\t\t\t// o.GradeLevels = o.GradeLevels.filter(g => g.selected);\r\n\t\t\t});\r\n\t\t}\r\n\t\telse if (this.includeYears) {\r\n\t\t\tthis.selectedSites.forEach(o => {\r\n\t\t\t\to.Years = o.Years.filter(y => y.selected);\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.dialogBox.close(this.selectedSites);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\t// PRE: the cancel button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\tselectAll(type: string) {\r\n\t\t// PRE: a select all link is clicked\r\n\t\t// POST: selects all the schools of the specified type\r\n\r\n\t\t// Checking if we can do this operation\r\n\t\tif (this.viewOnly) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Selecting all schools\r\n\t\tthis.schools.forEach(school => {\r\n\t\t\tif (school.SchoolType == type) {\r\n\t\t\t\tschool.selected = true;\r\n\t\t\t\tif (this.includeGradeLevels) {\r\n\t\t\t\t\tschool.GradeLevels.forEach(gl => {\r\n\t\t\t\t\t\tgl.selected = true;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.includeYears) {\r\n\t\t\t\t\tschool.Years.forEach(y => {\r\n\t\t\t\t\t\ty.selected = true;\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\tcheckAll() {\r\n\t\tthis.allSelected = !this.allSelected;\r\n\t\tthis.schools.forEach(school => {\r\n\t\t\tschool.selected = this.allSelected;\r\n\t\t\tif (this.includeGradeLevels) {\r\n\t\t\t\tschool.GradeLevels.forEach(gl => {\r\n\t\t\t\t\tgl.selected = this.allSelected;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse if (this.includeYears) {\r\n\t\t\t\tschool.Years.forEach(y => {\r\n\t\t\t\t\ty.selected = this.allSelected;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tschoolSelected(school: SelectedSite) {\r\n\t\tschool.selected = !school.selected;\r\n\t\tif (!school.selected) {\r\n\t\t\tthis.allSelected = false;\r\n\t\t\tif (this.includeGradeLevels) {\r\n\t\t\t\tschool.GradeLevels.forEach(gl => {\r\n\t\t\t\t\tgl.selected = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse if (this.includeYears) {\r\n\t\t\t\tschool.Years.forEach(y => {\r\n\t\t\t\t\ty.selected = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.includeGradeLevels) {\r\n\t\t\t\tschool.GradeLevels.forEach(gl => {\r\n\t\t\t\t\tgl.selected = true;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse if (this.includeYears) {\r\n\t\t\t\tschool.Years.forEach(y => {\r\n\t\t\t\t\ty.selected = true;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\texpandAllClick() {\r\n\r\n\t}\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ dataItem.studentSelectionName }}\r\n \r\n Withdrawn {{ dataItem.WithdrawnDate|date:'MM/dd/yy' }}\r\n \r\n \r\n Added {{ dataItem.AddedOn|date:'MM/dd/yy' }}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
{{studentIndex + 1}} of\r\n {{students.length}}
\r\n
\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, OnChanges, ViewChild } from '@angular/core';\r\nimport { StudentService } from '../../student/student.service';\r\nimport { Student } from '../../student/student.model';\r\nimport { UserService } from '../../user/user.service';\r\nimport { GeneralPreferences } from '../../user-preferences/general-preferences.model';\r\nimport { UserPreferencesService } from '../../user-preferences/user-preferences.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { RegistrationStudent } from '../../../admin360/registration/models/registration-student.model';\r\nimport * as moment from 'moment';\r\nimport { DropDownListComponent } from '@progress/kendo-angular-dropdowns';\r\n\r\n@Component({\r\n selector: 'studentSelection',\r\n templateUrl: './student-selection.component.html',\r\n styleUrls: ['./student-selection.component.css']\r\n})\r\nexport class StudentSelectionComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n // Interface Properties\r\n @Input() forStudentSearch: boolean;\r\n @Input() includeAllOption: boolean;\r\n @Input() studentIndex = 0;\r\n @Input() showActionMenu = false;\r\n @Input() overrideSort: boolean;\r\n @Input() overrideStudent: boolean;\r\n @Input() showNumber: boolean;\r\n @Input() showEnrollmentDates = false;\r\n @Output() studentChanged: EventEmitter = new EventEmitter();\r\n @ViewChild('dropdownlistRef') public dropdownlist: DropDownListComponent;\r\n // Students\r\n private _students: Student[];\r\n @Input() selectedStudent: Student | RegistrationStudent;\r\n previousSelectedStudent: Student;\r\n\r\n // Other\r\n subscriptions: Subscription[] = [];\r\n generalPreferences: GeneralPreferences;\r\n studentdropDownWidth = 200;\r\n\r\n public virtual: any = {\r\n itemHeight: 30,\r\n pageSize: 15\r\n };\r\n\r\n // Class Functions\r\n constructor(\r\n private studentService: StudentService,\r\n private userService: UserService,\r\n private userPreferencesService: UserPreferencesService,\r\n ) {\r\n }\r\n\r\n get userType(): number {\r\n return this.userService.currentUser.UserType;\r\n }\r\n\r\n get students(): Student[] {\r\n return this._students;\r\n }\r\n\r\n @Input() set students(value: Student[]) {\r\n this._students = JSON.parse(JSON.stringify(value));\r\n this.getStudentLabels();\r\n if (this.userType == 1 && this.generalPreferences && !this.overrideSort) {\r\n this.sortStudentsByPreferences();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n setTimeout(() => {\r\n if (this.selectedStudent) {\r\n const student = this.students.filter(o => o.Id == this.selectedStudent.Id)[0];\r\n if (student) {\r\n this.studentIndex = this.students.indexOf(student);\r\n }\r\n else {\r\n this.studentIndex = 0;\r\n }\r\n }\r\n }, 100);\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n\r\n // Setting initial values\r\n if (!this.selectedStudent) {\r\n this.selectedStudent = this.students[this.studentIndex];\r\n }\r\n\r\n if (this.userType == 1) {\r\n this.generalPreferences = this.userPreferencesService.generalPreferences;\r\n // Sorting students to ensure preferences\r\n if (!this.overrideSort) {\r\n this.sortStudentsByPreferences();\r\n }\r\n if (!this.generalPreferences.ShowStudentNumber) {\r\n this.showNumber = false;\r\n }\r\n\r\n // Subscribing to preference changes to resort students\r\n this.subscriptions.push(\r\n this.userPreferencesService.observablegeneralPreferencesStream$.subscribe(preferences => {\r\n this.generalPreferences = preferences;\r\n if (!this.overrideSort) {\r\n this.sortStudentsByPreferences();\r\n }\r\n })\r\n );\r\n }\r\n\r\n // Responding to selected student changes unless we are overriding\r\n if (!this.overrideStudent) {\r\n this.subscriptions.push(\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n if (this.studentService.selectedStudent) {\r\n const indexOfSelectedStudent = this.students.findIndex(student => student.Id == this.studentService.selectedStudent.Id);\r\n if (indexOfSelectedStudent >= 0) {\r\n this.studentIndex = indexOfSelectedStudent;\r\n this.selectedStudent = this.students[indexOfSelectedStudent];\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n // Modifying options\r\n if (this.includeAllOption && this.students.filter(student => student.Id == -1).length == 0) {\r\n const allStudent = new Student;\r\n allStudent.Id = -1;\r\n this.students.unshift(allStudent);\r\n const indexOfSelectedStudent = this.students.findIndex(student => student.Id == this.selectedStudent.Id);\r\n if (indexOfSelectedStudent >= 0) {\r\n this.studentIndex = indexOfSelectedStudent;\r\n this.selectedStudent = this.students[indexOfSelectedStudent];\r\n }\r\n }\r\n\r\n this.userPreferencesService.observablegeneralPreferencesStream$.subscribe(preferences => {\r\n this.getStudentLabels();\r\n });\r\n this.getStudentLabels();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // POST: unsubscribing to all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n getStudentLabels() {\r\n let studentSelectionName = [];\r\n for (const student of this.students) {\r\n let studentLabel = '';\r\n if (student.Id == -1 && this.userType == 1) {\r\n studentLabel = '(All)';\r\n }\r\n else if (student.Id > 0 && this.userType == 1) {\r\n if (this.userService.userType == 1) {\r\n studentLabel = this.studentService.formatStudentName(student.FirstName, student.MiddleName, student.LastName, student.NickName);\r\n }\r\n else {\r\n studentLabel = student.FirstName + ' ' + student.LastName;\r\n }\r\n }\r\n else if (student.Id > 0 && this.userType == 2) {\r\n studentLabel = student.FirstName + ' ' + student.LastName;\r\n }\r\n\r\n if (student.Id > 0 && this.showNumber) {\r\n studentLabel = studentLabel + ' (#' + student.StudentNumber + ')';\r\n }\r\n\r\n const suffix = this.getStudentSuffix(student);\r\n studentLabel = (suffix.length > 0) ? studentLabel + ' ' + suffix : studentLabel;\r\n student.studentSelectionName = studentLabel;\r\n if (student.WithdrawnDate != null) {\r\n const label = student.studentSelectionName + ' Withdrawn ' + moment(student.WithdrawnDate, 'YYYY/MM/DD').format('MM/DD/YY').trim();\r\n studentSelectionName.push(label);\r\n } else if (student.AddedOn != null) {\r\n const label = student.studentSelectionName + ' Added ' + moment(student.AddedOn, 'YYYY/MM/DD').format('MM/DD/YY').trim();\r\n studentSelectionName.push(label);\r\n }\r\n else {\r\n studentSelectionName.push(student.studentSelectionName);\r\n }\r\n\r\n }\r\n if (studentSelectionName.length > 0) {\r\n const longestStudentName = (this.longestStudentName(studentSelectionName)[0].trim()).length;\r\n if (longestStudentName != null) {\r\n // calculate: string convert into pixel\r\n this.studentdropDownWidth = parseInt(longestStudentName, 10) * 8;\r\n }\r\n }\r\n }\r\n\r\n firstStudent() {\r\n // PRE: the first student button is clicked\r\n // POST: navigates to the very first student\r\n this.previousSelectedStudent = JSON.parse(JSON.stringify(this.selectedStudent));\r\n this.studentIndex = 0;\r\n this.selectedStudent = this.students[this.studentIndex];\r\n this.changeStudent(this.selectedStudent);\r\n }\r\n\r\n previousStudent() {\r\n // PRE: the previous student button is clicked\r\n // POST: navigates to the previous student\r\n this.previousSelectedStudent = JSON.parse(JSON.stringify(this.selectedStudent));\r\n this.studentIndex = this.studentIndex - 1;\r\n this.selectedStudent = this.students[this.studentIndex];\r\n this.changeStudent(this.selectedStudent);\r\n }\r\n\r\n nextStudent() {\r\n // PRE: the next student button is clicked\r\n // POST: navigates to the next student\r\n this.previousSelectedStudent = JSON.parse(JSON.stringify(this.selectedStudent));\r\n this.studentIndex = this.studentIndex + 1;\r\n this.selectedStudent = this.students[this.studentIndex];\r\n this.changeStudent(this.selectedStudent);\r\n }\r\n\r\n lastStudent() {\r\n // PRE: the last student button is clicked\r\n // POST: navigates to the very last student\r\n this.previousSelectedStudent = JSON.parse(JSON.stringify(this.selectedStudent));\r\n this.studentIndex = this.students.length - 1;\r\n this.selectedStudent = this.students[this.studentIndex];\r\n this.changeStudent(this.selectedStudent);\r\n }\r\n\r\n changeStudent(student, dropDown?: boolean) {\r\n if (dropDown) {\r\n this.studentIndex = this.students.indexOf(student);\r\n }\r\n if (this.forStudentSearch && !this.overrideStudent) {\r\n this.studentService.updateSelectedStudent(student.Id);\r\n }\r\n this.studentChanged.emit(student.Id);\r\n }\r\n\r\n // Methods\r\n changeStudentById(studentId) {\r\n // POST: changes the student by the ID\r\n for (let i = 0; i < this.students.length; i++) {\r\n if (this.students[i].Id == studentId) {\r\n this.studentIndex = i;\r\n }\r\n }\r\n this.selectedStudent = this.students[this.studentIndex];\r\n // this.studentService.selectedStudent.Id = studentId;\r\n this.changeStudent(this.selectedStudent);\r\n }\r\n\r\n sortStudentsByPreferences() {\r\n // PRE: the general preferences are set\r\n // POST: sorts the students by the preferences\r\n\r\n // Returning if we have no preferences and logging it\r\n if (!this.generalPreferences) {\r\n console.log('No preferences');\r\n return;\r\n }\r\n\r\n // Performing sort\r\n switch (this.generalPreferences.StudentNameFormat.charAt(0)) {\r\n case 'F':\r\n this.students.sort((a: Student, b: Student) => {\r\n const firstNameComparison = a.FirstName.localeCompare(b.FirstName);\r\n if (firstNameComparison == 0) {\r\n return a.LastName.localeCompare(b.LastName);\r\n } else {\r\n return firstNameComparison;\r\n }\r\n });\r\n break;\r\n case 'L':\r\n this.students.sort((a: Student, b: Student) => {\r\n const lastNameComparison = a.LastName.localeCompare(b.LastName);\r\n if (lastNameComparison == 0) {\r\n return a.FirstName.localeCompare(b.FirstName);\r\n } else {\r\n return lastNameComparison;\r\n }\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n getStudentSuffix(student: Student): string {\r\n const suffix = student.Suffix;\r\n if (suffix != null && suffix.length > 0) {\r\n const numeralMatch = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$|^\\d+$/;\r\n if (suffix.match(numeralMatch)) {\r\n return ' ' + suffix;\r\n }\r\n else {\r\n return ', ' + suffix;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n disableToggle(action) {\r\n // PRE: action is the name of the button\r\n // POST: determines if the button should be active or inactve\r\n if (this.students != undefined) {\r\n if ((action == 'first' || action == 'previous') && this.studentIndex == 0) {\r\n return true;\r\n }\r\n else if ((action == 'last' || action == 'next') && this.studentIndex == this.students.length - 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n // Dynamically Adjust Student dropDown List Width\r\n longestStudentName(student) {\r\n let max = student[0].length;\r\n student.map(v => max = Math.max(max, v.length));\r\n const result = student.filter(v => v.length == max);\r\n return result;\r\n }\r\n open() {\r\n this.dropdownlist.popupSettings.width = (this.studentdropDownWidth).toString() + 'px';\r\n }\r\n}\r\n","import { EventEmitter, Input, OnDestroy, OnInit, Output, OnChanges, ViewChild, ChangeDetectorRef, Directive } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport {Subscription} from 'rxjs';\r\n\r\n/**\r\n * This component establishes tabs for a page. To use it, give it the following parameters\r\n * @input tabNames is an array of strings that are the names for each tab\r\n * @input startingIndex is the starting index of the tabs. Defaults to 0.\r\n * @input setIndex is an event emitter the emits the index you want to select when you want to. Defaults to null.\r\n * @input height is the height of the tabs. Defaults to 48.\r\n * @input isChildTabs: if true, sets the styling to child tab styling\r\n * @input isGrandchildTab: if true, sets the styling to grandchild tab styling\r\n * @input disabledTabs: the names of tabs that display as disabled\r\n *\r\n * It provides you with the following\r\n * @output tabChange is a eventEmitter that gives you a string containing the name of the currently selected tab\r\n * @output selectionsChangeIndex is an eventEmitter of a number that emits the selected index upon selection\r\n */\r\n@Directive()\r\nexport class Tabs implements OnInit, OnDestroy, OnChanges {\r\n\r\n\t// Properties\r\n\t@Input() tabNames: string[];\r\n\t@Input() startingIndex = 0;\r\n\t@Input() setIndex: EventEmitter;\r\n\t@Input() noMargin: boolean; // deprecated\r\n\t@Input() forGradebook: boolean; // deprecated\r\n\t@Input() isChildTabs: boolean;\r\n\t@Input() isGrandchildTab: boolean;\r\n @Input() disabledTabs: string[];\r\n\t@Input() height = 48;\r\n\t@Input() locked = false;\r\n\t@Output() selectionsChange: EventEmitter = new EventEmitter(); // deprecated\r\n\t@Output() selectionsChangeIndex: EventEmitter = new EventEmitter();\r\n\t@Output() tabChange: EventEmitter = new EventEmitter();\r\n selected = new FormControl(0);\r\n\ttabLabels: string[] = [];\r\n\tnoEvent = false;\r\n\t@ViewChild(MatTabGroup, { static: true }) tabs: MatTabGroup;\r\n\tsubscriptions: Subscription[] = [];\r\n\tchangeDetector: ChangeDetectorRef;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tchangeDetector: ChangeDetectorRef\r\n\t) {\r\n\t\tthis.changeDetector = changeDetector;\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n // POST: initializes the component\r\n\r\n // Setting starting values\r\n\t\tif (this.startingIndex >= 0) {\r\n\t\t\tthis.selected.setValue(this.startingIndex);\r\n }\r\n\r\n // Responding to a selected index\r\n if (this.setIndex) {\r\n \tthis.subscriptions.push(\r\n\t\t\t\tthis.setIndex.subscribe(index => {\r\n\t\t\t\t\tthis.selected.setValue(index);\r\n\t\t\t\t\tthis.changeDetector.detectChanges();\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Sets the tab names\r\n if (this.tabNames) {\r\n this.tabLabels = [];\r\n this.tabNames.forEach(tabName => {\r\n this.tabLabels.push(tabName.toLowerCase());\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n // POST: resets the tab labels on changes\r\n if (this.tabNames) {\r\n this.tabLabels = [];\r\n this.tabNames.forEach(tabName => {\r\n this.tabLabels.push(tabName.toLowerCase());\r\n });\r\n }\r\n }\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subscriptions.forEach(subscription => {\r\n\t\t\tsubscription.unsubscribe();\r\n\t\t});\r\n\t}\r\n\r\n\tselectedIndexChange(index: number) {\r\n\t\tif (this.noEvent) {\r\n\t\t\tthis.noEvent = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selected.setValue(index);\r\n\t\t\tthis.selectionsChangeIndex.emit(index);\r\n\t\t\tthis.tabChange.emit(this.tabNames[index]);\r\n\t\t}\r\n\t}\r\n\r\n\tselectTabByName(tabName: string) {\r\n\t\tconst i = this.tabNames.findIndex(o => o == tabName);\r\n\t\tif (i >= 0) {\r\n\t\t\tthis.selected.setValue(i);\r\n\t\t}\r\n\t}\r\n\r\n\tclickTabWithoutEvents(tabName: string) {\r\n\t\tlet index = 0;\r\n\t\tfor (const tab of this.tabNames) {\r\n\t\t\tif (tab == tabName) {\r\n\t\t\t\tthis.noEvent = true;\r\n\t\t\t\tthis.selected.setValue(index);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tindex = index + 1;\r\n\t\t}\r\n\t}\r\n\r\n\tcheckDisabled(tab: string) {\r\n\t\tif (this.disabledTabs != null && this.disabledTabs.length > 0) {\r\n\t\t\tif (this.disabledTabs.filter(function(t) {return t.toLowerCase() == tab.toLowerCase(); }).length > 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}","\r\n \r\n\r\n \r\n","\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n} from '@angular/core';\r\nimport { Tabs } from './tabs';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\n\r\n/**\r\n * This component inherits all of its properties from Tabs\r\n * This is for the light styling of the component\r\n */\r\n@AutoUnsubscribe()\r\n@Component({\r\n\tselector: 'tabs',\r\n\ttemplateUrl: './tabs.component.html',\r\n\tstyleUrls: ['./tabs.component.css']\r\n})\r\nexport class TabsComponent extends Tabs {\r\n\tconstructor(\r\n\t\tchangeDetector: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(changeDetector);\r\n\t}\r\n}","\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n","import {Component, Input, EventEmitter, Output, OnDestroy, ViewChild, ElementRef} from '@angular/core';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\n\r\n/**\r\n * This component encapsulated the MatCheckbox with Tyler styling\r\n * This component supports content projection in exactly the same way as MatCheckbox.\r\n * In addition, a string that is projected into MatCheckbox will automatcally be translated.\r\n *\r\n * @input labelPosition: determines where the label appears, 'before' or 'after'. Defaults to 'after'.\r\n * @input required: whether the checkbox is required. Defaults to false.\r\n * @input name: the name of the checkbox (for forms). Defaults to 'tyl-checkbox-#'.\r\n * @input id: the id of the checkbox. Defaults to 'tyl-checkbox-#'.\r\n * @input indeterminate: the indeterminate state of the checkbox. Defaults to false.\r\n * @input disabled: whether the control is disabled. Defaults to false.\r\n * @input disableRipple: whether the control ripples. Defaults to false.\r\n * @input color: the color theme to apply. Defaults to 'accent'.\r\n * @input checked: the varibale the checkbox binds to.\r\n * @output change: this event emitter emits the boolean for its state when it changes. (used for Angular similarity)\r\n * @output checkedChange: this event emitter emits the boolean for its state when it changes. (custom for two-way binding)\r\n */\r\n@Component({\r\n selector: 'tyl-checkbox',\r\n templateUrl: './tyl-checkbox.component.html',\r\n styleUrls: [\r\n './tyl-checkbox.component.css'\r\n ]\r\n})\r\nexport class TylCheckboxComponent implements OnDestroy {\r\n\r\n // Static Properties\r\n static nameIterator = 0;\r\n static idIterator = 0;\r\n\r\n // Interface Properties for MatCheckbox\r\n @Input() labelPosition = 'after';\r\n @Input() required = false;\r\n @Input() name = 'tyl-checkbox-' + TylCheckboxComponent.nameIterator++;\r\n @Input() indeterminate = false;\r\n @Input() id = 'tyl-checkbox-' + TylCheckboxComponent.idIterator++;\r\n @Input() disabled = false;\r\n @Input() disableRipple = false;\r\n @Input() color = 'accent';\r\n @Input() value = true;\r\n @Output() change = new EventEmitter();\r\n\r\n // Custom Interface Properties\r\n private _checked = false;\r\n @Output() checkedChange = new EventEmitter();\r\n\r\n // Local Properties\r\n @ViewChild('innerCheckbox', { read: MatCheckbox, static: true }) innerCheckbox: MatCheckbox;\r\n @ViewChild('contentRef', { read: ElementRef, static: true }) contentRef: ElementRef;\r\n\r\n // Class Functions\r\n get checked(): boolean {\r\n return this._checked;\r\n }\r\n\r\n @Input() set checked(value: boolean) {\r\n this._checked = value;\r\n this.checkedChange.emit(this._checked);\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: subtracts from the iterators the values of this control\r\n TylCheckboxComponent.nameIterator -= 1;\r\n TylCheckboxComponent.idIterator -= 1;\r\n }\r\n\r\n // Event Functions\r\n\r\n // Methods\r\n public focus() {\r\n this.innerCheckbox.focus('keyboard');\r\n }\r\n\r\n public hasContent() {\r\n return !!this.contentRef.nativeElement.innerHTML;\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n {{label | translate}} \r\n {{label | translate}}  \r\n \r\n \r\n {{label | translate}} \r\n {{label | translate}}  \r\n \r\n \r\n {{hint | translate}}\r\n \r\n \r\n {{hint | translate}}\r\n \r\n {{errorMessage}}\r\n
\r\n \r\n
\r\n
\r\n \r\n\t\t\r\n\t\t\t\r\n\t\t\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n","import {\r\n Component,\r\n Input,\r\n ContentChild,\r\n ViewChild,\r\n OnInit,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n HostListener\r\n} from '@angular/core';\r\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n/**\r\n * This component encapsulates the form field with Tyler styling.\r\n * This component uses content projection and accepts the following elements between its tags:\r\n * matInput\r\n * \r\n * matSuffix\r\n * matPrefix\r\n *\r\n * @input color: the color theme for the field. Defaults to 'primary'.\r\n * @input floatLabel: whether the label should float. Defaults to 'auto'.\r\n * @input hideRequiredMarker: whether the required * should be hidden. Defaults to false.\r\n * @input hint: the hint for the field.\r\n * @input hintAlign: where the hint should be aligned. Defaults to 'end'.\r\n * @input hintColor: the color of the hint text. Defaults to null.\r\n * @input label: the label for the field. Defaults to null.\r\n * @input errorMessage: the error message that displays when the control is invalidated. Defaults to 'You must enter a valid value'.\r\n * @input fullWidth: sets the width of the mat-form-field to 100%. Defaults to false.\r\n * @input clearable: if true, allows the input to be cleared by clicking on an X while hovering\r\n * @input preventCollapse: if true, prevents the space from collapsing to its smallest possible spacing. Defaults to false.\r\n *\r\n * NOTES:\r\n *\r\n * When you're using errors, use can the control (matInput or ) to determine when the error should show.\r\n * For more information, look at the Angular documentation for Material Input and ErrorStateMatcher\r\n *\r\n * You CANNOT use and between the tags because MatFormField does not natively support content projection.\r\n * As such, you MUST use the label and hint variables to achieve the same effect.\r\n */\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'tyl-form-field',\r\n templateUrl: './tyl-form-field.component.html',\r\n styleUrls: [\r\n './tyl-form-field.component.css'\r\n ]\r\n})\r\nexport class TylFormFieldComponent implements OnInit, OnDestroy {\r\n\r\n // Interface Properties for MatFormField\r\n @Input() floatLabel = 'auto';\r\n @Input() hideRequiredMarker = false;\r\n @Input() hintLabel: string;\r\n @Input() hintColor = '';\r\n @Input() clearable = false;\r\n @Input() preventCollapse = false;\r\n @Input() required = false;\r\n @Input() showErrorMessage = true;\r\n @Input() postLabelSpace = false;\r\n\r\n // Custom Interface Properties\r\n @Input() label: string;\r\n // @Input() showError: boolean;\r\n @Input() fullWidth = false;\r\n\r\n // Local Properites\r\n private _color = 'primary';\r\n private _control: MatFormFieldControl;\r\n private _matFormField: MatFormField;\r\n private _hint: string;\r\n private _hintAlign = 'end';\r\n private _errorMessage = 'Required field';\r\n private _showError: boolean;\r\n hovering = false;\r\n marginBottom = '0px';\r\n\r\n // Class Functions\r\n constructor(\r\n private changeDetector: ChangeDetectorRef\r\n ) { }\r\n\r\n get hint(): string {\r\n return this._hint;\r\n }\r\n\r\n @Input() set hint(value: string) {\r\n this._hint = value;\r\n this.determineMarginBottom();\r\n\r\n // Preventing ExpressionChangedAfterItHasBeenCheckedError\r\n // this.changeDetector.detectChanges();\r\n }\r\n\r\n get hintAlign() {\r\n return this._hintAlign;\r\n }\r\n\r\n @Input() set hintAlign(value: string) {\r\n this._hintAlign = value;\r\n\r\n // Preventing ExpressionChangedAfterItHasBeenCheckedError\r\n // this.changeDetector.detectChanges();\r\n }\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n }\r\n\r\n @Input() set errorMessage(value: string) {\r\n this._errorMessage = value;\r\n this.determineMarginBottom();\r\n }\r\n\r\n get showError(): boolean {\r\n return this._showError;\r\n }\r\n\r\n @Input() set showError(value: boolean) {\r\n this._showError = value;\r\n this.determineMarginBottom();\r\n }\r\n\r\n get control() {\r\n return this._control;\r\n }\r\n\r\n @ContentChild(MatFormFieldControl) set control(value: MatFormFieldControl) {\r\n this._control = value;\r\n if (this._control != null) {\r\n if (this.matFormField) {\r\n this.matFormField._control = this._control;\r\n }\r\n if (this._control instanceof MatSelect) {\r\n this._control.panelClass = 'mat-' + this.color;\r\n }\r\n this._control.stateChanges.subscribe(() => {\r\n this.determineMarginBottom();\r\n this.matFormField.updateOutlineGap();\r\n });\r\n this.determineMarginBottom();\r\n }\r\n }\r\n\r\n get matFormField() {\r\n return this._matFormField;\r\n }\r\n\r\n @ViewChild(MatFormField, { static: true }) set matFormField(value: MatFormField) {\r\n this._matFormField = value;\r\n if (this.control) {\r\n this._matFormField._control = this.control;\r\n }\r\n }\r\n\r\n get color(): string {\r\n return this._color;\r\n }\r\n\r\n @Input() set color(value: string) {\r\n this._color = value;\r\n if (this._control instanceof MatSelect) {\r\n this._control.panelClass = 'mat-' + this.color;\r\n }\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: sets the form field's control to the control\r\n this.matFormField._control = this.control;\r\n if (!this.label) {\r\n // Reduce space more\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // NOTE: this is implemented for @AutoUnsubscribe\r\n }\r\n\r\n clear() {\r\n // PRE: the red X is clicked to clear the input\r\n // POST: clears out the input\r\n this.control.value = '';\r\n if (this.control.ngControl) {\r\n this.control.ngControl.viewToModelUpdate('');\r\n }\r\n }\r\n\r\n @HostListener('mouseenter', ['$event'])\r\n mouseEnter(event) {\r\n // PRE: the mouse enters this component\r\n // POST: sets hovering to true to allow showing the red X\r\n this.hovering = true;\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n mouseLeave() {\r\n // PRE: the mouse leaves the component\r\n // POST: sets hovering to false to disable showing the red X\r\n this.hovering = false;\r\n }\r\n\r\n\r\n\r\n // Methods\r\n determineMarginBottom() {\r\n // PRE: one of the fields checked here is changed\r\n // POST: determines what the margin bottom ought to be\r\n if (!this.preventCollapse && // If we're not forcing the space\r\n !this.hint && // If there is no hint\r\n (\r\n !this.errorMessage || // And no error message\r\n (\r\n this.control && // Or the control's validator is null and it isn't required\r\n (\r\n !this.control.ngControl || !this.control.ngControl.validator\r\n ) &&\r\n !this.control.required\r\n )\r\n )\r\n ) {\r\n this.marginBottom = '-0.84375em'; // Shorten the bottom\r\n } else {\r\n this.marginBottom = '0px'; // Otherwise, Keep the bottom length\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NgModel } from '@angular/forms';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\n\r\n@Component({\r\n selector: 'tyl-select-check-all',\r\n template: `\r\n \r\n {{text}}\r\n \r\n `,\r\n styles: []\r\n})\r\nexport class TylSelectCheckAllComponent implements OnInit {\r\n @Input() model: NgModel;\r\n @Input() values = [];\r\n @Input() text = 'Select All';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n isChecked(): boolean {\r\n return this.model.value && this.values.length\r\n && this.model.value.length === this.values.length;\r\n }\r\n\r\n isIndeterminate(): boolean {\r\n return this.model.value && this.values.length && this.model.value.length\r\n && this.model.value.length < this.values.length;\r\n }\r\n\r\n toggleSelection(change: MatCheckboxChange): void {\r\n if (change.checked) {\r\n this.model.update.emit(this.values);\r\n } else {\r\n this.model.update.emit([]);\r\n }\r\n } \r\n}\r\n","\r\n \r\n 1\">\r\n Multiple Selected\r\n \r\n \r\n \r\n \r\n {{getDisplay(item) | translate}}\r\n \r\n \r\n \r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\r\nimport { System } from '../../System';\r\nimport * as _ from 'lodash';\r\n\r\n/**\r\n * This is a multi-select drop-down component with an \"all\" checkbox at the top\r\n *\r\n * @input label: an optional label for this component. Defaults to null.\r\n * @input dataSource: a list of object that binds to this drop-down to populate all the items.\r\n * @input displayField: gets or sets the field of the data source that provides the text content of the list items.\r\n * @input valueField: gets or sets the field of the data source that provides the value of each list item.\r\n * @input valueFieldType: Gets or sets the type of value field comparison.\r\n * @input selected: gets the array of checked item's value , or selects the items in the list control that contains the specified value.\r\n * @input selecteByCommaString(optional): gets the comma separated value of checked items, or selects the items in the list control that contains the specified value.\r\n * @Input selectWidth: the width of the select drop down. Defaults to 100%.\r\n * @Input hint: hint text to pass to Tyler Form Field\r\n * @Input errorMessage: error message to pass to TylerFormField\r\n * @Input required: flag for required fields\r\n * @Input disabled: determines disabled state\r\n * @Input moveSelectedToTop: if true, selected items in list will move to the top of the list\r\n * @output selectedChange: emits when an item's checkbox is checked/unchecked\r\n */\r\n\r\n@Component({\r\n selector: 'tyl-multiple-select-list',\r\n templateUrl: './tyl-multiple-select-list.component.html',\r\n styleUrls: ['./tyl-multiple-select-list.component.css']\r\n})\r\nexport class TylMultipleSelectListComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n @Input() label: string;\r\n @Input() displayField: string;\r\n @Input() valueField: string;\r\n @Input() valueFieldType: string;\r\n @Input() selectWidth = '100%';\r\n @Input() hint: string;\r\n @Input() hintAlign: string;\r\n @Input() errorMessage: string;\r\n @Input() required: boolean;\r\n @Input() disabled: boolean;\r\n @Input() moveSelectedToTop = true;\r\n @Input() disableOptionCentering = true;\r\n @Input() hideSelectAll = false;\r\n @Input() tabIndex = 0;\r\n @Output() selectedChange = new EventEmitter();\r\n @Output() openedChange = new EventEmitter();\r\n @ViewChild('matSelect', { read: ElementRef, static: true }) matSelect: ElementRef;\r\n\r\n dataSourceIds: any;\r\n private originalDataSource: any[];\r\n sortedDataSource: any[];\r\n dropdownIsOpen = false;\r\n\r\n _selected: any[];\r\n\r\n get selected() {\r\n const isAllItemsSelected: boolean = System.arrayEqual(this._selected, this.originalDataSource.map(x => this.getValue(x)));\r\n return isAllItemsSelected ? 'all' : this._selected;\r\n }\r\n\r\n @Input() set selected(value: any) {\r\n setTimeout(() => {\r\n if (value === 'all' || value[0] === 'all') {\r\n this._selected = this.originalDataSource.map(x => this.getValue(x));\r\n } else {\r\n this._selected = value;\r\n }\r\n // this.selectedChange.emit(this.selected);\r\n if (!this.dropdownIsOpen) {\r\n this.sortSelectedItems();\r\n }\r\n }, 0);\r\n }\r\n\r\n get selecteByCommaString() {\r\n return this._selected.join(',');\r\n }\r\n\r\n @Input() set selecteByCommaString(value: string) {\r\n if (value === 'all' || value[0] === 'all') {\r\n this.selected = value;\r\n } else {\r\n switch (this.valueFieldType) {\r\n case 'number':\r\n this._selected = value.split(',').map(x => Number(x));\r\n break;\r\n case 'date':\r\n this._selected = value.split(',').map(x => new Date(x));\r\n break;\r\n default:\r\n this._selected = value.split(',').map(x => x);\r\n break;\r\n }\r\n // this.selectedChange.emit(this._selected);\r\n }\r\n }\r\n\r\n @Input() set dataSource(value: any[]) {\r\n this.originalDataSource = value;\r\n this.dataSourceIds = this.originalDataSource.map(x => this.getValue(x));\r\n if (!this.moveSelectedToTop) {\r\n this.sortedDataSource = _.cloneDeep(this.originalDataSource);\r\n }\r\n else {\r\n setTimeout(() => {\r\n this.sortSelectedItems();\r\n }, 0);\r\n }\r\n }\r\n\r\n get dataSource() {\r\n return this.originalDataSource;\r\n }\r\n\r\n getValue(item: any) {\r\n return this.valueField ? item[this.valueField] : item;\r\n }\r\n\r\n getDisplay(item: any) {\r\n return this.displayField ? item[this.displayField] : item;\r\n }\r\n\r\n ngOnInit() {\r\n this.sortSelectedItems();\r\n }\r\n\r\n // Methods\r\n trackByIndex(index: number, item: any) {\r\n // POST: resolves a bug with NgFor on primitive lists because angular\r\n return item[this.valueField];\r\n }\r\n\r\n sortSelectedItems() {\r\n if (this.moveSelectedToTop) {\r\n if (this.originalDataSource && this._selected) {\r\n this.sortedDataSource = _.cloneDeep(this.originalDataSource);\r\n let i = this.sortedDataSource.length;\r\n const selectedItems = [];\r\n while (i--) {\r\n if (this._selected.includes(this.getValue(this.sortedDataSource[i]))) {\r\n selectedItems.push(this.sortedDataSource[i]);\r\n this.sortedDataSource.splice(i, 1);\r\n }\r\n }\r\n selectedItems.forEach(item => {\r\n this.sortedDataSource.splice(0, 0, item);\r\n });\r\n }\r\n }\r\n }\r\n\r\n openChange(isOpen) {\r\n if (!isOpen) {\r\n this.sortSelectedItems();\r\n }\r\n this.dropdownIsOpen = isOpen;\r\n this.openedChange.emit(isOpen)\r\n }\r\n\r\n focus() {\r\n // POST: focuses on this control\r\n this.matSelect.nativeElement.focus();\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n {{labels.length > i ? labels[i] : value}}\r\n {{labels.length > i ? (labels[i] | tylTranslate) : (value | tylTranslate)}}\r\n
\r\n \r\n
\r\n
\r\n {{errorMessage}}\r\n
\r\n","import {Component, Input, EventEmitter, Output, OnInit, TemplateRef} from '@angular/core';\r\n\r\n/**\r\n * This component encapsulate the mat-radio-group control from angular material and uses the Tyler styling.\r\n * It creates a group of radio buttons that map to one variable.\r\n * NOTE: unlike the other components, this one does NOT use content projection. Anything placed inside the tags will be ignored.\r\n *\r\n * @input disabled: determines if the control should be disabled\r\n * @input labelPosition: 'before' or 'after' to indicate where labels should go. Defaults to 'after'.\r\n * @input name: the name of the group (for form purposes). Defaults to 'tyl-radio-group-#'.\r\n * @input required: whether the control is required or not. Defaults to false.\r\n * @input values: the values of each radio button. It also controls how many radio buttons show up.\r\n * @input labels: the labels of the radio buttons, in index order. If a value does not have a label, the value will be used instead.\r\n * @input ids: the ids of each radio button. Defaults to 'tyl-radio-button-#'.\r\n * @input disabledValues: a list of variables. If the value of any radio button is contained, it will be disabled.\r\n * @input disableIndexes: a list of numbers. If the index of a radio button is contained, it will be disabled.\r\n * @input arrange: this may be either 'horizontal' or 'vertical' to force a flex layout in that direction\r\n * @input spaceBetween: this is the extra distance between each radio button\r\n * @input label: this is an optional label that appears beside the radio group. Defaults to null.\r\n * @input labelWidth: the width of a displayed label. Defaults to null.\r\n * @input buttonAlignment: determines where the button should display when the text wraps. Can be top, center, or bottom.\r\n *\r\n * @output change: an eventemitter that emits the most recently selected value.\r\n *\r\n * @input selected: this is the variable the control binds to.\r\n * @output selectedChange: this eventemitter emits the selected variable whenever it is changed.\r\n *\r\n * example:\r\n * \r\n */\r\n@Component({\r\n selector: 'tyl-radio-group',\r\n templateUrl: './tyl-radio-group.component.html',\r\n styleUrls: [\r\n './tyl-radio-group.component.css'\r\n ]\r\n})\r\nexport class TylRadioGroupComponent implements OnInit {\r\n\r\n // Static Properties\r\n static nameIterator = 0;\r\n\r\n // Interface Properties from MatRadioGroup\r\n @Input() disabled = false;\r\n @Input() labelPosition = 'after';\r\n @Input() name = 'tyl-radio-group-' + TylRadioGroupComponent.nameIterator++;\r\n @Input() required = false;\r\n @Output() change = new EventEmitter();\r\n\r\n // Custom Interface Properties\r\n @Input() values: any[] = [];\r\n @Input() labels: string[] = [];\r\n @Input() ids: string[] = [];\r\n @Input() disabledValues: any[] = [];\r\n @Input() disabledIndexes: number[] = [];\r\n\t@Input() arrange = '';\r\n @Input() spaceBetween = '0px';\r\n @Input() wordWrap: boolean;\r\n @Input() label: string;\r\n @Input() labelWidth: number;\r\n @Input() contentTemplate: TemplateRef;\r\n @Input() alignment: string;\r\n @Input() tabIndex = 0;\r\n @Input() tylTranslate = false;\r\n @Input() isError = false;\r\n @Input() errorMessage = '';\r\n @Input() buttonAlignment = 'center';\r\n\r\n private _selected: any;\r\n @Output() selectedChange = new EventEmitter();\r\n\r\n // Local Properties\r\n\r\n // Class Functions\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Input() set selected(value) {\r\n this._selected = value;\r\n this.selectedChange.emit(this._selected);\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n if (this.ids.length < this.values.length) {\r\n for (let i = this.values.length - this.ids.length; i < this.values.length; i++) {\r\n this.ids.push('tyl-radio-button-' + i);\r\n }\r\n }\r\n }\r\n\r\n // Methods\r\n\r\n}\r\n","
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { System } from '../../System';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'tyl-time-field',\r\n templateUrl: './tyl-time-field.component.html',\r\n styleUrls: ['./tyl-time-field.component.css']\r\n})\r\nexport class TylTimeFieldComponent implements OnInit {\r\n\r\n // Injected Properties\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() label: string;\r\n @Input() twelveHourFormat = true;\r\n @Input() change24HoursTo12Hours = false;\r\n @Input() useValidator = false;\r\n @Input() width = 'inherit';\r\n @Input() required = false;\r\n @Input() disabled = false;\r\n @Input() showNowButton = false;\r\n @Input() customHint: string;\r\n @Output() timeValueChange = new EventEmitter();\r\n @Output() timeFieldChange = new EventEmitter();\r\n @Output() twentyFourHourFormatChange = new EventEmitter();\r\n @Output() twelveHourFormatFormatChange = new EventEmitter();\r\n\r\n // Local Properties\r\n twelveHourRegexp = System.twelveHourTimeRegexp;\r\n twentyFourHourRegexp = System.twentyFourHourTimeRegexp;\r\n twelveHourTimeMask = System.twelveHourTimeMask;\r\n twentyFourHourTimeMask = System.twentyFourHourTimeMask;\r\n _timeValue: string;\r\n _timeField: ElementRef;\r\n\r\n twentyFourHourTimeRegexp = /^([01]\\d|2[0-3]):?([0-5]\\d)$/;\r\n // Class Functions\r\n constructor() {\r\n }\r\n\r\n get timeField(): ElementRef {\r\n return this._timeField;\r\n }\r\n\r\n @ViewChild('timeField', { read: ElementRef, static: true }) set timeField(value: ElementRef) {\r\n if (this._timeField != value) {\r\n this._timeField = value;\r\n this.timeFieldChange.emit(value);\r\n }\r\n }\r\n\r\n get timeValue(): string {\r\n return this._timeValue;\r\n }\r\n\r\n @Input() set timeValue(value: string) {\r\n if (this._timeValue != value) {\r\n this._timeValue = value;\r\n this.timeValueChange.emit(value);\r\n if (this.twelveHourFormat) {\r\n this.twentyFourHourFormatChange.emit(value);\r\n this.twentyFourHourFormatChange.emit(System.convert12HourTimeTo24HourTime(value));\r\n } else {\r\n this.twelveHourFormatFormatChange.emit(System.convert24HourTimeTo12HourTime(value));\r\n this.twentyFourHourFormatChange.emit(value);\r\n }\r\n }\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n }\r\n\r\n onBlur() {\r\n // PRE: the blur event is called when change24HoursTo12Hours flag is true\r\n // POST: sets the time in 12 hour format\r\n if (this.change24HoursTo12Hours == true && this.twelveHourFormat == true && this.timeValue != null && this.timeValue != undefined) {\r\n let _timeValue = this.timeValue.replace(/_/g, '').replace(/ /g, '').replace(/AM/g, '').replace(/PM/g, '');\r\n if (_timeValue.length < 4) {\r\n _timeValue = _timeValue + '00';\r\n }\r\n this.timeValue = System.convert24HourTimeTo12HourTime(_timeValue);\r\n }\r\n }\r\n\r\n nowClick() {\r\n // PRE: the now button is clicked\r\n // POST: sets the time to now\r\n if (this.twelveHourFormat) {\r\n this.timeValue = moment(new Date().toString()).format('hh:mm a').toUpperCase();\r\n } else {\r\n this.timeValue = moment(new Date().toString()).format('HH:mm').toUpperCase();\r\n }\r\n }\r\n\r\n // Methods\r\n}\r\n","\r\n

\r\n Course Description\r\n

\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
Course Name{{course ? course : ''}}
Course-Section{{courseSection ? courseSection : ''}}
Teacher{{teacherName ? teacherName : ''}}
School{{schoolName ? schoolName : ''}}
Curriculum\r\n \r\n
Description\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'course-description',\r\n templateUrl: './course-description-dialog.component.html',\r\n styleUrls: [\r\n './course-description-dialog.component.css'\r\n ]\r\n})\r\nexport class CourseDescriptionDialogComponent implements OnInit {\r\n\r\n // Injected Properties\r\n course: string;\r\n courseSection: string;\r\n teacherName: string;\r\n schoolName: string;\r\n curriculum: string;\r\n description: string;\r\n\r\n // Local Properties\r\n\r\n // Class Functions\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef\r\n ) {}\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected data containing all of the injected properties\r\n // POST: initializes the data\r\n this.course = this.data.course;\r\n this.courseSection = this.data.courseSection;\r\n this.teacherName = this.data.teacherName;\r\n this.schoolName = this.data.schoolName;\r\n this.curriculum = this.data.curriculum;\r\n this.description = this.data.description;\r\n }\r\n\r\n close() {\r\n // PRE: the close button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n}","import {System} from '../System';\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\n// import {tap} from 'rxjs/operatorsObjects';\r\nimport {CourseSearchModel} from './course-search.model';\r\nimport {CourseSearchCriteria} from './course-search-criteria';\r\n\r\n@Injectable()\r\nexport class CourseSearchService {\r\n unsavedQueryApplied: boolean;\r\n\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getCourseCatalog(\r\n schoolId,\r\n aYidentifier,\r\n courseIdentier = '',\r\n courseName = '',\r\n subjectArea = '',\r\n creditCode = '',\r\n districtWide = false,\r\n siteYear_ID = -1,\r\n termType = ''\r\n ): Observable {\r\n const queryString = '?aYidentifier=' + aYidentifier +\r\n '&subjectArea=' + subjectArea +\r\n '&creditCode=' + creditCode +\r\n '&schoolDomain=' + schoolId +\r\n '&districtWide=' + districtWide +\r\n '&siteYear_ID=' + siteYear_ID +\r\n '&courseName=' + courseName +\r\n '&courseIdentifier=' + courseIdentier +\r\n '&termType=' + termType;\r\n return this.http.get(\r\n System.apiURL.Student +\r\n 'GetCourseList' +\r\n queryString\r\n ); // .pipe(tap(data => console.log('course: ' + JSON.stringify(data))));\r\n }\r\n\r\n getUserPreferences(studentId, pageURL, subjectListId?, subjectSection?, isDefaultPreferences?): Observable {\r\n return this.http.get(System.apiURL.Student + `GetUserPreferences?studentId=${studentId}&pageURL=${pageURL}&subjectListId=${subjectListId}&subjectSection=${subjectSection}&isDefaultPreferences=${isDefaultPreferences}`);\r\n }\r\n\r\n saveUserPreferences(studentId, pageURL, data, subjectListId?, subjectSection?, isDefaultPreferences?) {\r\n return this.http.post(System.apiURL.Student + `SaveUserPreferences?studentId=${studentId}&pageURL=${pageURL}&subjectListId=${subjectListId}&subjectSection=${subjectSection}&isDefaultPreferences=${isDefaultPreferences}`, data);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../System';\r\nimport { Observable } from 'rxjs';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\n\r\n@Injectable()\r\nexport class CourseSectionSearchService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) {}\r\n\r\n getClassSearch(schoolId: number, yearId: number, activeToday: boolean, courseName: string, courseNumber: string, sectionName: string, teacherName: string, room: string, classMeets: string, schoolIds: number[]): Observable {\r\n const queryString = '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&activeToday=' + activeToday +\r\n '&courseName=' + courseName +\r\n '&courseNumber=' + courseNumber +\r\n '§ionName=' + sectionName +\r\n '&teacherName=' + teacherName +\r\n '&room=' + room +\r\n '&classMeets=' + classMeets;\r\n return this.http.post(System.apiURL.Student + 'GetClassSearch' + queryString, schoolIds);\r\n }\r\n}\r\n","\r\nexport class CustomLayoutType {\r\n Id: number;\r\n Name = '';\r\n}\r\n","import {CustomLayoutSection} from './custom-layout-section.model';\r\n\r\nexport class CustomLayout {\r\n Id: number;\r\n Name: string;\r\n Description: string = '';\r\n LayoutTypeID: number;\r\n Scope: string;\r\n SelectedSites: string;\r\n Owner: number;\r\n OwnerName: string;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpOn: Date;\r\n LastUpBy: number;\r\n DelStatus: boolean;\r\n DelOn: Date;\r\n DelBy: number;\r\n TylerDefault: boolean;\r\n Sections: CustomLayoutSection[] = [];\r\n ErrorMessage = '';\r\n}","import { Injectable } from '@angular/core';\r\nimport { CustomLayoutSpecialField } from './Models/custom-layout-special-field.model';\r\nimport { DataQueryField } from '../../classroom360/data-query/data-query-field.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { System } from '../../shared-components/System';\r\nimport { CustomLayout } from './Models/custom-layout.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { CustomLayoutType } from './Models/custom-layout-type.model';\r\nimport { DataQueryResult } from '../../classroom360/data-query/data-query-result.model';\r\nimport { CustomLayoutSection } from './Models/custom-layout-section.model';\r\nimport { first } from 'rxjs/operators';\r\nimport { SQLParameter } from './Models/sql-parameter.model';\r\nimport { Lookup } from '../../shared-components/lookup/lookup.model';\r\nimport * as _ from 'lodash';\r\nimport { UserPermission } from '../../shared-components/user/user-permission.model';\r\nimport { CustomLayoutSchoolDefault } from './Models/custom-layout-school-default.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class CustomLayoutsService {\r\n\r\n specialFields: CustomLayoutSpecialField[] = [];\r\n layoutTypes: CustomLayoutType[] = [];\r\n selectedLayoutType: CustomLayoutType;\r\n dynamicComponentMap = {};\r\n sectionData: CustomLayoutSectionDataContainer[] = [];\r\n numericDataTypes = ['decimal', 'int', 'bigint', 'float', 'money'];\r\n textDataTypes = ['char', 'varchar', 'nvarchar', 'text'];\r\n dateTimeDataTypes = ['time', 'datetime', 'date'];\r\n useCurrentYearOnly = false;\r\n v10YearFieldNames = ['Academic_Year', 'AYIdentifier'];\r\n incidentCodes: Lookup[] = [];\r\n public incidentSubCodeId: number = 0;\r\n private _externalFilters: DataQueryField[];\r\n public observableexternalFilters = new Subject();\r\n observableexternalFiltersStream$ = this.observableexternalFilters.asObservable();\r\n\r\n public get externalFilters(): DataQueryField[] {\r\n return this._externalFilters;\r\n }\r\n\r\n public set externalFilters(value: DataQueryField[]) {\r\n this._externalFilters = value;\r\n this.observableexternalFilters.next(value);\r\n }\r\n\r\n private _savedLayouts: CustomLayout[];\r\n public get savedLayouts(): CustomLayout[] {\r\n return this._savedLayouts;\r\n }\r\n\r\n public set savedLayouts(value: CustomLayout[]) {\r\n this._savedLayouts = value;\r\n this.observableSavedLayouts.next(this._savedLayouts);\r\n }\r\n\r\n private _selectedLayoutViewType: CustomLayoutType;\r\n public get selectedLayoutViewType(): CustomLayoutType {\r\n return this._selectedLayoutViewType;\r\n }\r\n\r\n public set selectedLayoutViewType(value: CustomLayoutType) {\r\n this._selectedLayoutViewType = value;\r\n this.observableSelectedLayoutViewType.next(this._selectedLayoutViewType);\r\n }\r\n\r\n public observableSelectedLayoutViewType = new Subject();\r\n observableSelectedLayoutViewTypeStream$ = this.observableSelectedLayoutViewType.asObservable();\r\n\r\n public observableSavedLayouts = new Subject();\r\n observableSavedLayoutsStream$ = this.observableSavedLayouts.asObservable();\r\n\r\n private _selectedLayout: CustomLayout;\r\n public get selectedLayout(): CustomLayout {\r\n if (this._selectedLayout && this._selectedLayout.LayoutTypeID == this.selectedLayoutType.Id) {\r\n return this._selectedLayout;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public set selectedLayout(value: CustomLayout) {\r\n if (value) {\r\n if (!this.loginService.LoginSettings.V10 || this._selectedLayout) {\r\n this.updateUserLayoutHistory(value.Id, this.router.url.indexOf('academicHistory') > -1).pipe(first()).subscribe(() => {\r\n });\r\n }\r\n this._selectedLayout = _.cloneDeep(value);\r\n } else {\r\n this._selectedLayout = null;\r\n }\r\n this.observableSelectedLayout.next(this._selectedLayout);\r\n }\r\n\r\n public observableSelectedLayout = new Subject();\r\n observableSelectedLayoutStream$ = this.observableSelectedLayout.asObservable();\r\n\r\n private _dataQueryFields: DataQueryField[] = [];\r\n public get dataQueryFields(): DataQueryField[] {\r\n return this._dataQueryFields;\r\n }\r\n\r\n public set dataQueryFields(value: DataQueryField[]) {\r\n this._dataQueryFields = value;\r\n this.observableDataQueryFields.next(this._dataQueryFields);\r\n }\r\n\r\n public observableDataQueryFields = new Subject();\r\n observableDataQueryFieldsStream$ = this.observableDataQueryFields.asObservable();\r\n\r\n private _userPermissions: UserPermission[];\r\n public get userPermissions(): UserPermission[] {\r\n return this._userPermissions;\r\n }\r\n\r\n public set userPermissions(value: UserPermission[]) {\r\n this._userPermissions = value;\r\n this.observableUserPermissions.next(this._userPermissions);\r\n }\r\n\r\n public observableUserPermissions = new Subject();\r\n observableUserPermissionsStream$ = this.observableUserPermissions.asObservable();\r\n\r\n private _validActionCodes: string;\r\n public get validActionCodes(): string {\r\n return this._validActionCodes;\r\n }\r\n\r\n public set validActionCodes(value: string) {\r\n this._validActionCodes = value;\r\n this.observableincidentCode.next(this._validActionCodes);\r\n }\r\n\r\n public observableincidentCode = new Subject();\r\n observableincidentCodeStream$ = this.observableincidentCode.asObservable();\r\n\r\n private _FieldDataLoaded: boolean = true;\r\n\r\n public get fieldDataLoaded(): boolean {\r\n return this._FieldDataLoaded;\r\n }\r\n\r\n public set fieldDataLoaded(value: boolean) {\r\n this._FieldDataLoaded = value;\r\n this.observableFieldDataLoaded.next(value);\r\n }\r\n\r\n public observableFieldDataLoaded = new Subject();\r\n observableFieldDataLoadedStream$ = this.observableFieldDataLoaded.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private router: Router\r\n ) {\r\n }\r\n\r\n getLayoutById(layoutId: number): Observable {\r\n const queryString = '?layoutId=' + layoutId;\r\n return this.http.get(System.apiURL.Student + 'GetLayoutById' + queryString);\r\n }\r\n\r\n getLayoutsByType(typeId: number, yearId: number, academicHistory: boolean): Observable {\r\n const queryString = '?typeId=' + typeId +\r\n '&yearId=' + yearId +\r\n '&academicHistory=' + academicHistory;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetLayoutsByType' + queryString);\r\n }\r\n\r\n getSpecialFields(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetCustomLayoutSpecialFields');\r\n }\r\n\r\n getLayoutTypes(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetCustomLayoutTypes');\r\n }\r\n\r\n getDataQueryFields(objectName: string): Observable {\r\n const dqobjectName = (objectName == null || objectName == '') ? '' : objectName;\r\n const queryString = '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&objectName=' + dqobjectName;\r\n return this.http.get(System.apiURL.Classroom + 'GetDataQueryFields' + queryString);\r\n }\r\n\r\n saveLayout(layout: CustomLayout): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveCustomLayout', layout);\r\n }\r\n\r\n deleteLayout(layoutId: number): Observable {\r\n if (this._selectedLayout.Id == layoutId) {\r\n const layout = this.savedLayouts.find(o => o.Id == layoutId);\r\n if (layout) {\r\n const defaultLayout = this.savedLayouts.find(o => o.LayoutTypeID == layout.LayoutTypeID && o.TylerDefault == true);\r\n if (defaultLayout) {\r\n this.selectedLayout = defaultLayout;\r\n } else {\r\n this.selectedLayout = null;\r\n }\r\n } else {\r\n this.selectedLayout = null;\r\n }\r\n }\r\n const queryString = '?layoutId=' + layoutId;\r\n return this.http.get(System.apiURL.Student + 'DeleteCustomLayout' + queryString);\r\n }\r\n\r\n setUserLayoutTypeToDefault(layoutTypeId: number): Observable {\r\n const queryString = '?layoutTypeId=' + layoutTypeId;\r\n return this.http.get(System.apiURL.Student + 'SetUserLayoutTypeToDefault' + queryString);\r\n }\r\n\r\n updateUserLayoutHistory(layoutId: number, academicHistory: boolean): Observable {\r\n const queryString = '?layoutId=' + layoutId + '&academicHistory=' + academicHistory;\r\n return this.http.get(System.apiURL.Student + 'UpdateUserLayoutHistory' + queryString);\r\n }\r\n\r\n setUserLayoutToDefault(layoutTypeId: number): Observable {\r\n const queryString = '?layoutTypeId=' + layoutTypeId;\r\n return this.http.get(System.apiURL.Student + 'SetUserLayoutToDefault' + queryString);\r\n }\r\n\r\n getUserDefaultLayout(layoutTypeId: number, schoolId: number, academicHistory: boolean): Observable {\r\n let queryString = '?layoutTypeId=' + layoutTypeId;\r\n queryString += '&schoolId=' + schoolId;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n queryString += '&academicHistory=' + academicHistory;\r\n return this.http.get(System.apiURL.Student + 'GetUserDefaultLayout' + queryString);\r\n }\r\n\r\n getSectionData(sectionId: number, fields: DataQueryField[], schoolId: number, yearId: number, currentYearOnly: boolean, filterAllowedStudents: boolean, filterAllowedSchools: boolean, studentIds?: string): Observable {\r\n const studentId = (studentIds != null || studentIds != '') ? studentIds : '';\r\n let queryString = '?sectionId=' + sectionId;\r\n queryString += '&schoolId=' + schoolId;\r\n queryString += '&yearId=' + yearId;\r\n queryString += '¤tYearOnly=' + currentYearOnly;\r\n queryString += '&filterAllowedStudents=' + filterAllowedStudents;\r\n queryString += '&filterAllowedSchools=' + filterAllowedSchools;\r\n queryString += '&studentIds=' + studentId;\r\n return this.http.post(System.apiURL.Student + 'GetSectionData' + queryString, fields);\r\n }\r\n\r\n getCustomLayoutSchoolDefaults(layoutType_Id: number): Observable {\r\n const queryString = '?layoutType_Id=' + layoutType_Id +\r\n '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Student + 'GetCustomLayoutSchoolDefaults' + queryString);\r\n }\r\n\r\n saveDefaultSchoolLayouts(defaultSchoolLayouts: CustomLayoutSchoolDefault[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveDefaultSchoolLayouts', defaultSchoolLayouts);\r\n }\r\n\r\n getSectionDataFromSP(spName: string, parameters: SQLParameter[]): Observable {\r\n const queryString = '?spName=' + spName;\r\n return this.http.post(System.apiURL.Student + 'GetSectionDataFromSP' + queryString, parameters);\r\n }\r\n\r\n getV10DataQueryFieldLookup(dqFieldId: number, filterString: string): Observable {\r\n let queryString = '?dqFieldId=' + dqFieldId;\r\n queryString += '&filterString=' + filterString;\r\n return this.http.get(System.apiURL.Student + 'GetV10DataQueryFieldLookup' + queryString);\r\n }\r\n\r\n getV9DataQueryFieldLookup(dqFieldId: number, filterString: string): Observable {\r\n let queryString = '?dqFieldId=' + dqFieldId;\r\n queryString += '&filterString=' + filterString;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n queryString += '&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Student + 'GetV9DataQueryFieldLookup' + queryString);\r\n }\r\n\r\n performDataQueryUpdate(fields: DataQueryField[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'PerformDataQueryUpdate', fields);\r\n }\r\n\r\n getFilterFields(sectionId: number): DataQueryField[] {\r\n const filterFields: DataQueryField[] = [];\r\n const section = this.selectedLayout.Sections.find(o => o.Id == sectionId);\r\n if (section) {\r\n const clFields = section.AvailableFields.filter(o => o.RequiredForFilter == true);\r\n clFields.forEach(field => {\r\n if (field.DQFieldID > 0) {\r\n const dqField = this.dataQueryFields.find(o => o.ID == field.DQFieldID);\r\n if (dqField) {\r\n filterFields.push(_.cloneDeep(dqField));\r\n }\r\n }\r\n });\r\n if (this.useCurrentYearOnly) {\r\n const dqAYFieldIds = this.dataQueryFields.filter(o => this.v10YearFieldNames.includes(o.FieldName)).map(o => o.ID);\r\n if (filterFields.find(o => dqAYFieldIds.includes(o.ID)) != null) {\r\n // already filtering on academic year\r\n } else {\r\n // need to add academic year filter field\r\n const yearField = section.AvailableFields.find(o => dqAYFieldIds.includes(o.DQFieldID));\r\n if (yearField) {\r\n const dqField = this.dataQueryFields.find(o => o.ID == yearField.DQFieldID);\r\n if (dqField) {\r\n filterFields.push(_.cloneDeep(dqField));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return filterFields;\r\n }\r\n\r\n getFieldList(section: CustomLayoutSection, includeAllChildFields: boolean): DataQueryField[] {\r\n const fields: DataQueryField[] = [];\r\n const childSections = this.selectedLayout.Sections.filter(s => s.ParentSectionID == section.Id);\r\n section.SelectedFields.forEach(sf => {\r\n if (sf.DQFieldID > 0) {\r\n let dqField: any;\r\n if (this.loginService.LoginSettings.V10) {\r\n dqField = this.dataQueryFields.find(d => d.ID == sf.DQFieldID);\r\n } else {\r\n dqField = this.dataQueryFields.find(d => d.ID == sf.DQFieldID && d.CategoryID == sf.CategoryId);\r\n }\r\n if (dqField) {\r\n dqField = _.cloneDeep(dqField);\r\n dqField.ShowOnReport = true;\r\n if (sf.SortByDefault) {\r\n dqField.SortDirection = sf.SortDirection;\r\n dqField.SortOrder = sf.SortOrder;\r\n dqField.SortByDefault = true;\r\n }\r\n fields.push(dqField);\r\n }\r\n } else {\r\n const spField = this.specialFields.find(o => o.Id == sf.SpecialFieldID);\r\n if (spField && spField.IsSection) {\r\n const childSection = this.selectedLayout.Sections.find(o => o.Id == spField.SectionId);\r\n if (childSection && childSections.find(o => o.Id == childSection.Id) == null) {\r\n childSections.push(childSection);\r\n }\r\n }\r\n }\r\n });\r\n section.AvailableFields.forEach(sf => {\r\n if (sf.DQFieldID > 0 && (sf.RequiredForDisplay || sf.RequiredForFilter || sf.AlwaysIncludeInResults) && fields.find(o => o.ID == sf.DQFieldID) == null) {\r\n let dqField: any;\r\n if (this.loginService.LoginSettings.V10) {\r\n dqField = this.dataQueryFields.find(d => d.ID == sf.DQFieldID);\r\n } else {\r\n dqField = this.dataQueryFields.find(d => d.ID == sf.DQFieldID && d.CategoryID == sf.CategoryId);\r\n }\r\n if (dqField) {\r\n dqField = _.cloneDeep(dqField);\r\n dqField.ShowOnReport = sf.RequiredForDisplay;\r\n dqField.IncludeInResults = sf.RequiredForFilter || sf.AlwaysIncludeInResults;\r\n if (sf.SortByDefault) {\r\n dqField.SortDirection = sf.SortDirection;\r\n dqField.SortOrder = sf.SortOrder;\r\n }\r\n fields.push(dqField);\r\n }\r\n }\r\n });\r\n\r\n let fieldsRequiredByChildren: DataQueryField[] = [];\r\n fieldsRequiredByChildren = this.getAllFieldsForChildSections(childSections, includeAllChildFields);\r\n fieldsRequiredByChildren.forEach(field => {\r\n if (fields.find(o => o.ID == field.ID) == null) {\r\n fields.push(field);\r\n }\r\n });\r\n return fields;\r\n }\r\n\r\n getFieldsForChildSectionFilters(childSection: CustomLayoutSection): DataQueryField[] {\r\n const fieldsRequiredByChildren: DataQueryField[] = [];\r\n childSection.AvailableFields.forEach(field => {\r\n if (field.RequiredForFilter && field.DQFieldID > 0 && fieldsRequiredByChildren.find(o => o.ID == field.DQFieldID) == null) {\r\n let dqField: any;\r\n if (this.loginService.LoginSettings.V10) {\r\n dqField = this.dataQueryFields.find(d => d.ID == field.DQFieldID);\r\n } else {\r\n dqField = this.dataQueryFields.find(d => d.ID == field.DQFieldID && d.CategoryID == field.CategoryId);\r\n }\r\n\r\n if (dqField) {\r\n dqField = _.cloneDeep(dqField);\r\n dqField.ShowOnReport = false;\r\n dqField.IncludeInResults = true;\r\n fieldsRequiredByChildren.push(dqField);\r\n }\r\n }\r\n });\r\n return fieldsRequiredByChildren;\r\n }\r\n\r\n getAllFieldsForChildSections(childSections: CustomLayoutSection[], includeAllChildFields: boolean): DataQueryField[] {\r\n let fieldsRequiredByChildren: DataQueryField[] = [];\r\n childSections.forEach(section => {\r\n if (section.IsGrid || !includeAllChildFields) {\r\n this.getFieldsForChildSectionFilters(section);\r\n } else {\r\n fieldsRequiredByChildren = fieldsRequiredByChildren.concat(this.getFieldList(section, true));\r\n }\r\n });\r\n return fieldsRequiredByChildren;\r\n }\r\n\r\n getParameters(section: CustomLayoutSection, rowIndex: number = 0): SQLParameter[] {\r\n // need to specify parameters specific to the sp being called\r\n switch (section.SPName) {\r\n case 'spCustomLayoutAcademicHistorySubGrid': {\r\n return this.getAHSubGridParameters(section, rowIndex);\r\n }\r\n case 'sp_CustomLayoutAcademicHistorySubGrid': {\r\n return this.getV9AHSubGridParameters(section, rowIndex);\r\n }\r\n default: {\r\n return [];\r\n }\r\n }\r\n }\r\n\r\n getAHSubGridParameters(section: CustomLayoutSection, rowIndex: number): SQLParameter[] {\r\n const parentData = this.sectionData.find(o => o.sectionId == section.ParentSectionID);\r\n const parameters: SQLParameter[] = [];\r\n if (parentData) {\r\n let dataBucketScoreId = '-1';\r\n const colIndex = parentData.data.Columns.findIndex(o => o.FieldName == 'DataBucketScore_ID');\r\n if (colIndex >= 0) {\r\n dataBucketScoreId = parentData.data.Data[rowIndex][colIndex];\r\n }\r\n parameters.push({ ParameterName: '@DataBucketScore_ID', Value: dataBucketScoreId });\r\n const selectedSlots: string[] = [];\r\n section.SelectedFields.forEach(field => {\r\n if (field.SpecialFieldID > 0) {\r\n const spField = this.specialFields.find(o => o.Id == field.SpecialFieldID);\r\n if (spField && spField.DefinesRows) {\r\n switch (spField.FieldName) {\r\n case 'examProgressGrades': {\r\n selectedSlots.push('CW1,CW2,CW3,CW4,CW5,CW6,CW7,CW8,CW9,CW10');\r\n break;\r\n }\r\n case 'termGrades': {\r\n selectedSlots.push('T1,T2,T3,T4,T5,T6,T7,T8,T9,T10');\r\n break;\r\n }\r\n case 'gradingPeriodGrades': {\r\n selectedSlots.push('GP1,GP2,GP3,GP4,GP5,GP6,GP7,GP8,GP9,GP10');\r\n break;\r\n }\r\n case 'semesterGrades': {\r\n selectedSlots.push('S1,S2,S3,S4');\r\n break;\r\n }\r\n case 'yearEndGrades': {\r\n selectedSlots.push('CW1,CW2,CW3,CW4,CW5,CW6,CW7,CW8,CW9,CW10');\r\n break;\r\n }\r\n case 'finalScore': {\r\n selectedSlots.push('final');\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n parameters.push({ ParameterName: '@SelectedSlots', Value: selectedSlots.join() });\r\n }\r\n return parameters;\r\n }\r\n\r\n getV9AHSubGridParameters(section: CustomLayoutSection, rowIndex: number): SQLParameter[] {\r\n const parentData = this.sectionData.find(o => o.sectionId == section.ParentSectionID);\r\n const parameters: SQLParameter[] = [];\r\n if (parentData) {\r\n let lngStudentId = '-1';\r\n let lngSiteSubjectListId = '-1';\r\n let lngYearId = '-1';\r\n let lngDistrictSubjectId = '-1';\r\n let colIndex = -1;\r\n colIndex = parentData.data.Columns.findIndex(o => o.FieldName == 'lngStudentId');\r\n if (colIndex >= 0) {\r\n lngStudentId = parentData.data.Data[rowIndex][colIndex];\r\n }\r\n parameters.push({ ParameterName: '@lngStudentId', Value: lngStudentId });\r\n\r\n colIndex = parentData.data.Columns.findIndex(o => o.FieldName == 'lngSiteSubjectListId');\r\n if (colIndex >= 0) {\r\n lngSiteSubjectListId = parentData.data.Data[rowIndex][colIndex];\r\n }\r\n parameters.push({ ParameterName: '@lngSiteSubjectListId', Value: lngSiteSubjectListId });\r\n\r\n colIndex = parentData.data.Columns.findIndex(o => o.FieldName == 'lngDistrictSubjectId');\r\n if (colIndex >= 0) {\r\n lngDistrictSubjectId = parentData.data.Data[rowIndex][colIndex];\r\n }\r\n parameters.push({ ParameterName: '@lngDistrictSubjectId', Value: lngDistrictSubjectId });\r\n\r\n colIndex = parentData.data.Columns.findIndex(o => o.FieldName == 'lngYearId');\r\n if (colIndex >= 0) {\r\n lngYearId = parentData.data.Data[rowIndex][colIndex];\r\n }\r\n parameters.push({ ParameterName: '@lngYearId', Value: lngYearId });\r\n\r\n const selectedSlots: string[] = [];\r\n section.SelectedFields.forEach(field => {\r\n selectedSlots.push(field.DQFieldID.toString());\r\n });\r\n parameters.push({ ParameterName: '@strSelectedFields', Value: selectedSlots.join() });\r\n }\r\n return parameters;\r\n }\r\n\r\n getSpecialColumns(section: CustomLayoutSection): string[] {\r\n const columns: string[] = [];\r\n section.SelectedFields.forEach(field => {\r\n if (field.SpecialFieldID > 0) {\r\n const spField = this.specialFields.find(o => o.Id == field.SpecialFieldID);\r\n if (spField && spField.DefinesColumns) {\r\n switch (spField.DisplayName) {\r\n // SP column names should match special field display name, but if they don't then you can make exceptions here\r\n // Example:\r\n // case 'Number Grade': {\r\n // columns.push('Numeric Grade');\r\n // break;\r\n // }\r\n default: {\r\n columns.push(spField.DisplayName);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return columns;\r\n }\r\n\r\n storeSectionData(sectionId: number, data: DataQueryResult) {\r\n let sd: CustomLayoutSectionDataContainer = this.sectionData.find(o => o.sectionId == sectionId);\r\n if (sd) {\r\n sd.data = data;\r\n } else {\r\n sd = { sectionId: sectionId, data: data, filters: [] };\r\n this.sectionData.push(sd);\r\n }\r\n }\r\n\r\n getStoredSectionData(sectionId: number, rowIndex: number = -1): DataQueryResult {\r\n const sd: CustomLayoutSectionDataContainer = this.sectionData.find(o => o.sectionId == sectionId);\r\n if (sd) {\r\n return sd.data;\r\n } else {\r\n return new DataQueryResult();\r\n }\r\n }\r\n\r\n getFilterValueFromParent(sectionId: number, rowIndex: number, fieldId: number): any {\r\n let val: any = null;\r\n const section = this.selectedLayout.Sections.find(o => o.Id == sectionId);\r\n if (section && section.ParentSectionID > 0) {\r\n const parentData = this.sectionData.find(o => o.sectionId == section.ParentSectionID);\r\n if (parentData) {\r\n const colIndex = parentData.data.Columns.findIndex(o => o.ID == fieldId);\r\n if (colIndex >= 0 && parentData.data && parentData.data.Data && parentData.data.Data[rowIndex]) {\r\n val = parentData.data.Data[rowIndex][colIndex];\r\n }\r\n }\r\n }\r\n return val;\r\n }\r\n\r\n getDefaultValueForFilter(field: DataQueryField): any {\r\n if (this.numericDataTypes.find(o => o.toLowerCase() == field.DataType.toLowerCase())) {\r\n return -1;\r\n } else if (this.textDataTypes.find(o => o.toLowerCase() == field.DataType.toLowerCase())) {\r\n return '';\r\n } else if (this.dateTimeDataTypes.find(o => o.toLowerCase() == field.DataType.toLowerCase())) {\r\n return new Date(-8640000000000000);\r\n } else if (field.DataType.toLowerCase() == 'bit') {\r\n return false;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n}\r\n\r\nexport interface ComponentMap {\r\n name: string;\r\n component: any;\r\n}\r\n\r\ninterface CustomLayoutSectionDataContainer {\r\n sectionId: number;\r\n data: DataQueryResult;\r\n filters: DataQueryField[];\r\n}\r\n\r\n\r\n","export class CustomLayoutField {\r\n Id: number;\r\n SectionID: number;\r\n DQFieldID: number;\r\n SpecialFieldID: number;\r\n AllowEdit: boolean;\r\n Order: number;\r\n Visible: boolean;\r\n RequiredForFilter: boolean;\r\n RequiredForDisplay: boolean;\r\n AlwaysIncludeInResults: boolean;\r\n SortByDefault: boolean;\r\n SortDirection: string;\r\n SortOrder: number;\r\n // v9\r\n CategoryId: number;\r\n}\r\n","
Warning
\r\n\r\n {{dialogTitle != '' ? dialogTitle : 'Changes have been made to the Layout but not saved.'}}\r\n\r\n\r\n \r\n\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-layout-unsaved-changes-dialog',\r\n templateUrl: './layout-unsaved-changes-dialog.component.html',\r\n styleUrls: ['./layout-unsaved-changes-dialog.component.css']\r\n})\r\nexport class LayoutUnsavedChangesDialogComponent implements OnInit {\r\n\r\n enableSave = true;\r\n confirmDialog = false;\r\n dialogTitle = \"\";\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogRef: MatDialogRef\r\n ) {\r\n if (data) {\r\n this.enableSave = data.enableSave;\r\n this.confirmDialog = data.confirmDialog != undefined ? data.confirmDialog : false;\r\n this.dialogTitle = data.dialogTitle != undefined ? data.dialogTitle : \"\";\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n saveClick() {\r\n this.dialogRef.close('save');\r\n }\r\n\r\n SaveAsNewClick() {\r\n this.dialogRef.close('saveAsNew');\r\n }\r\n\r\n ContinueWithoutSaveClick() {\r\n this.dialogRef.close('continueWithoutSave');\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close('cancel');\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {CustomLayoutField} from '../Models/custom-layout-field.model';\r\nimport {CustomLayoutsService} from '../custom-layouts.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n\r\n@Pipe({\r\n name: 'getFieldDisplayName'\r\n})\r\nexport class GetFieldDisplayNamePipe implements PipeTransform {\r\n constructor(private customLayoutService: CustomLayoutsService,\r\n private loginService: LoginService) {\r\n }\r\n\r\n transform(field: CustomLayoutField, args: any): any {\r\n let fieldName = '';\r\n if (field.DQFieldID > 0) {\r\n if (this.loginService.LoginSettings.V10) {\r\n const dqField = this.customLayoutService.dataQueryFields.find(f => f.ID == field.DQFieldID );\r\n if (dqField) {\r\n fieldName = dqField.DisplayName;\r\n }\r\n }\r\n else {\r\n const dqField = this.customLayoutService.dataQueryFields.find(f => f.ID == field.DQFieldID && f.CategoryID == field.CategoryId);\r\n if (dqField) {\r\n fieldName = dqField.DisplayName;\r\n }\r\n }\r\n }\r\n else if (field.SpecialFieldID > 0) {\r\n const sField = this.customLayoutService.specialFields.find(f => f.Id == field.SpecialFieldID);\r\n if (sField) {\r\n fieldName = sField.DisplayName;\r\n }\r\n }\r\n return fieldName;\r\n }\r\n\r\n}\r\n","
\r\n {{headerLabel}}\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n {{type.Name.replace(\"Academic History\",\"\")}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Scope\r\n \r\n \r\n
\r\n \r\n Private\r\n \r\n
\r\n
\r\n \r\n Available to\r\n \r\n Selected Sites\r\n \r\n \r\n
\r\n
\r\n \r\n Available to District\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n {{section.Name}}\r\n \r\n \r\n Hide section\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{field | getFieldDisplayName: dqFieldsRetrieved}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
0 && field.SpecialFieldID != colBreakFieldId && !isSpecialFieldDraggable(field)\">\r\n
\r\n
\r\n {{field | getFieldDisplayName: dqFieldsRetrieved}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
0 || field.SpecialFieldID == colBreakFieldId || isSpecialFieldDraggable(field)) && getFieldDisplayName(field)\">\r\n
\r\n
\r\n
\r\n
\r\n {{field | getFieldDisplayName: dqFieldsRetrieved}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Drag rows up and down to arrange them as columns on the grid.\r\n \r\n \r\n Drag rows up and down to arrange them. Use the Column Break to split fields into columns.\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n Available to\r\n \r\n Selected Sites\r\n \r\n \r\n","import { AfterViewInit, Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { CustomLayout } from '../Models/custom-layout.model';\r\nimport { CustomLayoutsService } from '../custom-layouts.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { CustomLayoutField } from '../Models/custom-layout-field.model';\r\nimport { CustomLayoutSection } from '../Models/custom-layout-section.model';\r\nimport { CustomLayoutType } from '../Models/custom-layout-type.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { System } from '../../../shared-components/System';\r\nimport { LayoutUnsavedChangesDialogComponent } from './layout-unsaved-changes-dialog/layout-unsaved-changes-dialog.component';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { Router } from '@angular/router';\r\nimport { SelectedSite } from '../../controls/selected-sites-dialog/selected-site';\r\nimport { SelectedSitesDialogComponent } from '../../controls/selected-sites-dialog/selected-sites-dialog.component';\r\nimport { ErrorList } from '../../controls/error-prompt/error-list.model';\r\nimport { YearService } from '../../year/year.service';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-layout-editor',\r\n templateUrl: './layout-editor.component.html',\r\n styleUrls: ['./layout-editor.component.css'],\r\n})\r\nexport class LayoutEditorComponent implements AfterViewInit, OnDestroy {\r\n\r\n operation: string;\r\n layout: CustomLayout = new CustomLayout();\r\n layoutType: CustomLayoutType;\r\n previousType: CustomLayoutType;\r\n selectedFields: CustomLayoutField[] = [];\r\n colBreakFieldId: number;\r\n userId: number;\r\n subscriptions: Subscription[] = [];\r\n unsavedChanges = false;\r\n unsavedFieldChanges = false;\r\n dqFieldsRetrieved = false;\r\n v10: boolean;\r\n layoutTypes: CustomLayoutType[] = [];\r\n isAcademicHistory: boolean;\r\n errors: ErrorList[] = [];\r\n headerLabel: string = '';\r\n duplicate: boolean = false;\r\n\r\n @ViewChild('rbgScopeRef', { read: ElementRef }) rbgScopeRef: ElementRef;\r\n @ViewChild('txtNameRef', { read: ElementRef, static: true }) txtNameRef: ElementRef;\r\n\r\n constructor(\r\n private customLayoutService: CustomLayoutsService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private sharedService: SharedService,\r\n private loginService: LoginService,\r\n private router: Router\r\n ) { }\r\n\r\n ngAfterViewInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.isAcademicHistory = this.router.url.indexOf('academicHistory') > -1 || this.router.url.indexOf('registrationEnrollment') > -1;\r\n this.userId = this.userService.currentUser.Id;\r\n if (this.isAcademicHistory) {\r\n this.layoutTypes = this.customLayoutService.layoutTypes.filter(t => t.Name.indexOf('Academic History') > -1);\r\n }\r\n else\r\n this.layoutTypes = this.customLayoutService.layoutTypes.filter(t => t.Name.indexOf('Academic History') == -1);\r\n this.layoutType = (this.operation == 'Add') ? this.layoutTypes.filter(t => t.Id == this.customLayoutService.selectedLayoutType.Id)[0] : this.layoutTypes.filter(t => t.Id == this.layout.LayoutTypeID)[0];\r\n if (this.operation == 'Add') {\r\n this.headerLabel = (this.isAcademicHistory) ? 'Add New Academic History Layout' : 'Add New Behavior Quick Add Layout';\r\n }\r\n else {\r\n this.headerLabel = 'Edit ' + this.layout.Name;\r\n }\r\n this.previousType = this.layoutType;\r\n this.setLayout(this.layout)\r\n if (this.customLayoutService.specialFields.length == 0) {\r\n this.subscriptions.push(this.customLayoutService.getSpecialFields().subscribe(fields => {\r\n this.customLayoutService.specialFields = fields;\r\n const colBreak = fields.find(f => f.ColumnBreak == true);\r\n if (colBreak) {\r\n this.colBreakFieldId = colBreak.Id;\r\n }\r\n }));\r\n }\r\n else {\r\n const colBreak = this.customLayoutService.specialFields.find(f => f.ColumnBreak == true);\r\n if (colBreak) {\r\n this.colBreakFieldId = colBreak.Id;\r\n }\r\n }\r\n if (this.customLayoutService.dataQueryFields.length == 0) {\r\n this.subscriptions.push(this.customLayoutService.getDataQueryFields((this.layoutType.Name.indexOf('Behavior Quick Add') > -1 ? 'Behavior' : '')).subscribe(fields => {\r\n this.customLayoutService.dataQueryFields = fields;\r\n this.dqFieldsRetrieved = true;\r\n }));\r\n }\r\n }\r\n\r\n setLayout(layout: CustomLayout) {\r\n if (this.operation == 'Edit' && layout && !layout.TylerDefault)\r\n this.layout = System.copyObject(layout, new CustomLayout());\r\n else if (!this.duplicate)\r\n this.setFieldsToDefault();\r\n\r\n this.layout.Sections.forEach(section => {\r\n this.checkRequiredFields(section);\r\n this.filterAvailableFields(section);\r\n this.reorderAvailableFields(section);\r\n this.checkColumnCounts(section);\r\n });\r\n }\r\n\r\n layoutTypeChanged() {\r\n if (this.unsavedFieldChanges) {\r\n const dRef = this.dialog.open(LayoutUnsavedChangesDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n enableSave: false,\r\n confirmDialog: true,\r\n dialogTitle: 'Changing the layout type will reset all field selections to their defaults. Do you want to continue?'\r\n }\r\n });\r\n this.subscriptions.push(dRef.afterClosed().subscribe(result => {\r\n switch (result) {\r\n case 'continueWithoutSave': {\r\n this.layout.LayoutTypeID = this.layoutType.Id;\r\n const defaultLayout = this.customLayoutService.savedLayouts.find(o => o.LayoutTypeID == this.layoutType.Id && o.TylerDefault);\r\n this.layout.Sections = System.copyObject(defaultLayout, new CustomLayout()).Sections;\r\n this.previousType = this.layoutType;\r\n break;\r\n }\r\n case 'cancel': {\r\n this.layoutType = this.previousType;\r\n break;\r\n }\r\n default: {\r\n this.layoutType = this.previousType;\r\n break;\r\n }\r\n }\r\n }));\r\n }\r\n else {\r\n this.layout.LayoutTypeID = this.layoutType.Id;\r\n const defaultLayout = this.customLayoutService.savedLayouts.find(o => o.LayoutTypeID == this.layoutType.Id && o.TylerDefault);\r\n this.layout.Sections = System.copyObject(defaultLayout, new CustomLayout()).Sections;\r\n this.previousType = this.layoutType;\r\n }\r\n }\r\n\r\n\r\n getFieldDisplayName(field: CustomLayoutField) {\r\n if (!this.v10) {\r\n let fieldName = '';\r\n if (field.DQFieldID > 0) {\r\n if (this.loginService.LoginSettings.V10) {\r\n const dqField = this.customLayoutService.dataQueryFields.find(f => f.ID == field.DQFieldID);\r\n if (dqField) {\r\n fieldName = dqField.DisplayName;\r\n }\r\n }\r\n else {\r\n const dqField = this.customLayoutService.dataQueryFields.find(f => f.ID == field.DQFieldID && f.CategoryID == field.CategoryId);\r\n if (dqField) {\r\n fieldName = dqField.DisplayName;\r\n }\r\n }\r\n }\r\n else if (field.SpecialFieldID > 0) {\r\n const sField = this.customLayoutService.specialFields.find(f => f.Id == field.SpecialFieldID);\r\n if (sField) {\r\n fieldName = sField.DisplayName;\r\n }\r\n }\r\n return (fieldName == 'Year End Date' || fieldName == 'Year Start Date') ? false : true;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n checkRequiredFields(section: CustomLayoutSection) {\r\n section.AvailableFields.forEach(field => {\r\n if (field.RequiredForDisplay && section.SelectedFields.find(o => o.Id == field.Id) == null) {\r\n section.SelectedFields.push(field);\r\n }\r\n });\r\n }\r\n\r\n filterAvailableFields(section: CustomLayoutSection) {\r\n section.SelectedFields.forEach(field => {\r\n let index = -1;\r\n if (field.DQFieldID > 0) {\r\n index = section.AvailableFields.findIndex(f => f.DQFieldID == field.DQFieldID);\r\n }\r\n else if (field.SpecialFieldID > 0) {\r\n index = section.AvailableFields.findIndex(f => f.SpecialFieldID == field.SpecialFieldID);\r\n }\r\n if (index >= 0) {\r\n section.AvailableFields.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n addField(section: CustomLayoutSection, index: number) {\r\n this.unsavedFieldChanges = true;\r\n section.SelectedFields.push(this.selectedFields[index]);\r\n let i = -1;\r\n if (this.selectedFields[index].DQFieldID > 0) {\r\n i = section.AvailableFields.findIndex(f => f.DQFieldID == this.selectedFields[index].DQFieldID);\r\n }\r\n else if (this.selectedFields[index].SpecialFieldID > 0) {\r\n i = section.AvailableFields.findIndex(f => f.SpecialFieldID == this.selectedFields[index].SpecialFieldID);\r\n }\r\n if (i >= 0) {\r\n section.AvailableFields.splice(i, 1);\r\n }\r\n this.selectedFields[index] = null;\r\n this.setFieldOrder(section);\r\n }\r\n\r\n drop(event: CdkDragDrop, section: CustomLayoutSection) {\r\n this.unsavedFieldChanges = true;\r\n moveItemInArray(section.SelectedFields, event.previousIndex, event.currentIndex);\r\n this.setFieldOrder(section);\r\n }\r\n\r\n setFieldOrder(section: CustomLayoutSection) {\r\n for (let i = 0; i < section.SelectedFields.length; i++) {\r\n section.SelectedFields[i].Order = i + 1;\r\n }\r\n }\r\n\r\n removeItemClick(section: CustomLayoutSection, index: number) {\r\n this.unsavedFieldChanges = true;\r\n const field = section.SelectedFields[index];\r\n section.AvailableFields.push(field);\r\n section.SelectedFields.splice(index, 1);\r\n this.reorderAvailableFields(section);\r\n this.setFieldOrder(section);\r\n }\r\n\r\n reorderAvailableFields(section: CustomLayoutSection) {\r\n section.AvailableFields.sort((a: CustomLayoutField, b: CustomLayoutField): number => {\r\n let aName = '';\r\n let bName = '';\r\n let comparison = 0;\r\n\r\n if (a.DQFieldID > 0) {\r\n const aField = this.customLayoutService.dataQueryFields.find(f => f.ID == a.DQFieldID);\r\n if (aField) {\r\n aName = aField.DisplayName;\r\n }\r\n }\r\n else if (a.SpecialFieldID > 0) {\r\n const aField = this.customLayoutService.specialFields.find(f => f.Id == a.SpecialFieldID);\r\n if (aField) {\r\n aName = aField.DisplayName;\r\n }\r\n }\r\n\r\n if (b.DQFieldID > 0) {\r\n const bField = this.customLayoutService.dataQueryFields.find(f => f.ID == b.DQFieldID);\r\n if (bField) {\r\n bName = bField.DisplayName;\r\n }\r\n }\r\n else if (b.SpecialFieldID > 0) {\r\n const bField = this.customLayoutService.specialFields.find(f => f.Id == b.SpecialFieldID);\r\n if (bField) {\r\n bName = bField.DisplayName;\r\n }\r\n }\r\n\r\n if (aName > bName) {\r\n comparison = 1;\r\n }\r\n else if (aName < bName) {\r\n comparison = -1;\r\n }\r\n\r\n return comparison;\r\n });\r\n }\r\n\r\n checkColumnCounts(section: CustomLayoutSection) {\r\n const requiredColumnCount = section.Columns;\r\n const columnField = this.customLayoutService.specialFields.find(f => f.ColumnBreak == true);\r\n if (columnField) {\r\n let cf = section.AvailableFields.find(o => o.SpecialFieldID == columnField.Id);\r\n if (cf == null) {\r\n cf = section.SelectedFields.find(o => o.SpecialFieldID == columnField.Id);\r\n }\r\n if (cf == null) {\r\n cf = new CustomLayoutField();\r\n cf.SectionID = section.Id;\r\n cf.SpecialFieldID = columnField.Id;\r\n cf.AllowEdit = false;\r\n }\r\n\r\n const actualColumnnCount = section.SelectedFields.filter(f => f.SpecialFieldID == columnField.Id).length + 1;\r\n if (requiredColumnCount > actualColumnnCount) {\r\n for (let i = 0; i < requiredColumnCount - actualColumnnCount; i++) {\r\n section.SelectedFields.push(cf);\r\n }\r\n }\r\n else if (requiredColumnCount < actualColumnnCount) {\r\n let colsToRemove = actualColumnnCount - requiredColumnCount;\r\n for (let i = section.SelectedFields.length - 1; i >= 0; i--) {\r\n if (colsToRemove > 0) {\r\n if (section.SelectedFields[i].SpecialFieldID == columnField.Id) {\r\n section.SelectedFields.splice(i, 1);\r\n colsToRemove--;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n // const colBreakIndex = section.AvailableFields.findIndex(o => o.SpecialFieldID == columnField.Id);\r\n // if (colBreakIndex >= 0) {\r\n // section.AvailableFields.splice(colBreakIndex, 1);\r\n // }\r\n this.setFieldOrder(section);\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n revertChangesClick() {\r\n this.unsavedFieldChanges = false;\r\n this.setLayout(this.customLayoutService.selectedLayout);\r\n }\r\n\r\n setFieldsToDefault() {\r\n const defaultLayout = this.customLayoutService.savedLayouts.find(o => o.LayoutTypeID == this.layoutType.Id && o.TylerDefault);\r\n this.layout = System.copyObject(defaultLayout, new CustomLayout());\r\n this.layout.Name = '';\r\n this.layout.Description = '';\r\n this.layout.Id = null;\r\n this.layout.TylerDefault = false;\r\n this.layout.Owner = this.userService.currentUser.Id;\r\n }\r\n\r\n saveClick(close: boolean) {\r\n if (this.validate()) {\r\n this.customLayoutService.saveLayout(this.layout).subscribe(result => {\r\n if (result && result.Id > 0) {\r\n this.sharedService.showGoodSnackbar();\r\n this.unsavedChanges = false;\r\n\r\n if (close) {\r\n this.customLayoutService.getLayoutsByType(this.customLayoutService.selectedLayoutType.Id, this.yearService.defaultYear.Id, true).subscribe((layouts) => {\r\n if (this.customLayoutService.selectedLayoutType.Id != this.layoutType.Id)\r\n this.customLayoutService.selectedLayoutType = this.customLayoutService.layoutTypes.filter(t => t.Id == this.layoutType.Id)[0];\r\n this.customLayoutService.savedLayouts = layouts;\r\n this.customLayoutService.selectedLayout = result;\r\n this.dialogRef.close();\r\n });\r\n }\r\n else\r\n this.sharedService.showBadSnackbar();\r\n }\r\n });\r\n }\r\n }\r\n\r\n validate(): boolean {\r\n this.errors = [];\r\n let existingLayout = this.customLayoutService.savedLayouts.filter(f => f.Name == this.layout.Name && f.Id != this.layout.Id)[0];\r\n if (this.layout.Scope == 'Selected Sites' && !this.layout.SelectedSites) {\r\n this.errors.push({\r\n fieldRef: this.rbgScopeRef,\r\n fieldName: 'Scope',\r\n errorMsg: 'No Sites Selected.'\r\n });\r\n }\r\n if (!this.layout.Name) {\r\n this.errors.push({\r\n fieldRef: this.txtNameRef,\r\n fieldName: 'Name',\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n else if (existingLayout) {\r\n this.errors.push({\r\n fieldRef: this.txtNameRef,\r\n fieldName: 'Name',\r\n errorMsg: 'A layout with that name already exists.'\r\n });\r\n }\r\n return this.errors.length == 0;\r\n }\r\n\r\n layoutNameChanged() {\r\n this.unsavedChanges = true;\r\n }\r\n\r\n selectedSitesClick() {\r\n let selectedSitesString = this.layout.SelectedSites;\r\n if (!selectedSitesString) {\r\n selectedSitesString = '';\r\n }\r\n const selectedSites: SelectedSite[] = [];\r\n selectedSitesString.split(',').forEach(siteIdString => {\r\n const siteId = Number(siteIdString.trim());\r\n if (!isNaN(siteId)) {\r\n const ss = new SelectedSite();\r\n ss.Id = siteId;\r\n selectedSites.push(ss);\r\n }\r\n });\r\n const selectedSitesDialogBox = this.dialog.open(SelectedSitesDialogComponent, {\r\n disableClose: true,\r\n width: '700px',\r\n data: {\r\n selectedSites: selectedSites\r\n }\r\n });\r\n selectedSitesDialogBox.afterClosed().subscribe((results: SelectedSite[]) => {\r\n if (results) {\r\n this.layout.SelectedSites = results.map(o => o.Id).join(', ');\r\n }\r\n });\r\n }\r\n\r\n isSpecialFieldDraggable(field: CustomLayoutField): boolean {\r\n const specialField = this.customLayoutService.specialFields.find(o => o.Id == field.SpecialFieldID);\r\n return (!specialField || specialField.DefinesColumns || specialField.IsSection);\r\n }\r\n\r\n hideSectionChange(section: CustomLayoutSection) {\r\n this.hideChildSections(section, section.Hidden);\r\n }\r\n\r\n hideChildSections(section: CustomLayoutSection, hidden: boolean) {\r\n this.layout.Sections.forEach(s => {\r\n if (s.ParentSectionID == section.Id) {\r\n s.Hidden = hidden;\r\n s.ParentSectionIsHidden = hidden;\r\n this.hideChildSections(s, hidden);\r\n }\r\n });\r\n }\r\n\r\n hideDisableCheck(section: string): boolean {\r\n let disableHide: string[] = ['Event/Incident'];\r\n return disableHide.findIndex(x => x == section) != -1;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}","
\r\n {{isAcademicHistory ? 'Academic History' : 'Saved'}} Layouts\r\n
\r\n\r\n\r\n \r\n No Layouts Exist\r\n \r\n 0\">\r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Name\r\n \r\n \r\n {{element.Name}}\r\n \r\n \r\n\r\n \r\n \r\n Scope\r\n \r\n \r\n {{element.Scope}}\r\n \r\n \r\n\r\n \r\n \r\n Owner\r\n \r\n \r\n {{element.OwnerName}}\r\n \r\n \r\n\r\n \r\n \r\n Last Update\r\n \r\n \r\n {{element.LastUpOn | date: 'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Description\r\n {{element.Description}}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { CustomLayoutsService } from '../custom-layouts.service';\r\nimport { CustomLayout } from '../Models/custom-layout.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { GeneralConfirmationComponent } from '../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { Router } from '@angular/router';\r\nimport { LayoutEditorComponent } from '../layout-editor/layout-editor.component';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n selector: 'app-saved-layouts-dialog',\r\n templateUrl: './saved-layouts-dialog.component.html',\r\n styleUrls: ['./saved-layouts-dialog.component.css'],\r\n animations: [detailExpand]\r\n})\r\nexport class SavedLayoutsDialogComponent implements OnInit {\r\n\r\n layouts: CustomLayout[];\r\n columnsToDisplay = ['More', 'Name', 'Scope', 'OwnerName', 'LastUpOn', 'Actions'];\r\n dataSource = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n errors: ErrorList[] = [];\r\n userId: number;\r\n initialized = false;\r\n isAcademicHistory: boolean;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private customLayoutService: CustomLayoutsService,\r\n private yearService: YearService,\r\n private dialog: MatDialog,\r\n private userService: UserService,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.isAcademicHistory = this.router.url.indexOf('academicHistory') > -1 || this.router.url.indexOf('registrationEnrollment') > -1;\r\n this.userId = this.userService.currentUser.Id;\r\n this.getLayouts();\r\n this.customLayoutService.observableSavedLayoutsStream$.subscribe((layouts) => {\r\n this.layouts = layouts;\r\n this.getLayouts();\r\n });\r\n }\r\n\r\n getLayouts() {\r\n if (this.customLayoutService.savedLayouts) {\r\n this.layouts = this.customLayoutService.savedLayouts;\r\n this.setLayoutSource();\r\n }\r\n if (!this.customLayoutService.savedLayouts) {\r\n this.customLayoutService.getLayoutsByType(this.customLayoutService.selectedLayoutType.Id, this.yearService.defaultYear.Id, this.isAcademicHistory).subscribe(results => {\r\n this.customLayoutService.savedLayouts = results;\r\n this.layouts = results;\r\n this.setLayoutSource();\r\n });\r\n }\r\n }\r\n\r\n setLayoutSource() {\r\n this.initialized = true;\r\n this.dataSource.data = this.layouts.filter(l => l.TylerDefault == false);\r\n setTimeout(() => {\r\n this.dataSource.sort = this.sort;\r\n }, 0);\r\n }\r\n\r\n addLayoutClick() {\r\n let layoutsDialog = this.dialog.open(LayoutEditorComponent, { height: '80vh', minWidth: '1000px', disableClose: true });\r\n layoutsDialog.componentInstance.operation = 'Add';\r\n }\r\n\r\n editClick(layout: CustomLayout) {\r\n let layoutsDialog = this.dialog.open(LayoutEditorComponent, { height: '80vh', minWidth: '1000px', disableClose: true });\r\n layoutsDialog.componentInstance.operation = 'Edit';\r\n layoutsDialog.componentInstance.layout = layout;\r\n }\r\n\r\n duplicateClick(layout: CustomLayout) {\r\n let layoutsDialog = this.dialog.open(LayoutEditorComponent, { height: '80vh', minWidth: '1000px', disableClose: true });\r\n layoutsDialog.componentInstance.duplicate = true;\r\n layoutsDialog.componentInstance.operation = 'Add';\r\n layoutsDialog.componentInstance.layout = _.cloneDeep(layout);\r\n layoutsDialog.componentInstance.layout.Id = 0;\r\n }\r\n\r\n deleteClick(layout: CustomLayout) {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Layout';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete this layout?';\r\n deleteConfirmDialog.componentInstance.okButtonLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.customLayoutService.deleteLayout(layout.Id).subscribe(result => {\r\n if (result.toLowerCase() != 'success') {\r\n this.errors.push({\r\n fieldName: null,\r\n fieldRef: null,\r\n errorMsg: result\r\n });\r\n }\r\n else {\r\n this.customLayoutService.getLayoutsByType(this.customLayoutService.selectedLayoutType.Id, this.yearService.defaultYear.Id, true).subscribe((layouts) => {\r\n this.customLayoutService.savedLayouts = layouts;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n selectLayout(layout: CustomLayout) {\r\n this.dialogRef.close(layout);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.dataSource.expandAll(expand);\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","import { System } from './../../shared-components/System';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { CustomPage } from './models/custom-page.model';\r\nimport { CustomField } from './models/custom-field.model';\r\n\r\n\r\n@Injectable()\r\nexport class CustomPageService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n public getCustomPage(dataModuleName: string, id: number, idFieldName: string, aYIdentifier: string): Observable {\r\n let queryString = '';\r\n queryString += '?dataModuleName=' + dataModuleName;\r\n queryString += '&id=' + id;\r\n queryString += '&idFieldName=' + idFieldName;\r\n queryString += '&aYIdentifier=' + aYIdentifier;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetCustomPage' + queryString);\r\n }\r\n\r\n public saveFieldValues(fields: CustomField[], dataModuleName: string, id: number, idFieldName: string): Observable {\r\n let queryString = '';\r\n queryString += '?dataModuleName=' + dataModuleName;\r\n queryString += '&id=' + id;\r\n queryString += '&idFieldName=' + idFieldName;\r\n\r\n return this.http.post(System.apiURL.Student + 'SaveFieldValues' + queryString, fields);\r\n }\r\n\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[aria]'\r\n})\r\nexport class AriaDirective {\r\n\r\n static concatAriaStrings(colList:string[], dataList:string[]){\r\n let rowConcat:string = '';\r\n\r\n if(colList.length == dataList.length){\r\n for(var i = 0; i < colList.length; i++){\r\n rowConcat += colList[i] +' ' + (dataList[i] != null ? dataList[i] : '') + '. ';\r\n }\r\n }\r\n\r\n return rowConcat;\r\n } \r\n\r\n}\r\n","import {\r\n\tDirective, ElementRef,\r\n\tEventEmitter,\r\n\tHostBinding, HostListener,\r\n\tInput, OnDestroy, OnInit,\r\n\tOutput,\r\n\tTemplateRef,\r\n\tViewContainerRef\r\n} from '@angular/core';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[cdkDetailRow]'\r\n})\r\nexport class CdkDetailRowDirective implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n public row: any;\r\n public opened: boolean;\r\n private tRef: TemplateRef;\r\n private expandSubscription: Subscription;\r\n @Input() expandListener: EventEmitter;\r\n\r\n\t// Static Methods\r\n\tstatic getTableHeight(tableContainerRef: ElementRef): number {\r\n\t\t// PRE: a reference to the table's container\r\n\t\t// POST: returns the amount of space the table may take up\r\n\t\t// NOTE: this won't work if you have multiple dynamic elements one after the other; you'll need to adjust it\r\n\t\tconst tableHeightString = window.getComputedStyle(tableContainerRef.nativeElement.offsetParent, null).getPropertyValue('padding-bottom');\r\n let tableHeight = -(Number.parseInt(tableHeightString.replace('px', '')));\r\n\t\ttableHeight -= tableContainerRef.nativeElement.offsetTop;\r\n\t\tif (tableContainerRef) {\r\n\t\t\tif (tableContainerRef.nativeElement.nextElementSibling) {\r\n\t\t\t\ttableHeight += tableContainerRef.nativeElement.nextElementSibling.offsetTop;\r\n\t\t\t} else {\r\n if (tableContainerRef.nativeElement.offsetParent.clientHeight < tableContainerRef.nativeElement.offsetParent.offsetHeight) {\r\n tableHeight += tableContainerRef.nativeElement.offsetParent.clientHeight;\r\n } else {\r\n tableHeight += tableContainerRef.nativeElement.offsetParent.offsetHeight;\r\n }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn tableHeight;\r\n\t}\r\n\r\n\tstatic getTableWidth(tableContainerRef: ElementRef): number {\r\n\t\t// PRE: a reference to the table's container\r\n\t\t// POST: returns how much width the table may take up\r\n\t\tif (tableContainerRef) {\r\n\t\t\treturn tableContainerRef.nativeElement.scrollWidth;\r\n\t\t}\r\n\t}\r\n\r\n // Event Functions\r\n @HostBinding('class.expanded')\r\n get expended(): boolean {\r\n\t// console.log('hostbindng');\r\n\treturn this.opened;\r\n }\r\n\r\n @Input()\r\n set cdkDetailRow(value: any) {\r\n\t// console.log('cdbDetailRow');\r\n\tif (value !== this.row) {\r\n\t this.row = value;\r\n\t // this.render();\r\n\t}\r\n }\r\n\r\n @Input('cdkDetailRowTpl')\r\n set template(value: TemplateRef) {\r\n\t// console.log('cdkDetailRowTpl');\r\n\tif (value !== this.tRef) {\r\n\t this.tRef = value;\r\n\t}\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n \t// console.log('hostListener');\r\n\tthis.toggle();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n\t\tif (event.key == 'Enter' || event.key == ' ') {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n }\r\n\r\n @Output() toggleChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n \t// POST: subscribes to expansion\r\n \tif (this.expandListener != null) {\r\n \t\tthis.expandSubscription = this.expandListener.subscribe(expand => {\r\n \t\t\tif (expand && !this.opened) {\r\n \t\t\t\tthis.toggle();\r\n\t\t\t} else if (!expand && this.opened) {\r\n \t\t\t\tthis.toggle();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n }\r\n\r\n ngOnDestroy() {\r\n \t// POST: ends the subscription to expansion\r\n\t if (this.expandSubscription != null) {\r\n\t\t this.expandSubscription.unsubscribe();\r\n\t }\r\n }\r\n\r\n // Class Functions\r\n constructor(\r\n\tpublic vcRef: ViewContainerRef\r\n ) { }\r\n\r\n // Methods\r\n toggle(): void {\r\n\t// console.log('toggle');\r\n\tif (this.opened) {\r\n\t this.vcRef.clear();\r\n\t} else {\r\n\t this.render();\r\n\t}\r\n\tthis.opened = this.vcRef.length > 0;\r\n\tthis.toggleChange.emit(this);\r\n }\r\n\r\n private render(): void {\r\n\t// console.log('render');\r\n\tthis.vcRef.clear();\r\n\tif (this.tRef && this.row) {\r\n\t this.vcRef.createEmbeddedView(this.tRef, { $implicit: this.row });\r\n\t}\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, HostListener, Input, OnInit } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[debounce]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: DebounceDirective,\r\n multi: true,\r\n }],\r\n})\r\nexport class DebounceDirective implements ControlValueAccessor, OnInit {\r\n\r\n onChange: Function;\r\n onTouched: Function;\r\n\r\n @Input('debounce') debounceTime: number;\r\n\r\n private _timer: any = null;\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n private _renderer: Renderer2,\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (typeof this.debounceTime !== 'number') {\r\n // default debounce to 300ms\r\n this.debounceTime = 300;\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n input(value: string) {\r\n this.onChange(value);\r\n }\r\n\r\n writeValue(value: string) {\r\n const element = this._elementRef.nativeElement;\r\n this._renderer.setProperty(element, 'value', value);\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.onChange = this._debounce(fn);\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = this._debounce(fn);\r\n }\r\n\r\n // private\r\n private _debounce(fn: Function) {\r\n return (...args: any[]) => {\r\n if (this._timer) {\r\n clearTimeout(this._timer);\r\n }\r\n this._timer = setTimeout(() => {\r\n fn(...args);\r\n this._timer = null;\r\n }, this.debounceTime);\r\n };\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDecimalFormatValidator]'\r\n})\r\nexport class DecimalFormatValidatorDirective {\r\n\r\n private regex: RegExp = new RegExp(/^\\d*\\.?\\d{0,3}$/g);\r\n private negativeRegex: RegExp = new RegExp(/^[-]?\\d*\\.?\\d{0,3}$/g);\r\n private specialKeys: Array = ['Backspace', 'Tab', 'End', 'Home', 'Delete', 'ArrowLeft', 'ArrowRight'];\r\n @Input() allowNegativeValue: boolean;\r\n @Input() maxValue: number;\r\n\r\n constructor(\r\n private elementRef: ElementRef\r\n ) { }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n\r\n // Allow Backspace, tab, end, and home, delete, ArrowLeft, ArrowRight keys\r\n if (this.specialKeys.indexOf(event.key) !== -1 && (this.maxValue == null || (event.key != 'Delete' && event.key != 'Backspace'))) {\r\n return;\r\n }\r\n\r\n let next = '';\r\n const element = this.elementRef.nativeElement;\r\n const current = element.value;\r\n let selectionStart: number = element.selectionStart != null ? element.selectionStart : 0;\r\n let selectionEnd: number = element.selectionEnd != null ? element.selectionEnd : 0;\r\n const eventKeyValue = event.key != 'Delete' && event.key != 'Backspace' ? event.key : '';\r\n\r\n if (selectionStart == selectionEnd) {\r\n if (event.key == 'Delete' && selectionStart != current.length - 1) {\r\n selectionEnd = selectionEnd + 1;\r\n }\r\n else if (event.key == 'Backspace' && selectionStart != 0) {\r\n selectionStart = selectionStart - 1;\r\n }\r\n }\r\n\r\n if (selectionStart != selectionEnd) {\r\n next = current.replace(current.substring(selectionStart, selectionEnd), eventKeyValue);\r\n }\r\n else if (selectionStart == 0) {\r\n next = eventKeyValue.concat(current);\r\n }\r\n else if (selectionStart != current.length - 1) {\r\n next = current.substring(0, selectionStart) + eventKeyValue + current.substring(selectionStart);\r\n }\r\n else {\r\n next = current.concat(eventKeyValue);\r\n }\r\n\r\n if (this.allowNegativeValue == true) {\r\n if (next && !String(next).match(this.negativeRegex)) {\r\n event.preventDefault();\r\n }\r\n }\r\n else {\r\n if (next && !String(next).match(this.regex)) {\r\n event.preventDefault();\r\n }\r\n else if (this.maxValue != null && parseFloat(next) > this.maxValue) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n}\r\n","import {AfterViewChecked, Directive, ElementRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ExternalLink]'\r\n})\r\nexport class ExternalLinkDirective implements AfterViewChecked {\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n ngAfterViewChecked() {\r\n Array.from(this.el.nativeElement.querySelectorAll('a'))\r\n .forEach((el: any) => {\r\n el.setAttribute('target', '_blank');\r\n });\r\n }\r\n\r\n}\r\n","// Imports\r\nimport {\r\n\tDirective,\r\n\tInput,\r\n\tOnInit,\r\n\tHostListener,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {NgModel} from '@angular/forms';\r\n\r\n/** Summary\r\n * \tThe MaskDirective allows you to add the tag \"mask=...\" to an input tag to mask the typed input.\r\n * \tIt is compatible with [(ngModel)] and will update the model accordingly.\r\n * IT IS NOT COMPATIBLE WITH [(value)] AND IS THEREBY DEPRECIATED\r\n * \t@Input mask is a string of characters. MaskDirective creates a regular expression for it as follows:\r\n * \t [...] indicates that the characters within the brackets will be treated as a block\r\n * \t eg: [(999)]? means that the (999) can be omitted, but must be matched entirely if it is included\r\n * \t\t0-9 is any number\r\n * \t\ta-z is any letter\r\n * \t\t? means the preceding character is optional\r\n *\t\t+ means one or more of the preceding character\r\n *\t\t* means zero or more of the preceding character\r\n *\t\tany other character is literally that character\r\n *\t@WARNING This class must be custom-made to work with objects in the emitNewValue function. Currently works with:\r\n *\t\tDate\r\n */\r\n@Directive ({\r\n selector: '[mask]'\r\n})\r\nexport class MaskDirective implements OnInit {\r\n\r\n // Properties\r\n @Input('mask') mask: string;\r\n @Input() startingValue: string;\r\n @Output() ngModelChange: EventEmitter = new EventEmitter();\r\n oldValue: string;\r\n regExp: RegExp;\r\n allowableCharacters: RegExp[] = [];\r\n specialCharacters: string[] = [];\r\n maxLength = 0;\r\n performedMask = false;\r\n\r\n // Class Functions\r\n constructor (\r\n private element: ElementRef,\r\n\t\tprivate ngModel: NgModel\r\n ) {}\r\n\r\n // Event Functions\r\n ngOnInit () {\r\n // POST: constructs a regular expression from the input value, mask, while also determining special characters\r\n // NOTE: always adds found characters to allowable characters\r\n\r\n // Constructing regular expression\r\n let regExpString = '^';\r\n for (let i = 0; i < this.mask.length; i++) {\r\n\r\n // Skipping count symbols\r\n if (this.mask.charAt(i) == '?' || this.mask.charAt(i) == '*' || this.mask.charAt(i) == '+') {\r\n continue;\r\n }\r\n\r\n // Adding optional values\r\n const optional: boolean = this.mask.length > i + 1 && this.mask.charAt(i + 1) == '?';\r\n const anyNumber: boolean = this.mask.length > i + 1 && this.mask.charAt(i + 1) == '*';\r\n const oneOrMore: boolean = this.mask.length > i + 1 && this.mask.charAt(i + 1) == '+';\r\n\r\n\t\t\t// Adjusting for parenthetical\r\n\t\t\tif (this.mask.charAt(i) == '[') {\r\n\t\t\t\tregExpString += '((';\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (this.mask.charAt(i) == ']') {\r\n regExpString += ')';\r\n\t\t\t\tregExpString += optional ? '?' : '';\r\n\t\t\t\tregExpString += anyNumber ? '*' : '';\r\n\t\t\t\tregExpString += oneOrMore ? '+' : '';\r\n\t\t\t\tregExpString += '|$)';\r\n\t\t\t\tcontinue;\r\n }\r\n\r\n // Adding opening parenthetical\r\n\t\t\tregExpString += '(';\r\n\r\n\t\t\t// Add numbers\r\n if (this.mask.charAt(i).match(/\\d/)) {\r\n regExpString += '\\\\d';\r\n if (!this.allowableCharacters.includes(/\\d/)) {\r\n this.allowableCharacters.push(/\\d/);\r\n }\r\n } else if (this.mask.charAt(i).match(/[A-Za-z]/)) {\r\n regExpString += '[A-Za-z]';\r\n if (!this.allowableCharacters.includes(/[A-Za-z]/)) {\r\n this.allowableCharacters.push(/[A-Za-z]/);\r\n }\r\n } else {\r\n\r\n // Checking for regexp important characters\r\n switch (this.mask.charAt(i)) {\r\n case '(':\r\n regExpString += '\\\\(';\r\n break;\r\n case ')':\r\n regExpString += '\\\\)';\r\n break;\r\n case '.':\r\n regExpString += '\\\\.';\r\n break;\r\n case '$':\r\n regExpString += '\\\\$';\r\n break;\r\n case '^':\r\n regExpString += '\\\\^';\r\n break;\r\n case '\\\\':\r\n regExpString += '\\\\\\\\';\r\n break;\r\n default:\r\n regExpString += this.mask.charAt(i);\r\n }\r\n\r\n // Adding a special character if one was found\r\n if (!this.specialCharacters.includes(this.mask.charAt(i))) {\r\n this.specialCharacters.push(this.mask.charAt(i));\r\n }\r\n const allowedRegEx = new RegExp('\\\\' + this.mask.charAt(i));\r\n if (!this.allowableCharacters.includes(allowedRegEx)) {\r\n this.allowableCharacters.push(allowedRegEx);\r\n }\r\n }\r\n\r\n // Adding in optionals, end of string, and closing parenthetical\r\n\t\t\tregExpString += optional ? '?' : '';\r\n\t\t\tregExpString += anyNumber ? '*' : '';\r\n\t\t\tregExpString += oneOrMore ? '+' : '';\r\n\t\t\tregExpString += '|$)';\r\n\r\n // Adjusting max length\r\n if (oneOrMore || anyNumber) {\r\n this.maxLength = Infinity;\r\n } else if (this.maxLength != Infinity) {\r\n this.maxLength += 1;\r\n }\r\n }\r\n\r\n // Making the old value the starting value for first input\r\n\t\tthis.oldValue = this.startingValue;\r\n\r\n\t\t// Finalizing regExp\r\n regExpString += '$';\r\n this.regExp = new RegExp(regExpString);\r\n }\r\n\r\n @HostListener('blur')\r\n\tsaveToObjectModel () {\r\n \tthis.emitNewValue();\r\n\t}\r\n\r\n @HostListener('input', ['$event'])\r\n performMask (event) {\r\n // PRE: an event from element it is on\r\n // POST: performs the mask\r\n const currentValue: string = this.element.nativeElement.value;\r\n let newValue: string = currentValue;\r\n this.performedMask = true;\r\n\r\n // We don't want to perform input events if we're capturing ngModelChange\r\n if (!event || !event.data || !this.regExp) {\r\n this.oldValue = currentValue;\r\n return;\r\n }\r\n // Not implementing change if not allowable character or overflows\r\n let allowedCharacter = false;\r\n this.allowableCharacters.forEach (allowableCharacter => {\r\n allowedCharacter = event.data.match(allowableCharacter) != null || event.data == allowableCharacter || allowedCharacter;\r\n });\r\n if ((!allowedCharacter && this.oldValue != null) || this.element.nativeElement.value.length > this.maxLength) {\r\n this.element.nativeElement.value = this.oldValue;\r\n\t\t\tif (this.ngModel == null || typeof(this.ngModel.value) != 'object') {\r\n\t\t\t\tthis.emitNewValue();\r\n\t\t\t}\r\n return;\r\n }\r\n\r\n // If mask doesn't work, try to construct a new string\r\n if (!currentValue.match(this.regExp)) {\r\n let constructedValue = '';\r\n for (let i = 0; i < currentValue.length; i++) {\r\n let testValue = constructedValue + currentValue.charAt(i);\r\n\r\n // If the string at this point doesn't work, test aganist special characters\r\n if (!testValue.match(this.regExp)) {\r\n for (let j = 0; j < this.specialCharacters.length; j++) {\r\n testValue = constructedValue + this.specialCharacters[j];\r\n\r\n // If a special character makes it work, add that in and exit\r\n if (testValue.match(this.regExp)) {\r\n constructedValue = testValue;\r\n i--;\r\n break;\r\n }\r\n }\r\n } else {\r\n constructedValue = testValue;\r\n }\r\n }\r\n\r\n // If our new value works, use it\r\n if (constructedValue.match(this.regExp)) {\r\n newValue = constructedValue;\r\n } else if (this.oldValue != null) {\r\n newValue = this.oldValue;\r\n }\r\n }\r\n\r\n // Making our new element the old value\r\n this.oldValue = newValue;\r\n this.element.nativeElement.value = this.oldValue;\r\n if (this.ngModel == null || typeof(this.ngModel.value) != 'object') {\r\n\t\t\tthis.emitNewValue();\r\n\t\t}\r\n }\r\n\r\n emitNewValue () {\r\n\t\t// PRE: recently updated oldValue\r\n // POST: emits the oldValue as a newValue\r\n\r\n // Don't emit if no mask was performed\r\n if (!this.performedMask) {\r\n return;\r\n }\r\n\r\n // Emit the old value so long as we have an ngModel and it's not an object\r\n\t\tif (this.ngModel == null || typeof(this.ngModel.value) != 'object') {\r\n\t\t\tthis.ngModelChange.emit(this.oldValue);\r\n }\r\n\r\n // If it is an object, check if the value exists and emit the proper type\r\n else if (this.ngModel.value != null) {\r\n\t\t\tswitch (this.toType(this.ngModel.value)) {\r\n\t\t\t\tcase 'date':\r\n\t\t\t\t\tthis.ngModelChange.emit(new Date(this.oldValue));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n toType (object): string {\r\n \t// PRE: An object must be supplied. Anything else WILL break your code.\r\n\t\t// POST: returns the name of the object in lower case\r\n \treturn object.__proto__.constructor.name.toLowerCase();\r\n\t}\r\n}\r\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\r\nimport KeyDownEvent = JQuery.KeyDownEvent;\r\n\r\n@Directive({\r\n selector: '[maxPrecision]'\r\n})\r\nexport class MaxPrecisionDirective {\r\n\r\n // Properties\r\n @Input() maxPrecision: number;\r\n\r\n private allowedKeys: Array = [ 'Backspace', 'End', 'Home' ];\r\n private disallowedKeys: Array = ['Tab', 'Space'];\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('keydown', [ '$event' ])\r\n onKeyDown(event: KeyDownEvent) {\r\n\r\n // Allow Backspace, end, and home keys\r\n if (this.allowedKeys.includes(event.key)) {\r\n return;\r\n }\r\n\r\n // Don't allow tab or space\r\n if (this.disallowedKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n\r\n // Obtaining the new value\r\n let current: string = this.el.nativeElement.value;\r\n if (!current) {\r\n current = '';\r\n }\r\n const indexStart = event.target.selectionStart;\r\n const indexEnd = event.target.selectionEnd;\r\n const key = event.key;\r\n const next: string = current.slice(0, indexStart) + key + current.slice(indexEnd + Math.abs(0));\r\n const nextNumber: number = Number(next);\r\n\r\n // Obtaining the precision\r\n const precision = next.includes('.') ? next.length - next.indexOf('.') - 1 : -1;\r\n\r\n // Checking the new value\r\n if (\r\n precision <= this.maxPrecision\r\n && !isNaN(nextNumber)\r\n ) {\r\n return;\r\n }\r\n\r\n // Preventing if we haven't allowed it yet\r\n event.preventDefault();\r\n return;\r\n }\r\n}\r\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\r\nimport KeyDownEvent = JQuery.KeyDownEvent;\r\n\r\n@Directive({\r\n selector: '[maximumEnforce]'\r\n})\r\nexport class MaximumEnforceDirective {\r\n\r\n // Properties\r\n @Input() allowDecimal = false;\r\n @Input() maximumEnforce: number;\r\n\r\n private allowedKeys: Array = [ 'Backspace', 'End', 'Home' ];\r\n private disallowedKeys: Array = ['Tab', 'Space'];\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('keydown', [ '$event' ])\r\n onKeyDown(event: KeyDownEvent) {\r\n\r\n // Allow Backspace, end, and home keys\r\n if (this.allowedKeys.includes(event.key)) {\r\n return;\r\n }\r\n\r\n // Don't allow tab or space\r\n if (this.disallowedKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n\r\n // Obtaining the new value\r\n let current: string = this.el.nativeElement.value;\r\n if (!current) {\r\n current = '';\r\n }\r\n const indexStart = event.target.selectionStart;\r\n const indexEnd = event.target.selectionEnd;\r\n const key = event.key;\r\n const next: string = current.slice(0, indexStart) + key + current.slice(indexEnd + Math.abs(0));\r\n const nextNumber: number = Number(next);\r\n\r\n // Checking the new value\r\n if (next\r\n && (this.allowDecimal || !next.includes('.'))\r\n && !isNaN(nextNumber)\r\n && parseFloat(next) <= this.maximumEnforce\r\n ) {\r\n return;\r\n }\r\n\r\n // Preventing if we haven't allowed it yet\r\n event.preventDefault();\r\n return;\r\n }\r\n}\r\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\r\nimport KeyDownEvent = JQuery.KeyDownEvent;\r\n\r\n@Directive({\r\n selector: '[minimumEnforce]'\r\n})\r\nexport class MinimumEnforceDirective {\r\n\r\n // Properties\r\n @Input() allowDecimal = false;\r\n @Input() minimumEnforce: number;\r\n @Input() maximumEnforce: number;\r\n\r\n private allowedKeys: Array = [ 'Backspace', 'End', 'Home' ];\r\n private disallowedKeys: Array = ['Tab', ' '];\r\n private numberOfCharacters\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('keydown', [ '$event' ])\r\n onKeyDown(event: KeyDownEvent) {\r\n const minimumEnforceString = this.minimumEnforce.toString();\r\n const maximumEnforceString = this.maximumEnforce.toString();\r\n\r\n // If the number of characters is not supplied, assume it is equal to the minimum enforce\r\n if (!this.maximumEnforce) {\r\n this.numberOfCharacters = minimumEnforceString.length;\r\n } else {\r\n if (maximumEnforceString.includes('.')) {\r\n this.numberOfCharacters = maximumEnforceString.slice(0, maximumEnforceString.indexOf('.')).length;\r\n } else {\r\n this.numberOfCharacters = maximumEnforceString.length;\r\n }\r\n }\r\n\r\n // If the number of characters is greater than the minimum enforced value,\r\n if (this.numberOfCharacters > minimumEnforceString.length) {\r\n return;\r\n }\r\n\r\n // Allow Backspace, end, and home keys\r\n if (this.allowedKeys.includes(event.key)) {\r\n return;\r\n }\r\n\r\n // Don't allow tab or space\r\n if (this.disallowedKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n\r\n // Obtaining the new value\r\n let current: string = this.el.nativeElement.value;\r\n if (!current) {\r\n current = '';\r\n }\r\n const indexStart = event.target.selectionStart;\r\n const indexEnd = event.target.selectionEnd;\r\n const key = event.key;\r\n let next: string = current.slice(0, indexStart) + key + current.slice(indexEnd + Math.abs(0));\r\n let nextNumber: number = Number(next);\r\n next = nextNumber.toString(); // This is weird, but it trims all leading 0s\r\n\r\n // If we're allowing a decimal, we need to truncate it to the number of positions we have\r\n let checkValue = this.minimumEnforce;\r\n let checkValueString = checkValue.toString();\r\n const checkDecimalIndex = checkValue.toString().indexOf('.');\r\n if (this.allowDecimal && checkDecimalIndex >= 0) {\r\n const nextDecimalIndex = next.indexOf('.');\r\n if (nextDecimalIndex >= 0) {\r\n const nextPrecision = next.length - nextDecimalIndex - 1;\r\n if (nextPrecision > 0) {\r\n checkValueString = checkValueString.slice(0, checkDecimalIndex) + checkValueString.slice(checkDecimalIndex, checkDecimalIndex + nextPrecision + 1);\r\n checkValue = Number.parseFloat(checkValueString);\r\n } else {\r\n checkValue = Math.floor(checkValue);\r\n }\r\n } else {\r\n checkValue = Math.floor(checkValue);\r\n }\r\n }\r\n\r\n // If the next value has less length than the minimum enforce, we need to pad with the minimum value\r\n if (!next.includes('.') && next.length < minimumEnforceString.length) {\r\n let newValueString = next;\r\n for (let i = next.length; i < minimumEnforceString.length; i++) {\r\n newValueString += minimumEnforceString[i];\r\n }\r\n nextNumber = Number.parseFloat(newValueString);\r\n }\r\n\r\n // Checking the new value\r\n if (\r\n (this.allowDecimal || !next.includes('.'))\r\n && !isNaN(nextNumber)\r\n && nextNumber >= checkValue\r\n ) {\r\n return;\r\n }\r\n\r\n // Preventing if we haven't allowed it yet\r\n event.preventDefault();\r\n return;\r\n }\r\n}\r\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[numbers-only]'\r\n})\r\nexport class NumbersOnlyDirective {\r\n // Allow numbers only\r\n private regex: RegExp = new RegExp(/^[0-9]*$/g);\r\n private regexWithDecimal: RegExp = new RegExp(/^[0-9]*(.[0-9]*)?$/g);\r\n @Input() allowDecimal = false;\r\n @Input() ignoreNumbersOnly = false;\r\n\r\n // Allow key codes for special events. Reflect :\r\n // Backspace, tab, end, home\r\n private specialKeys: Array = [ 'Backspace', 'Tab', 'End', 'Home' ];\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n @HostListener('keydown', [ '$event' ])\r\n onKeyDown(event: KeyboardEvent) {\r\n if (!this.ignoreNumbersOnly) {\r\n\r\n // Allow Backspace, tab, end, and home keys\r\n if (this.specialKeys.indexOf(event.key) !== -1) {\r\n return;\r\n }\r\n\r\n // Do not use event.keycode this is deprecated.\r\n // See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\r\n const current: string = this.el.nativeElement.value;\r\n // We need this because the current value on the DOM element\r\n // is not yet updated with the value from this event\r\n const next: string = current.concat(event.key);\r\n if (\r\n next\r\n && (\r\n (\r\n !String(next).match(this.regex)\r\n && !this.allowDecimal\r\n )\r\n || (\r\n !String(next).match(this.regexWithDecimal)\r\n && this.allowDecimal\r\n )\r\n )\r\n ) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n}\r\n","export class EFormAttachment {\r\n ID: number = null;\r\n Name = '';\r\n OriginalFileName = '';\r\n FileDataBase64 = '';\r\n FileType = '';\r\n MIMEType = '';\r\n FileExtension = '';\r\n AddedBy: number = null;\r\n AddedOn: Date = null;\r\n LastUpBy: number = null;\r\n LastUpOn: Date = null;\r\n DelStatus = false;\r\n }","import { EFormRow } from './e-form-row.model';\r\nimport { EFormControl } from './e-form-control.model';\r\n\r\nexport class EFormColumn {\r\n Id: number;\r\n Height = 100;\r\n Rows: EFormRow[] = [];\r\n Controls: EFormControl[] = [];\r\n Alignment = 'flex-start';\r\n Width: '100%';\r\n\r\n // Tree View Property\r\n Expanded: boolean;\r\n}","\r\n\r\nexport class EFormConfiguration {\r\n ReadOnly = false;\r\n ShowSubmittedBy = false;\r\n Title = '';\r\n DisableSubmission = false;\r\n AlwaysShowAllConditionals = false;\r\n ViewMode: enmEFormViewModes = enmEFormViewModes.Template;\r\n ShowPrintButton = false;\r\n ParentHandlesSave = false;\r\n UseInstance = true;\r\n PageFlag = false;\r\n CustomFieldsFlag = false;\r\n HideTitle = false;\r\n IsSurvey = false;\r\n IsMobile = false;\r\n InformationalMessage = '';\r\n IsMobilePreview = false;\r\n BasePage = false;\r\n CSTObjectID: number;\r\n CSTFieldsManageOwnData = true;\r\n PersistCustomFieldDataInMemory = false;\r\n AllowTabs = true;\r\n AllowPages = true;\r\n AllowConditionalObjects = true;\r\n AllowInstanceSpecificText = false;\r\n IsPreview = false;\r\n NewForm = false;\r\n PageObjectType = '';\r\n AllowAttachmentControls = true;\r\n HideLanguageDropDown = false;\r\n ShowHeader = false;\r\n HeaderSelectedLogo = 0;\r\n ShowHeaderSchoolName = false;\r\n ShowHeaderSchoolAddress = false;\r\n}\r\n\r\nexport enum enmEFormViewModes {\r\n Template = 'template',\r\n Instance = 'instance',\r\n Review = 'review',\r\n Form = 'form',\r\n Page = 'page',\r\n CustomPage = 'customPage',\r\n FRMA = 'frma'\r\n}\r\n\r\nexport enum PageObjectTypes {\r\n Student = 'student',\r\n Staff = 'staff',\r\n Other = 'other'\r\n}","import { Lookup } from '../lookup/lookup.model';\r\nimport { EFormAttachment } from './e-form-attachment.model';\r\n\r\nexport class EFormControl {\r\n Id: number;\r\n ControlType: string;\r\n DataType = 'string';\r\n Value: any;\r\n Label = '';\r\n IsRequired = false;\r\n DropdownOptions: Lookup[] = [];\r\n Width: string;\r\n Indent: number;\r\n NoteRows: number;\r\n ParentObjectId: number;\r\n Condition: string | boolean;\r\n TextProvidedOnInstance = false;\r\n Instructions = '';\r\n InstructionFormat = 'plainText';\r\n LinkedDBField: number;\r\n LinkedCSTFieldName: string;\r\n AttachmentId: number;\r\n PreviousAttachmentId: number;\r\n Attachment: EFormAttachment;\r\n StoreLocation = 'eForm';\r\n StuPortCategoryId: number;\r\n FormDocTypeId: number;\r\n Visible: boolean;\r\n VerticalAlignment: string;\r\n RemoveBottomPadding: boolean;\r\n HasError: boolean;\r\n CustomField: boolean;\r\n CustomFieldName: string;\r\n CustomFieldID: number;\r\n CustomFieldControlTypeID: number;\r\n CustomFieldRefName: string;\r\n CustomFieldTemplateHeight: number;\r\n CustomFieldTemplateWidth: number;\r\n CustomFieldBasePage: boolean;\r\n CustomFieldAllowControlToHandleOwnData: boolean;\r\n HideLabel: boolean;\r\n validateFunction: Function;\r\n DesignPageIndex: number;\r\n IsCritical: boolean;\r\n SurveyFieldID: number;\r\n CannotBeRemoved: boolean;\r\n HintLabel: string;\r\n Editable = true;\r\n Height = '50px';\r\n PaddingTop = '0px';\r\n}","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
0\" cdkDropList class=\"dropList\" [cdkDropListData]=\"column.Rows\"\r\n [cdkDropListEnterPredicate]=\"rowPredicate\" (cdkDropListDropped)=\"rowDropped($event)\">\r\n \r\n \r\n \r\n
\r\n \r\n
0\" class=\"dropList eFormColumn\" cdkDropList\r\n [ngStyle]=\"{'align-items': column.Alignment}\" [cdkDropListData]=\"column.Controls\"\r\n (cdkDropListDropped)=\"controlDropped($event)\" style=\"flex:1;\" #controlList\r\n [cdkDropListConnectedTo]=\"connectedDropLists\">\r\n \r\n \r\n \r\n
\r\n
\r\n Column - Drop Controls Here\r\n
\r\n
\r\n\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, ViewChildren, ElementRef, QueryList } from '@angular/core';\r\nimport { EFormColumn } from '../../../../shared-components/e-forms/e-form-column.model';\r\nimport { EFormService } from '../../../../shared-components/e-forms/e-form.service';\r\nimport { CdkDragDrop, moveItemInArray, transferArrayItem, CdkDrag } from '@angular/cdk/drag-drop';\r\nimport { Subscription } from 'rxjs';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { EFormControl } from '../../../../shared-components/e-forms/e-form-control.model';\r\nimport * as _ from 'lodash';\r\nimport { EFormRow } from '../../../../shared-components/e-forms/e-form-row.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { GeneralConfirmationComponent } from '../../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { EFormDesignerService } from '../e-form-designer.service';\r\nimport { EFormRrowColumnLocationComponent } from '../e-form-row-column-location/e-form-row-column-location';\r\nimport { EFormConfiguration } from '../../e-form-config.model';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'e-form-column',\r\n templateUrl: './e-form-column.component.html',\r\n styleUrls: ['./e-form-column.component.css']\r\n})\r\nexport class EFormColumnComponent implements OnInit, OnDestroy {\r\n\r\n @Input() column: EFormColumn;\r\n @Input() hideEditHeader: boolean;\r\n @Input() config: EFormConfiguration;\r\n @Output() columnClickEvent: EventEmitter = new EventEmitter();\r\n subscriptions: Subscription[] = [];\r\n isSelected = false;\r\n isDragging = false;\r\n connectedDropLists: string[] = [];\r\n @ViewChildren('controlList', { read: ElementRef }) set sort(lists: QueryList) {\r\n lists.forEach(list => {\r\n this.eFormDesignerService.connectedDropListAdd(list.nativeElement.id);\r\n });\r\n }\r\n\r\n constructor(\r\n private eFormService: EFormService,\r\n private eFormDesignerService: EFormDesignerService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setSelectedStatus();\r\n this.subscriptions.push(this.eFormDesignerService.observableselectedElementChangedStream$.subscribe(o => {\r\n this.setSelectedStatus();\r\n }));\r\n this.subscriptions.push(this.eFormDesignerService.observableDragStartStream$.subscribe(() => {\r\n this.isDragging = true;\r\n }));\r\n this.subscriptions.push(this.eFormDesignerService.observableDragEndStream$.subscribe(() => {\r\n this.isDragging = false;\r\n }));\r\n this.connectedDropLists = this.eFormDesignerService.connectedDropLists;\r\n this.subscriptions.push(this.eFormDesignerService.observableConnectedDropListsStream$.subscribe((list) => {\r\n this.connectedDropLists = list;\r\n }));\r\n }\r\n\r\n setSelectedStatus() {\r\n if (this.eFormDesignerService.selectedElementType == 'column' && this.eFormDesignerService.selectedColumn == this.column) {\r\n setTimeout(() => {\r\n this.isSelected = true;\r\n }, 0);\r\n }\r\n else {\r\n setTimeout(() => {\r\n this.isSelected = false;\r\n }, 0);\r\n }\r\n }\r\n\r\n columnClick(event) {\r\n event.preventDefault();\r\n this.columnClickEvent.emit(true);\r\n this.eFormDesignerService.focusOnColumn(this.column);\r\n event.stopPropagation();\r\n this.eFormDesignerService.openPropertiesTab();\r\n }\r\n\r\n controlDropped(event: CdkDragDrop) {\r\n if (event.container.id === event.previousContainer.id) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n }\r\n else if (event.previousContainer.id.indexOf('controlPalette') >= 0) {\r\n const newControl = _.cloneDeep(event.item.data);\r\n this.eFormDesignerService.assignControlsNewID([newControl]);\r\n //newControl.Id = ++this.eFormService.selectedFormData.LastUsedControlId;\r\n // this.column.Controls.push(newControl);\r\n this.column.Controls.splice(event.currentIndex, 0, newControl);\r\n }\r\n else {\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n }\r\n if (this.column.Rows && this.column.Rows.length > 0) {\r\n this.column.Controls.forEach(control => {\r\n const newRow = new EFormRow();\r\n newRow.Controls = [];\r\n newRow.Controls.push(control);\r\n this.column.Rows.push(newRow);\r\n });\r\n this.column.Controls = [];\r\n }\r\n this.eFormDesignerService.getAllFormControls();\r\n this.eFormDesignerService.focusOnControl(event.container.data[event.currentIndex]);\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n dragStart() {\r\n this.eFormDesignerService.dragStart();\r\n }\r\n\r\n dragEnd() {\r\n this.eFormDesignerService.dragEnd();\r\n }\r\n\r\n rowDropped(event: CdkDragDrop) {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(this.column.Rows, event.previousIndex, event.currentIndex);\r\n }\r\n }\r\n\r\n rowPredicate(item: CdkDrag) {\r\n if (this.column && this.column.Rows && this.column.Rows.find(o => o == item.data)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n deleteClick() {\r\n if (this.eFormDesignerService.columnHasNonRemovableControls(this.column)) {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Column';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'This column contains controls that cannot be removed.';\r\n }\r\n else {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Column';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete this column and all its content?';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.eFormDesignerService.deleteSelectedElement();\r\n }\r\n });\r\n }\r\n }\r\n\r\n copyClick() {\r\n this.eFormDesignerService.locationToAdd = '';\r\n const copyConfirmDialog = this.dialog.open(EFormRrowColumnLocationComponent, {\r\n disableClose: true,\r\n });\r\n copyConfirmDialog.componentInstance.headerLabel = 'Copy Column';\r\n copyConfirmDialog.componentInstance.cotrolType = 'column';\r\n this.subscriptions.push(copyConfirmDialog.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.eFormDesignerService.locationToAdd = result;\r\n this.eFormDesignerService.addColumn();\r\n }\r\n else {\r\n this.eFormDesignerService.locationToAdd = '';\r\n }\r\n }));\r\n }\r\n\r\n getControlId(index: number, control: EFormControl) {\r\n return control.Id;\r\n }\r\n\r\n getRowId(index: number, row: EFormRow) {\r\n return index;\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
No text entered.
\r\n
[{{control.Instructions}}]
\r\n
No instructions\r\n entered.
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n {{chip.CodeDescription}}\r\n \r\n
Buttons: No choices\r\n provided.
\r\n
\r\n\r\n \r\n
\r\n {{ !control.HideLabel ? control.Label : ''}} *\r\n
\r\n\r\n \r\n
\r\n {{ !control.HideLabel ? control.Label : ''}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{option.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
Radio Buttons: No\r\n choices provided.
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n {{!control.HideLabel ? control.Label : \"\"}}\r\n  *\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
Select field
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n","import { Component, OnInit, Input, OnDestroy, TemplateRef } from '@angular/core';\r\nimport { EFormControl } from '../../../../shared-components/e-forms/e-form-control.model';\r\nimport { EFormService } from '../../../../shared-components/e-forms/e-form.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { GeneralConfirmationComponent } from '../../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { EFormAttachment } from '../../../../shared-components/e-forms/e-form-attachment.model';\r\nimport { EFormDesignerService } from '../e-form-designer.service';\r\nimport { EFormConfiguration } from '../../e-form-config.model';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { CustomDataTemplateRef } from '../../../../shared-modules/customization-framework/models/custom-data-template-ref.model';\r\n\r\n@AutoUnsubscribe({includeArrays: true})\r\n@Component({\r\n selector: 'e-form-control',\r\n templateUrl: './e-form-control.component.html',\r\n styleUrls: ['./e-form-control.component.css']// ,\r\n // encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EFormControlComponent implements OnInit, OnDestroy {\r\n\r\n @Input() control: EFormControl;\r\n @Input() config: EFormConfiguration;\r\n subscriptions: Subscription[] = [];\r\n isSelected = false;\r\n isDragging = false;\r\n radioValues: string[] = [];\r\n radioLabels: string[] = [];\r\n radioIds: string[] = [];\r\n isDevMode: boolean;\r\n basePage = false;\r\n contentTemplate: TemplateRef;\r\n\r\n constructor(\r\n private eFormService: EFormService,\r\n private dialog: MatDialog,\r\n private eFormDesignerService: EFormDesignerService,\r\n private loginService: LoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this.control.Width) {\r\n if (!this.control.Width.toString().includes('px') && !this.control.Width.toString().includes('%')) {\r\n this.control.Width = this.control.Width.toString() + 'px';\r\n }\r\n }\r\n this.isDevMode = this.loginService.LoginSettings.CustomizationDevMode;\r\n this.basePage = this.config && this.config.BasePage ? this.config.BasePage : false;\r\n\r\n this.setSelectedStatus();\r\n this.subscriptions.push(this.eFormDesignerService.observableselectedElementChangedStream$.subscribe(o => {\r\n this.setSelectedStatus();\r\n }));\r\n this.subscriptions.push(this.eFormDesignerService.observableDragStartStream$.subscribe(() => {\r\n this.isDragging = true;\r\n }));\r\n this.subscriptions.push(this.eFormDesignerService.observableDragEndStream$.subscribe(() => {\r\n this.isDragging = false;\r\n this.basePage = this.config && this.config.BasePage ? this.config.BasePage : false;\r\n }));\r\n if (this.control.ControlType == this.eFormService.controlTypes.radioButtons) {\r\n this.setUpRadioButtons();\r\n this.eFormDesignerService.observableRadioOptionsChangedStream$.subscribe(() => {\r\n if (this.eFormDesignerService.selectedElementType == 'control' && this.eFormDesignerService.selectedControl == this.control) {\r\n this.setUpRadioButtons();\r\n }\r\n });\r\n }\r\n else if (this.control.ControlType == this.eFormService.controlTypes.image || this.control.ControlType == this.eFormService.controlTypes.linkToFile || this.control.ControlType == this.eFormService.controlTypes.attachment) {\r\n this.getAttachment();\r\n }\r\n if (this.control.ControlType == 'component') {\r\n if (this.eFormService.contentTemplates && this.eFormService.contentTemplates.length > 0) {\r\n const customDataTemplateRef: CustomDataTemplateRef = this.eFormService.contentTemplates.find(ct => ct.RefName == this.control.CustomFieldRefName);\r\n if (customDataTemplateRef) {\r\n this.contentTemplate = customDataTemplateRef.TemplateRef;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setSelectedStatus() {\r\n if (this.eFormDesignerService.selectedElementType == 'control' && this.eFormDesignerService.selectedControl == this.control) {\r\n setTimeout(() => {\r\n this.isSelected = true;\r\n }, 0);\r\n }\r\n else {\r\n setTimeout(() => {\r\n this.isSelected = false;\r\n }, 0);\r\n }\r\n }\r\n\r\n getAttachment() {\r\n if (this.control.AttachmentId && !this.control.Attachment) {\r\n this.subscriptions.push(this.eFormService.getEFormAttachment(this.control.AttachmentId).subscribe(attachment => {\r\n this.control.Attachment = attachment;\r\n // this.control.PreviousAttachmentId = this.control.AttachmentId;\r\n }));\r\n }\r\n else if (!this.control.Attachment) {\r\n this.control.Attachment = new EFormAttachment();\r\n }\r\n }\r\n\r\n setUpRadioButtons() {\r\n this.radioIds = [];\r\n this.radioValues = [];\r\n this.radioLabels = [];\r\n this.control.DropdownOptions.forEach(opt => {\r\n this.radioValues.push(opt.Code);\r\n this.radioLabels.push(opt.CodeDescription);\r\n const id = 'rbDesigner' + opt.Code.replace(' ', '_');\r\n this.radioIds.push(id);\r\n });\r\n }\r\n\r\n controlClick() {\r\n this.eFormDesignerService.focusOnControl(this.control);\r\n this.eFormDesignerService.openPropertiesTab();\r\n event.stopPropagation();\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n deleteClick() {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete this control: ' + this.eFormService.formatControlType(this.control.ControlType) + '?';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.eFormDesignerService.deleteSelectedElement();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { EFormPage } from './e-form-page.model';\r\n\r\nexport class EFormTab {\r\n Id: number;\r\n Name: string;\r\n Order: number;\r\n Pages: EFormPage[] = [];\r\n ParentObjectId: number;\r\n Condition: string | boolean;\r\n Visible: boolean;\r\n\r\n // Tree View Property\r\n Expanded: boolean;\r\n}","import { EFormColumn } from './e-form-column.model';\r\nimport { EFormRow } from './e-form-row.model';\r\n\r\nexport class EFormPage {\r\n Id: number;\r\n Name: string;\r\n Order: number;\r\n Columns: EFormColumn[];\r\n Rows: EFormRow[];\r\n ParentObjectId: number;\r\n Condition: string | boolean;\r\n Visible: boolean;\r\n\r\n // Tree View Property\r\n Expanded: boolean;\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport { EFormTab } from '../e-form-tab.model';\r\nimport { EFormControl } from '../e-form-control.model';\r\nimport { Lookup } from '../../lookup/lookup.model';\r\nimport { EFormPage } from '../e-form-page.model';\r\nimport { EFormColumn } from '../e-form-column.model';\r\nimport { EFormRow } from '../e-form-row.model';\r\nimport { EFormMergeField } from '../e-form-merge-field.model';\r\nimport { EFormService } from '../e-form.service';\r\nimport { EFormDataObject } from '../e-formDataObject.model';\r\nimport { CSTField } from '../../../shared-modules/customization-framework/models/custom-data-field.model';\r\nimport { EFormSurveyField } from '../e-form-survey-field.model';\r\nimport { CustomFieldControlTypeEnum } from '../../../shared-modules/customization-framework/models/custom-data-control-type.model';\r\n\r\n\r\n@Injectable()\r\nexport class EFormDesignerService {\r\n masterControlList: EFormControl[] = [];\r\n promptForDataTypes = ['buttons', 'checkbox', 'checkboxWithTextbox', 'dropdown', 'note', 'radioButtons', 'textbox'];\r\n staffRoles: Lookup[] = [];\r\n studentPortfolioCategories: Lookup[] = [];\r\n documentTypes: Lookup[] = [];\r\n availableCSTFields: CSTField[] = [];\r\n\r\n private _selectedTab: EFormTab;\r\n get selectedTab(): EFormTab {\r\n return this._selectedTab;\r\n }\r\n private _selectedPage: EFormPage;\r\n get selectedPage(): EFormPage {\r\n return this._selectedPage;\r\n }\r\n private _selectedColumn: EFormColumn;\r\n get selectedColumn(): EFormColumn {\r\n return this._selectedColumn;\r\n }\r\n private _selectedRow: EFormRow;\r\n get selectedRow(): EFormRow {\r\n return this._selectedRow;\r\n }\r\n private _selectedControl: EFormControl;\r\n get selectedControl(): EFormControl {\r\n return this._selectedControl;\r\n }\r\n private _selectedElementType: string;\r\n get selectedElementType(): string {\r\n return this._selectedElementType;\r\n }\r\n\r\n locationToAdd: string;\r\n showSliderPanel: boolean;\r\n\r\n\r\n public observableselectedElementChanged = new Subject();\r\n observableselectedElementChangedStream$ = this.observableselectedElementChanged.asObservable();\r\n\r\n connectedDropLists: string[] = [];\r\n public observableConnectedDropLists = new Subject();\r\n observableConnectedDropListsStream$ = this.observableConnectedDropLists.asObservable();\r\n\r\n public observableTabNameChanged = new Subject();\r\n tabNameChangedEvent = this.observableTabNameChanged.asObservable();\r\n\r\n public observablePagesChanged = new Subject();\r\n pagesChangedEvent = this.observablePagesChanged.asObservable();\r\n\r\n public observableDragStart = new Subject();\r\n observableDragStartStream$ = this.observableDragStart.asObservable();\r\n\r\n public observableDragEnd = new Subject();\r\n observableDragEndStream$ = this.observableDragEnd.asObservable();\r\n\r\n public observableControlsUpdated = new Subject();\r\n observableControlsUpdatedStream$ = this.observableControlsUpdated.asObservable();\r\n\r\n public observableRadioOptionsChanged = new Subject();\r\n observableRadioOptionsChangedStream$ = this.observableRadioOptionsChanged.asObservable();\r\n\r\n public observableMergeFieldClicked = new Subject();\r\n observableMergeFieldClickedStream$ = this.observableMergeFieldClicked.asObservable();\r\n\r\n public observableChoiceMergeFieldClicked = new Subject();\r\n observableChoiceMergeFieldClickedStream$ = this.observableChoiceMergeFieldClicked.asObservable();\r\n\r\n public observableCloseMergeFieldWindow = new Subject();\r\n observableCloseMergeFieldWindowStream$ = this.observableCloseMergeFieldWindow.asObservable();\r\n\r\n public observableOpenPropertiesTab = new Subject();\r\n observableOpenPropertiesTabStream$ = this.observableOpenPropertiesTab.asObservable();\r\n\r\n public observableOpenControlTab = new Subject();\r\n observableOpenControlTabStream$ = this.observableOpenControlTab.asObservable();\r\n\r\n public observableshowSliderPanel = new Subject();\r\n observableshowSliderPanelStream$ = this.observableshowSliderPanel.asObservable();\r\n\r\n public observableshowSliderPanelWidth = new Subject();\r\n observableshowSliderPanelWidthStream$ = this.observableshowSliderPanelWidth.asObservable();\r\n\r\n public observableSelectedPageChanged = new Subject();\r\n observableSelectedPageChangedStream$ = this.observableSelectedPageChanged.asObservable();\r\n\r\n constructor(private eFormService: EFormService) { }\r\n\r\n dragStart() {\r\n this.observableDragStart.next(true);\r\n }\r\n\r\n dragEnd() {\r\n this.observableDragEnd.next(true);\r\n }\r\n\r\n setUpCriticalChoices(surveyFields: EFormSurveyField[]) {\r\n surveyFields.forEach(sf => {\r\n if (sf.CriticalQuestion) {\r\n const control = this.masterControlList.find(o => o.SurveyFieldID == sf.ID);\r\n if (control) {\r\n sf.CriticalValues.forEach(val => {\r\n const opt = control.DropdownOptions.find(o => o.CodeDesc == val.Value);\r\n if (opt) {\r\n opt.IsCritical = true;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n setUpForm() {\r\n const tabIds: number[] = [0];\r\n const pageIds: number[] = [0];\r\n if (!this.eFormService.selectedFormData) {\r\n this.eFormService.selectedFormData = new EFormDataObject();\r\n }\r\n if (!this.eFormService.selectedFormData.Tabs || this.eFormService.selectedFormData.Tabs.length == 0) { // set up tabs\r\n this.eFormService.selectedFormData.Tabs = [];\r\n const tab = new EFormTab();\r\n tab.Name = 'Tab 1';\r\n this.eFormService.selectedFormData.Tabs.push(tab);\r\n }\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => { // set up pages\r\n if (tab.Id) {\r\n tabIds.push(tab.Id);\r\n }\r\n if (!tab.Pages || tab.Pages.length == 0) {\r\n tab.Pages = [];\r\n const page = new EFormPage();\r\n page.Name = 'Page 1';\r\n tab.Pages.push(page);\r\n }\r\n tab.Pages.forEach(page => { // make sure pages have at least one column\r\n if (page.Id) {\r\n pageIds.push(page.Id);\r\n }\r\n if (!page.Columns || page.Columns.length == 0) {\r\n page.Columns = [];\r\n const column = new EFormColumn();\r\n // column.Id = this.getMaxColumnId() + 1;\r\n page.Columns.push(column);\r\n }\r\n });\r\n });\r\n this.getAllFormControls();\r\n if (!this.eFormService.selectedFormData.LastUsedControlId) {\r\n this.eFormService.selectedFormData.LastUsedControlId = this.getMaxControlId();\r\n }\r\n // we were not previously creating ids for tabs and pages, so we need to sync this for older forms.\r\n let maxTabId = Math.max(...tabIds);\r\n let maxPageId = Math.max(...pageIds);\r\n if (this.eFormService.selectedFormData.LastUsedTabId && this.eFormService.selectedFormData.LastUsedTabId > maxTabId) {\r\n maxTabId = this.eFormService.selectedFormData.LastUsedTabId;\r\n }\r\n if (this.eFormService.selectedFormData.LastUsedPageId && this.eFormService.selectedFormData.LastUsedPageId > maxPageId) {\r\n maxPageId = this.eFormService.selectedFormData.LastUsedPageId;\r\n }\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n if (!tab.Id) {\r\n tab.Id = ++maxTabId;\r\n }\r\n tab.Pages.forEach(page => {\r\n if (!page.Id) {\r\n page.Id = ++maxPageId;\r\n }\r\n });\r\n });\r\n this.eFormService.selectedFormData.LastUsedTabId = maxTabId;\r\n this.eFormService.selectedFormData.LastUsedPageId = maxPageId;\r\n\r\n }\r\n\r\n getMaxControlId(): number {\r\n this.getAllFormControls();\r\n const control = _.maxBy(this.masterControlList, o => o.Id);\r\n if (control) {\r\n return control.Id;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n\r\n getAllFormControls() {\r\n let controls: EFormControl[] = [];\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n tab.Pages.forEach(page => {\r\n page.Columns.forEach(column => {\r\n const colControls = this.getAllControlsByColumn(column);\r\n if (colControls.length > 0) {\r\n controls = controls.concat(colControls);\r\n }\r\n });\r\n });\r\n });\r\n\r\n this.masterControlList = controls;\r\n this.observableControlsUpdated.next(true);\r\n }\r\n\r\n getAllControlsByColumn(column: EFormColumn): EFormControl[] {\r\n let controls: EFormControl[] = [];\r\n if (column.Controls.length > 0) {\r\n controls = controls.concat(column.Controls);\r\n }\r\n column.Rows.forEach(row => {\r\n if (row.Controls.length > 0) {\r\n controls = controls.concat(row.Controls);\r\n }\r\n row.Columns.forEach(col => {\r\n const colControls = this.getAllControlsByColumn(col);\r\n if (colControls.length > 0) {\r\n controls = controls.concat(colControls);\r\n }\r\n });\r\n });\r\n return controls;\r\n }\r\n\r\n getAllControlsByRow(row: EFormRow): EFormControl[] {\r\n let controls: EFormControl[] = [];\r\n if (row.Controls.length > 0) {\r\n controls = controls.concat(row.Controls);\r\n }\r\n row.Columns.forEach(column => {\r\n if (column.Controls.length > 0) {\r\n controls = controls.concat(column.Controls);\r\n }\r\n column.Rows.forEach(r => {\r\n const rowControls = this.getAllControlsByRow(r);\r\n if (rowControls.length > 0) {\r\n controls = controls.concat(rowControls);\r\n }\r\n });\r\n });\r\n return controls;\r\n }\r\n\r\n assignControlsNewID(controls: EFormControl[]) {\r\n let maxId = this.getMaxControlId();\r\n\r\n for (let i = 1; i <= controls.length; i++) {\r\n controls[i - 1].Id = maxId + i;\r\n }\r\n }\r\n\r\n addRow(isMobile: boolean) {\r\n if (this.selectedColumn) {\r\n if (!this.selectedColumn.Rows || this.selectedColumn.Rows.length == 0) {\r\n this.selectedColumn.Rows = [];\r\n if (this.selectedColumn.Controls && this.selectedColumn.Controls.length > 0) {\r\n if (isMobile) {\r\n // mobile forms can only have one column\r\n this.selectedColumn.Controls.forEach(cnt => {\r\n const newRow = new EFormRow();\r\n newRow.Controls = [];\r\n newRow.Controls.push(cnt);\r\n this.selectedColumn.Rows.push(newRow);\r\n });\r\n }\r\n else {\r\n const newRow = new EFormRow();\r\n const pnl = _.cloneDeep(this.selectedColumn);\r\n newRow.Columns.push(pnl);\r\n this.selectedColumn.Rows.push(newRow);\r\n }\r\n this.selectedColumn.Controls = [];\r\n }\r\n }\r\n // ###########################################################################################\r\n // ###### Click on Copy icon of Row and select posission above/below copy operation ########\r\n // ###########################################################################################\r\n if (this.locationToAdd && this.locationToAdd != '') {\r\n const currentRowIndex = this.selectedColumn.Rows.findIndex(o => o == this.selectedRow);\r\n if (currentRowIndex >= 0) { \r\n let rowObj: EFormRow = _.cloneDeep(this.selectedColumn.Rows[currentRowIndex]);\r\n this.assignControlsNewID(this.getAllControlsByRow(rowObj));\r\n\r\n if (this.locationToAdd == 'above') {\r\n this.selectedColumn.Rows.splice(currentRowIndex, 0, _.cloneDeep(rowObj));\r\n // ---- This code for just set focus on create or copy new row\r\n setTimeout(() => {\r\n this.focusOnRow(this.selectedColumn.Rows[currentRowIndex]);\r\n }, 500);\r\n }\r\n else if (this.locationToAdd == 'below') {\r\n this.selectedColumn.Rows.splice(currentRowIndex + 1, 0, _.cloneDeep(rowObj));\r\n // ---- This code for just set focus on create or copy new row\r\n setTimeout(() => {\r\n this.focusOnRow(this.selectedColumn.Rows[currentRowIndex + 1]);\r\n }, 500);\r\n }\r\n this.getAllFormControls();\r\n }\r\n this.locationToAdd = '';\r\n }\r\n else {\r\n this.locationToAdd = '';\r\n // ###################################################################################################\r\n this.selectedColumn.Rows.push(new EFormRow());\r\n }\r\n }\r\n }\r\n\r\n addColumn() {\r\n if ((this.selectedElementType == 'tab' || this.selectedElementType == 'page') && this.selectedPage) {\r\n if (!this.selectedPage.Columns) {\r\n this.selectedPage.Columns = [];\r\n }\r\n this.selectedPage.Columns.push(new EFormColumn());\r\n }\r\n else if (this.selectedElementType == 'row' && this.selectedRow) {\r\n if (!this.selectedRow.Columns || this.selectedRow.Columns.length == 0) {\r\n this.selectedRow.Columns = [];\r\n if (this.selectedRow.Controls && this.selectedRow.Controls.length > 0) {\r\n const newCol = new EFormColumn();\r\n const row = _.cloneDeep(this.selectedRow);\r\n newCol.Rows.push(row);\r\n this.selectedRow.Columns.push(newCol);\r\n this.selectedRow.Controls = [];\r\n }\r\n }\r\n this.selectedRow.Columns.push(new EFormColumn());\r\n }\r\n else if (this.selectedElementType == 'column' && this.selectedColumn && this.selectedPage) {\r\n\r\n // ###########################################################################################\r\n // ###### Click on Copy icon of column and select posission left/right copy operation ########\r\n // ###########################################################################################\r\n if (this.locationToAdd && this.locationToAdd != '') {\r\n let currentColumnIndex = -1;\r\n if (this.selectedRow) {\r\n currentColumnIndex = this.selectedRow.Columns.findIndex(o => o == this.selectedColumn);\r\n }\r\n if (currentColumnIndex >= 0) {\r\n const columnObj: EFormColumn = _.cloneDeep(this.selectedRow.Columns[currentColumnIndex]); \r\n this.assignControlsNewID(this.getAllControlsByColumn(columnObj));\r\n if (this.locationToAdd == 'left') {\r\n this.selectedRow.Columns.splice(currentColumnIndex, 0, _.cloneDeep(columnObj));\r\n // ---- This code for just set focus on create or copy new column\r\n this.focusOnColumn(this.selectedRow.Columns[currentColumnIndex]);\r\n // ----\r\n }\r\n else if (this.locationToAdd == 'right') {\r\n this.selectedRow.Columns.splice(currentColumnIndex + 1, 0, _.cloneDeep(columnObj));\r\n // ---- This code for just set focus on create or copy new column\r\n this.focusOnColumn(this.selectedRow.Columns[currentColumnIndex + 1]);\r\n // ----\r\n }\r\n this.getAllFormControls();\r\n }\r\n else {\r\n currentColumnIndex = this.selectedPage.Columns.findIndex(o => o == this.selectedColumn);\r\n if (currentColumnIndex >= 0) {\r\n const columnObj: EFormColumn = _.cloneDeep(this.selectedPage.Columns[currentColumnIndex]); \r\n this.assignControlsNewID(this.getAllControlsByColumn(columnObj));\r\n if (this.locationToAdd == 'left') {\r\n this.selectedPage.Columns.splice(currentColumnIndex, 0, _.cloneDeep(columnObj));\r\n // ---- This code for just set focus on create or copy new column\r\n this.focusOnColumn(this.selectedPage.Columns[currentColumnIndex]);\r\n // ----\r\n }\r\n else if (this.locationToAdd == 'right') {\r\n this.selectedPage.Columns.splice(currentColumnIndex + 1, 0, _.cloneDeep(columnObj));\r\n // ---- This code for just set focus on create or copy new column\r\n this.focusOnColumn(this.selectedPage.Columns[currentColumnIndex + 1]);\r\n // ----\r\n }\r\n this.getAllFormControls();\r\n }\r\n }\r\n this.locationToAdd = '';\r\n }\r\n else {\r\n this.locationToAdd = '';\r\n // ###################################################################################################\r\n\r\n let parentIsPage = false;\r\n this.selectedPage.Columns.forEach(col => {\r\n if (col == this.selectedColumn) {\r\n parentIsPage = true;\r\n }\r\n });\r\n if (parentIsPage) {\r\n if (!this.selectedPage.Columns) {\r\n this.selectedPage.Columns = [];\r\n }\r\n this.selectedPage.Columns.push(new EFormColumn());\r\n }\r\n else {\r\n this.selectedPage.Columns.forEach(col => {\r\n const parentRow = this.findParentRowForColumn(col, this.selectedColumn);\r\n if (parentRow) {\r\n parentRow.Columns.push(new EFormColumn());\r\n }\r\n });\r\n }\r\n }\r\n }\r\n else if (this.selectedElementType == 'control' && this.selectedControl && this.selectedPage) {\r\n let parentIsPage = false;\r\n this.selectedPage.Columns.forEach(col => {\r\n if (col == this.selectedColumn) {\r\n parentIsPage = true;\r\n }\r\n });\r\n if (parentIsPage) {\r\n if (!this.selectedPage.Columns) {\r\n this.selectedPage.Columns = [];\r\n }\r\n this.selectedPage.Columns.push(new EFormColumn());\r\n }\r\n else {\r\n this.selectedPage.Columns.forEach(col => {\r\n const parentRow = this.findParentRowForControl(col, this.selectedControl);\r\n if (parentRow) {\r\n parentRow.Columns.push(new EFormColumn());\r\n }\r\n });\r\n }\r\n }\r\n this.locationToAdd = '';\r\n }\r\n\r\n addControl() {\r\n if (this.selectedColumn) {\r\n const newControl = new EFormControl();\r\n newControl.ControlType = this.eFormService.controlTypes.textbox;\r\n newControl.DataType = 'text';\r\n newControl.Label = 'Textbox';\r\n if (this.selectedElementType == 'column') {\r\n if (this.selectedColumn.Rows && this.selectedColumn.Rows.length > 0) {\r\n const newRow = new EFormRow();\r\n const newColumn = new EFormColumn();\r\n newColumn.Controls.push(newControl);\r\n newRow.Columns.push(newColumn);\r\n this.selectedColumn.Rows.push(newRow);\r\n }\r\n else {\r\n this.selectedColumn.Controls.push(newControl);\r\n }\r\n }\r\n else if (this.selectedElementType == 'row') {\r\n const newColumn = new EFormColumn();\r\n newColumn.Controls.push(newControl);\r\n this.selectedRow.Columns.push(newColumn);\r\n }\r\n }\r\n }\r\n\r\n addTab() {\r\n const newTab = new EFormTab();\r\n let tabname = 'Tab ' + (this.eFormService.selectedFormData.Tabs.length + 1);\r\n while (this.eFormService.selectedFormData.Tabs.find(o => o.Name == tabname) != null) {\r\n tabname += '(1)';\r\n }\r\n newTab.Name = tabname;\r\n newTab.Id = ++this.eFormService.selectedFormData.LastUsedTabId;\r\n const newPage = new EFormPage();\r\n newPage.Name = 'Page 1';\r\n newPage.Id = ++this.eFormService.selectedFormData.LastUsedPageId;\r\n const newColumn = new EFormColumn();\r\n newPage.Columns = [];\r\n newPage.Columns.push(newColumn);\r\n newTab.Pages = [];\r\n newTab.Pages.push(newPage);\r\n this.eFormService.selectedFormData.Tabs.push(newTab);\r\n this.observableTabNameChanged.next(true);\r\n }\r\n\r\n addPage() {\r\n if (this.selectedTab) {\r\n const newPage = new EFormPage();\r\n newPage.Id = ++this.eFormService.selectedFormData.LastUsedPageId;\r\n let pageName = 'Page ' + (this.selectedTab.Pages.length + 1);\r\n while (this.selectedTab.Pages.find(o => o.Name == pageName) != null) {\r\n pageName += '(1)';\r\n }\r\n newPage.Name = pageName;\r\n newPage.Columns = [];\r\n const newColumn = new EFormColumn();\r\n newPage.Columns.push(newColumn);\r\n this.selectedTab.Pages.push(newPage);\r\n this.observablePagesChanged.next(true);\r\n }\r\n }\r\n\r\n deleteSelectedElement() {\r\n switch (this.selectedElementType) {\r\n case 'tab': {\r\n const currentTabIndex = this.eFormService.selectedFormData.Tabs.findIndex(o => o == this.selectedTab);\r\n if (currentTabIndex >= 0) {\r\n this.eFormService.selectedFormData.Tabs.splice(currentTabIndex, 1);\r\n if (this.eFormService.selectedFormData.Tabs.length > 0) {\r\n this.focusOnTab(this.eFormService.selectedFormData.Tabs[0]);\r\n }\r\n this.observableTabNameChanged.next(true);\r\n }\r\n break;\r\n }\r\n case 'page': {\r\n const currentPageIndex = this.selectedTab.Pages.findIndex(o => o == this.selectedPage);\r\n if (currentPageIndex >= 0) {\r\n this.selectedTab.Pages.splice(currentPageIndex, 1);\r\n if (this.selectedTab.Pages.length > 0) {\r\n this.focusOnPage(this.selectedTab.Pages[0]);\r\n }\r\n else {\r\n this._selectedPage = null;\r\n }\r\n }\r\n break;\r\n }\r\n case 'column': {\r\n let currentColumnIndex = -1;\r\n if (this.selectedRow) {\r\n currentColumnIndex = this.selectedRow.Columns.findIndex(o => o == this.selectedColumn);\r\n }\r\n if (currentColumnIndex >= 0) {\r\n this.selectedRow.Columns.splice(currentColumnIndex, 1);\r\n this._selectedColumn = null;\r\n }\r\n else {\r\n currentColumnIndex = this.selectedPage.Columns.findIndex(o => o == this.selectedColumn);\r\n if (currentColumnIndex >= 0) {\r\n this.selectedPage.Columns.splice(currentColumnIndex, 1);\r\n this._selectedColumn = null;\r\n }\r\n }\r\n break;\r\n }\r\n case 'row': {\r\n const currentRowIndex = this.selectedColumn.Rows.findIndex(o => o == this.selectedRow);\r\n if (currentRowIndex >= 0) {\r\n this.selectedColumn.Rows.splice(currentRowIndex, 1);\r\n this._selectedRow = null;\r\n }\r\n break;\r\n }\r\n case 'control': {\r\n let currentControlIndex = this.selectedColumn.Controls.findIndex(o => o == this.selectedControl);\r\n if (currentControlIndex >= 0) {\r\n this.selectedColumn.Controls.splice(currentControlIndex, 1);\r\n this._selectedControl = null;\r\n }\r\n else {\r\n currentControlIndex = this.selectedRow.Controls.findIndex(o => o == this.selectedControl);\r\n if (currentControlIndex >= 0) {\r\n this.selectedRow.Controls.splice(currentControlIndex, 1);\r\n this._selectedControl = null;\r\n }\r\n }\r\n\r\n if (this.selectedTab.Pages.length > 0) {\r\n this.focusOnPage(this.selectedTab.Pages[0]);\r\n }\r\n else if (this.eFormService.selectedFormData.Tabs.length > 0) {\r\n this.focusOnTab(this.eFormService.selectedFormData.Tabs[0]);\r\n }\r\n\r\n this.getAllFormControls();\r\n break;\r\n }\r\n }\r\n this.openControlTab();\r\n }\r\n\r\n findParentRowForColumn(container: EFormColumn, elementToFind: EFormColumn): EFormRow {\r\n let parentRow: EFormRow = null;\r\n container.Rows.forEach(row => {\r\n row.Columns.forEach(column => {\r\n if (column == elementToFind) {\r\n parentRow = row;\r\n }\r\n });\r\n row.Columns.forEach(column => {\r\n if (!parentRow) {\r\n parentRow = this.findParentRowForColumn(column, elementToFind);\r\n }\r\n });\r\n });\r\n return parentRow;\r\n }\r\n\r\n findParentRowForControl(container: EFormColumn, elementToFind: EFormControl): EFormRow {\r\n let parentRow: EFormRow = null;\r\n container.Rows.forEach(row => {\r\n row.Controls.forEach(control => {\r\n if (control == elementToFind) {\r\n parentRow = row;\r\n }\r\n });\r\n row.Columns.forEach(column => {\r\n column.Controls.forEach(control => {\r\n if (control == elementToFind) {\r\n parentRow = row;\r\n }\r\n });\r\n if (!parentRow) {\r\n parentRow = this.findParentRowForControl(column, elementToFind);\r\n }\r\n });\r\n });\r\n return parentRow;\r\n }\r\n\r\n findParentColumnForRow(container: EFormColumn, elementToFind: EFormRow): EFormColumn {\r\n let parentColumn: EFormColumn = null;\r\n container.Rows.forEach(row => {\r\n if (row == elementToFind) {\r\n parentColumn = container;\r\n }\r\n row.Columns.forEach(column => {\r\n if (!parentColumn) {\r\n parentColumn = this.findParentColumnForRow(column, elementToFind);\r\n }\r\n });\r\n });\r\n return parentColumn;\r\n }\r\n\r\n findParentColumnForControl(container: EFormColumn, elementToFind: EFormControl): EFormColumn {\r\n let parentColumn: EFormColumn = null;\r\n container.Controls.forEach(control => {\r\n if (control == elementToFind) {\r\n parentColumn = container;\r\n }\r\n });\r\n container.Rows.forEach(row => {\r\n row.Controls.forEach(control => {\r\n if (control == elementToFind) {\r\n parentColumn = container;\r\n }\r\n });\r\n row.Columns.forEach(column => {\r\n if (!parentColumn) {\r\n parentColumn = this.findParentColumnForControl(column, elementToFind);\r\n }\r\n });\r\n });\r\n return parentColumn;\r\n }\r\n\r\n isControlOnPage(control: EFormControl, page: EFormPage): boolean {\r\n let controlFound = false;\r\n page.Columns.forEach(col => {\r\n if (!controlFound && this.findParentColumnForControl(col, control) != null) {\r\n controlFound = true;\r\n }\r\n });\r\n return controlFound;\r\n }\r\n\r\n isColumnOnPage(column: EFormColumn, page: EFormPage): boolean {\r\n let controlFound = false;\r\n page.Columns.forEach(col => {\r\n if (col == column) {\r\n controlFound = true;\r\n }\r\n else if (controlFound == false && this.findParentRowForColumn(col, column) != null) {\r\n controlFound = true;\r\n }\r\n });\r\n return controlFound;\r\n }\r\n\r\n isRowOnPage(row: EFormRow, page: EFormPage): boolean {\r\n let controlFound = false;\r\n page.Columns.forEach(col => {\r\n if (controlFound == false && this.findParentColumnForRow(col, row) != null) {\r\n controlFound = true;\r\n }\r\n });\r\n return controlFound;\r\n }\r\n\r\n moveElement(direction: string) {\r\n if (this.selectedColumn && this.selectedRow) {\r\n if (direction == 'up') {\r\n let index = this.selectedColumn.Rows.findIndex(o => o == this.selectedRow);\r\n if (index > 0) {\r\n this.selectedColumn.Rows.splice(index, 1);\r\n index--;\r\n this.selectedColumn.Rows.splice(index, 0, this.selectedRow);\r\n }\r\n }\r\n else if (direction == 'down') {\r\n const maxIndex = this.selectedColumn.Rows.length - 1;\r\n let index = this.selectedColumn.Rows.findIndex(o => o == this.selectedRow);\r\n if (index >= 0 && index < maxIndex) {\r\n this.selectedColumn.Rows.splice(index, 1);\r\n index++;\r\n this.selectedColumn.Rows.splice(index, 0, this.selectedRow);\r\n }\r\n }\r\n else if (direction == 'left') {\r\n let index = this.selectedRow.Columns.findIndex(o => o == this.selectedColumn);\r\n if (index > 0) {\r\n this.selectedRow.Columns.splice(index, 1);\r\n index--;\r\n this.selectedRow.Columns.splice(index, 0, this.selectedColumn);\r\n }\r\n }\r\n else if (direction == 'right') {\r\n const maxIndex = this.selectedRow.Columns.length - 1;\r\n let index = this.selectedRow.Columns.findIndex(o => o == this.selectedColumn);\r\n if (index >= 0 && index < maxIndex) {\r\n this.selectedRow.Columns.splice(index, 1);\r\n index++;\r\n this.selectedRow.Columns.splice(index, 0, this.selectedColumn);\r\n }\r\n }\r\n }\r\n }\r\n\r\n connectedDropListAdd(id: string) {\r\n if (this.connectedDropLists.find(o => o == id) == null) {\r\n this.connectedDropLists.push(id);\r\n this.observableConnectedDropLists.next(this.connectedDropLists);\r\n }\r\n }\r\n\r\n getPromptForDataObjects(currentControl: EFormControl, page: boolean = false): EFormControl[] {\r\n const promptForDataObjects: EFormControl[] = [];\r\n if (currentControl || page) {\r\n for (let i = 0; i < this.masterControlList.length; i++) {\r\n const control = this.masterControlList[i];\r\n if (!page && control.Id == currentControl.Id) {\r\n break;\r\n }\r\n if (this.promptForDataTypes.findIndex(o => o == control.ControlType) >= 0) {\r\n promptForDataObjects.push(control);\r\n }\r\n }\r\n }\r\n return promptForDataObjects;\r\n }\r\n\r\n getPagePromptForDataObjects(page: EFormPage): EFormControl[] {\r\n if (page.Columns && page.Columns.length > 0) {\r\n return this.getPromptForDataObjects(null, true);\r\n }\r\n return [];\r\n }\r\n\r\n getTabPromptForDataObjects(tab: EFormTab): EFormControl[] {\r\n if (tab.Pages && tab.Pages.length > 0) {\r\n return this.getPagePromptForDataObjects(tab.Pages[0]);\r\n }\r\n return [];\r\n }\r\n\r\n focusOnTab(tab: EFormTab) {\r\n this._selectedTab = tab;\r\n this._selectedElementType = 'tab';\r\n if (tab.Pages && tab.Pages.length > 0) {\r\n this._selectedPage = tab.Pages[0];\r\n }\r\n else {\r\n this._selectedPage = null;\r\n }\r\n this.selectedElementChanged();\r\n this.observableSelectedPageChanged.next(true);\r\n }\r\n\r\n focusOnPage(page: EFormPage) {\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n if (tab.Pages.find(o => o == page)) {\r\n this._selectedTab = tab;\r\n }\r\n });\r\n this._selectedPage = page;\r\n this._selectedElementType = 'page';\r\n this.selectedElementChanged();\r\n this.observableSelectedPageChanged.next(true);\r\n }\r\n\r\n focusOnColumn(col: EFormColumn) {\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n tab.Pages.forEach(page => {\r\n if (this.isColumnOnPage(col, page)) {\r\n this._selectedTab = tab;\r\n this._selectedPage = page;\r\n this._selectedRow = null;\r\n page.Columns.forEach(pageCol => {\r\n const row = this.findParentRowForColumn(pageCol, col);\r\n if (row) {\r\n this._selectedRow = row;\r\n }\r\n });\r\n this._selectedColumn = col;\r\n this._selectedElementType = 'column';\r\n this.selectedElementChanged();\r\n }\r\n });\r\n });\r\n }\r\n\r\n focusOnRow(row: EFormRow) {\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n tab.Pages.forEach(page => {\r\n if (this.isRowOnPage(row, page)) {\r\n this._selectedTab = tab;\r\n this._selectedPage = page;\r\n this._selectedColumn = null;\r\n page.Columns.forEach(pageCol => {\r\n const col = this.findParentColumnForRow(pageCol, row);\r\n if (col) {\r\n this._selectedColumn = col;\r\n }\r\n });\r\n this._selectedRow = row;\r\n this._selectedElementType = 'row';\r\n this.selectedElementChanged();\r\n }\r\n });\r\n });\r\n }\r\n\r\n focusOnControl(control: EFormControl) {\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n tab.Pages.forEach(page => {\r\n if (this.isControlOnPage(control, page)) {\r\n if (tab != this.selectedTab) {\r\n this._selectedTab = tab;\r\n }\r\n if (page != this.selectedPage) {\r\n this._selectedPage = page;\r\n }\r\n this._selectedColumn = null;\r\n page.Columns.forEach(pageCol => {\r\n const col = this.findParentColumnForControl(pageCol, control);\r\n if (col) {\r\n this._selectedColumn = col;\r\n }\r\n });\r\n this._selectedRow = null;\r\n page.Columns.forEach(pageCol => {\r\n const row = this.findParentRowForControl(pageCol, control);\r\n if (row) {\r\n this._selectedRow = row;\r\n }\r\n });\r\n if (control != this.selectedControl) {\r\n this._selectedControl = control;\r\n }\r\n this._selectedElementType = 'control';\r\n this.selectedElementChanged();\r\n }\r\n });\r\n });\r\n }\r\n\r\n selectedElementChanged() {\r\n this.observableselectedElementChanged.next(true);\r\n }\r\n\r\n openPropertiesTab() {\r\n this.observableOpenPropertiesTab.next(true);\r\n }\r\n\r\n openControlTab() {\r\n this.observableOpenControlTab.next(true);\r\n }\r\n\r\n treeViewExpandAll(expanded: boolean) {\r\n if (this.eFormService.selectedFormData) {\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n tab.Expanded = expanded;\r\n tab.Pages.forEach(page => {\r\n page.Expanded = expanded;\r\n page.Columns.forEach(col => {\r\n this.setExpandAllByColumn(col, expanded);\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n setExpandAllByColumn(col: EFormColumn, expanded: boolean) {\r\n col.Expanded = expanded;\r\n col.Rows.forEach(row => {\r\n row.Expanded = expanded;\r\n row.Columns.forEach(rowCol => {\r\n this.setExpandAllByColumn(rowCol, expanded);\r\n });\r\n });\r\n }\r\n\r\n closeMergeFieldWindow() {\r\n this.observableCloseMergeFieldWindow.next(true);\r\n }\r\n\r\n updateConditionalControls(control: EFormControl) {\r\n this.eFormService.selectedFormData.Tabs.forEach(tab => {\r\n if (tab.ParentObjectId && tab.ParentObjectId == control.Id) {\r\n const index: number = control.DropdownOptions.findIndex(ddo => tab.Condition && ddo.Code == tab.Condition);\r\n if (index == -1) {\r\n tab.Condition = control.DropdownOptions[0].Code;\r\n }\r\n }\r\n\r\n tab.Pages.forEach(page => {\r\n if (page.ParentObjectId && page.ParentObjectId == control.Id) {\r\n const index: number = control.DropdownOptions.findIndex(ddo => page.Condition && ddo.Code == page.Condition);\r\n if (index == -1) {\r\n page.Condition = control.DropdownOptions[0].Code;\r\n }\r\n }\r\n });\r\n\r\n this.eFormService.allFormControls.forEach( formControl => {\r\n if (formControl.ParentObjectId && formControl.ParentObjectId == control.Id) {\r\n const index: number = control.DropdownOptions.findIndex(ddo => formControl.Condition && ddo.Code == formControl.Condition);\r\n if (index == -1) {\r\n formControl.Condition = control.DropdownOptions[0].Code;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n rowHasNonRemovableControls(row: EFormRow): boolean {\r\n let nonRemovable = false;\r\n if (row.Controls && row.Controls.length > 0) {\r\n nonRemovable = row.Controls.find(o => o.CannotBeRemoved) != null;\r\n }\r\n else if (row.Columns && row.Columns.length > 0) {\r\n row.Columns.forEach(col => {\r\n if (this.columnHasNonRemovableControls(col)) {\r\n return true;\r\n }\r\n });\r\n }\r\n return nonRemovable;\r\n }\r\n\r\n columnHasNonRemovableControls(col: EFormColumn): boolean {\r\n let nonRemovable = false;\r\n if (col.Controls && col.Controls.length > 0) {\r\n nonRemovable = col.Controls.find(o => o.CannotBeRemoved) != null;\r\n }\r\n else if (col.Rows && col.Rows.length > 0) {\r\n col.Rows.forEach(row => {\r\n if (this.rowHasNonRemovableControls(row)) {\r\n return true;\r\n }\r\n });\r\n }\r\n return nonRemovable;\r\n }\r\n\r\n pageHasNonRemovableControls(page: EFormPage): boolean {\r\n if (page.Columns && page.Columns.length > 0) {\r\n page.Columns.forEach(col => {\r\n if (this.columnHasNonRemovableControls(col)) {\r\n return true;\r\n }\r\n });\r\n }\r\n else if (page.Rows && page.Rows.length > 0) {\r\n page.Rows.forEach(row => {\r\n if (this.rowHasNonRemovableControls(row)) {\r\n return true;\r\n }\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n tabHasNonRemovableControls (tab: EFormTab): boolean {\r\n if (tab.Pages && tab.Pages.length > 0) {\r\n tab.Pages.forEach(page => {\r\n if (this.pageHasNonRemovableControls(page)) {\r\n return true;\r\n }\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n convertEFormControlTypeToCustomFieldTypeID(ControlType: string): number {\r\n switch (ControlType) {\r\n case this.eFormService.controlTypes.textbox:\r\n return CustomFieldControlTypeEnum.Textbox;\r\n case this.eFormService.controlTypes.image:\r\n return CustomFieldControlTypeEnum.Image;\r\n case this.eFormService.controlTypes.buttons:\r\n return CustomFieldControlTypeEnum.Buttons;\r\n case this.eFormService.controlTypes.radioButtons:\r\n return CustomFieldControlTypeEnum.RadioButtons;\r\n case this.eFormService.controlTypes.note:\r\n return CustomFieldControlTypeEnum.MultiLineTextbox;\r\n case this.eFormService.controlTypes.date:\r\n return CustomFieldControlTypeEnum.Date;\r\n case this.eFormService.controlTypes.checkbox:\r\n return CustomFieldControlTypeEnum.Checkbox;\r\n case this.eFormService.controlTypes.dropdown:\r\n return CustomFieldControlTypeEnum.Dropdown;\r\n case this.eFormService.controlTypes.text:\r\n return CustomFieldControlTypeEnum.Text;\r\n case this.eFormService.controlTypes.component:\r\n return CustomFieldControlTypeEnum.Component;\r\n default:\r\n return -1;\r\n }\r\n }\r\n}\r\n","

{{headerLabel}}

\r\n\r\n
\r\n
\r\n \r\n Left of current column\r\n \r\n
\r\n \r\n Right of current column\r\n \r\n
\r\n
\r\n \r\n Above current row\r\n \r\n
\r\n \r\n Below current row\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { EFormControl } from '../../../../shared-components/e-forms/e-form-control.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-e-form-row-column-location',\r\n templateUrl: './e-form-row-column-location.html'\r\n})\r\n\r\nexport class EFormRrowColumnLocationComponent implements OnInit {\r\n\r\n objects: EFormControl[];\r\n selectedObject: EFormControl;\r\n location: string;\r\n headerLabel: string;\r\n cotrolType: string;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n if(this.cotrolType == 'row'){\r\n this.location = 'above';\r\n }\r\n else{\r\n this.location = 'right';\r\n }\r\n }\r\n SetRadioValue(value) {\r\n this.location = value;\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n saveClick() {\r\n if (this.location)\r\n this.dialogRef.close(this.location);\r\n }\r\n}\r\n","
2}\">\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
0\" cdkDropList class=\"dropList\" [cdkDropListData]=\"row.Columns\" (cdkDropListDropped)=\"columnDropped($event)\" \r\n cdkDropListOrientation=\"horizontal\" [cdkDropListEnterPredicate]=\"columnPredicate\" [ngStyle]=\"{'align-items': row.Alignment}\">\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
0\" class=\"dropList\" cdkDropList #controlList [cdkDropListConnectedTo]=\"connectedDropLists\" [ngStyle]=\"{'align-items': row.Alignment}\"\r\n [cdkDropListData]=\"row.Controls\" (cdkDropListDropped)=\"controlDropped($event)\" cdkDropListOrientation=\"horizontal\">\r\n \r\n \r\n \r\n
\r\n
\r\n Row - Drop Controls Here\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, OnDestroy, ElementRef, AfterViewInit, ViewChildren, QueryList } from '@angular/core';\r\nimport { EFormRow } from '../../../../shared-components/e-forms/e-form-row.model';\r\nimport { EFormService } from '../../../../shared-components/e-forms/e-form.service';\r\nimport { CdkDragDrop, moveItemInArray, transferArrayItem, CdkDrag } from '@angular/cdk/drag-drop';\r\nimport { EFormColumn } from '../../../../shared-components/e-forms/e-form-column.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { EFormControl } from '../../../../shared-components/e-forms/e-form-control.model';\r\nimport * as _ from 'lodash';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { GeneralConfirmationComponent } from '../../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { EFormDesignerService } from '../e-form-designer.service';\r\nimport { EFormRrowColumnLocationComponent } from '../e-form-row-column-location/e-form-row-column-location';\r\nimport { EFormConfiguration } from '../../e-form-config.model';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'e-form-row',\r\n templateUrl: './e-form-row.component.html',\r\n styleUrls: ['./e-form-row.component.css']\r\n})\r\nexport class EFormRowComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() row: EFormRow;\r\n @Input() hideEditHeader: boolean;\r\n @Input() config: EFormConfiguration;\r\n isSelected = false;\r\n subscriptions: Subscription[] = [];\r\n isDragging = false;\r\n connectedDropLists: string[] = [];\r\n @ViewChildren('controlList', { read: ElementRef }) set sort(lists: QueryList) {\r\n lists.forEach(list => {\r\n this.eFormDesignerService.connectedDropListAdd(list.nativeElement.id);\r\n });\r\n }\r\n\r\n constructor(\r\n private eFormService: EFormService,\r\n private eFormDesignerService: EFormDesignerService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setSelectedStatus();\r\n this.subscriptions.push(this.eFormDesignerService.observableselectedElementChangedStream$.subscribe(o => {\r\n this.setSelectedStatus();\r\n }));\r\n this.subscriptions.push(this.eFormDesignerService.observableDragStartStream$.subscribe(() => {\r\n this.isDragging = true;\r\n }));\r\n this.subscriptions.push(this.eFormDesignerService.observableDragEndStream$.subscribe(() => {\r\n this.isDragging = false;\r\n }));\r\n this.connectedDropLists = this.eFormDesignerService.connectedDropLists;\r\n this.subscriptions.push(this.eFormDesignerService.observableConnectedDropListsStream$.subscribe((list) => {\r\n this.connectedDropLists = list;\r\n }));\r\n }\r\n\r\n setSelectedStatus() {\r\n if (this.eFormDesignerService.selectedElementType == 'row' && this.eFormDesignerService.selectedRow == this.row) {\r\n setTimeout(() => {\r\n this.isSelected = true;\r\n }, 0);\r\n }\r\n else {\r\n setTimeout(() => {\r\n this.isSelected = false;\r\n }, 0);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // this.eFormDesignerService.connectedDropListAdd(this.controlList.nativeElement.id);\r\n }\r\n\r\n rowClick(event) {\r\n event.preventDefault();\r\n this.eFormDesignerService.focusOnRow(this.row);\r\n event.stopPropagation();\r\n this.eFormDesignerService.openPropertiesTab();\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n controlDropped(event: CdkDragDrop) {\r\n if (event.container.id === event.previousContainer.id) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n }\r\n else if (event.previousContainer.id.indexOf('controlPalette') >= 0) {\r\n const newControl = _.cloneDeep(event.item.data);\r\n this.eFormDesignerService.assignControlsNewID([newControl]);\r\n //newControl.Id = ++this.eFormService.selectedFormData.LastUsedControlId;\r\n // this.row.Controls.push(newControl);\r\n this.row.Controls.splice(event.currentIndex, 0, newControl);\r\n }\r\n else {\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n }\r\n if (this.row.Columns && this.row.Columns.length > 0) {\r\n this.row.Controls.forEach(control => {\r\n const newColumn = new EFormColumn();\r\n newColumn.Controls = [];\r\n newColumn.Controls.push(control);\r\n this.row.Columns.push(newColumn);\r\n });\r\n this.row.Controls = [];\r\n }\r\n this.eFormDesignerService.getAllFormControls();\r\n this.eFormDesignerService.focusOnControl(event.container.data[event.currentIndex]);\r\n }\r\n\r\n dragStart() {\r\n this.eFormDesignerService.dragStart();\r\n }\r\n\r\n dragEnd() {\r\n this.eFormDesignerService.dragEnd();\r\n }\r\n\r\n columnPredicate(item: CdkDrag) {\r\n if (this.row && this.row.Columns && this.row.Columns.find(o => o == item.data)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n columnDropped(event: CdkDragDrop) {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(this.row.Columns, event.previousIndex, event.currentIndex);\r\n }\r\n }\r\n\r\n deleteClick() {\r\n if (this.eFormDesignerService.rowHasNonRemovableControls(this.row)) {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Row';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'This row contains controls that cannot be removed.';\r\n }\r\n else {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Row';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete this row and all its content?';\r\n deleteConfirmDialog.componentInstance.okButtonLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.eFormDesignerService.deleteSelectedElement();\r\n }\r\n });\r\n }\r\n }\r\n\r\n copyClick() {\r\n this.eFormDesignerService.locationToAdd = '';\r\n const copyConfirmDialog = this.dialog.open(EFormRrowColumnLocationComponent, {\r\n disableClose: true,\r\n });\r\n copyConfirmDialog.componentInstance.headerLabel = 'Copy Row';\r\n copyConfirmDialog.componentInstance.cotrolType = 'row';\r\n this.subscriptions.push(copyConfirmDialog.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.eFormDesignerService.locationToAdd = '';\r\n this.eFormDesignerService.locationToAdd = result;\r\n this.eFormDesignerService.addRow(this.config.IsMobile);\r\n }\r\n else {\r\n this.eFormDesignerService.locationToAdd = '';\r\n }\r\n }));\r\n }\r\n\r\n getControlId(index: number, control: EFormControl) {\r\n return control.Id;\r\n }\r\n\r\n getColId(index: number, col: EFormColumn) {\r\n return index;\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { EForm } from '../e-form.model';\r\nimport { EFormService } from '../e-form.service';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n\tselector: 'app-e-form-notes',\r\n\ttemplateUrl: './e-form-notes.component.html',\r\n\t// styleUrls: ['./e-form-notes.component.scss']\r\n})\r\nexport class EFormNotesComponent implements OnInit {\r\n\r\n\teForm: EForm;\r\n\tnote = '';\r\n\r\n\tconstructor(\r\n\t\tprivate dialog: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate eFormService: EFormService\r\n\t) {\r\n\t\tthis.eForm = _.cloneDeep(this.data.eForm);\r\n\t\tthis.note = this.eForm.StaffNote;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\r\n\t}\r\n\r\n\tsaveClick() {\r\n\t\tthis.eForm.StaffNote = this.note;\r\n\t\t// this.eFormService.saveEForm(this.eForm).subscribe();\r\n\t\tthis.dialog.close(this.eForm);\r\n\t}\r\n\r\n\tcloseClick() {\r\n\t\tthis.dialog.close();\r\n\t}\r\n\r\n}\r\n","

Notes

\r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n","import { EFormColumn } from './e-form-column.model';\r\nimport { EFormControl } from './e-form-control.model';\r\n\r\nexport class EFormRow {\r\n Id: number;\r\n Height = 75;\r\n Order: number;\r\n Columns: EFormColumn[] = [];\r\n Controls: EFormControl[] = [];\r\n Alignment = 'flex-start';\r\n\r\n // Tree View Property\r\n Expanded: boolean;\r\n}","
\r\n
0\">\r\n \r\n \r\n
\r\n \r\n
0\" class='eFormColumn' [ngStyle]=\"{'align-items': column.Alignment}\">\r\n \r\n \r\n
\r\n
\r\n\r\n
","import { Component, OnInit, Input, AfterViewInit, EventEmitter, Output } from '@angular/core';\r\nimport { EFormColumn } from '../../e-form-column.model';\r\nimport { EFormControl } from '../../e-form-control.model';\r\nimport { EFormConfiguration } from '../../e-form-config.model';\r\n\r\n@Component({\r\n selector: 'e-form-viewer-column',\r\n templateUrl: './e-form-viewer-column.component.html',\r\n styleUrls: ['./e-form-viewer-column.component.css']\r\n})\r\nexport class EFormViewerColumnComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() column: EFormColumn;\r\n @Input() editable: boolean;\r\n @Input() disableMergeFields: boolean;\r\n @Input() print: boolean;\r\n @Input() showConditionals: boolean;\r\n @Input() masterId: number;\r\n @Input() designPageIndex: number;\r\n @Input() config: EFormConfiguration;\r\n @Input() topLevel: Boolean = false;\r\n @Output() viewInitialized: EventEmitter = new EventEmitter();\r\n controlViewStatuses: any[] = [];\r\n rowViewStatuses: any[] = [];\r\n initialized = false;\r\n constructor() { \r\n const x = this.masterId;\r\n }\r\n\r\n ngOnInit() {\r\n this.column.Controls.forEach(control => {\r\n if (control.Visible) {\r\n this.controlViewStatuses.push({Id: control.Id, Initialized: false});\r\n }\r\n });\r\n for (let i = 0; i < this.column.Rows.length; i++) {\r\n this.rowViewStatuses.push({Id: i, Initialized: false});\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initialized = true;\r\n this.checkInitializedStatus();\r\n }\r\n\r\n checkInitializedStatus() {\r\n if(this.topLevel) {\r\n let filler = 'filler';\r\n }\r\n if (this.initialized && this.controlViewStatuses.find(o => o.Initialized == false) == null && this.rowViewStatuses.find(o => o.Initialized == false) == null) {\r\n if(this.topLevel) {\r\n let filler = 'filler';\r\n }\r\n setTimeout(() => {\r\n if(this.topLevel) {\r\n let filler = 'filler';\r\n }\r\n this.viewInitialized.emit(true);\r\n }, 0);\r\n }\r\n }\r\n\r\n controlInitialized(control: EFormControl) {\r\n const status = this.controlViewStatuses.find(o => o.Id == control.Id);\r\n if (status) {\r\n status.Initialized = true;\r\n }\r\n this.checkInitializedStatus();\r\n }\r\n\r\n rowInitialized(index: number) {\r\n const status = this.rowViewStatuses.find(o => o.Id == index);\r\n if (status) {\r\n status.Initialized = true;\r\n }\r\n this.checkInitializedStatus();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n [{{control.Instructions}}]\r\n [No instructions entered]\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n {{control.HideLabel ? \"\" : (control.Label | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger)}} *\r\n \r\n \r\n {{chip.CodeDescription | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger}}\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n {{control.HideLabel ? \"\" : (control.Label | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger)}}\r\n  *\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n {{control.HideLabel ? \"\" : (control.Label | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger)}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{option.CodeDescription | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {{control.HideLabel ? \"\" : (control.Label | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger)}}\r\n
\r\n
\r\n {{control.Value}}\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{control.HideLabel ? \"\" : (control.Label | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger)}}\r\n *
\r\n
\r\n \r\n {{opt.CodeDescription | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n {{control.HideLabel ? \"\" : (control.Label | tylTranslate | translate | mergeField: disableMergeFields: pipeTrigger)}}\r\n  *\r\n \r\n \r\n \r\n
0 && !editable\" style=\"display: flex; flex-direction: column;\">\r\n \r\n {{control.Attachment.OriginalFileName}}\r\n \r\n\r\n
ATTACHMENT\r\n -  {{control.Attachment.OriginalFileName}}
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, OnDestroy, Output, EventEmitter, AfterViewInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { EFormControl } from '../../e-form-control.model';\r\nimport { EFormService } from '../../e-form.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { EFormAttachment } from '../../e-form-attachment.model';\r\nimport { System } from '../../../System';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport * as moment from 'moment';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { StudentAttachment } from '../../../../shared-modules/student-attachment/student-attachment.model';\r\nimport { CustomDataTemplateRef } from '../../../../shared-modules/customization-framework/models/custom-data-template-ref.model';\r\nimport { ErrorList } from '../../../controls/error-prompt/error-list.model';\r\nimport { CustomDataFieldComponent } from '../../../../shared-modules/customization-framework/custom-data-field/custom-data-field.component';\r\nimport { EFormConfiguration } from '../../e-form-config.model';\r\nimport { TylTranslatePipe } from '../../../pipes/tyl-translate.pipe';\r\nimport { YearService } from '../../../year/year.service';\r\n\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'e-form-viewer-control',\r\n templateUrl: './e-form-viewer-control.component.html',\r\n styleUrls: ['./e-form-viewer-control.component.css']// ,\r\n // encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EFormViewerControlComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n private _control: EFormControl;\r\n public get control(): EFormControl {\r\n return this._control;\r\n }\r\n @Input() public set control(value: EFormControl) {\r\n this._control = value;\r\n this.originalEditableValue = this._control.Editable == null || this._control.Editable == true;\r\n }\r\n \r\n private _editable = false;\r\n public get editable(): boolean {\r\n return this._editable;\r\n }\r\n @Input() public set editable(value: boolean) {\r\n this._editable = value;\r\n if (this.control) {\r\n if (value == false) {\r\n this.control.Editable = false;\r\n }\r\n else {\r\n this.control.Editable = this.originalEditableValue;\r\n }\r\n }\r\n }\r\n @Input() disableMergeFields: boolean;\r\n @Input() print: boolean;\r\n @Input() showConditionals: boolean;\r\n @Input() masterId: number;\r\n @Input() designPageIndex: number;\r\n @Input() config: EFormConfiguration;\r\n @Output() viewInitialized: EventEmitter = new EventEmitter();\r\n @Output() controlValueChanged: EventEmitter = new EventEmitter();\r\n @ViewChild('customField') customField: CustomDataFieldComponent;\r\n showConditionalObjects = false;\r\n radioValues: string[] = [];\r\n radioLabels: string[] = [];\r\n radioIds: string[] = [];\r\n viewType: string;\r\n subscriptions: Subscription[] = [];\r\n mergeFieldDependantControlIds: number[] = [];\r\n dateValue: moment.Moment;\r\n highlightChanges = false;\r\n pipeTrigger = false;\r\n maxFileSizeByte = 0;\r\n maxFileSizeMessage = '';\r\n contentTemplate: TemplateRef;\r\n originalEditableValue = true;\r\n // eFormAttachment: EFormAttachment[] = []\r\n constructor(private eFormService: EFormService,\r\n private loginService: LoginService,\r\n private translateService: TranslateService,\r\n private tylTranslatePipe: TylTranslatePipe,\r\n private yearService: YearService) {\r\n const x = this.masterId;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.control) {\r\n // ONE-10856 Mobile is saving the checkbox value as a string\r\n if (this.control.ControlType == 'checkbox') {\r\n if (this.control.Value == 'true') { this.control.Value = true; }\r\n if (this.control.Value == 'false') { this.control.Value = false; }\r\n }\r\n if (this.editable == false) {\r\n this.control.Editable = false;\r\n }\r\n else {\r\n this.control.Editable = this.originalEditableValue;\r\n }\r\n if (this.control.Width) {\r\n if (!this.control.Width.toString().includes('px') && !this.control.Width.toString().includes('%')) {\r\n this.control.Width = this.control.Width.toString() + 'px';\r\n }\r\n }\r\n }\r\n this.eFormService.eFormAttachment.forEach(att => {\r\n if (this.control.AttachmentId == att.ID) {\r\n this.control.Attachment = att;\r\n }\r\n });\r\n // // #########\r\n // if(this.control.ControlType == 'attachment' && this.control.Attachment){\r\n // this.eFormService.eFormAttachment.push(this.control.Attachment);\r\n // }\r\n // // #########\r\n this.viewType = this.eFormService.viewType;\r\n if (this.config.NewForm && this.control.DropdownOptions && this.control.DropdownOptions.length > 0) {\r\n this.setDefaultOptionFlags();\r\n }\r\n this.setInitialVisibility();\r\n this.subscriptions.push(this.eFormService.observableControlValueChangedStream$.subscribe(parentControl => {\r\n if (this.control.ParentObjectId == parentControl.Id) {\r\n this.control.Visible = this.eFormService.isConditionMet(this.control.Condition, parentControl);\r\n if (!this.control.Visible && this.control.ControlType != 'text') {\r\n this.control.Value = null;\r\n this.dateValue = null;\r\n if (this.control.ControlType == this.eFormService.controlTypes.attachment) {\r\n this.control.Attachment = null;\r\n this.control.AttachmentId = null;\r\n this.control.PreviousAttachmentId = null;\r\n }\r\n this.valueChanged();\r\n }\r\n else if (this.control.Visible && this.control.ControlType != 'text' && this.control.DropdownOptions && this.control.DropdownOptions.length > 0) {\r\n this.control.DropdownOptions.forEach( option => {\r\n if (option.Default) {\r\n if (this.control.LinkedDBField != -1) {\r\n this.control.Value = option.Code;\r\n }\r\n else {\r\n this.control.Value = option.CodeDescription;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n if (this.mergeFieldDependantControlIds.includes(parentControl.Id)) {\r\n this.transformMergeTags();\r\n this.pipeTrigger = !this.pipeTrigger;\r\n setTimeout(() => {\r\n this.pipeTrigger = !this.pipeTrigger;\r\n }, 100);\r\n }\r\n }));\r\n this.subscriptions.push(this.eFormService.observableShowConditionalObjectsStream$.subscribe(showConditional => {\r\n this.showConditionalObjects = showConditional;\r\n }));\r\n this.subscriptions.push(this.eFormService.observableMergeFieldValuesRetrievedStream$.subscribe(fieldsExist => {\r\n this.transformMergeTags();\r\n this.pipeTrigger = !this.pipeTrigger;\r\n setTimeout(() => {\r\n this.pipeTrigger = !this.pipeTrigger;\r\n }, 100);\r\n }));\r\n this.subscriptions.push(this.eFormService.observablePipeTriggerStream$.subscribe(trigger => {\r\n this.transformMergeTags();\r\n this.pipeTrigger = !this.pipeTrigger;\r\n setTimeout(() => {\r\n this.pipeTrigger = !this.pipeTrigger;\r\n }, 100);\r\n }));\r\n if (this.control.ControlType == this.eFormService.controlTypes.radioButtons) {\r\n this.setUpRadioButtons();\r\n }\r\n else if (this.control.ControlType == this.eFormService.controlTypes.image || this.control.ControlType == this.eFormService.controlTypes.linkToFile || this.control.ControlType == this.eFormService.controlTypes.attachment) {\r\n this.getAttachment();\r\n }\r\n else if (this.control.ControlType == this.eFormService.controlTypes.date) {\r\n if (this.control.Value) {\r\n this.dateValue = moment(this.control.Value);\r\n if (!this.dateValue.isValid()) {\r\n this.dateValue = null;\r\n }\r\n }\r\n }\r\n this.getMergeFieldDependantControls();\r\n if (this.eFormService.changes && this.eFormService.changes.find(o => o.ObjectType == 'Control' && o.FieldId == this.control.Id) != null) {\r\n this.highlightChanges = true;\r\n }\r\n if (this.control.ControlType == 'attachment') {\r\n this.setMaxFileSize();\r\n }\r\n if (this.control.ControlType == 'component') {\r\n if (this.eFormService.contentTemplates && this.eFormService.contentTemplates.length > 0) {\r\n const customDataTemplateRef: CustomDataTemplateRef = this.eFormService.contentTemplates.find(ct => ct.RefName == this.control.CustomFieldRefName);\r\n if (customDataTemplateRef) {\r\n this.contentTemplate = customDataTemplateRef.TemplateRef;\r\n }\r\n }\r\n }\r\n this.subscriptions.push(this.eFormService.observableReadOnlyStatusChangedStream$.subscribe(control => {\r\n if (control == this.control) {\r\n this.editable = control.Editable;\r\n }\r\n }));\r\n\r\n this.control.validateFunction = this.validate.bind(this);\r\n this.control.DesignPageIndex = this.designPageIndex;\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded();\r\n }, 0);\r\n }\r\n\r\n getMergeFieldDependantControls() {\r\n this.mergeFieldDependantControlIds = [];\r\n if (this.control.ControlType == this.eFormService.controlTypes.text) {\r\n this.mergeFieldDependantControlIds = this.mergeFieldDependantControlIds.concat(this.extractMergeTagIds(this.control.Value));\r\n }\r\n else {\r\n this.mergeFieldDependantControlIds = this.mergeFieldDependantControlIds.concat(this.extractMergeTagIds(this.control.Label));\r\n if (this.control && this.control.DropdownOptions) {\r\n this.control.DropdownOptions.forEach(opt => {\r\n this.mergeFieldDependantControlIds = this.mergeFieldDependantControlIds.concat(this.extractMergeTagIds(opt.CodeDescription));\r\n });\r\n }\r\n }\r\n }\r\n\r\n transformMergeTags() {\r\n // Moved to MergeFieldPipe to prevent overriding values in formData\r\n\r\n // when merge tag values are pulled from the database, we can just replace the tag rather than using a pipe. That way saved forms are exactly what the parent saw\r\n // when they saved the form even if the database values changed since then.\r\n // when the value is obtained from another object on the form, we need to use the pipe so that it can keep updating as the parent object changes.\r\n // if (!this.disableMergeFields) {\r\n // if (this.control.ControlType == this.eFormService.controlTypes.text) {\r\n // //this.control.Value = this.tylTranslatePipe.transform(this.control.Value);\r\n // this.control.Value = this.eFormService.transformDatabaseMergeTag(this.control.Value);\r\n // }\r\n // else {\r\n // //this.control.Label = this.tylTranslatePipe.transform(this.control.Label);\r\n // this.control.Label = this.eFormService.transformDatabaseMergeTag(this.control.Label);\r\n // this.control.DropdownOptions.forEach(opt => {\r\n // opt.CodeDescription = this.eFormService.transformDatabaseMergeTag(opt.CodeDescription);\r\n // });\r\n // }\r\n // }\r\n }\r\n\r\n extractMergeTagIds(text: string): number[] {\r\n const ids: number[] = [];\r\n let otherMatches: string[] = [];\r\n const otherFieldsRegEx = new RegExp('<<(.*?)>>', 'g');\r\n const otherFieldsSanitizedRegEx = new RegExp('<<(.*?)>>', 'g');\r\n otherMatches = text.match(otherFieldsRegEx);\r\n if (!otherMatches) {\r\n otherMatches = text.match(otherFieldsSanitizedRegEx);\r\n }\r\n\r\n if (otherMatches) {\r\n otherMatches.forEach(mergeTag => {\r\n const id = this.eFormService.getControlIdFromMergeTag(mergeTag);\r\n if (!isNaN(id)) {\r\n ids.push(id);\r\n }\r\n });\r\n }\r\n return ids;\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n setInitialVisibility() {\r\n this.control.Visible = true;\r\n\r\n if (this.control.ParentObjectId > 0) {\r\n const parentObject = this.eFormService.allFormControls.find(o => o.Id == this.control.ParentObjectId);\r\n if (parentObject) {\r\n this.control.Visible = this.eFormService.isConditionMet(this.control.Condition, parentObject);\r\n\r\n if (!this.control.Visible) {\r\n if (this.eFormService.inputControlTypes.includes(this.control.ControlType)) {\r\n this.control.Value = null;\r\n this.control.Attachment = null;\r\n this.control.AttachmentId = null;\r\n this.control.PreviousAttachmentId = null;\r\n }\r\n }\r\n else if (this.control.Value == null && this.control.DropdownOptions && this.control.DropdownOptions.length > 0) {\r\n this.control.DropdownOptions.forEach( option => {\r\n if (option.Default) {\r\n if (this.control.LinkedDBField != -1) {\r\n this.control.Value = option.Code;\r\n }\r\n else {\r\n this.control.Value = option.CodeDescription;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n setDefaultOptionFlags() {\r\n if (this.control.DropdownOptions.filter( option => option.Default).length == 0) {\r\n this.control.DropdownOptions.forEach( option => {\r\n if (this.control.LinkedDBField != -1) {\r\n option.Default = this.control.Value == option.Code;\r\n }\r\n else {\r\n option.Default = this.control.Value == option.CodeDescription;\r\n }\r\n });\r\n }\r\n }\r\n\r\n getAttachment() {\r\n if (this.control.AttachmentId && ((this.control.Attachment == null || this.control.Attachment == undefined) || (this.control.Attachment != null && this.control.Attachment != undefined && !this.control.Attachment.FileDataBase64))) {\r\n this.control.Attachment = new EFormAttachment();\r\n this.control.PreviousAttachmentId = null;\r\n this.subscriptions.push(this.eFormService.getEFormAttachment(this.control.AttachmentId).subscribe(attachment => {\r\n if (attachment) {\r\n this.control.Attachment = attachment;\r\n this.control.PreviousAttachmentId = this.control.AttachmentId;\r\n this.eFormService.eFormAttachment.push(attachment);\r\n }\r\n else {\r\n this.control.Attachment = new EFormAttachment();\r\n }\r\n }));\r\n }\r\n else if (!this.control.Attachment) {\r\n this.control.Attachment = new EFormAttachment();\r\n }\r\n }\r\n\r\n valueChanged() {\r\n if (this.control.ControlType == this.eFormService.controlTypes.date && !this.control.CustomField) {\r\n this.dateValue = moment(this.dateValue);\r\n if (this.dateValue.isValid()) {\r\n this.control.Value = this.dateValue.format('YYYY-MM-DD');\r\n }\r\n else {\r\n this.control.Value = '';\r\n }\r\n }\r\n this.eFormService.controlValueChanged(this.control);\r\n }\r\n\r\n setUpRadioButtons() {\r\n if (this.control.DropdownOptions) {\r\n if (this.control.Value) {\r\n this.control.Value = this.control.Value.trim();\r\n }\r\n this.control.DropdownOptions.forEach(opt => {\r\n opt.Code = opt.Code.trim();\r\n this.radioValues.push(opt.Code.trim());\r\n this.subscriptions.push(this.translateService.get(opt.CodeDescription).subscribe((res: string) => {\r\n this.radioLabels.push(res.trim());\r\n }));\r\n const id = 'rb' + (opt.Code.trim()).replace(' ', '_');\r\n this.radioIds.push(id + '_' + this.control.Label);\r\n });\r\n }\r\n }\r\n\r\n SetRadioValue(obj, code) {\r\n this.control.Value = code;\r\n this.valueChanged();\r\n }\r\n\r\n\r\n saveAttachment(attachment: EFormAttachment) {\r\n if (this.loginService.LoginSettings.V10) {\r\n System.viewFileFromBase(attachment.FileDataBase64, attachment.FileType, attachment.OriginalFileName);\r\n }\r\n else {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: attachment.ID,\r\n DocumentName: '',\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: 'Documents',\r\n ReportParameters: [],\r\n ReportType: 0\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n const win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n }\r\n\r\n attachmentChanged() {\r\n this.control.AttachmentId = null;\r\n }\r\n\r\n linkClick() {\r\n let mimeType = this.control.Attachment.FileType;\r\n if (this.control.Attachment.FileExtension.toLowerCase() == '.txt' || this.control.Attachment.FileExtension.toLowerCase() == '.rtf') {\r\n mimeType = 'text/plain';\r\n }\r\n else if (this.control.Attachment.FileExtension.toLowerCase() == '.doc' || this.control.Attachment.FileExtension.toLowerCase() == '.docx') {\r\n mimeType = 'application/msword';\r\n }\r\n else if (this.control.Attachment.FileType.toLowerCase() == 'applicatio') {\r\n mimeType = 'application/' + this.control.Attachment.FileExtension.substr(1);\r\n }\r\n System.viewFileFromBase(this.control.Attachment.FileDataBase64, mimeType, this.control.Label);\r\n }\r\n\r\n loaded() {\r\n requestAnimationFrame(() => { this.startRender(); });\r\n }\r\n\r\n startRender() {\r\n\r\n requestAnimationFrame(() => { this.rendered(); });\r\n }\r\n\r\n rendered() {\r\n setTimeout(() => {\r\n this.viewInitialized.emit(true);\r\n }, 0);\r\n }\r\n\r\n setMaxFileSize() {\r\n this.maxFileSizeByte = this.eFormService.maxFileSizeKB * 1048;\r\n\r\n if (this.eFormService.maxFileSizeKB > 1000 && this.eFormService.maxFileSizeKB % 1000 == 0) {\r\n this.maxFileSizeMessage = ' The maximum file size is ' + this.eFormService.maxFileSizeKB / 1000 + ' MB.';\r\n }\r\n else {\r\n this.maxFileSizeMessage = ' The maximum file size is ' + this.eFormService.maxFileSizeKB + ' kB.';\r\n }\r\n }\r\n\r\n validate(): ErrorList[] {\r\n let errors: ErrorList[] = [];\r\n\r\n if (this.control.CustomField && this.customField) {\r\n errors = this.customField.validate();\r\n }\r\n\r\n return errors;\r\n }\r\n}\r\n","export class EFormSurveyAnswer {\r\n ID: number;\r\n FormID: number;\r\n SurveyFieldID: number;\r\n Answer: string;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpOn: Date;\r\n LastUpBy: number;\r\n IsCritical: boolean;\r\n }","

PDF Name

\r\n\r\n
\r\n
\r\n

Shown below is the default name for the copy of this form which will be saved as a PDF in Student Digital Content.

\r\n

Shown below is the default name for the copy of this form which will be saved as a PDF in Student Documents.

\r\n

Because multiple copies of this form may be submitted, you may wish to change the name to something less\r\n generic so it is easier to distinguish between the copies.

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-e-form-pdf-name',\r\n templateUrl: './e-form-pdf-name.component.html',\r\n //styleUrls: ['./e-form-pdf-name.component.scss']\r\n})\r\nexport class EFormPdfNameComponent implements OnInit {\r\n\r\n PDFName: string\r\n V10:boolean;\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private loginService: LoginService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.PDFName = this.data.PDFName;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n nextClick() {\r\n this.dialogRef.close(this.PDFName);\r\n }\r\n\r\n}\r\n","
{{config.InformationalMessage}}
\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { Component, OnInit, ViewChild, Inject, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { EFormService } from '../../e-form.service';\r\nimport * as _ from 'lodash';\r\nimport { EFormDataObject } from '../../e-formDataObject.model';\r\nimport { ErrorList } from '../../../controls/error-prompt/error-list.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { SharedService } from '../../../shared.service';\r\nimport { UserService } from '../../../user/user.service';\r\nimport { YearService } from '../../../year/year.service';\r\nimport { EForm } from '../../e-form.model';\r\nimport { EFormNotesComponent } from '../../e-form-notes/e-form-notes.component';\r\nimport { EFormInstance } from '../../e-form-instance.model';\r\nimport { GeneralConfirmationComponent } from '../../../controls/general-confirmation/general-confirmation.component';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { EFormMarkSubmissionComponent } from '../../../../admin360/e-forms/e-form-submissions/e-form-mark-submission/e-form-mark-submission.component';\r\nimport { EFormConfiguration, enmEFormViewModes } from '../../e-form-config.model';\r\nimport { EFormViewerComponent } from '../e-form-viewer.component';\r\nimport * as moment from 'moment';\r\nimport { SpinnerService } from '../../../spinner/spinner.service';\r\nimport { EFormChangeHistory } from '../../e-form-change-history.model';\r\nimport { TylTranslation } from '../../../models/tyl-translation.model';\r\nimport { TranslationService } from '../../../translation/translation.service';\r\nimport { EFormControl } from '../../e-form-control.model';\r\nimport { EFormSurveyAnswer } from '../../e-form-survey-answer.model';\r\nimport { take } from 'rxjs/operators';\r\nimport { EFormPdfNameComponent } from '../../../../admin360/e-forms/e-form-submissions/e-Form-PDF-Name/e-form-pdf-name.component';\r\nimport { EFormAttachment } from '../../e-form-attachment.model';\r\nimport { CustomizationFrameworkService } from '../../../../shared-modules/customization-framework/customization-framework.service';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-e-form-viewer-modal',\r\n templateUrl: './e-form-viewer-modal.component.html',\r\n styleUrls: ['./e-form-viewer-modal.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EFormViewerModalComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(EFormViewerComponent, { static: true }) eFormViewer: EFormViewerComponent;\r\n eFormData: EFormDataObject;\r\n selectedForm: EForm;\r\n selectedInstance: EFormInstance;\r\n config = new EFormConfiguration();\r\n changes: EFormChangeHistory[];\r\n\r\n errors: ErrorList[] = [];\r\n\r\n isPreview = false;\r\n isReview = false;\r\n editable = true;\r\n showNextPreviousButtons = false;\r\n isLP = true;\r\n isFP = true;\r\n\r\n V10 = false;\r\n\r\n\r\n subscriptions: Subscription[] = [];\r\n\r\n translations: TylTranslation[] = [];\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private eFormService: EFormService,\r\n private sharedService: SharedService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private spinnerService: SpinnerService,\r\n private dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private customizationFrameworkService: CustomizationFrameworkService\r\n ) {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n\r\n if (data) {\r\n if (data.config) {\r\n this.config = data.config;\r\n }\r\n if (data.changes) {\r\n this.changes = data.changes;\r\n }\r\n }\r\n if (this.config.ViewMode == enmEFormViewModes.Template) {\r\n this.isPreview = true;\r\n this.editable = true;\r\n // this.disableMergeFields = true;\r\n }\r\n else if (this.config.ViewMode == enmEFormViewModes.Instance) {\r\n this.isPreview = true;\r\n this.editable = false;\r\n // this.disableMergeFields = true;\r\n }\r\n else if (this.config.ViewMode == enmEFormViewModes.Review) {\r\n this.editable = false;\r\n this.isReview = true;\r\n }\r\n else if (this.config.ViewMode == enmEFormViewModes.Page || this.config.ViewMode == enmEFormViewModes.CustomPage || this.config.ViewMode == enmEFormViewModes.FRMA) {\r\n this.editable = true;\r\n this.isPreview = true;\r\n this.config.IsPreview = true;\r\n }\r\n\r\n if (this.config.ReadOnly) {\r\n this.editable = false;\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.selectedForm = _.cloneDeep(this.eFormService.selectedForm);\r\n this.eFormData = _.cloneDeep(this.eFormService.selectedFormData);\r\n this.eFormService.pdfDataURIs = [];\r\n this.eFormService.showCriticalMessage = false;\r\n\r\n if (this.eFormData.Tabs.length > 1 || this.eFormData.Tabs[0].Pages.length > 1) {\r\n this.showNextPreviousButtons = true;\r\n }\r\n\r\n if (!this.isPreview) {\r\n this.getInstance();\r\n }\r\n\r\n this.subscriptions.push(this.eFormService.observableIsFirstPageStream$.subscribe(isFirstPage => {\r\n this.isFP = isFirstPage;\r\n }));\r\n this.subscriptions.push(this.eFormService.observableIsLastPageStream$.subscribe(isLastPage => {\r\n this.isLP = isLastPage;\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n getInstance() {\r\n this.subscriptions.push(this.eFormService.getEFormInstance(this.selectedForm.Instance_ID).subscribe(instance => {\r\n this.selectedInstance = instance;\r\n }));\r\n }\r\n\r\n acceptClick() {\r\n // if(this.V10) {\r\n this.selectedForm.Status = 'Accepted';\r\n\r\n if (this.selectedInstance.StoreLocation.toLowerCase() != 'eform' && (this.selectedInstance.FormDocTypeId || this.V10)) {\r\n this.eFormService.eFormAttachmentForPDF = [];\r\n // Check that attachments are user submitted attachments, not form images or links\r\n this.eFormService.allFormControls.forEach(control => {\r\n if (control.AttachmentId && control.ControlType == 'attachment') {\r\n if (control.Attachment) {\r\n this.eFormService.eFormAttachmentForPDF.push(control.Attachment);\r\n }\r\n else {\r\n this.eFormService.getEFormAttachment(control.AttachmentId).subscribe(attachment => {\r\n if (attachment) {\r\n this.eFormService.eFormAttachmentForPDF.push(attachment);\r\n }\r\n else {\r\n control.Attachment = new EFormAttachment();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n if (this.selectedInstance.AllowMultiple) {\r\n const PDFNameDialog = this.dialog.open(EFormPdfNameComponent, {\r\n disableClose: true,\r\n data: {\r\n PDFName: this.selectedInstance.Name\r\n }\r\n });\r\n PDFNameDialog.afterClosed().subscribe((PDFName: string) => {\r\n this.selectedForm.PDFNameOverride = PDFName;\r\n this.eFormViewer.initGenerateEnglishPDFOnly(() => {\r\n this.selectedForm.EnglishPDF = this.eFormService.selectedForm.EnglishPDF;\r\n this.saveAcceptedForm();\r\n });\r\n });\r\n }\r\n else {\r\n this.eFormViewer.initGenerateEnglishPDFOnly(() => {\r\n this.selectedForm.EnglishPDF = this.eFormService.selectedForm.EnglishPDF;\r\n this.saveAcceptedForm();\r\n });\r\n }\r\n }\r\n else {\r\n this.saveAcceptedForm();\r\n }\r\n }\r\n\r\n saveAcceptedForm() {\r\n this.selectedForm.DatabaseFields = this.eFormService.getLinkedDBFields(this.eFormViewer.eFormData);\r\n this.customizationFrameworkService.getLinkedCustomFields(this.eFormViewer.eFormData, this.eFormViewer.selectedForm).pipe(take(1)).subscribe(customFields => {\r\n this.selectedForm.CustomFields = customFields;\r\n this.subscriptions.push(this.eFormService.saveEForm(this.selectedForm, '', false, this.getSiteYearId()).subscribe(result => {\r\n if (result) {\r\n this.dialogRef.close('accept');\r\n }\r\n else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n }));\r\n\r\n this.customizationFrameworkService.saveAllCustomFieldsInMemory();\r\n });\r\n }\r\n\r\n getSiteYearId(): number {\r\n let siteYearId = -1;\r\n if (this.selectedForm.TemplateType == 'student' && this.eFormViewer && this.eFormViewer.studentHeader) {\r\n siteYearId = this.eFormViewer.studentHeader.studentEnrollment.SiteYearId;\r\n }\r\n return siteYearId;\r\n }\r\n\r\n async printClick() {\r\n // Initialize pdf\r\n this.eFormService.pdfDataURIs = [];\r\n\r\n this.eFormViewer.localPrint = true;\r\n this.eFormViewer.showAllConditionalsPrint = true;\r\n this.eFormViewer.addFormToPDFStarted = false;\r\n this.eFormViewer.columnInitializedBuffer = false;\r\n\r\n this.eFormViewer.showPrintDiv = true;\r\n this.spinnerService.showSpinner = true;\r\n }\r\n\r\n rejectClick() {\r\n this.selectedForm.Status = 'Rejected';\r\n const markCompleteDialog = this.dialog.open(EFormMarkSubmissionComponent, {\r\n disableClose: true,\r\n data: {\r\n markType: 'Rejected',\r\n eForm: this.selectedForm\r\n }\r\n });\r\n markCompleteDialog.afterClosed().subscribe((SendMail: string) => {\r\n if (SendMail) {\r\n this.selectedForm.Status = 'Rejected';\r\n this.selectedForm.TranslatedPDF = null;\r\n this.selectedForm.DocToFamily_ID = null;\r\n this.selectedForm.EnglishJSON = null;\r\n this.subscriptions.push(this.eFormService.saveEForm(this.selectedForm, '').subscribe(result => {\r\n if (result) {\r\n this.dialogRef.close(SendMail);\r\n }\r\n else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n }));\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n previousClick() {\r\n this.eFormViewer.previousClick();\r\n }\r\n\r\n nextClick() {\r\n this.eFormViewer.nextClick();\r\n }\r\n\r\n /// ************************************* Single Saving code **********************************************\r\n\r\n submitClick(methodName: string) {\r\n if (methodName == 'Submit') {\r\n this.errors = this.eFormViewer.validatePage();\r\n }\r\n if (methodName == 'SubmitLater') {\r\n this.errors = this.eFormViewer.validatePage(true);\r\n }\r\n if (this.eFormViewer.errors.length == 0) {\r\n this.eFormService.CheckEformsStatus(this.selectedForm.ID, this.selectedForm.Instance_ID, this.selectedForm.Student_ID, this.selectedForm.ParentMem_ID, this.loginService.LoginSettings.V10 ? this.selectedForm.PrimaryParentMem_ID : 0).subscribe(result => {\r\n if (result) {\r\n const eForm: EForm = result;\r\n let notPreviouslySubmitted: boolean = !eForm.Status\r\n || eForm.Status.toLowerCase() == 'not submitted'\r\n || eForm.Status.toLowerCase() == 'rejected';\r\n\r\n if (!notPreviouslySubmitted && this.selectedForm.CompletionDue && this.selectedForm.CompletionDueOption == 'OncePer' && this.selectedForm.Frequency == 'Day') {\r\n if (this.V10) {\r\n if (moment(moment(eForm.SubmittedDate).format('MM/DD/YYYY')).isBefore(moment().format('MM/DD/YYYY'))) {\r\n notPreviouslySubmitted = true;\r\n }\r\n }\r\n else {\r\n if (moment(moment(eForm.SubmittedOn).format('MM/DD/YYYY')).isBefore(moment().format('MM/DD/YYYY'))) {\r\n notPreviouslySubmitted = true;\r\n }\r\n }\r\n }\r\n\r\n if (methodName == 'Submit' && (notPreviouslySubmitted || this.selectedInstance.AllowMultiple)) {\r\n this.confirmSubmission();\r\n }\r\n else if (methodName == 'SubmitLater' && (notPreviouslySubmitted || this.selectedInstance.AllowMultiple)) {\r\n this.selectedForm.Status = 'Not Submitted';\r\n this.updateAttachments(false);\r\n this.eFormService.templateProcessType = '';\r\n this.eFormService.categoryType = '';\r\n }\r\n else {\r\n this.submittedWarningMessage(eForm);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n confirmSubmission() {\r\n if (this.eFormViewer.errors.length == 0) {\r\n const submitConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n width: '400px',\r\n disableClose: true,\r\n });\r\n submitConfirmDialog.componentInstance.headerLabel = 'Confirm Submit';\r\n submitConfirmDialog.componentInstance.confirmMessage = 'This e-Form will not be editable after it has been submitted.';\r\n submitConfirmDialog.componentInstance.secondMessage = 'If you are sure you do not need to make any more changes select OK. Otherwise, select Cancel.';\r\n submitConfirmDialog.componentInstance.confirmEvent.subscribe((confirm: boolean) => {\r\n if (confirm) {\r\n this.submitEFormFor();\r\n }\r\n });\r\n }\r\n }\r\n\r\n submittedWarningMessage(eForm: EForm) {\r\n let messageText = '';\r\n\r\n if (eForm.SubmittedByName && eForm.SubmittedDate) {\r\n const submittedDate = moment(eForm.SubmittedDate).format('MM/DD/YYYY');\r\n const submittedTime = moment(eForm.SubmittedDate).format('hh:mm A');\r\n messageText = 'This form has already been submitted by ' + eForm.SubmittedByName + ' at ' + submittedTime + ' on ' + submittedDate + ' and cannot be submitted again.';\r\n }\r\n else {\r\n messageText = 'This form has already been submitted and cannot be submitted again.';\r\n }\r\n\r\n const alreadySubmittedDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n alreadySubmittedDialog.componentInstance.informational = true;\r\n alreadySubmittedDialog.componentInstance.headerLabel = 'SUBMISSION DENIED';\r\n alreadySubmittedDialog.componentInstance.confirmMessage = messageText;\r\n alreadySubmittedDialog.afterClosed().subscribe((updateRequired: boolean) => {\r\n this.dialogRef.close('cancel');\r\n });\r\n }\r\n\r\n async submitEFormFor() {\r\n this.subscriptions.push(this.eFormService.getEformCategoryByInstanceId(this.selectedInstance.ID).subscribe(category => {\r\n this.selectedForm.Status = 'Submitted';\r\n this.selectedForm.SubmittedBy = this.userService.currentUser.Id;\r\n this.selectedForm.SubmittedOn = new Date();\r\n\r\n if (this.selectedForm.IsSurvey && this.selectedForm.DisplayCriticalMessage) {\r\n this.checkForCriticalMessage();\r\n }\r\n\r\n if (this.selectedInstance && this.selectedInstance.ProcessType.toLowerCase() == 'auto') {\r\n this.eFormService.templateProcessType = 'auto';\r\n }\r\n else {\r\n this.eFormService.templateProcessType = 'required';\r\n }\r\n\r\n if (category.CompletionMethod.toLowerCase() == 'auto') {\r\n this.eFormService.categoryType = 'complete';\r\n }\r\n else {\r\n this.eFormService.categoryType = 'accepted';\r\n }\r\n this.updateAttachments(true);\r\n })\r\n );\r\n }\r\n\r\n async saveEFormData(isSubmit: boolean) {\r\n this.selectedForm.FormData = JSON.stringify(this.eFormViewer.eFormData);\r\n this.selectedForm.Year_ID = (!this.selectedForm.Year_ID || this.selectedForm.Year_ID == undefined) ? this.yearService.student360Year.Id : this.selectedForm.Year_ID;\r\n\r\n this.eFormViewer.initGenerateEFormPDFAndJSON(this.selectedForm.Status, () => {\r\n if (this.selectedForm.Status.toLowerCase() == 'submitted' || this.selectedForm.Status.toLowerCase() == 'accepted') {\r\n if (this.selectedInstance.StoreLocation.toLowerCase() != 'eform' && (this.selectedInstance.FormDocTypeId || this.V10) && this.selectedInstance.ProcessType == 'auto') {\r\n this.selectedForm.EnglishPDF = this.eFormService.selectedForm.EnglishPDF;\r\n }\r\n this.selectedForm.TranslatedPDF = this.eFormService.selectedForm.TranslatedPDF;\r\n this.selectedForm.EnglishJSON = this.eFormService.selectedForm.EnglishJSON;\r\n this.selectedForm.Non_English = this.userService.currentLanguage != 'en';\r\n this.selectedForm.DatabaseFields = this.eFormService.getLinkedDBFields(this.eFormViewer.eFormData);\r\n if (this.selectedForm.IsSurvey) {\r\n this.selectedForm.SurveyAnswers = this.getSurveyAnswers();\r\n }\r\n this.eFormViewer.clearAttachments();\r\n }\r\n this.customizationFrameworkService.getLinkedCustomFields(this.eFormViewer.eFormData, this.eFormViewer.selectedForm).pipe(take(1)).subscribe(customFields => {\r\n this.selectedForm.CustomFields = customFields;\r\n this.subscriptions.push(this.eFormService.saveEForm(this.selectedForm, '', false, this.getSiteYearId()).subscribe(result => {\r\n if (result) {\r\n // ONE-8480\r\n // If FromData is blank in EFM_Forms table\r\n if (result.FormData == undefined || result.FormData == null || result.FormData == '' || result.FormData == 'null') {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n else {\r\n this.dialogRef.close('save');\r\n }\r\n }\r\n else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n })\r\n );\r\n });\r\n\r\n });\r\n }\r\n\r\n /// ***********************************************************************************************************************\r\n\r\n async updateAttachments(isSubmit: boolean = false) {\r\n this.eFormViewer.updateAttachments(() => {\r\n if (isSubmit) {\r\n this.eFormService.eFormAttachmentForPDF = [];\r\n // Check that attachments are user submitted attachments, not form images or links\r\n this.eFormService.allFormControls.forEach(control => {\r\n if (control.AttachmentId && control.ControlType == 'attachment') {\r\n this.eFormService.eFormAttachmentForPDF.push(control.Attachment);\r\n }\r\n });\r\n }\r\n this.eFormViewer.clearAttachments();\r\n this.saveEFormData(isSubmit);\r\n });\r\n }\r\n\r\n // deprecated\r\n // updateDBFields(formID: number) {\r\n // const dbFields = this.eFormService.getLinkedDBFields(this.eFormViewer.eFormData);\r\n // if (dbFields.length > 0) {\r\n // this.eFormService.updateLinkedDBFields(formID, dbFields).subscribe(success => {\r\n // if (success) {\r\n // this.dialogRef.close('save');\r\n // }\r\n // else {\r\n // this.sharedService.showBadSnackbar();\r\n // }\r\n // });\r\n // }\r\n // else {\r\n // if (this.V10) {\r\n // if (this.selectedInstance.ProcessType.toLowerCase() != 'auto' || !this.selectedInstance.FormDocTypeId) {\r\n // if (this.userService.currentLanguage && this.userService.currentLanguage == 'en' || this.loginService.LoginSettings.V10) {\r\n // this.dialogRef.close('save');\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // this.dialogRef.close('save');\r\n // }\r\n // }\r\n // }\r\n\r\n checkForCriticalMessage() {\r\n const surveyControls: EFormControl[] = this.eFormService.allFormControls.filter(control => control.IsCritical);\r\n\r\n this.eFormService.showCriticalMessage = false;\r\n\r\n surveyControls.forEach(control => {\r\n switch (control.ControlType) {\r\n case this.eFormService.controlTypes.checkbox:\r\n if (control.Value == true) {\r\n this.eFormService.showCriticalMessage = true;\r\n }\r\n break;\r\n default:\r\n control.DropdownOptions.forEach(option => {\r\n if (option.IsCritical && option.Code == control.Value) {\r\n this.eFormService.showCriticalMessage = true;\r\n }\r\n });\r\n break;\r\n }\r\n });\r\n }\r\n\r\n // deprecated\r\n saveSurveyAnswers() {\r\n const surveyControls: EFormControl[] = this.eFormService.allFormControls.filter(control => control.SurveyFieldID && control.SurveyFieldID > 0);\r\n\r\n if (surveyControls.length > 0) {\r\n const surveyAnswers: EFormSurveyAnswer[] = [];\r\n\r\n surveyControls.forEach(control => {\r\n const surveyAnswer: EFormSurveyAnswer = new EFormSurveyAnswer;\r\n surveyAnswer.ID = 0;\r\n surveyAnswer.FormID = this.selectedForm.ID;\r\n if (control.ControlType == this.eFormService.controlTypes.checkbox) {\r\n surveyAnswer.Answer = control.Value == true ? 'checked' : 'unchecked';\r\n }\r\n else {\r\n surveyAnswer.Answer = control.Value;\r\n }\r\n surveyAnswer.SurveyFieldID = control.SurveyFieldID;\r\n surveyAnswers.push(surveyAnswer);\r\n });\r\n\r\n this.eFormService.saveEFormSurveyAnswers(surveyAnswers).pipe(take(1)).subscribe(() => { });\r\n }\r\n }\r\n\r\n getSurveyAnswers(): EFormSurveyAnswer[] {\r\n const surveyControls: EFormControl[] = this.eFormService.allFormControls.filter(control => control.SurveyFieldID && control.SurveyFieldID > 0);\r\n const surveyAnswers: EFormSurveyAnswer[] = [];\r\n\r\n if (surveyControls.length > 0) {\r\n surveyControls.forEach(control => {\r\n const surveyAnswer: EFormSurveyAnswer = new EFormSurveyAnswer;\r\n surveyAnswer.ID = 0;\r\n surveyAnswer.FormID = this.selectedForm.ID;\r\n if (control.ControlType == this.eFormService.controlTypes.checkbox) {\r\n surveyAnswer.Answer = control.Value == true ? 'checked' : 'unchecked';\r\n }\r\n else {\r\n surveyAnswer.Answer = control.Value;\r\n }\r\n surveyAnswer.SurveyFieldID = control.SurveyFieldID;\r\n surveyAnswers.push(surveyAnswer);\r\n });\r\n }\r\n\r\n return surveyAnswers;\r\n }\r\n\r\n notesClick() {\r\n const noteDialog = this.dialog.open(EFormNotesComponent, {\r\n disableClose: true,\r\n data: {\r\n eForm: this.selectedForm\r\n }\r\n });\r\n this.subscriptions.push(noteDialog.afterClosed().subscribe(frm => {\r\n if (frm) {\r\n this.selectedForm = frm;\r\n }\r\n }));\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close('cancel');\r\n }\r\n}\r\n","
\r\n
0\" class=\"eFormRow\" [ngStyle]=\"{'align-items': row.Alignment, 'width': config.IsMobilePreview ? '100%' : ''}\">\r\n \r\n \r\n
\r\n \r\n
0\" class=\"eFormRow\" [ngStyle]=\"{'align-items': row.Alignment}\">\r\n 1 ? '50%' : '100%') : '', 'min-width': config.IsMobilePreview || control.ControlType == 'component' ? '' : control.Width}\"\r\n (viewInitialized)=\"controlInitialized(control)\" style='display:flex;' [print]='print' [showConditionals]='showConditionals' [masterId]=\"masterId\" [designPageIndex]=\"designPageIndex\">\r\n \r\n
\r\n
\r\n
","import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\r\nimport { EFormRow } from '../../e-form-row.model';\r\nimport { EFormControl } from '../../e-form-control.model';\r\nimport { EFormConfiguration } from '../../e-form-config.model';\r\n\r\n@Component({\r\n selector: 'e-form-viewer-row',\r\n templateUrl: './e-form-viewer-row.component.html',\r\n styleUrls: ['./e-form-viewer-row.component.css']\r\n})\r\nexport class EFormViewerRowComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() row: EFormRow;\r\n @Input() editable: boolean;\r\n @Input() disableMergeFields: boolean;\r\n @Input() print: boolean;\r\n @Input() showConditionals: boolean;\r\n @Input() masterId: number;\r\n @Input() designPageIndex: number;\r\n @Input() config: EFormConfiguration;\r\n @Output() viewInitialized: EventEmitter = new EventEmitter();\r\n controlViewStatuses: any[] = [];\r\n columnViewStatuses: any[] = [];\r\n initialized = false;\r\n constructor() { \r\n const x = this.masterId;\r\n }\r\n\r\n ngOnInit() {\r\n this.row.Controls.forEach(control => {\r\n if (control.Visible) {\r\n this.controlViewStatuses.push({Id: control.Id, Initialized: false});\r\n }\r\n });\r\n for (let i = 0; i < this.row.Columns.length; i++) {\r\n this.columnViewStatuses.push({Id: i, Initialized: false});\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initialized = true;\r\n this.checkInitializedStatus();\r\n }\r\n\r\n checkInitializedStatus() {\r\n if (this.initialized && this.controlViewStatuses.find(o => o.Initialized == false) == null && this.columnViewStatuses.find(o => o.Initialized == false) == null) {\r\n setTimeout(() => {\r\n this.viewInitialized.emit(true);\r\n }, 0);\r\n }\r\n }\r\n\r\n controlInitialized(control: EFormControl) {\r\n const status = this.controlViewStatuses.find(o => o.Id == control.Id);\r\n if (status) {\r\n status.Initialized = true;\r\n }\r\n this.checkInitializedStatus();\r\n }\r\n\r\n columnInitialized(index: number) {\r\n const status = this.columnViewStatuses.find(o => o.Id == index);\r\n if (status) {\r\n status.Initialized = true;\r\n }\r\n this.checkInitializedStatus();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{schoolNameTag | mergeField: disableMergeFields: pipeTrigger}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{schoolAddressTag | mergeField: disableMergeFields: pipeTrigger}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {{currentDate | date: 'MM/dd/yy'}}\r\n
\r\n
\r\n
\r\n
\r\n
{{parentNameTag | mergeField: disableMergeFields: pipeTrigger}}
\r\n
{{parentAddressStreetTag | mergeField: disableMergeFields: pipeTrigger}}
\r\n
{{parentAddressCityTag | mergeField: disableMergeFields: pipeTrigger}}
\r\n
\r\n
\r\n
\r\n
\r\n Student: {{studentNameTag | mergeField: disableMergeFields: pipeTrigger}}\r\n
\r\n
\r\n
","import { Component, OnInit, Input, AfterViewInit, EventEmitter, Output } from '@angular/core';\r\nimport { EFormColumn } from '../../e-form-column.model';\r\nimport { EFormControl } from '../../e-form-control.model';\r\nimport { EFormConfiguration } from '../../e-form-config.model';\r\nimport { EFormService } from '../../e-form.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { YearService } from '../../../year/year.service';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { ReportingService } from '../../../../shared-modules/reporting/reporting.service';\r\n\r\n@Component({\r\n selector: 'e-form-viewer-header',\r\n templateUrl: './e-form-viewer-header.component.html',\r\n styleUrls: ['./e-form-viewer-header.component.css']\r\n})\r\nexport class EFormViewerHeaderComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() editable: boolean;\r\n @Input() disableMergeFields: boolean;\r\n @Input() print: boolean;\r\n @Input() showConditionals: boolean;\r\n @Input() masterId: number;\r\n @Input() designPageIndex: number;\r\n @Input() config: EFormConfiguration;\r\n @Output() viewInitialized: EventEmitter = new EventEmitter();\r\n\r\n districtLogo: SafeResourceUrl;\r\n siteLogo: SafeResourceUrl;\r\n alternateSiteLogo: SafeResourceUrl;\r\n alternateDistrictLogo: SafeResourceUrl;\r\n\r\n pipeTrigger = false;\r\n currentDate: Date = new Date();\r\n schoolNameTag: string = '<>';\r\n schoolAddressTag: string = '<>';\r\n studentNameTag: string = '<>'\r\n parentNameTag: string = '<>';\r\n parentAddressStreetTag: string = '<>';\r\n parentAddressCityTag: string = '<>';\r\n initialized = false;\r\n subscriptions: Subscription[] = [];\r\n \r\n constructor(private eFormService: EFormService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private reportingService: ReportingService,\r\n private sanitizer: DomSanitizer) { \r\n\r\n }\r\n\r\n ngOnInit() {\r\n if(this.config.HeaderSelectedLogo != 0) {\r\n this.getLogos();\r\n }\r\n this.subscriptions.push(this.eFormService.observableMergeFieldValuesRetrievedStream$.subscribe(fieldsExist => {\r\n this.pipeTrigger = !this.pipeTrigger;\r\n setTimeout(() => {\r\n this.pipeTrigger = !this.pipeTrigger;\r\n }, 100);\r\n }));\r\n this.subscriptions.push(this.eFormService.observablePipeTriggerStream$.subscribe(trigger => {\r\n this.pipeTrigger = !this.pipeTrigger;\r\n setTimeout(() => {\r\n this.pipeTrigger = !this.pipeTrigger;\r\n }, 100);\r\n }));\r\n }\r\n\r\n getLogos() {\r\n if(this.eFormService.districtLogo && this.eFormService.alternateDistrictLogo && this.eFormService.siteLogo && this.alternateSiteLogo) {\r\n\r\n this.districtLogo = this.eFormService.districtLogo;\r\n this.alternateDistrictLogo = this.eFormService.alternateDistrictLogo;\r\n this.siteLogo = this.eFormService.siteLogo;\r\n this.alternateSiteLogo = this.eFormService.alternateSiteLogo;\r\n }\r\n else {\r\n this.reportingService.getReportLogos(this.reportingService.currentUser.Id, this.yearService.defaultYear.SchoolID).subscribe(reportLogos => {\r\n this.districtLogo = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/png;base64, ' + this.loginService.LoginSettings.DistrictLogo.toString());\r\n this.alternateDistrictLogo = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64, ' + reportLogos['AlternateDistrictLogo']);\r\n this.siteLogo = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64, ' + reportLogos['SiteLogo']);\r\n this.alternateSiteLogo = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64, ' + reportLogos['AlternateSiteLogo']);\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.viewInitialized.emit(true);\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n Show conditional objects\r\n \r\n \r\n {{language.CodeDescription}}\r\n \r\n \r\n
\r\n \r\n \r\n 0 && selectedStudent && !isBehaviorLetter \"\r\n [studentId]=\"selectedForm.Student_ID\" [disableYearSelect]=\"true\" [disableNavigation]=\"true\"\r\n [showYearSelector]=\"false\" [useYear]=\"selectedYear\" [hideAlerts]=\"showPrintDiv\" [useStudents]=\"[selectedStudent]\">\r\n \r\n
\r\n

\r\n Preview: {{config.Title | tylTranslate}}\r\n

\r\n

\r\n {{formName | tylTranslate}}\r\n

\r\n \r\n \r\n \r\n 1\" [tabNames]=\"tabNames\"\r\n [disabledTabs]=\"!isPreview && !isReview && editable ? tabNames : null\"\r\n (tabChange)=\"selectedTabChanged($event)\" (click)=\"tabsClick()\">\r\n
\r\n
\r\n {{selectedPage.Name}}\r\n
\r\n
\r\n Page {{selectedPageNumber}} of {{selectedTab.Pages.length}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
1\">\r\n 1\">{{tab.Name ? tab.Name.toUpperCase():''}}\r\n
\r\n
\r\n
1\">\r\n 1\">{{page.Name}}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Submitted by {{selectedForm.SubmittedByName}}
\r\n
Submitted on {{selectedForm.SubmittedOn | date:'MM/dd/yy'}}
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n OnDestroy,\r\n Input,\r\n ViewEncapsulation,\r\n ElementRef,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { EFormTab } from '../e-form-tab.model';\r\nimport { EFormPage } from '../e-form-page.model';\r\nimport { EFormService } from '../e-form.service';\r\nimport { TabsComponent } from '../../controls/tabs/tabs.component';\r\nimport { Lookup } from '../../lookup/lookup.model';\r\nimport * as _ from 'lodash';\r\nimport { EFormControl } from '../e-form-control.model';\r\nimport { EFormDataObject } from '../e-formDataObject.model';\r\nimport { ErrorList } from '../../controls/error-prompt/error-list.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { SharedService } from '../../shared.service';\r\nimport { EFormAttachment } from '../e-form-attachment.model';\r\nimport { UserService } from '../../user/user.service';\r\nimport { YearService } from '../../year/year.service';\r\nimport { EForm } from '../e-form.model';\r\nimport { Year } from '../../year/year.model';\r\nimport { StudentService } from '../../student/student.service';\r\nimport { Student } from '../../student/student.model';\r\nimport { EFormInstance } from '../e-form-instance.model';\r\nimport { EFormColumn } from '../e-form-column.model';\r\nimport { SpinnerService } from '../../spinner/spinner.service';\r\nimport { EFormChangeHistory } from '../e-form-change-history.model';\r\nimport { EFormRow } from '../e-form-row.model';\r\nimport { TranslationService } from '../../translation/translation.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { PDFExportComponent } from '@progress/kendo-angular-pdf-export';\r\nimport { System } from '../../System';\r\nimport { Group, exportPDF } from '@progress/kendo-drawing';\r\nimport { EFormConfiguration, enmEFormViewModes, PageObjectTypes } from '../e-form-config.model';\r\nimport { CustomizationService } from '../../../admin360/customization/customization.service';\r\nimport { TylTranslation } from '../../models/tyl-translation.model';\r\nimport { take } from 'rxjs/operators';\r\nimport { StudentHeaderComponent } from '../../student-header/student-header.component';\r\nimport { CustomizationFrameworkService } from '../../../shared-modules/customization-framework/customization-framework.service';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-e-form-viewer',\r\n templateUrl: './e-form-viewer.component.html',\r\n styleUrls: ['./e-form-viewer.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EFormViewerComponent implements OnInit, OnDestroy {\r\n\r\n eFormData: EFormDataObject;\r\n eFormDataToPDF: EFormDataObject;\r\n selectedTab: EFormTab;\r\n selectedPage: EFormPage;\r\n selectedForm: EForm;\r\n selectedInstance: EFormInstance;\r\n tabNames: string[] = [];\r\n languages: Lookup[] = [];\r\n isPreview = false;\r\n isReview = false;\r\n editable = true;\r\n useInstance = true;\r\n showConditionalObjects = false;\r\n selectedLanguage = 'en';\r\n formControls: EFormControl[] = [];\r\n showNextPreviousButtons = false;\r\n selectedYear: Year;\r\n selectedStudent: Student;\r\n errors: ErrorList[] = [];\r\n subscriptions: Subscription[] = [];\r\n printProgress = 0;\r\n showPrintDiv = false;\r\n tabViewStatus: any[] = [];\r\n visibleTabs: EFormTab[] = [];\r\n allowedFileExtensions = ['.pdf', '.bmp', '.jpg', '.png'];\r\n allowedImageExtensions = ['.bmp', '.jpg', '.png'];\r\n maxFileSizeKB = 0; // set in eFormService\r\n changes: EFormChangeHistory[] = [];\r\n disableMergeFields = false;\r\n selectedLanguageCode = '';\r\n languageChange = false;\r\n showContent = true;\r\n showAllConditionalsPrint = false;\r\n @ViewChild(TabsComponent) tabs: TabsComponent;\r\n @ViewChild(StudentHeaderComponent) studentHeader: StudentHeaderComponent;\r\n @ViewChild('printRef', { read: ElementRef, static: true }) printRef: ElementRef;\r\n @ViewChild('pdf', { static: true }) pdfExportRef: PDFExportComponent;\r\n @ViewChild('validationTrigger', { read: ElementRef, static: true }) validateButton: ElementRef;\r\n private subscription: Subscription;\r\n @Output() renderCompleted = new EventEmitter();\r\n @Output() initialized = new EventEmitter();\r\n @Output() valueChanged = new EventEmitter();\r\n @Input() showPrintDivInput = false;\r\n @Input() configInput: EFormConfiguration;\r\n @Input() changesInput: EFormChangeHistory[];\r\n @Input() languageIdOverride: number;\r\n @Input() pageID: number;\r\n @Input() masterId: number;\r\n @Input() designPageIndex: number;\r\n @Input() formName: string;\r\n @Input() showSubmittedInfo: boolean;\r\n @Input() isBehaviorLetter = false;\r\n labels: string[] = [];\r\n serviceLabels: string[] = [];\r\n serviceControls: EFormControl[] = [];\r\n localPrint = false;\r\n columnInitializedBuffer = false;\r\n pdfName: string;\r\n selectedPageNumber: number;\r\n dataURIs = [];\r\n addFormToPDFStarted = false;\r\n config: EFormConfiguration;\r\n fileNameOverride = false;\r\n fileNameInput = '';\r\n hideKendoBottomPadding = false;\r\n\r\n isLP = true;\r\n isFP = true;\r\n\r\n translations: TylTranslation[] = [];\r\n V10 = false;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private eFormService: EFormService,\r\n private sharedService: SharedService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private studentService: StudentService,\r\n private spinnerService: SpinnerService,\r\n private translationService: TranslationService,\r\n private customizationService: CustomizationService,\r\n private customizationFrameworkService: CustomizationFrameworkService,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ) {\r\n if (data) {\r\n if (data.config) {\r\n this.config = data.config;\r\n }\r\n if (data.changes) {\r\n this.changes = data.changes;\r\n } else {\r\n this.changes = this.changesInput;\r\n }\r\n this.eFormService.changes = this.changes;\r\n }\r\n\r\n this.maxFileSizeKB = this.eFormService.maxFileSizeKB;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnInit() {\r\n this.initialized.emit(true);\r\n if (!this.config && this.configInput) {\r\n this.config = this.configInput;\r\n } else if (!this.config) {\r\n this.config = new EFormConfiguration();\r\n }\r\n\r\n if (this.config.ViewMode == enmEFormViewModes.Template) {\r\n this.isPreview = true;\r\n this.editable = true;\r\n this.disableMergeFields = true;\r\n } else if (this.config.ViewMode == enmEFormViewModes.Instance) {\r\n this.isPreview = true;\r\n // this.editable = false;\r\n this.editable = true;\r\n this.disableMergeFields = true;\r\n } else if (this.config.ViewMode == enmEFormViewModes.Review) {\r\n this.editable = false;\r\n this.isReview = true;\r\n } else if (this.config.ViewMode == enmEFormViewModes.Page) {\r\n this.editable = true;\r\n this.isReview = false;\r\n this.isPreview = this.config.IsPreview;\r\n this.hideKendoBottomPadding = true;\r\n } else if (this.config.ViewMode == enmEFormViewModes.CustomPage) {\r\n this.editable = true;\r\n this.isReview = false;\r\n this.isPreview = this.config.IsPreview;\r\n this.hideKendoBottomPadding = true;\r\n if (this.config) {\r\n this.config.HideTitle = true;\r\n }\r\n } else if (this.config.ViewMode == enmEFormViewModes.FRMA) {\r\n this.editable = true;\r\n this.isReview = false;\r\n this.isPreview = this.config.IsPreview;\r\n this.hideKendoBottomPadding = true;\r\n this.config.HideTitle = true;\r\n }\r\n\r\n this.eFormService.viewType = this.config.ViewMode;\r\n\r\n if (this.config.ReadOnly) {\r\n this.editable = false;\r\n }\r\n if (this.config) {\r\n this.useInstance = this.config.UseInstance;\r\n }\r\n\r\n if (!this.pageID) {\r\n this.selectedForm = _.cloneDeep(this.eFormService.selectedForm);\r\n\r\n this.initializePage();\r\n } else {\r\n this.customizationService.getDesignPageByIDs(false, [this.pageID]).pipe(take(1)).subscribe(page => {\r\n if (page.length == 1) {\r\n const eForm: EForm = new EForm;\r\n\r\n eForm.FormData = page[0].FormData;\r\n\r\n this.selectedForm = _.cloneDeep(eForm);\r\n\r\n this.initializePage();\r\n }\r\n });\r\n }\r\n }\r\n\r\n initializePage() {\r\n if (this.selectedForm && this.selectedForm.Student_ID > 0) {\r\n this.setSelectedStudent();\r\n }\r\n this.eFormData = _.cloneDeep(this.eFormService.selectedFormData);\r\n this.setInitialVisibility();\r\n // Should only be called for new forms to default DB fields to current values in DB\r\n if (!this.isPreview && (this.selectedForm && (!this.selectedForm.ID || this.selectedForm.ID <= 0))) {\r\n this.setLinkedDBFieldValues();\r\n }\r\n this.getTabs();\r\n this.getLanguages();\r\n this.selectedPageNumber = this.getSelectedPageNumber();\r\n this.subscriptions.push(this.eFormService.observableControlValueChangedStream$.subscribe(parentControl => {\r\n this.checkConditionalObjects(parentControl);\r\n if (parentControl.CustomField && parentControl.DesignPageIndex == this.designPageIndex) {\r\n this.valueChanged.emit(parentControl.CustomFieldRefName);\r\n }\r\n }));\r\n if (this.eFormData.Tabs.length > 1 || this.eFormData.Tabs[0].Pages.length > 1) {\r\n this.showNextPreviousButtons = true;\r\n }\r\n if (!this.isPreview) {\r\n let studentId = 0;\r\n let parentId = 0;\r\n let incidentId = 0;\r\n let involvementType = ' ';\r\n if (this.selectedForm) {\r\n studentId = (this.selectedForm.Student_ID ? this.selectedForm.Student_ID : 0);\r\n parentId = (this.selectedForm.ParentMem_ID ? this.selectedForm.ParentMem_ID : 0);\r\n incidentId = (this.selectedForm.Incident_ID ? this.selectedForm.Incident_ID : 0);\r\n involvementType = (this.selectedForm.InvolvementType ? this.selectedForm.InvolvementType : ' ');\r\n } else if (this.config.ViewMode == enmEFormViewModes.Page) {\r\n switch (this.config.PageObjectType) {\r\n case PageObjectTypes.Student:\r\n studentId = this.masterId;\r\n break;\r\n default:\r\n this.disableMergeFields = true;\r\n break;\r\n }\r\n }\r\n this.eFormService.getMergeFieldValues(this.eFormData, this.yearService.student360Year.SchoolID, this.yearService.student360Year.Id, studentId, parentId, incidentId, involvementType, this.config, this.selectedForm ? this.selectedForm.NonresidentParents : false);\r\n if (this.useInstance) {\r\n this.getInstance();\r\n }\r\n }\r\n if (this.showPrintDivInput) {\r\n this.config.ViewMode = enmEFormViewModes.Form;\r\n this.showPrintDiv = this.showPrintDivInput;\r\n }\r\n this.eFormData.Tabs.forEach(tab => {\r\n if (tab.Visible) {\r\n tab.Pages.forEach(page => {\r\n if (page.Visible) {\r\n page.Columns.forEach(col => {\r\n const colObj = {\r\n Column: col,\r\n Initialized: false\r\n };\r\n this.tabViewStatus.push(colObj);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.getFormLabels();\r\n\r\n this.isFirstPage();\r\n this.isLastPage();\r\n this.eFormService.eFormAttachment = [];\r\n }\r\n\r\n getInstance() {\r\n this.subscriptions.push(this.eFormService.getEFormInstance(this.selectedForm.Instance_ID).subscribe(instance => {\r\n this.selectedInstance = instance;\r\n }));\r\n }\r\n\r\n setSelectedStudent() {\r\n if (this.userService.userType == 1) {\r\n this.subscriptions.push(this.studentService.getStudent(this.selectedForm.Student_ID).subscribe(student => {\r\n this.selectedStudent = student;\r\n }));\r\n } else {\r\n this.selectedStudent = this.studentService.students.find(o => o.Id == this.selectedForm.Student_ID);\r\n }\r\n }\r\n\r\n clearSelectedStudent() {\r\n this.studentService.clearSelectedStudent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.eFormService.clearMergeFieldValues();\r\n if (this.languageChange) {\r\n // changed for ONE-5073, the e-Form preview only uses tyl-translate now\r\n // this.userService.setUserLanguage('en').subscribe();\r\n this.translationService.overrideTranslationPipe = false;\r\n }\r\n }\r\n\r\n setInitialVisibility() {\r\n this.formControls = this.eFormService.getAllFormControls(this.eFormData);\r\n if (this.designPageIndex > -1) {\r\n this.eFormService.allFormControls = this.eFormService.allFormControls.concat(this.formControls);\r\n this.eFormService.allCustomFieldControls = this.eFormService.allCustomFieldControls.concat(this.formControls.filter(control => control.CustomField));\r\n } else {\r\n this.eFormService.allFormControls = this.formControls;\r\n }\r\n this.eFormData.Tabs.forEach(tab => {\r\n tab.Visible = true;\r\n if (tab.ParentObjectId > 0) {\r\n const parentObj = this.formControls.find(o => o.Id == tab.ParentObjectId);\r\n if (parentObj) {\r\n tab.Visible = this.eFormService.isConditionMet(tab.Condition, parentObj);\r\n }\r\n }\r\n tab.Pages.forEach(page => {\r\n page.Visible = true;\r\n if (page.ParentObjectId > 0) {\r\n const parentObj = this.formControls.find(o => o.Id == page.ParentObjectId);\r\n if (parentObj) {\r\n page.Visible = this.eFormService.isConditionMet(page.Condition, parentObj);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n checkConditionalObjects(parentControl: EFormControl) {\r\n this.eFormData.Tabs.forEach(tab => {\r\n if (tab.ParentObjectId == parentControl.Id) {\r\n tab.Visible = this.eFormService.isConditionMet(tab.Condition, parentControl);\r\n this.isFirstPage();\r\n this.isLastPage();\r\n }\r\n tab.Pages.forEach(page => {\r\n if (page.ParentObjectId == parentControl.Id) {\r\n page.Visible = this.eFormService.isConditionMet(page.Condition, parentControl);\r\n this.isFirstPage();\r\n this.isLastPage();\r\n }\r\n });\r\n });\r\n this.getTabs();\r\n }\r\n\r\n getTabs() {\r\n this.tabNames = [];\r\n this.eFormData.Tabs.forEach(tab => {\r\n if (tab.Visible && tab.Pages.find(o => o.Visible) != null || this.showConditionalObjects || this.showAllConditionalsPrint || this.config.AlwaysShowAllConditionals) {\r\n this.tabNames.push(tab.Name);\r\n if (!this.visibleTabs.includes(tab)) {\r\n this.visibleTabs.push(tab);\r\n }\r\n } else {\r\n const i = this.visibleTabs.findIndex(o => o == tab);\r\n if (i >= 0) {\r\n this.visibleTabs.splice(i, 1);\r\n }\r\n }\r\n });\r\n if (this.tabNames.length > 0 && !this.selectedTab) {\r\n this.selectedTabChanged(this.tabNames[0]);\r\n }\r\n }\r\n\r\n updateAttachments(_callback) {\r\n const attachmentsToDelete: number[] = [];\r\n const newAttachments: EFormAttachment[] = [];\r\n this.eFormService.allFormControls.forEach(control => {\r\n if (control.ControlType == this.eFormService.controlTypes.attachment && control.PreviousAttachmentId && control.PreviousAttachmentId != control.AttachmentId) {\r\n attachmentsToDelete.push(control.PreviousAttachmentId);\r\n }\r\n if (control.ControlType == this.eFormService.controlTypes.attachment && !control.AttachmentId && control.Attachment && control.Attachment.FileDataBase64) {\r\n newAttachments.push(control.Attachment);\r\n }\r\n });\r\n if (attachmentsToDelete.length > 0) {\r\n this.deleteAttachments(attachmentsToDelete);\r\n }\r\n if (newAttachments.length > 0) {\r\n this.saveAttachments(newAttachments, _callback);\r\n } else {\r\n if (_callback) {\r\n _callback();\r\n }\r\n }\r\n }\r\n\r\n deleteAttachments(attachmentIds: number[]) {\r\n this.subscriptions.push(this.eFormService.deleteEFormAttachments(attachmentIds).subscribe(() => {\r\n }));\r\n }\r\n\r\n saveAttachments(attachments: EFormAttachment[], _callback) {\r\n this.subscriptions.push(this.eFormService.saveEFormAttachments(attachments).subscribe(result => {\r\n if (result && result.length == attachments.length) {\r\n for (let i = 0; i < result.length; i++) {\r\n const newAttachment = result[i];\r\n const oldAttachment = attachments[i];\r\n const control = this.eFormService.allFormControls.find(o => o.Attachment == oldAttachment);\r\n if (control) {\r\n control.AttachmentId = newAttachment.ID;\r\n }\r\n }\r\n if (_callback) {\r\n _callback();\r\n }\r\n } else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n }));\r\n }\r\n\r\n clearAttachments() {\r\n this.eFormService.allFormControls.forEach(control => {\r\n control.Attachment = null;\r\n control.PreviousAttachmentId = null;\r\n });\r\n }\r\n\r\n selectedTabChanged(tabName: string, errors = null) {\r\n this.selectedTab = this.eFormData.Tabs.find(o => o.Name == tabName);\r\n if (this.selectedTab && this.selectedTab.Pages) {\r\n // this.selectedPage = this.selectedTab.Pages.find(o => o.Visible);\r\n if (errors && errors != null) {\r\n this.selectedTab.Pages.forEach(element => {\r\n this.findColumn(element, element.Columns, errors);\r\n });\r\n } else {\r\n this.selectedPage = this.selectedTab.Pages.find(o => o.Visible);\r\n }\r\n }\r\n this.isFirstPage();\r\n this.isLastPage();\r\n }\r\n\r\n findColumn(element, Columns, errors) {\r\n Columns.forEach(Column => {\r\n if (Column.Controls.find(o => o.Label.trim() == errors.completFieldName.trim())) {\r\n this.selectedPage = element;\r\n } else {\r\n this.findRow(element, Column.Rows, errors);\r\n }\r\n });\r\n }\r\n\r\n findRow(element, Rows, errors) {\r\n Rows.forEach(rowElement => {\r\n if (rowElement.Controls.find(o => o.Label.trim() == errors.completFieldName.trim())) {\r\n this.selectedPage = element;\r\n } else {\r\n this.findColumn(element, rowElement.Columns, errors);\r\n }\r\n });\r\n }\r\n\r\n tabsClick() {\r\n this.selectedTab = this.selectedTab;\r\n setTimeout(() => {\r\n this.eFormService.mergeFieldPipeTrigger();\r\n if (this.showConditionalObjects) {\r\n this.showConditionalChange();\r\n }\r\n }, 0);\r\n }\r\n\r\n previousClick() {\r\n // this.validatePage();\r\n // if (this.errors.length == 0) {\r\n if (this.selectedTab && this.selectedPage) {\r\n let tabIndex = this.eFormData.Tabs.findIndex(o => o.Name == this.selectedTab.Name && o.Id == this.selectedTab.Id);\r\n let pageIndex = this.selectedTab.Pages.findIndex(o => o.Name == this.selectedPage.Name);\r\n let prevPage = this.selectedPage;\r\n let prevTab = this.selectedTab;\r\n do {\r\n if (pageIndex > 0) {\r\n pageIndex = pageIndex - 1;\r\n prevPage = prevTab.Pages[pageIndex];\r\n } else {\r\n if (tabIndex > 0) {\r\n tabIndex = tabIndex - 1;\r\n prevTab = this.eFormData.Tabs[tabIndex];\r\n prevPage = prevTab.Pages[prevTab.Pages.length - 1];\r\n pageIndex = prevTab.Pages.length - 1;\r\n }\r\n }\r\n }\r\n while (((!prevPage.Visible || !prevTab.Visible) && !this.showConditionalObjects && !this.config.AlwaysShowAllConditionals) && (pageIndex > 0 || tabIndex > 0));\r\n if (prevPage.Visible && prevTab.Visible || this.showConditionalObjects || this.config.AlwaysShowAllConditionals) {\r\n this.selectedPage = prevPage;\r\n if (prevTab != this.selectedTab) {\r\n this.tabs.clickTabWithoutEvents(prevTab.Name);\r\n this.selectedTab = prevTab;\r\n }\r\n }\r\n setTimeout(() => {\r\n this.eFormService.mergeFieldPipeTrigger();\r\n if (this.showConditionalObjects) {\r\n this.showConditionalChange();\r\n }\r\n }, 0);\r\n }\r\n // }\r\n this.isFirstPage();\r\n this.isLastPage();\r\n }\r\n\r\n nextClick() {\r\n // this.validatePage();\r\n // if (this.errors.length == 0) {\r\n if (this.selectedTab && this.selectedPage) {\r\n let nextTab = this.selectedTab;\r\n let nextPage = this.selectedPage;\r\n let pageIndex = this.selectedTab.Pages.findIndex(o => o.Name == this.selectedPage.Name && o.Id == this.selectedPage.Id);\r\n let tabIndex = this.eFormData.Tabs.findIndex(o => o.Name == this.selectedTab.Name);\r\n const lastTabIndex = this.eFormData.Tabs.length - 1;\r\n let lastPageIndex = this.selectedTab.Pages.length - 1;\r\n do {\r\n lastPageIndex = nextTab.Pages.length - 1;\r\n if (pageIndex >= 0 && pageIndex < lastPageIndex) {\r\n pageIndex = pageIndex + 1;\r\n nextPage = nextTab.Pages[pageIndex];\r\n } else {\r\n tabIndex = this.eFormData.Tabs.findIndex(o => o.Name == nextTab.Name);\r\n if (tabIndex >= 0 && tabIndex < lastTabIndex) {\r\n tabIndex = tabIndex + 1;\r\n nextTab = this.eFormData.Tabs[tabIndex];\r\n nextPage = nextTab.Pages[0];\r\n }\r\n }\r\n }\r\n while (((!nextPage.Visible || !nextTab.Visible) && !this.showConditionalObjects && !this.config.AlwaysShowAllConditionals) && (tabIndex < lastTabIndex || pageIndex < lastPageIndex));\r\n if (nextPage.Visible && nextTab.Visible || this.showConditionalObjects || this.config.AlwaysShowAllConditionals) {\r\n this.selectedPage = nextPage;\r\n if (nextTab != this.selectedTab) {\r\n this.selectedTab = nextTab;\r\n this.tabs.clickTabWithoutEvents(nextTab.Name);\r\n }\r\n }\r\n setTimeout(() => {\r\n this.eFormService.mergeFieldPipeTrigger();\r\n if (this.showConditionalObjects) {\r\n this.showConditionalChange();\r\n }\r\n }, 0);\r\n }\r\n // }\r\n this.isFirstPage();\r\n this.isLastPage();\r\n }\r\n\r\n isFirstPage() {\r\n this.isFP = true;\r\n if (this.eFormData && this.eFormData.Tabs && this.eFormData.Tabs.length > 0 && this.eFormData.Tabs[0].Pages && this.eFormData.Tabs[0].Pages.length > 0) {\r\n const visibleTabs = this.eFormData.Tabs.filter(o => o.Visible || this.showConditionalObjects || this.config.AlwaysShowAllConditionals\r\n && o.Pages.find(p => p.Visible || this.showConditionalObjects || this.config.AlwaysShowAllConditionals) != null);\r\n if (visibleTabs) {\r\n const firstPage = visibleTabs[0].Pages.find(o => o.Visible);\r\n if (this.selectedPage.Id != firstPage.Id) {\r\n this.isFP = false;\r\n }\r\n }\r\n }\r\n this.eFormService.observableIsFirstPage.next(this.isFP);\r\n this.selectedPageNumber = this.getSelectedPageNumber();\r\n }\r\n\r\n\r\n isLastPage() {\r\n this.isLP = true;\r\n if (this.eFormData && this.eFormData.Tabs && this.eFormData.Tabs.length > 0) {\r\n const visibleTabs = this.eFormData.Tabs.filter(o => o.Visible || this.showConditionalObjects || this.config.AlwaysShowAllConditionals\r\n && o.Pages.find(p => p.Visible || this.showConditionalObjects || this.config.AlwaysShowAllConditionals) != null);\r\n const lastTab = visibleTabs[visibleTabs.length - 1];\r\n const visiblePages = lastTab.Pages.filter(o => o.Visible);\r\n if (visiblePages && visiblePages.length > 0) {\r\n const lastPage = visiblePages[visiblePages.length - 1];\r\n if (this.selectedPage.Id != lastPage.Id) {\r\n this.isLP = false;\r\n }\r\n }\r\n }\r\n this.eFormService.observableIsLastPage.next(this.isLP);\r\n this.selectedPageNumber = this.getSelectedPageNumber();\r\n }\r\n\r\n showConditionalChange() {\r\n this.eFormService.showConditionalObjectsChanged(this.showConditionalObjects);\r\n this.getTabs();\r\n }\r\n\r\n getSelectedPageNumber(): number {\r\n let pageIndex = this.selectedTab.Pages.findIndex(o => o.Name == this.selectedPage.Name);\r\n\r\n if (pageIndex == -1) {\r\n pageIndex = this.selectedTab.Pages.findIndex(o => o.Id == this.selectedPage.Id);\r\n }\r\n\r\n return pageIndex != -1 ? pageIndex + 1 : pageIndex;\r\n }\r\n\r\n goToErrorTab(tabName: string, errors = null) {\r\n // this.selectedTabChanged(tabName);\r\n this.selectedTabChanged(tabName, errors);\r\n if (this.tabs) {\r\n this.tabs.clickTabWithoutEvents(tabName);\r\n }\r\n this.isFirstPage();\r\n this.isLastPage();\r\n }\r\n\r\n validatePage(onlyFileValidation: boolean = false): ErrorList[] {\r\n this.errors = [];\r\n if (!this.isPreview && !this.isReview && this.editable) {\r\n this.visibleTabs.forEach(tab => {\r\n tab.Pages.forEach(page => {\r\n if (page) {\r\n const pageControls = this.eFormService.getAllControlsByPage(page);\r\n pageControls.forEach(control => {\r\n control.HasError = false;\r\n if (control.Visible) {\r\n let name = control.Label ? control.Label : '';\r\n const completFieldName = control.Label ? control.Label : '';\r\n const controlId = control.Id ? control.Id : -1;\r\n if (name.length > 30) {\r\n name = name.substr(0, 30) + '...';\r\n }\r\n if (!onlyFileValidation) {\r\n if (control.IsRequired) {\r\n if ((control.ControlType == this.eFormService.controlTypes.attachment && (!control.Attachment || !control.Attachment.FileDataBase64 || control.Attachment.FileDataBase64 == ''))\r\n || (control.ControlType != this.eFormService.controlTypes.attachment && !control.Value && control.Visible)) {\r\n control.HasError = true;\r\n if (control.ControlType == this.eFormService.controlTypes.checkbox) {\r\n const error: ErrorList = {\r\n id: controlId,\r\n fieldName: name,\r\n completFieldName: completFieldName,\r\n fieldRef: null,\r\n errorMsg: ' must be checked in order to continue.',\r\n clickCallback: () => {\r\n this.goToErrorTab(tab.Name, error);\r\n }\r\n };\r\n this.errors.push(error);\r\n } else {\r\n const error: ErrorList = {\r\n id: controlId,\r\n fieldName: name,\r\n completFieldName: completFieldName,\r\n fieldRef: null,\r\n errorMsg: ' is required.',\r\n clickCallback: () => {\r\n this.goToErrorTab(tab.Name, error);\r\n }\r\n };\r\n this.errors.push(error);\r\n }\r\n }\r\n }\r\n }\r\n if (control.ControlType == this.eFormService.controlTypes.attachment && control.Attachment && control.Attachment.FileDataBase64 && control.Visible) {\r\n const fileSize = 3 * Math.ceil((control.Attachment.FileDataBase64.length / 4) / 1000);\r\n if (fileSize > this.maxFileSizeKB) {\r\n let errorMsgText = '';\r\n if (this.maxFileSizeKB > 1000 && this.maxFileSizeKB % 1000 == 0) {\r\n errorMsgText = ' The maximum file size is ' + this.maxFileSizeKB / 1000 + ' MB.';\r\n } else {\r\n errorMsgText = ' The maximum file size is ' + this.maxFileSizeKB + ' kB.';\r\n }\r\n\r\n this.errors.push({\r\n id: controlId,\r\n fieldName: name,\r\n completFieldName: completFieldName,\r\n fieldRef: null,\r\n errorMsg: errorMsgText,\r\n clickCallback: () => {\r\n this.goToErrorTab(tab.Name);\r\n }\r\n });\r\n }\r\n if (control.ControlType == this.eFormService.controlTypes.attachment) {\r\n if (!this.allowedFileExtensions.includes(control.Attachment.FileExtension.toLocaleLowerCase()) && !this.allowedFileExtensions.includes('.' + control.Attachment.FileExtension.toLocaleLowerCase())) {\r\n this.errors.push({\r\n id: controlId,\r\n fieldName: name,\r\n completFieldName: completFieldName,\r\n fieldRef: null,\r\n errorMsg: ' Only .pdf, .bmp, .jpg and .png files can be uploaded.',\r\n clickCallback: () => {\r\n this.goToErrorTab(tab.Name);\r\n }\r\n });\r\n }\r\n } else if (control.ControlType == this.eFormService.controlTypes.image) {\r\n if (!this.allowedImageExtensions.includes(control.Attachment.FileExtension.toLocaleLowerCase()) && !this.allowedImageExtensions.includes('.' + control.Attachment.FileExtension.toLocaleLowerCase())) {\r\n this.errors.push({\r\n id: controlId,\r\n fieldName: name,\r\n completFieldName: completFieldName,\r\n fieldRef: null,\r\n errorMsg: ' Only .bmp, .jpg and .png files can be uploaded.',\r\n clickCallback: () => {\r\n this.goToErrorTab(tab.Name);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n return this.errors;\r\n }\r\n\r\n async afterLocalPrint() {\r\n this.showPrintDiv = false;\r\n this.spinnerService.showSpinner = false;\r\n this.localPrint = false;\r\n this.showAllConditionalsPrint = false;\r\n this.columnInitializedBuffer = false;\r\n let fileName: string;\r\n if (this.fileNameOverride) {\r\n fileName = this.fileNameInput + '.pdf';\r\n } else {\r\n fileName = this.selectedInstance ? this.selectedInstance.Name + '.pdf' : 'eForm.pdf';\r\n }\r\n\r\n if (this.eFormService.pdfDataURIs.length == 1) {\r\n this.eFormService.addEFormAttachmentsToPDF(false);\r\n\r\n const pdfBase64 = await this.eFormService.getPdfDataUriAsBase64();\r\n\r\n System.saveFile(pdfBase64, 'pdf', fileName);\r\n }\r\n\r\n if (this.tabNames && this.tabNames.length > 0) {\r\n this.selectedTabChanged(this.tabNames[0]);\r\n }\r\n }\r\n\r\n async initGenerateEnglishPDFOnly(_callback) {\r\n if (this.selectedForm) {\r\n this.showPrintDiv = true;\r\n this.columnInitializedBuffer = false;\r\n this.spinnerService.showSpinner = true;\r\n\r\n this.eFormService.observablePageLoadCompleteStream$.pipe(take(1)).subscribe(() => {\r\n this.generateEnglishPDFOnly(() => {\r\n this.spinnerService.showSpinner = false;\r\n _callback();\r\n });\r\n });\r\n }\r\n }\r\n\r\n async generateEnglishPDFOnly(_callback) {\r\n await this.addFormToPDF();\r\n this.eFormService.addEFormAttachmentsToPDF();\r\n this.eFormService.selectedForm.EnglishPDF = await this.eFormService.getPdfDataUriAsBase64();\r\n _callback();\r\n }\r\n\r\n async initGenerateEFormPDFAndJSON(status: string, _callback) {\r\n if (this.selectedForm && (status.toLowerCase() == 'submitted' || status.toLowerCase() == 'accepted')) {\r\n this.showPrintDiv = true;\r\n this.columnInitializedBuffer = false;\r\n this.spinnerService.showSpinner = true;\r\n\r\n this.eFormService.observablePageLoadCompleteStream$.pipe(take(1)).subscribe(() => {\r\n this.generateEFormPDFAndJSON(() => {\r\n this.spinnerService.showSpinner = false;\r\n _callback();\r\n });\r\n });\r\n } else {\r\n if (_callback) {\r\n _callback();\r\n }\r\n }\r\n }\r\n\r\n async generateEFormPDFAndJSON(_callback) {\r\n await this.addFormToPDF();\r\n this.eFormService.addEFormAttachmentsToPDF();\r\n this.eFormService.selectedForm.TranslatedPDF = await this.eFormService.getPdfDataUriAsBase64();\r\n\r\n // Transform tags in JSON for EnglishJSON\r\n if (!this.disableMergeFields) {\r\n this.eFormService.allFormControls.forEach(control => {\r\n if (control.ControlType == this.eFormService.controlTypes.text) {\r\n control.Value = this.eFormService.transformDatabaseMergeTag(control.Value);\r\n } else {\r\n control.Label = this.eFormService.transformDatabaseMergeTag(control.Label);\r\n control.DropdownOptions.forEach(opt => {\r\n opt.CodeDescription = this.eFormService.transformDatabaseMergeTag(opt.CodeDescription);\r\n });\r\n }\r\n });\r\n }\r\n this.eFormService.selectedForm.EnglishJSON = JSON.stringify(this.eFormData);\r\n\r\n if (this.selectedInstance.StoreLocation.toLowerCase() != 'eform' && this.selectedInstance.ProcessType == 'auto') {\r\n if (this.userService.currentLanguage != 'en') {\r\n // User is not viewing form in English, create an english version for to saving to SDC/SP\r\n this.convertNonEnglishFormToEnglish(() => {\r\n _callback();\r\n });\r\n } else {\r\n // User is viewing form in English, use the PDF already creating for TranslatedPDF for saving to SDC/SP\r\n this.eFormService.selectedForm.EnglishPDF = this.eFormService.selectedForm.TranslatedPDF;\r\n _callback();\r\n }\r\n } else {\r\n _callback();\r\n }\r\n }\r\n\r\n async convertNonEnglishFormToEnglish(_callback) {\r\n // Set translations pipe to revert text back to English\r\n this.translationService.overrideTranslationPipe = true;\r\n this.translationService.revertToEnglish = true;\r\n // Reset flag after PDF is create for TranslatedPDF\r\n this.addFormToPDFStarted = false;\r\n // Hide/Show form to prompt control to reinitialize text translations\r\n this.columnInitializedBuffer = false;\r\n this.showPrintDiv = false;\r\n await this.delay(100);\r\n this.showPrintDiv = true;\r\n\r\n this.eFormService.observablePageLoadComplete.pipe(take(1)).subscribe(() => {\r\n this.updateEnglishPDF(_callback);\r\n });\r\n }\r\n\r\n async updateEnglishPDF(_callback) {\r\n await this.addFormToPDF();\r\n this.translationService.overrideTranslationPipe = false;\r\n this.translationService.revertToEnglish = false;\r\n\r\n this.eFormService.addEFormAttachmentsToPDF();\r\n\r\n this.eFormService.selectedForm.EnglishPDF = await this.eFormService.getPdfDataUriAsBase64();\r\n\r\n _callback();\r\n }\r\n\r\n roundToTwo(num) {\r\n return +(Math.round(Number(num + 'e+2')) + 'e-2');\r\n }\r\n\r\n async delay(ms: number) {\r\n await new Promise(r => setTimeout(r, ms));\r\n }\r\n\r\n public dropped() {\r\n\r\n }\r\n\r\n async addFormToPDF() {\r\n // Grab html content to be rendered\r\n const data = document.getElementById('formToPrint');\r\n if (data != null && !this.addFormToPDFStarted) {\r\n this.addFormToPDFStarted = true;\r\n if (!this.selectedInstance || this.selectedInstance.ProcessType != 'auto') {\r\n await this.delay(500);\r\n }\r\n this.pdfExportRef.scale = .68;\r\n await this.pdfExportRef.export().then(async (group: Group) => {\r\n if (group) {\r\n await exportPDF(group).then((dataURI1) => {\r\n if (dataURI1) {\r\n this.eFormService.pdfDataURIs.push(dataURI1);\r\n }\r\n });\r\n }\r\n });\r\n // this.eFormService.pdfDataURIs = [];\r\n // // this code for reload page and repushed in pdfDataURIs\r\n // await this.pdfExportRef.export().then(async (group: Group) => {\r\n // if (group) {\r\n // await exportPDF(group).then((dataURI1) => {\r\n // if (dataURI1) {\r\n // this.eFormService.pdfDataURIs.push(dataURI1);\r\n // }\r\n // });\r\n // }\r\n // });\r\n } else if (!this.addFormToPDFStarted) {\r\n setTimeout(() => {\r\n this.addFormToPDF();\r\n }, 100);\r\n }\r\n }\r\n\r\n\r\n async columnInitialized(col: EFormColumn) {\r\n // This will only trigger when all object in the e-form are initialized\r\n const colObj = this.tabViewStatus.find(o => o.Column == col);\r\n if (colObj) {\r\n colObj.Initialized = true;\r\n }\r\n if (this.tabViewStatus.find(o => o.Initialized == false) == null && !this.columnInitializedBuffer) {\r\n this.columnInitializedBuffer = true;\r\n setTimeout(() => {\r\n this.renderCompleted.emit(true);\r\n }, 0);\r\n }\r\n }\r\n\r\n async columnInitializedPrint(col: EFormColumn) {\r\n // This will only trigger when all object in the e-form are initialized\r\n const colObj = this.tabViewStatus.filter(o => o.Column == col);\r\n if (colObj != null) {\r\n colObj.forEach(element => {\r\n if (element) {\r\n element.Initialized = true;\r\n }\r\n });\r\n }\r\n if (this.tabViewStatus.find(o => o.Initialized == false) == null && !this.columnInitializedBuffer) {\r\n this.columnInitializedBuffer = true;\r\n this.eFormService.observablePageLoadComplete.next(true);\r\n await this.delay(4500);\r\n setTimeout(() => {\r\n this.eFormService.mergeFieldPipeTrigger();\r\n }, 0);\r\n\r\n if (this.languageIdOverride && this.languageIdOverride != 9 && this.languageIdOverride > -1) {\r\n this.languageChangePDF(() => {\r\n this.addFormAndComplete();\r\n });\r\n } else {\r\n this.addFormAndComplete();\r\n }\r\n }\r\n }\r\n\r\n async addFormAndComplete() {\r\n await this.addFormToPDF();\r\n this.completeRender();\r\n }\r\n\r\n async completeRender() {\r\n setTimeout(() => {\r\n if (this.localPrint) {\r\n this.afterLocalPrint();\r\n } else {\r\n this.eFormService.renderedFormData = this.eFormData;\r\n this.renderCompleted.emit(true);\r\n }\r\n }, 0);\r\n }\r\n\r\n getControlLabels(control: EFormControl) {\r\n if (control.Label) {\r\n this.labels.push(control.Label);\r\n }\r\n if (control.ControlType == 'text') {\r\n if (control.Value) {\r\n this.labels.push(control.Value);\r\n }\r\n }\r\n if (control.ControlType == 'buttons') {\r\n if (control.DropdownOptions) {\r\n control.DropdownOptions.forEach(chip => {\r\n if (chip.CodeDescription) {\r\n this.labels.push(chip.CodeDescription);\r\n }\r\n });\r\n }\r\n }\r\n if (control.ControlType == 'dropdown') {\r\n if (control.DropdownOptions) {\r\n control.DropdownOptions.forEach(option => {\r\n if (option.CodeDescription) {\r\n this.labels.push(option.CodeDescription);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n getRowLabels(rows: EFormRow[]) {\r\n if (rows) {\r\n rows.forEach(row => {\r\n row.Controls.forEach(control => {\r\n this.getControlLabels(control);\r\n });\r\n this.getColumnLabels(row.Columns);\r\n });\r\n }\r\n }\r\n\r\n getColumnLabels(columns: EFormColumn[]) {\r\n if (columns) {\r\n columns.forEach(column => {\r\n column.Controls.forEach(control => {\r\n this.getControlLabels(control);\r\n });\r\n this.getRowLabels(column.Rows);\r\n });\r\n }\r\n }\r\n\r\n getFormLabels() {\r\n this.labels = [];\r\n this.serviceControls = this.eFormService.getAllFormControls(this.eFormData);\r\n\r\n\r\n this.eFormData.Tabs.forEach(tab => {\r\n tab.Pages.forEach(page => {\r\n // this.getRowLabels(page.Rows);\r\n // this.getColumnLabels(page.Columns);\r\n });\r\n });\r\n\r\n const filer = 'filler';\r\n }\r\n\r\n getLanguages() {\r\n // TODO\r\n this.languages = [];\r\n let language = new Lookup();\r\n language.Code = 'en';\r\n language.CodeDescription = 'English';\r\n this.languages.push(language);\r\n language = new Lookup();\r\n language.Code = 'es';\r\n language.CodeDescription = 'Spanish';\r\n this.languages.push(language);\r\n language = new Lookup();\r\n language.Code = 'fr';\r\n language.CodeDescription = 'French';\r\n this.languages.push(language);\r\n language = new Lookup();\r\n language.Code = 'pt';\r\n language.CodeDescription = 'Portuguese';\r\n this.languages.push(language);\r\n\r\n if (this.userService.currentLanguage) {\r\n this.selectedLanguageCode = this.userService.currentLanguage;\r\n } else {\r\n this.selectedLanguageCode = this.languages[0].Code;\r\n }\r\n }\r\n\r\n languageChanged() {\r\n this.languageChange = true;\r\n\r\n let language_ID: number;\r\n\r\n // TODO change to dto lookup\r\n // language must be 'en' for English, 'fr' for French, or 'es' for Spanish, or 'pt' for portuguese\r\n switch (this.selectedLanguageCode) {\r\n case 'fr':\r\n language_ID = 7;\r\n break;\r\n case 'es':\r\n language_ID = 1;\r\n break;\r\n case 'pt':\r\n language_ID = 107;\r\n break;\r\n default:\r\n // en\r\n language_ID = 9;\r\n }\r\n\r\n this.translationService.overrideTranslationPipe = true;\r\n this.translationService.getTranslationsForLanguage(language_ID).pipe(take(1)).subscribe(result => {\r\n this.translationService.overrideTranslations = result;\r\n this.showContent = false;\r\n setTimeout(() => {\r\n this.showContent = true;\r\n }, 0);\r\n });\r\n\r\n // changed for ONE-5073, the e-Form preview only uses tyl-translate now\r\n // this.userService.setUserLanguage(this.selectedLanguageCode).subscribe(result => {\r\n // this.showContent = false;\r\n // setTimeout(() => {\r\n // this.showContent = true;\r\n // }, 0);\r\n // });\r\n }\r\n\r\n async languageChangePDF(_callback) {\r\n this.languageChange = true;\r\n this.translationService.overrideTranslationPipe = true;\r\n this.translationService.getTranslationsForLanguage(this.languageIdOverride).pipe(take(1)).subscribe(result => {\r\n this.translationService.overrideTranslations = result;\r\n this.showContent = false;\r\n setTimeout(() => {\r\n this.showContent = true;\r\n _callback();\r\n }, 500);\r\n });\r\n }\r\n\r\n checkVisiblePageCount(): boolean {\r\n return this.selectedTab ? (this.selectedTab.Pages.filter(o => o.Visible).length > 1) : false;\r\n }\r\n\r\n getAllCustomFields(designPageIndex: number): EFormControl[] {\r\n return this.eFormService.allCustomFieldControls.filter(control => control.CustomField\r\n && (designPageIndex == -1 || control.DesignPageIndex == designPageIndex));\r\n }\r\n\r\n getCustomFieldByRefName(refName: string, designPageIndex: number): EFormControl {\r\n return this.eFormService.allCustomFieldControls.find(control => control.CustomFieldRefName\r\n && control.CustomFieldRefName == refName\r\n && (designPageIndex == -1 || control.DesignPageIndex == designPageIndex));\r\n }\r\n\r\n setCustomFieldByRefName(value: any, refName: string, designPageIndex: number) {\r\n const c: EFormControl = this.eFormService.allCustomFieldControls.find(control => control.CustomFieldRefName\r\n && control.CustomFieldRefName == refName\r\n && (designPageIndex == -1 || control.DesignPageIndex == designPageIndex));\r\n if (c) {\r\n c.Value = value;\r\n }\r\n }\r\n\r\n setLinkedDBFieldValues() {\r\n if(this.V10) {\r\n if(this.eFormService.allFormControls.filter(c => c.LinkedDBField != -1).length > 0) {\r\n let fieldIds: number[] = [];\r\n \r\n this.eFormService.allFormControls.filter(c => c.LinkedDBField != -1).forEach(c => {\r\n fieldIds.push(c.LinkedDBField);\r\n });\r\n \r\n this.eFormService.getLinkedDBFieldValues(fieldIds, this.selectedForm ? this.selectedForm.Student_ID : 0).pipe(take(1)).subscribe(result => {\r\n result.forEach(f => {\r\n let index: number = this.eFormService.allFormControls.findIndex(c => c.LinkedDBField == f.ID);\r\n \r\n if(index > -1 && f.Value) {\r\n this.eFormService.allFormControls[index].Value = f.Value;\r\n this.eFormService.allFormControls[index].HintLabel = f.Value;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n else {\r\n if(this.eFormService.allFormControls.filter(c => c.LinkedCSTFieldName).length > 0) {\r\n this.customizationFrameworkService.getLinkedCustomFields(this.eFormData, this.selectedForm).pipe(take(1)).subscribe(customFields => {\r\n this.selectedForm.CustomFields = customFields;\r\n this.customizationFrameworkService.massGetCustomDataFieldValue(this.yearService.defaultYear.SiteYearId, customFields).pipe(take(1)).subscribe(fields => {\r\n fields.forEach(f => {\r\n const controlToUpdate = this.eFormService.allFormControls.find(c => c.LinkedCSTFieldName == f.FieldName);\r\n if (controlToUpdate) {\r\n controlToUpdate.Value = f.Value;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { EFormStatusHistory } from './e-form-status-history.model';\r\nimport { EFormSurveyField } from './e-form-survey-field.model';\r\nimport { EFormDatabaseField } from './e-form-database-field.model';\r\nimport { EFormSurveyAnswer } from './e-form-survey-answer.model';\r\nimport { CSTField } from '../../shared-modules/customization-framework/models/custom-data-field.model';\r\n\r\nexport class EForm {\r\n ID: number;\r\n Instance_ID: number;\r\n ParentMem_ID: number;\r\n PrimaryParentMem_ID: number;\r\n ParentName: string;\r\n Student_ID: number;\r\n Staff_ID: number;\r\n StudentNames: string[] = [];\r\n strStudentId: string[] = [];\r\n FormData: string;\r\n Status: string;\r\n StaffNote: string;\r\n CreatedOn: Date;\r\n CreatedBy: number;\r\n CreatedByName: string;\r\n LastUpdatedOn: Date;\r\n LastUpdatedBy: number;\r\n LastUpdatedByName: string;\r\n StatusHistory: EFormStatusHistory[] = [];\r\n SubmittedDate: Date;\r\n SubmittedName: string;\r\n DelStatus: boolean;\r\n Required: boolean;\r\n Student: string;\r\n DueDate: Date;\r\n StartDate: Date;\r\n EndDate: Date;\r\n AllowMultiple: boolean;\r\n InstanceName: string;\r\n TemplateType: string;\r\n SubmittedOn: Date;\r\n SubmittedBy: number;\r\n SubmittedByName: string;\r\n ManualSubmission: boolean;\r\n UserCanProcess: boolean;\r\n //Type: string;\r\n UserType: number;\r\n StudentIds: number[] = [];\r\n IsInstanceActive: string;\r\n AYIdentifier: string;\r\n Family_ID: number;\r\n Year_ID: number;\r\n StudentIDs: number[] = [];\r\n // Behavior Letter specific properties\r\n Template_ID: number;\r\n Incident_ID: number;\r\n PDFDataBase64: string;\r\n School_ID: number;\r\n GradeLevel_ID: number;\r\n IsLastStatusDelete: boolean;\r\n InvolvementType: string;\r\n // Translated language PDF Variables\r\n TranslatedPDF: string;\r\n TranslatedJSON: string;\r\n EnglishJSON: string;\r\n DocToFamily_ID: Number;\r\n Non_English = false;\r\n SurveyFields: EFormSurveyField[];\r\n IsSurvey: boolean;\r\n IsMobile: boolean;\r\n DisplayCriticalMessage: boolean;\r\n CriticalMessage: string;\r\n Frequency: string;\r\n StudentsCanComplete: boolean;\r\n ParentsCanComplete: boolean;\r\n NonResidentParentsCanComplete: boolean;\r\n StaffCanComplete: boolean;\r\n CompletionDue = false;\r\n CompletionDueOption: string;\r\n DatabaseFields: EFormDatabaseField[];\r\n CustomFields: CSTField[];\r\n SurveyAnswers: EFormSurveyAnswer[];\r\n HasBeenReOpened: boolean; \r\n EnglishPDF: string;\r\n StaffName: string;\r\n PDFNameOverride: string;\r\n GradeLevel: string;\r\n\r\n Cell_number:string;\r\n Home_Number:string;\r\n Address:string;\r\n Email_Address:string;\r\n ShowInAllYears:boolean;\r\n NonresidentParents = false;\r\n}\r\n\r\nexport class EFormSelectedStudentInfo {\r\n StudentNumber: string;\r\n LastName: string;\r\n FirstName: string;\r\n Grade: string;\r\n EnrollDate?: Date;\r\n DateOfBirth?: Date;\r\n SchoolName: string;\r\n StudentCount?: number;\r\n}\r\n\r\nexport class EFormAvilableCount {\r\n instanceId: string;\r\n eFormsAvailable: number;\r\n optionaleFormAvailable: number;\r\n}\r\n","export class EFormDatabaseField {\r\n ID: number;\r\n FieldName: string;\r\n ColumnName: string;\r\n FieldType: string;\r\n IsDataDef: boolean;\r\n DataDefType: number;\r\n DataFieldGroup_ID: number;\r\n DataFieldGroupName: string;\r\n DataValueField: string;\r\n ControlType: string;\r\n Value: string;\r\n }","import { HttpClient } from '@angular/common/http';\r\nimport { EventEmitter, Injectable, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport * as jspdf from 'jspdf';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport { PDFDocument } from 'pdf-lib';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport * as XLSX from 'xlsx';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { CustomDesignPage } from '../../admin360/customization/models/custom-design-page.model';\r\nimport { EFormInstancesFilterParam } from '../../admin360/e-forms/e-form-instances/e-form-instances-filter-param';\r\nimport { EFormSubmissionsFilterParam } from '../../admin360/e-forms/e-form-submissions/e-form-submissions-filter-param';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { CSTCustomPage } from '../../shared-modules/customization-framework/models/cst-custom-page.model';\r\nimport { CSTField } from '../../shared-modules/customization-framework/models/custom-data-field.model';\r\nimport { CustomDataTemplateRef } from '../../shared-modules/customization-framework/models/custom-data-template-ref.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { Service } from '../../student360/programs-and-services/service.model';\r\nimport { ExportService } from '../export.service';\r\nimport { Lookup } from '../lookup/lookup.model';\r\nimport { TylTranslation } from '../models/tyl-translation.model';\r\nimport { Staff } from '../staff-search/staff.model';\r\nimport { Student } from '../student/student.model';\r\nimport { StudentService } from '../student/student.service';\r\nimport { System } from '../System';\r\nimport { UserPermission } from '../user/user-permission.model';\r\nimport { User } from '../user/user.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { School, SchoolStudentFamiliesInfo } from '../year/school.model';\r\nimport { YearService } from '../year/year.service';\r\nimport { EFormAttachment } from './e-form-attachment.model';\r\nimport { EFormCategory } from './e-form-category.model';\r\nimport { EFormChangeHistory } from './e-form-change-history.model';\r\nimport { EFormColumn } from './e-form-column.model';\r\nimport { EFormConfiguration } from './e-form-config.model';\r\nimport { EFormContact } from './e-form-contact.model';\r\nimport { EFormControl } from './e-form-control.model';\r\nimport { EFormDatabaseField } from './e-form-database-field.model';\r\nimport { EFormInstance } from './e-form-instance.model';\r\nimport { EFormMergeField } from './e-form-merge-field.model';\r\nimport { EFormPage } from './e-form-page.model';\r\nimport { EFormStatusHistory } from './e-form-status-history.model';\r\nimport { EformSubmissionCounts } from './e-form-submission-counts.model';\r\nimport { EFormSurveyAnswersFilterParam } from './e-form-survey-answer-details/e-form-survey-answers-filter/e-form-survey-answers-filter-param';\r\nimport { EFormsSurveyAnswerSummary } from './e-form-survey-answer-summary.model';\r\nimport { EFormSurveyAnswer } from './e-form-survey-answer.model';\r\nimport { EFormSurveyField } from './e-form-survey-field.model';\r\nimport { EFormsSurveySummary } from './e-form-survey-summary.model';\r\nimport { EFormTemplate } from './e-form-template.model';\r\nimport { EForm, EFormAvilableCount, EFormSelectedStudentInfo } from './e-form.model';\r\nimport { EFormDataObject } from './e-formDataObject.model';\r\n\r\n@Injectable()\r\nexport class EFormService {\r\n\r\n renderedFormData: EFormDataObject;\r\n selectedFormData: EFormDataObject;\r\n selectedTemplate: EFormTemplate;\r\n selectedInstance: EFormInstance;\r\n selectedForm: EForm;\r\n selectedFormsToPDF: EForm[] = [];\r\n templates: EFormTemplate[] = [];\r\n userTemplates: EFormTemplate[] = [];\r\n categories: EFormCategory[] = [];\r\n databaseFields: EFormDatabaseField[] = [];\r\n mergeFields: EFormMergeField[] = [];\r\n selectedReviewInstanceId: number;\r\n selectedReviewInstanceName: string;\r\n selectedDesignPage: CustomDesignPage;\r\n selectedCustomPage: CSTCustomPage;\r\n eFormPermissions: UserPermission[] = [];\r\n instances: EFormInstance[] = [];\r\n viewType: string;\r\n initialS360eFormTab = '';\r\n allFormControls: EFormControl[] = [];\r\n allCustomFieldControls: EFormControl[] = [];\r\n // pdf: jspdf;\r\n pdf = PDFDocument.create();\r\n pdfDataURIs: string[] = [];\r\n changes: EFormChangeHistory[];\r\n manageEformsFilter: string;\r\n userType: User;\r\n selectedReviewInstance: EFormInstance;\r\n maxFileSizeKB = 2000;\r\n selectedReviewShowAllClasses: boolean;\r\n showInactive: boolean;\r\n homeLinkClickSelectedReviewShowAllClasses = false;\r\n homeLinkClickShowInactive = false;\r\n redirectFromClassic = false;\r\n redirectFromSubmision = false;\r\n eFormHeadLinePermission = false;\r\n V10 = false;\r\n eFormAttachment: EFormAttachment[] = [];\r\n eFormAttachmentForPDF: EFormAttachment[] = [];\r\n contentTemplates: CustomDataTemplateRef[];\r\n services: Service[] = [];\r\n showCriticalMessage = false;\r\n public surveyAnswersShowAllSchools = false;\r\n templateProcessType = '';\r\n categoryType = '';\r\n isComeFromSurvey = false;\r\n eFormSubmissionsFilterDateChange: boolean;\r\n districtLogo: SafeResourceUrl;\r\n siteLogo: SafeResourceUrl;\r\n alternateSiteLogo: SafeResourceUrl;\r\n alternateDistrictLogo: SafeResourceUrl;\r\n\r\n controlTypes = {\r\n text: 'text',\r\n divider: 'divider',\r\n verticalDivider: 'verticalDivider',\r\n image: 'image',\r\n buttons: 'buttons',\r\n checkbox: 'checkbox',\r\n checkboxWithTextbox: 'checkboxWithTextbox',\r\n dropdown: 'dropdown',\r\n note: 'note',\r\n radioButtons: 'radioButtons',\r\n textbox: 'textbox',\r\n date: 'date',\r\n attachment: 'attachment',\r\n linkToFile: 'linkToFile',\r\n customField: 'customField',\r\n component: 'component'\r\n };\r\n\r\n formStatus = {\r\n NotSubmitted: 'not submitted',\r\n Submitted: 'submitted',\r\n Rejected: 'rejected',\r\n Accepted: 'accepted',\r\n Complete: 'complete'\r\n };\r\n\r\n inputControlTypes: string[] = [\r\n this.controlTypes.buttons,\r\n this.controlTypes.checkbox,\r\n this.controlTypes.checkboxWithTextbox,\r\n this.controlTypes.dropdown,\r\n this.controlTypes.note,\r\n this.controlTypes.radioButtons,\r\n this.controlTypes.textbox,\r\n this.controlTypes.date,\r\n this.controlTypes.attachment\r\n ];\r\n\r\n public observablePageLoadComplete = new Subject();\r\n observablePageLoadCompleteStream$ = this.observablePageLoadComplete.asObservable();\r\n\r\n public observableIsLastPage = new Subject();\r\n observableIsLastPageStream$ = this.observableIsLastPage.asObservable();\r\n\r\n public observableIsFirstPage = new Subject();\r\n observableIsFirstPageStream$ = this.observableIsFirstPage.asObservable();\r\n\r\n public observableControlValueChanged = new Subject();\r\n observableControlValueChangedStream$ = this.observableControlValueChanged.asObservable();\r\n\r\n public observableShowConditionalObjects = new Subject();\r\n observableShowConditionalObjectsStream$ = this.observableShowConditionalObjects.asObservable();\r\n\r\n public observableDatabaseFields = new Subject();\r\n observableDatabaseFieldsStream$ = this.observableDatabaseFields.asObservable();\r\n\r\n public observableMergeFieldValuesRetrieved = new Subject();\r\n observableMergeFieldValuesRetrievedStream$ = this.observableMergeFieldValuesRetrieved.asObservable();\r\n\r\n public observableMergeFieldsRetrieved = new Subject();\r\n observableMergeFieldsRetrievedStream$ = this.observableMergeFieldsRetrieved.asObservable();\r\n\r\n public observablePipeTrigger = new Subject();\r\n observablePipeTriggerStream$ = this.observablePipeTrigger.asObservable();\r\n\r\n public observableeFormHeadLinePermission = new Subject();\r\n observableeFormHeadLinePermissionStream$ = this.observableeFormHeadLinePermission.asObservable();\r\n\r\n public observableeFormstrQueryXML = new Subject();\r\n observableeFormstrQueryXML$ = this.observableeFormstrQueryXML.asObservable();\r\n\r\n private _surveyAnswersFilterParam: EFormSurveyAnswersFilterParam;\r\n public observablesurveyAnswersFilterParam = new Subject();\r\n observablesurveyAnswersFilterParamStream$ = this.observablesurveyAnswersFilterParam.asObservable();\r\n\r\n public observableReadOnlyStatusChanged = new Subject();\r\n observableReadOnlyStatusChangedStream$ = this.observableReadOnlyStatusChanged.asObservable();\r\n\r\n\r\n _filterParam: EFormInstancesFilterParam;\r\n filterParamManageSurveys: EFormInstancesFilterParam = new EFormInstancesFilterParam();\r\n filterParamManageEForms: EFormInstancesFilterParam = new EFormInstancesFilterParam();\r\n filterChange = new EventEmitter();\r\n\r\n _eFormSubmissionsFilterParam: EFormSubmissionsFilterParam;\r\n eFormSubmissionsFilterChange = new EventEmitter();\r\n\r\n set filterParam(filterParam: EFormInstancesFilterParam) {\r\n this._filterParam = filterParam;\r\n this.filterChange.emit();\r\n }\r\n\r\n get filterParam() {\r\n return this._filterParam;\r\n }\r\n\r\n isFiltered(): boolean {\r\n return !!this.filterParam.availableTo ||\r\n !!this.filterParam.selectedSites ||\r\n !!this.filterParam.selectedClasses ||\r\n !!this.filterParam.selectedStudents ||\r\n !!this.filterParam.deadlineFrom ||\r\n !!this.filterParam.deadlineTo ||\r\n !!this.filterParam.showFromFrom ||\r\n !!this.filterParam.showFromTo ||\r\n !!this.filterParam.showToFrom ||\r\n !!this.filterParam.showToTo ||\r\n !!this.filterParam.category ||\r\n !!this.filterParam.template ||\r\n !!this.filterParam.createdFrom ||\r\n !!this.filterParam.createdTo ||\r\n !!this.filterParam.createdBy ||\r\n !!this.filterParam.lastUpdatedFrom ||\r\n !!this.filterParam.lastUpdatedTo ||\r\n !!this.filterParam.lastUpdatedBy;\r\n }\r\n\r\n set eFormSubmissionsFilterParam(eFormSubmissionsFilterParam: EFormSubmissionsFilterParam) {\r\n this._eFormSubmissionsFilterParam = eFormSubmissionsFilterParam;\r\n this.eFormSubmissionsFilterChange.emit();\r\n }\r\n\r\n get eFormSubmissionsFilterParam() {\r\n return this._eFormSubmissionsFilterParam;\r\n }\r\n\r\n isEFormSubmissionsFiltered(): boolean {\r\n return !this.eFormSubmissionsFilterParam.notSubmitted ||\r\n !this.eFormSubmissionsFilterParam.submitted ||\r\n !this.eFormSubmissionsFilterParam.rejected ||\r\n !this.eFormSubmissionsFilterParam.accepted ||\r\n !this.eFormSubmissionsFilterParam.complete ||\r\n !!this.eFormSubmissionsFilterParam.submittedFrom ||\r\n !!this.eFormSubmissionsFilterParam.submittedTo ||\r\n this.eFormSubmissionsFilterParam.manualSubmission != '0';\r\n }\r\n\r\n public get surveyAnswersFilterParam(): EFormSurveyAnswersFilterParam {\r\n return this._surveyAnswersFilterParam;\r\n }\r\n public set surveyAnswersFilterParam(value: EFormSurveyAnswersFilterParam) {\r\n this._surveyAnswersFilterParam = value;\r\n this.observablesurveyAnswersFilterParam.next(value);\r\n }\r\n\r\n isSurveyAnswersFiltered(): boolean {\r\n return this.surveyAnswersFilterParam && ((this.surveyAnswersFilterParam.dateFilterType == 'byDate' && this.surveyAnswersFilterParam.specificDate != null)\r\n || (this.surveyAnswersFilterParam.dateFilterType == 'fromDate' && this.surveyAnswersFilterParam.fromDate != null)\r\n || (this.surveyAnswersFilterParam.dateFilterType == 'betweenDates' && (this.surveyAnswersFilterParam.rangeStartDate != null || this.surveyAnswersFilterParam.rangeEndDate != null)));\r\n }\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private sanitizer: DomSanitizer,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private exportService: ExportService,\r\n private studentService: StudentService\r\n ) {\r\n this._filterParam = new EFormInstancesFilterParam();\r\n this._eFormSubmissionsFilterParam = new EFormSubmissionsFilterParam();\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n getAllFormTextToTranslate(formData: EFormDataObject): TylTranslation[] {\r\n const controls: EFormControl[] = this.getAllFormControls(formData);\r\n const translations: TylTranslation[] = [];\r\n\r\n controls.forEach(control => {\r\n if (control.ControlType != 'component') {\r\n let controlTranslations: TylTranslation[] = [];\r\n\r\n controlTranslations = this.getControlLabels(control);\r\n\r\n if (controlTranslations.length > 0) {\r\n controlTranslations.forEach(controlTranslation => {\r\n if (translations.findIndex(translation => translation.English == controlTranslation.English) == -1) {\r\n translations.push(controlTranslation);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n return translations;\r\n }\r\n\r\n getControlLabels(control: EFormControl): TylTranslation[] {\r\n const textToTranslate: TylTranslation[] = [];\r\n\r\n if (control.Label) {\r\n textToTranslate.push(new TylTranslation(control.Label));\r\n }\r\n if (control.ControlType == 'text') {\r\n if (control.Value) {\r\n textToTranslate.push(new TylTranslation(control.Value, true));\r\n }\r\n }\r\n if (control.ControlType == 'buttons') {\r\n if (control.DropdownOptions) {\r\n control.DropdownOptions.forEach(chip => {\r\n if (chip.CodeDescription) {\r\n textToTranslate.push(new TylTranslation(chip.CodeDescription));\r\n }\r\n });\r\n }\r\n }\r\n if (control.ControlType == 'dropdown' || control.ControlType == 'radioButtons') {\r\n if (control.DropdownOptions) {\r\n control.DropdownOptions.forEach(option => {\r\n if (option.CodeDescription) {\r\n textToTranslate.push(new TylTranslation(option.CodeDescription));\r\n }\r\n });\r\n }\r\n }\r\n\r\n return textToTranslate;\r\n }\r\n\r\n getAllFormControls(formData: EFormDataObject): EFormControl[] {\r\n let controls: EFormControl[] = [];\r\n if (formData && formData.Tabs != null && formData.Tabs) {\r\n formData.Tabs.forEach(tab => {\r\n tab.Pages.forEach(page => {\r\n const pageControls = this.getAllControlsByPage(page);\r\n if (pageControls.length > 0) {\r\n controls = controls.concat(pageControls);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return controls;\r\n }\r\n\r\n getAllControlsByPage(page: EFormPage): EFormControl[] {\r\n let controls: EFormControl[] = [];\r\n page.Columns.forEach(column => {\r\n const colControls = this.getAllControlsByColumn(column);\r\n if (colControls.length > 0) {\r\n controls = controls.concat(colControls);\r\n }\r\n });\r\n return controls;\r\n }\r\n\r\n getAllControlsByColumn(column: EFormColumn): EFormControl[] {\r\n let controls: EFormControl[] = [];\r\n if (column.Controls.length > 0) {\r\n controls = controls.concat(column.Controls);\r\n }\r\n column.Rows.forEach(row => {\r\n if (row.Controls.length > 0) {\r\n controls = controls.concat(row.Controls);\r\n }\r\n row.Columns.forEach(col => {\r\n const colControls = this.getAllControlsByColumn(col);\r\n if (colControls.length > 0) {\r\n controls = controls.concat(colControls);\r\n }\r\n });\r\n });\r\n return controls;\r\n }\r\n\r\n isConditionMet(condition: string | boolean, parentControl: EFormControl): boolean {\r\n let conditionMet = false;\r\n if (parentControl.ControlType == this.controlTypes.textbox || parentControl.ControlType == this.controlTypes.note) {\r\n if (condition == 'blank') {\r\n conditionMet = !parentControl.Value;\r\n }\r\n else {\r\n conditionMet = !!parentControl.Value;\r\n }\r\n }\r\n else if (parentControl.ControlType == this.controlTypes.checkbox || parentControl.ControlType == this.controlTypes.checkboxWithTextbox) {\r\n if (condition == 'false') {\r\n conditionMet = !parentControl.Value;\r\n }\r\n else {\r\n conditionMet = !!parentControl.Value;\r\n }\r\n }\r\n else {\r\n if (typeof (parentControl.Value) === 'string' && parentControl.Value) {\r\n conditionMet = condition.toString().trim() == parentControl.Value.trim();\r\n }\r\n else {\r\n conditionMet = condition == parentControl.Value;\r\n }\r\n }\r\n return conditionMet;\r\n }\r\n\r\n formatControlName(control: EFormControl): string {\r\n const id = control.Id ? control.Id.toString() : '';\r\n let controlType = '';\r\n let name = '';\r\n if (control.ControlType == this.controlTypes.text) {\r\n name = control.Value ? control.Value : '';\r\n }\r\n else {\r\n name = control.Label ? control.Label : '';\r\n }\r\n if (name.length > 20) {\r\n name = name.substr(0, 20) + '...';\r\n }\r\n controlType = this.formatControlType(control.ControlType);\r\n\r\n // return 'Control ' + id + ' - ' + controlType + ' (' + name + ')';\r\n return controlType + ' - ' + name + ' (' + id + ')';\r\n }\r\n\r\n formatControlNameForErrors(control: EFormControl): string {\r\n const id = control.Id ? control.Id.toString() : '';\r\n let controlType = '';\r\n let name = '';\r\n if (control.ControlType == this.controlTypes.text) {\r\n name = control.Value ? control.Value : '';\r\n }\r\n else {\r\n name = control.Label ? control.Label : '';\r\n }\r\n if (name.length > 20) {\r\n name = name.substr(0, 20) + '...';\r\n }\r\n controlType = this.formatControlType(control.ControlType);\r\n\r\n // return 'Control ' + id + ' - ' + controlType + ' (' + name + ')';\r\n return controlType + ' (' + name + ')';\r\n }\r\n\r\n formatControlType(type: string): string {\r\n let controlType = '';\r\n switch (type) {\r\n case this.controlTypes.attachment: {\r\n controlType = 'Attachment Request';\r\n break;\r\n }\r\n case this.controlTypes.buttons: {\r\n controlType = 'Buttons';\r\n break;\r\n }\r\n case this.controlTypes.checkbox: {\r\n controlType = 'Checkbox';\r\n break;\r\n }\r\n case this.controlTypes.date: {\r\n controlType = 'Date';\r\n break;\r\n }\r\n case this.controlTypes.divider: {\r\n controlType = 'Divider';\r\n break;\r\n }\r\n case this.controlTypes.verticalDivider: {\r\n controlType = 'Vertical Divider';\r\n break;\r\n }\r\n case this.controlTypes.dropdown: {\r\n controlType = 'Dropdown';\r\n break;\r\n }\r\n case this.controlTypes.image: {\r\n controlType = 'Image';\r\n break;\r\n }\r\n case this.controlTypes.linkToFile: {\r\n controlType = 'Link to File';\r\n break;\r\n }\r\n case this.controlTypes.note: {\r\n controlType = 'Multi-line Textbox';\r\n break;\r\n }\r\n case this.controlTypes.radioButtons: {\r\n controlType = 'Radio Buttons';\r\n break;\r\n }\r\n case this.controlTypes.text: {\r\n controlType = 'Text';\r\n break;\r\n }\r\n case this.controlTypes.textbox: {\r\n controlType = 'Textbox';\r\n break;\r\n }\r\n }\r\n return controlType;\r\n }\r\n\r\n extractMergeTags(eFormData: EFormDataObject, config: EFormConfiguration): string[] {\r\n let allTags: string[] = [];\r\n if (config.ShowHeader) {\r\n allTags = ['<>', '<>', '<>', '<>'];\r\n if (config.ShowHeaderSchoolName) {\r\n allTags.push('<>');\r\n }\r\n if (config.ShowHeaderSchoolAddress) {\r\n allTags.push('<>');\r\n }\r\n }\r\n\r\n let formattedTags: string[] = [];\r\n const controls = this.getAllFormControls(eFormData);\r\n const normalRegEx = new RegExp('<<(.*?)>>', 'g');\r\n const sanitizedRegEx = new RegExp('<<(.*?)>>', 'g');\r\n controls.forEach(control => {\r\n allTags = allTags.concat(control.Label.match(normalRegEx));\r\n allTags = allTags.concat(control.Label.match(sanitizedRegEx));\r\n if (control.ControlType == this.controlTypes.text) {\r\n if (control.Value) {\r\n allTags = allTags.concat(control.Value.match(normalRegEx));\r\n allTags = allTags.concat(control.Value.match(sanitizedRegEx));\r\n }\r\n }\r\n control.DropdownOptions.forEach(opt => {\r\n allTags = allTags.concat(opt.CodeDescription.match(normalRegEx));\r\n allTags = allTags.concat(opt.CodeDescription.match(sanitizedRegEx));\r\n });\r\n });\r\n\r\n const leftAngleRegEx = new RegExp('<<', 'g');\r\n const rightAngleRegEx = new RegExp('>>', 'g');\r\n formattedTags = _.map(_.uniq(allTags).filter(o => !!o), o => o.replace(leftAngleRegEx, '<<').replace(rightAngleRegEx, '>>'));\r\n return formattedTags;\r\n }\r\n\r\n clearMergeFieldValues() {\r\n this.mergeFields.forEach(f => {\r\n f.Value = '';\r\n });\r\n }\r\n\r\n mergeFieldValuesRetrieved() {\r\n this.observableMergeFieldValuesRetrieved.next(true);\r\n }\r\n\r\n mergeFieldPipeTrigger() {\r\n this.observablePipeTrigger.next(true);\r\n }\r\n\r\n controlValueChanged(control: EFormControl) {\r\n this.observableControlValueChanged.next(control);\r\n }\r\n\r\n showConditionalObjectsChanged(showObjects: boolean) {\r\n this.observableShowConditionalObjects.next(showObjects);\r\n }\r\n\r\n getCategories(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetEformCategories');\r\n }\r\n\r\n saveCategory(category: EFormCategory): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveEformCategory', category);\r\n }\r\n\r\n getAllTemplates(yearId: number): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetAllEFormTemplates' + queryString);\r\n }\r\n\r\n getEFormTemplate(templateId: number): Observable {\r\n const queryString = '?templateId=' + templateId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetEformTemplate' + queryString);\r\n }\r\n\r\n saveTemplate(template: EFormTemplate): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveEformTemplate', template);\r\n }\r\n\r\n getMergeFields(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetMergeFields');\r\n }\r\n\r\n getEFormDatabaseFields(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetEFormDatabaseFields');\r\n }\r\n\r\n getEFormDatabaseFieldOptions(fieldId: number, yearId: number): Observable {\r\n const queryString = '?fieldId=' + fieldId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetEFormDatabaseFieldOptions' + queryString);\r\n }\r\n\r\n getEFormAttachment(attachmentId: number): Observable {\r\n const queryString = '?attachmentId=' + attachmentId;\r\n return this.http.get(System.apiURL.Student + 'GetEFormAttachment' + queryString);\r\n }\r\n\r\n getEFormAttachments(attachmentIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetEFormAttachments', attachmentIds);\r\n }\r\n\r\n getManualSubmissionAttachment(formId: number): Observable {\r\n const queryString = '?formId=' + formId;\r\n return this.http.get(System.apiURL.Student + 'GetManualSubmissionAttachment' + queryString);\r\n }\r\n\r\n deleteEFormAttachments(attachmentIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'DeleteEFormAttachments', attachmentIds);\r\n }\r\n\r\n saveEFormAttachments(attachments: EFormAttachment[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveEFormAttachments', attachments);\r\n }\r\n\r\n saveManualSubmissionAttachment(formId: number, attachment: EFormAttachment): Observable {\r\n let queryString = '';\r\n queryString += '?formId=' + formId;\r\n\r\n return this.http.post(System.apiURL.Student + 'SaveManualSubmissionAttachment' + queryString, attachment);\r\n }\r\n\r\n getInstancesForProcessing(yearId: number, schoolId: number, showCountsForAllSchools: boolean, eFormSurvey: boolean, includeInactive: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId;\r\n queryString += '&schoolId=' + schoolId;\r\n queryString += '&showCountsForAllSchools=' + showCountsForAllSchools;\r\n queryString += '&eFormSurvey=' + eFormSurvey;\r\n queryString += '&includeInactive=' + includeInactive;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetInstancesForProcessing' + queryString);\r\n }\r\n\r\n // getEForms(instanceId: number, yearId: number, school_domain: number, showCountsForAllSchools: boolean, formId: number = 0): Observable {\r\n // let queryString = '';\r\n // queryString += '?instanceId=' + instanceId;\r\n // queryString += '&yearId=' + yearId;\r\n // queryString += '&school_domain=' + school_domain;\r\n // queryString += '&showCountsForAllSchools=' + showCountsForAllSchools;\r\n // queryString += '&formId=' + formId;\r\n\r\n // return this.http.get(System.apiURL.Student + 'GetEforms' + queryString);\r\n // }\r\n\r\n getEForms(instanceId: number, yearId: number, school_domain: number, showCountsForAllSchools: boolean, formId: number = 0, exportData: boolean = false, instanceIds: number[] = [], isOnlyForExportData: boolean = false, blnNotSubmitted: boolean = false, blnSubmitted: boolean = false, blnRejected: boolean = false, blnAccepted: boolean = false, blnComplited: boolean = false): Observable {\r\n let fromDate;\r\n let toDate;\r\n const notSubmittedFilter = this.eFormSubmissionsFilterParam.notSubmitted;\r\n if (this.eFormSubmissionsFilterParam.submittedFrom) {\r\n fromDate = moment(this.eFormSubmissionsFilterParam.submittedFrom, 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY');\r\n }\r\n else {\r\n fromDate = moment().toDate().toLocaleDateString();\r\n }\r\n if (this.eFormSubmissionsFilterParam.submittedTo) {\r\n toDate = moment(this.eFormSubmissionsFilterParam.submittedTo, 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY');\r\n }\r\n else {\r\n toDate = moment().toDate().toLocaleDateString();\r\n }\r\n let queryString = '';\r\n queryString += '?instanceId=' + instanceId;\r\n queryString += '&yearId=' + yearId;\r\n queryString += '&school_domain=' + school_domain;\r\n queryString += '&showCountsForAllSchools=' + showCountsForAllSchools;\r\n queryString += '&formId=' + formId;\r\n queryString += '&exportData=' + exportData;\r\n queryString += '&isOnlyForExportData=' + isOnlyForExportData;\r\n queryString += '&blnNotSubmitted=' + blnNotSubmitted;\r\n queryString += '&blnSubmitted=' + blnSubmitted;\r\n queryString += '&blnRejected=' + blnRejected;\r\n queryString += '&blnAccepted=' + blnAccepted;\r\n queryString += '&blnComplited=' + blnComplited;\r\n queryString += '&datFromDate=' + fromDate;\r\n queryString += '&datToDate=' + toDate;\r\n queryString += '¬SubmittedFilterApplied=' + notSubmittedFilter;\r\n\r\n\r\n return this.http.post(System.apiURL.Student + 'GetEforms' + queryString, instanceIds);\r\n }\r\n\r\n populateFormData(form: EForm): Observable {\r\n return this.http.post(System.apiURL.Student + 'PopulateFormData', form);\r\n }\r\n\r\n getFormDataOnlyByIDs(formIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Admin + 'GetFormDataOnlyByIDs', formIds);\r\n }\r\n\r\n getFormDataByInstanceId(yearId: number, formId: number = 0, instanceIds: number[] = []): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId;\r\n queryString += '&formId=' + formId;\r\n return this.http.post(System.apiURL.Student + 'GetFormDataByInstanceId' + queryString, instanceIds);\r\n }\r\n\r\n getStudentParentEforms(): Observable {\r\n let studentId = 0;\r\n let schoolDomain = -1;\r\n let yearId: number = this.yearService.student360Year.Id;\r\n // here this.userService.currentUser.UserType == 3 means Student login\r\n if (!this.loginService.LoginSettings.V10 && this.userService.currentUser.UserType == 3) {\r\n studentId = this.userService.currentUser.StudentId;\r\n }\r\n if (this.userService.currentUser.UserType == 1) {\r\n studentId = this.studentService.selectedStudent.Id;\r\n yearId = this.yearService.defaultYear.Id;\r\n }\r\n if (!this.loginService.LoginSettings.V10) {\r\n schoolDomain = this.yearService.student360Year.SchoolID;\r\n }\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearService.student360Year.Id;\r\n queryString += '&school_domain=' + schoolDomain;\r\n queryString += '&studentId=' + studentId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetStudentParentEforms' + queryString);\r\n }\r\n\r\n getStaffUserEformsByLoginId(): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearService.defaultYear.Id;\r\n\r\n return this.http.get(System.apiURL.Admin + 'GetStaffUserEformsByLoginId' + queryString);\r\n }\r\n\r\n CheckEformsStatus(formId: number, instanceId: number, studentId: number, parentMemId: number, primaryParentMemId: number): Observable {\r\n let queryString = '';\r\n queryString += '?formId=' + (formId ? formId : 0);\r\n queryString += '&instanceId=' + instanceId;\r\n queryString += '&studentId=' + (studentId ? studentId : 0);\r\n queryString += '&parentMemId=' + (parentMemId ? parentMemId : 0);\r\n queryString += '&primaryParentMemId=' + (primaryParentMemId ? primaryParentMemId : 0);\r\n\r\n return this.http.get(System.apiURL.Student + 'CheckEformsStatus' + queryString);\r\n }\r\n\r\n checkForAvailableEForms(required: boolean, filterMarkedAsSeen: boolean = false): Observable {\r\n let studentId = 0;\r\n let schoolDomain = -1;\r\n // here this.userService.currentUser.UserType == 3 means Student login\r\n if (this.userService.currentUser.UserType == 3) {\r\n studentId = this.userService.currentUser.StudentId;\r\n if (studentId == 0 && this.loginService.LoginSettings.V10) {\r\n studentId = -1;\r\n }\r\n }\r\n if (!this.loginService.LoginSettings.V10) {\r\n schoolDomain = this.yearService.student360Year.SchoolID;\r\n }\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearService.student360Year.Id;\r\n queryString += '&school_domain=' + schoolDomain;\r\n queryString += '&required=' + required;\r\n queryString += '&filterMarkedAsSeen=' + filterMarkedAsSeen;\r\n queryString += '&studentId=' + studentId;\r\n\r\n return this.http.get(System.apiURL.Student + 'CheckForAvailableEForms' + queryString);\r\n }\r\n\r\n checkForAvailableStaffEForms(): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearService.defaultYear.Id;\r\n\r\n return this.http.get(System.apiURL.Admin + 'CheckForAvailableStaffEForms' + queryString);\r\n }\r\n\r\n saveEForm(eForm: EForm, comment: string = null, updatePDF: boolean = false, siteYearId: number = -1): Observable {\r\n let queryString = '?comment=' + comment;\r\n queryString += '&updatePDF=' + updatePDF;\r\n queryString += '&templateProcessType=' + this.templateProcessType;\r\n queryString += '&categoryType=' + this.categoryType;\r\n queryString += '&siteYearId=' + siteYearId;\r\n return this.http.post(System.apiURL.Student + 'SaveEform' + queryString, eForm);\r\n }\r\n\r\n updateEFormPDFData(eForm: EForm, comment: string = null): Observable {\r\n const queryString = '?comment=' + comment;\r\n return this.http.post(System.apiURL.Student + 'UpdateEFormPDFData' + queryString, eForm);\r\n }\r\n\r\n GetEformStatusHistory(formId: number): Observable {\r\n let queryString = '';\r\n queryString += '?formId=' + formId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetEformStatusHistory' + queryString);\r\n }\r\n\r\n SaveEformStatusHistory(eFormStatusHistory: EFormStatusHistory): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveEformStatusHistory', eFormStatusHistory);\r\n }\r\n\r\n getEformContact(formId: number): Observable {\r\n let queryString = '';\r\n queryString += '?formId=' + formId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetEformContact' + queryString);\r\n }\r\n\r\n getSchoolsByDomains(schoolDomains: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetSchoolsByDomains', schoolDomains);\r\n }\r\n\r\n getClassesBySectionId(schoolId: number, yearId: number, sectionIds: number[]): Observable {\r\n const queryString = '?schoolId=' + schoolId +\r\n '&yearId=' + yearId;\r\n return this.http.post(System.apiURL.Student + 'GetClassesBySectionId' + queryString, sectionIds);\r\n }\r\n\r\n getClassesByTgsId(schoolId: number, yearId: number, tgsIds: number[], includeStudentIds: boolean = false): Observable {\r\n const queryString = '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&includeStudentIds=' + includeStudentIds;\r\n return this.http.post(System.apiURL.Student + 'GetClassesByTGSId' + queryString, tgsIds);\r\n }\r\n\r\n getUserEformTemplates(isFormDataRequired: boolean = true, templateId: number = 0): Observable {\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&isFormDataRequired=' + isFormDataRequired +\r\n '&templateId=' + templateId;\r\n return this.http.get(System.apiURL.Student + 'GetUserEformTemplates' + queryString);\r\n }\r\n\r\n getEformPermissions(yearId: number): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetEformPermissions' + queryString);\r\n }\r\n\r\n saveInstance(instance: EFormInstance): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveEformInstance', instance);\r\n }\r\n\r\n checkInstanceName(instance: EFormInstance): Observable {\r\n return this.http.post(System.apiURL.Student + 'CheckInstanceName', instance);\r\n }\r\n\r\n getMergeFieldValues(formData: EFormDataObject, schoolId: number, yearId: number, studentId: number, parentId: number, incidentId: number, involvementType: string, config: EFormConfiguration, nonResidentParents: boolean = false) {\r\n if (!this.mergeFields || this.mergeFields.length == 0) {\r\n this.getMergeFields().subscribe(mergeFields => {\r\n this.mergeFields = mergeFields;\r\n this.observableMergeFieldsRetrieved.next(true);\r\n if (studentId || parentId || incidentId) {\r\n this.retrieveMergeFieldValues(formData, schoolId, yearId, studentId, parentId, incidentId, involvementType, config, nonResidentParents);\r\n }\r\n else {\r\n this.mergeFieldValuesRetrieved();\r\n }\r\n });\r\n }\r\n else {\r\n if (studentId || parentId || incidentId) {\r\n this.retrieveMergeFieldValues(formData, schoolId, yearId, studentId, parentId, incidentId, involvementType, config, nonResidentParents);\r\n }\r\n }\r\n }\r\n\r\n retrieveMergeFieldValues(formData: EFormDataObject, schoolId: number, yearId: number, studentId: number, parentId: number, incidentId: number, involvementType: string, config: EFormConfiguration, nonResidentParents: boolean) {\r\n const queryString = '?studentId=' + studentId +\r\n '&parentId=' + parentId +\r\n '&schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&incidentId=' + incidentId +\r\n '&involvementType=' + involvementType +\r\n '&nonResidentParents=' + nonResidentParents;\r\n\r\n const mergeTags = this.extractMergeTags(formData, config);\r\n for (let i = 0; i < mergeTags.length; i++) {\r\n mergeTags[i] = mergeTags[i].replace('< mergeTags.includes(o.FieldName.toLocaleLowerCase()));\r\n this.http.post(System.apiURL.Student + 'GetMergeFieldValue' + queryString, selectedTags).subscribe(results => {\r\n this.mergeFields.forEach(f => {\r\n const translatedField = results.find(o => o.ID == f.ID);\r\n if (translatedField) {\r\n f.Value = translatedField.Value;\r\n }\r\n else {\r\n f.Value = '';\r\n }\r\n });\r\n this.mergeFieldValuesRetrieved();\r\n });\r\n }\r\n\r\n getEFormStudentsByInstanceId(yearId: number, schoolId: number, instanceId: number): Observable {\r\n let studentId = 0;\r\n if (this.userService.currentUser.UserType == 3) {\r\n studentId = this.userService.currentUser.StudentId;\r\n }\r\n const queryString = '?yearId=' + yearId +\r\n '&schoolId=' + schoolId +\r\n '&instanceId=' + instanceId +\r\n '&studentId=' + studentId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetEFormStudentsByInstanceId' + queryString);\r\n }\r\n\r\n getSchoolIdsByClassIds(classIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetSchoolIdsByCourseSectionIds', classIds);\r\n }\r\n\r\n getSchoolIdsByStudentIds(yearId: number, studentIds: number[]): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n\r\n return this.http.post(System.apiURL.Student + 'GetSchoolIdsByStudentIds' + queryString, studentIds);\r\n }\r\n\r\n canCreateUserProcessEform(yearId: number, instance: EFormInstance): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n\r\n return this.http.post(System.apiURL.Student + 'CanCreateUserProcessEform' + queryString, instance);\r\n }\r\n\r\n getEformCreateByStaffId(instanceId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetEformCreateByStaffId' + queryString);\r\n }\r\n\r\n getEFormInstance(instanceId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetEFormInstance' + queryString);\r\n }\r\n\r\n getEformCategoryByInstanceId(instanceId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetEformCategoryByInstanceId' + queryString);\r\n }\r\n\r\n updateLinkedDBFields(formId: number, dbFields: EFormDatabaseField[]): Observable {\r\n const queryString = '?formId=' + formId;\r\n return this.http.post(System.apiURL.Student + 'UpdateEFormLinkedDBFields' + queryString, dbFields);\r\n }\r\n\r\n getLinkedDBFields(form: EFormDataObject): EFormDatabaseField[] {\r\n const newValues: EFormDatabaseField[] = [];\r\n const controls = this.getAllFormControls(form);\r\n controls.forEach(control => {\r\n if (control.LinkedDBField > 0 && control.Visible && (!this.loginService.LoginSettings.EnableCustomizationFramework || !this.loginService.LoginSettings.C360CustomFieldsImported || !control.LinkedCSTFieldName)) {\r\n const dbField = new EFormDatabaseField();\r\n dbField.ID = control.LinkedDBField;\r\n if (control.Value) {\r\n dbField.Value = control.Value.toString();\r\n }\r\n newValues.push(dbField);\r\n }\r\n });\r\n return newValues;\r\n }\r\n\r\n getLinkedDBFieldValues(fieldIds: number[], studentId: number): Observable {\r\n const queryString = '?yearId=' + this.yearService.student360Year.Id +\r\n '&studentId=' + studentId;\r\n return this.http.post(System.apiURL.Student + 'GetLinkedDBFieldValues' + queryString, fieldIds);\r\n }\r\n\r\n getControlIdFromMergeTag(mergeTag: string): number {\r\n let controlId = '';\r\n let endIndex = mergeTag.lastIndexOf(')>>');\r\n if (endIndex <= 0) {\r\n endIndex = mergeTag.lastIndexOf(')>>');\r\n }\r\n let startIndex = mergeTag.lastIndexOf('(');\r\n if (startIndex >= 0 && endIndex > startIndex) {\r\n startIndex += 1;\r\n const idLength = endIndex - startIndex;\r\n controlId = mergeTag.substr(startIndex, idLength);\r\n }\r\n return Number(controlId);\r\n }\r\n\r\n transformDatabaseMergeTag(text: string): string {\r\n if (this.mergeFields && this.mergeFields.length) {\r\n text = this.translateMergeField(text);\r\n // ################# logic for ignore case convert merge field in lower case\r\n for (let i = 0; i < text.length; i++) {\r\n const indxOfStart = text.indexOf('<<');\r\n const indxOfEnd = text.indexOf('>>');\r\n if (indxOfStart < 0 || indxOfEnd < 0) {\r\n break;\r\n }\r\n if (i >= indxOfEnd) {\r\n const subStr = text.substring(i, text.length);\r\n const indxOfStart_II = subStr.indexOf('<<');\r\n const indxOfEnd_II = subStr.indexOf('>>');\r\n const mergeFieldData_II = subStr.substring(indxOfStart_II, indxOfEnd_II + 2);\r\n if (indxOfStart_II != -1 && indxOfEnd_II != -1) {\r\n text = text.replace(mergeFieldData_II, mergeFieldData_II.toLowerCase());\r\n i = i + indxOfEnd_II + 1;\r\n }\r\n }\r\n\r\n if (i <= indxOfStart) {\r\n const mergeFieldData = text.substring(indxOfStart, indxOfEnd + 2);\r\n text = text.replace(mergeFieldData, mergeFieldData.toLowerCase());\r\n i = indxOfEnd + 1;\r\n }\r\n }\r\n // ################## logic for ignore case convert merge field in lower case for text area\r\n for (let i = 0; i < text.length; i++) {\r\n const indxOfStart = text.indexOf('<');\r\n const indxOfEnd = text.indexOf('>');\r\n if (indxOfStart < 0 || indxOfEnd < 0) {\r\n break;\r\n }\r\n if (i >= indxOfEnd) {\r\n const subStr = text.substring(i, text.length);\r\n const indxOfStart_II = subStr.indexOf('<');\r\n const indxOfEnd_II = subStr.indexOf('>');\r\n const mergeFieldData_II = subStr.substring(indxOfStart_II, indxOfEnd_II + 2);\r\n if (indxOfStart_II != -1 && indxOfEnd_II != -1) {\r\n text = text.replace(mergeFieldData_II, mergeFieldData_II.toLowerCase());\r\n i = i + indxOfEnd_II + 1;\r\n }\r\n }\r\n\r\n if (i <= indxOfStart) {\r\n const mergeFieldData = text.substring(indxOfStart, indxOfEnd + 2);\r\n text = text.replace(mergeFieldData, mergeFieldData.toLowerCase());\r\n i = indxOfEnd + 1;\r\n }\r\n }\r\n // #################\r\n text = this.translateMergeField(text);\r\n }\r\n return text;\r\n }\r\n\r\n translateMergeField(text) {\r\n this.mergeFields.forEach(mf => {\r\n // mf.FieldName = mf.FieldName.toLowerCase();\r\n if (mf.FieldName == '<>') {\r\n mf.Value = mf.Value;\r\n }\r\n if (mf.FieldName) {\r\n // const val = mf.Value ? mf.Value.toLowerCase() : ' ';\r\n const val = mf.Value ? mf.Value : ' ';\r\n const escapedFieldname = mf.FieldName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n let regEx = new RegExp(escapedFieldname, 'gi');\r\n text = text.replace(regEx.source.toLowerCase(), val);\r\n text = text.replace(regEx, val);\r\n // rich text fields have sanitized the merge tag so we need to look for this as well\r\n let htmlSafeTag = mf.FieldName;\r\n regEx = new RegExp('<', 'g');\r\n htmlSafeTag = htmlSafeTag.replace(regEx, '<');\r\n regEx = new RegExp('>', 'g');\r\n htmlSafeTag = htmlSafeTag.replace(regEx, '>');\r\n htmlSafeTag = htmlSafeTag.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n regEx = new RegExp(htmlSafeTag, 'gi');\r\n text = text.replace(regEx.source.toLowerCase(), val);\r\n text = text.replace(regEx, val);\r\n }\r\n });\r\n return text;\r\n }\r\n\r\n transformFormOnlyMergeTag(text: string): string {\r\n let otherMatches: string[] = [];\r\n const otherFieldsRegEx = new RegExp('<<(.*?)>>', 'g');\r\n const otherFieldsSanitizedRegEx = new RegExp('<<(.*?)>>', 'g');\r\n otherMatches = text.match(otherFieldsRegEx);\r\n if (!otherMatches) {\r\n otherMatches = text.match(otherFieldsSanitizedRegEx);\r\n }\r\n\r\n if (otherMatches) {\r\n otherMatches.forEach(mergeTag => {\r\n const controlId = this.getControlIdFromMergeTag(mergeTag);\r\n if (!isNaN(controlId)) {\r\n const control = this.allFormControls.find(o => o.Id == controlId);\r\n if (control) {\r\n let sanitizedValue = '';\r\n if (control.Value != null) {\r\n sanitizedValue = this.sanitizer.sanitize(SecurityContext.HTML, control.Value);\r\n }\r\n mergeTag = mergeTag.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n const regEx = new RegExp(mergeTag, 'gi');\r\n text = text.replace(regEx, sanitizedValue);\r\n }\r\n }\r\n });\r\n }\r\n\r\n return text;\r\n }\r\n\r\n // saveStudentPortfolio(document: Portfolio): Observable {\r\n // return this.http.post(System.apiURL.Student + `SaveStudentPortfolio`, document, {observe: 'response'});\r\n // }\r\n\r\n // saveStudentDigitalContent(sdc: StudentDigitalContent, schoolId: number): Observable {\r\n // let paramString: string = '';\r\n // paramString += '?schoolId=' + schoolId;\r\n\r\n // return this.http.post(System.apiURL.Student + 'SaveStudentDigitalContent' + paramString, sdc);\r\n // }\r\n\r\n getTemplateChangeHistory(templateId: number): Observable {\r\n const queryString = '?templateId=' + templateId;\r\n return this.http.get(System.apiURL.Student + 'GetTemplateChangeHistory' + queryString);\r\n }\r\n\r\n getTemplateSettingsHistory(templateId: number): Observable {\r\n const queryString = '?templateId=' + templateId;\r\n return this.http.get(System.apiURL.Student + 'GetTemplateSettingsHistory' + queryString);\r\n }\r\n\r\n getInstanceChangeHistory(instanceId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId;\r\n return this.http.get(System.apiURL.Student + 'GetInstanceChangeHistory' + queryString);\r\n }\r\n\r\n getInstanceSettingsHistory(instanceId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId;\r\n return this.http.get(System.apiURL.Student + 'GetInstanceSettingsHistory' + queryString);\r\n }\r\n\r\n saveTemplateChangeHistory(changes: EFormChangeHistory[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveTemplateChangeHistory', changes);\r\n }\r\n\r\n saveTemplateSettingsHistory(changes: EFormChangeHistory[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveTemplateSettingsHistory', changes);\r\n }\r\n\r\n saveInstanceChangeHistory(changes: EFormChangeHistory[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveInstanceChangeHistory', changes);\r\n }\r\n\r\n saveInstanceSettingsHistory(changes: EFormChangeHistory[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveInstanceSettingsHistory', changes);\r\n }\r\n\r\n getInstancesByTemplateId(templateId: number): Observable {\r\n const queryString = '?templateId=' + templateId;\r\n return this.http.get(System.apiURL.Student + 'GetInstancesByTemplateId' + queryString);\r\n }\r\n\r\n getEformTemplateByAuditId(templateAuditId: number): Observable {\r\n const queryString = '?templateAuditId=' + templateAuditId;\r\n return this.http.get(System.apiURL.Student + 'GetEformTemplateByAuditId' + queryString);\r\n }\r\n\r\n getEformInstanceByAuditId(instanceAuditId: number): Observable {\r\n const queryString = '?instanceAuditId=' + instanceAuditId;\r\n return this.http.get(System.apiURL.Student + 'GetEformInstanceByAuditId' + queryString);\r\n }\r\n\r\n markInstanceAsViewed(instanceId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId;\r\n return this.http.get(System.apiURL.Student + 'MarkInstanceAsViewed' + queryString);\r\n }\r\n\r\n getSubmissionCounts(yearId: number): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetSubmissionCounts' + queryString);\r\n }\r\n\r\n\r\n getSchoolsStudentFamilies(schoolIds: number[], yearId: number, userId: number): Observable {\r\n const queryString = '?yearId=' + yearId + '&userId=' + userId;\r\n return this.http.post(System.apiURL.Student + 'GetSchoolsStudentFamilyWise' + queryString, schoolIds);\r\n }\r\n\r\n getSelectedStaffForEForm(instance: EFormInstance): Observable {\r\n return this.http.post(System.apiURL.Admin + 'GetSelectedStaffForEForm', instance);\r\n }\r\n\r\n getClassStudentFamilies(classIds: number[], yearId: number, userId: number): Observable {\r\n const queryString = '?yearId=' + yearId + '&userId=' + userId;\r\n return this.http.post(System.apiURL.Student + 'GetClassStudentFamilyWise' + queryString, classIds);\r\n }\r\n\r\n getStudentFamilies(studentIds: number[], yearId: number, userId: number): Observable {\r\n const queryString = '?yearId=' + yearId + '&userId=' + userId;\r\n return this.http.post(System.apiURL.Student + 'GetStudentFamilyWise' + queryString, studentIds);\r\n }\r\n\r\n getStudentFamiliesByService(serviceId: number, yearId: number, instance: EFormInstance): Observable {\r\n const queryString = '?serviceId=' + serviceId + '&yearId=' + yearId;\r\n return this.http.post(System.apiURL.Student + 'GetStudentFamiliesByService' + queryString, instance);\r\n }\r\n\r\n getSelectedStudentPopupData(instance: EFormInstance, yearId: number, UserId: number, idType: string): Observable {\r\n const queryString = '?yearId=' + yearId + '&userId=' + UserId + '&idType=' + idType;\r\n return this.http.post(System.apiURL.Student + 'GetSelectedStudentPopupData' + queryString, instance);\r\n }\r\n\r\n getMassMailByParentId(yearId: number, parentId: number[]): Observable {\r\n // const queryString = '?yearId='+yearId+ '&parentId='+parentId;\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.post(System.apiURL.Student + 'GetMassMailByParentId' + queryString, parentId);\r\n }\r\n\r\n getDQStudentCount(instance: EFormInstance): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetDQStudentCount', instance);\r\n }\r\n\r\n getStudentIdsFromDynamicQuery(instance: EFormInstance): Observable {\r\n return this.http.post(System.apiURL.Admin + 'GetStudentIdsFromDynamicQuery', instance);\r\n }\r\n\r\n getSurveyQuestionsByTemplateID(templateId: number): Observable {\r\n const queryString = '?templateId=' + templateId;\r\n return this.http.get(System.apiURL.Admin + 'GetSurveyQuestionsByTemplateID' + queryString);\r\n }\r\n\r\n getSurveyQuestionsByInstanceID(instanceId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId;\r\n return this.http.get(System.apiURL.Admin + 'GetSurveyQuestionsByInstanceID' + queryString);\r\n }\r\n\r\n saveEFormSurveyFields(fields: EFormSurveyField[]): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveEFormSurveyFields', fields);\r\n }\r\n\r\n saveEFormSurveyAnswers(answers: EFormSurveyAnswer[]): Observable {\r\n return this.http.post(System.apiURL.Admin + 'SaveEFormSurveyAnswers', answers);\r\n }\r\n\r\n updateInstanceFormDataOnly(instance: EFormInstance): Observable {\r\n return this.http.post(System.apiURL.Admin + 'UpdateInstanceFormDataOnly', instance);\r\n }\r\n\r\n exportEFormsToExcel(eForms: EForm[], eFormInstances: EFormInstance[], notSubmittedHeader: string = '') {\r\n // PRE: a list of e-forms and (optional but recommended) names associated with instance IDs (for naming the sheets)\r\n // POST: exports each of those instances to an excel sheet\r\n\r\n // Organizing e-form data\r\n const instanceIds = [];\r\n const nameDictionary: { [instanceId: number]: string } = {};\r\n const eFormDictionary: { [instanceId: number]: EForm[] } = {};\r\n const instanceControlDictionary: { [instanceId: number]: EFormControl[] } = {};\r\n const eFormControlDictionary: { [eFormId: number]: EFormControl[] } = {};\r\n const manualSubmissionDictionary: { [eFormId: number]: boolean } = {};\r\n eFormInstances.forEach(eFormInstance => {\r\n\r\n // Capturing instance IDs and the names\r\n if (!nameDictionary[eFormInstance.ID]) {\r\n nameDictionary[eFormInstance.ID] = eFormInstance.Name;\r\n instanceIds.push(eFormInstance.ID);\r\n }\r\n\r\n // Capturing the control dictionary for headers\r\n instanceControlDictionary[eFormInstance.ID] = this.getAllFormControls(JSON.parse(eFormInstance.FormData) as EFormDataObject).filter(o => {\r\n return o.ControlType != 'text'\r\n && o.ControlType != 'image'\r\n && o.ControlType != 'linkToFile'\r\n && o.ControlType != 'divider';\r\n });\r\n });\r\n eForms.forEach(eForm => {\r\n\r\n // Categorizing each e-form into their respective e-form instances\r\n if (!eFormDictionary[eForm.Instance_ID]) {\r\n eFormDictionary[eForm.Instance_ID] = [];\r\n }\r\n eFormDictionary[eForm.Instance_ID].push(eForm);\r\n\r\n // Obtaining each e-forms controls\r\n if (eForm.FormData) {\r\n eFormControlDictionary[eForm.ID] = this.getAllFormControls(JSON.parse(eForm.FormData) as EFormDataObject).filter(o => {\r\n return o.ControlType != 'text'\r\n && o.ControlType != 'image'\r\n && o.ControlType != 'linkToFile'\r\n && o.ControlType != 'divider';\r\n });\r\n } else {\r\n eFormControlDictionary[eForm.ID] = [];\r\n }\r\n\r\n // Setting whether it was manually submitted\r\n manualSubmissionDictionary[eForm.ID] = eForm.ManualSubmission;\r\n });\r\n\r\n // Constructing array of arrays for each instance and each distinct name\r\n // These will become the excel sheets\r\n const dataDictionary: { [instanceId: number]: string[][] } = {};\r\n instanceIds.forEach(instanceId => {\r\n dataDictionary[instanceId] = [];\r\n let instanceEForms = eFormDictionary[instanceId];\r\n // *****Get Current date*****\r\n const today = new Date();\r\n const date = String(today.getDate()).padStart(2, '0');\r\n const mm = String(today.getMonth() + 1).padStart(2, '0'); // January is 0!\r\n const yyyy = today.getFullYear();\r\n\r\n const currentDate = mm + '/' + date + '/' + yyyy;\r\n\r\n // **************************\r\n // Constructing the header\r\n const instanceControls = instanceControlDictionary[instanceId];\r\n // --- ONE-9993\r\n let headerRow: string[] = ['Parent', 'Student Name', 'School', 'Student #', 'Status', 'Submitted By', 'Submitted', 'Note', 'Cell Number', 'Home Number', 'Address', 'Email Address']; // Header row always has parent and student\r\n // ONE-9407\r\n if (eFormInstances[0].TemplateType.toLowerCase() != 'staff' && notSubmittedHeader == 'ExportFromNotSubmittedPopup') {\r\n headerRow = [eFormInstances[0].Name, currentDate];\r\n dataDictionary[instanceId].push(headerRow);\r\n headerRow = ['Parent', 'Student Name', 'School', 'Student #', 'Status', 'Cell Number', 'Home Number', 'Address', 'Email Address']; // Header row always has parent and student\r\n }\r\n if (eFormInstances[0].TemplateType.toLowerCase() == 'staff') {\r\n // headerRow = [eFormInstances[0].Name, Date()];\r\n headerRow = [eFormInstances[0].Name, currentDate];\r\n dataDictionary[instanceId].push(headerRow);\r\n if (notSubmittedHeader == 'ExportFromNotSubmittedPopup') {\r\n headerRow = ['Staff', 'Status', 'Cell Number', 'Home Number', 'Address', 'Email Address'];\r\n }\r\n else {\r\n headerRow = ['Staff', 'Status', 'Submitted By', 'Submitted', 'Note', 'Cell Number', 'Home Number', 'Address', 'Email Address'];\r\n }\r\n }\r\n\r\n instanceControls.forEach(control => {\r\n if (notSubmittedHeader == '') {\r\n headerRow.push(control.Label);\r\n }\r\n });\r\n dataDictionary[instanceId].push(headerRow);\r\n\r\n // Constructing data rows from E-Forms\r\n if (instanceEForms) {\r\n // instanceEForms = _.sortBy(instanceEForms, o => o.SubmittedDate);\r\n // Set order by for same as UI and XML start\r\n instanceEForms = _.sortBy(instanceEForms, ['SubmittedDate']).reverse();\r\n const instanceEFormsObj: EForm[] = [];\r\n instanceEForms.forEach(eForm => {\r\n if (eForm.SubmittedDate) {\r\n instanceEFormsObj.push(eForm);\r\n }\r\n });\r\n instanceEForms = _.sortBy(instanceEForms, ['SubmittedDate']).reverse();\r\n instanceEForms.forEach(eForm => {\r\n if (!eForm.SubmittedDate) {\r\n instanceEFormsObj.push(eForm);\r\n }\r\n });\r\n // Set order by for same as UI and XML code end\r\n instanceEFormsObj.forEach(eForm => {\r\n\r\n // Creating the row for this eForm\r\n const controls: EFormControl[] = eFormControlDictionary[eForm.ID];\r\n let eFormStudentName = '';\r\n if (eForm.StudentNames) {\r\n eForm.StudentNames.forEach(studentName => {\r\n if (eFormStudentName.length > 0) {\r\n eFormStudentName += ', ';\r\n }\r\n eFormStudentName += studentName;\r\n });\r\n }\r\n // get Student # Start\r\n let eFormStrStudentId = '';\r\n if (eForm.strStudentId) {\r\n eForm.strStudentId.forEach(strStudentId => {\r\n if (eFormStrStudentId.length > 0) {\r\n eFormStrStudentId += ', ';\r\n }\r\n eFormStrStudentId += strStudentId;\r\n });\r\n }\r\n // Student # End\r\n // const dataRow: string[] = [!eForm.ManualSubmission ? (eForm.ParentName) : '', eFormStudentName, eFormStrStudentId, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.SubmittedByName, eForm.SubmittedDate ? ((moment(eForm.SubmittedDate).format('MM/DD/YY hh:mm A')).toString()) : ''];\r\n // const dataRow: string[] = [eForm.ParentName, eFormStudentName, eFormStrStudentId, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.SubmittedByName, eForm.SubmittedDate ? ((moment(eForm.SubmittedDate).format('MM/DD/YY hh:mm A')).toString()) : ''];\r\n // --- ONE-9993\r\n let dataRow: string[] = [];\r\n const student_Name = eFormStudentName.substring(0, eFormStudentName.indexOf(' - '));\r\n let school_Name = '';\r\n if (!this.V10) {\r\n school_Name = eFormStudentName.substring(eFormStudentName.indexOf(' - ') + 3, eFormStudentName.indexOf('#'));\r\n }\r\n else {\r\n school_Name = eFormStudentName.substring(eFormStudentName.indexOf(' - ') + 3, eFormStudentName.length);\r\n }\r\n dataRow = [eForm.ParentName, student_Name, school_Name, eFormStrStudentId, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.SubmittedByName, eForm.SubmittedDate ? ((moment(eForm.SubmittedDate).format('MM/DD/YY hh:mm A')).toString()) : '', eForm.StaffNote, eForm.Cell_number, eForm.Home_Number, eForm.Address, eForm.Email_Address];\r\n // ONE-9407\r\n if (eFormInstances[0].TemplateType.toLowerCase() != 'staff' && notSubmittedHeader == 'ExportFromNotSubmittedPopup') {\r\n dataRow = [eForm.ParentName, student_Name, school_Name, eFormStrStudentId, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.Cell_number, eForm.Home_Number, eForm.Address, eForm.Email_Address];\r\n }\r\n if (eFormInstances[0].TemplateType.toLowerCase() == 'staff') {\r\n if (notSubmittedHeader == 'ExportFromNotSubmittedPopup') {\r\n dataRow = [eForm.StaffName, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.Cell_number, eForm.Home_Number, eForm.Address, eForm.Email_Address];\r\n }\r\n else {\r\n dataRow = [eForm.StaffName, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.SubmittedByName, eForm.SubmittedDate ? ((moment(eForm.SubmittedDate).format('MM/DD/YY hh:mm A')).toString()) : '', eForm.StaffNote, eForm.Cell_number, eForm.Home_Number, eForm.Address, eForm.Email_Address];\r\n }\r\n }\r\n if (notSubmittedHeader == '') {\r\n for (let i = 0; i < instanceControls.length; i++) {\r\n if (manualSubmissionDictionary[eForm.ID]) {\r\n dataRow.push('MANUALLY SUBMITTED');\r\n } else if (controls.length > i) {\r\n if (controls[i].ControlType == 'attachment' && (controls[i].AttachmentId || controls[i].Attachment)) {\r\n dataRow.push('Y');\r\n // } else if (controls[i].Value && (instanceControls[i].ControlType != 'radioButtons' || eForm.Status != 'Not Submitted')) {\r\n } else if (controls[i].Value && (eForm.Status != 'Not Submitted')) {\r\n const div = document.createElement('div');\r\n div.innerHTML = controls[i].Value;\r\n const text = div.textContent || div.innerText || '';\r\n dataRow.push(text);\r\n } else {\r\n dataRow.push('');\r\n }\r\n }\r\n }\r\n }\r\n dataDictionary[instanceId].push(dataRow);\r\n });\r\n }\r\n });\r\n\r\n // Creating the spreadsheet\r\n const workSheetsByName: { [name: string]: WorkSheet } = {};\r\n const sheetNames: string[] = [];\r\n instanceIds.forEach(instanceId => {\r\n let name = nameDictionary[instanceId];\r\n if (!name) {\r\n name = 'e-form #' + instanceId;\r\n }\r\n else {\r\n for (let i = 0; i < 40; i++) {\r\n name = name.replace('/', '_');\r\n name = name.replace('<', '_');\r\n name = name.replace('>', '_');\r\n name = name.replace('*', '_');\r\n name = name.replace('?', '_');\r\n name = name.replace('\"', '_');\r\n name = name.replace('|', '_');\r\n name = name.replace('[', '_');\r\n name = name.replace(']', '_');\r\n name = name.replace(':', '_');\r\n name = name.replace(/\\\\/g, '_');\r\n name = name.replace('{', '_');\r\n name = name.replace('}', '_');\r\n }\r\n }\r\n\r\n if (name.length > 31) {\r\n name = name.substring(0, 31);\r\n }\r\n sheetNames.push(name);\r\n workSheetsByName[name] = XLSX.utils.aoa_to_sheet(dataDictionary[instanceId]);\r\n });\r\n const workbook: XLSX.WorkBook = { Sheets: workSheetsByName, SheetNames: sheetNames };\r\n const excelName = sheetNames.length > 1 ? 'e-forms' : sheetNames[0];\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.exportService.saveAs(excelBuffer, excelName, '.xlsx');\r\n }\r\n\r\n // export all instace to excel\r\n\r\n exportInstancesToExcel(eForms: EForm[], eFormInstances: any[], inclueInstanceSpecificField: boolean) {\r\n const instanceIds = [];\r\n const nameDictionary: { [instanceId: number]: string } = {};\r\n const eFormDictionary: { [instanceId: number]: EForm[] } = {};\r\n const instanceControlDictionary: { [instanceId: number]: EFormControl[] } = {};\r\n const eFormControlDictionary: { [eFormId: number]: EFormControl[] } = {};\r\n const manualSubmissionDictionary: { [eFormId: number]: boolean } = {};\r\n\r\n eFormInstances.forEach(eFormInstance => {\r\n // Capturing instance IDs and the names\r\n if (!nameDictionary[eFormInstance.ID]) {\r\n if (this.V10) {\r\n nameDictionary[eFormInstance.ID] = eFormInstance.Name;\r\n }\r\n else {\r\n nameDictionary[eFormInstance.ID] = 'e-Forms';\r\n }\r\n instanceIds.push(eFormInstance.ID);\r\n }\r\n\r\n // Capturing the control dictionary for headers\r\n // instanceControlDictionary[eFormInstance.ID] = this.getAllFormControls(JSON.parse(eFormInstance.FormData) as EFormDataObject).filter(o => {\r\n // return o.ControlType != 'text'\r\n // && o.ControlType != 'image'\r\n // && o.ControlType != 'linkToFile'\r\n // && o.ControlType != 'divider';\r\n // });\r\n\r\n\r\n // Capturing the control dictionary for headers\r\n instanceControlDictionary[eFormInstance.ID] = this.getAllFormControls(JSON.parse(eFormInstance.FormData) as EFormDataObject).filter(o => {\r\n return o.ControlType != 'text'\r\n && o.ControlType != 'image'\r\n && o.ControlType != 'linkToFile'\r\n && o.ControlType != 'divider';\r\n // return o.ControlType != 'image'\r\n // && o.ControlType != 'linkToFile'\r\n // && o.ControlType != 'divider';\r\n });\r\n });\r\n\r\n const dataDictionary: { [instanceId: number]: string[][] } = {};\r\n let oldInstanceId = 0;\r\n dataDictionary[0] = [];\r\n\r\n // if(!eForms.length){\r\n // dataDictionary[0].push([eFormInstances[0].Name]);\r\n // const headerRow: string[] = ['Parent', 'Students', 'Student #', 'Status', 'Submitted By', 'Submitted']; // Header row always has parent and student\r\n // dataDictionary[0].push(headerRow);\r\n // }\r\n // Constructing array of arrays for each instance and each distinct name\r\n // These will become the excel sheets\r\n\r\n instanceIds.forEach(instanceId => {\r\n\r\n eForms.forEach(eForm => {\r\n if (eForm.Instance_ID == instanceId) {\r\n // Categorizing each e-form into their respective e-form instances\r\n if (!eFormDictionary[eForm.Instance_ID]) {\r\n eFormDictionary[eForm.Instance_ID] = [];\r\n }\r\n eFormDictionary[eForm.Instance_ID].push(eForm);\r\n\r\n // Obtaining each e-forms controls\r\n if (eForm.FormData) {\r\n // eFormControlDictionary[eForm.ID] = this.getAllFormControls(JSON.parse(eForm.FormData) as EFormDataObject).filter(o => {\r\n // return o.ControlType != 'text'\r\n // && o.ControlType != 'image'\r\n // && o.ControlType != 'linkToFile'\r\n // && o.ControlType != 'divider';\r\n // });\r\n\r\n\r\n eFormControlDictionary[eForm.ID] = this.getAllFormControls(JSON.parse(eForm.FormData) as EFormDataObject).filter(o => {\r\n return o.ControlType != 'text'\r\n && o.ControlType != 'image'\r\n && o.ControlType != 'linkToFile'\r\n && o.ControlType != 'divider';\r\n // return o.ControlType != 'image'\r\n // && o.ControlType != 'linkToFile'\r\n // && o.ControlType != 'divider';\r\n });\r\n } else {\r\n eFormControlDictionary[eForm.ID] = [];\r\n }\r\n\r\n // Setting whether it was manually submitted\r\n manualSubmissionDictionary[eForm.ID] = eForm.ManualSubmission;\r\n }\r\n });\r\n\r\n let instanceEForms = eFormDictionary[instanceId];\r\n\r\n // Constructing data rows from E-Forms\r\n if (instanceEForms) {\r\n // Set order by for same as UI and XML start\r\n instanceEForms = _.sortBy(instanceEForms, ['SubmittedDate']).reverse();\r\n const instanceEFormsObj: EForm[] = [];\r\n instanceEForms.forEach(eForm => {\r\n if (eForm.SubmittedDate) {\r\n instanceEFormsObj.push(eForm);\r\n }\r\n });\r\n instanceEForms = _.sortBy(instanceEForms, ['SubmittedDate']).reverse();\r\n instanceEForms.forEach(eForm => {\r\n if (!eForm.SubmittedDate) {\r\n instanceEFormsObj.push(eForm);\r\n }\r\n });\r\n // Set order by for same as UI and XML code end\r\n\r\n // Constructing the header\r\n const instanceControls = instanceControlDictionary[instanceId];\r\n\r\n\r\n instanceEFormsObj.forEach(eForm => {\r\n const instanceType = eFormInstances.filter(o => o.ID == eForm.Instance_ID)[0].TemplateType;\r\n if (oldInstanceId == 0 || oldInstanceId != instanceId) {\r\n if (oldInstanceId == 0) {\r\n dataDictionary[0].push(this.V10 ? [nameDictionary[instanceId]] : [eForm.InstanceName]);\r\n }\r\n else if (oldInstanceId > 0 && oldInstanceId != instanceId) {\r\n dataDictionary[0].push(['']);\r\n dataDictionary[0].push(this.V10 ? [nameDictionary[instanceId]] : [eForm.InstanceName]);\r\n }\r\n // ---- ONE-9993\r\n let headerRow: string[] = [];\r\n if (instanceType == 'family') {\r\n headerRow = ['Parent', 'Student Name', 'School', 'Student #', 'Status', 'Submitted By', 'Submitted', 'Note', 'Cell Number', 'Home Number', 'Address', 'Email Address']; // Header row always has parent and student\r\n }\r\n else {\r\n headerRow = ['Student Name', 'School', 'Student #', 'Status', 'Submitted By', 'Submitted', 'Note', 'Cell Number', 'Home Number', 'Address', 'Email Address']; // Header row always has parent and student\r\n }\r\n\r\n if (!this.V10) {\r\n headerRow.push('Grade Level');\r\n }\r\n\r\n instanceControls.forEach(control => {\r\n if (inclueInstanceSpecificField && control.ControlType == 'text' && control.Instructions != '' && control.Instructions) {\r\n headerRow.push(control.Instructions);\r\n }\r\n else if (control.ControlType != 'text') {\r\n headerRow.push(control.Label);\r\n }\r\n });\r\n\r\n dataDictionary[0].push(headerRow);\r\n\r\n oldInstanceId = instanceId;\r\n }\r\n\r\n // Creating the row for this eForm\r\n const controls: EFormControl[] = eFormControlDictionary[eForm.ID];\r\n let eFormStudentName = '';\r\n if (eForm.StudentNames) {\r\n eForm.StudentNames.forEach(studentName => {\r\n if (eFormStudentName.length > 0) {\r\n eFormStudentName += ', ';\r\n }\r\n eFormStudentName += studentName;\r\n });\r\n }\r\n // get Student # Start\r\n let eFormStrStudentId = '';\r\n if (eForm.strStudentId) {\r\n eForm.strStudentId.forEach(strStudentId => {\r\n if (eFormStrStudentId.length > 0) {\r\n eFormStrStudentId += ', ';\r\n }\r\n eFormStrStudentId += strStudentId;\r\n });\r\n }\r\n // Student # End\r\n // const dataRow: string[] = [!eForm.ManualSubmission ? (eForm.ParentName) : '', eFormStudentName, eFormStrStudentId, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.SubmittedByName, eForm.SubmittedDate ? ((moment(eForm.SubmittedDate).format('MM/DD/YY hh:mm A')).toString()) : ''];\r\n // const instanceType = eFormInstances.filter(o => o.ID == eForm.Instance_ID)[0].Type;\r\n // ---- ONE-9993\r\n let dataRow: string[] = [];\r\n const student_Name = eFormStudentName.substring(0, eFormStudentName.indexOf('-') - 1);\r\n let school_Name = '';\r\n if (!this.V10) {\r\n school_Name = eFormStudentName.substring(eFormStudentName.indexOf('-') + 2, eFormStudentName.indexOf('#'));\r\n }\r\n else {\r\n school_Name = eFormStudentName.substring(eFormStudentName.indexOf('-') + 2, eFormStudentName.length);\r\n }\r\n if (instanceType && instanceType == 'family') {\r\n dataRow = [eForm.ParentName, student_Name, school_Name, eFormStrStudentId, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.SubmittedByName, eForm.SubmittedDate ? ((moment(eForm.SubmittedDate).format('MM/DD/YY hh:mm A')).toString()) : '', eForm.StaffNote, eForm.Cell_number, eForm.Home_Number, eForm.Address, eForm.Email_Address];\r\n }\r\n else {\r\n dataRow = [student_Name, school_Name, eFormStrStudentId, eForm.Status + (eForm.ManualSubmission ? ' M' : ''), eForm.SubmittedByName, eForm.SubmittedDate ? ((moment(eForm.SubmittedDate).format('MM/DD/YY hh:mm A')).toString()) : '', eForm.StaffNote, eForm.Cell_number, eForm.Home_Number, eForm.Address, eForm.Email_Address];\r\n }\r\n\r\n if (!this.V10) {\r\n dataRow.push(eForm.GradeLevel);\r\n }\r\n\r\n for (let x = 0; x < instanceControls.length; x++) {\r\n if (instanceControls[x].ControlType != 'text') {\r\n if (manualSubmissionDictionary[eForm.ID]) {\r\n dataRow.push('MANUALLY SUBMITTED');\r\n } else if (controls.length > x) {\r\n if (controls[x].ControlType == 'attachment' && (controls[x].AttachmentId || controls[x].Attachment)) {\r\n dataRow.push('Y');\r\n // } else if (controls[i].Value && (instanceControls[i].ControlType != 'radioButtons' || eForm.Status != 'Not Submitted')) {\r\n } else if (controls[x].Value && (eForm.Status != 'Not Submitted')) {\r\n const div = document.createElement('div');\r\n div.innerHTML = controls[x].Value;\r\n const text = div.textContent || div.innerText || '';\r\n dataRow.push(text);\r\n } else {\r\n dataRow.push('');\r\n }\r\n }\r\n }\r\n else if (inclueInstanceSpecificField && instanceControls[x].ControlType == 'text' && instanceControls[x].Instructions != '' && instanceControls[x].Instructions) {\r\n if (eForm.Status != 'Not Submitted') {\r\n const div = document.createElement('div');\r\n div.innerHTML = instanceControls[x].Value;\r\n const text = div.textContent || div.innerText || '';\r\n dataRow.push(text);\r\n // dataRow.push(instanceControls[i].Value);\r\n }\r\n else {\r\n dataRow.push('');\r\n }\r\n }\r\n }\r\n dataDictionary[0].push(dataRow);\r\n });\r\n }\r\n });\r\n\r\n // Creating the spreadsheet\r\n const workSheetsByName: { [name: string]: WorkSheet } = {};\r\n const sheetNames: string[] = [];\r\n const worksheet: WorkSheet[] = [];\r\n let i = 0;\r\n if (!instanceIds || !instanceIds.length) {\r\n instanceIds.push({ ID: 0 });\r\n }\r\n\r\n instanceIds.forEach(instanceId => {\r\n i++;\r\n let name = this.V10 ? 'e-Forms' : nameDictionary[instanceId];\r\n\r\n if (!name) {\r\n name = 'e-Forms'; // + instanceId;\r\n }\r\n\r\n if (name.length > 31) {\r\n name = name.substring(0, 31);\r\n }\r\n if (i == 1) {\r\n sheetNames.push(name);\r\n }\r\n\r\n workSheetsByName[name] = (XLSX.utils.aoa_to_sheet(dataDictionary[0]));\r\n });\r\n const workbook: XLSX.WorkBook = { Sheets: workSheetsByName, SheetNames: sheetNames };\r\n const excelName = 'e-Forms';\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.exportService.saveAs(excelBuffer, excelName, '.xlsx');\r\n }\r\n\r\n addEFormAttachmentsToPDF(usePDFSpecificAttachments: boolean = true) {\r\n let attachmentDetailPage: jspdf = new jspdf('p', 'mm', 'letter'); // letter size page of PDF;\r\n const pageCenterX = attachmentDetailPage.internal.pageSize.getWidth() / 2;\r\n const pageCenterY = attachmentDetailPage.internal.pageSize.getHeight() / 2;\r\n let attachmentNumber = 1;\r\n\r\n let attachments: EFormAttachment[] = [];\r\n\r\n if (usePDFSpecificAttachments) {\r\n attachments = this.eFormAttachmentForPDF;\r\n }\r\n else {\r\n this.eFormAttachment.forEach(attachment => {\r\n if (this.allFormControls.filter(control => control.AttachmentId && control.ControlType == 'attachment' && control.AttachmentId == attachment.ID).length > 0) {\r\n attachments.push(attachment);\r\n }\r\n });\r\n }\r\n\r\n attachments.forEach(attachment => {\r\n attachmentDetailPage = new jspdf('p', 'mm', 'letter'); // letter size page of PDF;\r\n attachmentDetailPage.text(attachment.OriginalFileName, pageCenterX, pageCenterY, 'center');\r\n this.pdfDataURIs.push(attachmentDetailPage.output('datauristring'));\r\n attachmentNumber++;\r\n\r\n switch (attachment.FileType) {\r\n case 'application/pdf':\r\n this.pdfDataURIs.push(attachment.FileDataBase64);\r\n break;\r\n case 'image/jpeg':\r\n case 'image/png':\r\n const pdfJS: jspdf = new jspdf('p', 'mm', 'letter'); // letter size page of PDF;\r\n const yOffset = 10;\r\n // ***********\r\n const width = pdfJS.internal.pageSize.getWidth();\r\n const height = pdfJS.internal.pageSize.getHeight();\r\n // **********\r\n // pdfJS.addImage(attachment.FileDataBase64, 'JPEG', 10, yOffset,100,100);\r\n pdfJS.addImage(attachment.FileDataBase64, 'JPEG', 10, yOffset, width - 10, height);\r\n this.pdfDataURIs.push(pdfJS.output('datauristring'));\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n this.eFormAttachmentForPDF = [];\r\n }\r\n\r\n async getPdfDataUriAsBase64() {\r\n const multiPdfDoc = await PDFDocument.create();\r\n\r\n for (let i = 0; i < this.pdfDataURIs.length; i++) {\r\n const pdfDoc = await PDFDocument.load(this.pdfDataURIs[i]);\r\n\r\n for (let j = 0; j < pdfDoc.getPageCount(); j++) {\r\n const copiedPage = await multiPdfDoc.copyPages(pdfDoc, [j]);\r\n const [page] = copiedPage;\r\n multiPdfDoc.addPage(page);\r\n }\r\n }\r\n\r\n const pdfBase64 = await multiPdfDoc.saveAsBase64();\r\n\r\n return pdfBase64;\r\n }\r\n\r\n getSurveySummary(instanceId: number, yearId: number, schoolId: number, criticalOnly: boolean, includeResultsForAllSchools: boolean, getMostRecent: boolean, startDate: string): Observable {\r\n const queryString = '?instanceId=' + instanceId +\r\n '&yearId=' + yearId +\r\n '&schoolId=' + schoolId +\r\n '&criticalOnly=' + criticalOnly +\r\n '&includeResultsForAllSchools=' + includeResultsForAllSchools +\r\n '&getMostRecent=' + getMostRecent +\r\n '&startDate=' + startDate;\r\n return this.http.get(System.apiURL.Admin + 'GetSurveySummary' + queryString);\r\n }\r\n\r\n getSurveyNotSubmitted(instanceId: number, yearId: number, schoolId: number, includeResultsForAllSchools: boolean, getMostRecent: boolean, startDate: string): Observable {\r\n const queryString = '?instanceId=' + instanceId +\r\n '&yearId=' + yearId +\r\n '&schoolId=' + schoolId +\r\n '&includeResultsForAllSchools=' + includeResultsForAllSchools +\r\n '&getMostRecent=' + getMostRecent +\r\n '&startDate=' + startDate;\r\n return this.http.get(System.apiURL.Admin + 'GetSurveyNotSubmitted' + queryString);\r\n }\r\n\r\n getSurveyAnswerDetails(instanceId: number, yearId: number, schoolId: number): Observable {\r\n const queryString = '?instanceId=' + instanceId +\r\n '&yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Admin + 'GetSurveyAnswerDetails' + queryString);\r\n }\r\n\r\n getEFormSurveyAnswerSummary(instanceId: number, yearId: number, schoolId: number, startDate: string, getMostRecent: boolean, includeAllSchools: boolean): Observable {\r\n const queryString = '?instanceId=' + instanceId +\r\n '&yearId=' + yearId +\r\n '&schoolId=' + schoolId +\r\n '&startDate=' + startDate +\r\n '&getMostRecent=' + getMostRecent +\r\n '&includeAllSchools=' + includeAllSchools;\r\n return this.http.get(System.apiURL.Admin + 'GetEFormSurveyAnswerSummary' + queryString);\r\n }\r\n}\r\n","import { EFormTab } from './e-form-tab.model';\r\n\r\nexport class EFormDataObject {\r\n TemplateId: number;\r\n InstanceId: number;\r\n Name: string;\r\n VersionNumber: number;\r\n Tabs: EFormTab[] = [];\r\n LastUsedTabId: number;\r\n LastUsedPageId: number;\r\n LastUsedControlId: number;\r\n}","import { Pipe, PipeTransform} from '@angular/core';\r\nimport { EFormService } from './e-form.service';\r\n\r\n\r\n@Pipe({\r\n name: 'mergeField'\r\n})\r\nexport class MergeFieldPipe implements PipeTransform {\r\n\r\n constructor(private eFormService: EFormService) {}\r\n transform(text: string, disableMergeField: boolean, triggerPipe: boolean): string {\r\n if (!disableMergeField) {\r\n text = this.eFormService.transformDatabaseMergeTag(text);\r\n text = this.eFormService.transformFormOnlyMergeTag(text);\r\n }\r\n return text;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { EFormsSurveySummary } from '../e-form-survey-summary.model';\r\n\r\n@Pipe({\r\n name: 'getSurveyAnswerByFieldID'\r\n})\r\nexport class GetSurveyAnswerByFieldIDPipe implements PipeTransform {\r\n\r\n transform(summary: EFormsSurveySummary, fieldID: number): string {\r\n let result = '';\r\n\r\n if (summary && summary.Answers) {\r\n const answer = summary.Answers.find(o => o.SurveyFieldID == fieldID);\r\n if (answer) {\r\n result = answer.Answer;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { EFormsSurveySummary } from '../e-form-survey-summary.model';\r\n\r\n@Pipe({\r\n name: 'surveyAnswerIsCritical'\r\n})\r\nexport class SurveyAnswerIsCriticalPipe implements PipeTransform {\r\n\r\n transform(summary: EFormsSurveySummary, fieldID: number): boolean {\r\n let result = false;\r\n\r\n if (summary && summary.Answers) {\r\n const answer = summary.Answers.find(o => o.SurveyFieldID == fieldID);\r\n if (answer) {\r\n result = answer.IsCritical;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n}\r\n","import {Component, ElementRef, Inject, OnInit, ViewChild} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {ErrorList} from '../controls/error-prompt/error-list.model';\r\n\r\n@Component({\r\n\tselector: 'app-enter-csv-dialog',\r\n\ttemplateUrl: './enter-csv-dialog.component.html',\r\n\tstyleUrls: ['./enter-csv-dialog.component.css']\r\n})\r\nexport class EnterCsvDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\theader = 'Enter Comma Separate Value';\r\n\thelpString = 'Enter values separated by commas (Ex. ABC, DEF, GHI)';\r\n\tvalidator: (csv: string) => ErrorList[];\r\n pattern: RegExp;\r\n\tkeyRestriction: RegExp;\r\n\r\n\t// Properties\r\n\tcsv = '';\r\n\terrors: ErrorList[] = [];\r\n\t@ViewChild('csvField', { read: ElementRef, static: true }) csvField: ElementRef;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\r\n\t\t// Setting the injected properties\r\n\t\tif (this.data.header) {\r\n\t\t\tthis.header = this.data.header;\r\n\t\t}\r\n\t\tif (this.data.helpString) {\r\n\t\t\tthis.helpString = this.data.helpString;\r\n\t\t}\r\n\t\tif (this.data.validator) {\r\n\t\t\tthis.validator = this.data.validator;\r\n\t\t}\r\n\t\tif (this.data.pattern) {\r\n\t\t this.pattern = this.data.pattern;\r\n }\r\n\t\tif (this.data.keyRestriction) {\r\n\t\t this.keyRestriction = this.data.keyRestriction;\r\n }\r\n\t}\r\n\r\n\tsave() {\r\n\t\t// PRE: the save button is clicked\r\n\t\t// POST: closes the dialog with the CSV\r\n\t\tif (this.validator) {\r\n\t\t\tthis.errors = this.validator(this.csv);\r\n\r\n\t\t\t// If an error comes back with an empty element ref, populate that as our CSV field\r\n\t\t\t// If it comes back as null, don't show it with any ElementRef\r\n\t\t\tthis.errors.forEach(error => {\r\n\t\t\t\tif (error.fieldRef && !error.fieldRef.nativeElement) {\r\n\t\t\t\t\terror.fieldRef = this.csvField;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.errors.length == 0) {\r\n\t\t\tthis.dialogBox.close(this.csv);\r\n\t\t}\r\n\t}\r\n\r\n\tcancel() {\r\n\t\t// PRE: the cancel button is clicked\r\n\t\t// POST: closes the dialog with null\r\n\t\tthis.dialogBox.close(null);\r\n\t}\r\n\r\n\tvalidateKey(event: KeyboardEvent) {\r\n\t // PRE: a key is entered into the csv\r\n // POST: ensures that it maches the format\r\n if (this.keyRestriction &&\r\n !this.keyRestriction.test(event.key) &&\r\n event.key != 'Backspace' &&\r\n event.key != 'Tab') {\r\n event.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n\t// Methods\r\n}\r\n","\r\n
\r\n\t{{header | translate}}\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t{{helpString | translate}}\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\nimport {TylerMatTableDataSource} from './angular-material/extended.class';\r\nimport {formatDate} from '@angular/common';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable()\r\nexport class ExportService {\r\n\r\n public exportTableData(\r\n tableData: TylerMatTableDataSource,\r\n columns: string[],\r\n fileName: string,\r\n headerMutator: Function = null,\r\n columnMutator: Function = null,\r\n typeCoercion: Function = null,\r\n useFilterDataAccessor = false\r\n ) {\r\n // PRE: the table data should include all the data you want to print. The sorting data accessor is used to obtain the data.\r\n // the columns you wish to display. The column names *must* match the headers of the columns.\r\n // the name of the file\r\n // POST: prints all the columns in the order provide\r\n // NOTE: optionally, you can include a header mutator to change the header in the XLS based on the column header.\r\n // it must take a string and return a string\r\n const exportData: any[] = [];\r\n const exportedData = tableData.sortData(tableData.filteredData, tableData.sort);\r\n exportedData.forEach(dataRow => {\r\n const exportRow: any[] = [];\r\n columns.forEach(column => {\r\n let columnToCheck = column;\r\n if (columnMutator && columnMutator(column)) {\r\n columnToCheck = columnMutator(column);\r\n }\r\n let header = column;\r\n if (headerMutator && headerMutator(column)) {\r\n header = headerMutator(column);\r\n }\r\n let type: string = typeof (dataRow[columnToCheck]);\r\n if (dataRow[columnToCheck] instanceof Date) {\r\n type = 'date';\r\n }\r\n if (typeCoercion && typeCoercion(column)) {\r\n type = typeCoercion(column);\r\n }\r\n if (type == 'string') {\r\n exportRow[header] = dataRow[columnToCheck];\r\n } else if (type.toLowerCase() == 'date') {\r\n if (dataRow[columnToCheck]) {\r\n exportRow[header] = formatDate(dataRow[columnToCheck], 'MM/dd/yyyy', 'en');\r\n } else {\r\n exportRow[header] = '';\r\n }\r\n } else {\r\n if (useFilterDataAccessor) {\r\n exportRow[header] = tableData.filterDataAccessor(dataRow, columnToCheck);\r\n } else {\r\n exportRow[header] = tableData.sortingDataAccessor(dataRow, columnToCheck);\r\n }\r\n }\r\n });\r\n exportData.push(exportRow);\r\n });\r\n this.exportToExcel(exportData, fileName);\r\n }\r\n\r\n public exportMatGridToExcel(data: any[], columns: string[], fileName: string, detailColumns?: string[], excludedColumns?: string[]) {\r\n // data: Angular Material table data\r\n // columns: Columns currently displayed in Material table (Must match data field names)\r\n // filename: Excel file name\r\n // detailColumns: Data to include in export that is not currently displayed in Material table (Optional)\r\n // excludedColumns: Data to exclude in export that is currently displayed in Material table (Optional)\r\n\r\n // List of Columns to include in excel file\r\n const exportColumns: string[] = [];\r\n\r\n // Copy columns currently displayed in Material table\r\n columns.forEach( column => {\r\n exportColumns.push(column);\r\n });\r\n\r\n // Add columns selected columns not currently displayed in main row of Material Table\r\n if (detailColumns != undefined) {\r\n detailColumns.forEach(detailColumn => {\r\n exportColumns.push(detailColumn);\r\n });\r\n }\r\n\r\n // Remove any excluded columns from export (More, Action, etc.)\r\n if (excludedColumns != undefined) {\r\n excludedColumns.forEach( exColumn => {\r\n const index: number = exportColumns.indexOf(exColumn);\r\n if (index != -1) {\r\n exportColumns.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n // Create excel row for each row in Material table data\r\n const exportData: any[] = [];\r\n data.forEach(dataRow => {\r\n const exportRow: any[] = [];\r\n exportColumns.forEach(column => {\r\n exportRow[column] = dataRow[column];\r\n });\r\n\r\n exportData.push(exportRow);\r\n });\r\n this.exportToExcel(exportData, fileName);\r\n }\r\n\r\n public exportToExcel(json: any[], excelFileName: string): void {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAs(excelBuffer, excelFileName, EXCEL_EXTENSION);\r\n }\r\n\r\n public saveAs(buffer: any, fileName: string, fileExt: string): void {\r\n const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});\r\n FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + fileExt);\r\n }\r\n}\r\n","import { FavoritePortal } from \"./favorite-portals.model\";\r\n\r\nexport class FavoritePreferences {\r\n FavoritePortals: FavoritePortal[];\r\n }","\r\n
\r\n Favorites\r\n Edit Favorites\r\n
\r\n\r\n
\r\n \r\n
","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport * as _ from 'lodash';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { Portal } from '../portal.model';\r\nimport { FavoritePreferences } from '../user-preferences/favorite-prefences.model';\r\nimport { PortalMenuItem } from '../user-preferences/portal-menu-preferences.model';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { FavoritePortal } from './favorite-portals.model';\r\n\r\n@Component({\r\n selector: 'app-favorites',\r\n templateUrl: './favorites.component.html',\r\n styleUrls: ['./favorites.component.css']\r\n})\r\nexport class FavoritesComponent implements OnInit {\r\n @Input() staffAssignedPortals: Portal[];\r\n @Input() editFavorites: boolean;\r\n @Input() isDefaultPreferences: boolean;\r\n @ViewChild('menu', { static: true }) menuRef: ElementRef;\r\n parentAssignedPortals: any[];\r\n rowDetailExpand: boolean[] = [];\r\n favoritesPreferences: FavoritePreferences;\r\n selectedFavoritesPortals: FavoritePortal[] = [];\r\n V10: boolean;\r\n\r\n constructor(private userPreferencesService: UserPreferencesService,\r\n private classroom360Service: Classroom360Service,\r\n private loginService: LoginService,\r\n private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n if (!this.V10) {\r\n this.setFavorites();\r\n }\r\n }\r\n\r\n portalCheckboxClick(portal: Portal) {\r\n if (this.V10) {\r\n const index: number = this.staffAssignedPortals.findIndex(sap => sap.PortalName == portal.PortalName\r\n && sap.GroupName == portal.GroupName\r\n && sap.ParentModule == portal.ParentModule\r\n && sap.PortalDescription.split('?')[0] == portal.PortalDescription.split('?')[0]);\r\n\r\n if (index > -1) {\r\n this.staffAssignedPortals[index].IsFavorite = portal.IsFavorite;\r\n }\r\n }\r\n else {\r\n if (portal.Selected) {\r\n const favExists: boolean = this.selectedFavoritesPortals.filter(favPortal =>\r\n favPortal.Id == portal.Id\r\n || ((favPortal.Id == null || favPortal.Id == 0)\r\n && favPortal.GroupName == portal.GroupName\r\n && favPortal.PortalDescription.split('?')[0] == portal.PortalDescription.split('?')[0]\r\n && favPortal.PortalModule == portal.ParentModule\r\n && favPortal.PortalName == portal.PortalName)).length != 0;\r\n\r\n if (!favExists) {\r\n const newFavorite: FavoritePortal = {\r\n ParentPortalName: '',\r\n PortalDescription: portal.PortalDescription,\r\n PortalName: portal.PortalName,\r\n PortalModule: portal.ParentModule,\r\n GroupName: portal.GroupName,\r\n Id: portal.Id\r\n };\r\n\r\n this.selectedFavoritesPortals.push(newFavorite);\r\n }\r\n }\r\n else {\r\n const favIndex: number = this.selectedFavoritesPortals.findIndex(favPortal =>\r\n favPortal.Id == portal.Id\r\n || ((favPortal.Id == null || favPortal.Id == 0)\r\n && favPortal.GroupName == portal.GroupName\r\n && favPortal.PortalDescription.split('?')[0] == portal.PortalDescription.split('?')[0]\r\n && favPortal.PortalModule == portal.ParentModule\r\n && favPortal.PortalName == portal.PortalName));\r\n\r\n if (favIndex != -1) {\r\n this.selectedFavoritesPortals.splice(favIndex, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n setFavorites() {\r\n // Get the Favorites\r\n if (!this.isDefaultPreferences) {\r\n this.favoritesPreferences = this.userPreferencesService.favoritesPreferences;\r\n if (this.favoritesPreferences != null) {\r\n this.selectedFavoritesPortals = _.cloneDeep(this.favoritesPreferences.FavoritePortals);\r\n }\r\n }\r\n else {\r\n this.userPreferencesService.getUserPreferences(0, '/OneSISFavorites', 0, '', this.isDefaultPreferences).subscribe(data => {\r\n this.favoritesPreferences = JSON.parse(data[0]);\r\n\r\n this.staffAssignedPortals.forEach(portal => {\r\n portal.isDefaultSelected = false;\r\n });\r\n\r\n this.favoritesPreferences.FavoritePortals.forEach(favPortal => {\r\n const staffPortal: Portal = this.staffAssignedPortals.find(portal =>\r\n favPortal.Id == portal.Id\r\n || ((favPortal.Id == null || favPortal.Id == 0)\r\n && favPortal.GroupName == portal.GroupName\r\n && favPortal.PortalDescription.split('?')[0] == portal.PortalDescription.split('?')[0]\r\n && favPortal.PortalModule == portal.ParentModule\r\n && favPortal.PortalName == portal.PortalName));\r\n\r\n this.selectedFavoritesPortals.push(favPortal);\r\n if (staffPortal) {\r\n staffPortal.isDefaultSelected = true;\r\n }\r\n });\r\n }, err => {\r\n console.log(err);\r\n }, () => {\r\n });\r\n }\r\n }\r\n\r\n closeClick() {\r\n // POST: Close the dialog\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n expandAllClick(expand: boolean) {\r\n this.menuRef['collapseExpandAll'](expand);\r\n }\r\n\r\n saveClick() {\r\n // POST: Wraps the object, converts to XML and saves the preference\r\n\r\n if (this.V10) {\r\n this.classroom360Service.updateStaffAssignedPortals(this.staffAssignedPortals);\r\n this.userPreferencesService.updateFavoritePortals(this.staffAssignedPortals, false).subscribe(data => {\r\n\r\n });\r\n\r\n this.closeClick();\r\n }\r\n else {\r\n if (this.selectedFavoritesPortals != null) {\r\n if (this.favoritesPreferences == null) {\r\n this.favoritesPreferences = new FavoritePreferences();\r\n }\r\n this.favoritesPreferences.FavoritePortals = this.selectedFavoritesPortals;\r\n const xmlStream: string[] = [];\r\n const prefs: FavoritePreferences = {\r\n FavoritePortals: this.favoritesPreferences.FavoritePortals\r\n };\r\n xmlStream.push(JSON.stringify(prefs));\r\n this.userPreferencesService.saveUserPreferences(0, '/OneSISFavorites', xmlStream, 0, '', this.isDefaultPreferences).subscribe(res => {\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferencesService.favoritesPreferences = this.favoritesPreferences;\r\n }\r\n }, err => {\r\n console.log(err);\r\n }, () => {\r\n this.closeClick();\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n expandGroup($event: any, portalMenu: PortalMenuItem) {\r\n $event.stopPropagation();\r\n portalMenu.Expanded = portalMenu.Expanded == 1 ? 0 : 1;\r\n }\r\n\r\n togglePortal(portal: Portal) {\r\n portal.Selected = !portal.Selected;\r\n }\r\n}\r\n","
\r\n\r\n \r\n
\r\n

{{DialogTitle}}

\r\n
\r\n\r\n \r\n \r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ ColumnHeader }}\r\n \r\n \r\n {{element.TextField}}\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { ErrorList } from '../controls/error-prompt/error-list.model';\r\n// import { NgForm } from '@angular/forms';\r\nimport { GenericList, GenericListItem } from './generic-list.model';\r\n\r\n\r\n@Component({\r\n selector: 'app-generic-list-selector',\r\n templateUrl: './generic-list-selector.component.html',\r\n styleUrls: ['./generic-list-selector.component.css'],\r\n})\r\n\r\n\r\nexport class GenericListSelectorComponent implements OnInit, OnDestroy {\r\n dialogRef: MatDialogRef;\r\n\r\n\r\n // field refs\r\n // @ViewChild('Select', { read: ElementRef }) select: ElementRef;\r\n // @ViewChild('FromPeriod', { read: ElementRef }) fromPeriod: ElementRef;\r\n // @ViewChild('ToPeriod', { read: ElementRef }) toPeriod: ElementRef;\r\n // @ViewChild('UpdateDisplay', { read: ElementRef }) updateDisplay: ElementRef;\r\n\r\n // grid\r\n gridDataExists = true;\r\n selectAll = true;\r\n dataSource: MatTableDataSource;\r\n gridColumns: string[] = ['TextField']; // , 'Period', 'TermCode', 'SubjectCode', 'Section', 'AbbreviatedTitle', 'TeacherName', 'StudentCount', 'DaysGroupDescription'];\r\n DialogTitle: string;\r\n ColumnHeader: string;\r\n OKButtonLabel = 'OK';\r\n GridData: GenericListItem[] = [];\r\n errors: ErrorList[] = [];\r\n list: GenericList;\r\n\r\n // enums\r\n\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n GenericListSelectorDialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ) {\r\n this.dialogRef = GenericListSelectorDialogRef;\r\n // console.log(this.data.Items);\r\n this.list = this.data;\r\n for (let x = 0; x < this.list.Items.length; x++) {\r\n this.GridData.push(this.list.Items[x]);\r\n }\r\n // console.log(this.GridData);\r\n this.dataSource = new MatTableDataSource(this.data.Items);\r\n\r\n this.DialogTitle = this.data.DialogTitle;\r\n this.ColumnHeader = this.data.ColumnHeader;\r\n\r\n if (this.list.OKButtonLabel) {\r\n this.OKButtonLabel = this.list.OKButtonLabel;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n // console.log(this.data);\r\n // this.dataSource = new MatTableDataSource(this.data);\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe\r\n\r\n }\r\n\r\n\r\n selectAllGridItems(ds, isChecked: boolean) {\r\n // console.log(ds.data);\r\n // console.log(this.GridData);\r\n // console.log(isChecked);\r\n // console.log(this.GridData.length);\r\n this.selectAll = isChecked;\r\n // console.log(this.GridData.length);\r\n for (let x = 0; x < this.GridData.length; x++) {\r\n this.GridData[x].IsSelected = isChecked;\r\n // console.log(this.GridData[x]);\r\n }\r\n\r\n // for (let x = 0; x < this.dataSource.data[0].length; x++) {\r\n // this.dataSource.data[0]. = isChecked;\r\n // }\r\n\r\n // this.dataSource.data[0].length = MatTableDataSource\r\n\r\n // this.dataSource.data.forEach(o => {\r\n // console.log(o);\r\n\r\n\r\n // for (let x = 0; x < o.length; x++) {\r\n // o[x].IsSelected = isChecked;\r\n // }\r\n // }\r\n // );\r\n }\r\n\r\n selectItem(item: GenericListItem, isChecked: boolean) {\r\n // console.log(item);\r\n item.IsSelected = isChecked;\r\n\r\n const result = this.GridData.filter(o => o.IsSelected == false);\r\n if (result.length > 0) {\r\n this.selectAll = false;\r\n }\r\n else if (result.length == 0) {\r\n this.selectAll = true;\r\n }\r\n }\r\n\r\n checkMinAndMaxNumberOfSelected() {\r\n const result = this.GridData.filter(o => o.IsSelected == true);\r\n // console.log(result);\r\n // console.log('this.list.minRequiredSelected: ' + this.list.minRequiredSelected);\r\n // console.log('this.list.maxAllowedSelected: ' + this.list.maxAllowedSelected);\r\n if (this.list.maxAllowedSelected != -1 && result.length > this.list.maxAllowedSelected) {\r\n this.errors.push({\r\n fieldName: null,\r\n errorMsg: 'You may select a maximum of ' + this.list.maxAllowedSelected + ' item(s).',\r\n fieldRef: null\r\n });\r\n }\r\n\r\n if (result.length < this.list.minRequiredSelected) {\r\n this.errors.push({\r\n fieldName: null,\r\n errorMsg: 'You must select at least ' + this.list.minRequiredSelected + ' item(s).',\r\n fieldRef: null\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n selectionChanged() {\r\n // this.reportParameter.isValueChange = true;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.reportParameter.isValueChange);\r\n // }\r\n // if (this.reportParameter.FromPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.FromPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n // this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n // }\r\n // if (this.reportParameter.ToPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.ToPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n // this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n // }\r\n }\r\n\r\n okClick() {\r\n this.checkErrors();\r\n if (this.errors.length == 0) {\r\n this.dialogRef.close(this.getSelectedIDs());\r\n }\r\n }\r\n\r\n getSelectedIDs(): string[] {\r\n const selectedIDs: string[] = [];\r\n for (let x = 0; x < this.GridData.length; x++) {\r\n if (this.GridData[x].IsSelected) {\r\n selectedIDs.push(this.GridData[x].Id);\r\n }\r\n }\r\n return selectedIDs;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n checkErrors() {\r\n this.errors = [];\r\n this.checkMinAndMaxNumberOfSelected();\r\n // const selectedGridData = this.reportParameter.GridData.filter(o => o.Select);\r\n // if (selectedGridData.length == 0) {\r\n // this.errors.push({\r\n // fieldName: '',\r\n // errorMsg: 'No Classes Have Been Selected.',\r\n // fieldRef: this.select\r\n // });\r\n // }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n}\r\n\r\n","export class GenericList {\r\n DialogTitle: string;\r\n ColumnHeader: string;\r\n Items: GenericListItem[] = [];\r\n minRequiredSelected = 1;\r\n maxAllowedSelected = -1; // default of -1 allows ALL to be selected\r\n OKButtonLabel = 'OK';\r\n}\r\n\r\nexport class GenericListItem {\r\n Id: string;\r\n TextField: string;\r\n ValueField: string;\r\n IsSelected: boolean;\r\n}","\r\n\r\n \r\n

\r\n WARNING\r\n

\r\n\r\n \r\n
\r\n Changes have been entered but not saved.\r\n
\r\n
\r\n If you continue without saving, the changes will be lost.\r\n
\r\n
0\" style=\"text-align: center; margin-bottom: 15px;\" class=\"warningText\">\r\n Due to errors, saving is not possible.
\r\n Either Continue without Saving
\r\n or select Cancel and correct the errors.\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n 0 || preventSave\" image=\"save disabled.png\" label=\"Save and Continue\" textColor=\"lightgrey\" [disabled]=\"true\">\r\n \r\n \r\n\r\n","import {Component, EventEmitter, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {ErrorList} from '../../../controls/error-prompt/error-list.model';\r\n\r\n@Component({\r\n\tselector: 'app-check-for-errors-message',\r\n\ttemplateUrl: './check-for-errors-message.component.html',\r\n\tstyleUrls: ['./check-for-errors-message.component.css']\r\n})\r\nexport class CheckForErrorsMessageComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\tdialogBox: MatDialogRef;\r\n\tsaveChoice: EventEmitter = new EventEmitter (); // 1 = save and continue, 0 = continue without save, -1 = cancel\r\n\terrors: ErrorList[] = [];\r\n\tpreventSave = false;\r\n\t\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any\r\n\t) { }\r\n\t\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.errors = this.data.errors;\r\n\t\tthis.preventSave = this.data.preventSave;\r\n\t}\r\n\t\r\n\tngOnDestroy () {\r\n\t\tthis.saveChoice.emit(-1);\r\n\t}\r\n\r\n\t// Methods\r\n\tleavePage(choice: number) {\r\n\t\tthis.saveChoice.emit(choice);\r\n\t\tthis.dialogBox.close(choice);\r\n\t}\r\n}\r\n","import { map, concatMap } from 'rxjs/operators';\r\nimport { SharedService } from './../../shared.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { HasErrors } from './HasErrors';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { CheckForErrorsMessageComponent } from './check-for-errors-message/check-for-errors-message.component';\r\nimport { Location } from '@angular/common';\r\n\r\n/**\r\n * This guard shows a warning when the user tries to navigate away from a page that has forms and errors.\r\n * The warning has three options:\r\n * save and continue - the user will save the data and continue. This is only available if there are no errors.\r\n * continue without save - the user will not save and continue.\r\n * cancel - the user will stay on the apge.\r\n *\r\n * To use this guard, do the following:\r\n * 1. Implement HasErrors on the component.\r\n * 2. Register the guard in the CanDeactivate array of your route.\r\n *\r\n * This guard calls the checkErrors function of your component. The result determines the behavior of this guard.\r\n * See the canDeactivate function of this guard for more details.\r\n */\r\n@Injectable()\r\nexport class CheckForErrorsGuard implements CanDeactivate {\r\n\r\n // Properties\r\n warningDialog: MatDialogRef;\r\n savingObservable: Observable;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialog: MatDialog,\r\n private sharedService: SharedService,\r\n private router: Router,\r\n private location: Location\r\n ) {\r\n }\r\n\r\n // Methods\r\n checkForDeactivation(currentComponent: any = null): Observable | boolean {\r\n // POST: checks the router state tree for itself and, if it's there, performs canDeactivate\r\n if (currentComponent) {\r\n if (currentComponent.checkErrors != undefined) {\r\n return this.canDeactivate(currentComponent);\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n if (this.sharedService.currentComponent && this.sharedService.currentComponent.checkErrors != undefined) {\r\n return this.canDeactivate(this.sharedService.currentComponent);\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n urlTreeWorkaround(currentRoute: ActivatedRouteSnapshot) {\r\n const currentUrlTree = this.router.createUrlTree([], currentRoute);\r\n const currentUrl = currentUrlTree.toString();\r\n this.location.go(currentUrl);\r\n return false;\r\n }\r\n\r\n canDeactivate(component: HasErrors, currentRoute?: ActivatedRouteSnapshot, currentState?: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable | boolean {\r\n // PRE: the user tries to navigate away\r\n // POST: checks the errors.\r\n // If 5, waits for save and continues\r\n // If 4, shows the warning dialog. If the result is true, it will wait for the save before it continues.\r\n // If 3, shows the warning, but doesn't perform route on the save (lets the component do it)\r\n // If 2, continues without save.\r\n // If 1, continues with save.\r\n // If 0, shows warning.\r\n // If -1, stops the route.\r\n let saved = null;\r\n switch (component.checkErrors(nextState)) {\r\n case 5:\r\n saved = component.save();\r\n if (saved instanceof Observable) {\r\n return saved;\r\n } else {\r\n return of(true);\r\n }\r\n case 4:\r\n const dialog = this.showWarningWithoutSave(component);\r\n return dialog.pipe(\r\n concatMap(result => {\r\n if (result == 1) {\r\n saved = component.save();\r\n if (saved instanceof Observable) {\r\n return saved;\r\n } else {\r\n return of(true);\r\n }\r\n } else {\r\n if (result == 0) {\r\n if (component['continuedWithoutSave'] != null && typeof component['continuedWithoutSave'] == 'function') {\r\n component.continuedWithoutSave();\r\n }\r\n return of(true);\r\n } else {\r\n return of(this.urlTreeWorkaround(currentRoute));\r\n }\r\n }\r\n })\r\n );\r\n case 3:\r\n return this.showWarningWithoutSaveRoute(component, currentRoute);\r\n case 2:\r\n if (component['continuedWithoutSave'] != null && typeof component['continuedWithoutSave'] == 'function') {\r\n component.continuedWithoutSave();\r\n }\r\n return true;\r\n case 1:\r\n component.save();\r\n return true;\r\n case 0:\r\n return this.showWarning(component, currentRoute);\r\n case -1:\r\n return this.urlTreeWorkaround(currentRoute);\r\n }\r\n }\r\n\r\n showWarning(component: HasErrors, currentRoute?: ActivatedRouteSnapshot) {\r\n // POST: shows a warning dialog. If the user clicks OK, returns true. Else, returns false.\r\n this.warningDialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n data: {\r\n errors: component.errors\r\n },\r\n disableClose: true\r\n });\r\n this.warningDialog.componentInstance.dialogBox = this.warningDialog;\r\n return this.warningDialog.componentInstance.saveChoice.pipe(map(result => {\r\n switch (result) {\r\n case 1:\r\n if (component.errors.length > 0) {\r\n return this.urlTreeWorkaround(currentRoute);\r\n } else {\r\n component.save();\r\n return true;\r\n }\r\n case 0:\r\n if (component['continuedWithoutSave'] != null && typeof component['continuedWithoutSave'] == 'function') {\r\n component.continuedWithoutSave();\r\n }\r\n return true;\r\n case -1:\r\n return this.urlTreeWorkaround(currentRoute);\r\n }\r\n }));\r\n }\r\n\r\n showWarningWithoutSave(component: HasErrors) {\r\n // POST: shows a warning dialog, but this one does not perform the save.\r\n // As a consequence, it returns 1 for saved, 0 for continue without save, and -1 for no save\r\n this.warningDialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n data: {\r\n errors: component.errors\r\n },\r\n disableClose: true\r\n });\r\n this.warningDialog.componentInstance.dialogBox = this.warningDialog;\r\n return this.warningDialog.componentInstance.saveChoice.pipe(map(result => {\r\n switch (result) {\r\n case 1:\r\n if (component.errors.length > 0) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n case 0:\r\n return 0;\r\n case -1:\r\n return -1;\r\n }\r\n }));\r\n }\r\n\r\n showWarningWithoutSaveRoute(component: HasErrors, currentRoute?: ActivatedRouteSnapshot) {\r\n // POST: shows a warning dialog. If the user clicks OK, returns true. Else, returns false.\r\n this.warningDialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n data: {\r\n errors: component.errors\r\n },\r\n disableClose: true\r\n });\r\n this.warningDialog.componentInstance.dialogBox = this.warningDialog;\r\n return this.warningDialog.componentInstance.saveChoice.pipe(map(result => {\r\n switch (result) {\r\n case 1:\r\n if (component.errors.length == 0) {\r\n component.save();\r\n }\r\n return this.urlTreeWorkaround(currentRoute);\r\n case 0:\r\n if (component['continuedWithoutSave'] != null && typeof component['continuedWithoutSave'] == 'function') {\r\n component.continuedWithoutSave();\r\n }\r\n return true;\r\n case -1:\r\n return this.urlTreeWorkaround(currentRoute);\r\n }\r\n }));\r\n }\r\n}\r\n","import { FamilyRegistrationService } from './../../../shared-modules/family-registration/family-registration.service';\r\nimport { UserService } from './../../user/user.service';\r\nimport {Injectable} from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, CanActivate, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class NewFamilyRegistrationGuard implements CanActivate {\r\n\r\n // Instance Properties\r\n\r\n // Class Functions\r\n constructor(\r\n private userService: UserService,\r\n private familyRegistrationService: FamilyRegistrationService,\r\n private router: Router\r\n ) { }\r\n\r\n // Methods\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {\r\n // PRE: the user tries to navigate to a route guarded by this\r\n // POST: checks that the new family registration is true\r\n if (this.userService.currentUser && this.userService.currentUser.NewFamilyRegistration) {\r\n return true;\r\n } else if (this.familyRegistrationService.householdParent) {\r\n return true;\r\n } else {\r\n this.router.navigateByUrl('/login');\r\n return false;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, EventEmitter } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'unsaved-changes-message',\r\n templateUrl: './unsaved-changes-message.component.html',\r\n styleUrls: ['./unsaved-changes-message.component.css']\r\n})\r\nexport class UnsavedChangesMessageComponent implements OnInit, OnDestroy {\r\n\r\n //Properties\r\n dialogBox: MatDialogRef; //The dialog this is stored in\r\n stayEvent: EventEmitter = new EventEmitter ();\r\n\r\n //Class Functions\r\n constructor() { }\r\n\r\n //Event Functions\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnDestroy () {\r\n this.stayEvent.emit(false);\r\n }\r\n\r\n //Methods\r\n leavePage (stay: boolean) {\r\n //PRE: a boolean indicating whether or not the user wants to stay\r\n //POST: stays if true, routes if false\r\n this.stayEvent.emit(stay);\r\n this.dialogBox.close();\r\n }\r\n}\r\n","\r\n

WARNING

\r\n
There are unsaved changes on this page.
\r\n
Click OK to continue and lose the unsaved changes.
\r\n
Click Cancel to return to the page.
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","\r\nimport {map} from 'rxjs/operators';\r\nimport {Component, Injectable} from '@angular/core';\r\nimport {CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { ComponentCanDeactivate } from './ComponentCanDeactivate';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { UnsavedChangesMessageComponent } from './unsaved-changes-message/unsaved-changes-message.component';\r\n\r\nimport {SharedService} from '../../shared.service';\r\n\r\n/**\r\n * This guard is meant to show an unsaved changes warning when the user navigates away from a page.\r\n *\r\n * To use this guard, do the following:\r\n * 1. Implement ComponentCanDeactivate on your component\r\n * 2. Register this guard in the CanDeactivate parameter of your route.\r\n *\r\n * This guard will call the canDeactivate function of your component.\r\n * If the function returns, true, it will simply continue with the route.\r\n * If the function returns false, it will show an unsaved changes warning.\r\n *\r\n * NOTE: THIS IS DEPRECIATED. USE THE CHECK FOR ERRORS GUARD.\r\n */\r\n@Injectable()\r\nexport class UnsavedChangesGuard implements CanDeactivate {\r\n\r\n // Instance Properties\r\n warningDialog: MatDialogRef;\r\n currentComponent: Component;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialog: MatDialog,\r\n private sharedService: SharedService\r\n ) { }\r\n\r\n // Methods\r\n checkForDeactivation (): Observable | Promise | boolean {\r\n\t\t// POST: checks the router state tree for itself and, if it's there, performs canDeactivate\r\n\t\tif (this.sharedService.currentComponent && this.sharedService.currentComponent.canDeactivate != undefined) {\r\n\t\t return this.canDeactivate(this.sharedService.currentComponent);\r\n } else {\r\n\t\t return true;\r\n }\r\n\t}\r\n\r\n\tcanDeactivate (component: ComponentCanDeactivate, currentRoute?: ActivatedRouteSnapshot, currentState?: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable | Promise | boolean {\r\n // PRE: a component that implements ComponentCanDeactivate\r\n // POST: If the component allows, transitions. If not, shows a warning dialog.\r\n return component.canDeactivate () ? true : this.showWarning ();\r\n }\r\n\r\n showWarning () {\r\n // POST: shows a warning dialog. If the user clicks OK, returns true. Else, returns false.\r\n this.warningDialog = this.dialog.open(UnsavedChangesMessageComponent, {\r\n disableClose: true\r\n });\r\n this.warningDialog.componentInstance.dialogBox = this.warningDialog;\r\n return this.warningDialog.componentInstance.stayEvent.pipe(map(result => {\r\n return result;\r\n }));\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n OnInit,\r\n OnDestroy,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { PDFExportComponent } from '@progress/kendo-angular-pdf-export';\r\nimport { Subscription } from 'rxjs';\r\nimport { SharedService } from '../../shared.service';\r\nimport { SpinnerService } from '../../spinner/spinner.service';\r\nimport { System } from '../../System';\r\nimport { Group, exportPDF } from '@progress/kendo-drawing';\r\nimport { PDFDocument } from 'pdf-lib';\r\n\r\n/**\r\n * This component encapsulates the Kendo PDFExport.\r\n *\r\n * @input keepTogether: An optional CSS selector that specifies the elements which should not be split across the pages .\r\n * @input paperSize: Specifies the paper size of the PDF document (see example). Defaults to \"Letter\".\r\n * @input margin: Specifies the margins of the page.. Defaults to 1cm.\r\n * @input scale: A scale factor. The text size on the screen might be too big for printing. To scale down the output in PDF, use this option.\r\n * @input landscape: A flag that indicates if the page will be in a landscape orientation. Defaults to true.\r\n * @input fileName: Sets the name of the file that will be created. Defaults to 'pdfExport.pdf'.\r\n *\r\n * NOTES:\r\n *\r\n */\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'tyl-kendo-pdf-export',\r\n templateUrl: './tyl-kendo-pdf-export.component.html', \r\n // View Encapsulation must be disabled in order to style the exported content\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\r\n './tyl-kendo-pdf-export.component.css'\r\n ]\r\n})\r\nexport class TylKendoPdfExportComponent implements OnInit, OnDestroy {\r\n\r\n // Interface Properties for KendoPdfExport\r\n @Input() keepTogether: string;\r\n @Input() paperSize: string = 'Letter';\r\n @Input() margin: string = '1cm';\r\n @Input() scale: number = 0.50;\r\n @Input() landscape: boolean = true;\r\n\r\n // Custom Interface Properties\r\n @Input() fileName: string = 'pdfExport.pdf';\r\n @Input() pageWidth: number = 0;\r\n @Input() autoScale: boolean = false;\r\n\r\n // Local Properites\r\n @ViewChild('pdfPrint', { static: true }) pdfPrintRef: PDFExportComponent;\r\n //@ViewChild('sizeRef', { read: ElementRef }) sizeRef: ElementRef;\r\n pageToPdfTriggerSubscription: Subscription;\r\n\r\n // Class Functions\r\n constructor(\r\n private sharedService: SharedService,\r\n private spinnerService: SpinnerService\r\n ) { } \r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.pageToPdfTriggerSubscription = this.sharedService.observablePageToPdfTrigger$.subscribe(() => {\r\n this.exportPageToPDF();\r\n });\r\n }\r\n\r\n async exportPageToPDF() { \r\n this.pdfPrintRef.paperSize = this.paperSize;\r\n this.pdfPrintRef.margin = this.margin;\r\n if(!this.autoScale) {\r\n this.pdfPrintRef.scale = this.scale;\r\n }\r\n else {\r\n if(this.pageWidth < 2000) {\r\n this.pdfPrintRef.scale = 0.5;\r\n }\r\n else if(this.pageWidth < 3000) {\r\n this.pdfPrintRef.scale = 0.25;\r\n }\r\n else {\r\n this.pdfPrintRef.scale = 0.20;\r\n }\r\n }\r\n this.pdfPrintRef.landscape = this.landscape;\r\n this.spinnerService.showSpinner = true; \r\n\r\n let pdfString: string = ''; \r\n\r\n await this.pdfPrintRef.export().then(async (group: Group) => { \r\n await exportPDF(group).then((dataURI) => { \r\n pdfString = dataURI;\r\n })\r\n });\r\n\r\n const pdfDoc = await PDFDocument.load(pdfString);\r\n\r\n const pdfBase64 = await pdfDoc.saveAsBase64();\r\n \r\n System.viewFileFromBase(pdfBase64, 'pdf', this.fileName); \r\n\r\n setTimeout(() => {\r\n this.spinnerService.showSpinner = false;\r\n }, 0);\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // NOTE: this is implemented for @AutoUnsubscribe\r\n }\r\n \r\n // Methods\r\n\r\n}\r\n","\r\n\r\n \r\n\r\n ","export class Lookup {\r\n\t$id: number;\r\n\tCode: string;\r\n\tCodeDescription: string;\r\n\tDefault: boolean;\r\n\tId: string;\r\n\tDF_ID: number;\r\n\tSequence: number;\r\n\tStateIdentifier: string;\r\n\tState: string;\r\n\tUseInReferral: boolean;\r\n\tValidActionCodes: string;\r\n\tCodeDesc: string;\r\n\tSchoolId: number;\r\n\tLastRunByDate: Date;\r\n\tLastRunByUser: string;\r\n\tSubCodeId: number;\r\n\tIncidentCodeId: number;\r\n\tIncidentTypeId: number;\r\n\tDelStatus: boolean;\r\n\tPermissionCategory: string;\r\n\r\n\t// Non=DTO properties\r\n\tIsCritical: boolean;\r\n\tIsSelected: boolean;\r\n}\r\n\r\nexport class SiteLookup {\r\n\tId: number;\r\n\tName: string;\r\n\tCode: string;\r\n}\r\n\r\nexport class DistrictLookup {\r\n\tId: number;\r\n\tName: string;\r\n\tExternalDistrict: boolean;\r\n}\r\n\r\nexport class HealthLookup {\r\n\tId: number;\r\n\tCode: string;\r\n\tCodeDescription: string;\r\n\tDefault: boolean;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { AttendanceCode } from '../../classroom360/attendance/models/attendance-code.model';\r\nimport { SharedService } from '../shared.service';\r\nimport { YearService } from '../year/year.service';\r\nimport { System } from './../System';\r\nimport { CityStateZipCodeLoookup } from './city-state-zip-code-lookup.model';\r\nimport { GradeLevelLookup } from './grade-level-lookup.model';\r\nimport { StudentRegistrationType } from './lookup.enums';\r\nimport { DistrictLookup, Lookup, SiteLookup } from './lookup.model';\r\n/**\r\n * This service can be used to obtain a variety of lookups.\r\n * The lookup model is the basis for these lookups.\r\n * If you need to get lookups, try to add them here instead of in another service.\r\n */\r\n@Injectable()\r\nexport class LookupService {\r\n\t/**\r\n\t * Note: A lot of these classes check that the default year is set\r\n\t * This is because these lookups are also used in family registration\r\n\t * Those are the only two known uses cases, though, so a parameter was deemed unnecessary\r\n\t */\r\n\r\n\t// Properties\r\n\tgradeLevelLookups: GradeLevelLookup[] = [];\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate yearService: YearService,\r\n\t\tprivate sharedService: SharedService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\r\n\t// Methods\r\n\tgetRelationshipLookup(ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: obtains the relationships for the current AYIdentifier (parent?)\r\n\t\tconst queryString = '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetRelationshipLookup' + queryString);\r\n\t}\r\n\r\n\tgetLanguageLookup(): Observable {\r\n\t\t// POST: obtains the list of all languages supported or to be supported\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetLanguageLookup');\r\n\t}\r\n\r\n\tgetMaritalStatusLookup(): Observable {\r\n\t\t// POST: obtains the list of all martial statues supported or to be supported\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetMaritalStatusLookup');\r\n\t}\r\n\r\n\tgetStreetDirectionLookup(ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: obtains the list of street directions supported or to be supported\r\n\t\tconst queryString = '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStreetDirectionLookup' + queryString);\r\n\t}\r\n\r\n\tgetStreetTypeLookup(ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: obtains the list of street types supported or to be supported\r\n\t\tconst queryString = '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStreetTypeLookup' + queryString);\r\n\t}\r\n\r\n\tgetCountryStateLookup(): Observable {\r\n\t\t// POST: obtains the list of states for the user's country\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetCountryStateLookup');\r\n\t}\r\n\r\n\tgetCountryLookup(ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: obtains the list of supported countries\r\n\t\tconst queryString = '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetCountryLookup' + queryString);\r\n\t}\r\n\r\n\tgetEthnicityLookup(): Observable {\r\n\t\t// POST: obtains the list of ethnicities\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetEthnicityTypeLookup');\r\n\t}\r\n\r\n\tgetGenderLookup(): Observable {\r\n\t\t// POST: obtains the list of genders\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetGenderTypeLookup');\r\n\t}\r\n\r\n\tgetRaceLookup(addBlankItem: boolean = false): Observable {\r\n\t\t// POST: obtains the list of races\r\n\t\tconst queryString = '?addBlankItem=' + addBlankItem;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetRaceTypeLookup' + queryString);\r\n\t}\r\n\r\n\tgetSuffixLookup(ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: obtains the list of suffixes (for names)\r\n\t\tconst queryString = '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetSuffixLookup' + queryString);\r\n\t}\r\n\r\n\tgetLivesWithLookup(): Observable {\r\n\t\t// POST: obtains the list of lives with (???)\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetLivesWithLookup');\r\n\t}\r\n\r\n\tgetGradeLevelLookup(QRFamily?: boolean, yearId = this.yearService.defaultYear.Id, ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// PRE: A QRFamiy number\r\n\t\t// POSt: obtains the grade levels that are open for OR in the selected year\r\n\t\tconst queryString = '?yearId=' + yearId +\r\n\t\t\t'&QRFamily=' + (QRFamily ? QRFamily : false) +\t// You need this in case of undefined\r\n\t\t\t'&ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetORGradeLevelLookup' + queryString);\r\n\t}\r\n\r\n\tgetMedicalConditionLookup(ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: obtains the list of medical conditions\r\n\t\tconst queryString = '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetMedicalConditionLookup' + queryString);\r\n\t}\r\n\r\n\tgetDataDefCode(datadefType: number): Observable {\r\n\t\tconst queryString = '?datadefType=' + datadefType;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetDataDefCodes' + queryString);\r\n\t}\r\n\r\n\tgetCityStateZipCodeLookup(): Observable {\r\n\t\t// POST: obtain the list of cities and states\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetCityStateZipCodeLookup');\r\n\t}\r\n\r\n\tgetAttedanceCodeLookup(isTeacher = false): Observable {\r\n\t\t// PRE: isTeacher is true if the caller is a teacher\r\n\t\t// POST: obtains a list of attendance codes\r\n\t\treturn this.sharedService.getAttendanceCodeLookup(false, this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.Id);\r\n\t}\r\n\r\n\tgetDisciplineReferralFunctionalMotivationLookup(): Observable {\r\n\t\t// POST: obtains the functional motivation lookups\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetDisciplineReferralFunctionalMotivationLookup');\r\n\t}\r\n\r\n\tgetDisciplineReferralContextLookup(\r\n\t\tyearId = this.yearService.defaultYear.Id,\r\n\t\tschoolId = this.yearService.defaultYear.SchoolID\r\n\t): Observable {\r\n\t\t// POST: obtains a list of contexts for discipline referral\r\n\t\tconst queryString = '?type=context' +\r\n\t\t\t'&yearId=' + yearId +\r\n\t\t\t'&schoolId=' + schoolId;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralLookups' + queryString);\r\n\t}\r\n\r\n\tgetDisciplineReferralReporterLookup(\r\n\t\tyearId = this.yearService.defaultYear.Id,\r\n\t\tschoolId = this.yearService.defaultYear.SchoolID\r\n\t): Observable {\r\n\t\t// POST: obtains a list of reporters for discipline referral\r\n\t\tconst queryString = '?type=reportedBy' +\r\n\t\t\t'&yearId=' + yearId +\r\n\t\t\t'&schoolId=' + schoolId;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralLookups' + queryString);\r\n\t}\r\n\r\n\tgetDisciplineReferralSchoolLookup(\r\n\t\tyearId = this.yearService.defaultYear.Id,\r\n\t\tschoolId = this.yearService.defaultYear.SchoolID\r\n\t): Observable {\r\n\t\t// POST: obtains a list of schools for discipline referral\r\n\t\tconst queryString = '?type=Schools' +\r\n\t\t\t'&yearId=' + yearId +\r\n\t\t\t'&schoolId=' + schoolId;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralLookups' + queryString);\r\n\t}\r\n\r\n\tgetDisciplineReferralPlaceLookup(\r\n\t\tschoolId = this.yearService.defaultYear.SchoolID\r\n\t): Observable {\r\n\t\t// POST: obtains a list of places for discipline referral\r\n\t\tconst queryString = '?schoolId=' + schoolId;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralPlacesLookup' + queryString);\r\n\t}\r\n\r\n\tgetDisciplineReferralIncidentCodeLookup(\r\n\t\tyearId = this.yearService.defaultYear.Id, profileArea: string = 'Discipline'\r\n\t): Observable {\r\n\t\t// POST: obtains a list of places for discipline referral\r\n\t\tlet queryString = '?yearId=' + yearId;\r\n\t\tqueryString += '&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n\t\tqueryString += '&profileArea=' + profileArea;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralIncidentLookup' + queryString);\r\n\t}\r\n\r\n\tgetCommunicationLogTypesLookup(ayIdentifier: string): Observable {\r\n\t\tlet paramString = '';\r\n\t\tparamString += '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetCommunicationLogTypesLookup' + paramString);\r\n\t}\r\n\r\n\tgetCommunicationLogPersonCodesLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetCommunicationLogPersonCodesLookup');\r\n\t}\r\n\r\n\tgetCommunicationLogResultLookup(ayIdentifier: string): Observable {\r\n\t\tlet paramString = '';\r\n\t\tparamString += '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetCommunicationLogResultLookup' + paramString);\r\n\t}\r\n\r\n\tgetORFormDocumentType(\r\n\t\tschoolId = this.yearService.defaultYear.SchoolID\r\n\t) {\r\n\t\tlet paramString = '';\r\n\t\tparamString += '?schoolId=' + schoolId;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetORFormDocumentType' + paramString);\r\n\t}\r\n\tgetincidentCodeDetailLookup(): Observable {\r\n\t\t// POST: obtains a list of Functional Motivation for discipline event\r\n\t\tconst queryString = '?type=incidentCodeDetail' +\r\n\t\t\t'&yearId=' + this.yearService.defaultYear.Id +\r\n\t\t\t'&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralLookups' + queryString);\r\n\t}\r\n\tgetAdditionFieldsLookup(): Observable {\r\n\t\t// POST: obtains a list of Functional Motivation for discipline event\r\n\t\tconst queryString = '?type=incidentStateReporting' +\r\n\t\t\t'&yearId=' + this.yearService.defaultYear.Id +\r\n\t\t\t'&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralLookups' + queryString);\r\n\t}\r\n\tgetIncidentWeaponLookup(): Observable {\r\n\t\t// POST: obtains a list of Functional Motivation for discipline event\r\n\t\tconst queryString = '?type=weaponType' +\r\n\t\t\t'&yearId=' + this.yearService.defaultYear.Id +\r\n\t\t\t'&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDisciplineReferralLookups' + queryString);\r\n\t}\r\n\r\n\tgetStudentRegCodes(regType: StudentRegistrationType, ayIdentifier: string): Observable {\r\n\t\t// POST: obtains the relationships for the current AYIdentifier (parent?)\r\n\t\tconst queryString = '?regType=' + regType + '&ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentRegCodes' + queryString);\r\n\t}\r\n\r\n\tgetCreditCodes(ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: obtains the relationships for the current AYIdentifier (parent?)\r\n\t\tconst queryString = '?ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetCreditCodes' + queryString);\r\n\t}\r\n\r\n\tgetDataQueryFieldLookupReadByFieldId(fieldID: number, categoryID: number): Observable {\r\n\t\t// PRE: a data query field's ID and category's ID\r\n\t\t// POST: obtains the field options by the field ID\r\n\t\tconst queryString = '?dataQueryFieldId=' + fieldID +\r\n\t\t\t'&dataQueryCategoryId=' + categoryID;\r\n\t\treturn this.http.get(System.apiURL.Classroom + 'GetDataQueryFieldLookupReadByFieldId' + queryString);\r\n\t}\r\n\r\n\tgetAllGradeLevels(QRFamily?: boolean, yearId = this.yearService.defaultYear.Id, ayIdentifier = this.yearService.defaultYear.AYIdentifier): Observable {\r\n\t\t// POST: V10 obtains all grade levels from sysGradeLevel\r\n\t\tconst queryString = '?yearId=' + yearId +\r\n\t\t\t'&QRFamily=' + (QRFamily ? QRFamily : false) +\t// You need this in case of undefined\r\n\t\t\t'&ayIdentifier=' + ayIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetAllGradeLevels' + queryString);\r\n\t}\r\n\r\n\tgetStudentListScopes(): Observable {\r\n\t\t// POST: obtains all the student list scopes\r\n\t\tconst queryString = '?regType=' + 1582 +\r\n\t\t\t'&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentRegCodes' + queryString);\r\n\t}\r\n\r\n\tgetStudentListTypes(): Observable {\r\n\t\t// POST: obtains all the student list scopes\r\n\t\tconst queryString = '?regType=' + 1581 +\r\n\t\t\t'&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentRegCodes' + queryString);\r\n\t}\r\n\r\n\tgetCommunicationLogReasons(): Observable {\r\n\t\t// POST: obtains all the student list scopes\r\n\t\tconst queryString = '?regType=' + 1600 +\r\n\t\t\t'&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentRegCodes' + queryString);\r\n\t}\r\n\r\n\tgetCommunicationLogPreDefinedConfidentialNote(): Observable {\r\n\t\t// POST: obtains all the student list scopes\r\n\t\tconst queryString = '?regType=' + 1611 +\r\n\t\t\t'&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentRegCodes' + queryString);\r\n\t}\r\n\r\n\tgetCommunicationLogPreDefinedComment(): Observable {\r\n\t\t// POST: obtains all the student list scopes\r\n\t\tconst queryString = '?regType=' + 1610 +\r\n\t\t\t'&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentRegCodes' + queryString);\r\n\t}\r\n\r\n\tgetStaffRolesLookup(): Observable {\r\n\t\t// POST: obtains all staff roles\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetRolesLookup');\r\n\t}\r\n\r\n\tgetStudentPortfolioCategoryLookup(): Observable {\r\n\t\t// POST: obtains all student portfolio categories\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentPortfolioCategoryLookup');\r\n\t}\r\n\r\n\tgetDocumentTypeLookup(): Observable {\r\n\t\t// POST: obtains all student digital content document types\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetDocumentTypeLookup');\r\n\t}\r\n\r\n\tgetRolesForEForms(): Observable {\r\n\t\t// POST: gets non-system roles as well as e-Form specific system roles\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetRolesForEForms');\r\n\t}\r\n\r\n\tgetSubjectTermTypeLookup(): Observable {\r\n\t\t// POST: obtains all student digital content document types\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetSubjectTermTypeLookup');\r\n\t}\r\n\r\n\tgetIncidentSubCodes(incidentCodeId: number): Observable {\r\n\t\tlet queryString = '';\r\n\t\tqueryString += '?lngIncidentCodeId=' + incidentCodeId;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetIncidentSubCodesLookup' + queryString);\r\n\t}\r\n\r\n\tgetStateReportingCodes(type: number, stateReportingCodesId: number, stateCode: string, useSequence: boolean): Observable {\r\n\t\tlet queryString = '';\r\n\t\tqueryString += '?type=' + type +\r\n\t\t\t'&stateReportingCodesId=' + stateReportingCodesId +\r\n\t\t\t'&stateCode=' + stateCode +\r\n\t\t\t'&useSequence=' + useSequence;\r\n\t\treturn this.http.get(System.apiURL.Admin + 'GetStateReportingCodes' + queryString);\r\n\t}\r\n\r\n\tgetGradeLevelsLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetGradeLevelsLookup');\r\n\t}\r\n\r\n\tgetDepartmentCodes(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Admin + 'GetDistrictDepartmentsCodes');\r\n\t}\r\n\r\n\tgetPhysicianTypeList(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + `GetPhysicianTypeLookUp`);\r\n\t}\r\n\r\n\tgetVaccineTypesLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetVaccineTypesLookup');\r\n\t}\r\n\r\n\tgetExemptCodeLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetExemptCodeLookup');\r\n\t}\r\n\r\n\tgetTestMastersLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetTestMastersLookup');\r\n\t}\r\n\r\n\tgetDistrictLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Counselor + 'GetDistrictLookup');\r\n\t}\r\n\r\n\tgetSiteLookup(districtId: number): Observable {\r\n\t\treturn this.http.get(System.apiURL.Counselor + `GetSiteLookup?districtId=${districtId}`);\r\n\t}\r\n\r\n\tgetGradeLevelsReadBySchoolYear(schoolId: number, yearId: number): Observable {\r\n\t\tlet queryString = '';\r\n\t\tqueryString += '?schoolId=' + schoolId +\r\n\t\t\t'&yearId=' + yearId;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetGradeLevelsReadBySchoolYear' + queryString);\r\n\t}\r\n\r\n\tgetPermissionGroupLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetPermissionGroupLookup');\r\n\t}\r\n\t//\r\n\tgetTerminationReasionLookup(state: string, yearId: number): Observable {\r\n\t\tlet queryString = '';\r\n\t\tqueryString += '?state=' + state +\r\n\t\t\t'&yearId=' + yearId;\r\n\t\treturn this.http.get(System.apiURL.Management + 'GetTerminationReasonLookUp' + queryString);\r\n\t}\r\n\r\n\tgetWithdrawnCodesReadLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Counselor + `GetWithdrawnCodesReadLookup`);\r\n\t}\r\n\r\n\tgetTeacherSpecialtyCodesLookUp(yearId: number): Observable {\r\n\t\tlet queryString = '';\r\n\t\tqueryString += '?yearId=' + yearId;\r\n\t\treturn this.http.get(System.apiURL.Management + 'GetTeacherSpecialtyCodesLookUp' + queryString);\r\n\t}\r\n\r\n\tgetClinicVisitCodesLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetClinicVisitCodesLookup`);\r\n\t}\r\n\r\n\tgetMedicalCodeClinicVisitNoShowLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetMedicalCodeClinicVisitNoShowLookup`);\r\n\t}\r\n\r\n\tgetDeliveryResultCodeLookUp(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetDeliveryResultCodesLookup`);\r\n\t}\r\n\r\n\tgetCourseGradingPurposeLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Counselor + `GetCourseGradingPurposeLookup`);\r\n\t}\r\n\r\n\tgetTermGradeTypesLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Counselor + `GetTermGradeTypesLookup`);\r\n\t}\r\n\r\n\tgetMedicationCodesLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetMedicationCodesLookup`);\r\n\t}\r\n\r\n\tgetMedicationFrequencyLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetMedicationFrequencyLookup`);\r\n\t}\r\n\r\n\tgetMedicationRoutesLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetMedicationRoutesLookup`);\r\n\t}\r\n\r\n\tgetPractionerLookUp(studentId: number): Observable {\r\n\t\tlet queryString = '';\r\n\t\tqueryString += '?studentId=' + studentId;\r\n\t\treturn this.http.get(System.apiURL.Health + `GetPractionerLookup` + queryString);\r\n\t}\r\n\r\n\tgetMedicalClinicLogSentStudentLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetMedicalClinicLogSentStudentLookup`);\r\n\t}\r\n\r\n\tgetMedicalClinicLogDOHSurveillanceLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetMedicalClinicLogDOHSurveillanceLookup`);\r\n\t}\r\n\r\n\tgetClinicLogVisitCodesLookup(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Health + `GetClinicLogVisitCodesLookup`);\r\n\t}\r\n\r\n\tgetMealApplicationConfidentiallyWaiverLookups(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + `GetMealApplicationConfidentiallyWaiverLookups`);\r\n\t}\r\n}\r\n","

WARNING

\r\n\r\n
The following students have been unselected from some classes, but not ALL\r\n classes:\r\n
\r\n
\r\n
{{student}}
\r\n
\r\n
If your intent was to exclude these students from receiving this email,\r\n Go Back to the Student View tab and unselect the students. (That will\r\n unselect them from all classes.)\r\n
\r\n
\r\n\r\n \r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-unselected-warning',\r\n templateUrl: './unselected-warning.component.html'\r\n})\r\nexport class UnselectedWarningComponent implements OnInit {\r\n deSelectedStudents: string[] = [];\r\n retValUnselectWarning: string;\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.deSelectedStudents = this.data.object;\r\n }\r\n backClick() {\r\n this.dialogRef.close();\r\n }\r\n continueClick() {\r\n this.retValUnselectWarning = 'Continue was clicked';\r\n this.dialogRef.close(this.retValUnselectWarning);\r\n }\r\n}\r\n","

WARNING - No emails will be sent for {{studentsWithoutRecipients.length}} students

\r\n\r\n
For these students, no email addresses were found for the selected recipient(s).
\r\n
0\">\r\n \r\n \r\n \r\n Student #\r\n \r\n {{student.StudentNumber}}\r\n \r\n \r\n \r\n Name\r\n \r\n {{student.Name}}\r\n \r\n \r\n \r\n Grade Level\r\n \r\n {{student.GradeLevel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n","import { Component, OnInit, Inject, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MassEmailStudent } from '../mass-email.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\n\r\n@Component({\r\n selector: 'app-no-email-warning',\r\n templateUrl: './no-email-warning.component.html'\r\n\r\n})\r\nexport class NoEmailWarningComponent implements OnInit, AfterViewInit {\r\n studentsWithoutRecipients: MassEmailStudent[] = [];\r\n retValNoEmailWarning: string;\r\n noEmailWarningDataSources = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort1: MatSort;\r\n columnsToDisplay = ['StudentNumber', 'Name', 'GradeLevel'];\r\n constructor(\r\n public noEmailWarningDialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n this.studentsWithoutRecipients = this.data;\r\n }\r\n\r\n ngOnInit() {\r\n this.loadTableData();\r\n }\r\n ngAfterViewInit() {\r\n }\r\n\r\n loadTableData() {\r\n this.noEmailWarningDataSources.data = this.studentsWithoutRecipients;\r\n setTimeout(() => this.noEmailWarningDataSources.sort = this.sort1);\r\n }\r\n getAriaRow(row: MassEmailStudent): string {\r\n const colList: string[] = ['StudentNumber', 'Name', 'GradeLevel'];\r\n\r\n const dataList: string[] = [row.StudentNumber,\r\n row.Name,\r\n row.GradeLevel];\r\n return '';\r\n\r\n }\r\n\r\n backClick() {\r\n this.noEmailWarningDialogRef.close();\r\n }\r\n\r\n nextClick() {\r\n this.retValNoEmailWarning = 'Continue was clicked';\r\n this.noEmailWarningDialogRef.close(this.retValNoEmailWarning);\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Student #\r\n \r\n {{CVDetail.StudentNumber}}\r\n \r\n \r\n \r\n Name\r\n \r\n {{CVDetail.Name}}\r\n \r\n \r\n \r\n Grade Level\r\n \r\n {{CVDetail.GradeLevel}}\r\n \r\n \r\n \r\n Email Address\r\n \r\n {{CVDetail.Email}}\r\n \r\n \r\n \r\n \r\n \r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\n//import { ClassroomSummary } from '../../../classroom-summary/models/classroom-summary.model';\r\nimport { MassEmailStudent, MassEmail } from '../../mass-email.model';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../../shared-modules/login/LoginSetting.model';\r\nimport { ClassroomSummary } from '../../../../classroom360/classroom-summary/models/classroom-summary.model';\r\n\r\n\r\n@Component({\r\n selector: 'app-by-class-row-student',\r\n templateUrl: './by-class-row-student.component.html'\r\n})\r\nexport class ByClassRowStudentComponent implements OnInit {\r\n // ----------Angular Material------------------------------------\r\n massEmail: MassEmail;\r\n angularMatData = new TylerMatTableDataSource();\r\n loginSettings: LoginSettings;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplayInDetailClassView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email'];\r\n @Input() classRow: ClassroomSummary;\r\n selectedStudents: MassEmailStudent[] = [];\r\n\r\n\r\n constructor(private loginService: LoginService) { }\r\n\r\n ngOnInit() {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n this.angularMatData.data = this.classRow.Students;\r\n this.selectedStudents = this.classRow.Students;\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n classStudentsCheckAllClick(course) {\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n if (this.loginSettings.V10) {\r\n this.selectedStudents[i].SelectedClasses[course.SSEC_ID] = course.classStudentsCheckAll;\r\n }\r\n else {\r\n this.selectedStudents[i].SelectedClasses[course.Id] = course.classStudentsCheckAll;\r\n }\r\n if (this.selectedStudents[i].SelectedClasses.find(c => c == true) == null) {\r\n this.selectedStudents[i].IsSelected = false;\r\n }\r\n else {\r\n this.selectedStudents[i].IsSelected = true;\r\n }\r\n }\r\n\r\n }\r\n\r\n classStudentClick(student: MassEmailStudent, course: ClassroomSummary) {\r\n course.classStudentsCheckAll = true;\r\n if (student.SelectedClasses.find(c => c == true) == null) {\r\n student.IsSelected = false;\r\n }\r\n else {\r\n student.IsSelected = true;\r\n }\r\n if (this.loginSettings.V10) {\r\n if (student.SelectedClasses[course.SSEC_ID] != true) {\r\n course.classStudentsCheckAll = false;\r\n }\r\n else {\r\n if (this.selectedStudents.find(studentObj => studentObj.SubjectSections.find(c => c == course.SSEC_ID) != null && studentObj.SelectedClasses[course.Id] != true) != null) {\r\n course.classStudentsCheckAll = false;\r\n }\r\n\r\n }\r\n }\r\n else {\r\n if (student.SelectedClasses[course.Id] != true) {\r\n course.classStudentsCheckAll = false;\r\n }\r\n else {\r\n if (this.selectedStudents.find(studentObj => studentObj.SubjectSections.find(c => c == course.Id) != null && studentObj.SelectedClasses[course.Id] != true) != null) {\r\n course.classStudentsCheckAll = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n getAriaDetailRow(row) {\r\n\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Student #\r\n \r\n {{STDetail.StudentNumber}}\r\n \r\n \r\n \r\n Name\r\n \r\n {{STDetail.Name}}\r\n \r\n \r\n \r\n Grade Level\r\n \r\n {{STDetail.GradeLevel}}\r\n \r\n \r\n \r\n Email Address\r\n \r\n {{STDetail.Email}}\r\n \r\n \r\n \r\n \r\n \r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { StudentTeams } from '../../../../classroom360/student-teams/student-teams.model';\r\nimport { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../../shared-modules/login/LoginSetting.model';\r\nimport { MassEmail, MassEmailStudent } from '../../mass-email.model';\r\n\r\n@Component({\r\n selector: 'app-by-team-row-student',\r\n templateUrl: './by-team-row-student.component.html',\r\n styleUrls: ['./by-team-row-student.component.css']\r\n})\r\nexport class ByTeamRowStudentComponent implements OnInit {\r\n\r\n massEmail: MassEmail;\r\n angularMatData = new TylerMatTableDataSource();\r\n loginSettings: LoginSettings;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplayInDetailTeamView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email'];\r\n @Input() teamRow: StudentTeams;\r\n selectedStudents: MassEmailStudent[] = [];\r\n\r\n constructor(\r\n private loginService: LoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n this.angularMatData.data = this.teamRow.Students;\r\n this.selectedStudents = this.teamRow.Students;\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n teamStudentsCheckAllClick(team) {\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n this.selectedStudents[i].SelectedTeams[team.Id] = team.teamStudentsCheckAll;\r\n if (this.selectedStudents[i].SelectedTeams.find(c => c == true) == null) {\r\n this.selectedStudents[i].IsSelected = false;\r\n }\r\n else {\r\n this.selectedStudents[i].IsSelected = true;\r\n }\r\n }\r\n }\r\n\r\n teamStudentClick(student: MassEmailStudent, team: StudentTeams) {\r\n team.teamStudentsCheckAll = true;\r\n if (student.SelectedTeams.find(c => c == true) == null) {\r\n student.IsSelected = false;\r\n }\r\n else {\r\n student.IsSelected = true;\r\n }\r\n if (student.SelectedTeams[team.Id] != true) {\r\n team.teamStudentsCheckAll = false;\r\n }\r\n else {\r\n if (this.selectedStudents.find(studentObj => studentObj.StudentTeams.find(c => c == team.Id) != null && studentObj.SelectedTeams[team.Id] != true) != null) {\r\n team.teamStudentsCheckAll = false;\r\n }\r\n }\r\n }\r\n\r\n getAriaDetailRow(row) {\r\n\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Student #\r\n \r\n {{SLDetail.StudentNumber}}\r\n \r\n \r\n \r\n Name\r\n \r\n {{SLDetail.Name}}\r\n \r\n \r\n \r\n Grade Level\r\n \r\n {{SLDetail.GradeLevel}}\r\n \r\n \r\n \r\n Email Address\r\n \r\n {{SLDetail.Email}}\r\n \r\n \r\n \r\n \r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { StudentList } from '../../../../classroom360/student-lists/student-list.model';\r\nimport { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../../shared-modules/login/LoginSetting.model';\r\nimport { MassEmail, MassEmailStudent } from '../../mass-email.model';\r\n\r\n@Component({\r\n selector: 'app-by-list-row-student',\r\n templateUrl: './by-list-row-student.component.html',\r\n styleUrls: ['./by-list-row-student.component.css']\r\n})\r\nexport class ByListRowStudentComponent implements OnInit {\r\n\r\n massEmail: MassEmail;\r\n angularMatData = new TylerMatTableDataSource();\r\n loginSettings: LoginSettings;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplayInDetailListView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email'];\r\n @Input() listRow: StudentList;\r\n selectedStudents: MassEmailStudent[] = [];\r\n\r\n constructor(\r\n private loginService: LoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n this.angularMatData.data = this.listRow.MassEmailStudents;\r\n this.selectedStudents = this.listRow.MassEmailStudents;\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n listStudentsCheckAllClick(list) {\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n this.selectedStudents[i].SelectedLists[list.ID] = list.listStudentsCheckAllClick;\r\n if (this.selectedStudents[i].SelectedLists.find(c => c == true) == null) {\r\n this.selectedStudents[i].IsSelected = false;\r\n }\r\n else {\r\n this.selectedStudents[i].IsSelected = true;\r\n }\r\n }\r\n }\r\n\r\n listStudentClick(student: MassEmailStudent, list: StudentList) {\r\n list.listStudentsCheckAll = true;\r\n if (student.SelectedLists.find(c => c == true) == null) {\r\n student.IsSelected = false;\r\n }\r\n else {\r\n student.IsSelected = true;\r\n }\r\n if (student.SelectedLists[list.ID] != true) {\r\n list.listStudentsCheckAll = false;\r\n }\r\n else {\r\n if (this.selectedStudents.find(studentObj => studentObj.StudentLists.find(c => c == list.ID) != null && studentObj.SelectedLists[list.ID] != true) != null) {\r\n list.listStudentsCheckAll = false;\r\n }\r\n }\r\n }\r\n\r\n getAriaDetailRow(row) {\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n//import { ClassroomSummary } from '../../classroom-summary/models/classroom-summary.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { ClassroomSummary } from '../../../classroom360/classroom-summary/models/classroom-summary.model';\r\n\r\n@Pipe({\r\n name: 'selectRecipients',\r\n pure: false\r\n})\r\nexport class SelectRecipientsPipe implements PipeTransform {\r\n selectedClasses: ClassroomSummary[] = [];\r\n\r\n constructor(private loginService: LoginService) { }\r\n\r\n transform(subject: any, filter: any[], referringPage: string): any {\r\n const obj: any[] = [];\r\n if (filter != null) {\r\n for (let i = 0; i < filter.length; i++) {\r\n switch (referringPage) {\r\n case 'My Classes':\r\n if (this.loginService.LoginSettings.V10 == true && subject.find(x => x.SSEC_ID == filter[i])) {\r\n obj.push(subject.find(x => x.SSEC_ID == filter[i]));\r\n }\r\n if (this.loginService.LoginSettings.V10 != true && subject.find(x => x.Id == filter[i])) {\r\n obj.push(subject.find(x => x.Id == filter[i]));\r\n }\r\n break;\r\n\r\n case 'Student Teams':\r\n if (subject.find(x => x.Id == filter[i])) {\r\n obj.push(subject.find(x => x.Id == filter[i]));\r\n }\r\n break;\r\n\r\n case 'Student Lists':\r\n if (subject.find(x => x.ID == filter[i])) {\r\n obj.push(subject.find(x => x.ID == filter[i]));\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","

Select Recipients

\r\n\r\n
\r\n 0\" [tabNames]=\"tabNames\"\r\n (selectionsChangeIndex)=\"tabChange($event)\">\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n More\r\n \r\n \r\n 0\" aria-label=\"Expand row for more details\"\r\n (click)=\"toggleExpanded(CV)\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Course Name\r\n \r\n {{CV.Course}}\r\n \r\n \r\n \r\n Course\r\n \r\n {{CV.SubjectCode}}\r\n \r\n \r\n \r\n Section\r\n \r\n {{CV.Section}}\r\n \r\n \r\n \r\n Term\r\n \r\n {{CV.Term}}\r\n \r\n \r\n \r\n Home Room\r\n \r\n {{CV.IsHomeRoom ? 'Y' : ''}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 ? 'expanded' : 'collapsed'\"\r\n style=\"overflow: hidden\">\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n More\r\n \r\n \r\n 0\" aria-label=\"Expand row for more details\"\r\n (click)=\"toggleExpanded(st)\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Team Name\r\n \r\n {{st.StudentTeamName}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 ? 'expanded' : 'collapsed'\"\r\n style=\"overflow: hidden\">\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n More\r\n \r\n \r\n 0\" aria-label=\"Expand row for more details\"\r\n (click)=\"toggleExpanded(sl)\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n List Name\r\n \r\n {{sl.Name}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 ? 'expanded' : 'collapsed'\"\r\n style=\"overflow: hidden\">\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Student #\r\n \r\n {{SV.StudentNumber}}\r\n \r\n \r\n \r\n Name\r\n \r\n {{SV.Name}}\r\n \r\n \r\n \r\n Grade Level\r\n \r\n {{SV.GradeLevel}}\r\n \r\n \r\n \r\n Email Address\r\n \r\n {{SV.Email}}\r\n \r\n \r\n \r\n Class\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {{class.Course}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n Team\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {{team.StudentTeamName}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n List\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {{list.Name}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n To\r\n CC\r\n BCC\r\n Do Not Include\r\n \r\n \r\n \r\n \r\n \r\n BCC\r\n Do Not Include\r\n \r\n \r\n \r\n \r\n \r\n BCC\r\n Do Not Include\r\n \r\n \r\n \r\n \r\n Send email to Class Teachers / Co-Teachers\r\n
\r\n \r\n Send email to Team Staff Members \r\n \r\n
\r\n \r\n \r\n \r\n = 1 \" [innerHtml]=\"matTriggerValue()\"\r\n [ngStyle]=\"{'font-style':(contactTypes.value?.length >= 2 && contactTypes.value?.length !=massEmail.ContactTypes.length ? 'italic' : none) }\">\r\n \r\n {{contactType.label}}\r\n \r\n \r\n \r\n \r\n \r\n Include all even if did not request mailings\r\n \r\n \r\n \r\n Send once per household\r\n \r\n
\r\n
\r\n","import {\r\n Component,\r\n OnInit,\r\n Inject,\r\n ViewChild,\r\n AfterViewInit,\r\n HostListener,\r\n ElementRef,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { Year } from '../../../shared-components/year/year.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { User } from '../../../shared-components/user/user.model';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MassEmail, Recipient, StudentContact, MassEmailStudent } from '../mass-email.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MassEmailService } from '../mass-email.service';\r\nimport { UnselectedWarningComponent } from '../unselected-warning/unselected-warning.component';\r\nimport { NoEmailWarningComponent } from '../no-email-warning/no-email-warning.component';\r\nimport { FormControl } from '@angular/forms';\r\nimport * as _ from 'lodash';\r\nimport { ClassroomSummary } from '../../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { StudentTeams } from '../../../classroom360/student-teams/student-teams.model';\r\nimport { StudentList } from '../../../classroom360/student-lists/student-list.model';\r\n\r\n@Component({\r\n selector: 'app-select-recipients',\r\n templateUrl: './select-recipients.component.html',\r\n animations: [detailExpand],\r\n})\r\nexport class SelectRecipientsComponent implements OnInit, AfterViewInit {\r\n loginSettings = new LoginSettings();\r\n defaultYear: Year;\r\n defaultYearSubscription: Subscription;\r\n currentUser: User;\r\n tabIndex = new EventEmitter();\r\n massEmail: MassEmail;\r\n tabNames: string[] = ['Class View', 'Student View', 'Additional'];\r\n selectedTab: string;\r\n columnsToDisplayInClassView = ['More', 'Select', 'Course', 'SubjectCode', 'Section', 'Term', 'HomeRoom'];\r\n columnsToDisplayInDetailClassView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email'];\r\n columnsToDisplayInStudentView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email', 'Course'];\r\n selectedClasses: ClassroomSummary[] = [];\r\n selectedStudents: MassEmailStudent[] = [];\r\n selectedClassesCheckAll: boolean;\r\n classViewDataSource = new TylerMatTableDataSource();\r\n studentViewDataSource = new TylerMatTableDataSource();\r\n errorList: ErrorList[] = [];\r\n error: ErrorList;\r\n massEmailErrorCount: number;\r\n retValSelectRecipient: any = {};\r\n retMessage: string;\r\n householdParentLabel: string;\r\n test = [];\r\n contactTypes = new FormControl();\r\n selectedContactType: string[];\r\n\r\n\r\n // Student Team\r\n columnsToDisplayInTeamView = ['More', 'Select', 'TeamName'];\r\n selectedTeamsCheckAll: boolean;\r\n teamViewDataSource = new TylerMatTableDataSource();\r\n selectedStudentTeams: StudentTeams[] = [];\r\n @ViewChild('tvSort') tvSort: MatSort;\r\n\r\n // Student List\r\n columnsToDisplayInListView = ['More', 'Select', 'ListName'];\r\n selectedListsCheckAll: boolean;\r\n listViewDataSource = new TylerMatTableDataSource();\r\n selectedStudentLists: StudentList[] = [];\r\n @ViewChild('lvSort') lvSort: MatSort;\r\n\r\n @ViewChild('svSort') svSort: MatSort;\r\n @ViewChild('cvSort') cvSort: MatSort;\r\n @ViewChild('pageHeader', { static: true }) pageHeader: ElementRef;\r\n @ViewChild('tblControls') tblControls: ElementRef;\r\n @ViewChild('tab') tab: ElementRef;\r\n @ViewChild('pageFooter', { static: true }) pageFooter: ElementRef;\r\n @ViewChild('mergeName') mergeName: ElementRef;\r\n pageHeaderHeight: number;\r\n tblControlsHeight: number;\r\n tabHeight: number;\r\n pageFooterHeight: number;\r\n gridHeight: number;\r\n unselectedWarningDialogRef: MatDialogRef;\r\n noEmailWarningDialogRef: MatDialogRef;\r\n v10: boolean;\r\n constructor(\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private massEmailService: MassEmailService,\r\n public selectRecipientDialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public massEmailObj: MassEmail,\r\n private dialog: MatDialog,\r\n private dialogBox: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.defaultYearSubscription = this.yearService.observableDefaultYearStream$.subscribe(\r\n defaultYear => {\r\n this.defaultYear = defaultYear;\r\n }\r\n );\r\n this.massEmail = this.massEmailObj;\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n if (this.massEmail.StudentIds.length > 0) {\r\n this.getStudentInfoForMassEmail();\r\n } else {\r\n this.initialize();\r\n }\r\n\r\n }\r\n\r\n initialize() {\r\n this.selectedTab = 'Class View';\r\n this.currentUser = this.userService.currentUser;\r\n this.loginSettings = new LoginSettings();\r\n this.loginSettings = this.loginService.LoginSettings;\r\n if (this.massEmail.ReferringPage == 'My Classes') {\r\n this.columnsToDisplayInStudentView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email', 'Course'];\r\n }\r\n if (this.massEmail.ReferringPage == 'Student Teams') {\r\n this.columnsToDisplayInStudentView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email', 'Team'];\r\n }\r\n if (this.massEmail.ReferringPage == 'Student Lists') {\r\n this.columnsToDisplayInStudentView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email', 'List'];\r\n }\r\n if (\r\n this.massEmail.ReferringPage == 'Attendance'\r\n || this.massEmail.ReferringPage == 'Student Search'\r\n ) {\r\n this.columnsToDisplayInStudentView = ['Select', 'StudentNumber', 'Name', 'GradeLevel', 'Email'];\r\n }\r\n this.selectedStudents = this.massEmail.Students;\r\n this.selectedClasses = this.massEmail.MassEmailClasses;\r\n this.selectedStudentTeams = this.massEmail.MassEmailStudentTeams;\r\n this.selectedStudentTeams.forEach(st => {\r\n st.IsSelectedForMassEmail = true;\r\n });\r\n\r\n this.selectedStudentLists = this.massEmail.MassEmailStudentLists;\r\n this.selectedStudentLists.forEach(lt => {\r\n lt.IsSelectedForMassEmail = true;\r\n });\r\n\r\n this.massEmail.selectedStudentsCheckAll = true;\r\n this.selectedClassesCheckAll = true;\r\n this.selectedTeamsCheckAll = true;\r\n this.selectedListsCheckAll = true;\r\n this.massEmail.SendEmailToTeachers = (this.massEmail.SendEmailToTeachers == null || this.massEmail.SendEmailToTeachers == undefined) ? false : this.massEmail.SendEmailToTeachers;\r\n this.massEmail.SendEmailToTeamStaffMembers = (this.massEmail.SendEmailToTeamStaffMembers == null || this.massEmail.SendEmailToTeamStaffMembers == undefined) ? false : this.massEmail.SendEmailToTeamStaffMembers;\r\n this.massEmail.StudentRecipientType = (this.massEmail.StudentRecipientType == null || this.massEmail.StudentRecipientType == undefined) ? '' : this.massEmail.StudentRecipientType;\r\n this.massEmail.HouseholdRecipientType = (this.massEmail.HouseholdRecipientType == null || this.massEmail.HouseholdRecipientType == undefined) ? '' : this.massEmail.HouseholdRecipientType;\r\n this.massEmail.NonHouseholdRecipientType = (this.massEmail.NonHouseholdRecipientType == null || this.massEmail.NonHouseholdRecipientType == undefined) ? '' : this.massEmail.NonHouseholdRecipientType;\r\n this.massEmail.IncludeAll = (this.massEmail.IncludeAll == null || this.massEmail.IncludeAll == undefined) ? false : this.massEmail.IncludeAll;\r\n if (this.loginSettings.MassEmailContactsGrouped == true) {\r\n this.householdParentLabel = 'Household Parents';\r\n } else {\r\n this.householdParentLabel = 'Students Contacts';\r\n }\r\n\r\n if (this.massEmail.ReferringPage == 'My Classes') {\r\n this.tabChange(0);\r\n }\r\n else if (this.massEmail.ReferringPage == 'Student Teams') {\r\n this.tabNames = ['Team View', 'Students', 'Additional'];\r\n this.tabChange(0);\r\n }\r\n else if (this.massEmail.ReferringPage == 'Student Lists') {\r\n this.tabNames = ['List View', 'Students', 'Additional'];\r\n this.tabChange(0);\r\n }\r\n else {\r\n this.tabNames = ['Students', 'Additional'];\r\n this.tabChange(0);\r\n }\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n if (!this.selectedStudents[n].IsSelected) {\r\n this.massEmail.selectedStudentsCheckAll = false;\r\n }\r\n }\r\n if (this.pageHeader != undefined) {\r\n this.pageHeaderHeight = this.pageHeader.nativeElement.offsetHeight;\r\n }\r\n if (this.tab && this.tab.nativeElement != undefined) {\r\n this.tabHeight = this.tab.nativeElement.offsetHeight;\r\n }\r\n if (this.tblControls != undefined) {\r\n this.tblControlsHeight = this.tblControls.nativeElement.offsetHeight;\r\n }\r\n if (this.pageFooter != undefined) {\r\n this.pageFooterHeight = this.pageFooter.nativeElement.offsetHeight;\r\n }\r\n this.classViewDataSource.expandAll(false);\r\n this.teamViewDataSource.expandAll(false);\r\n this.listViewDataSource.expandAll(false);\r\n this.selectedContactType = this.massEmail.SelectedContactTypes;\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeGrid();\r\n }\r\n\r\n loadDataTable() {\r\n this.classViewDataSource.data = [];\r\n this.teamViewDataSource.data = [];\r\n this.listViewDataSource.data = [];\r\n if (this.selectedTab == 'Class View') {\r\n for (let i = 0; i < this.selectedClasses.length; i++) {\r\n this.selectedClasses[i].Students = [];\r\n for (let j = 0; j < this.selectedStudents.length; j++) {\r\n for (let k = 0; k < this.selectedStudents[j].SubjectSections.length; k++) {\r\n if ((this.loginSettings.V10 && this.selectedStudents[j].SubjectSections[k] == this.selectedClasses[i].SSEC_ID) || (!this.loginSettings.V10 && this.selectedStudents[j].SubjectSections[k] == this.selectedClasses[i].Id)) {\r\n this.selectedClasses[i].Students.push(this.selectedStudents[j]);\r\n }\r\n }\r\n }\r\n }\r\n this.classViewDataSource.data = this.selectedClasses;\r\n const tempSVdataSource: MassEmailStudent[] = [];\r\n this.studentViewDataSource.data = tempSVdataSource;\r\n setTimeout(() => this.classViewDataSource.sort = this.cvSort);\r\n }\r\n else if (this.selectedTab == 'Team View') {\r\n for (let i = 0; i < this.selectedStudentTeams.length; i++) {\r\n this.selectedStudentTeams[i].Students = [];\r\n for (let j = 0; j < this.selectedStudents.length; j++) {\r\n for (let k = 0; k < this.selectedStudents[j].StudentTeams.length; k++) {\r\n if (this.selectedStudents[j].StudentTeams[k] == this.selectedStudentTeams[i].Id) {\r\n this.selectedStudentTeams[i].Students.push(this.selectedStudents[j]);\r\n }\r\n }\r\n }\r\n }\r\n this.teamViewDataSource.data = this.selectedStudentTeams;\r\n const tempSVdataSource: MassEmailStudent[] = [];\r\n this.studentViewDataSource.data = tempSVdataSource;\r\n setTimeout(() => this.teamViewDataSource.sort = this.tvSort);\r\n }\r\n else if (this.selectedTab == 'List View') {\r\n for (let i = 0; i < this.selectedStudentLists.length; i++) {\r\n this.selectedStudentLists[i].MassEmailStudents = [];\r\n for (let j = 0; j < this.selectedStudents.length; j++) {\r\n for (let k = 0; k < this.selectedStudents[j].StudentLists.length; k++) {\r\n if (this.selectedStudents[j].StudentLists[k] == this.selectedStudentLists[i].ID) {\r\n this.selectedStudentLists[i].MassEmailStudents.push(this.selectedStudents[j]);\r\n }\r\n }\r\n }\r\n }\r\n this.listViewDataSource.data = this.selectedStudentLists;\r\n const tempSVdataSource: MassEmailStudent[] = [];\r\n this.studentViewDataSource.data = tempSVdataSource;\r\n setTimeout(() => this.listViewDataSource.sort = this.lvSort);\r\n }\r\n else {\r\n this.studentViewDataSource.data = this.selectedStudents;\r\n this.studentViewDataSource.sortingDataAccessor = (item: any, property: string) => {\r\n if (property == 'Course') {\r\n return item['SubjectSections'];\r\n }\r\n // Default sorting\r\n else {\r\n return this.studentViewDataSource.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n const tempCVdataSource: ClassroomSummary[] = [];\r\n this.classViewDataSource.data = tempCVdataSource;\r\n setTimeout(() => this.studentViewDataSource.sort = this.svSort);\r\n }\r\n }\r\n\r\n validate() {\r\n const studentsWithoutRecipients: MassEmailStudent[] = [];\r\n if (this.massEmail.Students.filter(x => x.IsSelected == true).length == 0) {\r\n this.error = new ErrorList();\r\n this.error.errorMsg = 'Either select at least one student or click Cancel to abandon the Mass Email process.';\r\n this.error.fieldName = '';\r\n this.error.fieldRef = null;\r\n this.errorList.push(this.error);\r\n this.massEmailErrorCount += 1;\r\n }\r\n if (!this.loginSettings.MassEmailContactsGrouped) { // v10\r\n if ((this.massEmail.StudentRecipientType == null || this.massEmail.StudentRecipientType == undefined || this.massEmail.StudentRecipientType == '') &&\r\n (this.massEmail.HouseholdRecipientType == null || this.massEmail.HouseholdRecipientType == undefined || this.massEmail.HouseholdRecipientType == '') &&\r\n (this.massEmail.SendEmailToTeachers == null || this.massEmail.SendEmailToTeachers == undefined || this.massEmail.SendEmailToTeachers == false) &&\r\n (this.massEmail.SendEmailToTeamStaffMembers == null || this.massEmail.SendEmailToTeamStaffMembers == undefined || this.massEmail.SendEmailToTeamStaffMembers == false)) {\r\n this.error = new ErrorList();\r\n this.error.errorMsg = 'Select at least one recipient group to whom the email should be sent.';\r\n this.error.fieldName = '';\r\n this.error.fieldRef = null;\r\n this.errorList.push(this.error);\r\n this.massEmailErrorCount += 1;\r\n } else if (this.massEmail.HouseholdRecipientType != null && this.massEmail.HouseholdRecipientType != '') {\r\n if (!this.selectedContactType) {\r\n this.error = new ErrorList();\r\n this.error.errorMsg = 'If BCC is checked, at least one Contact Type must be selected.';\r\n this.error.fieldName = '';\r\n this.error.fieldRef = null;\r\n this.errorList.push(this.error);\r\n this.massEmailErrorCount += 1;\r\n }\r\n }\r\n } else { // V9\r\n if (this.massEmail.ReferringPage == 'My Classes' || this.massEmail.ReferringPage == 'Student Teams' || this.massEmail.ReferringPage == 'Student Lists') {\r\n const fieldName: string = this.massEmail.ReferringPage == 'Student Teams' ? 'TeamViewTab' : this.massEmail.ReferringPage == 'Student Lists' ? 'ListViewTab' : 'ClassViewTab';\r\n if ((this.massEmail.StudentRecipientType == null || this.massEmail.StudentRecipientType == undefined || this.massEmail.StudentRecipientType == '' || this.massEmail.StudentRecipientType == 'Do Not Include') &&\r\n (this.massEmail.HouseholdRecipientType == null || this.massEmail.HouseholdRecipientType == undefined || this.massEmail.HouseholdRecipientType == '' || this.massEmail.HouseholdRecipientType == 'Do Not Include') &&\r\n (this.massEmail.NonHouseholdRecipientType == null || this.massEmail.NonHouseholdRecipientType == undefined || this.massEmail.NonHouseholdRecipientType == '' || this.massEmail.NonHouseholdRecipientType == 'Do Not Include') &&\r\n (this.massEmail.SendEmailToTeachers == null || this.massEmail.SendEmailToTeachers == undefined || this.massEmail.SendEmailToTeachers == false)) {\r\n this.error = new ErrorList();\r\n this.error.errorMsg = 'Select at least one recipient group to whom the email should be sent.';\r\n this.error.fieldName = fieldName;\r\n this.error.fieldRef = null;\r\n this.errorList.push(this.error);\r\n this.massEmailErrorCount += 1;\r\n }\r\n }\r\n }\r\n if (Object.keys(this.massEmail.AdditionalRecipients).length > 0) {\r\n const additionalTabIndex = this.tabNames.indexOf('Additional');\r\n const re = new RegExp('^(([a-zA-Z0-9_\\\\-\\\\.]+)@([a-zA-Z0-9_\\\\-\\\\.]+)\\\\.([a-zA-Z]{2,5}){1,25}(($)|( *;+ *$)|( *;+ *(?=[a-zA-Z0-9_\\\\-\\\\.]))))*$');\r\n // Validate the email string\r\n if (this.massEmail.AdditionalRecipients['to'] && !re.test(this.massEmail.AdditionalRecipients.to)) {\r\n this.error = new ErrorList();\r\n this.error.errorMsg = 'One or more emails in the \"To:\" recipient field is invalid';\r\n this.error.fieldName = '';\r\n this.error.fieldRef = null;\r\n this.errorList.push(this.error);\r\n this.massEmailErrorCount += 1;\r\n }\r\n if (this.massEmail.AdditionalRecipients['cc'] && !re.test(this.massEmail.AdditionalRecipients.cc)) {\r\n this.error = new ErrorList();\r\n this.error.errorMsg = 'One or more emails in the \"CC:\" recipient field is invalid';\r\n this.error.fieldName = '';\r\n this.error.fieldRef = null;\r\n this.errorList.push(this.error);\r\n this.massEmailErrorCount += 1;\r\n }\r\n if (this.massEmail.AdditionalRecipients['bcc'] && !re.test(this.massEmail.AdditionalRecipients.bcc)) {\r\n this.error = new ErrorList();\r\n this.error.errorMsg = 'One or more emails in the \"BCC:\" recipient field is invalid';\r\n this.error.fieldName = '';\r\n this.error.fieldRef = null;\r\n this.errorList.push(this.error);\r\n this.massEmailErrorCount += 1;\r\n }\r\n }\r\n if (this.errorList.length > 0) {\r\n const errors = this.errorList.map(e => e.errorMsg);\r\n if (errors.find(errorString => errorString == 'Select at least one recipient group to whom the email should be sent.')) {\r\n this.tabChange(0); // Class view tab\r\n } else if (errors.find(errorString => errorString == 'If BCC is checked, at least one Contact Type must be selected.')) {\r\n this.tabChange(0); // Class view tab\r\n } else if (errors.find(errorString => errorString == 'Either select at least one student or click Cancel to abandon the Mass Email process.')) {\r\n const studentTab = ((this.massEmail.ReferringPage == 'My Classes') ? 'Student View' : 'Students');\r\n this.tabChange(this.tabNames.indexOf(studentTab)); // Student View tab || Students tab\r\n } else if (errors.find(errorString => errorString == 'One or more emails in the \"To:\" recipient field is invalid')) {\r\n this.tabChange(this.tabNames.indexOf('Additional')); // Additional Tab\r\n } else if (errors.find(errorString => errorString == 'One or more emails in the \"CC:\" recipient field is invalid')) {\r\n this.tabChange(this.tabNames.indexOf('Additional')); // Additional Tab\r\n } else if (errors.find(errorString => errorString == 'One or more emails in the \"BCC:\" recipient field is invalid')) {\r\n this.tabChange(this.tabNames.indexOf('Additional')); // Additional Tab\r\n } else {\r\n this.tabChange(0); // Class view tab\r\n }\r\n }\r\n if (this.massEmailErrorCount == 0) {\r\n this.massEmail.Recipients = [];\r\n for (let s = 0; s < this.selectedStudents.length; s++) {\r\n if (this.selectedStudents[s].IsSelected) {\r\n const studentSelectedRecipients: Recipient = new Recipient();\r\n studentSelectedRecipients.StudentID = this.selectedStudents[s].Id;\r\n\r\n if (this.loginSettings.V10) {\r\n if (this.massEmail.HouseholdRecipientType == 'BCC') {\r\n for (let c = 0; c < this.selectedStudents[s].StudentContacts.length; c++) {\r\n if (this.selectedContactType.filter(x => x == '(All)').length > 0) {\r\n studentSelectedRecipients.BCC.push(this.selectedStudents[s].StudentContacts[c]);\r\n } else if (this.selectedContactType.filter(x => x == '(All Guardians)').length > 0 && this.selectedStudents[s].StudentContacts[c].IsGuardian) {\r\n studentSelectedRecipients.BCC.push(this.selectedStudents[s].StudentContacts[c]);\r\n } else if (this.selectedContactType.filter(x => x == '(All Primary Contacts)').length > 0 && this.selectedStudents[s].StudentContacts[c].IsPrimaryParent) {\r\n studentSelectedRecipients.BCC.push(this.selectedStudents[s].StudentContacts[c]);\r\n } else if (this.selectedContactType.filter(x => x == '(All Primary Contact who are Guardians)').length > 0 && this.selectedStudents[s].StudentContacts[c].IsGuardian && this.selectedStudents[s].StudentContacts[c].IsPrimaryParent) {\r\n studentSelectedRecipients.BCC.push(this.selectedStudents[s].StudentContacts[c]);\r\n } else if (this.selectedContactType.filter(x => x == this.selectedStudents[s].StudentContacts[c].Relationship).length > 0) {\r\n studentSelectedRecipients.BCC.push(this.selectedStudents[s].StudentContacts[c]);\r\n }\r\n }\r\n }\r\n } else {\r\n for (let c = 0; c < this.selectedStudents[s].StudentContacts.length; c++) {\r\n if (this.massEmail.HouseholdRecipientType == 'BCC' && this.selectedStudents[s].StudentContacts[c].Relationship == 'Household Parent') {\r\n studentSelectedRecipients.BCC.push(this.selectedStudents[s].StudentContacts[c]);\r\n } else if (this.massEmail.NonHouseholdRecipientType == 'BCC' && this.selectedStudents[s].StudentContacts[c].Relationship == 'Non-Resident Parent' && (this.massEmail.IncludeAll == true || this.selectedStudents[s].StudentContacts[c].RequestsMailings == true)) {\r\n studentSelectedRecipients.BCC.push(this.selectedStudents[s].StudentContacts[c]);\r\n }\r\n }\r\n }\r\n const recipientInfo: StudentContact = new StudentContact();\r\n recipientInfo.ID = this.selectedStudents[s].Id;\r\n recipientInfo.Email = this.selectedStudents[s].Email;\r\n recipientInfo.LastName = this.selectedStudents[s].LastName;\r\n recipientInfo.FirstName = this.selectedStudents[s].FirstName;\r\n recipientInfo.Relationship = 'Student';\r\n recipientInfo.FirstName = this.selectedStudents[s].FirstName;\r\n recipientInfo.LastName = this.selectedStudents[s].LastName;\r\n if (this.massEmail.StudentRecipientType == 'To' && recipientInfo.Email != '') {\r\n studentSelectedRecipients.To.push(recipientInfo);\r\n } else if (this.massEmail.StudentRecipientType == 'CC' && recipientInfo.Email != '') {\r\n studentSelectedRecipients.CC.push(recipientInfo);\r\n } else if (this.massEmail.StudentRecipientType == 'BCC' && recipientInfo.Email != '') {\r\n studentSelectedRecipients.BCC.push(recipientInfo);\r\n }\r\n if (studentSelectedRecipients.To.length == 0 && studentSelectedRecipients.CC.length == 0 && studentSelectedRecipients.BCC.length == 0) {\r\n studentsWithoutRecipients.push(this.selectedStudents[s]);\r\n }\r\n this.massEmail.Recipients.push(studentSelectedRecipients);\r\n }\r\n }\r\n if (this.massEmail.SendEmailToTeachers == true) {\r\n const classIds = [];\r\n for (let n = 0; n < this.selectedClasses.length; n++) {\r\n if (this.selectedClasses[n].IsSelectedForMassEmail == true) {\r\n if (this.loginSettings.V10) {\r\n classIds.push(this.selectedClasses[n].SSEC_ID);\r\n } else {\r\n classIds.push(this.selectedClasses[n].Id);\r\n }\r\n\r\n }\r\n }\r\n this.massEmailService.getTeacherRecipientsForMassEmail(classIds).subscribe(results => {\r\n for (let t = 0; t < results.length; t++) {\r\n if (this.loginSettings.V10) {\r\n if (results[t].To == null) {\r\n results[t].To = [];\r\n }\r\n if (results[t].CC == null) {\r\n results[t].CC = [];\r\n }\r\n if (results[t].BCC == null) {\r\n results[t].BCC = [];\r\n }\r\n this.massEmail.Recipients.push(results[t]);\r\n }\r\n else {\r\n const teacherSelectedRecipients: Recipient = new Recipient();\r\n teacherSelectedRecipients.StudentID = results[t].StudentID;\r\n if (results[t].To == null) {\r\n results[t].To = [];\r\n } else {\r\n results[t].To.forEach(to => {\r\n const recipientInfo: StudentContact = new StudentContact();\r\n recipientInfo.ID = to.ID;\r\n recipientInfo.Email = to.Email;\r\n recipientInfo.LastName = to.LastName;\r\n recipientInfo.FirstName = to.FirstName;\r\n recipientInfo.Relationship = to.Relationship;\r\n teacherSelectedRecipients.To.push(recipientInfo);\r\n });\r\n }\r\n\r\n if (results[t].CC == null) {\r\n results[t].CC = [];\r\n } else {\r\n results[t].CC.forEach(cc => {\r\n const recipientInfo: StudentContact = new StudentContact();\r\n recipientInfo.ID = cc.ID;\r\n recipientInfo.Email = cc.Email;\r\n recipientInfo.LastName = cc.LastName;\r\n recipientInfo.FirstName = cc.FirstName;\r\n recipientInfo.Relationship = cc.Relationship;\r\n teacherSelectedRecipients.CC.push(recipientInfo);\r\n });\r\n }\r\n\r\n if (results[t].BCC == null) {\r\n results[t].BCC = [];\r\n } else {\r\n results[t].BCC.forEach(bcc => {\r\n const recipientInfo: StudentContact = new StudentContact();\r\n recipientInfo.ID = bcc.ID;\r\n recipientInfo.Email = bcc.Email;\r\n recipientInfo.LastName = bcc.LastName;\r\n recipientInfo.FirstName = bcc.FirstName;\r\n recipientInfo.Relationship = bcc.Relationship;\r\n teacherSelectedRecipients.CC.push(recipientInfo);\r\n });\r\n }\r\n this.massEmail.Recipients.push(teacherSelectedRecipients);\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (this.massEmail.SendEmailToTeamStaffMembers == true) {\r\n const studentIds = [];\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n if (this.loginSettings.V10) {\r\n studentIds.push(this.selectedStudents[n].Id);\r\n }\r\n }\r\n this.massEmailService.GetTeamStaffMemberRecipientsForMassEmail(studentIds, this.defaultYear.Id, this.defaultYear.SchoolID).subscribe(results => {\r\n for (let t = 0; t < results.length; t++) {\r\n if (this.loginSettings.V10) {\r\n if (results[t].To == null) {\r\n results[t].To = [];\r\n }\r\n if (results[t].CC == null) {\r\n results[t].CC = [];\r\n }\r\n if (results[t].BCC == null) {\r\n results[t].BCC = [];\r\n }\r\n this.massEmail.Recipients.push(results[t]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (studentsWithoutRecipients.length > 0) {\r\n this.noEmailWarningDialogRef = this.dialog.open(NoEmailWarningComponent, {\r\n disableClose: true,\r\n minWidth: 630,\r\n data: studentsWithoutRecipients\r\n });\r\n this.noEmailWarningDialogRef.afterClosed().subscribe((retValNoEmailWarning: any) => {\r\n if (retValNoEmailWarning == 'Continue was clicked') {\r\n this.retValSelectRecipient.massEmail = this.massEmail;\r\n this.retValSelectRecipient.Message = 'Continue';\r\n this.massEmail.recipientsSelected = true;\r\n this.selectRecipientDialogRef.close(this.retValSelectRecipient);\r\n }\r\n });\r\n } else {\r\n this.retValSelectRecipient.massEmail = this.massEmail;\r\n this.retValSelectRecipient.Message = 'Continue';\r\n this.massEmail.recipientsSelected = true;\r\n this.selectRecipientDialogRef.close(this.retValSelectRecipient);\r\n }\r\n }\r\n }\r\n\r\n selectedStudentsCheckAllClick() {\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n if (this.selectedStudents[i].IsSelected != this.massEmail.selectedStudentsCheckAll) {\r\n this.selectedStudents[i].IsSelected = this.massEmail.selectedStudentsCheckAll;\r\n if (this.massEmail.ReferringPage == 'My Classes') {\r\n this.selectedStudents[i].SelectedClasses = [];\r\n for (let n = 0; n < this.selectedStudents[i].SubjectSections.length; n++) {\r\n this.selectedStudents[i].SelectedClasses[this.selectedStudents[i].SubjectSections[n]] = this.massEmail.selectedStudentsCheckAll;\r\n if (this.massEmail.selectedStudentsCheckAll == true) {\r\n if (this.loginSettings.V10) {\r\n const courseObj = this.selectedClasses.find(c => c.SSEC_ID == this.selectedStudents[i].SubjectSections[n]);\r\n if (courseObj != null) {\r\n courseObj.IsSelectedForMassEmail = this.massEmail.selectedStudentsCheckAll;\r\n }\r\n } else {\r\n const courseObj = this.selectedClasses.find(c => c.Id == this.selectedStudents[i].SubjectSections[n]);\r\n if (courseObj != null) {\r\n courseObj.IsSelectedForMassEmail = this.massEmail.selectedStudentsCheckAll;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n for (let x = 0; x < this.selectedStudents.length; x++) {\r\n this.selectedStudents[x].IsSelected = this.massEmail.selectedStudentsCheckAll;\r\n }\r\n }\r\n\r\n closeModalClick() {\r\n this.selectRecipientDialogRef.close('Close Clicked');\r\n }\r\n\r\n studentClick(student) {\r\n this.massEmail.selectedStudentsCheckAll = this.selectedStudents.filter(x => x.IsSelected != true) == null;\r\n if (this.massEmail.ReferringPage == 'My Classes') {\r\n if (student.IsSelected) {\r\n for (let i = 0; i < student.SubjectSections.length; i++) {\r\n student.SelectedClasses[student.SubjectSections[i]] = true;\r\n if (this.loginSettings.V10) {\r\n const courseObj = this.selectedClasses.filter(x => x.SSEC_ID == student.SubjectSections[i])[0];\r\n courseObj.IsSelectedForMassEmail = true;\r\n } else {\r\n const courseObj = this.selectedClasses.filter(x => x.Id == student.SubjectSections[i])[0];\r\n courseObj.IsSelectedForMassEmail = true;\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < student.SubjectSections.length; i++) {\r\n student.SelectedClasses[student.SubjectSections[i]] = false;\r\n\r\n }\r\n }\r\n }\r\n for (let x = 0; x < this.selectedStudents.length; x++) {\r\n if (this.selectedStudents[x].StudentNumber == student.StudentNumber) {\r\n this.selectedStudents[x] = student;\r\n }\r\n }\r\n }\r\n\r\n selectedClassesCheckAllClick() {\r\n\r\n for (let i = 0; i < this.selectedClasses.length; i++) {\r\n if (this.selectedClasses[i].IsSelectedForMassEmail != this.massEmail.selectedClassesCheckAll) {\r\n this.selectedClasses[i].IsSelectedForMassEmail = this.massEmail.selectedClassesCheckAll;\r\n this.selectedClasses[i].classStudentsCheckAll = this.massEmail.selectedClassesCheckAll;\r\n }\r\n }\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n this.selectedStudents[n].IsSelected = this.massEmail.selectedClassesCheckAll;\r\n for (let x = 0; x < this.selectedStudents[n].SubjectSections.length; x++) {\r\n this.selectedStudents[n].SelectedClasses[this.selectedStudents[n].SubjectSections[x]] = this.massEmail.selectedClassesCheckAll;\r\n }\r\n }\r\n }\r\n\r\n classClick(course: ClassroomSummary) {\r\n this.massEmail.selectedClassesCheckAll = false;\r\n course.classStudentsCheckAll = course.IsSelectedForMassEmail;\r\n if (course.IsSelectedForMassEmail) {\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n if (this.loginSettings.V10) {\r\n if (this.selectedStudents[i].SubjectSections.find(x => x == course.SSEC_ID) != null) {\r\n this.selectedStudents[i].SelectedClasses[course.SSEC_ID] = true;\r\n this.selectedStudents[i].IsSelected = true;\r\n }\r\n } else {\r\n if (this.selectedStudents[i].SubjectSections.find(x => x == course.Id) != null) {\r\n this.selectedStudents[i].SelectedClasses[course.Id] = true;\r\n this.selectedStudents[i].IsSelected = true;\r\n }\r\n }\r\n }\r\n } else {\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n if (this.loginSettings.V10 && (this.selectedStudents[n].SubjectSections.find(x => x == course.SSEC_ID) != null)) {\r\n this.selectedStudents[n].SelectedClasses[course.SSEC_ID] = false;\r\n } else if (this.selectedStudents[n].SubjectSections.find(x => x == course.Id) != null) {\r\n this.selectedStudents[n].SelectedClasses[course.Id] = false;\r\n }\r\n let hasClasses = false;\r\n if (this.selectedStudents[n].SelectedClasses.find(x => x == true) != null) {\r\n hasClasses = true;\r\n }\r\n this.selectedStudents[n].IsSelected = hasClasses;\r\n }\r\n }\r\n const checkedClassess: ClassroomSummary[] = this.selectedClasses.filter(x => x.IsSelectedForMassEmail == true);\r\n if (checkedClassess.length == this.selectedClasses.length) {\r\n this.massEmail.selectedClassesCheckAll = true;\r\n } else {\r\n this.massEmail.selectedClassesCheckAll = false;\r\n }\r\n }\r\n\r\n selectedTeamsCheckAllClick() {\r\n for (let i = 0; i < this.selectedStudentTeams.length; i++) {\r\n if (this.selectedStudentTeams[i].IsSelectedForMassEmail != this.massEmail.selectedTeamsCheckAll) {\r\n this.selectedStudentTeams[i].IsSelectedForMassEmail = this.massEmail.selectedTeamsCheckAll;\r\n this.selectedStudentTeams[i].teamStudentsCheckAll = this.massEmail.selectedTeamsCheckAll;\r\n }\r\n }\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n this.selectedStudents[n].IsSelected = this.massEmail.selectedTeamsCheckAll;\r\n for (let x = 0; x < this.selectedStudents[n].StudentTeams.length; x++) {\r\n this.selectedStudents[n].SelectedTeams[this.selectedStudents[n].StudentTeams[x]] = this.massEmail.selectedTeamsCheckAll;\r\n }\r\n }\r\n }\r\n\r\n teamClick(team: StudentTeams) {\r\n this.massEmail.selectedTeamsCheckAll = false;\r\n team.teamStudentsCheckAll = team.IsSelectedForMassEmail;\r\n if (team.IsSelectedForMassEmail) {\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n if (this.selectedStudents[i].StudentTeams.find(x => x == team.Id) != null) {\r\n this.selectedStudents[i].SelectedTeams[team.Id] = true;\r\n this.selectedStudents[i].IsSelected = true;\r\n }\r\n }\r\n } else {\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n if (this.selectedStudents[n].StudentTeams.find(x => x == team.Id) != null) {\r\n this.selectedStudents[n].SelectedTeams[team.Id] = false;\r\n }\r\n let hasTeams = false;\r\n if (this.selectedStudents[n].SelectedTeams.find(x => x == true) != null) {\r\n hasTeams = true;\r\n }\r\n this.selectedStudents[n].IsSelected = hasTeams;\r\n }\r\n }\r\n const checkedTeams: StudentTeams[] = this.selectedStudentTeams.filter(x => x.IsSelectedForMassEmail == true);\r\n if (checkedTeams.length == this.selectedStudentTeams.length) {\r\n this.massEmail.selectedTeamsCheckAll = true;\r\n } else {\r\n this.massEmail.selectedTeamsCheckAll = false;\r\n }\r\n }\r\n\r\n\r\n selectedListsCheckAllClick() {\r\n for (let i = 0; i < this.selectedStudentLists.length; i++) {\r\n if (this.selectedStudentLists[i].IsSelectedForMassEmail != this.massEmail.selectedListsCheckAll) {\r\n this.selectedStudentLists[i].IsSelectedForMassEmail = this.massEmail.selectedListsCheckAll;\r\n this.selectedStudentLists[i].listStudentsCheckAll = this.massEmail.selectedListsCheckAll;\r\n }\r\n }\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n this.selectedStudents[n].IsSelected = this.massEmail.selectedListsCheckAll;\r\n for (let x = 0; x < this.selectedStudents[n].StudentLists.length; x++) {\r\n this.selectedStudents[n].SelectedLists[this.selectedStudents[n].StudentLists[x]] = this.massEmail.selectedListsCheckAll;\r\n }\r\n }\r\n }\r\n\r\n listClick(list: StudentList) {\r\n this.massEmail.selectedListsCheckAll = false;\r\n list.listStudentsCheckAll = list.IsSelectedForMassEmail;\r\n if (list.IsSelectedForMassEmail) {\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n if (this.selectedStudents[i].StudentLists.find(x => x == list.ID) != null) {\r\n this.selectedStudents[i].SelectedLists[list.ID] = true;\r\n this.selectedStudents[i].IsSelected = true;\r\n }\r\n }\r\n } else {\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n if (this.selectedStudents[n].StudentLists.find(x => x == list.ID) != null) {\r\n this.selectedStudents[n].SelectedLists[list.ID] = false;\r\n }\r\n let hasLists = false;\r\n if (this.selectedStudents[n].SelectedLists.find(x => x == true) != null) {\r\n hasLists = true;\r\n }\r\n this.selectedStudents[n].IsSelected = hasLists;\r\n }\r\n }\r\n const checkedLists: StudentList[] = this.selectedStudentLists.filter(x => x.IsSelectedForMassEmail == true);\r\n if (checkedLists.length == this.selectedStudentLists.length) {\r\n this.massEmail.selectedListsCheckAll = true;\r\n } else {\r\n this.massEmail.selectedListsCheckAll = false;\r\n }\r\n }\r\n\r\n contactTypeClick() {\r\n this.massEmail.ContactTypes.sort(function (a, b) {\r\n const labelA = a.label.replace('(', '').replace(')', '');\r\n const labelB = b.label.replace('(', '').replace(')', '');\r\n if (a.label == '(All)') {\r\n return -1;\r\n }\r\n if (b.label == '(All)') {\r\n return 1;\r\n }\r\n if (labelA < labelB) {\r\n return -1;\r\n }\r\n if (labelA > labelB) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n const tmp = [];\r\n let i = this.massEmail.ContactTypes.length;\r\n while (i--) {\r\n if (this.selectedContactType.filter(x => x == this.massEmail.ContactTypes[i].label).length > 0) {\r\n tmp.push(this.massEmail.ContactTypes[i]);\r\n this.massEmail.ContactTypes.splice(i, 1);\r\n }\r\n }\r\n for (let x = 0; x < tmp.length; x++) {\r\n this.massEmail.ContactTypes.splice(0, 0, tmp[x]);\r\n }\r\n }\r\n\r\n householdRecipientTypeChanged() {\r\n\r\n }\r\n\r\n tabChange(selectionIndex: number) {\r\n const tab = this.tabNames[selectionIndex];\r\n switch (tab) {\r\n case 'Class View':\r\n this.massEmail.selectedClassesCheckAll = true;\r\n for (let i = 0; i < this.selectedClasses.length; i++) {\r\n this.selectedClasses[i].classStudentsCheckAll = true;\r\n if (!this.selectedClasses[i].IsSelectedForMassEmail) {\r\n this.massEmail.selectedClassesCheckAll = false;\r\n }\r\n for (let s = 0; s < this.selectedStudents.length; s++) {\r\n if (this.loginSettings.V10) {\r\n const isSSECExists = this.selectedStudents[s].SubjectSections.filter(x => x == this.selectedClasses[i].SSEC_ID);\r\n if (isSSECExists != null && isSSECExists.length > 0) {\r\n if (this.selectedStudents[s].SelectedClasses[this.selectedClasses[i].SSEC_ID] != true) {\r\n this.selectedClasses[i].classStudentsCheckAll = false;\r\n break;\r\n }\r\n }\r\n } else {\r\n const isSSECExists = this.selectedStudents[s].SubjectSections.filter(x => x == this.selectedClasses[i].Id);\r\n if (isSSECExists != null && isSSECExists.length > 0) {\r\n if (this.selectedStudents[s].SelectedClasses[this.selectedClasses[i].Id] != true) {\r\n this.selectedClasses[i].classStudentsCheckAll = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case 'Team View':\r\n this.massEmail.selectedTeamsCheckAll = true;\r\n for (let i = 0; i < this.selectedStudentTeams.length; i++) {\r\n this.selectedStudentTeams[i].teamStudentsCheckAll = true;\r\n if (!this.selectedStudentTeams[i].IsSelectedForMassEmail) {\r\n this.massEmail.selectedTeamsCheckAll = false;\r\n }\r\n for (let s = 0; s < this.selectedStudents.length; s++) {\r\n const isTeamExists = this.selectedStudents[s].StudentTeams.filter(x => x == this.selectedStudentTeams[i].Id);\r\n if (isTeamExists != null && isTeamExists.length > 0) {\r\n if (this.selectedStudents[s].SelectedTeams[this.selectedStudentTeams[i].Id] != true) {\r\n this.selectedStudentTeams[i].teamStudentsCheckAll = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case 'List View':\r\n this.massEmail.selectedListsCheckAll = true;\r\n for (let i = 0; i < this.selectedStudentLists.length; i++) {\r\n this.selectedStudentLists[i].listStudentsCheckAll = true;\r\n if (!this.selectedStudentLists[i].IsSelectedForMassEmail) {\r\n this.massEmail.selectedListsCheckAll = false;\r\n }\r\n for (let s = 0; s < this.selectedStudents.length; s++) {\r\n const isListExists = this.selectedStudents[s].StudentLists.filter(x => x == this.selectedStudentLists[i].ID);\r\n if (isListExists != null && isListExists.length > 0) {\r\n if (this.selectedStudents[s].SelectedLists[this.selectedStudentLists[i].ID] != true) {\r\n this.selectedStudentLists[i].listStudentsCheckAll = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case 'Student View':\r\n this.massEmail.selectedStudentsCheckAll = true;\r\n this.test = this.selectedClasses;\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n if (!this.selectedStudents[n].IsSelected) {\r\n this.massEmail.selectedStudentsCheckAll = false;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n this.tabIndex.emit(selectionIndex);\r\n this.selectedTab = tab;\r\n this.loadDataTable();\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n if (this.selectedTab == 'Class View') {\r\n this.classViewDataSource.toggleExpanded(row);\r\n } else if (this.selectedTab == 'Team View') {\r\n this.teamViewDataSource.toggleExpanded(row);\r\n }\r\n else if (this.selectedTab == 'List View') {\r\n this.listViewDataSource.toggleExpanded(row);\r\n }\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n if (this.selectedTab == 'Class View') {\r\n return this.classViewDataSource.checkExpanded(row);\r\n }\r\n else if (this.selectedTab == 'Team View') {\r\n return this.teamViewDataSource.checkExpanded(row);\r\n }\r\n else if (this.selectedTab == 'List View') {\r\n return this.listViewDataSource.checkExpanded(row);\r\n }\r\n return null;\r\n }\r\n\r\n nextClick() {\r\n this.errorList = [];\r\n this.massEmailErrorCount = 0;\r\n this.massEmail.Recipients = [];\r\n const deselectedStudents: string[] = [];\r\n for (let n = 0; n < this.selectedStudents.length; n++) {\r\n let hasSelectedClasses = false;\r\n let hasUnselectedClasses = false;\r\n if (this.selectedStudents[n].SubjectSections != null) {\r\n for (let z = 0; z < this.selectedStudents[n].SubjectSections.length; z++) {\r\n if (this.selectedStudents[n].SelectedClasses[this.selectedStudents[n].SubjectSections[z]] == true) {\r\n hasSelectedClasses = true;\r\n } else if (this.selectedStudents[n].SelectedClasses[this.selectedStudents[n].SubjectSections[z]] == false) {\r\n hasUnselectedClasses = true;\r\n }\r\n }\r\n }\r\n if (hasSelectedClasses == true && hasUnselectedClasses == true) {\r\n deselectedStudents.push(this.selectedStudents[n].Name);\r\n }\r\n }\r\n if (deselectedStudents.length > 0) {\r\n this.unselectedWarningDialogRef = this.dialog.open(UnselectedWarningComponent, {\r\n width: '600px',\r\n height: '250px',\r\n disableClose: true,\r\n data: { object: deselectedStudents }\r\n });\r\n this.unselectedWarningDialogRef.afterClosed().subscribe((retValUnselectWarning: any) => {\r\n if (retValUnselectWarning == 'Continue was clicked') {\r\n this.validate();\r\n }\r\n });\r\n } else {\r\n this.validate();\r\n }\r\n }\r\n\r\n cancelClick() {\r\n this.retValSelectRecipient.Message = 'Cancel';\r\n this.dialogBox.close();\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n if (this.selectedTab == 'Class View') {\r\n this.classViewDataSource.expandAll(expand);\r\n }\r\n else if (this.selectedTab == 'Team View') {\r\n this.teamViewDataSource.expandAll(expand);\r\n }\r\n else if (this.selectedTab == 'List View') {\r\n this.listViewDataSource.expandAll(expand);\r\n } else {\r\n this.studentViewDataSource.expandAll(expand);\r\n }\r\n }\r\n\r\n backClick() {\r\n this.retValSelectRecipient.Message = 'Back';\r\n this.massEmailService.isBackClick = true;\r\n this.dialogBox.close();\r\n }\r\n\r\n resizeGrid() {\r\n setTimeout(() => {\r\n this.gridHeight = window.innerHeight - 300;\r\n }, 0);\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n this.resizeGrid();\r\n }\r\n\r\n matTriggerValue() {\r\n if (this.contactTypes.value.length == this.massEmail.ContactTypes.length) {\r\n return '(All)';\r\n } else if (this.contactTypes.value.length > 1) {\r\n return 'Multiple Selected';\r\n } else {\r\n return this.contactTypes.value[0];\r\n }\r\n }\r\n\r\n studentClassFilter(subjectSectionIds) {\r\n return function (course) {\r\n for (let i = 0; i < subjectSectionIds.length; i++) {\r\n if ((this.LoginSettings.V10 && subjectSectionIds[i] == course.SSEC_ID) || (!this.LoginSettings.V10 && subjectSectionIds[i] == course.Id)) {\r\n return true;\r\n }\r\n // return true;\r\n }\r\n return false;\r\n };\r\n }\r\n\r\n testContactType(obj) {\r\n this.errorList = [];\r\n if (this.selectedContactType.length == 0) {\r\n this.errorList = [];\r\n this.errorList.push({\r\n fieldName: null,\r\n fieldRef: null,\r\n errorMsg: 'If BCC is checked, at least one Contact Type must be selected.'\r\n });\r\n }\r\n if (obj.label == '(All)') {\r\n if (this.selectedContactType.indexOf(obj.label) >= 0) {\r\n this.selectedContactType = [];\r\n this.massEmail.ContactTypes.forEach(element => {\r\n this.selectedContactType.push(element.label);\r\n });\r\n } else {\r\n this.selectedContactType = [];\r\n this.errorList.push({\r\n fieldName: null,\r\n fieldRef: null,\r\n errorMsg: 'If BCC is checked, at least one Contact Type must be selected.'\r\n });\r\n }\r\n } else {\r\n if (this.selectedContactType.length != this.massEmail.ContactTypes.length) {\r\n const idx = this.selectedContactType.indexOf('(All)');\r\n if (idx >= 0) {\r\n this.selectedContactType.splice(idx, 1);\r\n }\r\n } else {\r\n const idx = this.selectedContactType.indexOf('(All)');\r\n if (idx < 0) {\r\n this.selectedContactType.push('(All)');\r\n }\r\n }\r\n this.selectedContactType = _.cloneDeep(this.selectedContactType);\r\n }\r\n }\r\n\r\n getStudentInfoForMassEmail() {\r\n this.massEmailService.getStudentInfoForMassEmail(this.massEmail.StudentIds, this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(results => {\r\n this.massEmail.Students = results;\r\n this.massEmail.Students.forEach(element => {\r\n element.IsSelected = true;\r\n });\r\n this.massEmail.StudentIds = [];\r\n this.initialize();\r\n });\r\n }\r\n\r\n studentRecipientTypeChange(value: string) {\r\n if (value != this.massEmail.StudentRecipientType) {\r\n this.massEmail.StudentRecipientType = value;\r\n if (this.massEmail.StudentRecipientType) {\r\n this.massEmail.OneEmailPerHousehold = false;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, Inject } from '@angular/core';\r\n//import { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MassEmailAttachment } from '../mass-email.model';\r\n\r\n@Component({\r\n selector: 'app-mass-email-attachment',\r\n templateUrl: './mass-email-attachment.component.html'\r\n})\r\nexport class MassEmailAttachmentComponent implements OnInit {\r\n emailAttachment: MassEmailAttachment;\r\n errors: ErrorList[] = [];\r\n @ViewChild('fileInput', { read: ElementRef, static: true }) fileInputRef: ElementRef;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n ) {\r\n this.emailAttachment = new MassEmailAttachment();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n validate() {\r\n this.errors = [];\r\n if (this.emailAttachment.FileExtension.toLowerCase() != 'pdf' &&\r\n this.emailAttachment.FileExtension.toLowerCase() != 'jpg' &&\r\n this.emailAttachment.FileExtension.toLowerCase() != 'png' &&\r\n this.emailAttachment.FileExtension.toLowerCase() != 'txt' &&\r\n this.emailAttachment.FileExtension.toLowerCase() != 'doc' &&\r\n this.emailAttachment.FileExtension.toLowerCase() != 'docx' &&\r\n this.emailAttachment.FileExtension.toLowerCase() != 'xls' &&\r\n this.emailAttachment.FileExtension.toLowerCase() != 'xlsx') {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'Only .txt, .doc(x), .xls(x), .pdf, .jpg, and .png files can be uploaded.'\r\n });\r\n }\r\n\r\n if (this.emailAttachment.OriginalFileName == '' || this.emailAttachment.OriginalFileName == undefined) {\r\n this.errors.push({\r\n fieldRef: this.fileInputRef,\r\n fieldName: 'File',\r\n errorMsg: 'File required.'\r\n });\r\n }\r\n }\r\n\r\n OKClick() {\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.emailAttachment.FileName = this.emailAttachment.OriginalFileName\r\n this.dialogBox.close(this.emailAttachment);\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialogBox.close();\r\n }\r\n\r\n}\r\n","

Add Attachment

\r\n\r\n \r\n\r\n\r\n \r\n","

WARNING

\r\n\r\n
This email has no subject.
\r\n
This email has no content.
\r\n
\r\n\r\n \r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MassEmail } from '../mass-email.model';\r\n\r\n@Component({\r\n selector: 'app-send-emails-warning',\r\n templateUrl: './send-emails-warning.component.html'\r\n})\r\nexport class SendEmailsWarningComponent implements OnInit {\r\n massEmail: MassEmail;\r\n constructor(\r\n public sendEmailsWarningDialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.massEmail = this.data.massEmailObj;\r\n }\r\n sendAnywayClick() {\r\n this.sendEmailsWarningDialogRef.close('Send Anyway Was Clicked');\r\n }\r\n cancelClick() {\r\n this.sendEmailsWarningDialogRef.close('Cancel Was Clicked');\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-job-sent-to-queue',\r\n templateUrl: './job-sent-to-queue.component.html',\r\n styles: []\r\n})\r\nexport class JobSentToQueueComponent implements OnInit, OnDestroy {\r\n\r\n dialogTitle = 'Job Sent to Queue';\r\n dialogContent = 'The report has been sent to the queue.';\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n public jobSentToQueueDialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this.data) {\r\n if (this.data.dialogTitle) {\r\n this.dialogTitle = this.data.dialogTitle;\r\n }\r\n if (this.data.dialogContent) {\r\n this.dialogContent = this.data.dialogContent;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n cancelClick() {\r\n this.jobSentToQueueDialogRef.close('Close was clicked');\r\n }\r\n}\r\n","\r\n
\r\n Recipients\r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n Name\r\n \r\n \r\n {{recipient.name}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Type\r\n \r\n \r\n {{recipient.type}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Email\r\n \r\n {{recipient.email}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n
","

{{dialogTitle}}

\r\n\r\n {{dialogContent}}\r\n\r\n\r\n \r\n","import {Component, Inject, OnInit, ViewChild} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {MatSort} from '@angular/material/sort';\r\nimport {TylerMatTableDataSource} from '../../../shared-components/angular-material/extended.class';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-view-recipients-modal',\r\n templateUrl: './view-recipients-modal.component.html',\r\n styleUrls: ['./view-recipients-modal.component.css']\r\n})\r\nexport class ViewRecipientsModalComponent implements OnInit {\r\n\r\n angularMatData = new TylerMatTableDataSource();\r\n displayedColumns: string[] = ['name', 'type', 'email'];\r\n includeTeachers = false;\r\n includeTeamStaffMembers = false;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n v10: boolean;\r\n constructor(\r\n private dialogRef: MatDialogRef, \r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private loginService: LoginService\r\n ) {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data) {\r\n this.angularMatData.data = this.data.recipients;\r\n this.angularMatData.sort = this.sort;\r\n this.includeTeachers = this.data.includeTeachers;\r\n this.includeTeamStaffMembers = this.data.includeTeamStaffMembers;\r\n }\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","export class EmailRecipient {\r\n name: string;\r\n email: string;\r\n type: string;\r\n\r\n constructor({name = '', email, type}) {\r\n this.name = name;\r\n this.email = email;\r\n this.type = type;\r\n }\r\n}\r\n","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n selector: 'app-send-test-email',\r\n templateUrl: './send-test-email.component.html'\r\n})\r\nexport class SendTestEmailComponent implements OnInit {\r\n\r\n userEmailAddress = '';\r\n errors: ErrorList[] = [];\r\n retValSelected: any = {};\r\n emailRegexp = System.mailRegexp;\r\n @ViewChild('EmailAddress', { static: true }) emailRef: ElementRef;\r\n constructor(\r\n private userService: UserService,\r\n private dialogBox: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.userEmailAddress = _.cloneDeep(this.userService.currentUser.Email);\r\n }\r\n\r\n validate() {\r\n this.errors = [];\r\n\r\n if (!this.userEmailAddress || this.userEmailAddress.length == 0 || this.userEmailAddress == '') {\r\n this.errors.push({\r\n errorMsg: 'User Email is required',\r\n fieldRef: this.emailRef,\r\n fieldName: 'EmailAddress',\r\n });\r\n }\r\n\r\n if (this.userEmailAddress && this.userEmailAddress.length > 0 && !this.userEmailAddress.match(this.emailRegexp)) {\r\n this.errors.push({\r\n errorMsg: 'Invalid Format',\r\n fieldRef: this.emailRef,\r\n fieldName: 'EmailAddress',\r\n });\r\n }\r\n }\r\n\r\n sendTestClick() {\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.retValSelected.EmailAddress = this.userEmailAddress;\r\n this.retValSelected.Message = 'SendTest';\r\n this.dialogBox.close(this.retValSelected);\r\n }\r\n }\r\n\r\n cancelClick() {\r\n this.retValSelected.Message = 'Cancel';\r\n this.dialogBox.close(this.retValSelected);\r\n }\r\n}\r\n","

Send Test Email

\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n","Mass Email from {{referringPage}}\r\n\r\n

Mass Email

\r\n
\r\n {{defaultYear.SchoolName}} - {{defaultYear.Term}}\r\n {{defaultYear.SchoolName}} - {{defaultYear.AYIdentifier}}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{currentUser.Email}}\r\n \r\n {{(loginSettings.V10 ? 'System\\'s No-Reply Email Address' : 'Parent Notification\r\n Default \"From\" Address') + ': ' + loginSettings.DefaultEmailReplyToAddress}}\r\n \r\n \r\n \r\n  
\r\n \r\n
\r\n View Recipients\r\n
\r\n
\r\n  \r\n
\r\n \r\n \r\n \r\n  
\r\n \r\n Attachments\r\n \r\n \r\n {{attachment.OriginalFileName}}\r\n \r\n \r\n  
\r\n \r\n Create Communication Log entries\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n","import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog';\r\n// import { ClassroomSummary } from '../classroom-summary/models/classroom-summary.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport {\r\n MassEmail,\r\n ContactTypes,\r\n MassEmailStudent,\r\n MassEmailPreferences,\r\n Recipient\r\n} from './mass-email.model';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { LoginSettings } from '../../shared-modules/login/LoginSetting.model';\r\nimport { MassEmailService } from './mass-email.service';\r\nimport { SelectRecipientsComponent } from './select-recipients/select-recipients.component';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MassEmailAttachmentComponent } from './mass-email-attachment/mass-email-attachment.component';\r\nimport { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { UserPreferencesWindowComponent } from '../../shared-components/user-preferences/user-preferences-window/user-preferences-window.component';\r\nimport { Portal } from '../../shared-components/portal.model';\r\nimport { SendEmailsWarningComponent } from './send-emails-warning/send-emails-warning.component';\r\nimport { JobSentToQueueComponent } from '../job-sent-to-queue/job-sent-to-queue.component';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport * as _ from 'lodash';\r\nimport { ViewRecipientsModalComponent } from './view-recipients-modal/view-recipients-modal.component';\r\nimport { EmailRecipient } from './view-recipients-modal/email-recipient';\r\nimport { GeneralConfirmationComponent } from '../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { SendTestEmailComponent } from './send-test-email/send-test-email.component';\r\nimport { StudentTeams } from '../../classroom360/student-teams/student-teams.model';\r\nimport { StudentList } from '../../classroom360/student-lists/student-list.model';\r\nimport {Classroom360Service} from '../../classroom360/classroom360.service';\r\n@Component({\r\n selector: 'app-mass-email-view',\r\n templateUrl: './mass-email-view.component.html',\r\n styleUrls: ['./mass-email-view.component.css']\r\n})\r\nexport class MassEmailViewComponent implements OnInit {\r\n popUpWidth: number;\r\n popUpHeight: number;\r\n referringPage: string;\r\n massEmail: MassEmail;\r\n defaultYear: Year;\r\n currentUser: User;\r\n selectedStudents: MassEmailStudent[];\r\n selectedClasses: ClassroomSummary[];\r\n userPreferences: any;\r\n massEmailPreferences: MassEmailPreferences = new MassEmailPreferences();\r\n loginSettings: LoginSettings;\r\n public staffAssignedPortals: Portal[] = [];\r\n selectRecipiantDialogRef: MatDialogRef;\r\n massEmailAttachmentDialogRef: MatDialogRef;\r\n sendEmailsWarningDialogRef: MatDialogRef;\r\n jobSentToQueueDialogRef: MatDialogRef;\r\n userPrefDialogRef: MatDialogRef;\r\n generalConfirmationDialog: MatDialogRef;\r\n sendTestEmailDislogRef: MatDialogRef;\r\n errorList: ErrorList[] = [];\r\n errors: ErrorList[] = [];\r\n userEmailAddress = '';\r\n selectedStudentTeam: StudentTeams[] = [];\r\n selectedStudentList: StudentList[] = [];\r\n\r\n @ViewChild('attachmentFieldRef', { read: ElementRef }) attachmentFieldRef: ElementRef;\r\n @ViewChild('subjectFieldRef', { read: ElementRef, static: true }) subjectFieldRef: ElementRef;\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private massEmailService: MassEmailService,\r\n private userPreferencesService: UserPreferencesService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private classroom360Service: Classroom360Service,\r\n private dialogBox: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.currentUser = this.userService.currentUser;\r\n this.userPreferences = this.userPreferencesService;\r\n this.loginSettings = this.loginService.LoginSettings;\r\n if (this.data) {\r\n if (this.data.massEmail) {\r\n this.massEmail = this.data.massEmail;\r\n }\r\n if (this.data.portals) {\r\n this.staffAssignedPortals = this.data.portals;\r\n } else {\r\n this.staffAssignedPortals = this.classroom360Service.staffAssignedPortals;\r\n }\r\n }\r\n this.popUpHeight = window.innerHeight;\r\n this.popUpWidth = window.innerWidth;\r\n this.referringPage = this.massEmail.ReferringPage;\r\n this.massEmailService.isBackClick = false;\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n this.massEmail.Attachments = [];\r\n this.massEmailPreferences.Signature = '';\r\n this.massEmail.Body = '';\r\n if (this.massEmail.SendEmailToTeachers == null || this.massEmail.SendEmailToTeachers == undefined) {\r\n this.massEmail.SendEmailToTeachers = false;\r\n }\r\n this.selectedStudents = [];\r\n if (this.massEmail.Students != null && this.massEmail.Students != undefined) {\r\n this.selectedStudents = this.massEmail.Students;\r\n for (let i = 0; i < this.selectedStudents.length; i++) {\r\n this.selectedStudents[i].Name = this.getStudentName(this.selectedStudents[i]);\r\n }\r\n }\r\n this.selectedClasses = [];\r\n if (this.massEmail.MassEmailClasses != null && this.massEmail.MassEmailClasses != undefined) {\r\n this.selectedClasses = this.massEmail.MassEmailClasses;\r\n }\r\n\r\n this.selectedStudentTeam = [];\r\n if (this.massEmail.MassEmailStudentTeams != null && this.massEmail.MassEmailStudentTeams != undefined) {\r\n this.selectedStudentTeam = this.massEmail.MassEmailStudentTeams;\r\n }\r\n\r\n this.selectedStudentList = [];\r\n if (this.massEmail.MassEmailStudentLists != null && this.massEmail.MassEmailStudentLists != undefined) {\r\n this.selectedStudentList = this.massEmail.MassEmailStudentLists;\r\n }\r\n\r\n this.massEmail.From = this.userPreferences.generalPreferences.EmailFrom == 'Personal' ? this.currentUser.Email : this.loginSettings.DefaultEmailReplyToAddress;\r\n this.getMassEmailPreferences();\r\n }\r\n\r\n getPageInfo() {\r\n if (this.massEmail.ReferringPage == 'My Classes') {\r\n const subjectSectionIds: number[] = [];\r\n for (let i = 0; i < this.selectedClasses.length; i++) {\r\n if (this.loginSettings.V10) {\r\n subjectSectionIds.push(this.selectedClasses[i].SSEC_ID);\r\n } else {\r\n subjectSectionIds.push(this.selectedClasses[i].Id);\r\n }\r\n }\r\n // ONE-5178 Mass Email Error\r\n this.massEmailService.getStudentsByClass(subjectSectionIds, this.defaultYear.Id, this.defaultYear.SchoolID).subscribe(results => {\r\n this.massEmail.Students = results;\r\n this.selectedStudents = this.massEmail.Students;\r\n for (let x = 0; x < this.selectedStudents.length; x++) {\r\n this.selectedStudents[x].IsSelected = true;\r\n this.selectedStudents[x].SelectedClasses = [];\r\n for (let y = 0; y < this.selectedStudents[x].SubjectSections.length; y++) {\r\n this.selectedStudents[x].SelectedClasses[this.selectedStudents[x].SubjectSections[y]] = true;\r\n }\r\n this.selectedStudents[x].Name = this.getStudentName(this.selectedStudents[x]);\r\n }\r\n this.getParentTypes();\r\n });\r\n }\r\n else if (this.massEmail.ReferringPage == 'Student Teams') {\r\n const studentTeamsIds: number[] = [];\r\n for (let i = 0; i < this.selectedStudentTeam.length; i++) {\r\n studentTeamsIds.push(this.selectedStudentTeam[i].Id);\r\n }\r\n this.massEmailService.getStudentsByTeams(studentTeamsIds, this.defaultYear.Id, this.defaultYear.SchoolID).subscribe(results => {\r\n this.massEmail.Students = results;\r\n this.selectedStudents = this.massEmail.Students;\r\n for (let x = 0; x < this.selectedStudents.length; x++) {\r\n this.selectedStudents[x].IsSelected = true;\r\n this.selectedStudents[x].SelectedTeams = [];\r\n for (let y = 0; y < this.selectedStudents[x].StudentTeams.length; y++) {\r\n this.selectedStudents[x].SelectedTeams[this.selectedStudents[x].StudentTeams[y]] = true;\r\n }\r\n this.selectedStudents[x].Name = this.getStudentName(this.selectedStudents[x]);\r\n }\r\n this.getParentTypes();\r\n });\r\n }\r\n else if (this.massEmail.ReferringPage == 'Student Lists') {\r\n const studentListsIds: number[] = [];\r\n for (let i = 0; i < this.selectedStudentList.length; i++) {\r\n studentListsIds.push(this.selectedStudentList[i].ID);\r\n }\r\n this.massEmailService.getStudentsByLists(studentListsIds, this.defaultYear.Id, this.defaultYear.SchoolID).subscribe(results => {\r\n this.massEmail.Students = results;\r\n this.selectedStudents = this.massEmail.Students;\r\n for (let x = 0; x < this.selectedStudents.length; x++) {\r\n this.selectedStudents[x].IsSelected = true;\r\n this.selectedStudents[x].SelectedLists = [];\r\n for (let y = 0; y < this.selectedStudents[x].StudentLists.length; y++) {\r\n this.selectedStudents[x].SelectedLists[this.selectedStudents[x].StudentLists[y]] = true;\r\n }\r\n this.selectedStudents[x].Name = this.getStudentName(this.selectedStudents[x]);\r\n }\r\n this.getParentTypes();\r\n });\r\n }\r\n else {\r\n this.getParentTypes();\r\n }\r\n }\r\n\r\n getParentTypes() {\r\n if (this.loginSettings.V10 && (this.massEmail.ContactTypes == null || this.massEmail.ContactTypes.length == 0)) {\r\n this.massEmailService.getParentTypes(this.defaultYear.Id).subscribe(results => {\r\n const pTypes: ContactTypes[] = [];\r\n pTypes.push({ id: '(All)', label: '(All)' });\r\n pTypes.push({ id: '(All Guardians)', label: '(All Guardians)' });\r\n pTypes.push({ id: '(All Primary Contacts)', label: '(All Primary Contacts)' });\r\n pTypes.push({\r\n id: '(All Primary Contacts who are Guardians)',\r\n label: '(All Primary Contacts who are Guardians)'\r\n });\r\n for (let i = 0; i < results.length; i++) {\r\n const type: ContactTypes = new ContactTypes();\r\n type.id = results[i];\r\n type.label = results[i];\r\n pTypes.push(type);\r\n }\r\n this.massEmail.ContactTypes = pTypes;\r\n for (let i = 0; i < this.massEmail.ContactTypes.length; i++) {\r\n if (this.massEmail.ContactTypes[i].label == '(All Primary Contacts)') {\r\n this.massEmail.SelectedContactTypes.push(this.massEmail.ContactTypes[i].label);\r\n\r\n\r\n }\r\n }\r\n this.showSelectRecipientsModal();\r\n });\r\n\r\n } else {\r\n this.showSelectRecipientsModal();\r\n }\r\n }\r\n\r\n showSelectRecipientsModal() {\r\n this.selectRecipiantDialogRef = this.dialog.open(SelectRecipientsComponent, {\r\n disableClose: true,\r\n data: _.cloneDeep(this.massEmail), // pass a copy not a reference\r\n });\r\n this.selectRecipiantDialogRef.afterClosed().subscribe((retValSelectRecipient: any) => {\r\n if (retValSelectRecipient != null) {\r\n if (retValSelectRecipient.Message == 'Continue') {\r\n this.massEmail = retValSelectRecipient.massEmail;\r\n } else if (retValSelectRecipient.Message == 'Back') {\r\n this.backClick();\r\n } else if (retValSelectRecipient == 'Close Clicked') {\r\n // Do nothing\r\n } else {\r\n this.cancelClick();\r\n }\r\n } else {\r\n this.cancelClick();\r\n }\r\n });\r\n }\r\n\r\n showViewRecipientsModal() {\r\n let recipients: EmailRecipient[] = [];\r\n // Get Contact Recipients\r\n this.massEmail.Recipients.forEach(recipient => {\r\n recipient.BCC.forEach(recip => {\r\n recipients.push(new EmailRecipient({\r\n name: recip.LastName + ', ' + recip.FirstName,\r\n email: recip.Email,\r\n type: recip.Relationship == 'Teacher' ? 'Staff' : recip.Relationship == 'Student' ? 'Student' : (recip.Relationship == 'Team Staff' ? 'Team Staff' : 'Contact')\r\n }));\r\n });\r\n recipient.CC.forEach(recip => {\r\n recipients.push(new EmailRecipient({\r\n name: recip.LastName + ', ' + recip.FirstName,\r\n email: recip.Email,\r\n type: recip.Relationship == 'Teacher' ? 'Staff' : recip.Relationship == 'Student' ? 'Student' : (recip.Relationship == 'Team Staff' ? 'Team Staff' : 'Contact')\r\n }));\r\n });\r\n recipient.To.forEach(recip => {\r\n recipients.push(new EmailRecipient({\r\n name: recip.LastName + ', ' + recip.FirstName,\r\n email: recip.Email,\r\n type: recip.Relationship == 'Teacher' ? 'Staff' : recip.Relationship == 'Student' ? 'Student' : (recip.Relationship == 'Team Staff' ? 'Team Staff' : 'Contact')\r\n }));\r\n });\r\n });\r\n\r\n // Get additional recipients\r\n let additionalEmails = [];\r\n if (this.massEmail.AdditionalRecipients.to) {\r\n additionalEmails = additionalEmails.concat(this.massEmail.AdditionalRecipients.to.split(';'));\r\n }\r\n if (this.massEmail.AdditionalRecipients.cc) {\r\n additionalEmails = additionalEmails.concat(this.massEmail.AdditionalRecipients.cc.split(';'));\r\n }\r\n if (this.massEmail.AdditionalRecipients.bcc) {\r\n additionalEmails = additionalEmails.concat(this.massEmail.AdditionalRecipients.bcc.split(';'));\r\n }\r\n for (let i = 0; i < additionalEmails.length; i++) {\r\n additionalEmails[i] = additionalEmails[i].trim();\r\n recipients.push(new EmailRecipient({ email: additionalEmails[i], type: 'Additional' }));\r\n }\r\n if (this.massEmail.OneEmailPerHousehold) {\r\n recipients = recipients.filter((filterRecipient, index) =>\r\n recipients.findIndex(tempRecipient => filterRecipient.email == tempRecipient.email) == index\r\n );\r\n }\r\n this.dialog.open(ViewRecipientsModalComponent, {\r\n width: '60vw',\r\n height: '55vh',\r\n autoFocus: false,\r\n disableClose: true,\r\n data: { recipients: recipients, includeTeachers: this.massEmail.SendEmailToTeachers, includeTeamStaffMembers: this.massEmail.SendEmailToTeamStaffMembers }\r\n });\r\n }\r\n\r\n getMassEmailPreferences() {\r\n this.userPreferencesService.getUserPreferences(0, '/OneSISMassEmail').subscribe(results => {\r\n this.userPreferences.massEmailPreferences = JSON.parse(results[0]);\r\n this.massEmailPreferences = JSON.parse(JSON.stringify(this.userPreferences.massEmailPreferences));\r\n this.massEmail.CreateCommunicationLog = this.massEmailPreferences.CreateCommunicationLog;\r\n if (this.massEmailPreferences.Signature != '' && this.massEmail.Body == '') {\r\n this.massEmail.Body = this.massEmail.Body + '




' + this.massEmailPreferences.Signature;\r\n }\r\n this.getPageInfo();\r\n });\r\n }\r\n\r\n getStudentName(student) {\r\n const nickName = student.NickName;\r\n const firstName = student.FirstName;\r\n const middleName = student.MiddleName;\r\n const lastName = student.LastName;\r\n let studentName = '';\r\n if (this.userPreferences.generalPreferences.StudentNameFormat == 'LNF') {\r\n studentName = lastName + ', ';\r\n }\r\n if (this.userPreferences.generalPreferences.StudentNameFormat != 'FILN') {\r\n studentName = studentName + firstName;\r\n }\r\n if (this.userPreferences.generalPreferences.StudentNameFormat == 'FILN') {\r\n studentName = studentName + firstName.substr(0, 1);\r\n }\r\n if (this.userPreferences.generalPreferences.ShowNickname == true && nickName != null && nickName != '') {\r\n studentName = studentName + ' ' + '\"' + nickName + '\"';\r\n }\r\n if (this.userPreferences.generalPreferences.StudentMiddleNameFormat == 'SEN' && middleName != null && middleName != '') {\r\n studentName = studentName + ' ' + middleName;\r\n }\r\n if (this.userPreferences.generalPreferences.StudentMiddleNameFormat == 'SFL' && middleName != null && middleName != '') {\r\n studentName = studentName + ' ' + middleName.substr(0, 1);\r\n }\r\n if (this.userPreferences.generalPreferences.StudentNameFormat != 'LNF' && this.userPreferences.generalPreferences.StudentNameFormat != 'FNLI') {\r\n studentName = studentName + ' ' + lastName;\r\n }\r\n if (this.userPreferences.generalPreferences.StudentNameFormat == 'FNLI') {\r\n studentName = studentName + ' ' + lastName.substr(0, 1);\r\n }\r\n return studentName;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n\r\n backClick() {\r\n this.massEmailService.isBackClick = true;\r\n this.dialogRef.close('Back was clicked.');\r\n }\r\n\r\n cancelClick() {\r\n this.dialogBox.close();\r\n }\r\n\r\n sendEmailsClick(sendTest = false) {\r\n let iserror: boolean;\r\n iserror = false;\r\n this.errors = [];\r\n // this.validateEmail();\r\n\r\n let attachmentSize = 0;\r\n for (let j = 0; j < this.massEmail.Attachments.length; j++) {\r\n if (this.massEmail.Attachments[j].Base64String != undefined && this.massEmail.Attachments[j].Base64String != null && this.massEmail.Attachments[j].Base64String != '') {\r\n attachmentSize = attachmentSize + (window.atob(this.massEmail.Attachments[j].Base64String).length / (1024 * 1024));\r\n }\r\n }\r\n if (attachmentSize > 10) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: '',\r\n errorMsg: 'The total size of the files you have attached exceeds the 10 MB limit.'\r\n });\r\n }\r\n\r\n if ((this.massEmail.Subject == null || this.massEmail.Subject.trim().length == 0)\r\n && (this.massEmail.Body == null || this.massEmail.Body.trim().length == 0)\r\n && (this.massEmail.Attachments == null || this.massEmail.Attachments.length == 0)) {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: this.attachmentFieldRef,\r\n errorMsg: 'Email has no content, subject or attachment'\r\n });\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: '',\r\n });\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: '',\r\n });\r\n // iserror = true;\r\n } else if ((this.massEmail.Subject == null || this.massEmail.Subject.trim().length == 0\r\n || this.massEmail.Body == null || this.massEmail.Body.trim().length == 0) && this.errors.length == 0) {\r\n this.sendEmailsWarningDialogRef = this.dialog.open(SendEmailsWarningComponent, {\r\n width: '300px',\r\n // height: '100px',\r\n disableClose: true,\r\n data: { massEmailObj: this.massEmail }\r\n });\r\n this.sendEmailsWarningDialogRef.afterClosed().subscribe(result => {\r\n if (result == 'Send Anyway Was Clicked') {\r\n this.sendEmails(sendTest);\r\n } else {\r\n // DO Nothing\r\n }\r\n }\r\n );\r\n }\r\n else if (!this.massEmail.From || this.massEmail.From == '') {\r\n this.generalConfirmationDialog = this.dialog.open(GeneralConfirmationComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n this.generalConfirmationDialog.componentInstance.disableConfirmation = true;\r\n this.generalConfirmationDialog.componentInstance.headerLabel = 'Error';\r\n this.generalConfirmationDialog.componentInstance.confirmMessage = 'You do not have a valid email address to send Mass Emails';\r\n }\r\n else {\r\n if (this.errors.length == 0) {\r\n this.sendEmails(sendTest);\r\n }\r\n }\r\n }\r\n\r\n sendEmails(sendTest = false) {\r\n let email: any = {};\r\n if (sendTest == false) {\r\n email = {\r\n From: this.massEmail.From,\r\n Recipients: this.massEmail.Recipients,\r\n Subject: this.massEmail.Subject,\r\n Message: this.massEmail.Body,\r\n Attachments: this.massEmail.Attachments,\r\n StudentSelection: this.massEmail.StudentRecipientType,\r\n HouseholdParentsSelection: this.massEmail.HouseholdRecipientType,\r\n NonResidentParentsSelection: this.massEmail.NonHouseholdRecipientType,\r\n IncludeAllEvenNotRequestMailing: this.massEmail.IncludeAll,\r\n SendEmailToTeacher: this.massEmail.SendEmailToTeachers,\r\n CreateCommunicationLog: this.massEmail.CreateCommunicationLog,\r\n SelectedContactTypes: this.massEmail.SelectedContactTypes,\r\n OneEmailPerHousehold: this.massEmail.OneEmailPerHousehold\r\n };\r\n\r\n // Check for additional recipients\r\n this.addAdditionalEmails();\r\n } else {\r\n const sendTestRecipient: Recipient[] = [];\r\n const rec: Recipient = {\r\n StudentID: 0,\r\n To: [\r\n {\r\n ID: 0,\r\n Email: this.userEmailAddress,\r\n IsGuardian: false,\r\n IsPrimaryParent: false,\r\n Relationship: 'Undefined',\r\n RequestsMailings: false,\r\n FirstName: '',\r\n LastName: ''\r\n }\r\n ],\r\n CC: [],\r\n BCC: []\r\n };\r\n sendTestRecipient.push(rec);\r\n\r\n email = {\r\n From: this.massEmail.From,\r\n Recipients: sendTestRecipient,\r\n Subject: this.massEmail.Subject + ' - TEST MESSAGE',\r\n Message: this.massEmail.Body,\r\n Attachments: this.massEmail.Attachments,\r\n StudentSelection: this.massEmail.StudentRecipientType,\r\n HouseholdParentsSelection: this.massEmail.HouseholdRecipientType,\r\n NonResidentParentsSelection: this.massEmail.NonHouseholdRecipientType,\r\n IncludeAllEvenNotRequestMailing: this.massEmail.IncludeAll,\r\n SendEmailToTeacher: this.massEmail.SendEmailToTeachers,\r\n CreateCommunicationLog: this.massEmail.CreateCommunicationLog,\r\n SelectedContactTypes: this.massEmail.SelectedContactTypes,\r\n OneEmailPerHousehold: this.massEmail.OneEmailPerHousehold\r\n };\r\n }\r\n\r\n const area = 'Mass Email';\r\n if (this.loginSettings.V10) {\r\n this.massEmailService.sendMassEmail(email, true, area, this.currentUser.LoginSchoolId, this.defaultYear.Id).subscribe(results => {\r\n email.Recipients = [];\r\n const confirmationEmailRecipient = {\r\n ID: this.currentUser.MemberId,\r\n Email: this.currentUser.Email,\r\n Relationship: 'Sender'\r\n };\r\n const r = {\r\n To: [],\r\n CC: [],\r\n BCC: []\r\n };\r\n r.To.push(confirmationEmailRecipient);\r\n email.Recipients.push(r);\r\n email.CreateCommunicationLog = false;\r\n\r\n this.massEmailService.sendMassEmail(email, true, area, this.currentUser.LoginSchoolId, this.defaultYear.Id).subscribe(resultsObj => {\r\n this.jobSentToQueueDialogRef = this.dialog.open(JobSentToQueueComponent, {\r\n width: '350px',\r\n height: '160px',\r\n disableClose: true,\r\n data: {\r\n dialogTitle: 'Job Sent to Queue',\r\n dialogContent: 'The mass email has been sent to the queue'\r\n }\r\n });\r\n this.jobSentToQueueDialogRef.afterClosed().subscribe(result => {\r\n if (result == 'Close was clicked') {\r\n this.dialogRef.close('Mass Email Sent.');\r\n }\r\n });\r\n });\r\n });\r\n } else {\r\n this.massEmailService.sendMassEmail(email, true, area, this.defaultYear.SchoolID, this.defaultYear.Id).subscribe(results => {\r\n if (sendTest == false) {\r\n this.jobSentToQueueDialogRef = this.dialog.open(JobSentToQueueComponent, {\r\n width: '350px',\r\n height: '160px',\r\n disableClose: true\r\n });\r\n this.jobSentToQueueDialogRef.afterClosed().subscribe(result => {\r\n if (result == 'Close was clicked') {\r\n this.dialogRef.close('Mass Email Sent.');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n preferencesClick() {\r\n this.userPrefDialogRef = this.dialog.open(UserPreferencesWindowComponent, {\r\n width: '1000px',\r\n height: '800px',\r\n });\r\n this.userPrefDialogRef.componentInstance.staffAssignedPortals = this.staffAssignedPortals;\r\n this.userPrefDialogRef.afterClosed().subscribe(result => {\r\n });\r\n }\r\n\r\n exportAddressesClick() {\r\n\r\n }\r\n\r\n addAttachmentClick() {\r\n this.massEmailAttachmentDialogRef = this.dialog.open(MassEmailAttachmentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n width: '400px'\r\n });\r\n this.massEmailAttachmentDialogRef.afterClosed().subscribe((retValAttachment: Attachment) => {\r\n if (retValAttachment != undefined && retValAttachment != null && retValAttachment.AttachmentFileName != '') {\r\n this.massEmail.Attachments.push(retValAttachment);\r\n }\r\n });\r\n }\r\n\r\n deleteAttachment(attchement: Attachment) {\r\n const index = this.massEmail.Attachments.indexOf(attchement);\r\n this.massEmail.Attachments.splice(index, 1);\r\n }\r\n\r\n // Send Test Email\r\n sendTestEmail() {\r\n this.sendTestEmailDislogRef = this.dialog.open(SendTestEmailComponent, {\r\n width: '400px',\r\n height: '200px',\r\n disableClose: true\r\n });\r\n this.sendTestEmailDislogRef.afterClosed().subscribe(result => {\r\n if (result.Message == 'SendTest') {\r\n this.userEmailAddress = result.EmailAddress;\r\n this.sendEmailsClick(true);\r\n }\r\n });\r\n }\r\n\r\n private addAdditionalEmails() {\r\n if (Object.keys(this.massEmail.AdditionalRecipients).length > 0) {\r\n // separate emails out\r\n const { to, cc, bcc } = this.massEmail.AdditionalRecipients;\r\n if (to) {\r\n let toRecipients = to.split(';');\r\n // Trim white space\r\n for (let i = 0; i < toRecipients.length; i++) {\r\n toRecipients[i] = toRecipients[i].trim();\r\n }\r\n // remove empty emails\r\n for (let i = 0; i < toRecipients.length; i++) {\r\n toRecipients = toRecipients.filter(em => em != '');\r\n const rec: Recipient = {\r\n StudentID: 0,\r\n To: [\r\n {\r\n ID: 0,\r\n Email: toRecipients[i],\r\n IsGuardian: false,\r\n IsPrimaryParent: false,\r\n Relationship: 'Undefined',\r\n RequestsMailings: false,\r\n FirstName: '',\r\n LastName: ''\r\n }\r\n ],\r\n CC: [],\r\n BCC: []\r\n };\r\n this.massEmail.Recipients.push(rec);\r\n }\r\n }\r\n if (cc) {\r\n let ccRecipients = cc.split(';');\r\n // Trim white space\r\n for (let i = 0; i < ccRecipients.length; i++) {\r\n ccRecipients[i] = ccRecipients[i].trim();\r\n }\r\n // remove empty emails\r\n for (let i = 0; i < ccRecipients.length; i++) {\r\n ccRecipients = ccRecipients.filter(em => em != '');\r\n const rec: Recipient = {\r\n StudentID: 0,\r\n CC: [\r\n {\r\n ID: 0,\r\n Email: ccRecipients[i],\r\n IsGuardian: false,\r\n IsPrimaryParent: false,\r\n Relationship: 'Undefined',\r\n RequestsMailings: false,\r\n FirstName: '',\r\n LastName: ''\r\n }\r\n ],\r\n To: [],\r\n BCC: []\r\n };\r\n this.massEmail.Recipients.push(rec);\r\n }\r\n }\r\n if (bcc) {\r\n let bccRecipients = bcc.split(';');\r\n // Trim white space\r\n for (let i = 0; i < bccRecipients.length; i++) {\r\n bccRecipients[i] = bccRecipients[i].trim();\r\n }\r\n // remove empty emails\r\n for (let i = 0; i < bccRecipients.length; i++) {\r\n bccRecipients = bccRecipients.filter(em => em != '');\r\n const rec: Recipient = {\r\n StudentID: 0,\r\n BCC: [\r\n {\r\n ID: 0,\r\n Email: bccRecipients[i],\r\n IsGuardian: false,\r\n IsPrimaryParent: false,\r\n Relationship: 'Undefined',\r\n RequestsMailings: false,\r\n FirstName: '',\r\n LastName: ''\r\n }\r\n ],\r\n To: [],\r\n CC: []\r\n };\r\n this.massEmail.Recipients.push(rec);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { StudentTeams } from '../../classroom360/student-teams/student-teams.model';\r\nimport { StudentList } from '../../classroom360/student-lists/student-list.model';\r\n\r\nexport class MassEmail {\r\n Attachments: Attachment[] = [];\r\n AdditionalRecipients: AdditionalRecipients = new AdditionalRecipients();\r\n Body: string;\r\n MassEmailClasses: ClassroomSummary[] = [];\r\n ContactTypes: any[] = [];\r\n From: string;\r\n HouseholdRecipientType: string;\r\n IncludeAll: boolean;\r\n NonHouseholdRecipientType: string;\r\n ReferringPage: string;\r\n SelectedContactTypes: any[] = [];\r\n Signature: string;\r\n StudentRecipientType: string;\r\n Students: MassEmailStudent[] = [];\r\n Subject: string;\r\n TeacherRecipientType: string;\r\n SendEmailToTeachers: boolean;\r\n SendEmailToTeamStaffMembers: boolean;\r\n CreateCommunicationLog: boolean;\r\n Recipients: Recipient[] = [];\r\n OneEmailPerHousehold: boolean;\r\n // Non DTO Field\r\n StudentIds: number[] = [];\r\n selectAllForMassEmail: boolean;\r\n selectedStudentsCheckAll: boolean;\r\n selectedClassesCheckAll: boolean;\r\n recipientsSelected: boolean; // if the user has previously selected recipients, using this to show save and cancel buttons\r\n MassEmailStudentTeams: StudentTeams[] = [];\r\n selectedTeamsCheckAll: boolean;\r\n // Student List\r\n MassEmailStudentLists: StudentList[] = [];\r\n selectedListsCheckAll:boolean;\r\n}\r\n\r\nexport class MassEmailStudent {\r\n Id: number;\r\n StudentNumber: string;\r\n Name: string;\r\n FirstName: string;\r\n LastName: string;\r\n MiddleName: string;\r\n NickName: string;\r\n GradeLevel: string;\r\n Email: string;\r\n SubjectSections: number[];\r\n StudentTeams: number[];\r\n StudentContacts: StudentContact[];\r\n IsSelected: boolean;\r\n SelectedClasses: any[];\r\n SelectedTeams: any[];\r\n\r\n SelectedLists:any[];\r\n StudentLists: number[];\r\n\r\n}\r\nexport class ContactTypes {\r\n id: string;\r\n label: string;\r\n}\r\nexport class Recipient {\r\n StudentID: number;\r\n To: StudentContact[] = [];\r\n CC: StudentContact[] = [];\r\n BCC: StudentContact[] = [];\r\n}\r\n\r\nexport class StudentContact {\r\n ID: number;\r\n Email: string;\r\n Relationship: string;\r\n IsGuardian: boolean;\r\n IsPrimaryParent: boolean;\r\n RequestsMailings: boolean;\r\n FirstName: string;\r\n LastName: string;\r\n}\r\n\r\nexport class MassEmailPreferences {\r\n Signature: string;\r\n CreateCommunicationLog: boolean;\r\n}\r\n\r\nexport class MassEmailAttachment {\r\n Id: number;\r\n Base64String: string;\r\n OriginalFileName: string;\r\n FileType: string;\r\n FileDescription: string;\r\n FileExtension: string;\r\n FileName: string;\r\n}\r\n\r\nexport class AdditionalRecipients {\r\n bcc: string; // test@email.com; test2@email.com\r\n cc: string; // test@email.com; test2@email.com\r\n to: string; // test@email.com; test2@email.com\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { System } from '../../shared-components/System';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { MassEmailStudent, Recipient } from './mass-email.model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class MassEmailService {\r\n isBackClick = false;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService\r\n ) { }\r\n\r\n getStudentsByClass(subjectSectionIds: number[], yearId: number, schoolId: number) {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n return this.http.post(System.apiURL.Student + 'GetStudentsByClass' + queryString, subjectSectionIds);\r\n }\r\n\r\n getStudentsByTeams(studentTeamIds: number[], yearId: number, schoolId: number) {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n return this.http.post(System.apiURL.Student + 'GetStudentsByTeams' + queryString, studentTeamIds);\r\n }\r\n\r\n getStudentsByLists(studentListIds: number[], yearId: number, schoolId: number) {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n return this.http.post(System.apiURL.Student + 'GetStudentsByLists' + queryString, studentListIds);\r\n } \r\n\r\n getParentTypes(yearId: number) {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetParentTypes' + queryString);\r\n }\r\n getTeacherRecipientsForMassEmail(sectionIds) {\r\n return this.http.post(System.apiURL.Student + 'GetTeacherRecipientsForMassEmail', sectionIds);\r\n }\r\n GetTeamStaffMemberRecipientsForMassEmail(sectionIds: number[], yearId: number, schoolId: number) {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n return this.http.post(System.apiURL.Student + 'GetTeamStaffMemberRecipientsForMassEmail' + queryString, sectionIds);\r\n }\r\n\r\n sendMassEmail(email, isBodyHtml, area, schoolId, yearId) {\r\n let queryString = '';\r\n queryString += '?isBodyHtml=' + isBodyHtml +\r\n '&area=' + area +\r\n '&schoolId=' + schoolId +\r\n '&yearId=' + yearId;\r\n System.removeIdFields(email);\r\n return this.http.post(System.apiURL.Student + 'SendMassEmail' + queryString, email);\r\n }\r\n\r\n getStudentInfoForMassEmail(studentIds: number[], yearId: number, schoolId: number): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n\r\n return this.http.post(System.apiURL.Student + 'GetStudentInfoForMassEmail' + queryString, studentIds);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Portal } from '../portal.model';\r\n\r\n@Pipe({\r\n name: 'menuFilter'\r\n})\r\nexport class MenuFilterPipe implements PipeTransform {\r\n\r\n transform(portals: Portal[], parentId: number): any {\r\n const filteredPortal = portals.filter(o => o.ParentId == parentId && o.ShowAsMenu == true);\r\n filteredPortal.sort((a, b) =>\r\n a.PortalName.localeCompare(b.PortalName)\r\n );\r\n\r\n return filteredPortal;\r\n }\r\n}","\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
0 && (menuItem.PortalDescription != '' || favoritesFilter))\">\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { Portal } from '../portal.model';\r\nimport { LoaderService } from '../spinner/loader-service.component';\r\nimport { StudentService } from '../student/student.service';\r\nimport { PortalMenuItem, PortalMenuPreferences } from '../user-preferences/portal-menu-preferences.model';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { UserService } from '../user/user.service';\r\n\r\n@Component({\r\n selector: 'child-menu',\r\n templateUrl: './child-menu.component.html',\r\n styleUrls: ['./menu.component.css']\r\n})\r\nexport class ChildMenuComponent implements OnInit {\r\n\r\n @Input() portals: Portal[];\r\n @Input() portalMenuPreferences: PortalMenuPreferences;\r\n @Input() parentId: number;\r\n @Input() favoritesFilter: boolean;\r\n @Input() favoritesCheckbox: boolean;\r\n @Input() favoritesDefaults: boolean;\r\n @Input() searchValue = '';\r\n @Output() menuClickEvent = new EventEmitter();\r\n @Output() portalCheckboxClickEvent = new EventEmitter();\r\n clonedPortals: Portal[] = [];\r\n searchString = '';\r\n userType = 0;\r\n\r\n constructor(\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private classroom360Service: Classroom360Service,\r\n private userPreferencesService: UserPreferencesService,\r\n private loaderService: LoaderService,\r\n ) {\r\n this.userType = this.userService.userType;\r\n }\r\n\r\n ngOnInit() {\r\n this.classroom360Service.observableStaffAssignedPortalsStream$.subscribe(_ => {\r\n this.userType = this.userService.userType;\r\n\r\n if (this.parentId == 0) {\r\n setTimeout(() => {\r\n this.searchClick();\r\n }, 0);\r\n }\r\n });\r\n }\r\n\r\n menuPortalClick(portal: Portal) {\r\n if (portal != null && portal.Disabled == false) {\r\n this.menuClickEvent.emit(portal);\r\n }\r\n }\r\n\r\n childMenuClick(portal: Portal) {\r\n if (portal != null && portal.Disabled == false) {\r\n this.menuClickEvent.emit(portal);\r\n }\r\n }\r\n\r\n portalCheckboxClick(portal: Portal) {\r\n this.portalCheckboxClickEvent.emit(portal);\r\n }\r\n\r\n childPortalCheckboxClick(portal: Portal) {\r\n this.portalCheckboxClickEvent.emit(portal);\r\n }\r\n\r\n savePreferences(portal: Portal) {\r\n portal.Expanded = portal.Expanded == 1 ? 0 : 1;\r\n if (this.searchString == '') {\r\n // POST: saves the portal preferences\r\n const studentId = this.userType == 2 && this.studentService.selectedStudent != null && this.studentService.selectedStudent.Id != null ? this.studentService.selectedStudent.Id : 0;\r\n const portalMenuPreference = this.portalMenuPreferences.PortalMenus.filter(o => o.Id == portal.Id || ((o.Id == null || o.Id == 0) && o.GroupName == portal.GroupName))[0];\r\n if (portalMenuPreference != null) {\r\n portalMenuPreference.Expanded = portal.Expanded;\r\n }\r\n else {\r\n const portalMenu: PortalMenuItem = {\r\n GroupName: portal.GroupName,\r\n Expanded: portal.Expanded,\r\n GroupIcon: portal.GroupIcon,\r\n Id: portal.Id\r\n };\r\n this.portalMenuPreferences.PortalMenus.push(portalMenu);\r\n }\r\n\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(this.portalMenuPreferences));\r\n this.userPreferencesService.saveUserPreferences(studentId, '/OneSISPortalMenuPreferences', xmlStream, 0, '').subscribe();\r\n this.loaderService.isLoading.next(false);\r\n }\r\n }\r\n\r\n showParentGroup(portal: Portal): boolean {\r\n if (this.favoritesFilter) {\r\n if (portal.ParentId == 0 && portal.PortalDescription != '' && portal.Selected == true) {\r\n return true;\r\n }\r\n else if (this.portals.filter(o => o.ParentId == portal.Id && o.Selected == true).length > 0) {\r\n return true;\r\n }\r\n else {\r\n this.portals.filter(o => o.ParentId == portal.Id && o.PortalDescription == '').forEach(obj => {\r\n this.showParentGroup(obj);\r\n });\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n searchClick() {\r\n if (this.searchString != null && this.searchString != '') {\r\n if (this.clonedPortals.length > 0) {\r\n this.portals = JSON.parse(JSON.stringify(this.clonedPortals));\r\n }\r\n this.searchValue = this.searchString;\r\n this.clonedPortals = JSON.parse(JSON.stringify(this.portals));\r\n\r\n const filteredPortals = this.portals.filter(o => o.PortalName.toLowerCase().indexOf(this.searchValue.toLowerCase()) >= 0);\r\n filteredPortals.filter(o => o.PortalDescription == '').forEach(obj => {\r\n obj.Expanded = 1;\r\n this.addChildRecord(filteredPortals, obj.Id);\r\n });\r\n filteredPortals.filter(o => o.ParentId > 0).forEach(obj => {\r\n this.addParentRecord(filteredPortals, obj.ParentId);\r\n });\r\n\r\n this.portals = filteredPortals;\r\n }\r\n else {\r\n this.clearSearchClick();\r\n }\r\n }\r\n\r\n clearSearchClick() {\r\n this.searchString = '';\r\n this.searchValue = this.searchString;\r\n if (this.clonedPortals.length > 0) {\r\n this.portals = JSON.parse(JSON.stringify(this.clonedPortals));\r\n this.clonedPortals = [];\r\n }\r\n }\r\n\r\n addParentRecord(filteredPortals: Portal[], parentId: number) {\r\n if (filteredPortals.filter(o => o.Id == parentId).length == 0) {\r\n const portal = this.portals.filter(o => o.Id == parentId)[0];\r\n if (portal != null) {\r\n portal.Expanded = 1;\r\n filteredPortals.push(portal);\r\n if (portal.ParentId > 0) {\r\n this.addParentRecord(filteredPortals, portal.ParentId);\r\n }\r\n }\r\n }\r\n }\r\n\r\n addChildRecord(filteredPortals: Portal[], portalId: number) {\r\n this.portals.filter(o => o.ParentId == portalId).forEach(obj => {\r\n if (filteredPortals.filter(o => o.Id == obj.Id).length == 0) {\r\n const portal = this.portals.filter(o => o.Id == obj.Id)[0];\r\n if (portal != null) {\r\n portal.Expanded = 1;\r\n filteredPortals.push(portal);\r\n if (portal.PortalDescription == '') {\r\n this.addChildRecord(filteredPortals, portal.Id);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n\t
\r\n\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t 1) || favoritesCheckbox || (favoritesFilter && showfavoritesMenu(menuItem.GroupName))\"\r\n\t\t\t[expanded]=\"menuItem.Expanded == 1\" [class.mat-expansion-panel-expanded]=\"menuItem.Expanded == 1\"\r\n\t\t\t[class.mat-expansion-panel-collapsed]=\"menuItem.Expanded != 1\">\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{{menuItem.GroupName | translate}}\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
\r\n\t\t\t\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n\t\r\n
","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\nimport { Subscription } from 'rxjs';\r\nimport { ClassroomSummaryService } from '../../classroom360/classroom-summary/classroom-summary.service';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { DataQueryService } from '../../classroom360/data-query/data-query.service';\r\nimport { GradebookAccessDeniedComponent } from '../../classroom360/gradebook/v9/modals/gradebook-access-denied/gradebook-access-denied.component';\r\nimport { SelectCourseDialogComponent } from '../../classroom360/guards/select-course/select-course-dialog/select-course-dialog.component';\r\nimport { StaffService } from '../../management360/staff/staff.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { MyReportsComponent } from '../../shared-modules/reporting/my-reports/my-reports.component';\r\nimport { ReportFoldersComponent } from '../../shared-modules/reporting/report-folders/report-folders.component';\r\nimport { ReportSnapshotsComponent } from '../../shared-modules/reporting/report-snapshots/report-snapshots.component';\r\nimport { ReportingComponent } from '../../shared-modules/reporting/reporting.component';\r\nimport { ReportingService } from '../../shared-modules/reporting/reporting.service';\r\nimport { OnlineRegistrationService } from '../../student360/online-registration/online-registration.service';\r\nimport { MultipleFamiliesComponent } from '../../student360/online-registration/student-update/multiple-families/multiple-families.component';\r\nimport { Student360Service } from '../../student360/student360.service';\r\nimport { GeneralConfirmationComponent } from '../controls/general-confirmation/general-confirmation.component';\r\nimport { EFormService } from '../e-forms/e-form.service';\r\nimport { Portal } from '../portal.model';\r\nimport { PermissionEnum } from '../security/permissions.enums';\r\nimport { SecurityService } from '../security/security.service';\r\nimport { SharedService } from '../shared.service';\r\nimport { LoaderService } from '../spinner/loader-service.component';\r\nimport { StaffSearchComponent } from '../staff-search/staff-search.component';\r\nimport { StudentSearchComponent } from '../student-search/student-search.component';\r\nimport { StudentService } from '../student/student.service';\r\nimport { PortalMenuItem, PortalMenuPreferences } from '../user-preferences/portal-menu-preferences.model';\r\nimport { UserPreferencesWindowComponent } from '../user-preferences/user-preferences-window/user-preferences-window.component';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { UserService } from '../user/user.service';\r\nimport { School } from '../year/school.model';\r\nimport { YearService } from '../year/year.service';\r\n\r\n@Component({\r\n selector: 'menu',\r\n templateUrl: './menu.component.html',\r\n styleUrls: [\r\n './menu.component.css'\r\n ]\r\n})\r\n\r\nexport class MenuComponent implements OnInit, OnDestroy {\r\n\r\n // Static Properties\r\n static menuByGroupName: { [key: string]: Portal[] } = {};\r\n static portalMenuPreferences: { [key: string]: PortalMenuPreferences } = {};\r\n\r\n // Interface Properties\r\n @Input() menuIdentifier = 'main';\r\n @Input() favoritesFilter: boolean;\r\n @Input() favoritesCheckbox: boolean;\r\n @Input() favoritesDefaults: boolean;\r\n @Output() toggleCloseEvent = new EventEmitter();\r\n @Output() portalCheckboxEvent = new EventEmitter();\r\n\r\n // Properties\r\n subscriptions: Subscription[] = [];\r\n portals: Portal[] = [];\r\n preferences: PortalMenuPreferences;\r\n userPrefDialogRef: MatDialogRef;\r\n myReportsDialogRef: MatDialogRef;\r\n reportFoldersDialogRef: MatDialogRef;\r\n reportSnapshotsDialogRef: MatDialogRef;\r\n gradebookAccessDeniedDialog: MatDialogRef;\r\n v10: boolean;\r\n\r\n // Class Functions\r\n constructor(\r\n private classroom360Service: Classroom360Service,\r\n private userService: UserService,\r\n private student360Service: Student360Service,\r\n private userPreferencesService: UserPreferencesService,\r\n private loaderService: LoaderService,\r\n private studentService: StudentService,\r\n private dialog: MatDialog,\r\n private sharedService: SharedService,\r\n private dataQueryService: DataQueryService,\r\n private classroomSummaryService: ClassroomSummaryService,\r\n private onlineRegService: OnlineRegistrationService,\r\n private router: Router,\r\n private loginService: LoginService,\r\n private reportService: ReportingService,\r\n private reportSnapshots: ReportSnapshotsComponent,\r\n private yearService: YearService,\r\n private onlineRegistrationService: OnlineRegistrationService,\r\n private eFormService: EFormService,\r\n private securityService: SecurityService,\r\n private staffService: StaffService\r\n // private reportingComponent: ReportingComponent;\r\n\r\n ) { }\r\n\r\n get portalMenuPreferences(): PortalMenuPreferences {\r\n return MenuComponent.portalMenuPreferences[this.menuIdentifier];\r\n }\r\n\r\n set portalMenuPreferences(value: PortalMenuPreferences) {\r\n MenuComponent.portalMenuPreferences[this.menuIdentifier] = value;\r\n }\r\n\r\n get menuByGroupName(): Portal[] {\r\n return MenuComponent.menuByGroupName[this.menuIdentifier];\r\n }\r\n\r\n set menuByGroupName(value: Portal[]) {\r\n MenuComponent.menuByGroupName[this.menuIdentifier] = value;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n // Setting the current and previous portals appropriately\r\n this.subscriptions.push(\r\n\r\n // Router events changed\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n const route = event.urlAfterRedirects;\r\n const currentPortal = this.sharedService.currentPortal;\r\n if (this.portals && (!currentPortal || !route.includes(currentPortal.ParentModule + currentPortal.PortalDescription))) {\r\n const matchingPortals = this.portals.filter(portal => route.includes(portal.ParentModule + portal.PortalDescription));\r\n let nextPortal: Portal;\r\n if (matchingPortals.length == 1) {\r\n nextPortal = matchingPortals[0];\r\n } else if (matchingPortals.length > 1) {\r\n const staffMatchingPortal = matchingPortals.find(portal => !portal.applyFilterStudents);\r\n if (staffMatchingPortal) {\r\n nextPortal = staffMatchingPortal;\r\n } else {\r\n nextPortal = matchingPortals.find(portal => portal.applyFilterStudents);\r\n }\r\n }\r\n this.sharedService.currentPortal = nextPortal;\r\n }\r\n }\r\n })\r\n );\r\n\r\n // Synchronizing portal changes\r\n this.subscriptions.push(\r\n this.classroom360Service.observableStaffAssignedPortalsStream$.subscribe(portals => {\r\n if (this.userService.userType == 1\r\n && portals\r\n && portals.length > 0\r\n && (!this.menuByGroupName || this.menuByGroupName.length == 0)) {\r\n this.portals = _.cloneDeep(portals);\r\n if (this.portals) {\r\n if (this.preferences) {\r\n this.arrangeMenus();\r\n } else {\r\n this.subscriptions.push(\r\n this.userPreferencesService.getStaffMenuPreferences().subscribe(preferences => {\r\n this.preferences = JSON.parse(preferences[0]);\r\n this.arrangeMenus();\r\n })\r\n );\r\n }\r\n }\r\n }\r\n }),\r\n this.student360Service.observableParentAssignedPortalsStream$.subscribe(portals => {\r\n if (this.userService.userType != null\r\n && this.userService.userType != 1\r\n && portals\r\n && portals.length > 0\r\n && (!this.menuByGroupName || this.menuByGroupName.length == 0)) {\r\n this.portals = _.cloneDeep(portals);\r\n if (this.portals) {\r\n if (this.preferences) {\r\n this.arrangeMenus();\r\n } else if (this.studentService.selectedStudent) {\r\n this.subscriptions.push(\r\n this.userPreferencesService.getStudentMenuPreferences(this.studentService.selectedStudent.Id).subscribe(preferences => {\r\n if (preferences && preferences.length > 0 && preferences[0] != '') {\r\n this.preferences = JSON.parse(preferences[0]);\r\n }\r\n this.arrangeMenus();\r\n })\r\n );\r\n }\r\n }\r\n }\r\n })\r\n );\r\n\r\n if (this.favoritesFilter) {\r\n this.menuIdentifier = 'favorites';\r\n this.arrangeMenus();\r\n }\r\n this.eFormService.eFormHeadLinePermission = false;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n menuPortalClick(portal: Portal) {\r\n // PRE: a portal is clicked\r\n // POST: routes to the portal\r\n this.toggleCloseEvent.emit();\r\n const selectedStudent = this.studentService.selectedStudent;\r\n const parentModule = portal.ParentModule ? portal.ParentModule : '/student360';\r\n const selectedStaff = this.staffService.selectedStaff;\r\n\r\n // If the Portal is Programs and Services - Single Student then need a studentsearch popup\r\n if (portal.GroupName == 'Programs And Services' && portal.PortalName == 'Single Student') {\r\n portal.applyFilterStudents = true;\r\n }\r\n\r\n // If the Portal is Attendance - By Student then need a studentsearch popup\r\n if ((portal.GroupName == 'Attendance Administration' || portal.GroupName == 'Processing') && portal.PortalName == 'Attendance - By Student') {\r\n portal.applyFilterStudents = true;\r\n }\r\n\r\n if (portal.PortalName == 'Special Services Documents') {\r\n portal.applyFilterStudents = true;\r\n }\r\n\r\n if (portal.PortalDescription == '/scheduleHistory/multipleStudent') {\r\n portal.applyFilterStudents = false;\r\n }\r\n\r\n // TODO: WE SHOULD BE USING THE REQUIRESTUDENTGUARD. THIS IS DEPRECIATED.\r\n if ((!selectedStudent || selectedStudent.Id < 0)\r\n && portal.applyFilterStudents) {\r\n this.studentSearch(parentModule + portal.PortalDescription, portal);\r\n }\r\n else if (!this.v10 && (portal.PortalName == 'Online Registration' || portal.PortalName == 'Update Household Data')) {\r\n let isUHD = false;\r\n if (portal.PortalName == 'Update Household Data') {\r\n isUHD = true;\r\n }\r\n this.onlineRegService.getOnlineRegFamilies(isUHD).subscribe(data => {\r\n if (data.length > 1) {\r\n const dialogBox = this.dialog.open(MultipleFamiliesComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n data: { families: data, isUHD: isUHD },\r\n disableClose: true\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(result => {\r\n subscription.unsubscribe();\r\n if (parseInt(result, 0) > 0) {\r\n this.onlineRegistrationService.isMultipleFamiliesPopupOpened = true;\r\n this.router.navigateByUrl(parentModule + portal.PortalDescription);\r\n }\r\n });\r\n }\r\n else if (data.length == 1) {\r\n this.onlineRegistrationService.isMultipleFamiliesPopupOpened = false;\r\n this.onlineRegistrationService.familyId = data[0].FamilyId;\r\n this.onlineRegistrationService.parentType = data[0].ParentType;\r\n this.router.navigateByUrl(parentModule + portal.PortalDescription);\r\n }\r\n });\r\n\r\n }\r\n else if (portal.PortalName == 'Roster Query') {\r\n this.dataQueryService.rosterQuery = true;\r\n const dialogBox = this.dialog.open(SelectCourseDialogComponent, {\r\n disableClose: true,\r\n hasBackdrop: true,\r\n panelClass: 'tyl-mat-dialog'\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(course => {\r\n subscription.unsubscribe();\r\n if (course) {\r\n this.classroomSummaryService.selectedCourse = course;\r\n this.sharedService.currentPortal = portal;\r\n this.router.navigateByUrl(parentModule + portal.PortalDescription);\r\n }\r\n });\r\n }\r\n // reports\r\n else if (portal.PortalName == 'Report Folders') {\r\n this.reportService.isReportsMenu = true;\r\n\r\n this.reportService.getMyReportFolders().subscribe(reportFolders => {\r\n this.reportService.ReportFolders = reportFolders;\r\n\r\n const dialogBox = this.dialog.open(ReportFoldersComponent, {\r\n disableClose: true,\r\n // hasBackdrop: false,\r\n // panelClass: 'disableModalStyle'\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(course => {\r\n subscription.unsubscribe();\r\n return;\r\n });\r\n\r\n subscription.unsubscribe();\r\n });\r\n }\r\n else if (portal.PortalName == 'My Reports') {\r\n this.reportService.isReportsMenu = true;\r\n\r\n const dialogBox = this.dialog.open(ReportingComponent, {\r\n disableClose: true,\r\n // hasBackdrop: false,\r\n // panelClass: 'disableModalStyle'\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(course => {\r\n subscription.unsubscribe();\r\n return;\r\n\r\n });\r\n }\r\n else if (portal.PortalName == 'Report Snapshots') {\r\n this.reportService.isReportsMenu = true;\r\n\r\n this.reportService.getMyReportFolders().subscribe(reportFolders => {\r\n this.reportService.ReportFolders = reportFolders;\r\n // temp set selected report to first in array to load snaps\r\n this.reportService.SelectedReport = this.reportService.ReportFolders[0].Reports[0];\r\n // this.reportSnapshots.selectedFolderChanged();\r\n this.reportSnapshots.selectedFolderName = 'All';\r\n // this.reportSnapshots.selectedReport.Name = 'All';\r\n\r\n // this.reportSnapshots.selectedFolderName = 'All';\r\n // this.reportSnapshots.selectedReport.Name = 'All';\r\n\r\n const dialogBox = this.dialog.open(ReportSnapshotsComponent, {\r\n disableClose: true,\r\n // hasBackdrop: false,\r\n // panelClass: 'disableModalStyle'\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(course => {\r\n subscription.unsubscribe();\r\n return;\r\n // subscription.unsubscribe();\r\n });\r\n\r\n\r\n });\r\n }\r\n else if (parentModule == '/health360' && portal.PortalDescription.toLowerCase() == '/staffhealth' && !selectedStaff) {\r\n this.StaffSearch(parentModule + portal.PortalDescription, portal);\r\n }\r\n\r\n // All other portals\r\n else {\r\n this.dataQueryService.rosterQuery = false;\r\n let portalDescription = portal.PortalDescription;\r\n if (portal.PortalDescription == '/gradebook') {\r\n portalDescription = this.v10 ? portalDescription + '/V10' : portalDescription + '/V9';\r\n if (this.classroomSummaryService.selectedCourse && this.classroomSummaryService.selectedCourse.MergedForAttendance) {\r\n this.gradebookAccessDeniedDialog = this.dialog.open(GeneralConfirmationComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n this.gradebookAccessDeniedDialog.componentInstance.disableConfirmation = true;\r\n this.gradebookAccessDeniedDialog.componentInstance.headerLabel = 'Access Denied';\r\n this.gradebookAccessDeniedDialog.componentInstance.confirmMessage = 'The gradebook cannot be opened for Merged Attendance Classes';\r\n return;\r\n }\r\n else if (!this.v10 && this.classroomSummaryService.selectedCourse && (this.classroomSummaryService.selectedCourse.GradeScaleExists == false || this.classroomSummaryService.selectedCourse.GradebookAccess == false)) {\r\n const gradebookAccessDeniedDialogRef = this.dialog.open(GradebookAccessDeniedComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '500px',\r\n disableClose: true\r\n });\r\n gradebookAccessDeniedDialogRef.componentInstance.course = this.classroomSummaryService.selectedCourse;\r\n this.classroom360Service.gradebookPortalSelected = true;\r\n return;\r\n }\r\n else {\r\n this.classroom360Service.gradebookPortalSelected = true;\r\n }\r\n }\r\n else if (portal.PortalDescription == '/classroomAttendance' || portal.PortalDescription == '/seatingChart') {\r\n this.classroom360Service.attendancePortalSelected = true;\r\n }\r\n else if (portal.PortalDescription == '/classAnnouncements' || portal.PortalDescription == '/classInformation') {\r\n this.classroom360Service.courseInfoPortalSelected = true;\r\n }\r\n if (!this.v10 && portal != null && portal.ParentModule == '/student360' && selectedStudent != undefined && selectedStudent != null) {\r\n this.yearService.getUserYears(this.userService.userId, this.userService.userType, selectedStudent.Id).subscribe(years => {\r\n this.yearService.loadYears(years);\r\n this.yearService.years = years;\r\n });\r\n }\r\n this.sharedService.currentPortal = portal;\r\n this.router.navigateByUrl(parentModule + portalDescription);\r\n }\r\n }\r\n\r\n childMenuClick(portal: Portal) {\r\n this.menuPortalClick(portal);\r\n }\r\n\r\n portalCheckboxClick(portal: Portal) {\r\n setTimeout(() => {\r\n this.portalCheckboxEvent.emit(portal);\r\n }, 0);\r\n }\r\n\r\n childPortalCheckboxClick(portal: Portal) {\r\n setTimeout(() => {\r\n this.portalCheckboxEvent.emit(portal);\r\n }, 0);\r\n }\r\n\r\n refreshMenu() {\r\n this.classroom360Service.staffAssignedPortals.forEach(portal => {\r\n const index: number = this.userPreferencesService.favoritesPreferences.FavoritePortals.findIndex(favPortal =>\r\n favPortal.Id == portal.Id\r\n || ((favPortal.Id == null || favPortal.Id == 0)\r\n && favPortal.GroupName == portal.GroupName\r\n && favPortal.PortalDescription.split('?')[0] == portal.PortalDescription.split('?')[0]\r\n && favPortal.PortalModule == portal.ParentModule\r\n && favPortal.PortalName == portal.PortalName));\r\n\r\n portal.Selected = index != -1;\r\n });\r\n\r\n this.classroom360Service.updateStaffAssignedPortals(this.classroom360Service.staffAssignedPortals);\r\n }\r\n\r\n // Methods\r\n arrangeMenus() {\r\n // PRE: the portals and preferences are set\r\n // POST: arranges the portals according to the preferences\r\n\r\n // Sorting the portals\r\n this.portals.sort((a, b) =>\r\n a.PortalName.localeCompare(b.PortalName)\r\n );\r\n\r\n // Arranging the portals by group\r\n if (this.v10) {\r\n this.portalMenuPreferences = new PortalMenuPreferences();\r\n this.portalMenuPreferences.PortalMenus = [];\r\n this.menuByGroupName = [];\r\n if (this.userService.staffUserStudentLocked) {\r\n this.portals = this.portals.filter(p => p.ParentModule == '/student360');\r\n }\r\n }\r\n\r\n this.portals.filter(portal => portal.ShowAsMenu && !portal.Deleted && ((this.v10 && portal.IsFavorite) || (!this.v10 && portal.Selected) || !this.favoritesFilter)).forEach(portal => {\r\n // Determining if the portal is a student filtered portal\r\n // TODO: WE SHOULD BE USING THE REQUIRESTUDENTGUARD. THIS IS DEPRECIATED.\r\n if (portal.ParentPortal || portal.GroupName.includes('Student') || portal.PortalName == 'Academic History') {\r\n portal.applyFilterStudents = true;\r\n if (portal.PortalDescription != null && portal.PortalDescription != '' && !portal.PortalDescription.includes('?studentPortal=true')) {\r\n portal.PortalDescription += '?studentPortal=true';\r\n }\r\n }\r\n\r\n // Determining if the portal is an admin portal\r\n if (portal.PortalName == 'Review Behavior Referrals' || portal.PortalName == 'Manage Behavior Referrals') {\r\n portal.PortalDescription += '?adminPortal=true';\r\n }\r\n\r\n if (this.v10) {\r\n // Setting the group up\r\n if (!this.menuByGroupName[portal.GroupName]) {\r\n this.menuByGroupName[portal.GroupName] = [];\r\n }\r\n this.menuByGroupName[portal.GroupName].push(portal);\r\n\r\n // Setting the portal menu header up\r\n if (this.portalMenuPreferences.PortalMenus.filter(o => o.GroupName == portal.GroupName).length == 0) {\r\n let expanded = 1;\r\n if (this.preferences &&\r\n this.preferences.PortalMenus &&\r\n this.preferences.PortalMenus.filter(o => o.GroupName == portal.GroupName && o.Expanded == 0).length > 0) {\r\n expanded = 0;\r\n }\r\n const portalMenu: PortalMenuItem = {\r\n GroupName: portal.GroupName,\r\n Expanded: expanded,\r\n GroupIcon: portal.GroupIcon,\r\n Id: portal.Id\r\n };\r\n this.portalMenuPreferences.PortalMenus.push(portalMenu);\r\n }\r\n }\r\n else if (portal.PortalDescription == '') {\r\n const portalMenuPreference = this.preferences.PortalMenus.filter(o => o.Id == portal.Id || ((o.Id == null || o.Id == 0) && o.GroupName == portal.GroupName))[0];\r\n portal.Expanded = portalMenuPreference == null || portalMenuPreference.Expanded == 1 ? 1 : 0;\r\n }\r\n });\r\n\r\n // Sorting the portal menus\r\n if (this.v10) {\r\n this.portalMenuPreferences.PortalMenus.sort((a, b) =>\r\n a.GroupName.localeCompare(b.GroupName)\r\n );\r\n if (this.userService.staffUserStudentLocked) {\r\n if (this.portalMenuPreferences.PortalMenus.filter(m => m.GroupName == 'My Students').length > 0) {\r\n this.portalMenuPreferences.PortalMenus = this.portalMenuPreferences.PortalMenus.filter(m => m.GroupName == 'My Students');\r\n }\r\n else {\r\n this.portalMenuPreferences.PortalMenus = this.portalMenuPreferences.PortalMenus.filter(m => m.GroupName == 'Students');\r\n }\r\n }\r\n }\r\n else {\r\n this.checkEformPermission();\r\n }\r\n }\r\n\r\n checkEformPermission() {\r\n if (!this.v10) {\r\n this.eFormService.eFormHeadLinePermission = false;\r\n if (this.portals.filter(o => o.PortalName.toLowerCase() == 'e-forms').length > 0) {\r\n this.eFormService.eFormHeadLinePermission = true;\r\n }\r\n this.eFormService.observableeFormHeadLinePermission.next();\r\n }\r\n }\r\n\r\n // TODO: WE SHOULD BE USING THE REQUIRESTUDENTGUARD. THIS IS DEPRECIATED.\r\n studentSearch(redirectUrl: string, portal: Portal) {\r\n switch (portal.PortalName) {\r\n case 'Academic History': {\r\n if (portal.ParentModule == '/student360') {\r\n this.getStudentSearchSchools(\r\n redirectUrl,\r\n portal,\r\n [\r\n PermissionEnum.AcademicHistory\r\n ]\r\n );\r\n }\r\n else {\r\n this.getStudentSearchSchools(\r\n redirectUrl,\r\n portal,\r\n [\r\n PermissionEnum.AcademicHistoryAddEdit,\r\n PermissionEnum.AcademicHistoryView,\r\n PermissionEnum.AcademicHistoryViewAddEdit\r\n ]\r\n );\r\n }\r\n break;\r\n }\r\n case 'Communication Log': {\r\n this.getStudentSearchSchools(\r\n redirectUrl,\r\n portal,\r\n [\r\n PermissionEnum.AddEditAllCommunicationLogsCounselor,\r\n PermissionEnum.AddEditAllCommunicationLogsMyStudents,\r\n PermissionEnum.AddEditAllCommunicationLogsStudentRecord,\r\n PermissionEnum.AddEditMyCommunicationLogCounselor,\r\n PermissionEnum.AddEditMyCommunicationLogMyStudents,\r\n PermissionEnum.AddEditMyCommunicationLogStudentRecord,\r\n PermissionEnum.ViewAllCommunicationLogsCounselor,\r\n PermissionEnum.ViewAllCommunicationLogsMyStudents,\r\n PermissionEnum.ViewAllCommunicationLogsStudentRecord,\r\n PermissionEnum.ViewMyCommunicationLogCounselor,\r\n PermissionEnum.ViewMyCommunicationLogMyStudents,\r\n PermissionEnum.ViewMyCommunicationLogStudentRecord,\r\n PermissionEnum.ViewCommunicationLogsCounselorFunctions\r\n ]\r\n );\r\n break;\r\n }\r\n case 'Student Notes': {\r\n this.getStudentSearchSchools(\r\n redirectUrl,\r\n portal,\r\n [\r\n PermissionEnum.StudentNotesCounselorAddEdit,\r\n PermissionEnum.StudentNotesCounselorView,\r\n PermissionEnum.StudentNotesMyStudentsAddEdit,\r\n PermissionEnum.StudentNotesMyStudentsView,\r\n PermissionEnum.StudentNotesStudentRecordAddEdit,\r\n PermissionEnum.StudentNotesStudentRecordView\r\n ]\r\n );\r\n break;\r\n }\r\n case 'Behavior Referral': {\r\n this.getStudentSearchSchools(\r\n redirectUrl,\r\n portal,\r\n [\r\n PermissionEnum.AddEditDisciplineReferral,\r\n PermissionEnum.AllowEditDeleteReferral,\r\n PermissionEnum.ViewDisciplineReferral,\r\n PermissionEnum.AcceptDisciplineReferrals,\r\n PermissionEnum.ViewAllDisciplineReferrals\r\n ]\r\n );\r\n break;\r\n }\r\n default: {\r\n if (this.v10 && portal.ParentModule == '/student360' && portal.RequiredPrivilegeIDs) {\r\n const schoolIds = this.securityService.getSchoolIdsFromPermissions(portal.RequiredPrivilegeIDs);\r\n const allowedSchools = this.yearService.allDistrictSchools.filter(o => schoolIds.includes(o.Id));\r\n this.studentSearchWithInjectedSchools(redirectUrl, portal, allowedSchools, false);\r\n }\r\n else {\r\n this.studentSearchWithInjectedSchools(redirectUrl, portal, null, true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // TODO: WE SHOULD BE USING THE REQUIRESTUDENTGUARD. THIS IS DEPRECIATED.\r\n getStudentSearchSchools(redirectUrl: string, portal: Portal, permissionIds: number[]) {\r\n if (this.v10) {\r\n const studentSearchSchools: School[] = [];\r\n this.subscriptions.push(this.userService.getUserPermissionByPrivilegeIds(this.yearService.defaultYear.Id, 0, permissionIds).subscribe(permissions => {\r\n permissions.forEach(permission => {\r\n if (permission.SiteId) {\r\n const school = this.yearService.allDistrictSchools.find(s => s.Id == permission.SiteId);\r\n if (school && !studentSearchSchools.includes(school)) {\r\n studentSearchSchools.push(school);\r\n }\r\n }\r\n });\r\n this.studentSearchWithInjectedSchools(redirectUrl, portal, studentSearchSchools, false);\r\n }));\r\n }\r\n else {\r\n this.studentSearchWithInjectedSchools(redirectUrl, portal, null, false);\r\n }\r\n }\r\n\r\n // TODO: WE SHOULD BE USING THE REQUIRESTUDENTGUARD. THIS IS DEPRECIATED.\r\n studentSearchWithInjectedSchools(redirectUrl: string, portal: Portal, schools: School[], useLastSelectedSchool: boolean) {\r\n const dialogBox = this.dialog.open(\r\n StudentSearchComponent,\r\n {\r\n data: {\r\n performRoute: true,\r\n searchAndSelect: false,\r\n redirectUrl: redirectUrl,\r\n schools: schools,\r\n useLastSelectedSchool: useLastSelectedSchool\r\n },\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n }\r\n );\r\n dialogBox.afterClosed().subscribe(data => {\r\n if (data) {\r\n this.sharedService.currentPortal = portal;\r\n }\r\n });\r\n }\r\n\r\n StaffSearch(redirectUrl: string, portal: Portal) {\r\n const dialogBox = this.dialog.open(\r\n StaffSearchComponent,\r\n {\r\n data: {\r\n performRoute: true,\r\n searchAndSelect: false,\r\n redirectUrl: redirectUrl\r\n },\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n }\r\n );\r\n dialogBox.afterClosed().subscribe(data => {\r\n if (data) {\r\n this.sharedService.currentPortal = portal;\r\n }\r\n });\r\n }\r\n\r\n filterCheck(groupName: string) {\r\n if (this.favoritesFilter) {\r\n return this.menuByGroupName[groupName].filter(x => x.Selected).length > 0;\r\n }\r\n else {\r\n return true;\r\n }\r\n\r\n }\r\n\r\n savePreferences(portalMenu: PortalMenuItem) {\r\n // POST: saves the portal preferences\r\n portalMenu.Expanded = portalMenu.Expanded == 1 ? 0 : 1;\r\n const studentId = this.userService.userType == 2 && this.studentService.selectedStudent != null && this.studentService.selectedStudent.Id != null ? this.studentService.selectedStudent.Id : 0;\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(this.portalMenuPreferences));\r\n this.userPreferencesService.saveUserPreferences(studentId, '/OneSISPortalMenuPreferences', xmlStream, 0, '').subscribe();\r\n this.loaderService.isLoading.next(false);\r\n }\r\n\r\n showfavoritesMenu(groupName: string): boolean {\r\n if (this.favoritesFilter && this.menuByGroupName[groupName]) {\r\n let menus: Portal[] = [];\r\n\r\n if (this.v10) {\r\n menus = this.menuByGroupName[groupName].filter(x => (x.IsFavorite));\r\n }\r\n else {\r\n menus = this.menuByGroupName[groupName].filter(x => (x.Selected == true));\r\n }\r\n if (menus.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n collapseExpandAll(expand: boolean) {\r\n const expanded = expand ? 1 : 0;\r\n if (this.v10) {\r\n this.portalMenuPreferences.PortalMenus.forEach(obj => {\r\n obj.Expanded = expanded;\r\n });\r\n }\r\n else {\r\n this.portals.forEach(obj => {\r\n obj.Expanded = expanded;\r\n });\r\n }\r\n }\r\n}\r\n","export class Address {\r\n\r\n // Properties\r\n\t$id: number;\r\n\tAddressId: number;\r\n\tApartmentNumber: number | string;\r\n\tApartmentNumberLastChange: number | string;\r\n\tApartmentNumberNew: number | string;\r\n\tCity: string;\r\n\tCityLastChange: string;\r\n\tCityNew: string;\r\n\tCountry: string;\r\n\tCountryLastChange: string;\r\n\tCountryNew: string;\r\n\tDirection: string;\r\n\tDirectionLastChange: string;\r\n\tDirectionNew: string;\r\n\tGroupIdentifier: string;\r\n\tHomePhone1: string;\r\n\tHomePhone1LastChange: string;\r\n\tHomePhone1New: string;\r\n\tHomePhone2: string;\r\n\tHomePhone2LastChange: string;\r\n\tHomePhone2New: string;\r\n\tHouseNumber: number | string;\r\n\tHouseNumberLastChange: number | string;\r\n\tHouseNumberNew: number | string;\r\n\tId: number;\r\n\tLanguageAtHome: string;\r\n\tLanguageAtHomeLastChange: string;\r\n\tLanguageAtHomeNew: string;\r\n\tPhone: string;\r\n\tPhoneNew: string;\r\n\tPOBox: string;\r\n\tPOBoxAddressCity: string;\r\n\tPOBoxAddressCityLastChange: string;\r\n\tPOBoxAddressCityNew: string;\r\n\tPOBoxAddressLine1: string;\r\n\tPOBoxAddressLine1LastChange: string;\r\n\tPOBoxAddressLine1New: string;\r\n\tPOBoxAddressLine2: string;\r\n\tPOBoxAddressLine2LastChange: string;\r\n\tPOBoxAddressLine2New: string;\r\n\tPOBoxAddressLine3: string;\r\n\tPOBoxAddressLine3LastChange: string;\r\n\tPOBoxAddressLine3New: string;\r\n\tPOBoxAddressState: string;\r\n\tPOBoxAddressStateLastChange: string;\r\n\tPOBoxAddressStateNew: string;\r\n\tPOBoxAddressZip: number | string;\r\n\tPOBoxAddressZipLastChange: number | string;\r\n\tPOBoxAddressZipNew: number | string;\r\n\tPOBoxLastChange: string;\r\n\tPOBoxNew: string;\r\n\tPrimaryAddress: boolean;\r\n\tSameAsPrimaryResidence: boolean;\r\n\tSameAsPrimaryResidenceOld: boolean;\r\n\tSendMailingsInSpanish: boolean;\r\n\tSendMailingsInSpanishLastChange: boolean;\r\n\tSendMailingsInSpanishNew: boolean;\r\n\tState: string;\r\n\tStateLastChange: string;\r\n\tStateNew: string;\r\n\tStreetName: string;\r\n\tStreetNameLastChange: string;\r\n\tStreetNameNew: string;\r\n\tStreetType: string;\r\n\tStreetTypeLastChange: string;\r\n\tStreetTypeNew: string;\r\n\tSyncAddress: boolean;\r\n\tZipCode: string;\r\n\tZipCode2: string;\r\n\tZipCode2LastChange: string;\r\n\tZipCode2New: string;\r\n\tZipCodeLastChange: string;\r\n ZipCodeNew: string;\r\n\r\n // Methods\r\n isMatching(other: Address): boolean {\r\n // PRE: ab address to match this with\r\n // POST: tells you whether they are matching (NOT EQUAL!!!)\r\n return this.POBoxLastChange == other.POBoxLastChange &&\r\n this.HouseNumberLastChange == other.HouseNumberLastChange &&\r\n this.DirectionLastChange == other.DirectionLastChange &&\r\n this.StreetNameLastChange == other.StreetNameLastChange &&\r\n this.StreetTypeLastChange == other.StreetTypeLastChange &&\r\n this.ApartmentNumberLastChange == other.ApartmentNumberLastChange &&\r\n this.CityLastChange == other.CityLastChange &&\r\n this.StateLastChange == other.StateLastChange &&\r\n this.ZipCodeLastChange == other.ZipCodeLastChange &&\r\n this.ZipCode2LastChange == other.ZipCode2LastChange &&\r\n this.CountryLastChange == other.CountryLastChange &&\r\n this.POBoxNew == other.POBoxNew &&\r\n this.HouseNumberNew == other.HouseNumberNew &&\r\n this.DirectionNew == other.DirectionNew &&\r\n this.StreetNameNew == other.StreetNameNew &&\r\n this.StreetTypeNew == other.StreetTypeNew &&\r\n this.ApartmentNumberNew == other.ApartmentNumberNew &&\r\n this.CityNew == other.CityNew &&\r\n this.StateNew == other.StateNew &&\r\n this.ZipCodeNew == other.ZipCodeNew &&\r\n this.ZipCode2New == other.ZipCode2New &&\r\n this.CountryNew == other.CountryNew &&\r\n\t\t\tthis.PhoneNew == other.PhoneNew;\r\n }\r\n\r\n changed(): boolean {\r\n // POST: returns true if the address has changed\r\n return !(this.POBox == this.POBoxNew &&\r\n this.HouseNumber == this.HouseNumberNew &&\r\n this.Direction == this.DirectionNew &&\r\n this.StreetName == this.StreetNameNew &&\r\n this.StreetType == this.StreetTypeNew &&\r\n this.ApartmentNumber == this.ApartmentNumberNew &&\r\n this.City == this.CityNew &&\r\n this.State == this.StateNew &&\r\n this.ZipCode == this.ZipCodeNew &&\r\n this.ZipCode2 == this.ZipCode2New &&\r\n this.Country == this.CountryNew &&\r\n\t\t\tthis.Phone == this.PhoneNew);\r\n }\r\n\r\n\tclear() {\r\n\t\t// PRE: an address to clear\r\n\t\t// POST: clears out the address' variables\r\n\t\tthis.POBoxNew = '';\r\n\t\tthis.HouseNumberNew = '';\r\n\t\tthis.DirectionNew = '';\r\n\t\tthis.StreetNameNew = '';\r\n\t\tthis.StreetTypeNew = '';\r\n\t\tthis.ApartmentNumberNew = '';\r\n\t\tthis.CityNew = '';\r\n\t\tthis.StateNew = '';\r\n\t\tthis.ZipCodeNew = '';\r\n\t\tthis.ZipCode2New = '';\r\n\t\tthis.CountryNew = '';\r\n\t\tthis.HomePhone1New = '';\r\n\t\tthis.HomePhone2New = '';\r\n\t\tthis.LanguageAtHomeNew = '0';\r\n\t\tthis.POBoxAddressLine1New = '';\r\n\t\tthis.POBoxAddressLine2New = '';\r\n\t\tthis.POBoxAddressLine3New = '';\r\n\t\tthis.POBoxAddressCityNew = '';\r\n\t\tthis.POBoxAddressStateNew = '';\r\n\t\tthis.POBoxAddressZipNew = '';\r\n\t\tthis.PhoneNew = '';\r\n\t}\r\n\r\n\tsetEqual(address: Address) {\r\n\t\t// PRE: an address to set this equal to\r\n\t\t// POST: sets the first address to the second address\r\n\t\t// NOTE: we're not using Object.assign because not every field is copied\r\n\t\tthis.POBoxNew = address.POBoxNew;\r\n\t\tthis.HouseNumberNew = address.HouseNumberNew;\r\n\t\tthis.DirectionNew = address.DirectionNew;\r\n\t\tthis.StreetNameNew = address.StreetNameNew;\r\n\t\tthis.StreetTypeNew = address.StreetTypeNew;\r\n\t\tthis.ApartmentNumberNew = address.ApartmentNumberNew;\r\n\t\tthis.CityNew = address.CityNew;\r\n\t\tthis.StateNew = address.StateNew;\r\n\t\tthis.ZipCodeNew = address.ZipCodeNew;\r\n\t\tthis.ZipCode2New = address.ZipCode2New;\r\n\t\tthis.CountryNew = address.CountryNew;\r\n\t\tthis.HomePhone1New = address.HomePhone1New;\r\n\t\tthis.HomePhone2New = address.HomePhone2New;\r\n\t\tthis.LanguageAtHomeNew = address.LanguageAtHomeNew;\r\n\t\tthis.POBoxAddressLine1New = address.POBoxAddressLine1New;\r\n\t\tthis.POBoxAddressLine2New = address.POBoxAddressLine2New;\r\n\t\tthis.POBoxAddressLine3New = address.POBoxAddressLine3New;\r\n\t\tthis.POBoxAddressCityNew = address.POBoxAddressCityNew;\r\n\t\tthis.POBoxAddressStateNew = address.POBoxAddressStateNew;\r\n\t\tthis.POBoxAddressZipNew = address.POBoxAddressZipNew;\r\n\t\tthis.PhoneNew = address.PhoneNew;\r\n\t}\r\n\r\n\tsetAsBasis(address: Address) {\r\n\t\t// PRE: an address to set as the basis\r\n\t\t// POST: sets this address to that address\r\n\t\t// NOTE: cannot use object.assign as not every value is set\r\n\t\tthis.setEqual(address);\r\n\t\tthis.POBox = address.POBox;\r\n\t\tthis.HouseNumber = address.HouseNumber;\r\n\t\tthis.Direction = address.Direction;\r\n\t\tthis.StreetName = address.StreetName;\r\n\t\tthis.StreetType = address.StreetType;\r\n\t\tthis.ApartmentNumber = address.ApartmentNumber;\r\n\t\tthis.City = address.City;\r\n\t\tthis.State = address.State;\r\n\t\tthis.ZipCode = address.ZipCode;\r\n\t\tthis.ZipCode2 = address.ZipCode2;\r\n\t\tthis.Country = address.Country;\r\n\t\tthis.HomePhone1 = address.HomePhone1;\r\n\t\tthis.HomePhone2 = address.HomePhone2;\r\n\t\tthis.LanguageAtHome = address.LanguageAtHome;\r\n\t\tthis.POBoxAddressLine1 = address.POBoxAddressLine1;\r\n\t\tthis.POBoxAddressLine2 = address.POBoxAddressLine2;\r\n\t\tthis.POBoxAddressLine3 = address.POBoxAddressLine3;\r\n\t\tthis.POBoxAddressCity = address.POBoxAddressCity;\r\n\t\tthis.POBoxAddressState = address.POBoxAddressState;\r\n\t\tthis.POBoxAddressZip = address.POBoxAddressZip;\r\n\t\tthis.Phone = address.Phone;\r\n\t}\r\n\r\n\tsetAsLastChange(address: Address) {\r\n\t\t// PRE: an address to set as this address' last change\r\n\t\t// POST: sets this addresses last change to the values of address2\r\n\t\t// NOTE: we're not using Object.assign because not every field is copied\r\n\t\tthis.POBoxLastChange = address.POBoxNew;\r\n\t\tthis.HouseNumberLastChange = address.HouseNumberNew;\r\n\t\tthis.DirectionLastChange = address.DirectionNew;\r\n\t\tthis.StreetNameLastChange = address.StreetNameNew;\r\n\t\tthis.StreetTypeLastChange = address.StreetTypeNew;\r\n\t\tthis.ApartmentNumberLastChange = address.ApartmentNumberNew;\r\n\t\tthis.CityLastChange = address.CityNew;\r\n\t\tthis.StateLastChange = address.StateNew;\r\n\t\tthis.ZipCodeLastChange = address.ZipCodeNew;\r\n\t\tthis.ZipCode2LastChange = address.ZipCode2New;\r\n\t\tthis.CountryLastChange = address.CountryNew;\r\n\t\tthis.HomePhone1LastChange = address.HomePhone1New;\r\n\t\tthis.HomePhone2LastChange = address.HomePhone2New;\r\n\t\tthis.LanguageAtHomeLastChange = address.LanguageAtHomeNew;\r\n\t\tthis.POBoxAddressLine1LastChange = address.POBoxAddressLine1New;\r\n\t\tthis.POBoxAddressLine2LastChange = address.POBoxAddressLine2New;\r\n\t\tthis.POBoxAddressLine3LastChange = address.POBoxAddressLine3New;\r\n\t\tthis.POBoxAddressCityLastChange = address.POBoxAddressCityNew;\r\n\t\tthis.POBoxAddressStateLastChange = address.POBoxAddressStateNew;\r\n\t\tthis.POBoxAddressZipLastChange = address.POBoxAddressZipNew;\r\n\t}\r\n\r\n\treset() {\r\n\t\t// PRE: an address that has its values set\r\n\t\t// POST: resets the address to its initial values\r\n\t\tthis.POBoxNew = this.POBox;\r\n\t\tthis.HouseNumberNew = this.HouseNumber;\r\n\t\tthis.DirectionNew = this.Direction;\r\n\t\tthis.StreetNameNew = this.StreetName;\r\n\t\tthis.StreetTypeNew = this.StreetType;\r\n\t\tthis.ApartmentNumberNew = this.ApartmentNumber;\r\n\t\tthis.CityNew = this.City;\r\n\t\tthis.StateNew = this.State;\r\n\t\tthis.ZipCodeNew = this.ZipCode;\r\n\t\tthis.ZipCode2New = this.ZipCode2;\r\n\t\tthis.CountryNew = this.Country;\r\n\t\tthis.HomePhone1New = this.HomePhone1;\r\n\t\tthis.HomePhone2New = this.HomePhone2;\r\n\t\tthis.LanguageAtHomeNew = this.LanguageAtHome;\r\n\t\tthis.POBoxAddressLine1New = this.POBoxAddressLine1;\r\n\t\tthis.POBoxAddressLine2New = this.POBoxAddressLine2;\r\n\t\tthis.POBoxAddressLine3New = this.POBoxAddressLine3;\r\n\t\tthis.POBoxAddressCityNew = this.POBoxAddressCity;\r\n\t\tthis.POBoxAddressStateNew = this.POBoxAddressState;\r\n\t\tthis.POBoxAddressZipNew = this.POBoxAddressZip;\r\n\t\tthis.POBoxLastChange = this.POBox;\r\n\t\tthis.HouseNumberLastChange = this.HouseNumber;\r\n\t\tthis.DirectionLastChange = this.Direction;\r\n\t\tthis.StreetNameLastChange = this.StreetName;\r\n\t\tthis.StreetTypeLastChange = this.StreetType;\r\n\t\tthis.ApartmentNumberLastChange = this.ApartmentNumber;\r\n\t\tthis.CityLastChange = this.City;\r\n\t\tthis.StateLastChange = this.State;\r\n\t\tthis.ZipCodeLastChange = this.ZipCode;\r\n\t\tthis.ZipCode2LastChange = this.ZipCode2;\r\n\t\tthis.CountryLastChange = this.Country;\r\n\t\tthis.HomePhone1LastChange = this.HomePhone1;\r\n\t\tthis.HomePhone2LastChange = this.HomePhone2;\r\n\t\tthis.LanguageAtHomeLastChange = this.LanguageAtHome;\r\n\t\tthis.POBoxAddressLine1LastChange = this.POBoxAddressLine1;\r\n\t\tthis.POBoxAddressLine2LastChange = this.POBoxAddressLine2;\r\n\t\tthis.POBoxAddressLine3LastChange = this.POBoxAddressLine3;\r\n\t\tthis.POBoxAddressCityLastChange = this.POBoxAddressCity;\r\n\t\tthis.POBoxAddressStateLastChange = this.POBoxAddressState;\r\n\t\tthis.POBoxAddressZipLastChange = this.POBoxAddressZip;\r\n\t\tthis.PhoneNew = this.Phone;\r\n\t}\r\n}\r\n","export class Attachment {\r\n id: number;\r\n\r\n // These are used for our files\r\n AssignmentId: number;\r\n\tAttachmentAddedBy: string;\r\n\tAttachmentAddedOn = new Date();\r\n\tAttachmentDescription: string;\r\n\tAttachmentFileBase: string;\r\n\tAttachmentFileMimeType: string;\r\n\tAttachmentFileName: string;\r\n AttachmentId: number;\r\n AttachmentNotes: string;\r\n AttachmentNotesSpanish: string; // NOTE: currently only provided by OR, but the record contains the data\r\n AttachmentNotesFrench: string; // NOTE: currently only provided by OR, but the record contains the data\r\n AttachmentRequired: boolean;\r\n DocumentId: number;\r\n DocumentBase64: string;\r\n DocumentFileId: number;\r\n\tDocumentMimeType: string;\r\n\tDocumentName: string;\r\n\tDocumentType: string;\r\n\tDocumentTypeId: number;\r\n Id: number;\r\n\r\n // Local Properties\r\n\tDeleted = false;\r\n\r\n // These are used for uploads universally\r\n MyFile: any; // This is a user's file upload\r\n MyFileName: string;\r\n MyFileBase64String: string; // This is the user's file upload as a string\r\n OriginalFileName: string; // This is the file name before the user applies a new name for our end\r\n Base64String: string;\r\n\r\n // These are used for a parent's file\r\n FileDescription: string; // The description of the user's file\r\n FileExtension: string; // The file's type\r\n FileName: string; // The file's name\r\n MemberId: number; // This is the user who the attachment pertains to\r\n UploadedDate = new Date(); // This is the date the user uploaded the file\r\n CreateDate: string;\r\n\r\n // These are used for a teacher's file (don't ask why...)\r\n FileType: string; // The file's type\r\n PortalCommunicationId: number; // I have no idea\r\n Description: string; // The file's description\r\n\r\n // Used for Communication Log files\r\n Comment: string;\r\n ViewFileOnWebsite: boolean;\r\n CommunicationLogId: number;\r\n MassEmailAttachment: boolean;\r\n}\r\n","export class TylTranslation {\r\n\tID: number;\r\n\tLanguage_ID: number;\r\n\tEnglish: string;\r\n\tTranslation: string;\r\n\tRichText: boolean;\r\n\r\n\r\n\tconstructor(textToTranslate: string, richText: boolean = false) {\r\n\t\tthis.English = textToTranslate;\r\n\t\tthis.RichText = richText;\r\n\t}\r\n}\r\n","
\r\n
Tyler SIS
\r\n
\r\n
\r\n \r\n \r\n
\r\n
","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'overlay-header',\r\n templateUrl: './overlay-header.component.html',\r\n styleUrls: ['./overlay-header.component.css']\r\n})\r\nexport class OverlayHeaderComponent implements OnInit {\r\n\r\n @Input() showCloseButton: boolean;\r\n @Output() closeClick: EventEmitter = new EventEmitter();\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","
\r\n\r\n \r\n
\r\n

\r\n {{string}}\r\n

\r\n \r\n
\r\n\r\n \r\n
\r\n

{{getPageTitle()}}

\r\n
\r\n
\r\n Academic Year - {{ defaultYear.Description }}\r\n
\r\n
\r\n \r\n Academic Year - {{ defaultYear.Description }}\r\n \r\n
\r\n
\r\n Academic Year - {{ defaultYear.Description }}\r\n
\r\n
\r\n
\r\n \r\n {{defaultYear.SchoolName}} - {{defaultYear.Description}}\r\n \r\n \r\n {{defaultYear.SchoolName}} - {{defaultYear.Description}}\r\n \r\n
\r\n
\r\n
\r\n","import { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Router } from '@angular/router';\r\nimport { RouteInfo } from './../routeInfo';\r\nimport { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { YearService } from '../year/year.service';\r\nimport { Year } from '../year/year.model';\r\nimport { UserService } from '../user/user.service';\r\n\r\n/**\r\n * This component generates a page header for C360 or S360.\r\n * Unlike the student header, this does NOT include a student portrait.\r\n * You may also specify what strings show up on the left-hand side of the header.\r\n *\r\n * @input leftStrings: these strings show up on the left side of the header.\r\n * @input leftStringSize: the font size of the left strings.\r\n * @input leftStringColor: the color of the left strings.\r\n * @Input pageTitle: the title the shows on the right\r\n * @input classroomPage: this indicates whether this page is part of C360. It is true by default.\r\n *\r\n * This component also supports content projection, should you prefer to use that.\r\n * The projected content is placed on the left side of the header.\r\n */\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'page-header',\r\n templateUrl: './page-header.component.html',\r\n styleUrls: ['./page-header.component.css']\r\n})\r\nexport class PageHeaderComponent implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n @Input() leftStrings: string[] = [];\r\n @Input() leftStringSize = '18px';\r\n @Input() leftStringColor = 'inherit';\r\n @Input() classroomPage = true;\r\n @Input() pageTitle: string;\r\n @Input() forceYearDisplay: boolean;\r\n defaultYear: Year;\r\n courseRequestYear: Year;\r\n userType;\r\n screenWidth = 0;\r\n\r\n // Class Funtions\r\n constructor(\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private router: Router\r\n ) {\r\n\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.userType = this.userService.currentUser.UserType;\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.yearService.observableDefaultYearStream$.subscribe(() => {\r\n this.defaultYear = this.yearService.defaultYear;\r\n });\r\n this.screenWidth = screen != null ? screen.width : 0;\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n // Methods\r\n getPageTitle() {\r\n // POST: returns the title of this page\r\n return (this.pageTitle == undefined) ? RouteInfo.getPageTitle(this.router.url) : this.pageTitle;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'calculatePercent'\r\n})\r\nexport class CalculatePercentPipe implements PipeTransform {\r\n\r\n transform(value: number, total: number): string {\r\n if (value > 0 && total > 0) {\r\n return (100 * value / total).toFixed(0) + '%';\r\n }\r\n else {\r\n if (total > 0) {\r\n return '0%';\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'ellipsis'\r\n})\r\nexport class EllipsisPipe implements PipeTransform {\r\n\r\n transform(val: string, args: number, showEllipsis = false) {\r\n if (val != undefined && val != null) {\r\n if (args === undefined) {\r\n return val;\r\n }\r\n\r\n if (val.length > args) {\r\n return val.substring(0, args) + '...';\r\n }\r\n else if (showEllipsis == true) {\r\n return val + '...';\r\n }\r\n else {\r\n return val;\r\n }\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { EFormService } from '../e-forms/e-form.service';\r\nimport { EFormControl } from '../e-forms/e-form-control.model';\r\n\r\n@Pipe({\r\n name: 'getDesignerControlName'\r\n})\r\nexport class GetDesignerControlNamePipe implements PipeTransform {\r\n\r\n constructor(private eFormService: EFormService) { }\r\n transform(control: EFormControl, args: any[]): string {\r\n return this.eFormService.formatControlName(control);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'highlightSearch'\r\n})\r\nexport class HighlightSearchPipe implements PipeTransform {\r\n\r\n transform(value: string, args: string): any {\r\n if (!args) {\r\n return value;\r\n }\r\n\r\n const regex = new RegExp(args, 'gi');\r\n const match = value.match(regex);\r\n\r\n if (!match) {\r\n return value;\r\n }\r\n\r\n return value.replace(regex, `${match[0]}`);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'incidentType'\r\n})\r\nexport class IncidentTypePipe implements PipeTransform {\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n transform(incidentType: string): string {\r\n if(incidentType == 'Offender' || incidentType == 'Offenders') { \r\n return 'Responsible'; // ONE-7360 Changed from Offender to Responsible\r\n }\r\n else {\r\n return incidentType;\r\n }\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'phoneNumber'})\r\nexport class PhoneNumberPipe implements PipeTransform {\r\n transform(value: number): string {\r\n const numString = (value) ? value.toString().trim() : '';\r\n const match = numString.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return '(' + match[1] + ') ' + match[2] + '-' + match[3];\r\n }\r\n // If we don't pass the regEx give back the original value as a string\r\n return numString;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'replace'\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n\r\n transform(text: string, stringToFind: string | RegExp, replacementString: string): string {\r\n let newString = text ? text : '';\r\n if (stringToFind) {\r\n newString = newString.replace(stringToFind, replacementString ? replacementString : '');\r\n }\r\n return newString;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'safeHtml' })\r\nexport class SafeHtml implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(html) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'safeResourceUrl' })\r\nexport class SafeResourceUrlPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(url: string) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SharedService } from '../shared.service';\r\nimport { TranslationService } from '../translation/translation.service';\r\n\r\n@Pipe({\r\n\tname: 'tylTranslate'\r\n})\r\nexport class TylTranslatePipe implements PipeTransform {\r\n\r\n\tconstructor(private sharedService: SharedService,\r\n\t\t\t\tprivate translationService: TranslationService) { }\r\n\r\n\ttransform(englishToTranslate: string): string {\r\n\r\n\t\tif(!this.translationService.overrideTranslationPipe) {\r\n\t\t\tlet index: number = this.translationService.currentLanguageTranslations.findIndex(o => o.English.trim() == englishToTranslate.trim());\r\n\r\n\t\t\tif(index != -1) {\r\n\t\t\t\treturn this.translationService.currentLanguageTranslations[index].Translation;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif(this.translationService.revertToEnglish) {\r\n\t\t\t\tlet index: number = this.translationService.currentLanguageTranslations.findIndex(o => o.Translation && o.Translation.trim() == englishToTranslate.trim());\r\n\r\n\t\t\t\tif(index != -1) {\r\n\t\t\t\t\treturn this.translationService.currentLanguageTranslations[index].English;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet index: number = this.translationService.overrideTranslations.findIndex(o => o.English.trim() == englishToTranslate.trim());\r\n\r\n\t\t\t\tif(index != -1) {\r\n\t\t\t\t\treturn this.translationService.overrideTranslations[index].Translation;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn englishToTranslate;\r\n\t}\r\n}\r\n","export class Portal {\r\n\r\n\t// Server Properties\r\n\t$id: string | null;\r\n\tAnnouncementsOnly: boolean;\r\n\tDeleted: boolean | null;\r\n\tDisabled: boolean | null;\r\n\tDisabledMessage: string | null;\r\n\tIconType: any | null;\r\n\tId: number | null;\r\n\tIsLive: boolean | null;\r\n\tIsMyLinksTile: boolean | null;\r\n\tFavorite: boolean | null;\r\n\tOpenInNewWindow: boolean | null;\r\n\tParentId: number | null;\r\n\tParentPortal: boolean;\r\n\tPortalDescription: string | null;\r\n\tPortalName: string | null;\r\n\tShowAsMenu: boolean | null;\r\n\tShowAsTile: boolean | null;\r\n\tShowonCurrentYear: boolean | null;\r\n\tShowonFutureYear: boolean | null;\r\n\tShowonPastYear: boolean | null;\r\n\tTileAddedOn: Date | null;\r\n\tTileColor: any | null;\r\n\tTileIcon: any | null;\r\n\tTileImageFile: any | null;\r\n\tTileOrder: number | null;\r\n\tTileType: any | null;\r\n\tTransportationYear: any | null;\r\n\tShowIcon: boolean | null;\r\n\tSelected = false;\r\n\tGroupName: string | null;\r\n\tMenuIcon: string | null;\r\n\tMenuDisabledIcon: string | null;\r\n GroupIcon: string | null;\r\n\tStudent_ID: number;\r\n\tIsFavorite = false;\r\n\tGroupNameFavorite: string | null;\r\n\tNoSchoolPolicy: boolean;\r\n\tRequiredPrivilegeIDs: number[];\r\n\r\n\t// Non DTO Fields:\r\n\tinnerHTML: string;\r\n\tParentModule: string;\r\n\tTileFontColor: string;\r\n\r\n\t// Local Properties\r\n\tapplyFilterStudents = false;\r\n\tisDefaultSelected = false;\r\n\tExpanded = 1;\r\n}\r\n","import { ProfileNode } from './profile-node';\r\n\r\nexport class Topic {\r\n\r\n // Properties\r\n TopicId: number;\r\n children: ProfileNode[] = [];\r\n topLevelNode: ProfileNode;\r\n subLevelNodes: ProfileNode[] = [];\r\n first: boolean;\r\n last: boolean;\r\n\r\n // Class Functions\r\n get sequence(): number {\r\n if (this.topLevelNode) {\r\n return this.topLevelNode.data.newSequence != undefined ? this.topLevelNode.data.newSequence : this.topLevelNode.data.Sequence;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n}","import { Profile } from './profile.model';\r\nimport { Topic } from './topic';\r\nimport { TylerMatTableDataSource } from './../../shared-components/angular-material/extended.class';\r\n\r\nexport class ProfileNode {\r\n data: Profile;\r\n parent: ProfileNode;\r\n children: ProfileNode[] = [];\r\n subTableData: TylerMatTableDataSource;\r\n selectedRow: ProfileNode;\r\n topic: Topic;\r\n first: boolean;\r\n last: boolean;\r\n\r\n // Methods\r\n hasChildren(): boolean {\r\n \t// POST: returns true if this node has children\r\n return this.subTableData && this.subTableData.data.length > 0;\r\n }\r\n\r\n hasParent(profile: ProfileNode): boolean {\r\n \t// PRE: a profile node\r\n\t\t// POST: returns true if the profile is a parent of this node\r\n \tif (this.parent == null) {\r\n \t\treturn false;\r\n\t\t} else if (this.parent == profile) {\r\n \t\treturn true;\r\n\t\t} else {\r\n \t\treturn this.parent.hasParent(profile);\r\n\t\t}\r\n\t}\r\n\r\n checkSelectedRow() {\r\n // POST: checks if the row is selected by consulting the parents\r\n let previousSelected: ProfileNode = this;\r\n let currentNode: ProfileNode = this.parent;\r\n while (currentNode) {\r\n if (currentNode.selectedRow != previousSelected) {\r\n return false;\r\n }\r\n previousSelected = currentNode;\r\n currentNode = currentNode.parent;\r\n }\r\n return true;\r\n }\r\n\r\n getNestedLayers(layerCount = 0): number {\r\n // PRE: a layercount for recursion\r\n // POST: returns the depth of the deepest node in the tree to which this node belongs\r\n if (this.data.ParentID > 0) {\r\n if (this.parent) {\r\n return this.parent.getNestedLayers(layerCount + 1);\r\n }\r\n } else if (this.data.ProfileContentId > 0) {\r\n return layerCount + 1;\r\n } else {\r\n return layerCount;\r\n }\r\n }\r\n\r\n sortChildren() {\r\n // POST: sorts the children of this node in order of sequence\r\n this.children.sort((childA, childB) => {\r\n const childASequence = childA.data.newSequence != undefined ? childA.data.newSequence : childA.data.Sequence;\r\n const childBSequence = childB.data.newSequence != undefined ? childB.data.newSequence : childB.data.Sequence;\r\n if (childASequence < childBSequence) {\r\n return -1;\r\n } else if (childASequence > childBSequence) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n for (let i = 0; i < this.children.length; i++) {\r\n const child = this.children[i];\r\n if (i == 0) {\r\n child.first = true;\r\n } else {\r\n child.first = false;\r\n }\r\n if (i == this.children.length - 1) {\r\n child.last = true;\r\n } else {\r\n child.last = false;\r\n }\r\n child.sortChildren();\r\n }\r\n }\r\n\r\n getOpenedNodes(): Profile[] {\r\n // POST: obtains the opened class information beneath this now\r\n const openInformation: Profile[] = [];\r\n this.children.forEach(child => {\r\n if (this.subTableData.checkExpanded(child)) {\r\n openInformation.push(child.data);\r\n }\r\n openInformation.push.apply(openInformation, child.getOpenedNodes());\r\n });\r\n return openInformation;\r\n }\r\n\r\n openNodes(nodeData: Profile[]) {\r\n // POST: opens the subnodes that match the data\r\n this.children.forEach(child => {\r\n if (nodeData.find(data => data.RowId == child.data.RowId)) {\r\n this.subTableData.toggleExpanded(child);\r\n child.openNodes(nodeData);\r\n }\r\n });\r\n }\r\n}","import { ErrorList } from './../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, Inject, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { Profile } from '../profile.model';\r\nimport { ProfileService } from '../profile.service';\r\n\r\n@Component({\r\n selector: 'edit-topic',\r\n templateUrl: './edit-topic-dialog.component.html',\r\n styleUrls: [\r\n './edit-topic-dialog.component.css'\r\n ]\r\n})\r\nexport class EditTopicDialogComponent implements OnInit {\r\n\r\n // Properties\r\n information: Profile;\r\n errors: ErrorList[] = [];\r\n originalTitle: string;\r\n originalStatus: string;\r\n @ViewChild('titleField', { read: ElementRef, static: true }) titleField: ElementRef;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n private profileService: ProfileService,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n this.information = this.data.information;\r\n this.originalTitle = this.information.Title;\r\n this.originalStatus = this.information.Status;\r\n }\r\n\r\n save() {\r\n // PRE: the save button is clicked\r\n // POST: updates the profile on the server and closes the dialogBox\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.profileService.updateProfile(this.information).subscribe(() => {\r\n this.dialogBox.close();\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: sets the data to the original title and closes the dialog box\r\n this.information.Title = this.originalTitle;\r\n this.information.Status = this.originalStatus;\r\n this.dialogBox.close();\r\n }\r\n\r\n setStatus() {\r\n // PRE: the active checkbox is clicked\r\n // POST: sets the status to reflect the active\r\n if (this.information.Status == 'A') {\r\n this.information.Status = 'I';\r\n } else {\r\n this.information.Status = 'A';\r\n }\r\n }\r\n\r\n // Methods\r\n validate() {\r\n // POST: sets the errors\r\n this.errors = [];\r\n if (!this.information.Title) {\r\n this.errors.push({\r\n fieldName: 'Title',\r\n fieldRef: this.titleField,\r\n errorMsg: 'Title is required.'\r\n });\r\n }\r\n }\r\n}","\r\n

\r\n Edit Topic\r\n

\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Active\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { Profile } from '../profile.model';\r\nimport { ProfileService } from '../profile.service';\r\n\r\n@Component({\r\n selector: 'delete-topic',\r\n templateUrl: './delete-topic-dialog.component.html',\r\n styleUrls: [\r\n './delete-topic-dialog.component.css'\r\n ]\r\n})\r\nexport class DeleteTopicDialogComponent implements OnInit {\r\n\r\n // Properties\r\n information: Profile;\r\n deleted: boolean;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private profileService: ProfileService\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n this.information = this.data.information;\r\n }\r\n\r\n delete() {\r\n // PRE: the delete button is clicked\r\n // POST: deletes the information from the server, sets deleted to true, and closes the dialog box\r\n this.information.DelStatus = true;\r\n this.profileService.updateProfile(this.information).subscribe(() => {\r\n this.deleted = true;\r\n this.dialogBox.close();\r\n });\r\n }\r\n\r\n cancel() {\r\n // PRE: the close button is clicked\r\n // POTS: sets deleted to false and closes the dialog box\r\n this.deleted = false;\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n}","\r\n

\r\n Delete Topic\r\n

\r\n\r\n\r\n\r\n

\r\n This will delete the topic\r\n

\r\n

\r\n {{information.Title}}\r\n

\r\n

\r\n and all associated content below it.\r\n

\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { ProfileService } from '../profile.service';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { ProfileAttachment } from '../profile-attachment.model';\r\n\r\n@Component({\r\n selector: 'delete-profile-attachment',\r\n templateUrl: './delete-profile-attachment-dialog.component.html',\r\n styleUrls: [\r\n './delete-profile-attachment-dialog.component.css'\r\n ]\r\n})\r\nexport class DeleteProfileAttachmentDialogComponent implements OnInit {\r\n\r\n // Properties\r\n attachment: ProfileAttachment;\r\n deleted: boolean;\r\n\r\n // Class Functions\r\n constructor (\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private profileService: ProfileService\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected dialog data with an attachment\r\n // POST: initializes the data\r\n this.attachment = this.data.attachment;\r\n }\r\n\r\n delete() {\r\n // PRE: the delete button is clicked\r\n // POST: deletes the attachment and closes the dialog box\r\n this.profileService.deleteProfileAttachment(this.attachment.FileID).subscribe(() => {\r\n this.deleted = true;\r\n this.dialogBox.close();\r\n });\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n}\r\n","\r\n

\r\n Delete Attachment\r\n

\r\n\r\n\r\n\r\n

\r\n Are you sure you want to delete this attachment?\r\n

\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Attachment } from './../../shared-components/models/attachment.model';\r\n\r\nexport class ProfileAttachment extends Attachment {\r\n FileID = -1;\r\n TableID = 18;\r\n DocOwnerID: number;\r\n FolderID = -1;\r\n MyFileName = '';\r\n OriginalFileName = '';\r\n AllowParentToView = true;\r\n DateAttached = new Date();\r\n FormDocType_ID = -1;\r\n}","import { ProfileService } from '../profile.service';\r\nimport { ErrorList } from './../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, Inject, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { ProfileAttachment } from '../profile-attachment.model';\r\n\r\n@Component({\r\n selector: 'add-profile-attachment',\r\n templateUrl: './add-profile-attachment-dialog.component.html',\r\n styleUrls: [\r\n './add-profile-attachment-dialog.component.css'\r\n ]\r\n})\r\nexport class AddProfileAttachmentDialogComponent implements OnInit {\r\n\r\n // Properties\r\n attachment: ProfileAttachment;\r\n errors: ErrorList[] = [];\r\n saved: boolean;\r\n @ViewChild('nameField', { read: ElementRef, static: true }) nameField: ElementRef;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private profileService: ProfileService\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n if (this.data && this.data.attachment) {\r\n this.attachment = this.data.attachment;\r\n } else {\r\n this.attachment = new ProfileAttachment();\r\n }\r\n }\r\n\r\n save() {\r\n // PRE: the save button is clicked\r\n // POST: saves the attachment and closes the dialog box\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.profileService.updateProfileAttachment(this.attachment).subscribe(id => {\r\n this.saved = true;\r\n this.attachment.FileID = id;\r\n this.dialogBox.close();\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: closes the dialog box\r\n this.saved = false;\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n validate() {\r\n // POST: sets the errors\r\n this.errors = [];\r\n if (!this.attachment.MyFileName) {\r\n this.errors.push({\r\n fieldRef: this.nameField,\r\n fieldName: 'Name',\r\n errorMsg: 'Name is required.'\r\n });\r\n }\r\n if (!this.attachment.MyFile && !this.attachment.OriginalFileName) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'File is required.'\r\n });\r\n }\r\n }\r\n}","\r\n

\r\n {{attachment.FileID == -1 ? 'Add' : 'Edit'}} Attachment\r\n

\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Visible to Parents/Students\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n","\r\n

\r\n Attachments\r\n

\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n Name \r\n \r\n \r\n {{attachment.MyFileName}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n Description \r\n \r\n {{attachment.Description}}\r\n \r\n \r\n\r\n \r\n \r\n Attached \r\n \r\n {{attachment.DateAttached | date: 'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n Visible to
Parents/Students
\r\n \r\n {{attachment.AllowParentToView ? 'Y' : 'N'}}\r\n \r\n
\r\n\r\n \r\n \r\n Actions \r\n \r\n \r\n \r\n \r\n\r\n \\\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n \r\n
    \r\n
  • \r\n Edit\r\n
  • \r\n
  • \r\n Delete\r\n
  • \r\n
\r\n
\r\n
","import { ProfileService } from './../profile.service';\r\nimport { DeleteProfileAttachmentDialogComponent } from './../delete-profile-attachment-dialog/delete-profile-attachment-dialog.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { AddProfileAttachmentDialogComponent } from './../add-profile-attachment-dialog/add-profile-attachment-dialog.component';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { Attachment } from './../../../shared-components/models/attachment.model';\r\nimport { Component, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { ProfileAttachment } from '../profile-attachment.model';\r\nimport { System } from '../../System';\r\nimport {Profile} from '../profile.model';\r\n\r\n@Component({\r\n selector: 'attachments-menu',\r\n templateUrl: './attachments-menu-dialog.component.html',\r\n styleUrls: [\r\n './attachments-menu-dialog.component.css'\r\n ]\r\n})\r\nexport class AttachmentsMenuDialogComponent implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n attachments: Attachment[] = [];\r\n tableData: TylerMatTableDataSource;\r\n columns = ['name', 'description', 'attached', 'visible to parents students', 'actions'];\r\n subscriptions: Subscription[] = [];\r\n userCanAdd = false;\r\n profile: Profile;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialog: MatDialog,\r\n private profileService: ProfileService\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n if (this.data.attachments) {\r\n this.attachments = this.data.attachments;\r\n } else {\r\n this.attachments = [];\r\n }\r\n this.profile = this.data.profile;\r\n this.userCanAdd = this.data.userCanAdd;\r\n if (!this.userCanAdd) {\r\n this.columns.splice(this.columns.indexOf('actions'), 1);\r\n }\r\n this.tableData = new TylerMatTableDataSource(this.attachments);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n addAttachment() {\r\n // PRE: the add attachment is clicked\r\n // POST: shows the add attachment dialog\r\n const attachment = new ProfileAttachment();\r\n attachment.FileType = '';\r\n attachment.FileExtension = '';\r\n attachment.Description = '';\r\n attachment.DocOwnerID = this.profile.ProfileContentId;\r\n attachment.FolderID = -1;\r\n attachment.FileID = -1;\r\n attachment.AllowParentToView = true;\r\n attachment.TableID = 18;\r\n attachment.MyFileName = '';\r\n attachment.OriginalFileName = '';\r\n attachment.DateAttached = new Date();\r\n const dialogBox = this.dialog.open(AddProfileAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n this.attachments.push(attachment);\r\n this.tableData = new TylerMatTableDataSource(this.attachments);\r\n }\r\n })\r\n );\r\n }\r\n\r\n close() {\r\n // PRE: the close button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n downloadAttachment(attachment: ProfileAttachment) {\r\n // PRE: an attachment to view\r\n // POST: downloads the attachment to the user\r\n console.log(attachment);\r\n this.subscriptions.push(\r\n this.profileService.getAttachmentFile(attachment.FileID).subscribe(result => {\r\n console.log(result);\r\n System.saveFile(result.MyFile, result.FileType, result.MyFileName + '.' + result.FileExtension);\r\n })\r\n );\r\n }\r\n\r\n editAttachment(attachment: ProfileAttachment) {\r\n // PRE: an attachment to edit\r\n // POST: opens the dialog for editing the attachment\r\n const changedAttachment = Object.assign(new ProfileAttachment, attachment);\r\n const dialogBox = this.dialog.open(AddProfileAttachmentDialogComponent, {\r\n data: {\r\n attachment: changedAttachment\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n Object.assign(attachment, changedAttachment);\r\n }\r\n })\r\n );\r\n }\r\n\r\n deleteAttachment(attachment: ProfileAttachment) {\r\n // PRE: an attachment to delete\r\n // POST: opens the dialog for deleting the attachment\r\n const dialogBox = this.dialog.open(DeleteProfileAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.deleted) {\r\n this.attachments.splice(this.attachments.indexOf(attachment), 1);\r\n this.tableData = new TylerMatTableDataSource(this.attachments);\r\n }\r\n })\r\n );\r\n }\r\n}","\r\n

\r\n {{information && information.ProfileContentId != -1 ? 'Edit' : 'Add'}} Content\r\n

\r\n\r\n\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n\t\t\t\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n Active\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n\t\t\t\t\t\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n \r\n\r\n","import { ProfileService } from '../profile.service';\r\nimport { System } from './../../../shared-components/System';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ErrorList } from './../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport {\r\n\tComponent,\r\n\tInject,\r\n\tOnInit,\r\n\tViewChild,\r\n\tElementRef,\r\n\tAfterViewInit,\r\n\tHostListener,\r\n\tChangeDetectorRef\r\n} from '@angular/core';\r\nimport { Profile } from '../profile.model';\r\nimport {AttachmentsMenuDialogComponent} from '../attachments-menu-dialog/attachments-menu-dialog.component';\r\nimport {ProfileAttachment} from '../profile-attachment.model';\r\n\r\n@Component({\r\n selector: 'add-edit-content',\r\n templateUrl: './add-edit-content-dialog.component.html',\r\n styleUrls: [\r\n './add-edit-content-dialog.component.css'\r\n ]\r\n})\r\nexport class AddEditContentDialogComponent implements OnInit, AfterViewInit {\r\n\r\n // Properties\r\n information: Profile;\r\n originalInformation: Profile = new Profile();\r\n errors: ErrorList[] = [];\r\n @ViewChild('titleField', { read: ElementRef }) titleField: ElementRef;\r\n saved: boolean;\r\n pictureName = '';\r\n junkDate = Profile.junkDate;\r\n @ViewChild('quillContainer', { read: ElementRef }) quillContainer: ElementRef;\r\n quillHeight = '100px';\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private profileService: ProfileService,\r\n private sanitizer: DomSanitizer,\r\n private changeDetector: ChangeDetectorRef,\r\n\t\tprivate dialog: MatDialog\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: dialog data with either:\r\n // a) a set of information\r\n // b) rowId, topicId, parentId, and sequence\r\n // POST: initializes the data\r\n if (this.data && this.data.information) {\r\n this.information = this.data.information;\r\n Object.assign(this.originalInformation, this.information);\r\n this.originalInformation.ProfileAttachments = [];\r\n this.information.ProfileAttachments.forEach(profileAttachment => {\r\n \tconst newProfileAttachment = new ProfileAttachment();\r\n \tObject.assign(newProfileAttachment, profileAttachment);\r\n \tthis.originalInformation.ProfileAttachments.push(newProfileAttachment);\r\n\t\t\t});\r\n if (this.information.Image) {\r\n\t\t\t\tthis.pictureName = this.information.Title + ' Image';\r\n\t\t\t}\r\n } else {\r\n this.information = new Profile();\r\n this.information.RowId = this.data.rowId;\r\n this.information.ProfileContentId = -1;\r\n this.information.TopicId = this.data.topicId;\r\n this.information.ParentID = this.data.parentId > 0 ? this.data.parentId : -1;\r\n this.information.DateFromView = null;\r\n this.information.DateToView = null;\r\n this.information.Status = 'A';\r\n this.information.Title = '';\r\n this.information.Content = '';\r\n this.information.Sequence = this.data.sequence;\r\n this.information.Image = null;\r\n this.information.DelStatus = false;\r\n this.information.ProfileAttachments = [];\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n ngAfterViewInit() {\r\n // PRE: the view has initialized or the window is resized\r\n // POST: obtains the height of the quill container\r\n if (this.quillContainer) {\r\n\t\t\tthis.quillHeight = getComputedStyle(this.quillContainer.nativeElement).height;\r\n\t\t\tthis.changeDetector.detectChanges(); // We do this to prevent expression changed errors\r\n }\r\n }\r\n\r\n setStatus() {\r\n // PRE: the active checkbox is clicked\r\n // POST: sets the status to reflect the active\r\n if (this.information.Status == 'A') {\r\n this.information.Status = 'I';\r\n } else {\r\n this.information.Status = 'A';\r\n }\r\n }\r\n\r\n attachments() {\r\n \t// PRE: the attachments button is clicked\r\n\t\t// POST: opens the attachments dialog\r\n\t\tthis.dialog.open(AttachmentsMenuDialogComponent, {\r\n\t\t\tdisableClose: true,\r\n\t\t\tdata: {\r\n\t\t\t\tprofile: this.information,\r\n\t\t\t\tattachments: this.information.ProfileAttachments,\r\n\t\t\t\tuserCanAdd: true\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n save() {\r\n // PRE: the save button is clicked\r\n // POST: validates the data, saves the data, and closes the dialog box\r\n this.validate();\r\n this.information.cleanJunkDates();\r\n if (this.errors.length == 0) {\r\n if (this.information.ProfileContentId == -1) {\r\n this.profileService.addProfile(this.information).subscribe(newInformation => {\r\n this.information = System.convert(newInformation, new Profile());\r\n this.information.cleanJunkDates();\r\n this.saved = true;\r\n this.dialogBox.close();\r\n });\r\n } else {\r\n this.profileService.updateProfile(this.information).subscribe(() => {\r\n this.saved = true;\r\n this.dialogBox.close();\r\n });\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: closes the dialog box\r\n this.saved = false;\r\n if (this.data && this.data.information) {\r\n Object.assign(this.information, this.originalInformation);\r\n } else {\r\n this.information = null;\r\n }\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n validate() {\r\n // POST: sets the errors\r\n this.errors = [];\r\n if (!this.information.Title) {\r\n this.errors.push({\r\n fieldName: 'Title',\r\n fieldRef: this.titleField,\r\n errorMsg: 'Title is required.'\r\n });\r\n }\r\n }\r\n\r\n\tresourceSrc() {\r\n\t\t// POST: auto-trusts the data we are given for the image\r\n\t\treturn this.sanitizer.bypassSecurityTrustResourceUrl(\r\n\t\t\t'data: image/jpeg;' +\r\n\t\t\t'base64,' + this.information.Image\r\n\t\t);\r\n\t}\r\n\r\n removePicture() {\r\n // POST: removes the image from the information\r\n this.information.Image = null;\r\n this.pictureName = '';\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n More \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Topic \r\n \r\n {{topic.topLevelNode.data.Title}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Inactive \r\n \r\n {{topic.topLevelNode.data.Status == 'I' ? 'Y' : ''}}\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n \r\n \"actions\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n 0 && !isViewing\" \r\n [dataSource]=\"topic.topLevelNode.subTableData\"\r\n [ngStyle]=\"{'min-width': profileTableWidth + 'px'}\"\r\n multiTemplateDataRows>\r\n\r\n \r\n \r\n More \r\n \r\n 0\">\r\n

\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Content Title\r\n \r\n {{node.data.Title}}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Inactive \r\n \r\n {{node.data.Status == 'I' ? 'Y' : ''}}\r\n \r\n \r\n\r\n \r\n \r\n Start\r\n \r\n {{node.data.DateFromView && node.data.DateFromView.toString() != junkDate.toString() ? \r\n (node.data.DateFromView | date: 'MM/dd/yy') : \r\n ''}}\r\n \r\n \r\n\r\n \r\n \r\n End\r\n \r\n {{node.data.DateToView && node.data.DateToView.toString() != junkDate.toString() ? \r\n (node.data.DateToView | date: 'MM/dd/yy') : \r\n ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \"paperclip\"\r\n \r\n \r\n {{node.data.ProfileAttachments && node.data.ProfileAttachments.length > 0 ? node.data.ProfileAttachments.length : ''}}\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n \r\n \"actions\r\n \r\n \r\n\r\n \r\n \r\n Attachments \r\n \r\n 0) || (!isViewing && node.data.ProfileAttachments.length > 0)\"\r\n (click)=\"showAttachments(node.data)\"\r\n translate>\r\n View Attachments\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n 0 ? ' Press Enter to view details.' : '')\"\r\n (click)=\"\r\n row.children.length > 0 ? row.parent.subTableData.toggleExpanded(row) : null;\r\n \">\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n 0 ? ' Press Enter to view details.' : '')\"\r\n (click)=\"\r\n row.subLevelNodes.length > 0 ? tableData.toggleExpanded(row) : null;\r\n \">\r\n \r\n
\r\n\r\n\r\n\r\n 0\" \r\n [dataSource]=\"node.subTableData\"\r\n [ngStyle]=\"{'min-width': profileTableWidth + 'px'}\"\r\n multiTemplateDataRows>\r\n\r\n \r\n \r\n \r\n 0\">\r\n

\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{node.data.Title}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {{node.data.Title}}\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n Inactive \r\n \r\n {{node.data.Status == 'I' ? 'Y' : ''}}\r\n \r\n \r\n\r\n \r\n \r\n Start\r\n \r\n {{node.data.DateFromView && node.data.DateFromView.toString() != junkDate.toString() ? \r\n (node.data.DateFromView | date: 'MM/dd/yy') :\r\n ''}}\r\n \r\n \r\n\r\n \r\n \r\n End\r\n \r\n {{node.data.DateToView && node.data.DateToView.toString() != junkDate.toString() ? \r\n (node.data.DateToView | date: 'MM/dd/yy') :\r\n ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \"paperclip\"\r\n \r\n \r\n {{node.data.ProfileAttachments && node.data.ProfileAttachments.length > 0 ? node.data.ProfileAttachments.length : ''}}\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n \r\n \"actions\r\n \r\n \r\n\r\n \r\n \r\n Attachments \r\n \r\n 0\"\r\n (click)=\"showAttachments(node.data)\"\r\n translate>\r\n View Attachments\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n\r\n \r\n 0 ? ' Press Enter to view details.' : '')\"\r\n (click)=\"\r\n row.children.length > 0 ? row.parent.subTableData.toggleExpanded(row) : null;\r\n \">\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\r\n\r\n","import { DomSanitizer } from '@angular/platform-browser';\r\nimport { System } from './../System';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { detailExpand } from './../angular-material/mat-animations';\r\nimport { Topic } from './topic';\r\nimport { Component, OnInit, Input, OnChanges, EventEmitter, Output, ChangeDetectorRef } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../angular-material/extended.class';\r\nimport { Profile } from './profile.model';\r\nimport { ProfileNode } from './profile-node';\r\nimport { EditTopicDialogComponent } from './edit-topic-dialog/edit-topic-dialog.component';\r\nimport { DeleteTopicDialogComponent } from './delete-topic-dialog/delete-topic-dialog.component';\r\nimport { AddEditContentDialogComponent } from './add-edit-content-dialog/add-edit-content-dialog.component';\r\nimport { AttachmentsMenuDialogComponent } from './attachments-menu-dialog/attachments-menu-dialog.component';\r\n\r\n/**\r\n * This component is used for creating a table of profiles.\r\n *\r\n * @input profiles: a list of profiles to display\r\n * @input displayInactive: set this to true if you want to display inactive profiles. False by default.\r\n * @input userCanEdit: set this to true if the user can edit the profiles. False by default.\r\n * @input dataChanged: this is an event emitter signalling if the profiles have changed.\r\n * If your profiles might change, be sure to supply this event emitter.\r\n * Emit from that event emitter if and when your profiles change.\r\n * @input expandCollapseEvent: an event emitter that emits booleans.\r\n * When this emits true, all the rows will expand.\r\n * When this emits false, all the rows will collapse.\r\n * @input isViewing: a boolean indicating whether this is a person simply viewing the profiles (in the case of S360). False by default.\r\n * @input borderBottom: whether the rows should have a bottom border. Defaults to true.\r\n * @input enforceDates: whether it removes profiles whose parent dates are passed\r\n * @output unsavedChanges: an event emitter that fires true when there are unsaved changes and false when there are no longer.\r\n */\r\n@Component({\r\n selector: 'profile-table',\r\n templateUrl: './profile-table.component.html',\r\n styleUrls: [\r\n './profile-table.component.css'\r\n ],\r\n animations: [\r\n detailExpand\r\n ]\r\n})\r\nexport class ProfileTableComponent implements OnInit, OnChanges {\r\n\r\n // Properties\r\n @Input() profiles: Profile[] = [];\r\n @Input() displayInactive = false;\r\n @Input() userCanEdit = false;\r\n @Input() dataChanged: EventEmitter;\r\n @Input() expandCollapseEvent: EventEmitter;\r\n @Input() isViewing = false;\r\n @Input() borderBottom = true;\r\n @Input() enforceDates = false;\r\n @Output() unsavedChanges = new EventEmitter();\r\n topics: Topic[];\r\n tableData: TylerMatTableDataSource;\r\n openInformation: Profile[];\r\n topicColumns = ['more', 'topic', 'inactive', 'actions'];\r\n profileColumns = ['more', 'content title', 'inactive', 'start date', 'end date', 'attachments', 'actions', 'attachments link'];\r\n columnWidths: {[key: string]: number} = {\r\n 'more': 60,\r\n 'content title': 100,\r\n 'inactive': 60,\r\n 'start date': 100,\r\n 'end date': 100,\r\n 'attachments': 60,\r\n 'actions': 60,\r\n 'attachments link': 100\r\n };\r\n allColumns = [this.topicColumns, this.profileColumns];\r\n junkDate = new Date('Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)');\r\n selectedRow: Topic;\r\n subscriptions: Subscription[] = [];\r\n profileTableWidth = 0;\r\n\r\n // Class Functions\r\n constructor (\r\n private dialog: MatDialog,\r\n private sanitizer: DomSanitizer,\r\n private changeDetector: ChangeDetectorRef\r\n ) {}\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: profiles supplied by the caller\r\n // POST: constructs the table data\r\n this.unsavedChanges.emit(false);\r\n this.assembleDisplayData();\r\n if (this.dataChanged) {\r\n this.subscriptions.push(\r\n this.dataChanged.subscribe(() => {\r\n this.assembleDisplayData();\r\n }),\r\n );\r\n }\r\n if (this.expandCollapseEvent) {\r\n this.subscriptions.push(\r\n this.expandCollapseEvent.subscribe(expand => {\r\n if (this.topics) {\r\n this.topics.forEach(topic => {\r\n if (topic.subLevelNodes.length > 0 && this.tableData.checkExpanded(topic) != expand) {\r\n this.tableData.toggleExpanded(topic);\r\n }\r\n topic.children.forEach(child => {\r\n if (child.children.length > 0 && child.parent && child.parent.subTableData.checkExpanded(child) != expand) {\r\n child.parent.subTableData.toggleExpanded(child);\r\n }\r\n });\r\n });\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n // PRE: the profiles are changed\r\n // POST; constructs the table data\r\n this.assembleDisplayData();\r\n }\r\n\r\n // Methods\r\n resourceSrc(node: ProfileNode) {\r\n // POST: auto-trusts the data we are given for the image\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(\r\n 'data: image/jpeg;' +\r\n 'base64,' + node.data.Image\r\n );\r\n }\r\n\r\n editTopic(information: Profile) {\r\n // POST: shows the edit topic dialog\r\n this.dialog.open(EditTopicDialogComponent, {\r\n data: {\r\n information: information\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n deleteTopic(information: Profile) {\r\n // POST: shows the delet topic dialog\r\n const dialogBox = this.dialog.open(DeleteTopicDialogComponent, {\r\n data: {\r\n information: information\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.deleted) {\r\n\r\n // Removing the node and it's children\r\n this.profiles.splice(this.profiles.indexOf(information), 1);\r\n for (let i = 0; i < this.profiles.length; i++) {\r\n\r\n // If I deleted a topic node, delete all its sub level nodes\r\n if (information.ParentID == -2) {\r\n if (information.TopicId == this.profiles[i].TopicId) {\r\n this.profiles.splice(i, 1);\r\n i -= 1;\r\n }\r\n }\r\n\r\n // Otherwise, delete it if it matches it's parent id\r\n else if (information.ProfileContentId == this.profiles[i].ParentID) {\r\n this.profiles.splice(i, 1);\r\n i -= 1;\r\n }\r\n }\r\n\r\n // Reassembling the table\r\n this.assembleDisplayData();\r\n }\r\n })\r\n );\r\n }\r\n\r\n addContent(parentNode: ProfileNode) {\r\n // POST: shows the dialog for adding content\r\n const dialogBox = this.dialog.open(AddEditContentDialogComponent, {\r\n data: {\r\n rowId: Math.max.apply(null, this.profiles.map(info => info.RowId)) + 1,\r\n sequence: Math.max.apply(null, this.profiles.map(info => info.ParentID == parentNode.data.ProfileContentId ? info.sequence : -1)) + 1,\r\n parentId: parentNode.data.ProfileContentId,\r\n topicId: parentNode.data.TopicId\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n this.profiles.push(dialogBox.componentInstance.information);\r\n this.assembleDisplayData();\r\n }\r\n })\r\n );\r\n }\r\n\r\n editContent(information: Profile) {\r\n // POST: shows the dialog for editing content\r\n this.dialog.open(AddEditContentDialogComponent, {\r\n data: {\r\n information: information\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n showAttachments(information: Profile) {\r\n // POST: shows the attachment menu dialog\r\n if (information.ProfileAttachments == null || information.ProfileAttachments == undefined) {\r\n information.ProfileAttachments = [];\r\n }\r\n this.dialog.open(AttachmentsMenuDialogComponent, {\r\n data: {\r\n attachments: information.ProfileAttachments,\r\n userCanAdd: this.userCanEdit,\r\n profile: information\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n moveContentRowUp(node: ProfileNode) {\r\n // PRE: a node to move\r\n // POST: moves the node one level up\r\n const currentSequence = node.data.sequence;\r\n let lowerSequences;\r\n let nextContent;\r\n if (node.data.ParentID == null || node.data.ParentID == -1) {\r\n lowerSequences = this.profiles.filter(info => info.ParentID == -1 && info.TopicId == node.data.TopicId && info.sequence < node.data.sequence);\r\n if (!this.displayInactive) {\r\n lowerSequences = lowerSequences.filter(info => info.Status == 'A');\r\n }\r\n }\r\n else {\r\n lowerSequences = this.profiles.filter(info => info.ParentID == node.data.ParentID && info.sequence < node.data.sequence);\r\n if (!this.displayInactive) {\r\n lowerSequences = lowerSequences.filter(info => info.Status == 'A');\r\n }\r\n }\r\n nextContent = lowerSequences.find(sequence => sequence.sequence == Math.max.apply(null, lowerSequences.map(seq => seq.sequence)));\r\n if (nextContent) {\r\n node.data.newSequence = nextContent.sequence;\r\n nextContent.newSequence = currentSequence;\r\n }\r\n this.unsavedChanges.emit(true);\r\n this.assembleDisplayData();\r\n }\r\n\r\n moveContentRowDown(node: ProfileNode) {\r\n // PRE: a node to move\r\n // POST: moves the node one level down\r\n const currentSequence = node.data.sequence;\r\n let higherSequences;\r\n let nextContent;\r\n if (node.data.ParentID == null || node.data.ParentID == -1) {\r\n higherSequences = this.profiles.filter(info => info.ParentID == -1 && info.TopicId == node.data.TopicId && info.sequence > node.data.sequence);\r\n if (!this.displayInactive) {\r\n higherSequences = higherSequences.filter(info => info.Status == 'A');\r\n }\r\n }\r\n else {\r\n higherSequences = this.profiles.filter(info => info.ParentID == node.data.ParentID && info.sequence > node.data.sequence);\r\n if (this.displayInactive == false) {\r\n higherSequences = higherSequences.filter(info => info.Status == 'A');\r\n }\r\n }\r\n nextContent = higherSequences.find(sequence => sequence.sequence == Math.min.apply(null, higherSequences.map(seq => seq.sequence)));\r\n if (nextContent) {\r\n node.data.newSequence = nextContent.sequence;\r\n nextContent.newSequence = currentSequence;\r\n }\r\n this.unsavedChanges.emit(true);\r\n this.assembleDisplayData();\r\n }\r\n\r\n moveRowUp(topic: Topic) {\r\n // PRE: a topic to move\r\n // POST: moves the topic one level up\r\n const currentSequence = topic.sequence;\r\n let lowerSequences = this.profiles.filter(info => info.ProfileContentId == -2 && info.ParentID == -2 && info.sequence < topic.sequence);\r\n if (this.displayInactive) {\r\n lowerSequences = lowerSequences.filter(sequence => sequence.Status == 'A');\r\n }\r\n const nextContent = lowerSequences.find(sequence => sequence.sequence == Math.max.apply(null, lowerSequences.map(seq => seq.sequence)));\r\n if (nextContent) {\r\n topic.topLevelNode.data.newSequence = nextContent.sequence;\r\n nextContent.newSequence = currentSequence;\r\n }\r\n this.unsavedChanges.emit(true);\r\n this.assembleDisplayData();\r\n }\r\n\r\n moveRowDown(topic: Topic) {\r\n // PRE: a topic to move\r\n // POST: moves the topic one level dow\r\n const currentSequence = topic.sequence;\r\n let higherSequences = this.profiles.filter(info => info.ProfileContentId == -2 && info.ParentID == -2 && info.sequence > topic.sequence);\r\n if (this.displayInactive) {\r\n higherSequences = higherSequences.filter(sequence => sequence.Status == 'A');\r\n }\r\n const nextContent = higherSequences.find(sequence => sequence.sequence == Math.min.apply(null, higherSequences.map(seq => seq.sequence)));\r\n if (nextContent) {\r\n topic.topLevelNode.data.newSequence = nextContent.sequence;\r\n nextContent.newSequence = currentSequence;\r\n }\r\n this.unsavedChanges.emit(true);\r\n this.assembleDisplayData();\r\n }\r\n\r\n order() {\r\n // POST: organizes the data in order of sequence\r\n this.topics.sort((topicA, topicB) => {\r\n if (topicA.sequence < topicB.sequence) {\r\n return -1;\r\n } else if (topicA.sequence > topicB.sequence) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n for (let i = 0; i < this.topics.length; i++) {\r\n const topic = this.topics[i];\r\n if (i == 0) {\r\n topic.first = true;\r\n } else {\r\n topic.first = false;\r\n }\r\n if (i == this.topics.length - 1) {\r\n topic.last = true;\r\n } else {\r\n topic.last = false;\r\n }\r\n topic.topLevelNode.sortChildren();\r\n }\r\n }\r\n\r\n assembleDisplayData() {\r\n // PRE: the profiles must be set\r\n // POST: assembles the data for display\r\n\r\n // Don't do anything if there's no profiles\r\n if (!this.profiles) {\r\n return;\r\n }\r\n\r\n // Capturing which information is currently open\r\n if (this.tableData && this.topics) {\r\n this.openInformation = [];\r\n this.topics.forEach(topic => {\r\n if (this.tableData.checkExpanded(topic)) {\r\n this.openInformation.push(topic.topLevelNode.data);\r\n }\r\n this.openInformation.push.apply(this.openInformation, topic.topLevelNode.getOpenedNodes());\r\n });\r\n }\r\n\r\n // Creating list of topics\r\n const topics: {[key: number]: Topic} = {};\r\n this.topics = [];\r\n\r\n // Filtering out inactive if we're not displaying them\r\n let shownInformation = this.profiles;\r\n if (!this.displayInactive) {\r\n shownInformation = shownInformation.filter(info => info.Status == 'A');\r\n }\r\n\r\n // Determining which columns we should show\r\n this.allColumns.forEach(columns => {\r\n if (this.userCanEdit) {\r\n if (!columns.includes('actions')) {\r\n columns.push('actions'); // Actions always go on the end\r\n }\r\n } else if (columns.includes('actions')) {\r\n columns.splice(columns.indexOf('actions'), 1);\r\n }\r\n if (shownInformation.find(info => info.Status == 'I')) {\r\n if (!columns.includes('inactive')) {\r\n columns.splice(2, 0, 'inactive'); // Inactive always goes at index 2\r\n }\r\n } else if (columns.includes('inactive')) {\r\n columns.splice(columns.indexOf('inactive'), 1);\r\n }\r\n if (this.isViewing) {\r\n if (columns.includes('attachments')) {\r\n columns.splice(columns.indexOf('attachments'), 1);\r\n }\r\n if (columns.includes('start date')) {\r\n columns.splice(columns.indexOf('start date'), 1);\r\n }\r\n if (columns.includes('end date')) {\r\n columns.splice(columns.indexOf('end date'), 1);\r\n }\r\n } else if (columns.includes('attachments link')) {\r\n columns.splice(columns.indexOf('attachments link'), 1);\r\n }\r\n });\r\n\r\n // Determining the size of the profile tables\r\n this.profileTableWidth = 0;\r\n this.profileColumns.forEach(column => {\r\n if (this.columnWidths[column]) {\r\n this.profileTableWidth += this.columnWidths[column];\r\n }\r\n });\r\n\r\n // Assembling topics\r\n // NOTE: because of the way the hierarchy works, a parent inactive will prevent any active children from showing\r\n shownInformation.forEach(profile => {\r\n\r\n // Creating the node\r\n const node = new ProfileNode();\r\n node.data = profile;\r\n\r\n // Assigning it to a topic\r\n if (!topics[profile.TopicId]) {\r\n topics[profile.TopicId] = new Topic();\r\n }\r\n const topic = topics[profile.TopicId];\r\n node.topic = topic;\r\n topic.children.push(node);\r\n if (node.data.ParentID == -2) {\r\n topic.topLevelNode = node;\r\n topic.subLevelNodes.forEach(subNode => {\r\n node.children.push(subNode);\r\n subNode.parent = node;\r\n });\r\n } else if (node.data.ParentID == -1) {\r\n topic.subLevelNodes.push(node);\r\n if (topic.topLevelNode) {\r\n topic.topLevelNode.children.push(node);\r\n node.parent = topic.topLevelNode;\r\n }\r\n }\r\n\r\n // Scanning for parents and children\r\n topic.children.forEach(topicNode => {\r\n if (topicNode.data.ParentID >= 0 && topicNode.data.ParentID == node.data.ProfileContentId) {\r\n node.children.push(topicNode);\r\n topicNode.parent = node;\r\n } else if (topicNode.data.ProfileContentId >= 0 && topicNode.data.ProfileContentId == node.data.ParentID) {\r\n topicNode.children.push(node);\r\n node.parent = topicNode;\r\n }\r\n });\r\n\r\n // Putting this in the persistent list\r\n // NOTE: we only want to add the topic if it has a top-level node or the component will break\r\n if (topic.topLevelNode != null && !this.topics.includes(topic)) {\r\n this.topics.push(topic);\r\n }\r\n });\r\n\r\n // Ordering the data by sequence\r\n this.order();\r\n\r\n // Enforcing the date (we have to do this after to deactivate children)\r\n if (this.enforceDates) {\r\n for (let i = 0; i < this.topics.length; i++) {\r\n\r\n // Removing the topic altogether if it's outside the date range\r\n if (!(this.topics[i].topLevelNode.data instanceof Profile)) {\r\n this.topics[i].topLevelNode.data = System.convert(this.topics[i].topLevelNode.data, new Profile());\r\n }\r\n if (this.topics[i].topLevelNode.data.outsideOfDateRange()) {\r\n this.topics.splice(i, 1);\r\n i--;\r\n }\r\n\r\n // Removing children\r\n else {\r\n const removeChildren = (node: ProfileNode, parent: ProfileNode, index: number) => {\r\n if (!(node.data instanceof Profile)) {\r\n node.data = System.convert(node.data, new Profile());\r\n }\r\n if (node.data.outsideOfDateRange()) {\r\n if (parent) {\r\n parent.children.splice(index, 1);\r\n }\r\n const topicIndex = this.topics[i].subLevelNodes.indexOf(node);\r\n if (topicIndex >= 0) {\r\n this.topics[i].subLevelNodes.splice(topicIndex, 1);\r\n }\r\n } else {\r\n for (let j = 0; j < node.children.length; j++) {\r\n removeChildren(node.children[j], node, j);\r\n }\r\n }\r\n };\r\n removeChildren(this.topics[i].topLevelNode, null, 0);\r\n }\r\n }\r\n }\r\n\r\n // Ensuring table data\r\n this.topics.forEach(topic => {\r\n topic.children.forEach(topicNode => {\r\n topicNode.subTableData = new TylerMatTableDataSource(topicNode.children);\r\n });\r\n });\r\n this.tableData = new TylerMatTableDataSource(this.topics);\r\n\r\n // Opening information that was previously opened\r\n if (this.openInformation) {\r\n this.topics.forEach(topic => {\r\n if (this.openInformation.find(info => info.RowId == topic.topLevelNode.data.RowId)) {\r\n this.tableData.toggleExpanded(topic);\r\n }\r\n topic.topLevelNode.openNodes(this.openInformation);\r\n });\r\n }\r\n\r\n // Tracking changes to prevent errors\r\n this.changeDetector.detectChanges();\r\n }\r\n}\r\n","import { ProfileAttachment } from './profile-attachment.model';\r\n\r\nexport class Profile {\r\n\r\n // Constants\r\n static junkDateString = 'Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)';\r\n static junkDate = new Date(Profile.junkDateString);\r\n\r\n // Server Properties\r\n '$id': string;\r\n AddedBy: number;\r\n AddedOn: string;\r\n Content: string;\r\n DateFromView = new Date(Profile.junkDateString);\r\n DateToView = new Date(Profile.junkDateString);\r\n DelBy = new Date(Profile.junkDateString);\r\n DelOn = new Date(Profile.junkDateString);\r\n DelStatus: boolean;\r\n Image: string;\r\n LastUpBy = new Date(Profile.junkDateString);\r\n LastUpOn = new Date(Profile.junkDateString);\r\n MemId: number;\r\n ParentID: number;\r\n ProfileAttachments?: ProfileAttachment[] = [];\r\n ProfileContentId: number;\r\n RecordType: number;\r\n RowId: number;\r\n SSECID: number;\r\n Sequence: number;\r\n Status: string;\r\n Title: string;\r\n TopicId: number;\r\n\r\n // Local Properties\r\n newSequence: number; // We use this to prevent data persistence of moving rows\r\n\r\n // Class Functions\r\n get SSEC_ID(): number {\r\n return this.SSECID;\r\n }\r\n\r\n set SSEC_ID(value: number) {\r\n this.SSECID = value;\r\n }\r\n\r\n get parentViewableAttachments() {\r\n return this.ProfileAttachments.filter(attachment => attachment.AllowParentToView);\r\n }\r\n\r\n\tget sequence(): number {\r\n\t\treturn this.newSequence != undefined ? this.newSequence : this.Sequence;\r\n\t}\r\n\r\n\tset sequence(value: number) {\r\n \tthis.newSequence = value;\r\n\t}\r\n\r\n // Methods\r\n outsideOfDateRange() {\r\n // POST: returns true if this profile is currently within its date range\r\n return (this.DateFromView && this.DateFromView.toString() != Profile.junkDate.toString() && new Date() < this.DateFromView) ||\r\n (this.DateToView && this.DateToView.toString() != Profile.junkDate.toString() && new Date() > this.DateToView);\r\n }\r\n\r\n cleanJunkDates() {\r\n // POST: cleans the junk dates from the class information\r\n if (this.DateFromView && this.DateFromView.toString() == Profile.junkDate.toString()) {\r\n this.DateFromView = null;\r\n }\r\n if (this.DateToView && this.DateToView.toString() == Profile.junkDate.toString()) {\r\n this.DateToView = null;\r\n }\r\n if (this.DelBy && this.DelBy.toString() == Profile.junkDate.toString()) {\r\n this.DelBy = null;\r\n }\r\n if (this.DelOn && this.DelOn.toString() == Profile.junkDate.toString()) {\r\n this.DelOn = null;\r\n }\r\n if (this.LastUpBy && this.LastUpBy.toString() == Profile.junkDate.toString()) {\r\n this.LastUpBy = null;\r\n }\r\n if (this.LastUpOn && this.LastUpOn.toString() == Profile.junkDate.toString()) {\r\n this.LastUpOn = null;\r\n }\r\n }\r\n}","import { ClassroomSummary } from './../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { ClassroomSummaryService } from './../../classroom360/classroom-summary/classroom-summary.service';\r\nimport { ProfileAttachment } from './profile-attachment.model';\r\nimport { Profile } from './profile.model';\r\nimport { YearService } from './../../shared-components/year/year.service';\r\nimport { UserService } from './../../shared-components/user/user.service';\r\nimport { flatMap } from 'rxjs/operators';\r\nimport { Observable, of } from 'rxjs';\r\nimport { System } from './../../shared-components/System';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class ProfileService {\r\n\r\n // Properties\r\n classesWithProfiles: number[];\r\n\r\n // Class Functions\r\n constructor(\r\n private http: HttpClient,\r\n private userService: UserService,\r\n private classroomSummaryService: ClassroomSummaryService,\r\n private yearService: YearService\r\n ) { }\r\n\r\n // Methods\r\n getClassInformation(classId: number, useRelatedTopic = true): Observable {\r\n // PRE: a class ID to check for\r\n // POST: if classes with profiles hasn't been checked, obtains it. Then, checks that the class has profile. If it does, obtains it.\r\n if (this.classesWithProfiles && this.classesWithProfiles.length != 0) {\r\n this.getClassProfile(classId, useRelatedTopic);\r\n }\r\n return this.getClassesWithProfiles().pipe(\r\n flatMap(coursesWithProfiles => {\r\n this.classesWithProfiles = coursesWithProfiles;\r\n return this.getClassProfile(classId, useRelatedTopic);\r\n })\r\n );\r\n }\r\n\r\n getClassProfile(classId: number, useRelatedTopic = true) {\r\n // PRE: a class ID to check for\r\n // POST: checks that a profile exists for that class. If it does, obtains its profile.\r\n const hasProfile = this.classesWithProfiles.find(course => course == classId) != undefined;\r\n if (hasProfile) {\r\n return this.getProfileContent(classId, true, useRelatedTopic);\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n\r\n getClassesWithProfiles(): Observable {\r\n // POST: obtains the classes with profiles by SSEC_ID\r\n return this.http.get(System.apiURL.Student + 'GetIdsForClassesWithProfiles');\r\n }\r\n\r\n getAllClassTopics(): Observable {\r\n // POST: obtains all the class topics\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Student + 'GetAllClassTopics' + queryString);\r\n }\r\n\r\n getProfileContent(id: number, isCourseProfile = true, useRelatedTopic = true): Observable {\r\n // PRE: a class ID to check for\r\n // POST: obtains the profile for that class\r\n const queryString = '?Id=' + id +\r\n '&IsCourseProfile=' + isCourseProfile +\r\n '&useRelatedTopic=' + useRelatedTopic;\r\n return this.http.get(System.apiURL.Student + 'GetCourseAndTeacherProfileContent' + queryString);\r\n }\r\n\r\n updateProfileSequences(classInformation: Profile[]): Observable {\r\n // PRE: a list of profiles to save\r\n // POST: saves the profiles to the server\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n\r\n // Syncing the data\r\n classInformation.forEach(info => {\r\n if (!info.ProfileAttachments) {\r\n info.Image = null;\r\n info.ProfileAttachments = [];\r\n }\r\n if (info.newSequence) {\r\n info.Sequence = info.newSequence;\r\n }\r\n });\r\n return this.http.post(System.apiURL.Student + 'UpdateProfileSequences' + queryString, classInformation);\r\n }\r\n\r\n updateProfile(classInformation: Profile): Observable {\r\n // PRE: a profile to update (ID can't be changed)\r\n // POST: updates the profile on the database\r\n return this.http.post(System.apiURL.Student + 'UpdateProfile', classInformation);\r\n }\r\n\r\n addTopic(information: Profile): Observable {\r\n // PRE: information to add as a topic\r\n // POST: adds the topic to the database\r\n return this.http.post(System.apiURL.Student + 'AddProfileTopic', information);\r\n }\r\n\r\n addProfile(information: Profile): Observable {\r\n // PRE: information to add as a profile\r\n // POST: adds the profile to the database\r\n return this.http.post(System.apiURL.Student + 'AddProfileContent', information);\r\n }\r\n\r\n setRelatedTopic(parentCourse: ClassroomSummary = null): Observable {\r\n // PRE: A parent course that CAN be null\r\n // POST: sets this course as a related topic to the parent course\r\n const queryString = '?userId=' + this.userService.currentUser.Id +\r\n '&childSSECID=' + this.classroomSummaryService.selectedCourse.SSEC_ID +\r\n '&parentSSECId=' + (parentCourse ? parentCourse.SSEC_ID : -1);\r\n return this.http.get(System.apiURL.Student + 'SetRelatedTopic' + queryString);\r\n }\r\n\r\n updateProfileAttachment(attachment: ProfileAttachment): Observable {\r\n // PRE: an attachment to update\r\n // POST: updates that attachment on the server\r\n return this.http.post(System.apiURL.Student + 'UpdateProfileAttachment', attachment);\r\n }\r\n\r\n deleteProfileAttachment(attachmentId: number): Observable {\r\n // PRE: an attachment to delete\r\n // POST: deletes the attachment on the server\r\n const queryString = '?attachmentId=' + attachmentId;\r\n return this.http.get(System.apiURL.Student + 'DeleteProfileAttachment' + queryString);\r\n }\r\n\r\n copyClassProfile(sourceId: number, destinationId: number): Observable {\r\n // PRE: a source to copy from and a destination to copy to\r\n // POST: copies from the source to the destination\r\n const queryString = '?srcId=' + sourceId +\r\n '&destId=' + destinationId;\r\n return this.http.get(System.apiURL.Student + 'CopyClassProfile' + queryString);\r\n }\r\n\r\n getAttachmentFile(fileId: number): Observable {\r\n // PRE: a file id\r\n // POST: obtains that attachment\r\n const queryString = '?fileId=' + fileId;\r\n return this.http.get(System.apiURL.Student + 'getAttachmentFile' + queryString);\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n\t\tClass Information\r\n
\r\n
\r\n\t\tTeacher Profile\r\n\t
\r\n\t
\r\n\t\t{{teacherName}}\r\n\t
\r\n
\r\n\r\n\r\n 0 ? '65vh' : ''}\">\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Course Name{{courseName ? courseName : ''}}
Course-Section{{courseSection ? courseSection : ''}}
School{{school ? school : ''}}
Teacher\r\n {{teacherName ? teacherName : ''}}\r\n \r\n Teacher Profile\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n\r\n\r\n \r\n \r\n 0\"\r\n [expandEmitter]=\"expandEmitter\">\r\n\r\n \r\n
\r\n \r\n
\r\n
","\r\nimport { System } from './../System';\r\nimport { YearService } from './../year/year.service';\r\nimport { Profile } from './../profile-table/profile.model';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, OnInit, Inject, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { ProfileService } from '../profile-table/profile.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n/**\r\n * This is a dialog that is used whenever you have a persom viewing the profiles.\r\n *\r\n * MAT_DIALOG_DATA:\r\n * profiles: a list of profiles in case you already have them\r\n * courseSSEC_ID: the course' SSEC_ID for fetching profiles\r\n * courseName: the name of the course that will be displayed\r\n * courseSection: the courseSection of the course that will be displayed\r\n * teacherId: the ID of the teacher for fetching profiles.\r\n * teacherName: the name of the teacher that is displayed.\r\n * showTeacherProfileLink: Determines if the course viewer should show a teacher profile link.\r\n * teacherProfileClickHandler: this is called whenever the teacher profile link is clicked\r\n *\r\n * teacherProfileClick: this event emitter fires when the teacher profile link is clicked\r\n *\r\n * NOTE: this will default to using the course if it's available.\r\n * NOTE: either subscribe to the teacherProfileClick or provide a teacherProfileClickHandler. DO NOT DO BOTH.\r\n * Supply EITHER teacherID or courseSSEC_ID, not both.\r\n */\r\n@Component({\r\n selector: 'profile-viewer',\r\n templateUrl: './profile-viewer-dialog.component.html',\r\n styleUrls: [\r\n './profile-viewer-dialog.component.css'\r\n ]\r\n})\r\nexport class ProfileViewerDialogComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n courseSSEC_ID: number;\r\n courseName: string;\r\n courseSection: string;\r\n teacherId: number;\r\n teacherName: string;\r\n showTeacherProfileLink = false;\r\n staffPictureBase64: string;\r\n teacherProfileClickHandler: Function;\r\n\r\n // Local Properties\r\n profiles: Profile[] = [];\r\n useCourse: boolean;\r\n school: string;\r\n expandEmitter = new EventEmitter();\r\n subscriptions: Subscription[] = [];\r\n teacherProfileClick = new EventEmitter();\r\n\r\n // Class Functions\r\n constructor (\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private profileService: ProfileService,\r\n private yearService: YearService,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected data containing either a course, a teacherId, or a list of profiles.\r\n // It should also have a teacherName, but it's not required.\r\n // POST: initializes the data\r\n\r\n // Obtaining injected properties\r\n this.profiles = this.data.profiles;\r\n this.teacherName = this.data.teacherName;\r\n this.courseSSEC_ID = this.data.courseSSEC_ID;\r\n this.courseName = this.data.courseName;\r\n this.courseSection = this.data.courseSection;\r\n this.teacherId = this.data.teacherId;\r\n this.school = this.data.school;\r\n this.showTeacherProfileLink = this.data.showTeacherProfileLink;\r\n this.staffPictureBase64 = this.data.staffPictureBase64;\r\n this.teacherProfileClickHandler = this.data.teacherProfileClickHandler;\r\n\r\n // Setting local properties\r\n this.useCourse = (this.courseSSEC_ID != null);\r\n if (!this.school) {\r\n this.school = this.yearService.defaultYear.SchoolName;\r\n }\r\n if (!this.profiles) {\r\n if (this.useCourse) {\r\n this.subscriptions.push(\r\n this.profileService.getProfileContent(this.courseSSEC_ID, true).subscribe(profiles => {\r\n this.profiles = profiles;\r\n for (let i = 0; i < this.profiles.length; i++) {\r\n this.profiles[i] = System.convert(this.profiles[i], new Profile());\r\n }\r\n })\r\n );\r\n } else {\r\n this.subscriptions.push(\r\n this.profileService.getProfileContent(this.teacherId, false).subscribe(profiles => {\r\n this.profiles = profiles;\r\n for (let i = 0; i < this.profiles.length; i++) {\r\n this.profiles[i] = System.convert(this.profiles[i], new Profile());\r\n }\r\n })\r\n );\r\n }\r\n }\r\n this.subscriptions.push(\r\n this.teacherProfileClick.subscribe(() => {\r\n this.teacherProfileClickHandler();\r\n })\r\n );\r\n }\r\n\r\n close() {\r\n // PRE: the close button is clicked\r\n // POST: closes the dialog\r\n this.dialogBox.close();\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: unsubscribes to all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n // Methods\r\n resourceSrc() {\r\n // POST: returns a trusted the staff picture image src\r\n\t\treturn this.sanitizer.bypassSecurityTrustResourceUrl(\r\n\t\t\t'data: image/jpeg;' +\r\n\t\t\t'base64,' + this.staffPictureBase64\r\n\t\t);\r\n }\r\n}","import {\r\n AfterViewChecked,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { QuillEditorComponent } from 'ngx-quill';\r\n\r\n@Component({\r\n selector: 'tyl-quill-text-only',\r\n templateUrl: './quill-text-only.component.html',\r\n styleUrls: ['./quill-text-only.component.css']\r\n})\r\nexport class QuillTextOnlyComponent implements OnInit, AfterViewChecked, OnDestroy {\r\n private _width = '';\r\n private _height = '';\r\n private _padding;\r\n private _displayBorder = false;\r\n @Input() html = '';\r\n @Input() placeholder = '';\r\n @ViewChild('quill', { static: true }) quill: QuillEditorComponent;\r\n quillContentContainer: HTMLDivElement;\r\n\r\n get width(): string {\r\n return this._width;\r\n }\r\n\r\n @Input() set width(value: string) {\r\n this._width = value != null ? value : '';\r\n }\r\n\r\n get height(): string {\r\n return this._height;\r\n }\r\n\r\n @Input() set height(value: string) {\r\n this._height = value != null ? value : '';\r\n }\r\n\r\n get displayBorder(): boolean {\r\n return this._displayBorder;\r\n }\r\n\r\n @Input() set displayBorder(value: boolean) {\r\n this._displayBorder = value != null ? value : true;\r\n }\r\n\r\n get padding(): number {\r\n return this._padding;\r\n }\r\n\r\n @Input() set padding(value: number) {\r\n this._padding = value;\r\n if (this.quillContentContainer && this._padding != null) {\r\n this.quillContentContainer.style.padding = this._padding + 'px';\r\n }\r\n }\r\n\r\n constructor(\r\n private elementRef: ElementRef\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.html != null) {\r\n this.html = this.html.replace(/\\n/g, '
');\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.quill.placeholder = this.placeholder;\r\n this.quill.formats = [\r\n 'background',\r\n 'bold',\r\n 'color',\r\n 'code',\r\n 'font',\r\n 'italic',\r\n 'link',\r\n 'size',\r\n 'strike',\r\n 'script',\r\n 'underline',\r\n 'blockquote',\r\n 'header',\r\n 'indent',\r\n 'list',\r\n 'align',\r\n 'direction',\r\n 'code-block',\r\n 'image'\r\n ];\r\n this.quillContentContainer = this.elementRef.nativeElement.getElementsByClassName('ql-editor').item(0);\r\n if (this.quillContentContainer && this._padding != null) {\r\n this.quillContentContainer.style.padding = this.padding + 'px';\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.quill.modules != null) {\r\n this.quill.modules = [];\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n","export class RouteInfo {\r\n\r\n // Static Properties\r\n static pages: RouteInfo[] = [\r\n {\r\n 'Url': '/classroom360/studentLists',\r\n 'Title': 'Student Lists',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/academicHistory',\r\n 'Title': 'Academic History',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/teams',\r\n 'Title': 'Activities and Teams',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/announcements',\r\n 'Title': 'Announcements',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': (V10: boolean): boolean => {\r\n return !V10;\r\n },\r\n 'DisableYearDropdown': false\r\n },\r\n {\r\n 'Url': '/classroom360/announcements',\r\n 'Title': 'Announcements',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': (V10: boolean, C360: boolean): boolean => {\r\n return !V10 || C360;\r\n },\r\n 'DisableYearDropdown': (V10: boolean, C360: boolean) => {\r\n return V10 && C360;\r\n }\r\n },\r\n {\r\n 'Url': '/student360/studentTestData',\r\n 'Title': 'Assessments',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/attendance',\r\n 'Title': 'Attendance',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/automaticCallingPreferences',\r\n 'Title': 'Automatic Calling Preferences',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/awards',\r\n 'Title': 'Awards',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/calendar',\r\n 'Title': 'Calendar',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/changeEmail',\r\n 'Title': 'Change Email',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/changePassword',\r\n 'Title': 'Change Password',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/schedule',\r\n 'Title': 'Student Schedule',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/feesAndBilling',\r\n 'Title': 'Fees & Billing',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/reportCardGrades',\r\n 'Title': 'Grades',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/graduationPlan',\r\n 'Title': 'Graduation Plan Progress',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/assignments',\r\n 'Title': 'Assignments',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/courseRequests',\r\n 'Title': 'Course Requests',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/health',\r\n 'Title': 'Health',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/lunchMealPlanner',\r\n 'Title': 'Meal Service',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/mealService',\r\n 'Title': 'Meal Service',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/notificationPreferences',\r\n 'Title': 'Notification Preferences',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/setNotificationPreferences',\r\n 'Title': 'Set Notification Preferences',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlineRegistration',\r\n 'Title': 'Online Registration',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlineRegistration/householdParents',\r\n 'Title': 'Online Registration',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlineRegistration/householdAddresses',\r\n 'Title': 'Online Registration',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlineRegistration/student',\r\n 'Title': 'Online Registration',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlineRegistration/nonresidentParents',\r\n 'Title': 'Online Registration',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlineRegistration/emergencyContacts',\r\n 'Title': 'Online Registration',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlineRegistration/customForm',\r\n 'Title': 'Online Registration',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/parentPortalDataUpdate',\r\n 'Title': 'Update Household Data',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/parentPortalDataUpdate/householdParents',\r\n 'Title': 'Update Household Data',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/parentPortalDataUpdate/householdAddresses',\r\n 'Title': 'Update Household Data',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/parentPortalDataUpdate/student',\r\n 'Title': 'Update Household Data',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/parentPortalDataUpdate/nonresidentParents',\r\n 'Title': 'Update Household Data',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/parentPortalDataUpdate/emergencyContacts',\r\n 'Title': 'Update Household Data',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/parentPortalDataUpdate/healthMedical',\r\n 'Title': 'Update Household Data',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/programsAndServices',\r\n 'Title': 'Programs and Services',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/discipline',\r\n 'Title': 'Discipline',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/sendEmail',\r\n 'Title': 'Send Email',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/setNotificationPreferences',\r\n 'Title': 'Set Notification Preferences',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/studentDetails',\r\n 'Title': 'Student Details',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/studentDocuments',\r\n 'Title': 'Documents',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/portfolios',\r\n 'Title': 'Student Portfolio',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/studentSummary',\r\n 'Title': 'Student Summary',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/transportation',\r\n 'Title': 'Transportation',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/classroomSummary',\r\n 'Title': 'Classroom Summary',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/cards',\r\n 'Title': 'Classroom Summary',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/classroomAttendance',\r\n 'Title': 'Attendance',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': true,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'HidePrintButton': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/onlinePayment',\r\n 'Title': 'Online Payment',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/classroom360/communicationLog',\r\n 'Title': 'Communication Log',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/teacherComments',\r\n 'Title': 'Teacher Comment Library',\r\n 'PrintStyle': './assets/styles/print-styles/teacher-comment.print.css',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/classroom360/disciplineReferral',\r\n 'Title': 'Discipline Referral',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/behaviorReferral',\r\n 'Title': 'Behavior Referral',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/reviewBehaviorReferrals',\r\n 'Title': 'Review Behavior Referrals',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/manageBehaviorReferrals',\r\n 'Title': 'Manage Behavior Referrals',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/gradebook/V10',\r\n 'Title': 'Gradebook',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': true,\r\n 'isV10': true,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/gradebook/V9',\r\n 'Title': 'Gradebook',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': true,\r\n 'isV10': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/gbaddAssignment',\r\n 'Title': 'Add Assignment',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/dataQuery',\r\n 'Title': 'Data Query',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/classAnnouncements',\r\n 'Title': 'Class Announcements',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': true,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/links',\r\n 'Title': 'Links',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/studentNotes',\r\n 'Title': 'Student Notes',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/reportsQueue',\r\n 'Title': 'Report Queue',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/reports',\r\n 'Title': 'Reports',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/teacherProfile',\r\n 'Title': 'Teacher Profile',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/classInformation',\r\n 'Title': 'Class Information',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': true,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/staffMealService',\r\n 'Title': 'Meal Service',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/teamAttendance',\r\n 'Title': 'Team Attendance',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/seatingChart',\r\n 'Title': 'Seating Charts',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': true,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/classroom360/studentNextCourseRequests',\r\n 'Title': 'Student Next Course Requests',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': true,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/massEmailLog',\r\n 'Title': 'Mass Email Log',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/studentFields',\r\n 'Title': 'Student Fields',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/scheduledExports',\r\n 'Title': 'Scheduled Exports',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/behavior/behaviorEvents',\r\n 'Title': 'Behavior Events',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/behavior/interventions',\r\n 'Title': 'Interventions',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/behavior/behaviorEvents/addEvent',\r\n 'Title': 'Behavior Event',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/districtCourseRequestSetup',\r\n 'Title': 'District Course Request Setup',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/schoolCourseRequestSetup',\r\n 'Title': 'School Course Request Setup',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/bellSchedule/districtBellSchedule',\r\n 'Title': 'District Bell Schedules',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/bellSchedule/schoolBellSchedule',\r\n 'Title': 'School Bell Schedules',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/bellSchedule/schoolDateAssignments',\r\n 'Title': 'Days Assigned to Dates',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/schoolCourseRequestSetup',\r\n 'Title': 'School Course Request Setup',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/districtCourseRequestSetup',\r\n 'Title': 'District Course Request Setup',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/bellSchedule/editDistrictBellSchedule',\r\n 'Title': 'Edit District Bell Schedules',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/bellSchedule/editSchoolBellSchedule',\r\n 'Title': 'Edit School Bell Schedules',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/schoolSchedulingFolders',\r\n 'Title': 'School Scheduling Folders',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/schedulingGroups/schedulingGroupsList',\r\n 'Title': 'School Scheduling Groups',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/classesByCourse',\r\n 'Title': 'Classes By Course',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/potentialConflicts',\r\n 'Title': 'Potential Conflicts',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/gradeLevelSchedulingSummary',\r\n 'Title': 'Grade Level Scheduling Summary',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/masterschedule',\r\n 'Title': 'Master Schedule',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/sections',\r\n 'Title': 'Sections',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/scheduleStudentList',\r\n 'Title': 'Schedule Student List',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/teacherSchedulingSettings',\r\n 'Title': 'Teacher Scheduling Settings',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/roomSchedulingSettings',\r\n 'Title': 'Room Scheduling Settings',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/iepAlerts',\r\n 'Title': 'Individulized Education Program',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/counselor360/academicHistory',\r\n 'Title': 'Academic History',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/courseRequest',\r\n 'Title': 'Course Request',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/studentCourseRequest',\r\n 'Title': 'Course Requests',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/studentDigitalContent',\r\n 'Title': 'Student Digital Content',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': false\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/studentSchedulingSettings',\r\n 'Title': 'Student Scheduling Settings',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/admin360/eForms/processing',\r\n 'Title': 'Manage e-Forms',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/admin360/eForms/surveyprocessing',\r\n 'Title': 'Mange Surveys',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/periodStatistics',\r\n 'Title': 'Period Statistics',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/studentSchedulingLinks',\r\n 'Title': 'Student Scheduling Links',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/studentTeams',\r\n 'Title': 'Student Teams',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/academicAwards',\r\n 'Title': 'Academic Awards and Honor Roll',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/admin360/districtannouncements',\r\n 'Title': 'District Announcements',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/admin360/schoolannouncements',\r\n 'Title': 'School Announcements',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/counselor360/scheduling/classRoster',\r\n 'Title': 'Class Roster',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true\r\n },\r\n {\r\n 'Url': '/admin360/notifications/notificationEvents',\r\n 'Title': 'Notification Events',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false,\r\n },\r\n {\r\n 'Url': '/admin360/notifications/notificationGroups',\r\n 'Title': 'Notification Groups',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false,\r\n },\r\n {\r\n 'Url': '/admin360/notifications/myNotificationSettings',\r\n 'Title': 'My Notification Settings',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false,\r\n },\r\n {\r\n 'Url': '/admin360/notifications/myNotifications',\r\n 'Title': 'My Notifications',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': false,\r\n },\r\n {\r\n 'Url': '/admin360/contactTracing',\r\n 'Title': 'Contact Tracing',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/management360/school/schoolSettingsParentNotification',\r\n 'Title': 'Contact Tracing',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': false\r\n },\r\n {\r\n 'Url': '/management360/school/schoolSettingsAttendance',\r\n 'Title': 'Contact Tracing',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': false\r\n },\r\n {\r\n 'Url': '/management360/school/schoolSettingsGeneral',\r\n 'Title': 'Contact Tracing',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': false\r\n },\r\n {\r\n 'Url': '/management360/staff/permissionsGroups',\r\n 'Title': 'Permissions Groups',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/management360/staff/staffDocuments',\r\n 'Title': 'Staff Document',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/sped360/spedManagement/fieldsWithinForms',\r\n 'Title': 'Fields Within Forms',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/sped360/spedManagement/formsSetup',\r\n 'Title': 'Forms Setup',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/sped360/spedManagement/collectionsOfForms',\r\n 'Title': 'Collection Of Forms',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/sped360/spedHome',\r\n 'Title': 'Special Services Home',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/management360/district/parentStudentPortalSettings',\r\n 'Title': 'Parent/Student Portal Settings',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/admin360/registrationEnrollment/householdInformation',\r\n 'Title': 'Household Information',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/admin360/registrationEnrollment/detailedRegistration',\r\n 'Title': 'Household Registration',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': false\r\n },\r\n {\r\n 'Url': '/student360/scheduleHistory',\r\n 'Title': 'Schedule History',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n },\r\n {\r\n 'Url': '/student360/scheduleHistory/multipleStudent',\r\n 'Title': 'Schedule History',\r\n 'ClassroomPage': false,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': true,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': false\r\n },\r\n {\r\n 'Url': '/sped360/studentDocumentHome',\r\n 'Title': 'Special Services Student Documents Homepage',\r\n 'ClassroomPage': true,\r\n 'RequiredCourse': false,\r\n 'ShowSchoolDropdown': false,\r\n 'ShowYearDropdown': true,\r\n 'DisableYearDropdown': true\r\n }\r\n ];\r\n\r\n // Properties\r\n Url: string;\r\n Title: string;\r\n PrintStyle?: string;\r\n ClassroomPage: boolean;\r\n RequiredCourse: boolean;\r\n isV10?: boolean;\r\n ShowSchoolDropdown: boolean;\r\n ShowYearDropdown: boolean | Function;\r\n HidePrintButton?: boolean;\r\n DisableYearDropdown?: boolean | Function;\r\n\r\n // Static Methods\r\n static getPageTitle(url: string) {\r\n // POST: returns to you a page title\r\n if (url.includes('?')) {\r\n url = url.substring(0, url.indexOf('?'));\r\n }\r\n const pageInfo = RouteInfo.pages.filter(function (page) {\r\n return page.Url == url;\r\n })[0];\r\n if (pageInfo) {\r\n return pageInfo.Title;\r\n } else {\r\n return '';\r\n }\r\n }\r\n // Static Methods\r\n static getPagePrintStyle(url: string) {\r\n // POST: returns to you a page title\r\n const pageInfo = RouteInfo.pages.filter(function (page) {\r\n return page.Url == url;\r\n })[0];\r\n if (pageInfo) {\r\n return pageInfo.PrintStyle;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n static getPageInfo(url: string) {\r\n const pageInfo = RouteInfo.pages.filter(function (page) {\r\n return page.Url == url;\r\n })[0];\r\n\r\n return pageInfo;\r\n }\r\n}\r\n","export enum PermissionEnum {\r\n // Academic Awards\r\n AcademicAwardsSchool = 1298,\r\n AcademicAwardsDistrict = 2350,\r\n\r\n // Academic History\r\n AcademicHistoryAddEdit = 1299,\r\n AcademicHistoryView = 1296,\r\n AcademicHistoryViewAddEdit = 1294,\r\n AcademicHistory = 2084,\r\n\r\n // AcademicProgress\r\n AddEditEducationPlan = 2170,\r\n AddEditCreditAcquisition = 2173,\r\n AddEditGraduationPlan = 2385,\r\n AddEditProficiencyProgress = 2591,\r\n\r\n // Attendance\r\n AddEditPeriodicAttendance = 1128,\r\n AddEditTeacherSubjectAttendance = 1195,\r\n\r\n // Behavior Events\r\n BehaviorEventAddEdit = 1199,\r\n BehaviorEventQuickEntry = 2204,\r\n BehaviorEventView = 1217,\r\n BehaviorEventSearchStudent = 1228,\r\n BehaviorEventViewDetails = 1231,\r\n\r\n // Behavior Interventions\r\n BehaviorInterventionViewAll = 2575,\r\n BehaviorInterventionAddEditAll = 2576,\r\n BehaviorInterventionViewMy = 2577,\r\n BehaviorInterventionAddEditMy = 2578,\r\n BehaviorInterventionDeleteAll = 2579,\r\n BehaviorInterventionDeleteMy = 2580,\r\n\r\n // Behavior Referrals\r\n AcceptDisciplineReferrals = 1800,\r\n AddEditDisciplineReferral = 1798,\r\n AllowEditDeleteReferral = 2521,\r\n ViewDisciplineReferral = 1823,\r\n ViewAllDisciplineReferrals = 2558,\r\n\r\n // Course Verification\r\n CourseVerificationAddEdit = 1721,\r\n CourseVerificationView = 1724,\r\n\r\n // CommunicationLog\r\n AddEditMyCommunicationLogCounselor = 2336,\r\n AddEditAllCommunicationLogsCounselor = 2337,\r\n AddEditMyCommunicationLogStudentRecord = 2340,\r\n AddEditAllCommunicationLogsStudentRecord = 2341,\r\n AddEditMyCommunicationLogMyStudents = 2344,\r\n AddEditAllCommunicationLogsMyStudents = 2345,\r\n ViewMyCommunicationLogCounselor = 2338,\r\n ViewAllCommunicationLogsCounselor = 2339,\r\n ViewMyCommunicationLogStudentRecord = 2342,\r\n ViewAllCommunicationLogsStudentRecord = 2343,\r\n ViewMyCommunicationLogMyStudents = 2346,\r\n ViewAllCommunicationLogsMyStudents = 2347,\r\n ViewCommunicationLogsCounselorFunctions = 2335,\r\n ViewConfidentialNotes = 2560,\r\n AddEditConfidentialNotes = 2561,\r\n DeleteMyCommunicationLog = 2562,\r\n DeleteAllCommunicationLogs = 2563,\r\n\r\n // e-Form Permissions\r\n eFormAddEditCategory = 2547,\r\n eFormAddEditTeplate = 2548,\r\n eFormAddEditAllForms = 2549,\r\n eFormAddEditAllTranslations = 2550,\r\n eFormEditInUseForms = 2551,\r\n eFormViewAllForms = 2552,\r\n eFormRevieApproveAllForms = 2553,\r\n eFormAddEditForm = 2554,\r\n eFormViewForm = 2555,\r\n eFormAddEditTranslation = 2556,\r\n eFormReviewApproveForm = 2557,\r\n eFormViewAllAggregateData= 2593,\r\n eFormViewAggregateData = 2595,\r\n eFormCompleteAllStudentForms = 2594,\r\n eFormCompleteStudentForms= 2596,\r\n\r\n // Programs and Services\r\n StudentGeneralProfileStudentPrograms = 2573,\r\n\r\n // scheduling 360 permissions\r\n AddCourseRequestRead = 616,\r\n AddEditClassrooms = 1797,\r\n AddEditCustomSchedulingProperties = 2565,\r\n AddEditCycleCodes = 1458,\r\n AddEditDistrictBellSchedule = 1449,\r\n AddEditDistrictCycleCodes = 1450,\r\n AddEditEmployeeDepartments = 1846,\r\n AddEditLinkedClasses = 1463,\r\n AddEditLocalRoomGroups = 1409,\r\n AddEditSchedulingGroupCategory = 2566,\r\n AddEditSchoolBellSchedule = 1455,\r\n AddEditSchoolCycleCodes = 1458,\r\n AddEditStudentClassGroups = 1460,\r\n AddEditStudentGlobalAvoidedStudents = 1426,\r\n AddEditStudentGlobalAvoidedTeachers = 1430,\r\n AddEditStudentGlobalAvoidedPeriods= 1434,\r\n AddEditStudentLocalAvoidedPeriods = 1436,\r\n AddEditStudentLocalAvoidedStudents= 1428,\r\n AddEditStudentLocalAvoidedTeachers = 1432,\r\n AddEditSubjectSections = 1466,\r\n AddEditTeacherBasicInformation = 1416,\r\n AddEditTeacherGlobalAvoidedStudents = 1417,\r\n AddEditTeacherLocalAvoidedPeriods = 1423,\r\n AllowConflictOverrides = 2348,\r\n ClearOthersWorkingSchedule= 2517,\r\n CourseRequestRead = 606,\r\n DeleteDistrictBellSchedule = 1403,\r\n DeleteLinkedClasses = 1464,\r\n DeleteSchoolBellSchedule = 1474,\r\n DeleteSections = 1467,\r\n DeleteTeacherLocalAvoidedPeriods = 1424,\r\n DistrictCourseRequestSetupRead = 2534,\r\n DistrictCourseRequestSetupWrite = 2535,\r\n EditFolderSettings = 1454,\r\n EditGlobalSettings = 1441,\r\n EditMasterSchedule = 1476,\r\n EmployeeSubjectArea = 221,\r\n GradeLevelCourseRequestSetupRead = 871,\r\n GradeLevelCourseRequestSetupWrite = 872,\r\n MassCourseRequest = 1078,\r\n MassRemoveCourseRequests = 1859,\r\n PerformStudentScheduling = 1482,\r\n RunAutoScheduler = 1478,\r\n ScheduleStudents = 1468,\r\n SchoolCourseRequestSetupRead = 608,\r\n SchoolCourseRequestSetupWrite = 609,\r\n ViewCustomSchedulingProperties = 2564,\r\n ViewDistrictBellSchedule = 1452,\r\n ViewDistrictCycleCodes = 1451,\r\n ViewMasterSchedule = 1475,\r\n ViewRoomResources = 1405,\r\n ViewSchedulingFolders = 1445,\r\n ViewSchoolBellSchedule = 1473,\r\n ViewSchoolCycleCodes = 1456,\r\n ViewStudentClassGroups = 1459,\r\n ViewStudentPreferences = 1425,\r\n ViewStudentScheduler = 1481,\r\n ViewSubjectSections = 1465,\r\n ViewTeacherPreferences = 1415,\r\n\r\n\r\n // Student Notes\r\n StudentNotesCounselorAddEdit = 2103,\r\n StudentNotesMyStudentsAddEdit = 2101,\r\n StudentNotesStudentRecordAddEdit = 2099,\r\n StudentNotesCounselorView = 2102,\r\n StudentNotesMyStudentsView = 2100,\r\n StudentNotesStudentRecordView = 2098,\r\n\r\n // Team Attendance\r\n AddEditTeacherTeamAttendance = 1197,\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { YearService } from '../year/year.service';\r\nimport { UserPermission } from '../user/user-permission.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { BehaviorSubject, Observable} from 'rxjs';\r\nimport { PermissionEnum } from './permissions.enums';\r\nimport {PermissionGroup} from './permission-group.model';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {System} from '../System';\r\nimport { uniq } from 'lodash';\r\n\r\n@Injectable()\r\nexport class SecurityService {\r\n\r\n private _userPermissions: UserPermission[] = [];\r\n\r\n public get userPermissions() {\r\n return this._userPermissions;\r\n }\r\n\r\n public set userPermissions(permissions: UserPermission[]) {\r\n this._userPermissions = permissions;\r\n this.observablePermissions.next(this._userPermissions);\r\n }\r\n\r\n public observablePermissions = new BehaviorSubject([]);\r\n observablePermissionStream$ = this.observablePermissions.asObservable();\r\n\r\n get userPermissionGroupIDs(): number[] {\r\n return uniq(this._userPermissions.map(o => o.GroupId));\r\n }\r\n\r\n\r\n constructor(\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private http: HttpClient\r\n ) {\r\n\r\n // If the academic year or school changes, load the user permission as per newly selected year/school\r\n this.yearService.observableDefaultYearStream$.subscribe(defaultYear => {\r\n this.userPermissions = [];\r\n this.loadUserPermissions();\r\n });\r\n }\r\n\r\n loadUserPermissions() {\r\n if (this.userService.currentUser != null && this.userService.currentUser.UserType == 1 && this.userPermissions.filter(p => p.SiteId === this.yearService.defaultYear.SchoolID).length == 0) {\r\n this.userService.getUserPermissions(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(permissions => {\r\n this.userPermissions = [...this.userPermissions, ...permissions];\r\n this.observablePermissions.next(this.userPermissions);\r\n });\r\n }\r\n }\r\n\r\n // permission checking\r\n // return true if any of the supplied permission is assigned to the logged-in user.\r\n IsAnyPermissionAssigned(...permissions: PermissionEnum[]): boolean {\r\n return permissions.some(p => this.userPermissions.findIndex(x => x.SiteId === this.yearService.defaultYear.SchoolID && x.PrivilegeId == p) >= 0);\r\n }\r\n\r\n // return true if all supplied permissions must be assigned to the logged-in user.\r\n IsAllPermissionAssigned(...permissions: PermissionEnum[]): boolean {\r\n return permissions.every(p => this.userPermissions.findIndex(x => x.SiteId === this.yearService.defaultYear.SchoolID && x.PrivilegeId == p) >= 0);\r\n }\r\n\r\n // return true if use has given permission with given special value\r\n IsPermissionCategoryAssigned(permissionCode: string, category: string) {\r\n return this.userPermissions.findIndex(o => o.PermissionCode == permissionCode && o.PermissionCategory == category) >= 0;\r\n }\r\n\r\n // return true if any of the supplied permission codes is assigned to the logged-in user.\r\n IsAnyPermissionCodeAssigned(...permissions: string[]): boolean {\r\n return permissions.some(p => this.userPermissions.findIndex(x => x.PermissionCode == p) >= 0);\r\n }\r\n\r\n // return true if all supplied permission codes must be assigned to the logged-in user.\r\n IsAllPermissionCodeAssigned(...permissions: string[]): boolean {\r\n return permissions.every(p => this.userPermissions.findIndex(x => x.PermissionCode == p) >= 0);\r\n }\r\n\r\n // return true if any of the supplied permission group IDs is assigned to the logged-in user.\r\n IsAnyPermissionGroupAssigned(...permissionGroupIDs: number[]): boolean {\r\n return permissionGroupIDs.some(p => this.userPermissions.findIndex(x => x.GroupDescriptionId == p) >= 0);\r\n }\r\n\r\n // return true if all supplied permission group IDs are assigned to the logged-in user.\r\n IsAllPermissionGroupAssigned(...permissionGroupIDs: number[]): boolean {\r\n return permissionGroupIDs.every(p => this.userPermissions.findIndex(x => x.GroupDescriptionId == p) >= 0);\r\n }\r\n\r\n getSchoolIdsFromPermissions(permissions: number[]): number[] {\r\n const distinct = (value, index, self) => {\r\n return self.indexOf(value) === index;\r\n };\r\n const schoolIds = this.userPermissions.filter(o => permissions.includes(o.PrivilegeId) ).map(o => o.SiteId);\r\n return schoolIds.filter(distinct);\r\n }\r\n\r\n getPermissionGroups(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetPermissionGroups');\r\n }\r\n}\r\n","\r\n\r\n\r\n
0\">\r\n \r\n\r\n \r\n \r\n Type\r\n \r\n \r\n {{st.Type}}\r\n \r\n\r\n \r\n \r\n Date\r\n \r\n \r\n {{st.Date | date: 'MM/dd/yyyy'}}\r\n \r\n\r\n \r\n \r\n \r\n Time\r\n \r\n \r\n {{st.Time}}\r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n {{st.Status}}\r\n \r\n\r\n \r\n \r\n \r\n Submitted By\r\n \r\n \r\n {{st.SubmittedBy}}\r\n \r\n\r\n \r\n \r\n \r\n \"paperclip\"\r\n \r\n \r\n Y\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Reason\r\n \r\n \r\n {{st.Reason}}\r\n \r\n\r\n \r\n \r\n \r\n Action\r\n \r\n \r\n Delete\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { take } from 'rxjs/operators';\r\nimport { AttendanceAdministrationService } from '../../admin360/attendance-administration/attendance-administration.service';\r\nimport { CheckInOutSubmissionRequest } from '../../student360/student-summary/check-in-out-submission-request-modal/check-in-out-submission-request-modal.model';\r\nimport { TylerMatTableDataSource } from '../angular-material/extended.class';\r\nimport { GeneralConfirmationComponent } from '../controls/general-confirmation/general-confirmation.component';\r\nimport { SharedService } from '../shared.service';\r\nimport { Student } from '../student/student.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { ViewAttachmentsComponent } from '../view-attachments/view-attachments.component';\r\n\r\n@Component({\r\n selector: 'app-self-check-in-out-history-dialog',\r\n templateUrl: './self-check-in-out-history-dialog.component.html',\r\n styleUrls: ['./self-check-in-out-history-dialog.component.css']\r\n})\r\nexport class SelfCheckInOutHistoryDialogComponent implements OnInit {\r\n studentId: number;\r\n calledFromMenu = false;\r\n isStaff = false;\r\n selfCheckInOutSubmission: CheckInOutSubmissionRequest[] = [];\r\n\r\n columnsToDisplay = ['Type', 'Date', 'Time', 'Status', 'SubmittedBy', 'Reason', 'Attachment', 'Action'];\r\n angularMatData = new TylerMatTableDataSource(this.selfCheckInOutSubmission);\r\n\r\n _sort: MatSort;\r\n useStudents: Student[] = [];\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private attendanceAdminService: AttendanceAdministrationService,\r\n private userService: UserService,\r\n private sharedService: SharedService) {\r\n this.useStudents.push(this.data.selectedStudent);\r\n }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.angularMatData.sort = value;\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n ngOnInit() {\r\n this.studentId = this.data.studentId;\r\n this.isStaff = this.userService.currentUser.UserType == 1 ? true : false;\r\n if (this.data.calledFromMenu != undefined) {\r\n this.calledFromMenu = this.data.calledFromMenu;\r\n }\r\n if (this.calledFromMenu == false) {\r\n this.columnsToDisplay = ['Type', 'Date', 'Time', 'Status', 'Attachment', 'Reason'];\r\n }\r\n this.getSelfCheckInOutSubmissionHistory();\r\n }\r\n\r\n getSelfCheckInOutSubmissionHistory() {\r\n this.attendanceAdminService.getAttendanceSelfCheckInOutByStudentId(this.studentId).pipe(take(1)).subscribe(history => {\r\n this.selfCheckInOutSubmission = history;\r\n this.angularMatData.data = this.selfCheckInOutSubmission;\r\n });\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n viwAttachments(id: number) {\r\n this.attendanceAdminService.getCheckInOutHistoryAttachmentById(id, 'Submission').pipe(take(1)).subscribe(attachment => {\r\n this.dialog.open(ViewAttachmentsComponent, {\r\n data: {\r\n attachments: attachment\r\n },\r\n disableClose: true,\r\n minWidth: '750px'\r\n });\r\n });\r\n }\r\n\r\n deleteClick(recordId: number) {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Delete Check In/Out Record';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to delete this Check In/Check Out Record?';\r\n deleteConfirmDialog.componentInstance.okButtonLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.attendanceAdminService.deleteCheckInOutRecordById(recordId, 'submission').pipe(take(1)).subscribe(result => {\r\n if (result == true) {\r\n this.getSelfCheckInOutSubmissionHistory();\r\n }\r\n else {\r\n this.sharedService.showBadSnackbar();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n}\r\n","// Modules\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PlatformModule } from '@angular/cdk/platform';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MaterialModule } from './angular-material/material.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { OrderModule } from 'ngx-order-pipe';\r\nimport { PDFExportModule } from '@progress/kendo-angular-pdf-export';\r\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\n\r\n// Components\r\nimport { TylButtonComponent } from './controls/buttons/tyl-button.component';\r\nimport { ErrorPromptComponent } from './controls/error-prompt/error-prompt.component';\r\nimport { StudentHeaderComponent } from './student-header/student-header.component';\r\nimport { ExampleComponent } from './example/component-example/component-example.component';\r\nimport { ModalWindowExampleComponent } from './example/modal-window-example/modal-window-example.component';\r\nimport { ActionMenuAgGridComponent } from './controls/action-menu/action-menu-ag-grid.component';\r\nimport { ActionMenuComponent } from './controls/action-menu/action-menu.component';\r\nimport { StudentNameComponent } from './student/student-name/student-name.component';\r\nimport { StudentSearchComponent } from './student-search/student-search.component';\r\nimport { CourseSearchComponent } from './course-search/course-search.component';\r\nimport { AdvancedCourseSearchComponent } from './course-search/advanced-course-search/advanced-course-search.component';\r\nimport { SelectedCourseListComponent } from './course-search/selected-course-list/selected-course-list.component';\r\nimport { MassEmailComponent } from './controls/mass-email/mass-email.component';\r\nimport { SpinnerComponent } from './spinner/spinner.component';\r\nimport { ExpandCollapseButtonsComponent } from './controls/buttons/expand-collapse-buttons/expand-collapse-buttons.component';\r\nimport { TabsComponent } from './controls/tabs/tabs.component';\r\nimport { FilterComponent } from './controls/filter/filter.component';\r\nimport { TylHeaderButtonComponent } from './controls/buttons/tyl-header-button.component';\r\nimport { PageHeaderComponent } from './page-header/page-header.component';\r\nimport { SaveCancelButtonsComponent } from './controls/buttons/save-cancel-buttons/save-cancel-buttons.component';\r\nimport { AddAttachmentDialogComponent } from './add-attachment-dialog/add-attachment-dialog.component';\r\nimport { StudentAlertsComponent } from './student-alerts/student-alerts.component';\r\nimport { OnlineRegistrationService } from '../student360/online-registration/online-registration.service';\r\nimport { AlertsDialogComponent } from './student-alerts/alerts-dialog/alerts-dialog.component';\r\nimport { ProfileTableComponent } from './profile-table/profile-table.component';\r\nimport { DeleteProfileAttachmentDialogComponent } from './profile-table/delete-profile-attachment-dialog/delete-profile-attachment-dialog.component';\r\nimport { AddProfileAttachmentDialogComponent } from './profile-table/add-profile-attachment-dialog/add-profile-attachment-dialog.component';\r\nimport { AttachmentsMenuDialogComponent } from './profile-table/attachments-menu-dialog/attachments-menu-dialog.component';\r\nimport { AddEditContentDialogComponent } from './profile-table/add-edit-content-dialog/add-edit-content-dialog.component';\r\nimport { DeleteTopicDialogComponent } from './profile-table/delete-topic-dialog/delete-topic-dialog.component';\r\nimport { EditTopicDialogComponent } from './profile-table/edit-topic-dialog/edit-topic-dialog.component';\r\nimport { ProfileViewerDialogComponent } from './profile-viewer-dialog/profile-viewer-dialog.component';\r\nimport { AddTopicDialogComponent } from './profile-table/add-topic-dialog/add-topic-dialog.component';\r\nimport { AddFileComponent } from './controls/add-file/add-file.component';\r\nimport { AdditionalTeacherWarningDialogComponent } from './user-preferences/user-preferences-window/additional-teacher-warning-dialog/additional-teacher-warning-dialog.component';\r\nimport { CalculationPreferenceWarningDialogComponent } from './user-preferences/user-preferences-window/calculation-preference-warning-dialog/calculation-preference-warning-dialog.component';\r\nimport { CustomSortWarningDialogComponent } from './user-preferences/user-preferences-window/custom-sort-warning-dialog/custom-sort-warning-dialog.component';\r\nimport { NoGradingClassesDialogComponent } from './user-preferences/user-preferences-window/no-grading-classes-dialog/no-grading-classes-dialog.component';\r\nimport { PrimaryTeacherWarningDialogComponent } from './user-preferences/user-preferences-window/primary-teacher-warning-dialog/primary-teacher-warning-dialog.component';\r\nimport { SyncPreferencesDialogComponent } from './user-preferences/user-preferences-window/sync-preferences-dialog/sync-preferences-dialog.component';\r\nimport { FilterContentsComponent } from './controls/filter/filter-contents/filter-contents.component';\r\nimport { DarkTabsComponent } from './controls/tabs/dark-tabs.component';\r\nimport { AddLinkComponent } from '../classroom360/links/add-link/add-link.component';\r\nimport { ErrorPromptMessagesComponent } from './controls/error-prompt/error-prompt-messages.component';\r\nimport { TylDatepickerComponent } from './tyl-datepicker/tyl-datepicker.component';\r\nimport { TylMatMenuComponent } from './controls/menus/tyl-mat-menu.component';\r\nimport { TylHeaderMatMenuComponent } from './controls/menus/tyl-header-mat-menu.component';\r\nimport { TylFormFieldComponent } from './controls/tyl-form-field/tyl-form-field.component';\r\nimport { TylCheckboxComponent } from './controls/tyl-checkbox/tyl-checkbox.component';\r\nimport { TylRadioGroupComponent } from './controls/tyl-radio-group/tyl-radio-group.component';\r\nimport { TylCheckboxListComponent } from './controls/tyl-checkbox-list/tyl-checkbox-list.component';\r\nimport { FilterNotificationComponent } from './controls/filter/filter-notification/filter-notification.component';\r\nimport { AddEditReferralDialogComponent } from '../classroom360/discipline-referral/add-edit-referral-dialog/add-edit-referral-dialog.component';\r\nimport { NoteTableComponent } from '../classroom360/discipline-referral/note-table/note-table.component';\r\nimport { SelectCourseDialogComponent } from '../classroom360/guards/select-course/select-course-dialog/select-course-dialog.component';\r\nimport { AdvancedStudentSearchComponent } from './student-search/advanced-student-search/advanced-student-search.component';\r\nimport { DataQueryFilterTableComponent } from '../classroom360/data-query/data-query-filters/data-query-filter-table/data-query-filter-table.component';\r\nimport { DataQueryFieldLabelComponent } from '../classroom360/data-query/data-query-field-label/data-query-field-label.component';\r\nimport { DataQueryService } from '../classroom360/data-query/data-query.service';\r\nimport { DeleteRowDialogComponent } from '../classroom360/data-query/delete-row-dialog/delete-row-dialog.component';\r\nimport { InsertFieldDialogComponent } from '../classroom360/data-query/data-query-settings-for-export/insert-field-dialog/insert-field-dialog.component';\r\nimport { FieldSearchComponent } from '../classroom360/data-query/field-search/field-search.component';\r\nimport { DataQueryQueriesButtonComponent } from '../classroom360/data-query/data-query-queries-button/data-query-queries-button.component';\r\nimport { ViewQueriesDialogComponent } from '../classroom360/data-query/view-queries-dialog/view-queries-dialog.component';\r\nimport { AddEditQueryDialogComponent } from '../classroom360/data-query/add-edit-query-dialog/add-edit-query.component';\r\nimport { ErrorsExistDialogComponent } from '../classroom360/data-query/errors-exist-dialog/errors-exist-dialog.component';\r\nimport { DeleteQueryDialogComponent } from '../classroom360/data-query/delete-query-dialog/delete-query-dialog.component';\r\nimport { DataQueryUnsavedChangesDialogComponent } from '../classroom360/data-query/data-query-unsaved-changes-dialog/data-query-unsaved-changes-dialog.component';\r\nimport { ClassroomSummaryFilterComponent } from '../classroom360/classroom-summary/filter/classroom-summary-filter.component';\r\nimport { CustomPageComponent } from './custom-page/custom-page.component';\r\nimport { CustomFieldComponent } from './custom-page/custom-field/custom-field.component';\r\nimport { GeneralConfirmationComponent } from './controls/general-confirmation/general-confirmation.component';\r\nimport { FavoritesComponent } from './favorites/favorites.component';\r\nimport { FavoritesModalComponent } from './favorites/favorites-modal/favorites-modal.component';\r\nimport { TylGeneralMatMenuComponent } from './controls/menus/tyl-general-mat-menu.component';\r\nimport { TylMultipleSelectListComponent } from './controls/tyl-multiple-select-list/tyl-multiple-select-list.component';\r\nimport { TylSelectCheckAllComponent } from './controls/tyl-multiple-select-list/tyl-select-check-all.component';\r\nimport { GeneralSelectionComponent } from './controls/general-selection/general-selection.component';\r\nimport { CourseDescriptionDialogComponent } from './course-description-dialog/course-description-dialog.component';\r\nimport { ChangeEmailComponent } from './change-email/change-email.component';\r\nimport { ChangeEmailMessageComponent } from './change-email/change-email-message/change-email-message.component';\r\nimport { VirtualizedTableComponent } from './virtualized-table/virtualized-table.component';\r\nimport { StudentSelectionComponent } from './controls/student-selection/student-selection.component';\r\nimport { ImportErrorDialogComponent } from '../classroom360/data-query/add-edit-query-dialog/import-error-dialog/import-error-dialog.component';\r\nimport { FileTooLargeWarningDialogComponent } from './controls/add-file/file-too-large-warning-dialog/file-too-large-warning-dialog.component';\r\nimport { MenuComponent } from './menu/menu.component';\r\nimport { ChildMenuComponent } from './menu/child-menu.component';\r\nimport { StudentInFocusComponent } from './student/student-in-focus/student-in-focus.component';\r\nimport { AddEditStudentListDialogComponent } from '../classroom360/student-lists/add-edit-student-list-dialog/add-edit-student-list-dialog.component';\r\nimport { EnterCsvDialogComponent } from './enter-csv-dialog/enter-csv-dialog.component';\r\nimport { PortalAccessDeniedComponent } from '../student360/portal-access-denied/portal-access-denied.component';\r\nimport { LayoutEditorComponent } from './custom-layouts/layout-editor/layout-editor.component';\r\nimport { StudentSearchWarningComponent } from './student-search/student-search-warning/student-search-warning.component';\r\nimport { BroadcastDialogComponent } from '../shared-modules/announcement/broadcast-dialog/broadcast-dialog.component';\r\nimport { AddNonStudentDialogComponent } from '../classroom360/discipline-referral/add-non-student-dialog/add-non-student-dialog.component';\r\nimport { StaffSearchComponent } from './staff-search/staff-search.component';\r\nimport { CourseSectionSearchComponent } from './course-section-search/course-section-search.component';\r\nimport { StudentInformationComponent } from './student-information/student-information.component';\r\nimport { StudentInfoPortalComponent } from './student-information/student-info-portal/student-info-portal.component';\r\nimport { ErrorDialogComponent } from './error-dialog/error-dialog.component';\r\nimport { NoRelationshipsWarningDialogComponent } from '../classroom360/data-query/no-relationships-warning-dialog/no-relationships-warning-dialog.component';\r\nimport { OverlayHeaderComponent } from './overlay-header/overlay-header.component';\r\nimport { TemplatesFromClassicDialogComponent } from '../classroom360/data-query/add-edit-query-dialog/templates-from-classic-dialog/templates-from-classic-dialog.component';\r\nimport { SavedLayoutsDialogComponent } from './custom-layouts/saved-layouts-dialog/saved-layouts-dialog.component';\r\nimport { AboutPanelComponent } from './controls/about-panel/about-panel.component';\r\nimport { ProjectScoresInfoComponent } from './user-preferences/user-preferences-window/project-scores-info/project-scores-info.component';\r\nimport { CustomLayoutComponent } from './custom-layouts/custom-layout/custom-layout.component';\r\nimport { SaveLayoutDialogComponent } from './custom-layouts/save-layout-dialog/save-layout-dialog.component';\r\nimport { EFormViewerComponent } from './e-forms/e-form-viewer/e-form-viewer.component';\r\nimport { EFormViewerColumnComponent } from './e-forms/e-form-viewer/e-form-viewer-column/e-form-viewer-column.component';\r\nimport { EFormViewerRowComponent } from './e-forms/e-form-viewer/e-form-viewer-row/e-form-viewer-row.component';\r\nimport { EFormViewerControlComponent } from './e-forms/e-form-viewer/e-form-viewer-control/e-form-viewer-control.component';\r\nimport { SelectedSitesDialogComponent } from './controls/selected-sites-dialog/selected-sites-dialog.component';\r\nimport { SelectedRolesDialogComponent } from './controls/selected-roles-dialog/selected-roles-dialog.component';\r\nimport { EFormNotesComponent } from './e-forms/e-form-notes/e-form-notes.component';\r\nimport { MassEditReferralDialogComponent } from './behavior/mass-edit-referral-dialog/mass-edit-referral-dialog.component';\r\nimport { StudentListModalComponent } from './student-search/student-list-modal/student-list-modal.component';\r\nimport { ProgramsAndServicesComponent } from '../student360/programs-and-services/programs-and-services.component';\r\nimport { AnnouncementMessageComponent } from '../shared-modules/announcement/announcement-message/announcement-message.component';\r\nimport { AnnouncementTableComponent } from '../shared-modules/announcement/announcement-table/announcement-table.component';\r\nimport { LayoutUnsavedChangesDialogComponent } from './custom-layouts/layout-editor/layout-unsaved-changes-dialog/layout-unsaved-changes-dialog.component';\r\nimport { CustomLayoutSectionComponent } from './custom-layouts/custom-layout/custom-layout-section/custom-layout-section.component';\r\nimport { CustomLayoutFieldComponent } from './custom-layouts/custom-layout/custom-layout-field/custom-layout-field.component';\r\nimport { CustomLayoutFieldLabelComponent } from './custom-layouts/custom-layout/custom-layout-field-label/custom-layout-field-label.component';\r\nimport { AddEditStudentRegCodeDialogComponent } from './add-edit-student-reg-code-dialog/add-edit-student-reg-code-dialog.component';\r\nimport { SaveWarningDialogComponent } from '../classroom360/discipline-referral/save-warning-dialog/save-warning-dialog.component';\r\nimport { IepComponent } from '../student360/iep/iep.component';\r\nimport { JobSentToQueueComponent } from './job-sent-to-queue/job-sent-to-queue.component';\r\nimport { AddNoteComponent } from '../classroom360/discipline-referral/add-note/add-note.component';\r\nimport { StaffListDialogComponent } from './staff-search/staff-list-dialog/staff-list-dialog.component';\r\nimport { AdvancedStaffSearchComponent } from './staff-search/advanced-staff-search/advanced-staff-search.component';\r\nimport { GroupConditionInfoDialogComponent } from '../classroom360/data-query/data-query-filters/group-condition-info-dialog/group-condition-info-dialog.component';\r\nimport { TylRTFComponent } from './controls/tyl-rtf/tyl-rtf.component';\r\nimport { ReEnrollStudentsComponent } from './student-header/re-enroll-students/re-enroll-students.component';\r\nimport { NoInternetConnectionModalComponent } from './no-internet-connection-modal/no-internet-connection-modal.component';\r\nimport { TylKendoPdfExportComponent } from './kendo/tyl-kendo-pdf-export/tyl-kendo-pdf-export.component';\r\nimport { AddEditCommunicationLogComponent } from '../shared-modules/communication-log/add-edit-communication-log/add-edit-communication-log.component';\r\nimport { EditTranslationsComponent } from './translation/edit-translations/edit-translations.component';\r\nimport { EditRichTextComponent } from './translation/edit-translations/edit-rich-text/edit-rich-text.component';\r\nimport { GPARankLegendComponent } from '../counselor360/gpa-class-rank/gpa-rank-legend/gpa-rank-legend.component';\r\nimport { LegendComponent } from './legend/legend.component';\r\nimport { StudentImageDialogComponent } from './student-header/student-image-dialog/student-image-dialog.component';\r\nimport { MultipleFamiliesComponent } from '../student360/online-registration/student-update/multiple-families/multiple-families.component';\r\nimport { AdminCommentDialogComponent } from './behavior/mass-edit-referral-dialog/admin-comment-dialog/admin-comment-dialog.component';\r\nimport { GradebookAccessDeniedComponent } from '../classroom360/gradebook/v9/modals/gradebook-access-denied/gradebook-access-denied.component';\r\nimport { TylCalWidgetComponent } from './tyl-cal-widget/tyl-cal-widget.component';\r\nimport { ProgressBarComponent } from './controls/progress-bar/progress-bar.component';\r\nimport { NoClassSelectedWarningDialogComponent } from '../classroom360/guards/select-course/no-class-selected-warning-dialog/no-class-selected-warning-dialog.component';\r\nimport { GradeOverrideLegendComponent } from './controls/grade-override-legend/grade-override-legend.component';\r\nimport { EFormDesignerComponent } from './e-forms/e-form-designer/e-form-designer.component';\r\nimport { EFormColumnComponent } from './e-forms/e-form-designer/e-form-column/e-form-column.component';\r\nimport { EFormRowComponent } from './e-forms/e-form-designer/e-form-row/e-form-row.component';\r\nimport { EFormControlComponent } from './e-forms/e-form-designer/e-form-control/e-form-control.component';\r\nimport { EFormSidePanelComponent } from './e-forms/e-form-designer/e-form-side-panel/e-form-side-panel.component';\r\nimport { EFormNavigationPanelComponent } from './e-forms/e-form-designer/e-form-side-panel/e-form-navigation-panel/e-form-navigation-panel.component';\r\nimport { EFormPropertiesPanelComponent } from './e-forms/e-form-designer/e-form-side-panel/e-form-properties-panel/e-form-properties-panel.component';\r\nimport { EFormAvailableControlsComponent } from './e-forms/e-form-designer/e-form-side-panel/e-form-available-controls/e-form-available-controls.component';\r\nimport { MergeFieldDialogComponent } from './e-forms/e-form-designer/merge-field-dialog/merge-field-dialog.component';\r\nimport { EFormChoicesDialogComponent } from './e-forms/e-form-designer/e-form-choices-dialog/e-form-choices-dialog.component';\r\nimport { ValueFromAnotherFieldDialogComponent } from './e-forms/e-form-designer/value-from-another-field-dialog/value-from-another-field-dialog.component';\r\nimport { EFormTemplateInUseWarningComponent } from './e-forms/e-form-designer/e-form-template-in-use-warning/e-form-template-in-use-warning.component';\r\nimport { FloatingGridComponent } from './floating-grid/floating-grid.component';\r\nimport { StudentDocumentAccessHistoryComponent } from '../student360/student-documents/student-document-access-history/student-document-access-history.component';\r\nimport { QuillTextOnlyComponent } from './quill-text-only/quill-text-only.component';\r\nimport { QuillTextOnlyOneLineComponent } from './quill-text-only/quill-text-only-one-line/quill-text-only-one-line.component';\r\nimport { SelectorComponent } from './controls/selector/selector.component';\r\nimport { TylRaceEthnicityComponent } from './controls/tyl-race-ethnicity/tyl-race-ethnicity.component';\r\nimport { TylRaceEthnicityListComponent } from './controls/tyl-race-ethnicity/tyl-race-ethnicity-list.component';\r\nimport { TylTimeFieldComponent } from './controls/tyl-time-field/tyl-time-field.component';\r\nimport { TylDragSelectionComponent } from './controls/tyl-drag-selection/tyl-drag-selection.component';\r\nimport { MassEmailViewComponent } from '../shared-components/mass-email-view/mass-email-view.component';\r\nimport { SelectRecipientsComponent } from '../shared-components/mass-email-view/select-recipients/select-recipients.component';\r\nimport { UnselectedWarningComponent } from '../shared-components/mass-email-view/unselected-warning/unselected-warning.component';\r\nimport { NoEmailWarningComponent } from '../shared-components/mass-email-view/no-email-warning/no-email-warning.component';\r\nimport { MassEmailAttachmentComponent } from '../shared-components/mass-email-view/mass-email-attachment/mass-email-attachment.component';\r\nimport { SendEmailsWarningComponent } from '../shared-components/mass-email-view/send-emails-warning/send-emails-warning.component';\r\nimport { ByClassRowStudentComponent } from '../shared-components/mass-email-view/select-recipients/by-class-row-student/by-class-row-student.component';\r\nimport { ViewRecipientsModalComponent } from '../shared-components/mass-email-view/view-recipients-modal/view-recipients-modal.component';\r\nimport { SendTestEmailComponent } from '../shared-components/mass-email-view/send-test-email/send-test-email.component';\r\nimport { ByTeamRowStudentComponent } from '../shared-components/mass-email-view/select-recipients/by-team-row-student/by-team-row-student.component';\r\nimport { ByListRowStudentComponent } from '../shared-components/mass-email-view/select-recipients/by-list-row-student/by-list-row-student.component';\r\nimport { EFormViewerHeaderComponent } from './e-forms/e-form-viewer/e-form-viewer-header/e-form-viewer-header.component';\r\n\r\n// Services\r\nimport { LookupService } from './lookup/lookup.service';\r\nimport { StudentSearchService } from './student-search/student-search.service';\r\nimport { CourseSearchService } from './course-search/course-search.service';\r\nimport { ProfileService } from './profile-table/profile.service';\r\nimport { FamilyRegistrationService } from '../shared-modules/family-registration/family-registration.service';\r\nimport { DisciplineReferralService } from '../classroom360/discipline-referral/discipline-referral.service';\r\nimport { SpinnerService } from './spinner/spinner.service';\r\nimport { CustomPageService } from './custom-page/custom-page.service';\r\nimport { SendEmailService } from '../shared-modules/send-email/send-email.service';\r\nimport { CustomLayoutsService } from './custom-layouts/custom-layouts.service';\r\nimport { StudentListsService } from '../classroom360/student-lists/student-lists.service';\r\nimport { AnnouncementService } from '../shared-modules/announcement/announcement.service';\r\nimport { BehaviorSharedService } from './behavior/behavior-shared.service';\r\nimport { GradebookV10Service } from '../classroom360/gradebook/v10/gradebook-V10.service';\r\nimport { EFormService } from './e-forms/e-form.service';\r\nimport { ProgramsAndServicesService } from '../student360/programs-and-services/programs-and-services.service';\r\nimport { StaffSearchService } from './staff-search/staff-search.service';\r\nimport { TranslationService } from './translation/translation.service';\r\nimport { BehaviorService } from '../counselor360/behavior/behavior.service';\r\nimport { CourseSectionSearchService } from './course-section-search/course-section-search.service';\r\nimport { EFormDesignerService } from './e-forms/e-form-designer/e-form-designer.service';\r\nimport { StaffCardsService } from '../classroom360/staff-home/staff-cards/staff-cards.service';\r\nimport { NotificationsService } from '../admin360/notifications/notifications.service';\r\nimport { CourseRequestMgmtService } from '../counselor360/scheduling/course-request-mgmt/course-request-mgmt.service';\r\nimport { ScheduleFolderService } from '../counselor360/scheduling/schedule-folder/schedule-folder.service';\r\nimport { MassEmailService } from '../shared-components/mass-email-view/mass-email.service';\r\n\r\n// Directives\r\nimport { MaskDirective } from './directives/mask.directive';\r\nimport { Draggable } from './directives/draggable.directive';\r\nimport { AriaDirective } from './directives/aria.directive';\r\nimport { CdkDetailRowDirective } from './directives/cdk-detail-row.directive';\r\nimport { RegexDirective } from './directives/regex.directive';\r\nimport { NumbersOnlyDirective } from './directives/numbers-only.directive';\r\nimport { DateCharactersOnlyDirective } from './directives/dateCharactersOnly.directive';\r\nimport { DateValidator } from './tyl-datepicker/date.validator';\r\nimport { ScrollToRowDirective } from './angular-material/scroll-to-row.directive';\r\nimport { DynamicComponentDirective } from './directives/dynamic-component.directive';\r\nimport { PhoneFormatDirectiveValidator } from './validators/phone-format-validator.directive';\r\nimport { EmailFormatDirectiveValidator } from './validators/email-format-validator.directive';\r\nimport { EllipsisDirective } from './directives/ellipsis.directive';\r\nimport { DecimalFormatValidatorDirective } from './directives/decimal-format-validator.directive';\r\nimport { StudentInformationDirective } from './student-information/student-information.directive';\r\nimport { FalseyRequiredDirectiveValidator } from './validators/falsey-required-validator.directive';\r\nimport { DebounceDirective } from './directives/debounce.directive';\r\nimport { MinimumDirective } from './directives/minimum.directive';\r\nimport { MaximumDirective } from './directives/maximum.directive';\r\nimport { ExternalLinkDirective } from './directives/external-link.directive';\r\n\r\n// Pipes\r\nimport { SafeHtml } from './pipes/safe-html.pipe';\r\nimport {\r\n ChildPortalFilterPipe,\r\n PortalFilterPipe,\r\n TileFilterPipe,\r\n SchoolLayoutFilterPipe,\r\n SchoolLayoutAllFilterPipe\r\n} from './user-preferences/user-preferences-window/user-preferences-window.component';\r\nimport { MenuFilterByGroupPipe } from './pipes/menu-filter-by-group.pipe';\r\nimport { LookUpFilterPipe, LookUpDescription } from '../shared-modules/communication-log/communication-log.component';\r\nimport { YesNoPipe } from './pipes/yes-no.pipe';\r\nimport { FilterClass } from '../classroom360/classroom-summary/classFilter.pipe';\r\nimport { EllipsisPipe } from './pipes/ellipsis.pipe';\r\nimport { GetFieldDisplayNamePipe } from './custom-layouts/pipes/get-field-display-name.pipe';\r\nimport { GetDataTypePipe } from './custom-layouts/pipes/get-data-type.pipe';\r\nimport { GetSpecialFieldSectionIdPipe } from './custom-layouts/pipes/get-special-field-section-id.pipe';\r\nimport { SafeResourceUrlPipe } from './pipes/safe-resource-url.pipe';\r\nimport { CommaDelimitedPipe } from './pipes/comma-delimited.pipe';\r\nimport { MergeFieldPipe } from './e-forms/merge-field.pipe';\r\nimport { SanitizePipe } from './pipes/sanitize.pipe';\r\nimport { LastFirstNamePipe } from './pipes/lastFirstName.pipe';\r\nimport { DateIsTodayPipe } from './pipes/date-is-today.pipe';\r\nimport { TylTranslatePipe } from './pipes/tyl-translate.pipe';\r\nimport { TranslationsStatusComponent } from './translation/translations-status/translations-status.component';\r\nimport { MinimumEnforceDirective } from './directives/minimum-enforce.directive';\r\nimport { MaximumEnforceDirective } from './directives/maximum-enforce.directive';\r\nimport { PhoneNumberPipe } from './pipes/phone-number.pipe';\r\nimport { MaxPrecisionDirective } from './directives/max-precision.directive';\r\nimport { GetDesignerControlNamePipe } from './pipes/get-designer-control-name.pipe';\r\nimport { FormatEFormControlTypePipe } from './pipes/format-eform-control-type.pipe';\r\nimport { GetControlImagePipe } from './pipes/get-control-image.pipe';\r\nimport { EFormViewerModalComponent } from './e-forms/e-form-viewer/e-form-viewer-modal/e-form-viewer-modal.component';\r\nimport { OverrideCreditcodeComponent } from '../student360/graduation-plan/override-creditcode/override-creditcode.component';\r\nimport { WarningDialogComponent } from '../classroom360/data-query/warning-dialog/warning-dialog.component';\r\nimport { EFormPdfNameComponent } from '../admin360/e-forms/e-form-submissions/e-Form-PDF-Name/e-form-pdf-name.component';\r\nimport { IncidentTypePipe } from './pipes/incident-type.pipe';\r\nimport { GradebookPreferencesResetWarningsComponent } from './user-preferences/user-preferences-window/gradebook-preferences-reset-warnings/gradebook-preferences-reset-warnings.component';\r\nimport { EFormRrowColumnLocationComponent } from './e-forms/e-form-designer/e-form-row-column-location/e-form-row-column-location';\r\nimport { EFormSelectedStudentsComponent } from '../admin360/e-forms/e-form-instances/e-form-selected-students/e-form-selected-students.component';\r\nimport { CustomizationFrameworkService } from '../shared-modules/customization-framework/customization-framework.service';\r\nimport { CustomDataFieldComponent } from '../shared-modules/customization-framework/custom-data-field/custom-data-field.component';\r\nimport { CustomizationService } from '../admin360/customization/customization.service';\r\nimport { SharedGradebookService } from '../classroom360/gradebook/shared/shared-gradebook.service';\r\nimport { GetSurveyAnswerByFieldIDPipe } from './e-forms/survey-answers-popup/get-survey-answer-by-field-id.pipe';\r\nimport { SurveyAnswersPopupComponent } from './e-forms/survey-answers-popup/survey-answers-popup.component';\r\nimport { SurveyAnswerIsCriticalPipe } from './e-forms/survey-answers-popup/survey-answer-is-critical.pipe';\r\nimport { PreferencesButtonComponent } from './preferences-button/preferences-button.component';\r\nimport { SurveyNotCompletedPopupComponent } from './e-forms/survey-not-completed-popup/survey-not-completed-popup.component';\r\nimport { EFormSurveyAnswerSummaryComponent } from './e-forms/e-form-survey-answer-summary/e-form-survey-answer-summary.component';\r\nimport { CalculatePercentPipe } from './pipes/calculate-percent.pipe';\r\nimport { ProgramAndServiceFieldsComponent } from './program-and-service-fields/program-and-service-fields.component';\r\nimport { NotificationsTableComponent } from './notifications-table/notifications-table.component';\r\nimport { NotificationDetailsDialogComponent } from './notifications-table/notification-details-dialog/notification-details-dialog.component';\r\nimport { StudentsToAddDialogComponent } from './students-to-add-dialog/students-to-add-dialog.component';\r\nimport { StudentNotesSharedComponent } from './student-notes-shared/student-notes-shared.component';\r\nimport { StudentNotesComponent } from '../classroom360/student-notes/student-notes.component';\r\nimport { StudentNotesService } from '../classroom360/student-notes/student-notes.service';\r\nimport { StudentInfoDirective } from '../admin360/student-info/student-info.directive';\r\nimport { SortByPipe } from './pipes/sort-by.pipe';\r\nimport { BehaviorLetterViewerModalComponent } from '../counselor360/behavior/behavior-letters/behavior-letter-viewer-modal/behavior-letter-viewer-modal.component';\r\nimport { EFormSurveyAnswerDetailsComponent } from './e-forms/e-form-survey-answer-details/e-form-survey-answer-details.component';\r\nimport { EFormSurveyAnswersFilterComponent } from './e-forms/e-form-survey-answer-details/e-form-survey-answers-filter/e-form-survey-answers-filter.component';\r\nimport { HouseholdFamilyDocumentComponent } from '../admin360/registration/detailed-registration/household-registration/household-family-document/household-family-document.component';\r\nimport { AddFamilyDocumentDialogComponent } from '../admin360/registration/detailed-registration/household-registration/household-family-document/add-family-document-dialog/add-family-document-dialog.component';\r\nimport { SelectStudentPipe } from '../admin360/registration/detailed-registration/household-registration/household-family-document/select-student.pipe';\r\nimport { RegistrationEnrollmentService } from '../admin360/registration/registration-enrollment.service';\r\nimport { SingleStudentComponent } from '../management360/program-and-service/single-student/single-student.component';\r\nimport { AddEditProgramServiceSingleStudentComponent } from '../management360/program-and-service/single-student/add-edit-program-service-single-student/add-edit-program-service-single-student.component';\r\nimport { InvalidSelectionDialogComponent } from '../management360/program-and-service/single-student/invalid-selection-dialog/invalid-selection-dialog.component';\r\nimport { DeleteProgramServiceDialogComponent } from '../management360/program-and-service/delete-program-service-dialog/delete-program-service-dialog.component';\r\nimport { CopyButtonComponent } from './controls/copy-and-paste-buttons/copy-button/copy-button.component';\r\nimport { PasteButtonComponent } from './controls/copy-and-paste-buttons/paste-button/paste-button.component';\r\nimport { AttendanceCheckInOutLegendComponent } from './attendance-check-in-out-legend/attendance-check-in-out-legend.component';\r\nimport { MenuFilterPipe } from './menu/menu-filter.pipe';\r\nimport { SelfCheckInOutHistoryDialogComponent } from './self-check-in-out-history-dialog/self-check-in-out-history-dialog.component';\r\nimport { StaffHeaderComponent } from './staff-header/staff-header.component';\r\nimport { AssignedSchoolsComponent } from './staff-header/modals/assigned-schools/assigned-schools.component';\r\nimport { StaffAlertComponent } from './staff-header/modals/staff-alert/staff-alert.component';\r\nimport { StudentHealthAlertComponent } from './student-health-alert/student-health-alert.component';\r\nimport { ViewAttachmentsComponent } from './view-attachments/view-attachments.component';\r\nimport { ViewAbsentNoticeHistoryDialogComponent } from './view-absent-notice-history-dialog/view-absent-notice-history-dialog.component';\r\nimport { CheckInOutViewHistoryDialogComponent } from './check-in-out-view-history-dialog/check-in-out-view-history-dialog.component';\r\nimport { YearDescriptionPipe } from './pipes/year-description.pipe';\r\nimport { HighlightSearchPipe } from './pipes/highlight-search.pipe';\r\nimport { SelectRecipientsPipe } from '../shared-components/mass-email-view/select-recipients/select-recipients.pipe';\r\nimport { ReplacePipe } from './pipes/replace.pipe';\r\nimport { EFormHeaderComponent } from './e-forms/e-form-designer/e-form-header/e-form-header.component';\r\n\r\n// TODO break out some of these components into their own modules to avoid circular dependencies.\r\n@NgModule({\r\n declarations: [\r\n TylButtonComponent,\r\n TylHeaderButtonComponent,\r\n ChangeEmailComponent,\r\n ChangeEmailMessageComponent,\r\n ErrorPromptComponent,\r\n StudentHeaderComponent,\r\n StaffHeaderComponent,\r\n ExampleComponent,\r\n ModalWindowExampleComponent,\r\n ActionMenuAgGridComponent,\r\n ActionMenuComponent,\r\n SaveCancelButtonsComponent,\r\n MaskDirective,\r\n Draggable,\r\n CdkDetailRowDirective,\r\n MassEmailComponent,\r\n SpinnerComponent,\r\n ExpandCollapseButtonsComponent,\r\n TabsComponent,\r\n StudentSelectionComponent,\r\n GeneralSelectionComponent,\r\n FilterComponent,\r\n FilterContentsComponent,\r\n SafeHtml,\r\n AriaDirective,\r\n RegexDirective,\r\n EllipsisDirective,\r\n StudentNameComponent,\r\n StudentSearchComponent,\r\n CourseSearchComponent,\r\n SelectedCourseListComponent,\r\n AdvancedCourseSearchComponent,\r\n FavoritesComponent,\r\n AddLinkComponent,\r\n PageHeaderComponent,\r\n AddAttachmentDialogComponent,\r\n StudentAlertsComponent,\r\n AlertsDialogComponent,\r\n AddFileComponent,\r\n ProfileTableComponent,\r\n EditTopicDialogComponent,\r\n DeleteTopicDialogComponent,\r\n AddEditContentDialogComponent,\r\n AttachmentsMenuDialogComponent,\r\n AddProfileAttachmentDialogComponent,\r\n DeleteProfileAttachmentDialogComponent,\r\n AddTopicDialogComponent,\r\n ProfileViewerDialogComponent,\r\n ChildPortalFilterPipe,\r\n SchoolLayoutFilterPipe,\r\n SchoolLayoutAllFilterPipe,\r\n PortalFilterPipe,\r\n TileFilterPipe,\r\n EllipsisPipe,\r\n AdditionalTeacherWarningDialogComponent,\r\n CalculationPreferenceWarningDialogComponent,\r\n CustomSortWarningDialogComponent,\r\n NoGradingClassesDialogComponent,\r\n PrimaryTeacherWarningDialogComponent,\r\n SyncPreferencesDialogComponent,\r\n CourseDescriptionDialogComponent,\r\n DarkTabsComponent,\r\n NumbersOnlyDirective,\r\n DateCharactersOnlyDirective,\r\n TylDatepickerComponent,\r\n ErrorPromptMessagesComponent,\r\n TylMatMenuComponent,\r\n TylHeaderMatMenuComponent,\r\n TylFormFieldComponent,\r\n FavoritesComponent,\r\n FavoritesModalComponent,\r\n TylGeneralMatMenuComponent,\r\n TylCheckboxComponent,\r\n TylRadioGroupComponent,\r\n TylCheckboxListComponent,\r\n TylMultipleSelectListComponent,\r\n TylSelectCheckAllComponent,\r\n MenuFilterByGroupPipe,\r\n DateValidator,\r\n ScrollToRowDirective,\r\n VirtualizedTableComponent,\r\n FilterNotificationComponent,\r\n LookUpFilterPipe,\r\n LookUpDescription,\r\n SelectedSitesDialogComponent,\r\n GeneralConfirmationComponent,\r\n DynamicComponentDirective,\r\n AddEditReferralDialogComponent,\r\n AddNoteComponent,\r\n NoteTableComponent,\r\n CustomPageComponent,\r\n CustomFieldComponent,\r\n YesNoPipe,\r\n SelectCourseDialogComponent,\r\n NoClassSelectedWarningDialogComponent,\r\n ClassroomSummaryFilterComponent,\r\n FilterClass,\r\n AdvancedStudentSearchComponent,\r\n DataQueryFilterTableComponent,\r\n DataQueryFieldLabelComponent,\r\n DeleteRowDialogComponent,\r\n InsertFieldDialogComponent,\r\n FieldSearchComponent,\r\n DataQueryQueriesButtonComponent,\r\n ViewQueriesDialogComponent,\r\n AddEditQueryDialogComponent,\r\n ErrorsExistDialogComponent,\r\n DeleteQueryDialogComponent,\r\n DataQueryUnsavedChangesDialogComponent,\r\n ImportErrorDialogComponent,\r\n ErrorDialogComponent,\r\n NoRelationshipsWarningDialogComponent,\r\n PhoneFormatDirectiveValidator,\r\n EmailFormatDirectiveValidator,\r\n FalseyRequiredDirectiveValidator,\r\n OverlayHeaderComponent,\r\n FileTooLargeWarningDialogComponent,\r\n TemplatesFromClassicDialogComponent,\r\n ProjectScoresInfoComponent,\r\n AboutPanelComponent,\r\n MenuComponent,\r\n ChildMenuComponent,\r\n LayoutEditorComponent,\r\n GetFieldDisplayNamePipe,\r\n SavedLayoutsDialogComponent,\r\n CustomLayoutComponent,\r\n SaveLayoutDialogComponent,\r\n LayoutUnsavedChangesDialogComponent,\r\n CustomLayoutSectionComponent,\r\n CustomLayoutFieldComponent,\r\n CustomLayoutFieldLabelComponent,\r\n GetDataTypePipe,\r\n GetSpecialFieldSectionIdPipe,\r\n StudentInFocusComponent,\r\n AddEditStudentListDialogComponent,\r\n EnterCsvDialogComponent,\r\n PortalAccessDeniedComponent,\r\n StudentSearchWarningComponent,\r\n EFormViewerComponent,\r\n EFormViewerColumnComponent,\r\n EFormViewerRowComponent,\r\n EFormViewerControlComponent,\r\n AnnouncementTableComponent,\r\n AnnouncementMessageComponent,\r\n SelectedRolesDialogComponent,\r\n SafeResourceUrlPipe,\r\n ProgramsAndServicesComponent,\r\n StudentInformationComponent,\r\n StudentInformationDirective,\r\n StudentInfoPortalComponent,\r\n BroadcastDialogComponent,\r\n MassEditReferralDialogComponent,\r\n AdminCommentDialogComponent,\r\n StudentListModalComponent,\r\n CourseSectionSearchComponent,\r\n CommaDelimitedPipe,\r\n TylTranslatePipe,\r\n MergeFieldPipe,\r\n TylTranslatePipe,\r\n EFormNotesComponent,\r\n AddEditStudentRegCodeDialogComponent,\r\n StaffSearchComponent,\r\n DecimalFormatValidatorDirective,\r\n AddNonStudentDialogComponent,\r\n SanitizePipe,\r\n SaveWarningDialogComponent,\r\n ProgressBarComponent,\r\n ExternalLinkDirective,\r\n StudentImageDialogComponent,\r\n MultipleFamiliesComponent,\r\n GradebookAccessDeniedComponent,\r\n DateIsTodayPipe,\r\n TylCalWidgetComponent,\r\n EditTranslationsComponent,\r\n EditRichTextComponent,\r\n IepComponent,\r\n GPARankLegendComponent,\r\n LegendComponent,\r\n GradeOverrideLegendComponent,\r\n MinimumDirective,\r\n MaximumDirective,\r\n LastFirstNamePipe,\r\n DebounceDirective,\r\n TylRTFComponent,\r\n ReEnrollStudentsComponent,\r\n NoInternetConnectionModalComponent,\r\n TylKendoPdfExportComponent,\r\n AddEditCommunicationLogComponent,\r\n TranslationsStatusComponent,\r\n StaffListDialogComponent,\r\n AdvancedStaffSearchComponent,\r\n GroupConditionInfoDialogComponent,\r\n MinimumEnforceDirective,\r\n MaximumEnforceDirective,\r\n PhoneNumberPipe,\r\n MaxPrecisionDirective,\r\n EFormDesignerComponent,\r\n EFormColumnComponent,\r\n EFormRowComponent,\r\n EFormControlComponent,\r\n EFormSidePanelComponent,\r\n EFormNavigationPanelComponent,\r\n EFormPropertiesPanelComponent,\r\n EFormAvailableControlsComponent,\r\n MergeFieldDialogComponent,\r\n EFormChoicesDialogComponent,\r\n ValueFromAnotherFieldDialogComponent,\r\n EFormTemplateInUseWarningComponent,\r\n GetDesignerControlNamePipe,\r\n FormatEFormControlTypePipe,\r\n GetControlImagePipe,\r\n EFormViewerModalComponent,\r\n OverrideCreditcodeComponent,\r\n WarningDialogComponent,\r\n EFormPdfNameComponent,\r\n FloatingGridComponent,\r\n IncidentTypePipe,\r\n GradebookPreferencesResetWarningsComponent,\r\n EFormRrowColumnLocationComponent,\r\n EFormSelectedStudentsComponent,\r\n CustomDataFieldComponent,\r\n StudentDocumentAccessHistoryComponent,\r\n QuillTextOnlyComponent,\r\n QuillTextOnlyOneLineComponent,\r\n SelectorComponent,\r\n TylRaceEthnicityComponent,\r\n TylRaceEthnicityListComponent,\r\n GetSurveyAnswerByFieldIDPipe,\r\n SurveyAnswersPopupComponent,\r\n SurveyAnswerIsCriticalPipe,\r\n PreferencesButtonComponent,\r\n SurveyNotCompletedPopupComponent,\r\n EFormSurveyAnswerSummaryComponent,\r\n CalculatePercentPipe,\r\n ProgramAndServiceFieldsComponent,\r\n NotificationsTableComponent,\r\n NotificationDetailsDialogComponent,\r\n StudentsToAddDialogComponent,\r\n StudentNotesComponent,\r\n StudentNotesSharedComponent,\r\n StudentInfoDirective,\r\n SortByPipe,\r\n BehaviorLetterViewerModalComponent,\r\n EFormSurveyAnswerDetailsComponent,\r\n EFormSurveyAnswersFilterComponent,\r\n HouseholdFamilyDocumentComponent,\r\n AddFamilyDocumentDialogComponent,\r\n SelectStudentPipe,\r\n SingleStudentComponent,\r\n AddEditProgramServiceSingleStudentComponent,\r\n InvalidSelectionDialogComponent,\r\n DeleteProgramServiceDialogComponent,\r\n TylTimeFieldComponent,\r\n CopyButtonComponent,\r\n PasteButtonComponent,\r\n AttendanceCheckInOutLegendComponent,\r\n MenuFilterPipe,\r\n SelfCheckInOutHistoryDialogComponent,\r\n AssignedSchoolsComponent,\r\n StaffAlertComponent,\r\n StudentHealthAlertComponent,\r\n ViewAttachmentsComponent,\r\n ViewAbsentNoticeHistoryDialogComponent,\r\n CheckInOutViewHistoryDialogComponent,\r\n TylDragSelectionComponent,\r\n YearDescriptionPipe,\r\n HighlightSearchPipe,\r\n MassEmailViewComponent,\r\n SelectRecipientsComponent,\r\n ViewRecipientsModalComponent,\r\n UnselectedWarningComponent,\r\n NoEmailWarningComponent,\r\n MassEmailAttachmentComponent,\r\n SendEmailsWarningComponent,\r\n JobSentToQueueComponent,\r\n SelectRecipientsPipe,\r\n ByClassRowStudentComponent,\r\n SendTestEmailComponent,\r\n ByTeamRowStudentComponent,\r\n ByListRowStudentComponent,\r\n ReplacePipe,\r\n EFormViewerHeaderComponent,\r\n EFormHeaderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n TranslateModule,\r\n CdkTableModule,\r\n PlatformModule,\r\n QuillModule.forRoot(),\r\n MatTableModule,\r\n ColorPickerModule,\r\n TextMaskModule,\r\n OrderModule,\r\n PDFExportModule,\r\n DropDownsModule,\r\n MatChipsModule,\r\n ],\r\n exports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n TylButtonComponent,\r\n TylHeaderButtonComponent,\r\n ErrorPromptComponent,\r\n StudentHeaderComponent,\r\n StaffHeaderComponent,\r\n ActionMenuAgGridComponent,\r\n ActionMenuComponent,\r\n MaterialModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SaveCancelButtonsComponent,\r\n TranslateModule,\r\n MaskDirective,\r\n Draggable,\r\n CdkTableModule,\r\n CdkDetailRowDirective,\r\n PlatformModule,\r\n MassEmailComponent,\r\n SpinnerComponent,\r\n ExpandCollapseButtonsComponent,\r\n TabsComponent,\r\n StudentSelectionComponent,\r\n GeneralSelectionComponent,\r\n FilterComponent,\r\n FilterContentsComponent,\r\n SafeHtml,\r\n AriaDirective,\r\n RegexDirective,\r\n EllipsisDirective,\r\n QuillModule,\r\n StudentNameComponent,\r\n PageHeaderComponent,\r\n ColorPickerModule,\r\n StudentSearchComponent,\r\n CourseSearchComponent,\r\n AdvancedCourseSearchComponent,\r\n SelectedCourseListComponent,\r\n PageHeaderComponent,\r\n AddAttachmentDialogComponent,\r\n StudentAlertsComponent,\r\n AddFileComponent,\r\n ProfileTableComponent,\r\n EditTopicDialogComponent,\r\n DeleteTopicDialogComponent,\r\n AddEditContentDialogComponent,\r\n AttachmentsMenuDialogComponent,\r\n AddProfileAttachmentDialogComponent,\r\n DeleteProfileAttachmentDialogComponent,\r\n AddTopicDialogComponent,\r\n ProfileViewerDialogComponent,\r\n ChildPortalFilterPipe,\r\n SchoolLayoutFilterPipe,\r\n SchoolLayoutAllFilterPipe,\r\n PortalFilterPipe,\r\n TileFilterPipe,\r\n EllipsisPipe,\r\n PhoneNumberPipe,\r\n AdditionalTeacherWarningDialogComponent,\r\n CalculationPreferenceWarningDialogComponent,\r\n CustomSortWarningDialogComponent,\r\n NoGradingClassesDialogComponent,\r\n PrimaryTeacherWarningDialogComponent,\r\n SyncPreferencesDialogComponent,\r\n CourseDescriptionDialogComponent,\r\n DarkTabsComponent,\r\n NumbersOnlyDirective,\r\n DateCharactersOnlyDirective,\r\n TylDatepickerComponent,\r\n FavoritesComponent,\r\n TextMaskModule,\r\n TylMatMenuComponent,\r\n TylHeaderMatMenuComponent,\r\n TylFormFieldComponent,\r\n TylGeneralMatMenuComponent,\r\n TylCheckboxComponent,\r\n TylRadioGroupComponent,\r\n TylCheckboxListComponent,\r\n TylMultipleSelectListComponent,\r\n TylSelectCheckAllComponent,\r\n MenuFilterByGroupPipe,\r\n DateValidator,\r\n ScrollToRowDirective,\r\n VirtualizedTableComponent,\r\n FilterNotificationComponent,\r\n LookUpFilterPipe,\r\n LookUpDescription,\r\n CustomPageComponent,\r\n CustomFieldComponent,\r\n YesNoPipe,\r\n ClassroomSummaryFilterComponent,\r\n DataQueryFilterTableComponent,\r\n DataQueryFieldLabelComponent,\r\n FieldSearchComponent,\r\n DataQueryQueriesButtonComponent,\r\n OrderModule,\r\n PhoneFormatDirectiveValidator,\r\n EmailFormatDirectiveValidator,\r\n FalseyRequiredDirectiveValidator,\r\n OverlayHeaderComponent,\r\n MenuComponent,\r\n ChildMenuComponent,\r\n CustomLayoutComponent,\r\n EFormViewerComponent,\r\n SelectedSitesDialogComponent,\r\n AnnouncementTableComponent,\r\n SelectedRolesDialogComponent,\r\n SafeResourceUrlPipe,\r\n CommaDelimitedPipe,\r\n TylTranslatePipe,\r\n MergeFieldPipe,\r\n TylTranslatePipe,\r\n DecimalFormatValidatorDirective,\r\n ExternalLinkDirective,\r\n MultipleFamiliesComponent,\r\n TylCalWidgetComponent,\r\n DateIsTodayPipe,\r\n EditTranslationsComponent,\r\n EditRichTextComponent,\r\n MinimumDirective,\r\n MaximumDirective,\r\n LastFirstNamePipe,\r\n DebounceDirective,\r\n TylRTFComponent,\r\n PDFExportModule,\r\n DropDownsModule,\r\n TylKendoPdfExportComponent,\r\n TranslationsStatusComponent,\r\n AddEditCommunicationLogComponent,\r\n MinimumEnforceDirective,\r\n MaximumEnforceDirective,\r\n MaxPrecisionDirective,\r\n EFormDesignerComponent,\r\n MergeFieldDialogComponent,\r\n EFormChoicesDialogComponent,\r\n ValueFromAnotherFieldDialogComponent,\r\n EFormTemplateInUseWarningComponent,\r\n EFormViewerModalComponent,\r\n FloatingGridComponent,\r\n IncidentTypePipe,\r\n EFormSelectedStudentsComponent,\r\n CustomDataFieldComponent,\r\n StudentDocumentAccessHistoryComponent,\r\n QuillTextOnlyComponent,\r\n QuillTextOnlyOneLineComponent,\r\n SelectorComponent,\r\n TylRaceEthnicityComponent,\r\n SurveyAnswersPopupComponent,\r\n GetSurveyAnswerByFieldIDPipe,\r\n SurveyAnswerIsCriticalPipe,\r\n PreferencesButtonComponent,\r\n SurveyNotCompletedPopupComponent,\r\n EFormSurveyAnswerSummaryComponent,\r\n CalculatePercentPipe,\r\n ProgramAndServiceFieldsComponent,\r\n NotificationsTableComponent,\r\n StudentInfoDirective,\r\n SortByPipe,\r\n BehaviorLetterViewerModalComponent,\r\n MatChipsModule,\r\n HouseholdFamilyDocumentComponent,\r\n AddFamilyDocumentDialogComponent,\r\n SelectStudentPipe,\r\n SingleStudentComponent,\r\n AddEditProgramServiceSingleStudentComponent,\r\n InvalidSelectionDialogComponent,\r\n DeleteProgramServiceDialogComponent,\r\n TylTimeFieldComponent,\r\n CopyButtonComponent,\r\n PasteButtonComponent,\r\n AttendanceCheckInOutLegendComponent,\r\n MenuFilterPipe,\r\n SelfCheckInOutHistoryDialogComponent,\r\n AssignedSchoolsComponent,\r\n StaffAlertComponent,\r\n StudentHealthAlertComponent,\r\n ViewAttachmentsComponent,\r\n ViewAbsentNoticeHistoryDialogComponent,\r\n CheckInOutViewHistoryDialogComponent,\r\n TylDragSelectionComponent,\r\n YearDescriptionPipe,\r\n HighlightSearchPipe,\r\n ReplacePipe\r\n ],\r\n providers: [\r\n MergeFieldPipe,\r\n BehaviorService,\r\n GetDesignerControlNamePipe,\r\n TylTranslatePipe,\r\n GetSurveyAnswerByFieldIDPipe,\r\n SurveyAnswerIsCriticalPipe,\r\n CalculatePercentPipe,\r\n StudentNotesService,\r\n SelectStudentPipe,\r\n RegistrationEnrollmentService,\r\n ReplacePipe\r\n ]\r\n})\r\nexport class SharedComponentsModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: SharedComponentsModule,\r\n providers: [\r\n LookupService,\r\n StudentSearchService,\r\n CourseSearchService,\r\n FamilyRegistrationService,\r\n OnlineRegistrationService,\r\n ProfileService,\r\n BehaviorSharedService,\r\n SpinnerService,\r\n CustomLayoutsService,\r\n CustomPageService,\r\n DisciplineReferralService,\r\n FilterClass,\r\n DataQueryService,\r\n GradebookV10Service,\r\n SharedGradebookService,\r\n TranslationService,\r\n EFormService,\r\n StudentListsService,\r\n SendEmailService,\r\n ProgramsAndServicesService,\r\n AnnouncementService,\r\n StaffSearchService,\r\n CourseSectionSearchService,\r\n EFormDesignerService,\r\n CustomizationFrameworkService,\r\n CustomizationService,\r\n StaffCardsService,\r\n NotificationsService,\r\n CourseRequestMgmtService,\r\n ScheduleFolderService,\r\n MassEmailService\r\n ]\r\n };\r\n }\r\n}\r\n","export class MedicalCondition {\r\n Id: number;\r\n DateConditionStarted: Date;\r\n DateConditionEnded: Date;\r\n MedicalConditionCodeId: number;\r\n DateHomeTeachingStarte: Date;\r\n DateHomeTeachingEnded: Date;\r\n GenerateAlert: boolean;\r\n NonNurseViewable: boolean;\r\n Referral: boolean;\r\n ReferralReturnedToSchool: boolean;\r\n DateReferralReturned: Date;\r\n UnderDoctorsCare: boolean;\r\n Comment: string;\r\n MedicalConditionCode: string;\r\n MedicalConditionDescription: string;\r\n}\r\n\r\nexport class MedicalConditionCodes {\r\n Id: number;\r\n ShowAlert: boolean;\r\n ViewableByNonNurse: boolean;\r\n Code: string;\r\n CodeDescription: string;\r\n Sequence: number;\r\n}","import {HttpClient} from '@angular/common/http';\r\nimport {Injectable, TemplateRef} from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport {NavigationEnd, Router} from '@angular/router';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {take} from 'rxjs/operators';\r\nimport {\r\n MedicalCondition,\r\n MedicalConditionCodes\r\n} from '../admin360/student-info/health-information/medical-condition/medical-condition.model';\r\nimport {AttendanceCode} from '../classroom360/attendance/models/attendance-code.model';\r\nimport {Category} from '../classroom360/gradebook/shared/models/category.model';\r\nimport {DynamicPagesForStudentsColumn} from '../classroom360/scheduled-export/dynamic-pages-for-students-column.model';\r\nimport {StudentNoteCategory} from '../classroom360/student-notes/student-note-category.model';\r\nimport {CurriculumMarkTypes} from '../student360/grades/grades.model';\r\nimport {Doctors, HealthNotes, Immunizations, Insurance} from '../student360/health/health.model';\r\nimport {MealService} from '../student360/meal-service/meal-service.model';\r\nimport {OnlinePaymentConfiguration} from '../student360/online-payment/models/online-payment-config.model';\r\nimport {StaffInfo} from '../student360/online-payment/models/staff-info.model';\r\nimport {Service} from '../student360/programs-and-services/service.model';\r\nimport {CourseTerm} from '../student360/student-schedule/course-term.model';\r\nimport {AboutTyler} from './controls/about-panel/about-tyler.model';\r\nimport {Attachment} from './models/attachment.model';\r\nimport {TylTranslation} from './models/tyl-translation.model';\r\nimport {UserDefinedField} from './models/user-defined-field.model';\r\nimport {Portal} from './portal.model';\r\nimport {Enrollment} from './student/enrollment.model';\r\nimport {System} from './System';\r\nimport {CSTField} from '../shared-modules/customization-framework/models/custom-data-field.model';\r\nimport { SystemLog } from './models/system-log.model';\r\n\r\nclass SnackbarData {\r\n label: string;\r\n buttonLabel: string;\r\n config: any;\r\n\r\n constructor(label: string, buttonLabel: string, config: any) {\r\n this.label = label;\r\n this.buttonLabel = buttonLabel;\r\n this.config = config;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class SharedService {\r\n private _showAppHeader: boolean;\r\n public get showAppHeader(): boolean {\r\n if (this._showAppHeader == null) {\r\n return true;\r\n }\r\n return this._showAppHeader;\r\n }\r\n\r\n public set showAppHeader(value: boolean) {\r\n this._showAppHeader = value;\r\n this.observableShowAppHeader.next(value);\r\n }\r\n\r\n public observableShowAppHeader = new Subject();\r\n observableShowAppHeaderStream$ = this.observableShowAppHeader.asObservable();\r\n\r\n private _pageToPdfTrigger: boolean;\r\n public get pageToPdfTrigger(): boolean {\r\n if (this._pageToPdfTrigger == null) {\r\n return true;\r\n }\r\n return this._pageToPdfTrigger;\r\n }\r\n\r\n public set pageToPdfTrigger(value: boolean) {\r\n this._pageToPdfTrigger = value;\r\n this.observablePageToPdfTrigger.next(value);\r\n }\r\n\r\n public observablePageToPdfTrigger = new Subject();\r\n observablePageToPdfTrigger$ = this.observablePageToPdfTrigger.asObservable();\r\n\r\n private _progressBarPercent: number;\r\n public get progressBarPercent(): number {\r\n if (this._progressBarPercent == null) {\r\n return 0;\r\n }\r\n return this._progressBarPercent;\r\n }\r\n\r\n public set progressBarPercent(value: number) {\r\n this._progressBarPercent = value;\r\n this.observableProgressBarPercent.next(value);\r\n }\r\n\r\n public observableProgressBarPercent = new Subject();\r\n observableProgressBarPercentStream$ = this.observableProgressBarPercent.asObservable();\r\n\r\n private _currentMedicalConditionChecked: boolean;\r\n public get currentMedicalConditionChecked(): boolean {\r\n return this._currentMedicalConditionChecked;\r\n }\r\n\r\n public set currentMedicalConditionChecked(value: boolean) {\r\n this._currentMedicalConditionChecked = value;\r\n this.observableCurrentMedicalConditionChecked.next(value);\r\n }\r\n\r\n public observableCurrentMedicalConditionChecked = new Subject();\r\n observableobservableCurrentMedicalConditionCheckedStream$ = this.observableCurrentMedicalConditionChecked.asObservable();\r\n\r\n public observableClearStoredCustomFieldData = new Subject();\r\n observableClearStoredCustomFieldDataStream$ = this.observableClearStoredCustomFieldData.asObservable();\r\n\r\n abortWasClicked = false;\r\n currentUrl: string;\r\n previousUrl: string;\r\n translations: TylTranslation[] = [];\r\n copyRecordData = new MedicalCondition();\r\n copyPhysicianRecord = new Doctors();\r\n copyInsuranceRecord = new Insurance();\r\n copyClicked = false;\r\n editRegistrationStudentMode: boolean;\r\n\r\n // These are properties only set by the menu - because that's the only way they can be set.\r\n // In other words, it tracks *menu selections* and only *menu selections*\r\n private _currentPortal: Portal;\r\n private observableCurrentPortal = new Subject();\r\n observableCurrentPortalStream$ = this.observableCurrentPortal.asObservable();\r\n previousPortal: Portal;\r\n\r\n snackbarQueue: SnackbarData[] = [];\r\n snackbarShown = false;\r\n\r\n showFilter = false;\r\n filterTemplate: TemplateRef;\r\n\r\n // Copy and Paste\r\n copiedData: string;\r\n copyIdentifier: string;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private router: Router,\r\n private snackbar: MatSnackBar,\r\n private translateService: TranslateService\r\n ) {\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.previousUrl = this.currentUrl;\r\n this.currentUrl = event.url;\r\n this.closeFilter();\r\n }\r\n });\r\n }\r\n\r\n get currentPortal(): Portal {\r\n return this._currentPortal;\r\n }\r\n\r\n set currentPortal(value: Portal) {\r\n this.previousPortal = this._currentPortal;\r\n this._currentPortal = value;\r\n this.observableCurrentPortal.next(this._currentPortal);\r\n }\r\n\r\n public showSpinner = true;\r\n observableShowSpinner = new Subject();\r\n observableShowSpinnerStream$ = this.observableShowSpinner.asObservable();\r\n\r\n public isPageLoaded = true;\r\n observableIsPageLoaded = new Subject();\r\n observableIsPageLoadedStream$ = this.observableIsPageLoaded.asObservable();\r\n\r\n public currentComponent = null;\r\n\r\n toggleShowSpinner() {\r\n const newValue = !this.showSpinner;\r\n\r\n this.showSpinner = newValue;\r\n this.observableShowSpinner.next(newValue);\r\n }\r\n\r\n updateShowSpinner(newValue) {\r\n this.showSpinner = newValue;\r\n this.observableShowSpinner.next(newValue);\r\n }\r\n\r\n toggleIsPageLoaded() {\r\n const newValue = !this.isPageLoaded;\r\n\r\n this.isPageLoaded = newValue;\r\n this.observableIsPageLoaded.next(this.isPageLoaded);\r\n }\r\n\r\n updateIsPageLoaded(newValue) {\r\n this.isPageLoaded = newValue;\r\n this.observableIsPageLoaded.next(newValue);\r\n }\r\n\r\n getHTMLtoPDFBase64(html: HTMLElement): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetHtmlToPDFBase64', [html.outerHTML]);\r\n }\r\n\r\n getAttachment(id: number, name: string): Observable {\r\n return this.http.get(System.apiURL.Student + `GetAttachment?attachmentId=${id}&screenName=${name}`);\r\n }\r\n\r\n showSnackbars() {\r\n if (!this.snackbarShown && this.snackbarQueue.length > 0) {\r\n this.snackbarShown = true;\r\n const snackbarData = this.snackbarQueue.pop();\r\n const openSnackbar = this.snackbar.open(\r\n snackbarData.label,\r\n snackbarData.buttonLabel,\r\n snackbarData.config\r\n );\r\n openSnackbar.afterDismissed().pipe(take(1)).subscribe(() => {\r\n this.snackbarShown = false;\r\n this.showSnackbars();\r\n });\r\n }\r\n }\r\n\r\n queueSnackbar(label: string, buttonLabel: string, config: any) {\r\n this.snackbarQueue.unshift(new SnackbarData(label, buttonLabel, config));\r\n this.showSnackbars();\r\n }\r\n\r\n showGoodSnackbar(label = 'Data successfully saved', buttonLabel = 'DISMISS'): void {\r\n label = this.translateService.instant(label);\r\n buttonLabel = this.translateService.instant(buttonLabel);\r\n this.queueSnackbar(label, buttonLabel, {\r\n horizontalPosition: 'right',\r\n panelClass: 'snackbarSuccess',\r\n duration: 5000\r\n });\r\n }\r\n\r\n showBadSnackbar(label = 'Data failed to save', buttonLabel = 'DISMISS'): void {\r\n label = this.translateService.instant(label);\r\n buttonLabel = this.translateService.instant(buttonLabel);\r\n this.queueSnackbar(label, buttonLabel, {\r\n horizontalPosition: 'right',\r\n panelClass: 'snackbarFailure',\r\n duration: 10000\r\n });\r\n }\r\n\r\n showCustomSnackbar(label: string, type: string, buttonLabel = 'DISMISS'): void {\r\n label = this.translateService.instant(label);\r\n buttonLabel = this.translateService.instant(buttonLabel);\r\n let style = 'snackbarSuccess';\r\n switch (type) {\r\n case 'success':\r\n style = 'snackbarSuccess';\r\n break;\r\n case 'failure':\r\n style = 'snackbarFailure';\r\n break;\r\n case 'notification':\r\n style = 'snackbarNotification';\r\n break;\r\n }\r\n this.queueSnackbar(label, buttonLabel, {\r\n horizontalPosition: 'right',\r\n panelClass: style,\r\n duration: 10000\r\n });\r\n }\r\n\r\n openFilter(filterTemplate: TemplateRef) {\r\n this.filterTemplate = filterTemplate;\r\n this.showFilter = true;\r\n }\r\n\r\n closeFilter() {\r\n this.showFilter = false;\r\n }\r\n\r\n toggleFilter(filterTemplate: TemplateRef) {\r\n if (this.showFilter) {\r\n this.closeFilter();\r\n } else {\r\n this.openFilter(filterTemplate);\r\n }\r\n }\r\n\r\n getErrorDetails(id: number, apiCall: string): Observable {\r\n const queryString = '?userId=' + id;\r\n return this.http\r\n .post(\r\n System.apiURL.Student + 'GetErrorDetails' + queryString,\r\n apiCall,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n }\r\n\r\n generateError(): Observable {\r\n return this.http.get(System.apiURL.Shared + 'GenerateError');\r\n }\r\n\r\n saveWebPageAudit(studentId: number, schoolId: number, yearId: number, pageName: string) {\r\n const queryString = '?studentId=' + studentId +\r\n '&schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&pageName=' + pageName;\r\n return this.http.get(System.apiURL.Student + 'SaveWebPageAudit' + queryString);\r\n }\r\n\r\n getAboutTylerSIS() {\r\n return this.http.get(System.apiURL.Student + 'GetAboutTylerSIS');\r\n }\r\n\r\n createPulseKey(page: string, filter: string, embed: boolean) {\r\n return this.http.get(System.apiURL.Student + 'CreatePulseKey?page=' + page + '&filter=' + filter + '&embed=' + embed);\r\n }\r\n\r\n getReEnrollStudentsList(yearId: number, familyId: number, studentId: number): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetReEnrollStudentsList?yearId=' + yearId + '&familyId=' + familyId + '&studentId=' + studentId);\r\n }\r\n\r\n markStudentsAsNew(yearId: number, familyId: number, studentIds: string, gradeLevelIds: string) {\r\n const queryString = '?yearId=' + yearId +\r\n '&familyId=' + familyId +\r\n '&studentIds=' + studentIds +\r\n '&gradeLevelIds=' + gradeLevelIds;\r\n return this.http.get(System.apiURL.Student + 'MarkReEnrolStudentsAsNew' + queryString);\r\n }\r\n\r\n getUserDefinedField(fieldName: string, isSysGen: boolean) {\r\n const queryString = '?fieldName=' + fieldName +\r\n '&isSysGen=' + isSysGen;\r\n return this.http.get(System.apiURL.Student + 'GetUserDefinedField' + queryString);\r\n }\r\n\r\n getCurriculumMarkTypesReadForSubject(siteSectionId: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + `GetCurriculumMarkTypesReadForSubject?courseId=${siteSectionId}`);\r\n }\r\n\r\n getCategories(isTeacherUser: boolean, courseId: number, courseIds: string): Observable {\r\n return this.http.get(System.apiURL.Classroom + `GetGradebookAssignmentType?isTeacherUser=${isTeacherUser}&courseId=${courseId}&courseList=${courseIds}`);\r\n }\r\n\r\n getMealService(studentId: number, yearId: number, siteYearId: number) {\r\n return this.http.get(System.apiURL.Classroom + `GetMealServices?studentId=${studentId}&yearId=${yearId}&siteYearId=${siteYearId}`);\r\n }\r\n\r\n getStaffInfoByUserId(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetStaffInfoByUserId');\r\n }\r\n\r\n getStudentNoteCategories(schoolId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Classroom + `GetStudentNoteCategories?schoolId=${schoolId}&yearId=${yearId}`);\r\n }\r\n\r\n getOnlinePaymentConfiguration(): Observable {\r\n return this.http.get(System.apiURL.Classroom + 'GetOnlinePaymentConfiguration');\r\n }\r\n\r\n getAttendanceCodeLookup(isTeacher: boolean, schoolId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + `GetAttendanceCodeLookup?isTeacher=${isTeacher}&schoolId=${schoolId}&yearId=${yearId}`);\r\n }\r\n\r\n getDynamicPagesReadForStudentLookup(userIsTeacher: boolean): Observable {\r\n return this.http.get(System.apiURL.Classroom + `GetDynamicPagesReadForStudentLookup?userIsTeacher=${userIsTeacher}`);\r\n }\r\n\r\n getGradebookTermsBySiteSectionId(siteSectionId: number, tgsId: number, showTermOnly: boolean, yearId: number, schoolId: number, userId: number): Observable {\r\n const apiCallString = System.apiURL.Classroom + 'GetGradebookTermsBySiteSectionId?siteSectionId=' + siteSectionId\r\n + '&tgsId=' + tgsId\r\n + '&showTermOnly=' + showTermOnly\r\n + '&yearId=' + yearId\r\n + '&schoolId=' + schoolId\r\n + '&userId=' + userId;\r\n return this.http.get(apiCallString);\r\n }\r\n\r\n public getAllServices(): Observable {\r\n return this.http.get(System.apiURL.Student + `GetAllServices`);\r\n }\r\n\r\n getMedicalConditionByStudentId(studentId: number, siteId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Shared + `GetMedicalConditionReadByStudentId?studentId=${studentId}&siteId=${siteId}&yearId=${yearId}`);\r\n }\r\n\r\n deleteMedicalConditionById(medicalConditionId: number): Observable {\r\n return this.http.get(System.apiURL.Shared + `DeleteMedicalConditionById?medicalConditionId=${medicalConditionId}`);\r\n }\r\n\r\n public saveMedicalCondition(studentId: number, siterYearId: number, data: MedicalCondition): Observable {\r\n return this.http.post(System.apiURL.Shared + `SaveMedicalCondition?studentId=${studentId}&siterYearId=${siterYearId}`, data);\r\n }\r\n\r\n getMedicalConditionCodes(): Observable {\r\n return this.http.get(System.apiURL.Shared + `GetMedicalConditionCodes`);\r\n }\r\n\r\n // Delete Immunizations\r\n deleteImmunizationById(immunizationId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?immunizationId=' + immunizationId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Shared + 'DeleteImmunizationById' + queryString);\r\n }\r\n\r\n deleteDoctorById(physiciansId: number): Observable {\r\n return this.http.get(System.apiURL.Shared + `DeleteDoctorById?physiciansId=${physiciansId}`);\r\n }\r\n\r\n saveMedicalPhysicianInformation(studentId: number, data: Doctors): Observable {\r\n return this.http.post(System.apiURL.Shared + `SaveMedicalPhysicianInformation?studentId=${studentId}`, data);\r\n }\r\n\r\n // Save Insurance\r\n saveInsurance(studentId: number, insuranceData: Insurance): Observable {\r\n const queryString = '?studentId=' + studentId;\r\n return this.http.post(System.apiURL.Student + 'SaveInsurance' + queryString, insuranceData);\r\n }\r\n\r\n // Delete Insurance\r\n deleteInsurance(physiciansId: number, insuranceId: number): Observable {\r\n const queryString = '?physiciansId=' + physiciansId + '&insuranceId=' + insuranceId;\r\n return this.http.get(System.apiURL.Student + 'DeleteInsurance' + queryString);\r\n }\r\n\r\n // Get Health Notes\r\n getHealthNotes(studentId: number): Observable {\r\n const queryString = '?studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetHealthNotes' + queryString);\r\n }\r\n\r\n // Save Health Notes\r\n saveHealthNotes(noteType: string, healthNotes: HealthNotes): Observable {\r\n const queryString = '?noteType=' + noteType;\r\n return this.http.post(System.apiURL.Student + 'SaveHealthNotes' + queryString, healthNotes);\r\n }\r\n\r\n // Save Immunization\r\n saveImmunization(studentId: number, yearId: number, schoolId: number, immunizationData: Immunizations): Observable {\r\n const queryString = '?studentId=' + studentId\r\n + '&yearId=' + yearId\r\n + '&schoolId=' + schoolId;\r\n return this.http.post(System.apiURL.Student + 'SaveImmunization' + queryString, immunizationData);\r\n }\r\n\r\n getCalendarUseAttendanceTypes(schoolId: number, yearId: number, studentId: number): Observable {\r\n const queryString = '?schoolId=' + schoolId\r\n + '&yearId=' + yearId\r\n + '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Shared + 'GetCalendarUseAttendanceTypes' + queryString);\r\n }\r\n\r\n getCustomDataFieldsByObjectID(objectID: number): Observable {\r\n const queryString = '?objectID=' + objectID;\r\n return this.http.get(System.apiURL.Admin + 'GetCustomDataFieldsByObjectID' + queryString);\r\n }\r\n\r\n createImpersonationLog(impersonateUserId: number, userType = 2) {\r\n return this.http.get(System.apiURL.Admin + 'CreateImpersonationLog?impersonateUserId=' + impersonateUserId + '&userTypeId=' + userType);\r\n }\r\n\r\n createSystemLog(log: SystemLog): Observable {\r\n return this.http.post(System.apiURL.Shared + 'CreateSystemLog', log);\r\n }\r\n\r\n // Copying and Pasting Fields\r\n simpleCopy(fields: string[], object: any, identifier: string) {\r\n // PRE: a set of fields for the objects that will be made into JSON. The identifier determines what the name of the object is.\r\n // POST: creates a JSON string for the set of objects with the specified fields\r\n // NOTE: will not copy objects - you have to use the complex copy for that\r\n const jsonItem: {[key: string]: any} = {};\r\n fields.forEach(field => {\r\n if (typeof object[field] != 'object' || object[field] instanceof Date) {\r\n jsonItem[field] = object[field];\r\n }\r\n });\r\n this.copiedData = JSON.stringify(jsonItem);\r\n this.copyIdentifier = identifier;\r\n\r\n // Sending snackbar\r\n this.showGoodSnackbar('Fields copied!');\r\n }\r\n\r\n complexCopy(fields: any, object: any, identifier: string) {\r\n // PRE: a set of objects to make JSON out of. The fields are specified as key-value pairs of booleans or key-value pairs.\r\n // for example: fields = {\"A\": true, \"B\": {\"SubA\": true, \"SubB\": false\"}} and objects = [{\"A\": 123, \"B\": {\"SubA\": 456, \"SubB\": 789}}]\r\n // In this case, \"B\" is the name of a child object with fields \"SubA\" and \"SubB\"\r\n // Any field that is set to \"true\" will be put in the JSON\r\n // However, a child *object* must have the fields for that key also be an *object*\r\n // In the previous example, \"B\" will *not* print if the object = {\"A\": 123, \"B\": 456}\r\n // The identifier determines what the name of the object is.\r\n // POST: makes the JSON out of the specified fields and objects\r\n\r\n // Helper Function\r\n const createJSONObject = (createFields: any, createObject: any) => {\r\n const jsonItem: {[key: string]: any} = {};\r\n const fieldNames = Object.keys(createFields);\r\n fieldNames.forEach(fieldName => {\r\n if (createFields[fieldName]) {\r\n\r\n // If it is an object, create a JSON object for it and add it to the item\r\n if (\r\n typeof createFields[fieldName] == 'object'\r\n && typeof createObject[fieldName] == 'object'\r\n ) {\r\n jsonItem[fieldName] = createJSONObject(createFields[fieldName], createObject[fieldName]);\r\n }\r\n\r\n // If it is a boolean, add it's raw value\r\n else if (\r\n typeof createFields[fieldName] == 'boolean'\r\n && (\r\n typeof createObject[fieldName] != 'object'\r\n || createObject[fieldName] instanceof Date\r\n )\r\n ) {\r\n jsonItem[fieldName] = createObject[fieldName];\r\n }\r\n }\r\n });\r\n return jsonItem;\r\n };\r\n\r\n // Constructing the JSON\r\n this.copiedData = JSON.stringify(createJSONObject(fields, object));\r\n this.copyIdentifier = identifier;\r\n\r\n // Sending snackbar\r\n this.showGoodSnackbar('Fields copied!');\r\n }\r\n\r\n paste(objectToCopyTo?: any) {\r\n const parsedObject = JSON.parse(this.copiedData);\r\n if (objectToCopyTo) {\r\n Object.assign(objectToCopyTo, parsedObject);\r\n }\r\n return parsedObject;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class LoaderService {\r\n public isLoading = new BehaviorSubject(false);\r\n\r\n constructor() {}\r\n}\r\n\r\n\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class SpinnerService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n // Hide Spinner\r\n private _HideSpinner: boolean = true;\r\n public get hideSpinner(): boolean {\r\n return this._HideSpinner;\r\n }\r\n\r\n public set hideSpinner(value: boolean) {\r\n this._HideSpinner = value;\r\n this.observableHideSpinner.next(value);\r\n } \r\n\r\n public observableHideSpinner = new Subject();\r\n observableHideSpinnerStream$ = this.observableHideSpinner.asObservable();\r\n\r\n // Show Spinner\r\n private _ShowSpinner: boolean;\r\n public get showSpinner(): boolean {\r\n return this._ShowSpinner;\r\n }\r\n\r\n public set showSpinner(value: boolean) {\r\n this._ShowSpinner = value;\r\n this.observableShowSpinner.next(value);\r\n }\r\n\r\n public observableShowSpinner = new Subject();\r\n observableShowSpinnerStream$ = this.observableShowSpinner.asObservable();\r\n}\r\n","\r\n
\r\n\r\n \r\n Advanced Staff Search\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n {{recentFilter.QueryName}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n Conditions (Rows with the same group letter are joined with AND. Rows with different group letters are joined with OR.)\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n SQL Translation\r\n
\r\n
\r\n {{filterTranslation}}\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport {DataQueryService} from '../../../classroom360/data-query/data-query.service';\r\nimport {DataQuery} from '../../../classroom360/data-query/data-query.model';\r\nimport { Subscription} from 'rxjs';\r\nimport {DataQueryField} from '../../../classroom360/data-query/data-query-field.model';\r\nimport {UserPreferencesService} from '../../user-preferences/user-preferences.service';\r\nimport {GeneralPreferences} from '../../user-preferences/general-preferences.model';\r\nimport {DataQueryFieldFilter} from '../../../classroom360/data-query/data-query-field-filter.model';\r\nimport {LoginService} from '../../../shared-modules/login/login.service';\r\nimport {LookupService} from '../../lookup/lookup.service';\r\nimport {YearService} from '../../year/year.service';\r\nimport {AdvancedFilterComponent} from '../../advanced-filter/advanced-filter.component';\r\n\r\n@Component({\r\n selector: 'app-advanced-staff-search',\r\n templateUrl: './advanced-staff-search.component.html',\r\n styleUrls: ['./advanced-staff-search.component.css']\r\n})\r\nexport class AdvancedStaffSearchComponent extends AdvancedFilterComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n\r\n // Data Query Properties\r\n\r\n // Other Properties\r\n subscriptions: Subscription[] = [];\r\n generalPreferences: GeneralPreferences;\r\n allFilters: DataQueryFieldFilter[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n dialogBox: MatDialogRef,\r\n dataQueryService: DataQueryService,\r\n loginService: LoginService,\r\n lookupService: LookupService,\r\n yearService: YearService,\r\n userPreferencesService: UserPreferencesService,\r\n dialog: MatDialog\r\n ) {\r\n super(dataQueryService, userPreferencesService, loginService, dialogBox, lookupService, yearService, dialog);\r\n this.fieldsWithoutFilters = [\r\n 'Staff_ID'\r\n ];\r\n }\r\n\r\n // Overridden Methods\r\n initialize() {\r\n // POST: sets this up as staff search\r\n if (!this.dataQueryService.isStaffSearch) {\r\n this.dataQueryService.currentQuery = new DataQuery();\r\n this.dataQueryService.isStaffSearch = true;\r\n }\r\n }\r\n\r\n setValueSwitch(field: DataQueryField, filter: DataQueryFieldFilter, updateUsing: boolean) {\r\n // POST: sets the filter's values (operator, value, and group)\r\n\r\n // Updating based on grid filters (these do not take priority, so they come first)\r\n switch (field.Alias) {\r\n // TODO\r\n default:\r\n break;\r\n }\r\n\r\n // Updating based on search criteria (these take priority, so they come last)\r\n switch (field.FieldName) {\r\n // TODO\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n setFilterPropertiesSwitch(field: DataQueryField, filter: DataQueryFieldFilter) {\r\n // POST: sets the filter's properties for staff search\r\n filter.Operator = '=';\r\n filter.Value = '';\r\n filter.Value2 = '';\r\n filter.Group = 'A';\r\n filter.DisplayMenu = false;\r\n filter.UseCurrentDate1 = false;\r\n filter.UseCurrentDate2 = false;\r\n filter.UseFilterForStudentSearch = false;\r\n filter.UseFilterForCourseSearch = false;\r\n filter.UseFilterForStaffSearch = false;\r\n filter.IsStudentFilter = false;\r\n filter.StudentFilterId = 0;\r\n filter.ApplyToAll = false;\r\n\r\n // Setting specific values for certain fields\r\n if (field.FieldName == 'PrimaryJob') {\r\n filter.Value = 'Y';\r\n filter.disableEdit = true;\r\n filter.UseFilterForStaffSearch = true;\r\n }\r\n }\r\n}\r\n","\r\n
{{studentTeam == true ? 'Associated Staff' : 'Selected Staff'}}
\r\n\r\n\r\n\r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{isV10 ? 'Employee Number' : 'Employee #' }}\r\n \r\n \r\n \r\n \r\n {{staff.EmployeeNumber}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n First Name\r\n \r\n \r\n \r\n {{staff.FirstName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Middle Name\r\n \r\n \r\n \r\n {{staff.MiddleName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Last Name\r\n \r\n \r\n \r\n {{staff.LastName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Name\r\n \r\n \r\n {{staff.StaffName}} \r\n \r\n\r\n \r\n \r\n \r\n {{isV10 ? 'Primary Job' : 'Role'}}\r\n \r\n \r\n \r\n {{staff.StaffRole}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{isV10 ? 'Primary School' : 'School'}}\r\n \r\n \r\n \r\n {{staff.SchoolName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n {{staff.StaffStatus}} \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { Staff } from '../staff.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../angular-material/extended.class';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-staff-list-dialog',\r\n templateUrl: './staff-list-dialog.component.html',\r\n styleUrls: ['./staff-list-dialog.component.css']\r\n})\r\nexport class StaffListDialogComponent implements OnInit {\r\n\r\n // Injected Properties\r\n staff: Staff[] = [];\r\n isV10: boolean;\r\n studentTeam = false;\r\n\r\n // Local Properties\r\n tableData = new TylerMatTableDataSource();\r\n private _paginator: MatPaginator;\r\n @ViewChild(MatPaginator, { static: true }) set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.tableData.paginator = value;\r\n }\r\n columns = [\r\n 'employee-number',\r\n 'first-name',\r\n 'middle-name',\r\n 'last-name',\r\n 'primary-job',\r\n 'primary-school'\r\n ];\r\n\r\n // columns = [\r\n // 'employee-number', 'first-name', 'middle-name', 'last-name', 'primary-job'\r\n // ];\r\n\r\n // Class Functions\r\n constructor(\r\n private loginService: LoginService,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef\r\n ) { }\r\n\r\n @ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n this.tableData.sort = value;\r\n }\r\n\r\n get sort(): MatSort {\r\n return this.tableData.sort;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n if (!this.isV10) {\r\n this.columns = [];\r\n // this.columns = ['employee-number', 'staff-name', 'primary-school', 'primary-job', 'staff-status'];\r\n // this.columns = ['first-name'];\r\n\r\n this.columns = ['staff-name', 'employee-number'];\r\n }\r\n\r\n if (this.data && this.data.staff) {\r\n this.staff = this.data.staff;\r\n }\r\n\r\n if (this.data && this.data.studentTeam) {\r\n this.studentTeam = this.data.studentTeam;\r\n }\r\n\r\n if (this.isV10) {\r\n this.staff.sort((a, b) => {\r\n if (a.LastName && b.LastName) {\r\n const lastNameCompare = a.LastName.localeCompare(b.LastName);\r\n if (lastNameCompare != 0) {\r\n return lastNameCompare;\r\n }\r\n }\r\n if (a.FirstName && b.FirstName) {\r\n const firstNameCompare = a.FirstName.localeCompare(b.FirstName);\r\n if (firstNameCompare != 0) {\r\n return firstNameCompare;\r\n }\r\n }\r\n if (a.MiddleName && b.MiddleName) {\r\n return a.MiddleName.localeCompare(b.MiddleName);\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n this.staff.sort((a, b) => {\r\n const StaffName = a.StaffName ? a.StaffName.localeCompare(b.StaffName):-1;\r\n if (StaffName != 0) {\r\n return StaffName;\r\n }\r\n });\r\n }\r\n this.tableData.data = this.staff;\r\n }\r\n\r\n close() {\r\n // PRE: the close button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n}\r\n","\r\n

\r\n Staff Search and Select\r\n Staff Search\r\n

\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n 1\" [value]='-1'>(All)\r\n {{school.SchoolName}}\r\n \r\n \r\n\r\n \r\n \r\n {{pg.Description}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n None\r\n \r\n \r\n {{recentFilter.QueryName}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n {{Role.RoleName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n All\r\n \r\n \r\n Active\r\n \r\n \r\n Inactive\r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n No data matches selected search criteria.\r\n
\r\n \r\n
0\">\r\n \r\n \r\n
\r\n \r\n {{getColumnHeader(column)}}\r\n \r\n
\r\n \r\n
\r\n
\r\n 0\">\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{isV10 ? 'Employee Number' : 'Employee #' | translate}}\r\n \r\n \r\n \r\n {{element.EmployeeNumber}} \r\n \r\n\r\n \r\n \r\n First Name\r\n \r\n \r\n \r\n {{element.FirstName}} \r\n \r\n\r\n \r\n \r\n Middle Name\r\n \r\n \r\n \r\n {{element.MiddleName}} \r\n \r\n\r\n \r\n \r\n Last Name\r\n \r\n \r\n {{element.LastName}} \r\n \r\n\r\n \r\n \r\n Name\r\n \r\n \r\n \r\n {{element.StaffName}} \r\n \r\n\r\n \r\n \r\n Username\r\n \r\n \r\n {{element.UserName}} \r\n \r\n\r\n \r\n \r\n {{isV10 ? 'Primary School' : 'School' | translate}}\r\n \r\n \r\n \r\n {{element.SchoolName}} \r\n \r\n\r\n \r\n \r\n Permissions Group\r\n \r\n \r\n \r\n {{element.PermissionGroup}} \r\n \r\n\r\n \r\n \r\n Inactive Date\r\n \r\n \r\n \r\n \r\n {{element.InActiveDate | date:'MM/dd/yy'}} \r\n \r\n\r\n \r\n \r\n {{isV10 ? 'Primary Job' : 'Role' | translate}}\r\n \r\n \r\n \r\n {{element.StaffRole}} \r\n \r\n\r\n \r\n \r\n Status\r\n \r\n \r\n \r\n {{element.StaffStatus}} \r\n \r\n\r\n \r\n \r\n Use In Scheduling\r\n \r\n \r\n \r\n {{element.UseInScheduling ? 'Y' : ''}} \r\n \r\n\r\n \r\n \r\n State Id\r\n \r\n \r\n {{element.StateId}} \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n 0\">\r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { Component, OnInit, OnDestroy, ViewChild, Inject } from '@angular/core';\r\nimport { Staff, StaffSearchCriteria } from './staff.model';\r\nimport { TylerMatTableDataSource } from '../angular-material/extended.class';\r\nimport { StaffSearchService } from './staff-search.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { YearService } from '../year/year.service';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { School } from '../year/school.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { StaffListDialogComponent } from './staff-list-dialog/staff-list-dialog.component';\r\nimport { AdvancedStaffSearchComponent } from './advanced-staff-search/advanced-staff-search.component';\r\nimport { DataQueryService } from '../../classroom360/data-query/data-query.service';\r\nimport { DataQuery } from '../../classroom360/data-query/data-query.model';\r\nimport { DataQueryInformation } from '../../classroom360/data-query/data-query-information';\r\nimport { take } from 'rxjs/operators';\r\nimport { DataQueryResult } from '../../classroom360/data-query/data-query-result.model';\r\nimport { PermissionsGroupsService } from '../../management360/staff/permissions-groups/permissions-groups.service';\r\nimport { PermissionGroupDescription } from '../../management360/staff/permissions-groups/permissions-groups.model';\r\nimport { StaffService } from '../../management360/staff/staff.service';\r\nimport { Router } from '@angular/router';\r\nimport { cloneDeep, sortBy } from 'lodash';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-staff-search',\r\n templateUrl: './staff-search.component.html',\r\n styleUrls: ['./staff-search.component.css']\r\n})\r\nexport class StaffSearchComponent implements OnInit, OnDestroy {\r\n\r\n // Data Query Properties\r\n private _currentQuery = new DataQuery();\r\n private _information = new DataQueryInformation();\r\n\r\n // Properties\r\n searchAndSelect = true;\r\n staff: Staff[] = [];\r\n dataSource: TylerMatTableDataSource = new TylerMatTableDataSource(this.staff);\r\n defaultColumns: string[] = [];\r\n columnsToDisplay: string[] = [];\r\n subscriptions: Subscription[] = [];\r\n allSelected: boolean;\r\n employeeNumber = '';\r\n firstName = '';\r\n lastName = '';\r\n selectedSchoolId = -99;\r\n selectedRoleId = 0;\r\n activeToday = false;\r\n schools: School[] = [];\r\n selectedStaffIds: number[] = [];\r\n selectedStaff: Staff[] = [];\r\n // @ViewChild(MatPaginator) paginator: MatPaginator;\r\n private _paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.dataSource.paginator = value;\r\n }\r\n _sort: MatSort;\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.dataSource.sort = value;\r\n }\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n isV10: boolean;\r\n todayDate: string;\r\n permissionGroups: PermissionGroupDescription[] = [];\r\n redirectUrl = '';\r\n userName = '';\r\n\r\n selectedPermissionGroupId = 0;\r\n Roles = [{ RoleName: '', Id: 0 },\r\n { RoleName: 'Teacher', Id: 1 },\r\n { RoleName: 'Substitute Teacher', Id: 2 },\r\n { RoleName: 'Advisor', Id: 3 },\r\n { RoleName: 'Counselor', Id: 4 },\r\n { RoleName: 'Nurse', Id: 5 },\r\n { RoleName: 'Disciplinarian', Id: 6 },\r\n { RoleName: 'Site Administrator', Id: 7 },\r\n { RoleName: 'District Administrator', Id: 8 },\r\n { RoleName: 'Principal', Id: 9 },\r\n { RoleName: 'Other Staff', Id: 10 },\r\n { RoleName: 'Special Ed Teacher', Id: 11 },\r\n { RoleName: 'Special Ed Service Provider', Id: 12 },\r\n { RoleName: 'Special Ed Case Manager', Id: 13 },\r\n { RoleName: 'Special Ed Supervisor', Id: 14 }\r\n ];\r\n teacher = '%';\r\n substitute = '%';\r\n advisor = '%';\r\n counselor = '%';\r\n nurse = '%';\r\n disciplinarian = '%';\r\n administrator = '%';\r\n superintendent = '%';\r\n principal = '%';\r\n other = '%';\r\n specialEdTeacher = '%';\r\n specialEdServiceProvider = '%';\r\n specialEdCaseManager = '%';\r\n staffStatus = 'All';\r\n showAllSchool = false;\r\n showAllPermissionGroups = false;\r\n\r\n isBusy = false;\r\n // Class Functions\r\n constructor(\r\n private loginService: LoginService,\r\n private staffSearchService: StaffSearchService,\r\n private yearService: YearService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private dataQueryService: DataQueryService,\r\n private permissionGroupService: PermissionsGroupsService,\r\n private staffService: StaffService,\r\n private router: Router\r\n ) { }\r\n\r\n get currentQuery(): DataQuery {\r\n return this._currentQuery;\r\n }\r\n\r\n set currentQuery(value: DataQuery) {\r\n this.dataQueryService.currentQuery = value;\r\n if (!value) {\r\n this.staffSearchService.unsavedQueryApplied = false;\r\n }\r\n }\r\n\r\n get information(): DataQueryInformation {\r\n return this._information;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.todayDate = new Date().toLocaleDateString();\r\n this.getPermissionGroup();\r\n\r\n // Setting the initial data\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n this.staffStatus = 'All';\r\n if (this.data.iseForm || this.isV10 == false) {\r\n this.staffStatus = 'Active';\r\n }\r\n\r\n\r\n if (this.isV10 == false) {\r\n this.getSearchCriteria();\r\n this.staffStatus = this.staffSearchService.staffSearchCriteria.Status != undefined ? this.staffSearchService.staffSearchCriteria.Status : 'Active';\r\n }\r\n if (!this.isV10 && this.data.pageName != null) {\r\n if (this.data.pageName == 'behaviorReferral') {\r\n this.Roles = [];\r\n this.Roles = [\r\n { RoleName: 'Disciplinarian', Id: 6 }\r\n ];\r\n this.selectedRoleId = 6;\r\n }\r\n }\r\n if (this.data.selectedStaff) {\r\n this.selectedStaff = cloneDeep(this.data.selectedStaff);\r\n this.selectedStaffIds = this.data.selectedStaff.map(staff => staff.StaffId);\r\n }\r\n if (this.data.searchAndSelect != null) {\r\n this.searchAndSelect = this.data.searchAndSelect;\r\n }\r\n if (this.data.redirectUrl != null) {\r\n this.redirectUrl = this.data.redirectUrl;\r\n }\r\n\r\n // Setting up data query\r\n this.dataQueryService.getInformation().subscribe();\r\n this.dataQueryService.currentQuery = new DataQuery();\r\n this.dataQueryService.isStaffSearch = true;\r\n\r\n // Obtaining the schools that should be available in the dropdown\r\n if (this.data.schools) {\r\n this.schools = this.data.schools;\r\n this.setSelectedSchool();\r\n this.getStaff();\r\n } else if (this.data.schoolIds) {\r\n this.subscriptions.push(this.yearService.getSchoolsBySchoolIds(this.data.schoolIds).subscribe(schools => {\r\n this.schools = sortBy(schools, ['SchoolName']);\r\n this.setSelectedSchool();\r\n this.getStaff();\r\n }));\r\n } else {\r\n this.schools = this.yearService.schools;\r\n this.setSelectedSchool();\r\n this.getStaff();\r\n }\r\n this.staffSearchService.unsavedQueryApplied = false;\r\n\r\n // Obtaining data\r\n this.subscriptions.push(\r\n\r\n // Syncing properties\r\n this.dataQueryService.observableCurrentQueryStream$.subscribe(query => {\r\n this._currentQuery = query;\r\n this._currentQuery.StudentSearch = false;\r\n this._currentQuery.CourseSearch = false;\r\n this._currentQuery.StaffSearch = true;\r\n this.dataQueryService.checkDefaultFilterFields(this._currentQuery.filterFields);\r\n }),\r\n this.dataQueryService.observableInformationStream$.subscribe(information => {\r\n this._information = information;\r\n if (this.currentQuery && !this.information.recentStaffFilters.find(filterQuery => filterQuery == this.currentQuery)) {\r\n const matchingQuery = this.information.recentStaffFilters.find(filterQuery => filterQuery.ID == this.currentQuery.ID);\r\n if (matchingQuery) {\r\n this.currentQuery = matchingQuery;\r\n }\r\n }\r\n if (!this.dataQueryService.obtainedRecentStaffQueries && !this.dataQueryService.isInformationCached()) {\r\n this.subscriptions.push(\r\n this.dataQueryService.getRecentQueries().subscribe(recentFilters => {\r\n this.information.recentStaffFilters = recentFilters;\r\n this.dataQueryService.obtainedRecentStaffQueries = true;\r\n })\r\n );\r\n }\r\n }),\r\n\r\n // Obtaining data\r\n this.dataQueryService.getPermissions().subscribe()\r\n );\r\n\r\n // Setting up the table\r\n if (this.isV10) {\r\n this.columnsToDisplay = ['select', 'Employee Number', 'First Name', 'Middle Name', 'Last Name', 'Staff Role', 'School Name', 'Use In Scheduling'];\r\n }\r\n else {\r\n this.columnsToDisplay = [];\r\n this.columnsToDisplay = ['select', 'Staff Name', 'Employee Number', 'Username', 'School Name', 'Permission Group', 'Staff Role', 'Inactive Date'];\r\n }\r\n if (!this.searchAndSelect) {\r\n this.columnsToDisplay.splice(0, 1);\r\n }\r\n this.defaultColumns = this.columnsToDisplay.filter(column => column != 'select');\r\n this.dataSource.sort = this.sort;\r\n this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string | number => {\r\n // created defaultSortingAccessor so components can override sortingAccessor and still fall back on the default if needed\r\n const staff = data as Staff;\r\n switch (sortHeaderId) {\r\n case 'UseInScheduling':\r\n return staff.UseInScheduling ? 'Y' : '';\r\n default:\r\n return this.dataSource.defaultSortingAccessor(data, sortHeaderId);\r\n }\r\n };\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n searchClick() {\r\n this.saveSearchCriteria();\r\n if (this.currentQuery.filterFields.length > 0) {\r\n this.dataQueryService.getResults(\r\n false,\r\n (results: DataQueryResult) => {\r\n this.processStaffFilterResults(results);\r\n },\r\n () => {\r\n },\r\n true\r\n );\r\n } else {\r\n this.getStaff();\r\n }\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n staffSelected(staff: Staff) {\r\n staff.Selected = !staff.Selected;\r\n if (!staff.Selected) {\r\n this.allSelected = false;\r\n const i = this.selectedStaff.findIndex(o => o.StaffId == staff.StaffId);\r\n if (i >= 0) {\r\n this.selectedStaff.splice(i, 1);\r\n }\r\n const idIndex = this.selectedStaffIds.findIndex(staffId => staffId == staff.StaffId);\r\n if (idIndex >= 0) {\r\n this.selectedStaffIds.splice(idIndex, 1);\r\n }\r\n }\r\n else {\r\n if (this.selectedStaff.find(o => o.StaffId == staff.StaffId) == null) {\r\n this.selectedStaff.push(staff);\r\n }\r\n this.selectedStaffIds.push(staff.StaffId);\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n showSelectedStaff() {\r\n // PRE: the Selected Staff in the footer is clicked\r\n // POST: opens the dialog to show the selected staff\r\n this.dialog.open(StaffListDialogComponent, {\r\n disableClose: true,\r\n maxWidth: '90%',\r\n minWidth: '90%',\r\n data: {\r\n staff: this.selectedStaff\r\n }\r\n });\r\n }\r\n\r\n checkAll() {\r\n this.allSelected = !this.allSelected;\r\n this.dataSource.filteredData.forEach(staff => {\r\n if (staff.Selected != this.allSelected) {\r\n this.staffSelected(staff);\r\n }\r\n });\r\n }\r\n\r\n rowSelected(staff: Staff) {\r\n if (!this.searchAndSelect) {\r\n this.staffService.selectedStaff = staff;\r\n this.staffService.updateStaff(this.staff, staff);\r\n this.route(staff);\r\n }\r\n }\r\n\r\n route(staff: Staff) {\r\n if (this.redirectUrl != '') {\r\n this.router.navigateByUrl(this.redirectUrl);\r\n }\r\n this.dialogRef.close(staff);\r\n }\r\n\r\n selectClick() {\r\n this.dialogRef.close(this.selectedStaff);\r\n }\r\n\r\n clearFilter() {\r\n this.dataSource.removeAllFilters();\r\n }\r\n\r\n staffFiltersClick() {\r\n // PRE: the Staff Filter button on the footer is clicked\r\n // POST: opens the Advanced Staff Search dialog\r\n const dialogBox = this.dialog.open(AdvancedStaffSearchComponent, {\r\n disableClose: true\r\n });\r\n dialogBox.afterClosed().pipe(take(1)).subscribe((results: DataQueryResult) => {\r\n if (results) {\r\n\r\n // Setting up the grid based on the results\r\n this.processStaffFilterResults(results);\r\n\r\n // Toggling whether this is an unsaved query\r\n this.staffSearchService.unsavedQueryApplied = !this.currentQuery.QueryName;\r\n }\r\n });\r\n }\r\n\r\n // Local Methods\r\n setSelectedSchool() {\r\n const selectedSchool = this.schools.find(o => o.Id == this.yearService.defaultYear.SchoolID);\r\n if (selectedSchool) {\r\n this.selectedSchoolId = (this.isV10 == false && this.selectedSchoolId != -99) ? this.selectedSchoolId : selectedSchool.Id;\r\n }\r\n else {\r\n if (this.schools.length > 0) {\r\n this.selectedSchoolId = this.schools[0].Id;\r\n }\r\n }\r\n }\r\n\r\n getStaff() {\r\n const schoolIds = this.schools.map(o => o.Id);\r\n if (!this.isV10) {\r\n this.teacher = '%';\r\n this.substitute = '%';\r\n this.advisor = '%';\r\n this.counselor = '%';\r\n this.nurse = '%';\r\n this.disciplinarian = '%';\r\n this.administrator = '%';\r\n this.superintendent = '%';\r\n this.principal = '%';\r\n this.other = '%';\r\n this.specialEdTeacher = '%';\r\n this.specialEdServiceProvider = '%';\r\n this.specialEdCaseManager = '%';\r\n switch (this.selectedRoleId) {\r\n case 1:\r\n this.teacher = '1';\r\n break;\r\n case 2:\r\n this.substitute = '1';\r\n break;\r\n case 3:\r\n this.advisor = '1';\r\n break;\r\n case 4:\r\n this.counselor = '1';\r\n break;\r\n case 5:\r\n this.nurse = '1';\r\n break;\r\n case 6:\r\n this.disciplinarian = '1';\r\n break;\r\n case 7:\r\n this.administrator = '1';\r\n break;\r\n case 8:\r\n this.administrator = '1';\r\n break;\r\n case 9:\r\n this.principal = '1';\r\n break;\r\n case 10:\r\n this.other = '1';\r\n break;\r\n case 11:\r\n this.specialEdTeacher = '1';\r\n break;\r\n case 12:\r\n this.specialEdServiceProvider = '1';\r\n break;\r\n case 13 || 14:\r\n this.specialEdCaseManager = '13';\r\n break;\r\n default:\r\n this.selectedRoleId = 0;\r\n break;\r\n }\r\n }\r\n this.isBusy = true;\r\n this.subscriptions.push(this.staffSearchService.getStaffSearch(\r\n this.selectedSchoolId,\r\n this.yearService.defaultYear.Id,\r\n this.activeToday,\r\n this.employeeNumber,\r\n this.firstName,\r\n this.lastName,\r\n schoolIds,\r\n this.teacher,\r\n this.substitute,\r\n this.advisor,\r\n this.counselor,\r\n this.nurse,\r\n this.disciplinarian,\r\n this.administrator,\r\n this.superintendent,\r\n this.principal, this.other,\r\n this.specialEdTeacher,\r\n this.specialEdServiceProvider,\r\n this.specialEdCaseManager,\r\n false,\r\n this.staffStatus,\r\n this.selectedPermissionGroupId,\r\n this.userName,\r\n this.showAllSchool,\r\n this.showAllPermissionGroups\r\n ).subscribe(staff => {\r\n this.allSelected = false;\r\n this.staff = staff;\r\n this.staff.forEach(staff => {\r\n const staffSelected = !! this.selectedStaffIds.find(staffId => staffId == staff.StaffId);\r\n const selectedStaff = this.selectedStaff.find(potentialSelection => potentialSelection.StaffId == staff.StaffId);\r\n if (staffSelected) {\r\n if (selectedStaff) {\r\n Object.assign(selectedStaff, staff);\r\n } else {\r\n this.selectedStaff.push(selectedStaff);\r\n }\r\n }\r\n });\r\n\r\n this.selectedStaff.forEach(s => {\r\n const gridStaff = this.staff.find(o => o.StaffId == s.StaffId);\r\n if (gridStaff) {\r\n Object.assign(s, gridStaff);\r\n gridStaff.Selected = true;\r\n }\r\n });\r\n if (!this.isV10 && this.staffStatus != 'All') {\r\n this.staff = [];\r\n this.staff = staff.filter(s => s.StaffStatus == this.staffStatus);\r\n }\r\n this.dataSource.data = this.staff;\r\n this.isBusy = false;\r\n }));\r\n }\r\n\r\n isDataFiltered(): boolean {\r\n return this.dataSource.isFiltered();\r\n }\r\n\r\n checkAdvancedFilter(): boolean {\r\n // POST: returns true if there is an advanced filter\r\n return this.staffSearchService.unsavedQueryApplied || this.currentQuery.ID != -1;\r\n }\r\n\r\n processStaffFilterResults(results: DataQueryResult) {\r\n // PRE: a set of results from data query\r\n // POST: applies those results to the grid\r\n\r\n // Constructing the courses based on the results\r\n const staff: Staff[] = [];\r\n if (this.isV10) {\r\n results.Data.forEach(datum => {\r\n const staffMember = new Staff();\r\n for (let i = 0; i < datum.length; i++) {\r\n switch (results.Columns[i].FieldName) {\r\n case 'Staff_ID':\r\n staffMember.StaffId = Number.parseInt(datum[i], 10);\r\n break;\r\n case 'Employee_Number':\r\n staffMember.EmployeeNumber = datum[i];\r\n break;\r\n case 'Employee_First_Name':\r\n staffMember.FirstName = datum[i];\r\n break;\r\n case 'Employee_Middle_Name':\r\n staffMember.MiddleName = datum[i];\r\n break;\r\n case 'Employee_Last_Name':\r\n staffMember.LastName = datum[i];\r\n break;\r\n case 'School_Name':\r\n staffMember.SchoolName = datum[i];\r\n break;\r\n case 'JobDesc':\r\n staffMember.StaffRole = datum[i];\r\n break;\r\n case 'UseForScheduling':\r\n staffMember.UseInScheduling = datum[i].toLowerCase() == 'true';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n staff.push(staffMember);\r\n });\r\n } else {\r\n results.Data.forEach(datum => {\r\n const staffMember = new Staff();\r\n for (let i = 0; i < datum.length; i++) {\r\n switch (results.Columns[i].FieldName) {\r\n case 'ID':\r\n staffMember.EmployeeNumber = datum[i];\r\n break;\r\n case 'Name - First':\r\n staffMember.FirstName = datum[i];\r\n break;\r\n case 'Name - Middle':\r\n staffMember.MiddleName = datum[i];\r\n break;\r\n case 'Name - Last':\r\n staffMember.LastName = datum[i];\r\n break;\r\n case 'Name':\r\n staffMember.StaffName = datum[i];\r\n break;\r\n case 'Pri Assign Site Name':\r\n staffMember.SchoolName = datum[i];\r\n break;\r\n case 'Roles':\r\n staffMember.StaffRole = datum[i];\r\n break;\r\n case 'User Name':\r\n staffMember.UserName = datum[i];\r\n break;\r\n case 'Perm Group':\r\n staffMember.PermissionGroup = datum[i];\r\n break;\r\n case 'State ID':\r\n staffMember.StateId = datum[i];\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n staff.push(staffMember);\r\n });\r\n }\r\n\r\n // Applying the data to the grid\r\n this.dataSource.data = staff;\r\n this.isBusy = false;\r\n }\r\n\r\n keyDownFunction(event) {\r\n if (event.keyCode == 13) {\r\n this.searchClick();\r\n }\r\n }\r\n\r\n getPermissionGroup() {\r\n this.permissionGroupService.getPermissionGroupDescription().subscribe(result => {\r\n this.permissionGroups = result.filter(o => o.Active == true);\r\n });\r\n }\r\n\r\n startOverClick() {\r\n this.restoreDefaultsClick();\r\n this.staffSearchService.staffSearchCriteria = new StaffSearchCriteria();\r\n this.employeeNumber = '';\r\n this.lastName = '';\r\n this.firstName = '';\r\n const selectedSchool = this.schools.find(o => o.Id == this.yearService.defaultYear.SchoolID);\r\n if (selectedSchool) {\r\n this.selectedSchoolId = selectedSchool.Id;\r\n }\r\n else {\r\n if (this.schools.length > 0) {\r\n this.selectedSchoolId = this.schools[0].Id;\r\n }\r\n }\r\n this.selectedPermissionGroupId = 0;\r\n this.selectedRoleId = 0;\r\n this.userName = '';\r\n this.staffStatus = 'Active';\r\n this.showAllSchool = false;\r\n this.showAllPermissionGroups = false;\r\n this.selectedStaff = [];\r\n this.getStaff();\r\n }\r\n\r\n columnActive(column: string) {\r\n // PRE: the column name from the table definition\r\n // POST: returns whether or not that column is in the table\r\n return this.columnsToDisplay.includes(column);\r\n }\r\n\r\n getColumnHeader(column: string) {\r\n // PRE: the column name from the table definition\r\n // POST: returns the header from the table\r\n switch (column) {\r\n\r\n case 'Employee Number':\r\n return this.isV10 ? 'Employee Number' : 'Employee #';\r\n\r\n case 'School Name':\r\n return this.isV10 ? 'Primary School' : 'School';\r\n\r\n case 'Staff Role':\r\n return this.isV10 ? 'Primary Job' : 'Role';\r\n\r\n default:\r\n return column;\r\n }\r\n }\r\n\r\n addColumn(column: string) {\r\n // PRE: one of the checkboxes from the column list is checked\r\n // POST: toggles whether that column is in the table\r\n if (!this.columnActive(column)) {\r\n this.columnsToDisplay.push(column);\r\n } else {\r\n this.columnsToDisplay.splice(this.columnsToDisplay.indexOf(column), 1);\r\n }\r\n this.columnsToDisplay.sort((a, b) => {\r\n const indexOfA = this.defaultColumns.indexOf(a);\r\n const indexOfB = this.defaultColumns.indexOf(b);\r\n return indexOfA - indexOfB;\r\n });\r\n }\r\n\r\n restoreDefaultsClick() {\r\n // PRE: The Restore Defaults button on the column list is checked\r\n // POST: sets the columns to their initial set\r\n this.columnsToDisplay = cloneDeep(this.defaultColumns);\r\n if (this.searchAndSelect) {\r\n this.columnsToDisplay.unshift('select');\r\n }\r\n }\r\n\r\n saveSearchCriteria() {\r\n this.staffSearchService.staffSearchCriteria.FirstName = this.firstName;\r\n this.staffSearchService.staffSearchCriteria.LastName = this.lastName;\r\n this.staffSearchService.staffSearchCriteria.UserName = this.userName;\r\n this.staffSearchService.staffSearchCriteria.EmployeeNumber = this.employeeNumber;\r\n this.staffSearchService.staffSearchCriteria.SchoolId = this.selectedSchoolId;\r\n this.staffSearchService.staffSearchCriteria.Status = this.staffStatus;\r\n this.staffSearchService.staffSearchCriteria.ShowAllSchools = this.showAllSchool;\r\n }\r\n\r\n getSearchCriteria() {\r\n this.firstName = this.staffSearchService.staffSearchCriteria.FirstName != undefined ? this.staffSearchService.staffSearchCriteria.FirstName : this.firstName;\r\n this.lastName = this.staffSearchService.staffSearchCriteria.LastName != undefined ? this.staffSearchService.staffSearchCriteria.LastName : this.lastName;\r\n this.userName = this.staffSearchService.staffSearchCriteria.UserName != undefined ? this.staffSearchService.staffSearchCriteria.UserName : this.userName;\r\n this.employeeNumber = this.staffSearchService.staffSearchCriteria.EmployeeNumber != undefined ? this.staffSearchService.staffSearchCriteria.EmployeeNumber : this.employeeNumber;\r\n this.selectedSchoolId = this.staffSearchService.staffSearchCriteria.SchoolId != undefined ? this.staffSearchService.staffSearchCriteria.SchoolId : this.selectedSchoolId;\r\n this.staffStatus = this.staffSearchService.staffSearchCriteria.Status != undefined ? this.staffSearchService.staffSearchCriteria.Status : this.staffStatus;\r\n this.showAllSchool = this.staffSearchService.staffSearchCriteria.ShowAllSchools != undefined ? this.staffSearchService.staffSearchCriteria.ShowAllSchools : this.showAllSchool;\r\n }\r\n\r\n showAllSchoolClick() {\r\n this.staffSearchService.staffSearchCriteria.ShowAllSchools = this.showAllSchool;\r\n this.getStaff();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../System';\r\nimport { Staff, StaffSearchCriteria } from './staff.model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StaffSearchService {\r\n\r\n // Properties\r\n unsavedQueryApplied: boolean;\r\n staffSearchCriteria = new StaffSearchCriteria()\r\n\r\n // Class Functions\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n // Service Methods\r\n getStaffSearch(schoolId: number, yearId: number, activeToday: boolean, employeeNumber: string, firstName: string, lastName: string, schoolIds: number[],\r\n Teacher: string, Substitute: string, Advisor: string, Counselor: string, Nurse: string, Disciplinarian: string,\r\n Administrator: string, Superintendent: string, Principal: string, Other: string, SpecialEdTeacher: string,\r\n SpecialEdServiceProvider: string, SpecialEdCaseManager: string, ActiveStaff: boolean, Status = 'All',\r\n PermissionGroupId = 0, Username = '', ShowAllSchool = false, ShowAllPermissionGroups = false\r\n ): Observable {\r\n const queryString = '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&activeToday=' + activeToday +\r\n '&employeeNumber=' + employeeNumber +\r\n '&firstName=' + firstName +\r\n '&lastName=' + lastName +\r\n '&Teacher=' + Teacher +\r\n '&Substitute=' + Substitute +\r\n '&Advisor=' + Advisor +\r\n '&Counselor=' + Counselor +\r\n '&Nurse=' + Nurse +\r\n '&Disciplinarian=' + Disciplinarian +\r\n '&Administrator=' + Administrator +\r\n '&Superintendent=' + Superintendent +\r\n '&Principal=' + Principal +\r\n '&Other=' + Other +\r\n '&SpecialEdTeacher=' + SpecialEdTeacher +\r\n '&SpecialEdServiceProvider=' + SpecialEdServiceProvider +\r\n '&SpecialEdCaseManager=' + SpecialEdCaseManager +\r\n '&ActiveStaff=' + ActiveStaff +\r\n '&Status=' + Status +\r\n '&PermissionGroupId=' + PermissionGroupId +\r\n '&Username=' + Username +\r\n '&ShowAllSchool=' + ShowAllSchool +\r\n '&ShowAllPermissionGroups=' + ShowAllPermissionGroups;\r\n return this.http.post(System.apiURL.Student + 'GetStaff' + queryString, schoolIds);\r\n }\r\n\r\n getStaffByStaffIds(staffIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetStaffByStaffIds', staffIds);\r\n }\r\n}","import { StaffAddress } from \"../../management360/staff/models/faculty-staff.model\";\r\n\r\nexport class Staff {\r\n $id: number;\r\n StaffId: number;\r\n EmployeeNumber: string;\r\n FirstName: string;\r\n MiddleName: string;\r\n LastName: string;\r\n UserId: number;\r\n Selected: boolean;\r\n // v9\r\n StaffName: string;\r\n SchoolName: string;\r\n StaffRole: string;\r\n StaffStatus: string;\r\n UserName: string;\r\n PermissionGroup: string;\r\n StateId: string;\r\n ForceNewPassword: boolean;\r\n IsBlankPassword: boolean;\r\n LastLoginDate: Date;\r\n GenderTypeCode: string;\r\n //// V9 Staff Header ///\r\n FTE = 1.000;\r\n HireDate: string;\r\n InActiveDate: string;\r\n SSN = '';\r\n CellPhone = '';\r\n Pager: string = '';\r\n EmailAddress = '';\r\n GenderTypeId: number;\r\n RaceTypeId: number;\r\n FamilyId: number;\r\n FacultyStaffId = 0;\r\n Pin = '';\r\n Unlisted = false;\r\n FacultyStaffEmail = '';\r\n SchoolExt: string = '';\r\n TeacherFlg = false;\r\n SpecialtyCodeId: number;\r\n SpecialeducationTeacherFlg = false;;\r\n SubstituteFlg = false;\r\n AdvisorFlg = false;\r\n CounselorFlg = false;\r\n NurseFlg = false;\r\n DisciplinarianFlg = false;\r\n AdministratorFlg = false;\r\n SuperintendentFlg = false;\r\n PrincipalFlg = false;\r\n OtherFlg = false;\r\n MinPerWeek = 0;\r\n SpecialServicesSupervisor = false;\r\n CaseManager = false;\r\n ServiceProvider = false;\r\n MedicaidSupervisorFlg = false;\r\n FormerSisId = '';\r\n HumanResourceId = '';\r\n PhotoTakenDate: Date;\r\n IdPrintedDate: Date;\r\n DateofBirth: Date = null;\r\n BilingualLanguageId: number;\r\n EmployeeStatusId: number;\r\n TerminationReasonId: number;\r\n StaffClassificationId: number;\r\n EthnicityTypeId: number;\r\n FormerLastName = '';\r\n TribalAffiliation = '';\r\n CertificationNumber = '';\r\n NurseType: string;\r\n HighlyQualified = false;;\r\n HighestCompletedLevel = '';\r\n GiftedEndorsed = false;\r\n HomeTel1 = '';\r\n HomeTel2 = '';\r\n MaritalStatus: number;\r\n PrefixId: number;\r\n SuffixId: number;\r\n SpousePrefixId: number;\r\n SpouseWorkPhone = '';\r\n SpouseExtension = '';\r\n SpouseFirstName = '';\r\n SpouseMiddleName = '';\r\n SpouseLastName = '';\r\n SpouseCellPhone = '';\r\n SpouseSuffixId: number;\r\n SpouseEmailAddress = '';\r\n SpousePeopleId: number;\r\n Employer = '';\r\n IsDisabled = false;\r\n StaffPrimaryAddress: StaffAddress;\r\n // Non DTO Field V9 //\r\n TextFTE: string;\r\n readOnly = false;\r\n\r\n // V10\r\n UseInScheduling: boolean;\r\n}\r\n\r\nexport class StaffSearchCriteria {\r\n EmployeeNumber: string;\r\n FirstName: string;\r\n LastName: string;\r\n SchoolId: number;\r\n UserName: string;\r\n Status: string;\r\n ShowAllSchools: boolean;\r\n}\r\n\r\nexport class StaffEmergencyContact {\r\n FamilyId: number;\r\n PeopleId: number;\r\n FirstName: string;\r\n LastName: string;\r\n MiddleName: string;\r\n FullName: string;\r\n CellPhone: string;\r\n RelationshipTypeId: number;\r\n RelationshipType: string;\r\n Comment: string;\r\n Note: string;\r\n Sequence: number;\r\n\r\n // Home Address Fields\r\n HomeAddressId: number;\r\n HomeAddress: string;\r\n HomeCity: string;\r\n HomeState: string;\r\n HomeZipCode: string;\r\n HomePhone: string;\r\n\r\n // // Work Address Fields\r\n WorkAddressId: number;\r\n WorkAddress: string;\r\n WorkCity: string;\r\n WorkState: string;\r\n WorkZipCode: string;\r\n WorkPhone: string;\r\n WorkPhoneExt: string;\r\n}\r\n\r\n","

\r\n Alerts for\r\n \r\n

\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Alert\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Description\r\n \r\n \r\n\r\n \r\n {{alert.Program}} - {{alert.Service}}\r\n \r\n\r\n \r\n {{alert.Program}} - {{alert.Service}}\r\n \r\n\r\n \r\n {{alert.Description}}\r\n \r\n Start{{alert.StartDate}}End{{alert.EndDate}}
\r\n\r\n
\r\n\r\n \r\n","import { Component, Inject, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { StudentService } from '../../student/student.service';\r\nimport { Student } from '../../student/student.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\nimport { Router } from '@angular/router';\r\nimport { System } from '../../System';\r\nimport { StudentInfoPortalComponent } from '../../student-information/student-info-portal/student-info-portal.component';\r\nimport { UserService } from '../../user/user.service';\r\nimport { YearService } from '../../year/year.service';\r\nimport { Observable, forkJoin } from 'rxjs';\r\nimport { Enrollment } from '../../student/enrollment.model';\r\nimport { Student360Service } from '../../../student360/student360.service';\r\nimport { Classroom360Service } from '../../../classroom360/classroom360.service';\r\n\r\n@Component({\r\n selector: 'app-alerts-dialog',\r\n templateUrl: './alerts-dialog.component.html',\r\n styleUrls: ['./alerts-dialog.component.css']\r\n})\r\nexport class AlertsDialogComponent implements OnInit {\r\n @ViewChild('dateTpl') dateTpl: TemplateRef;\r\n @ViewChild('iconTpl') iconTpl: TemplateRef;\r\n studentId: number;\r\n isV10: boolean;\r\n student: Student;\r\n studentEnrollment: Enrollment;\r\n gridHeight;\r\n alerts: Alert[] = [];\r\n displayedColumns: string[] = ['alertIcon', 'description', 'start', 'end'];\r\n junkDateString = System.junkDateString;\r\n portalDialog: MatDialogRef;\r\n isIEP = true;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n public dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n @Inject(MAT_DIALOG_DATA) public data: Alert[],\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private parentPortalService: Student360Service,\r\n private classroom360Service: Classroom360Service\r\n ) {\r\n this.alerts = _.cloneDeep(data);\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n this.studentId = this.data.find(d => d.StudentId != undefined).StudentId;\r\n this.checkAlerts();\r\n this.getStudentDetails();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n getStudentDetails() {\r\n const serverCalls: Observable = forkJoin(\r\n this.studentService.getStudent(this.studentId),\r\n this.studentService.getStudentEnrollment(this.studentId, this.yearService.defaultYear.Id)\r\n );\r\n\r\n serverCalls.subscribe(results => {\r\n if (results[0] != null) {\r\n this.student = results[0];\r\n }\r\n if (results[1] != null) {\r\n this.studentEnrollment = results[1];\r\n }\r\n });\r\n }\r\n\r\n checkAlerts() {\r\n // Format the dates for display\r\n // Null any values that are incorrect\r\n const userType = this.userService.currentUser.UserType;\r\n const v10 = this.isV10;\r\n this.alerts.forEach(alert => {\r\n alert.StartDate = moment(alert.StartDate, 'YYYY-MM-DDThh:mm:ss').format('MM/DD/YY');\r\n alert.EndDate = moment(alert.EndDate, 'YYYY-MM-DDThh:mm:ss').format('MM/DD/YY');\r\n if (alert.StartDate == '01/01/01') {\r\n alert.StartDate = '';\r\n }\r\n if (alert.EndDate == '01/01/01') {\r\n alert.EndDate = '';\r\n }\r\n\r\n if (alert.AlertType == 'IEP' && alert.UserHasPermisison == false) {\r\n if ((userType == 1 && v10 == true && this.classroom360Service.staffAssignedPortals.filter(o => o.PortalName == 'Individualized Education Program' || o.PortalName == 'Student Document Management').length > 0)\r\n || (userType != 1 && this.parentPortalService.parentAssignedPortals.filter(o => o.PortalName == 'Individualized Education Program' || o.PortalName == 'Student Document Management').length > 0)) {\r\n alert.UserHasPermisison = true;\r\n this.isIEP = true;\r\n }\r\n else if ((userType == 1 && this.classroom360Service.staffAssignedPortals.filter(o => o.PortalName == 'Programs and Services').length > 0 && alert.Program != '' && alert.Service != '')\r\n || (userType != 1 && this.parentPortalService.parentAssignedPortals.filter(o => o.PortalName == 'Programs and Services').length > 0 && alert.Program != '' && alert.Service != '')) {\r\n alert.UserHasPermisison = true;\r\n this.isIEP = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n programServiceClick(program: string, service: string) {\r\n this.studentService.selectedProgramName = program;\r\n this.studentService.selectedServiceName = service;\r\n if (this.studentService.selectedStudent == null || this.studentService.selectedStudent.Id != this.student.Id) {\r\n this.studentService.selectedStudent = this.student;\r\n this.studentService.studentEnrollment = this.studentEnrollment;\r\n }\r\n if (this.studentService.students == null || this.studentService.students.filter(o => o.Id == this.student.Id).length == 0) {\r\n this.studentService.students = [];\r\n this.studentService.students.push(this.student);\r\n }\r\n\r\n this.userService.selectedStudentInfoPortal = 'Programs and Services';\r\n this.portalDialog = this.dialog.open(StudentInfoPortalComponent, {\r\n panelClass: 'tyl-mat-dialog', width: '100%', minWidth: '100%', height: '100%', disableClose: true\r\n });\r\n\r\n this.portalDialog.componentInstance.showPortal('Programs and Services');\r\n this.portalDialog.afterClosed().subscribe(() => {\r\n this.student = this.studentService.selectedStudent;\r\n });\r\n\r\n this.dialogRef.close();\r\n }\r\n\r\n iepClick(alert) {\r\n if (this.isIEP == true) {\r\n if (this.studentService.selectedStudent == null || this.studentService.selectedStudent.Id != this.student.Id) {\r\n this.studentService.selectedStudent = this.student;\r\n this.studentService.studentEnrollment = this.studentEnrollment;\r\n }\r\n if (this.studentService.students == null || this.studentService.students.filter(o => o.Id == this.student.Id).length == 0) {\r\n this.studentService.students = [];\r\n this.studentService.students.push(this.student);\r\n }\r\n\r\n if (this.loginService.LoginSettings.SDMIntegration != null && this.loginService.LoginSettings.SDMIntegration == true) {\r\n this.userService.selectedStudentInfoPortal = 'Student Document Management';\r\n }\r\n else {\r\n this.userService.selectedStudentInfoPortal = 'Individualized Education Program';\r\n }\r\n this.portalDialog = this.dialog.open(StudentInfoPortalComponent, {\r\n panelClass: 'tyl-mat-dialog', width: '100%', minWidth: '100%', height: '100%', disableClose: true\r\n });\r\n\r\n if (this.loginService.LoginSettings.SDMIntegration != null && this.loginService.LoginSettings.SDMIntegration == true) {\r\n this.portalDialog.componentInstance.showPortal('Student Document Management');\r\n }\r\n else {\r\n this.portalDialog.componentInstance.showPortal('Individualized Education Program');\r\n }\r\n this.portalDialog.afterClosed().subscribe(() => {\r\n this.student = this.studentService.selectedStudent;\r\n });\r\n }\r\n else if (this.isIEP == false && alert.Program != '' && alert.Service != '') {\r\n this.programServiceClick(alert.Program, alert.Service);\r\n }\r\n\r\n this.dialogRef.close();\r\n }\r\n}\r\n\r\nexport class Alert {\r\n AlertIcon: string;\r\n AlertType: string;\r\n ContactName: string;\r\n ContactRelationship: string;\r\n Description: string;\r\n EndDate: string;\r\n Id: number;\r\n IsConfidential: boolean;\r\n Program: string;\r\n Sequence: number;\r\n Service: string;\r\n StartDate: string;\r\n StudentId: number;\r\n UserHasPermisison: boolean;\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ...\r\n
","import { UserService } from './../user/user.service';\r\nimport { Component, Input, OnInit, OnChanges } from '@angular/core';\r\nimport { StudentAlerts } from '../models/student-alerts.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AlertsDialogComponent } from './alerts-dialog/alerts-dialog.component';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { Router } from '@angular/router';\r\nimport { Student360Service } from '../../student360/student360.service';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'student-alerts',\r\n templateUrl: './student-alerts.component.html',\r\n styleUrls: ['./student-alerts.component.css']\r\n})\r\nexport class StudentAlertsComponent implements OnInit, OnChanges {\r\n @Input() alerts: StudentAlerts[];\r\n @Input() alertHeight = 20;\r\n @Input() distanceBetween = 2; // This is the distance between each icon\r\n @Input() collapsed = false; // If this is set to true, it will display an icon at most once\r\n @Input() showAllAlerts = false;\r\n @Input() addEllipsis = false;\r\n @Input() setMaxAlertsForcefully = 0;\r\n\r\n isV10: boolean;\r\n hasMedicalAlerts: boolean;\r\n maxAlerts: number;\r\n hasIepAlerts: boolean;\r\n hasReleaseAlerts: boolean;\r\n hasFamilyAlerts: boolean;\r\n hasProgramsAndServicesAlerts: boolean;\r\n hasClassroomAlerts: boolean;\r\n displayedAlerts: StudentAlerts[] = [];\r\n programsAndServicesAlerts: StudentAlerts[];\r\n userHasPermission = false;\r\n userType: number;\r\n showEllipsis = false;\r\n currentDate= new Date();\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n public domSanitizer: DomSanitizer,\r\n public dialog: MatDialog,\r\n private userPreferences: UserPreferencesService,\r\n private userService: UserService,\r\n private router: Router,\r\n private parentPortalService: Student360Service,\r\n private classroom360Service: Classroom360Service\r\n ) {\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n this.userType = this.userService.currentUser.UserType;\r\n if (this.showAllAlerts == false && this.userPreferences.generalPreferences && this.userPreferences.generalPreferences.MaximumAlertIcon != 'All') {\r\n this.maxAlerts = parseInt(this.userPreferences.generalPreferences.MaximumAlertIcon, 10);\r\n } else {\r\n this.maxAlerts = 0;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.userHasPermission = this.userType == 1 || this.alerts.find(alert => alert.UserHasPermisison) != null || this.alerts.find(alert => alert.AlertType == 'IEP') != null;\r\n this.processAlerts();\r\n }\r\n\r\n ngOnChanges() {\r\n this.userHasPermission = this.userType == 1 || this.alerts.find(alert => alert.UserHasPermisison) != null || this.alerts.find(alert => alert.AlertType == 'IEP') != null;\r\n this.processAlerts();\r\n }\r\n\r\n processAlerts() {\r\n // POST: Determes which alerts to show\r\n this.displayedAlerts = [];\r\n\r\n // If the icons are collapsed, show one of each\r\n if (this.collapsed) {\r\n const alertTypesCovered: string[] = [];\r\n const alertIconsCovered: number[][] = [];\r\n for (let i = 0; i < this.alerts.length; i++) {\r\n const alert = this.alerts[i];\r\n if (alert.AlertType == 'Programs And Services Alert') {\r\n if (alert.AlertIcon && !alertIconsCovered.includes(alert.AlertIcon)) {\r\n \r\n if(moment(this.currentDate).isBefore(alert.EndDate) || (moment(alert.EndDate, 'YYYY-MM-DDThh:mm:ss').format('MM/DD/YY')=='01/01/01')){\r\n this.displayedAlerts.push(alert);\r\n alertIconsCovered.push(alert.AlertIcon);\r\n }\r\n }\r\n }\r\n else {\r\n if (alert.AlertType && !alertTypesCovered.includes(alert.AlertType)) {\r\n if (alert.AlertType == 'IEP') {\r\n if ((this.userType == 1 && this.classroom360Service.staffAssignedPortals.filter(o => o.PortalName == 'Individualized Education Program').length > 0)\r\n || (this.userType != 1 && this.parentPortalService.parentAssignedPortals.filter(o => o.PortalName == 'Individualized Education Program').length > 0)) {\r\n alert.UserHasPermisison = true;\r\n }\r\n }\r\n this.displayedAlerts.push(alert);\r\n alertTypesCovered.push(alert.AlertType);\r\n }\r\n }\r\n }\r\n }\r\n // If not, display them according to some heuristics\r\n else {\r\n // Check for IEP Alerts\r\n if (this.alerts.find(alert => alert.AlertType == 'IEP')) {\r\n const iepAlerts = this.alerts.filter(alert => alert.AlertType == 'IEP');\r\n // Set User has permission flag\r\n if ((this.userType == 1 && this.classroom360Service.staffAssignedPortals.filter(o => o.PortalName == 'Individualized Education Program').length > 0)\r\n || (this.userType != 1 && this.parentPortalService.parentAssignedPortals.filter(o => o.PortalName == 'Individualized Education Program').length > 0)) {\r\n iepAlerts[0].UserHasPermisison = true;\r\n }\r\n\r\n // For display purposes we only want 1 of this type\r\n this.displayedAlerts.push(iepAlerts[0]);\r\n this.hasIepAlerts = true;\r\n }\r\n // Check for medical Alerts\r\n if (this.alerts.find(alert => alert.AlertType == 'Medical Alert')) {\r\n const medicalAlerts = this.alerts.filter(alert => alert.AlertType == 'Medical Alert');\r\n // For display purposes we only want 1 of this type\r\n this.displayedAlerts.push(medicalAlerts[0]);\r\n this.hasMedicalAlerts = true;\r\n }\r\n // Check for medical Restriction Alerts\r\n if (this.alerts.find(alert => alert.AlertType == 'Medical Restriction Alert')) {\r\n const medicalRestrictionAlerts = this.alerts.filter(alert => alert.AlertType == 'Medical Restriction Alert');\r\n // For display purposes we only want 1 of this type\r\n this.displayedAlerts.push(medicalRestrictionAlerts[0]);\r\n this.hasMedicalAlerts = true;\r\n }\r\n // Check for family Alerts\r\n if (this.alerts.find(alert => alert.AlertType == 'Family Alert')) {\r\n const familyAlerts = this.alerts.filter(alert => alert.AlertType == 'Family Alert');\r\n this.displayedAlerts.push(familyAlerts[0]);\r\n this.hasFamilyAlerts = true;\r\n }\r\n // Check for release Alerts\r\n if (this.alerts.find(alert => alert.AlertType == 'Release Alert')) {\r\n const releaseAlerts = this.alerts.filter(alert => alert.AlertType == 'Release Alert');\r\n // For display purposes we only want 1 of this type\r\n this.displayedAlerts.push(releaseAlerts[0]);\r\n this.hasReleaseAlerts = true;\r\n }\r\n // Check for Program and Services Alerts\r\n if (this.alerts.find(alert => alert.AlertType == 'Programs And Services Alert')) {\r\n this.hasProgramsAndServicesAlerts = true;\r\n this.programsAndServicesAlerts = this.alerts.filter(alert => alert.AlertType == 'Programs And Services Alert');\r\n this.displayedAlerts = this.displayedAlerts.concat(this.alerts.filter(alert => alert.AlertType == 'Programs And Services Alert'));\r\n }\r\n // Check for Classroom Alerts\r\n if (this.alerts.find(alert => alert.AlertType == 'Classroom Alert')) {\r\n // For display purposes we only want 1 of this type\r\n const classroomAlerts = this.alerts.filter(alert => alert.AlertType == 'Classroom Alert');\r\n this.displayedAlerts.push(classroomAlerts[0]);\r\n this.hasClassroomAlerts = true;\r\n }\r\n }\r\n\r\n // Cut down the displayedAlerts array to the user preference\r\n if (this.setMaxAlertsForcefully > 0) {\r\n if (this.addEllipsis && this.displayedAlerts.length > this.setMaxAlertsForcefully) {\r\n this.showEllipsis = true;\r\n }\r\n this.displayedAlerts = this.displayedAlerts.slice(0, this.setMaxAlertsForcefully);\r\n }\r\n else if (this.showAllAlerts == false && this.maxAlerts > 0) {\r\n if (this.addEllipsis && this.displayedAlerts.length > this.maxAlerts) {\r\n this.showEllipsis = true;\r\n }\r\n this.displayedAlerts = this.displayedAlerts.slice(0, this.maxAlerts);\r\n }\r\n }\r\n\r\n studentAlertsClick(alertType: string) {\r\n if (this.userHasPermission) {\r\n this.dialog.open(AlertsDialogComponent, {\r\n width: '800px',\r\n maxHeight: '80vh',\r\n data: this.alerts\r\n });\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n

\r\n {{selectedStudent.FirstName}} {{selectedStudent.LastName}}\r\n {{getStudentSuffix()}}\r\n

\r\n\r\n

\r\n {{useStudentName}}\r\n

\r\n\r\n \r\n \r\n\r\n
\r\n #{{selectedStudent.StudentNumber}} \r\n Grade\r\n {{studentEnrollment.GradeLevel}} - {{studentEnrollment.SchoolName}} - {{studentEnrollment.Calendar}}\r\n Withdrawn as of \r\n {{studentEnrollment.WithdrawalDate | date:'MM/dd/yy'}}\r\n Projected\r\n
\r\n\r\n
\r\n #{{selectedStudent.StudentNumber}} \r\n Grade\r\n {{studentEnrollment.GradeLevel}} - {{studentEnrollment.SchoolName}}\r\n - No Show\r\n
\r\n\r\n
\r\n {{noEnrollmentString}}\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
{{stepNumber}}
\r\n

{{pageTitle}}

\r\n
\r\n
\r\n Academic Year -\r\n \r\n \r\n \r\n {{year.Description}}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n Academic Year -\r\n \r\n \r\n \r\n {{defaultYear.Description}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Academic Year - {{ courseRequestYear.Description}}\r\n \r\n \r\n Academic Year - {{ courseRequestYear.Description }}\r\n \r\n
\r\n
\r\n Academic Year - {{ useYear ? useYear.Description : selectedYear.Description}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{layout.Name}}\r\n \r\n \r\n \r\n
\r\n
0\"\r\n style=\"position:absolute; top:140px; right:17px;\">\r\n Type: {{selectedLayoutTypeName}}\r\n
\r\n
\r\n
\r\n
","import { LoginService } from './../../shared-modules/login/login.service';\r\nimport { Alerts } from './../student/student.model';\r\nimport { Component, Input, OnInit, HostBinding, Host, OnDestroy, EventEmitter, Output } from '@angular/core';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { StudentService } from '../student/student.service';\r\nimport { Student } from '../student/student.model';\r\nimport { Enrollment } from '../student/enrollment.model';\r\nimport { YearService } from '../year/year.service';\r\nimport { Year } from '../year/year.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { System } from '../System';\r\nimport { Student360Service } from '../../student360/student360.service';\r\nimport { OnlineRegistrationService } from '../../student360/online-registration/online-registration.service';\r\nimport * as _ from 'lodash';\r\nimport { CustomLayout } from '../custom-layouts/Models/custom-layout.model';\r\nimport { CustomLayoutsService } from '../custom-layouts/custom-layouts.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { StudentImageDialogComponent } from './student-image-dialog/student-image-dialog.component';\r\nimport { CustomLayoutType } from '../custom-layouts/Models/custom-layout-type.model';\r\nimport { FamilyRegistrationService } from '../../shared-modules/family-registration/family-registration.service';\r\nimport { NewFamilyRegistrationYearSelectionComponent } from '../../shared-modules/family-registration/new-family-registration-year-selection/new-family-registration-year-selection.component';\r\nimport { take } from 'rxjs/operators';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'student-header',\r\n templateUrl: './student-header.component.html',\r\n styleUrls: [\r\n './student-header.component.css'\r\n ]\r\n})\r\nexport class StudentHeaderComponent implements OnInit, OnDestroy {\r\n\r\n // Interface\r\n @HostBinding('class.sis-app-root') sisAppRoot: Host = true;\r\n\r\n @Input() showStudent = true;\r\n @Input() useParentPortalYear = false; // Use the defaultParentPortalYear rather than the currently selected year.\r\n @Input() showYearSelector: boolean; // shows or hides the year selector\r\n @Input() showAllYearOption: boolean;\r\n @Input() onlineRegistration: boolean;\r\n @Input() onlinePayment: boolean;\r\n @Input() parentPortalUpdate: boolean;\r\n @Input() disableYearSelect: boolean; // shows the year selector but it is disabled\r\n @Input() showCustomLayouts: boolean;\r\n @Input() disableNavigation: boolean;\t// Removes the ability to change students on the header\r\n @Input() pageTitle: string; // Blue title that displays on the header\r\n @Input() useYear: Year;\r\n @Input() courseRequestYear: Year;\r\n @Input() allowFutureYears = false;\r\n @Input() useStudents: Student[];\r\n @Input() noEnrollmentString = 'Not enrolled in this school year - Please select another year';\r\n @Input() useStudentName = '';\r\n @Input() showAYLabel = false;\r\n @Input() hideAlerts = false;\r\n @Input() showEnrollmentDates = false;\r\n @Input() stepNumber: number;\r\n\r\n @Output() studentChange = new EventEmitter();\r\n @Output() useYearChange = new EventEmitter();\r\n @Input() eForm: boolean;\r\n\r\n // Custom Layouts\r\n selectedLayoutId: number;\r\n customLayouts: CustomLayout[];\r\n ViewlayoutTypes: CustomLayoutType[] = [];\r\n selectedViewTypeId: number;\r\n selectedLayoutTypeName = '';\r\n\r\n // Students\r\n private _studentId: number;\r\n selectedStudent: Student;\r\n studentEnrollment: Enrollment;\r\n studentAlerts: Alerts[];\r\n\r\n // Years\r\n years: Year[];\r\n selectedYear: Year;\r\n defaultYear: Year;\r\n\r\n // Other\r\n subscriptions: Subscription[] = [];\r\n V10: boolean;\r\n showReEnrollButton = false;\r\n\r\n ReEnrollYears: Year[] = [];\r\n frYearsDialogRef: MatDialogRef;\r\n medicalShowAlertSubscriptions: Subscription;\r\n // Class Functions\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private customLayoutService: CustomLayoutsService,\r\n private userService: UserService,\r\n private router: Router,\r\n private onlineRegistrationService: OnlineRegistrationService,\r\n private loginService: LoginService,\r\n private student360Service: Student360Service,\r\n private dialog: MatDialog,\r\n private familyRegistrationService: FamilyRegistrationService\r\n ) {\r\n this.medicalShowAlertSubscriptions = this.studentService.observableMedicalShowAlertStream$.subscribe(() => {\r\n this.getStudentAlerts();\r\n });\r\n }\r\n\r\n get students(): Student[] {\r\n if (this.useStudents) {\r\n return this.useStudents;\r\n } else {\r\n return this.studentService.students;\r\n }\r\n }\r\n\r\n get totalStudents(): number {\r\n return this.students ? this.students.length : 0;\r\n }\r\n\r\n get studentId(): number {\r\n return this._studentId;\r\n }\r\n\r\n get userType(): number {\r\n return this.userService.currentUser.UserType;\r\n }\r\n\r\n @Input() set studentId(value: number) {\r\n if (this._studentId != value) {\r\n this._studentId = value;\r\n if (this._studentId) {\r\n this.loadSelectedStudent();\r\n }\r\n }\r\n }\r\n\r\n get showAlerts() {\r\n return (this.userType == 1 || !this.V10) && !this.hideAlerts;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n\r\n // Setting intial properties\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n\r\n // Setting up custom layouts\r\n this.subscriptions.push(\r\n this.customLayoutService.observableSelectedLayoutStream$.subscribe(selectedLayout => {\r\n this.selectedLayoutId = selectedLayout.Id;\r\n })\r\n );\r\n this.subscriptions.push(\r\n this.customLayoutService.observableSelectedLayoutViewTypeStream$.subscribe(selectedLayout => {\r\n this.selectedLayoutTypeName = this.customLayoutService.selectedLayoutType.Name.replace('Academic History', '');\r\n })\r\n );\r\n this.subscriptions.push(\r\n this.customLayoutService.observableSavedLayoutsStream$.subscribe(savedLayouts => {\r\n this.customLayouts = savedLayouts;\r\n this.ViewlayoutTypes = this.customLayoutService.layoutTypes.filter(x => x.Name.indexOf(this.pageTitle) > -1);\r\n this.selectedViewTypeId = this.customLayoutService.selectedLayoutType.Id;\r\n this.selectedLayoutTypeName = this.customLayoutService.selectedLayoutType.Name.replace('Academic History', '');\r\n })\r\n );\r\n this.subscriptions.push(\r\n this.yearService.observableYearStream$.subscribe(years => {\r\n this.getYears();\r\n })\r\n );\r\n // Obtaining the years for the selector\r\n this.getYears();\r\n\r\n // We respond to selected student unless we're using a custom list of students\r\n if (!this.useStudents) {\r\n this.subscriptions.push(\r\n this.studentService.selectedStudentStream$.subscribe(studentId => {\r\n this.studentId = this.studentService.selectedStudent.Id; // studentId;\r\n if (this.students != null && this.students.findIndex(o => o.Id == this.studentService.selectedStudent.Id) < 0) {\r\n this.students.push(this.studentService.selectedStudent);\r\n }\r\n })\r\n );\r\n }\r\n\r\n // If we are using a custom set of students, then we want to be sure to capture all student changes\r\n if (this.useStudents) {\r\n if (!this.studentId) {\r\n this.studentId = this.useStudents[0].Id;\r\n }\r\n }\r\n\r\n // Loading the student immediately if we have it\r\n if (this.studentId && !this.selectedStudent) {\r\n this.loadSelectedStudent();\r\n }\r\n\r\n // Responding to year change\r\n this.subscriptions.push(\r\n this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.selectedYear = this.yearService.student360Year;\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.student360Service.observableParentAssignedPortalsStream$.subscribe(data => {\r\n if (this.router.url.toLowerCase().indexOf('/student360') >= 0) {\r\n let portalURL = this.router.url.toLowerCase().replace('/student360', '');\r\n if (portalURL.includes('?')) {\r\n portalURL = portalURL.substring(0, portalURL.indexOf('?'));\r\n }\r\n const parentAssignedPortal = data.filter(a => a.PortalDescription.toLowerCase() == portalURL && a.Disabled == true)[0];\r\n if (parentAssignedPortal != null) {\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n else {\r\n this.setPortalYear();\r\n }\r\n }\r\n })\r\n );\r\n if (this.useParentPortalYear) {\r\n // Get the default year\r\n if (this.userType == 1) {\r\n // Because the header is the the same for parents, students and staff\r\n // invert this option for staff\r\n this.useParentPortalYear = false;\r\n } else {\r\n this.defaultYear = this.yearService.allYears.filter(y => y.Default)[0];\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: unsubscribes to all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n yearChanged(yearId: number) {\r\n // PRE: the year changed from the dropdown\r\n // POST: sets the year and emits a year change\r\n if (this.useYear) {\r\n this.useYear = this.years.find(year => year.Id == yearId);\r\n this.useYearChange.emit(this.useYear);\r\n } else {\r\n const year = this.years.filter(y => y.Id == yearId)[0];\r\n this.yearService.updateStudent360Year(year);\r\n }\r\n if (!this.useStudents) { // Only update enrollment if we are using shared students\r\n this.updateStudentEnrollment();\r\n }\r\n }\r\n\r\n // Methods\r\n selectedLayoutChange() {\r\n const l = this.customLayouts.find(o => o.Id == this.selectedLayoutId);\r\n if (this.customLayoutService.selectedLayoutType.Id != l.LayoutTypeID) {\r\n this.selectedViewTypeId = l.LayoutTypeID;\r\n this.selectedLayoutTypeName = this.ViewlayoutTypes.filter(t => t.Id == this.selectedViewTypeId)[0].Name.replace('Academic History', '');\r\n this.selectedViewTypeChange();\r\n }\r\n this.customLayoutService.selectedLayout = System.copyObject(l, new CustomLayout());\r\n }\r\n\r\n selectedViewTypeChange() {\r\n const l = this.ViewlayoutTypes.find(o => o.Id == this.selectedViewTypeId);\r\n this.selectedLayoutTypeName = this.ViewlayoutTypes.filter(t => t.Id == this.selectedViewTypeId)[0].Name.replace('Academic History', '');\r\n this.customLayoutService.selectedLayoutViewType = System.copyObject(l, new CustomLayoutType());\r\n }\r\n\r\n loadSelectedStudent() {\r\n if (this.showStudent) {\r\n\r\n // If a student ID is provided and we have a list of students, use that\r\n if (this.studentId && this.students) {\r\n const selectedStudent = this.students.find(student => student.Id == this.studentId);\r\n if (selectedStudent) {\r\n this.selectedStudent = selectedStudent;\r\n this.getStudentPhoto();\r\n this.studentService.getStudentEnrollmentYears(this.studentId).pipe(take(1)).subscribe(enrollmentYears => {\r\n this.studentService.enrollmentYears = enrollmentYears;\r\n if (this.selectedYear) {\r\n this.studentService.getStudentEnrollment(this.studentId, this.selectedYear.Id).pipe(take(1)).subscribe(enrollment => {\r\n this.studentEnrollment = enrollment;\r\n this.studentService.studentEnrollment = enrollment;\r\n const url = this.router.url.toLowerCase();\r\n if (url.indexOf('/student360/onlineregistration') < 0 && url.indexOf('/student360/studentfields') < 0 && url.indexOf('registrationenrollment') < 0 && (this.studentEnrollment == null && this.selectedYear.Id > 0)) {\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n this.getYears();\r\n this.studentChange.emit(this.studentId);\r\n // We need to set the portal year manually on V9\r\n if (!this.V10) {\r\n this.setPortalYear();\r\n }\r\n this.getStudentReEnrollStatus();\r\n });\r\n if (this.showAlerts) {\r\n this.getStudentAlerts();\r\n }\r\n }\r\n });\r\n } else {\r\n this.selectedStudent = new Student();\r\n }\r\n }\r\n\r\n // If not student ID is provided or the user has no students, use the student in the student service\r\n else {\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n this.getStudentPhoto();\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n if (this.showAlerts && this.selectedStudent) {\r\n this.getStudentAlerts();\r\n }\r\n this.getYears();\r\n\r\n // We need to set the portal year manually on V9\r\n if (!this.V10) {\r\n this.setPortalYear();\r\n }\r\n this.getStudentReEnrollStatus();\r\n }\r\n }\r\n }\r\n\r\n getStudentAlerts() {\r\n this.subscriptions.push(this.studentService.getAlerts([this.selectedStudent.Id]).subscribe(alerts => {\r\n this.studentAlerts = alerts;\r\n this.studentChange.emit(this.studentId);\r\n }));\r\n }\r\n\r\n getStudentPhoto() {\r\n // We don't always have the photo for students. If the selected student doesnt' have one, then we need to go get it.\r\n if (this.selectedStudent && (this.selectedStudent.Picture == null || this.selectedStudent.Picture.length == 0)) {\r\n const year = this.yearService.defaultYear ? this.yearService.defaultYear : this.yearService.student360Year;\r\n if (year) {\r\n this.studentService.getStudentPicture(this.selectedStudent.Id, year.SiteYearId).subscribe(pic => {\r\n this.selectedStudent.Picture = pic;\r\n });\r\n }\r\n }\r\n }\r\n\r\n getStudentReEnrollStatus() {\r\n this.showReEnrollButton = false;\r\n\r\n if (this.V10 == false && this.userType == 2 && this.selectedStudent != null) {\r\n this.familyRegistrationService.getORYears(this.selectedYear.Id, this.selectedStudent.Id).subscribe(students => {\r\n if (students.length > 0 && this.router.url.toLowerCase() != '/student360/eforms') {\r\n this.showReEnrollButton = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n getYears() {\r\n const url = this.router.url.toLowerCase();\r\n if (!this.allowFutureYears || this.V10) {\r\n if (!this.onlinePayment) {\r\n if (this.router.url.toLowerCase() != '/student360/graduationplan' && this.router.url.toLowerCase() != '/student360/transportation' && this.router.url.toLowerCase() != '/student360/courserequests' && this.router.url.toLowerCase() != '/student360/courserequest' && this.router.url.toLowerCase() != '/student360/onlinepayment') {\r\n if (this.useYear) {\r\n if (this.V10) {\r\n this.years = _.cloneDeep(this.studentService.enrollmentYears);\r\n }\r\n else {\r\n this.years = _.cloneDeep(this.yearService.years.filter(o => o.SchoolID == this.useYear.SchoolID));\r\n if (this.years.length == 0) {\r\n this.years = _.cloneDeep(this.yearService.years);\r\n }\r\n }\r\n } else {\r\n if (this.V10) {\r\n this.years = _.cloneDeep(this.studentService.enrollmentYears);\r\n }\r\n else {\r\n if (this.userService.currentUser.UserType == 1 && this.showYearSelector) {\r\n this.years = _.cloneDeep(this.yearService.years);\r\n }\r\n else if (this.userService.currentUser.UserType == 1 && !this.showYearSelector) {\r\n this.years = _.cloneDeep(this.yearService.yearsForC360);\r\n }\r\n else {\r\n this.years = _.cloneDeep(this.yearService.allYears.filter(o => o.SchoolID == this.yearService.student360Year.SchoolID));\r\n }\r\n }\r\n if (url.indexOf('/student360/teams') > -1 || url.indexOf('/student360/behavior') > -1 || url.indexOf('/student360/awards') > -1) {\r\n const allYear = new Year();\r\n allYear.Description = '(All)';\r\n allYear.Id = -1;\r\n allYear.SchoolID = this.yearService.student360Year.SchoolID;\r\n if (this.years) {\r\n this.years.unshift(allYear);\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.useYear) {\r\n this.years = this.yearService.years.filter(o => o.SchoolID == this.useYear.SchoolID);\r\n } else {\r\n this.years = this.yearService.years.filter(o => o.SchoolID == this.yearService.student360Year.SchoolID);\r\n }\r\n }\r\n }\r\n else {\r\n if (this.useYear) {\r\n this.years = _.cloneDeep(this.yearService.years.filter(o => o.SchoolID == this.useYear.SchoolID && o.EnableOnlinePayment));\r\n } else {\r\n this.years = _.cloneDeep(this.yearService.years.filter(o => o.SchoolID == this.yearService.student360Year.SchoolID && o.EnableOnlinePayment));\r\n }\r\n }\r\n this.setSelectedYear();\r\n }\r\n else {\r\n if (this.studentEnrollment) {\r\n this.yearService.getAllEnrolledYears(this.studentEnrollment.StudentId, this.studentEnrollment.SchoolId).subscribe(results => {\r\n this.years = results;\r\n this.setSelectedYear();\r\n });\r\n }\r\n else if (this.onlineRegistration) {\r\n this.years = _.cloneDeep(this.yearService.years);\r\n this.selectedYear = this.onlineRegistrationService.ORYear;\r\n }\r\n }\r\n }\r\n\r\n setSelectedYear() {\r\n if (this.useYear) {\r\n if (this.showAYLabel) {\r\n this.selectedYear = this.useYear;\r\n }\r\n else {\r\n this.selectedYear = this.years.find(o => o.Id == this.useYear.Id);\r\n if (!this.selectedYear && this.allowFutureYears) {\r\n this.selectedYear = this.years.find(o => o.AYIdentifier == this.useYear.AYIdentifier);\r\n }\r\n // ONE-7485 && Fixed Again for ONE-7727\r\n else if (!this.selectedYear && (this.userService.studentInformationView || this.router.url.indexOf('/classroom360/sendEmail') > -1)) {\r\n this.selectedYear = this.years.filter(o => o.AYIdentifier == this.useYear.AYIdentifier)[0];\r\n this.useYear = this.selectedYear;\r\n }\r\n }\r\n }\r\n else if (this.onlineRegistration) {\r\n this.selectedYear = this.years.find(o => o.Id == this.onlineRegistrationService.ORYear.Id);\r\n } else if (this.useParentPortalYear) {\r\n this.selectedYear = this.yearService.allYears.filter(y => y.Default)[0];\r\n this.updateStudentEnrollment();\r\n }\r\n else if (this.V10 == false && this.courseRequestYear != undefined && this.courseRequestYear != null) {\r\n this.selectedYear = this.courseRequestYear;\r\n }\r\n else {\r\n if (this.yearService.student360Year.Id == -1) {\r\n if (this.V10 && this.years.filter(y => y.Id == -1).length == 0) {\r\n this.selectedYear = this.yearService.years.filter(y => y.Default)[0];\r\n this.yearService.student360Year = this.selectedYear;\r\n }\r\n else if (this.years && this.years.filter(y => y.Id == -1).length == 0) {\r\n this.selectedYear = this.years.filter(y => y.Default)[0];\r\n this.yearService.student360Year = this.selectedYear;\r\n }\r\n }\r\n if (this.V10) {\r\n this.selectedYear = (this.years) ? this.years.filter(y => y.AYIdentifier == this.yearService.student360Year.AYIdentifier)[0] : this.yearService.student360Year;\r\n }\r\n else {\r\n this.selectedYear = this.yearService.student360Year;\r\n }\r\n }\r\n }\r\n\r\n setPortalYear() {\r\n // NOTE: V9 only\r\n if (this.student360Service.parentAssignedPortals != null) {\r\n let currentUrl = this.router.url;\r\n if (currentUrl.toLowerCase() != '/student360/graduationplan' &&\r\n currentUrl.toLowerCase() != '/student360/transportation' &&\r\n currentUrl.toLowerCase() != '/student360/onlineregistration' &&\r\n currentUrl.toLowerCase() != '/student360/courserequests' &&\r\n currentUrl.toLowerCase() != '/student360/courserequest' &&\r\n currentUrl.toLowerCase() != '/student360/onlinepayment') {\r\n if (currentUrl.toLowerCase() == '/student360/setnotificationpreferences') {\r\n currentUrl = '/student360/notificationpreferences';\r\n }\r\n\r\n const academicYearAttention = this.student360Service.parentAssignedPortals.filter(o => o.PortalDescription != null && o.PortalDescription != '' && currentUrl.toLowerCase().includes('/student360' + o.PortalDescription.toLowerCase()) && o.Disabled == false)[0];\r\n if (academicYearAttention != undefined && this.years) {\r\n this.years.forEach((element, i) => {\r\n switch (element.Status) {\r\n case 0:\r\n if (academicYearAttention.ShowonPastYear == false) {\r\n this.years[i].Disabled = true;\r\n }\r\n break;\r\n case 1:\r\n if (academicYearAttention.ShowonCurrentYear == false) {\r\n this.years[i].Disabled = true;\r\n }\r\n break;\r\n case 2:\r\n if (academicYearAttention.ShowonFutureYear == false) {\r\n this.years[i].Disabled = true;\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n } else if (currentUrl.toLowerCase() == '/student360/onlinepayment') {\r\n this.years.forEach((element) => {\r\n if (element.EnableOnlinePayment == false) {\r\n element.Disabled = true;\r\n }\r\n if (element.EnableOnlinePayment == true) {\r\n const paymentYear = this.student360Service.parentAssignedPortals.filter(x => x.PortalName == 'Meal Service' || x.PortalName == 'Fees & Billing')[0];\r\n switch (element.Status) {\r\n case 0:\r\n if (paymentYear.ShowonPastYear == false) {\r\n element.Disabled = true;\r\n }\r\n break;\r\n case 1:\r\n if (paymentYear.ShowonCurrentYear == false) {\r\n element.Disabled = true;\r\n }\r\n break;\r\n case 2:\r\n if (paymentYear.ShowonFutureYear == false) {\r\n element.Disabled = true;\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n getStudentSuffix(): string {\r\n const suffix = this.selectedStudent.Suffix;\r\n if (suffix != null && suffix.length > 0) {\r\n const numeralMatch = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$|^\\d+$/;\r\n if (suffix.match(numeralMatch)) {\r\n return ' ' + suffix;\r\n } else {\r\n return ', ' + suffix;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n studentImageClicked(image) {\r\n // Open a modal with a larger student image\r\n this.dialog.open(StudentImageDialogComponent, { data: { studentImage: image }, disableClose: true, autoFocus: false });\r\n }\r\n\r\n onRightClick($event: MouseEvent) {\r\n return false;\r\n }\r\n\r\n updateStudentEnrollment() {\r\n if (this.selectedStudent && this.selectedYear && this.selectedYear.Id > 0) {\r\n this.studentService.getStudentEnrollment(this.selectedStudent.Id, this.selectedYear.Id).subscribe(enrollment => {\r\n this.studentEnrollment = enrollment;\r\n if (!this.useParentPortalYear) { // if using defaultParentPortalYear we dont want to update the enrollment in the service\r\n this.studentService.studentEnrollment = enrollment;\r\n }\r\n // We need to set the portal year manually on V9\r\n if (!this.V10) {\r\n this.setPortalYear();\r\n }\r\n this.getStudentReEnrollStatus();\r\n });\r\n }\r\n }\r\n\r\n reEnrollStudentClick() {\r\n this.familyRegistrationService.getORYears(0, this.selectedStudent.Id).subscribe(reEnrollYears => {\r\n this.ReEnrollYears = reEnrollYears;\r\n if (this.ReEnrollYears.length > 0) {\r\n this.frYearsDialogRef = this.dialog.open(NewFamilyRegistrationYearSelectionComponent, {\r\n disableClose: true,\r\n maxWidth: '500px',\r\n data: {\r\n years: this.ReEnrollYears,\r\n reEnrollStudent: true,\r\n familyId: this.selectedStudent.FamilyId\r\n }\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-student-image-dialog',\r\n templateUrl: './student-image-dialog.component.html',\r\n styleUrls: ['./student-image-dialog.component.css']\r\n})\r\nexport class StudentImageDialogComponent implements OnInit {\r\n\r\n image: any;\r\n constructor(@Inject(MAT_DIALOG_DATA) private data: any, private dialogRef: MatDialogRef) { }\r\n\r\n ngOnInit() {\r\n this.image = this.data.studentImage;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n onRightClick($event: MouseEvent) {\r\n return false;\r\n }\r\n}\r\n","\r\n\r\n \r\n\r\n\r\n\r\n\r\n \r\n\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[student-information]'\r\n})\r\nexport class StudentInformationDirective {\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n\r\n}\r\n","import { Component, ComponentFactoryResolver, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { SingleStudentComponent } from '../../../management360/program-and-service/single-student/single-student.component';\r\nimport { AnnouncementComponent } from '../../../shared-modules/announcement/announcement.component';\r\nimport { SendEmailComponent } from '../../../shared-modules/send-email/send-email.component';\r\nimport { AcademicHistoryComponent } from '../../../student360/academic-history/academic-history.component';\r\nimport { AssessmentComponent } from '../../../student360/assessment/assessment.component';\r\nimport { AssignmentComponent } from '../../../student360/assignment/assignment.component';\r\nimport { AttendanceComponent } from '../../../student360/attendance/attendance.component';\r\nimport { AwardsComponent } from '../../../student360/awards/awards.component';\r\nimport { CalendarComponent } from '../../../student360/calendar/calendar.component';\r\nimport { DisciplineComponent } from '../../../student360/discipline/discipline.component';\r\nimport { EFormsComponent } from '../../../student360/e-forms/e-forms.component';\r\nimport { FeesAndBillingComponent } from '../../../student360/fees-and-billing/fees-and-billing.component';\r\nimport { GradesComponent } from '../../../student360/grades/grades.component';\r\nimport { GraduationPlanComponent } from '../../../student360/graduation-plan/graduation-plan.component';\r\nimport { HealthComponent } from '../../../student360/health/health.component';\r\nimport { IepComponent } from '../../../student360/iep/iep.component';\r\nimport { MealServiceComponent } from '../../../student360/meal-service/meal-service.component';\r\nimport { PortfolioComponent } from '../../../student360/portfolio/portfolio.component';\r\nimport { ProgramsAndServicesComponent } from '../../../student360/programs-and-services/programs-and-services.component';\r\nimport { ScheduleHistoryComponent } from '../../../student360/schedule-history/schedule-history.component';\r\nimport { StudentDetailsComponent } from '../../../student360/student-details/student-details.component';\r\nimport { StudentDigitalContentComponent } from '../../../student360/student-digital-content/student-digital-content.component';\r\nimport { StudentDocumentsComponent } from '../../../student360/student-documents/student-documents.component';\r\nimport { StudentFieldsComponent } from '../../../student360/student-fields/student-fields.component';\r\nimport { StudentScheduleComponent } from '../../../student360/student-schedule/student-schedule.component';\r\nimport { StudentSummaryComponent } from '../../../student360/student-summary/student-summary.component';\r\nimport { TeamsComponent } from '../../../student360/teams/teams.component';\r\nimport { TransportationComponent } from '../../../student360/transportation/transportation.component';\r\nimport { RouteInfo } from '../../routeInfo';\r\nimport { SharedService } from '../../shared.service';\r\nimport { SpinnerService } from '../../spinner/spinner.service';\r\nimport { StudentNotesSharedComponent } from '../../student-notes-shared/student-notes-shared.component';\r\nimport { UserService } from '../../user/user.service';\r\nimport { StudentInformationDirective } from '../student-information.directive';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-student-info-portal',\r\n templateUrl: './student-info-portal.component.html',\r\n})\r\n\r\nexport class StudentInfoPortalComponent implements OnDestroy {\r\n\r\n portalName: string = '';\r\n studentViewRouteSubscription: Subscription;\r\n @ViewChild(StudentInformationDirective, { static: true }) studentInformation: StudentInformationDirective;\r\n\r\n @ViewChild('StudentInfo', { read: ElementRef, static: true }) elementRef: ElementRef;\r\n\r\n private _hasProgramAndServicePermission: any;\r\n public get hasProgramAndServicePermission(): any {\r\n return this._hasProgramAndServicePermission;\r\n }\r\n public set hasProgramAndServicePermission(value: any) {\r\n this._hasProgramAndServicePermission = value;\r\n }\r\n\r\n constructor(\r\n private dialog: MatDialogRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private userService: UserService,\r\n private sharedService: SharedService,\r\n private spinnerService: SpinnerService,\r\n private router: Router,\r\n ) {\r\n this.studentViewRouteSubscription = this.userService.observableStudentInfoRouteStream$.subscribe((route) => {\r\n this.dialog.close();\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n showPortal(portalName: string) {\r\n let componentFactory: any;\r\n switch (portalName) {\r\n case 'Academic History':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(AcademicHistoryComponent);\r\n break;\r\n case 'Activities and Teams':\r\n case 'Activities':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(TeamsComponent);\r\n break;\r\n case 'Announcements':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(AnnouncementComponent);\r\n break;\r\n case 'Assessments':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(AssessmentComponent);\r\n break;\r\n case 'Assignments':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(AssignmentComponent);\r\n break;\r\n case 'Attendance':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(AttendanceComponent);\r\n break;\r\n case 'Calendar':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(CalendarComponent);\r\n break;\r\n case 'Behavior':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(DisciplineComponent);\r\n break;\r\n case 'Documents':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(StudentDocumentsComponent);\r\n break;\r\n case 'Fees & Billing':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(FeesAndBillingComponent);\r\n break;\r\n case 'Grades':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(GradesComponent);\r\n break;\r\n case 'Graduation Plan Progress':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(GraduationPlanComponent);\r\n break;\r\n case 'Health':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(HealthComponent);\r\n break;\r\n case 'Meal Service':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(MealServiceComponent);\r\n break;\r\n case 'Send Email':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(SendEmailComponent);\r\n break;\r\n case 'Student Details':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(StudentDetailsComponent);\r\n break;\r\n case 'Student Digital Content':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(StudentDigitalContentComponent);\r\n break;\r\n case 'Student Portfolio':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(PortfolioComponent);\r\n break;\r\n case 'Student Schedule':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(StudentScheduleComponent);\r\n break;\r\n case 'Student Summary':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(StudentSummaryComponent);\r\n break;\r\n case 'Transportation':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(TransportationComponent);\r\n break;\r\n case 'Awards':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(AwardsComponent);\r\n break;\r\n case 'Programs and Services':\r\n if (this.hasProgramAndServicePermission) {\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(SingleStudentComponent);\r\n } else {\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(ProgramsAndServicesComponent);\r\n }\r\n break;\r\n case 'Monthly Lunch Menu':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(MealServiceComponent);\r\n break;\r\n case 'Student Fields':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(StudentFieldsComponent);\r\n break;\r\n case 'Individualized Education Program':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(IepComponent);\r\n break;\r\n case 'Student Notes':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(StudentNotesSharedComponent);\r\n break;\r\n case 'e-Forms':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(EFormsComponent);\r\n break;\r\n case 'Schedule History':\r\n componentFactory = this.componentFactoryResolver.resolveComponentFactory(ScheduleHistoryComponent);\r\n break;\r\n }\r\n\r\n const viewContainerRef = this.studentInformation.viewContainerRef;\r\n viewContainerRef.clear();\r\n viewContainerRef.createComponent(componentFactory);\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.parentElement.firstChild.style.display = 'flex';\r\n this.elementRef.nativeElement.parentElement.firstChild.style.flexDirection = 'column';\r\n this.elementRef.nativeElement.parentElement.firstChild.style.flexGrow = '1';\r\n }, 0);\r\n }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n printClick() {\r\n const pagePrintStyle: string = RouteInfo.getPagePrintStyle(this.router.url);\r\n const styleURLs: string[] = ['./assets/styles/print-styles.css'];\r\n\r\n if (pagePrintStyle) {\r\n styleURLs.push(pagePrintStyle);\r\n }\r\n\r\n this.spinnerService.showSpinner = true;\r\n const dialogRefId: string = this.elementRef.nativeElement.parentElement.parentElement.parentElement.id != undefined ? this.elementRef.nativeElement.parentElement.parentElement.parentElement.id.toString() : '';\r\n\r\n // Timeout is needed to allow the spinner to show before the print preview load takes priority\r\n setTimeout(() => {\r\n setTimeout(() => {\r\n this.sharedService.pageToPdfTrigger = !this.sharedService.pageToPdfTrigger;\r\n }, 0);\r\n this.spinnerService.showSpinner = false;\r\n }, 500);\r\n\r\n }\r\n}\r\n","
\r\n
\r\n Student Information View\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
","
\r\n \r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { StudentService } from '../student/student.service';\r\nimport { StudentInfoPortalComponent } from './student-info-portal/student-info-portal.component';\r\nimport { UserService } from '../user/user.service';\r\nimport { Portal } from '../portal.model';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { MealServiceService } from '../../student360/meal-service/meal-service.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { MyReportsComponent } from '../../shared-modules/reporting/my-reports/my-reports.component';\r\nimport { ReportingService } from '../../shared-modules/reporting/reporting.service';\r\nimport { ReportingComponent } from '../../shared-modules/reporting/reporting.component';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { YearService } from '../year/year.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-student-information',\r\n templateUrl: './student-information.component.html'\r\n})\r\n\r\nexport class StudentInformationComponent implements OnDestroy {\r\n\r\n student: any;\r\n students: any = [];\r\n staffPortals: Portal[];\r\n portalDialog: MatDialogRef;\r\n studentViewRouteSubscription: Subscription;\r\n selectedStudentSubscription: Subscription;\r\n myReportsDialogRef: MatDialogRef;\r\n portalName = '';\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private studentService: StudentService,\r\n private classroom360Service: Classroom360Service,\r\n private userService: UserService,\r\n private mealServiceService: MealServiceService,\r\n private reportService: ReportingService,\r\n private yearService: YearService,\r\n private loginService: LoginService\r\n\r\n ) {\r\n this.studentViewRouteSubscription = this.userService.observableStudentInfoRouteStream$.subscribe((route) => {\r\n const portal = this.staffPortals.filter(p => p.PortalDescription == route.replace('/student360', ''))[0];\r\n if (portal != undefined || route.indexOf('sendEmail') > -1) {\r\n if (route.indexOf('sendEmail') > -1) {\r\n this.portalClick('Send Email');\r\n }\r\n else {\r\n this.portalClick(portal.PortalName);\r\n }\r\n }\r\n });\r\n\r\n this.selectedStudentSubscription = this.studentService.selectedStudentStream$.subscribe(studentId => {\r\n if (this.portalName != '') {\r\n if (studentId > 0) {\r\n this.portalClick(this.portalName);\r\n this.selectedStudentSubscription.unsubscribe();\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n initMenu() {\r\n this.userService.studentInformationView = true;\r\n this.studentService.getStudent(this.student.Id).subscribe(student => {\r\n const studentIndex = this.students.findIndex(x => x.Id == student.Id);\r\n this.studentService.updateStudents(this.students, studentIndex);\r\n if (this.portalName == '') {\r\n this.getStaffPortals();\r\n }\r\n });\r\n }\r\n\r\n portalClick(portalName: string) {\r\n this.userService.selectedStudentInfoPortal = portalName;\r\n\r\n // My Reports\r\n if (portalName == 'My Reports') {\r\n this.reportService.isReportsMenu = true;\r\n\r\n const dialogBox = this.dialog.open(ReportingComponent, {\r\n disableClose: true,\r\n // hasBackdrop: false,\r\n // panelClass: 'disableModalStyle'\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(course => {\r\n subscription.unsubscribe();\r\n return;\r\n });\r\n }\r\n else {\r\n this.studentService.getStudent((this.studentService.selectedStudent && this.studentService.selectedStudent.Id) ? (this.studentService.selectedStudent.Id) : (this.student.Id)).subscribe(student => {\r\n if (!this.studentService.selectedStudent) {\r\n this.studentService.selectedStudent = this.student;\r\n }\r\n this.studentService.selectedStudent.Picture = student.Picture;\r\n });\r\n this.portalDialog = this.dialog.open(StudentInfoPortalComponent, {\r\n panelClass: 'tyl-mat-dialog', width: '100%', minWidth: '100%', height: '100%', disableClose: true\r\n });\r\n if (portalName == 'Monthly Lunch Menu') {\r\n this.mealServiceService.selectionIndex = 1;\r\n }\r\n if (portalName == 'Meal Service') {\r\n this.mealServiceService.selectionIndex = 0;\r\n }\r\n if (portalName == 'Programs and Services') {\r\n this.userService.getUserPermissions(\r\n this.yearService.defaultYear.Id,\r\n this.yearService.defaultYear.SchoolID\r\n ).subscribe(permissions => {\r\n const userPermissions = permissions;\r\n // Determining if the user can edit program\r\n const hasPSPermission = userPermissions.find(permission => permission.PermissionName == 'Maintain ALL Student Programs and Services' || permission.PermissionName == 'View ALL Student Programs and Services');\r\n if (this.loginService.LoginSettings.ActivateProgramAndService360 && hasPSPermission) {\r\n this.portalDialog.componentInstance.hasProgramAndServicePermission = true;\r\n } else {\r\n this.portalDialog.componentInstance.hasProgramAndServicePermission = false;\r\n }\r\n this.portalDialog.componentInstance.showPortal(portalName);\r\n });\r\n }\r\n else {\r\n this.portalDialog.componentInstance.showPortal(portalName);\r\n }\r\n\r\n this.portalDialog.afterClosed().subscribe(() => {\r\n this.student = this.studentService.selectedStudent;\r\n if (this.portalName != '') {\r\n this.closeClick();\r\n }\r\n });\r\n } // end if My Reports\r\n }\r\n\r\n getStaffPortals() {\r\n this.classroom360Service.getStaffAssignedPortals().subscribe(data => {\r\n this.staffPortals = data.filter(portal => (portal.ParentModule == '/student360' || portal.PortalName == 'Send Email' || (portal.PortalName == 'Student Notes' && portal.GroupName != 'Tools')) && portal.ShowAsMenu && portal.PortalName != 'Student Summary' && portal.PortalDescription != '/eFormsStaff/:staffPage' && portal.PortalDescription != '/scheduleHistory/multipleStudent');\r\n });\r\n }\r\n\r\n closeClick() {\r\n this.userService.selectedStudentInfoPortal = undefined;\r\n this.userService.studentInformationView = false;\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'student-notes-shared',\r\n templateUrl: './student-notes-shared.component.html',\r\n styleUrls: ['./student-notes-shared.component.css']\r\n})\r\nexport class StudentNotesSharedComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
","
\r\n \r\n Selected Students\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n Student #\r\n \r\n \r\n {{student.StudentNumber}}\r\n \r\n\r\n \r\n \r\n \r\n Student Name\r\n \r\n \r\n \r\n {{student.fullName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n {{student.EnrollmentStatus}}\r\n \r\n\r\n \r\n \r\n \r\n Grade\r\n \r\n \r\n {{student.Grade}}\r\n \r\n\r\n \r\n \r\n \r\n School\r\n \r\n \r\n {{student.EnrollmentSchool}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n \r\n\r\n","import {AfterViewInit, Component, Inject, OnInit, ViewChild} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {Student} from '../../student/student.model';\r\nimport {UserPreferencesService} from '../../user-preferences/user-preferences.service';\r\nimport {TylerMatTableDataSource} from '../../angular-material/extended.class';\r\nimport {MatPaginator} from '@angular/material/paginator';\r\nimport {MatSort} from '@angular/material/sort';\r\nimport { cloneDeep } from 'lodash';\r\n@Component({\r\n selector: 'app-student-list-modal',\r\n templateUrl: './student-list-modal.component.html',\r\n styleUrls: ['./student-list-modal.component.css'],\r\n})\r\nexport class StudentListModalComponent implements OnInit, AfterViewInit {\r\n students: Student[] = [];\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n displayedColumns: string[] = ['StudentNumber', 'fullName', 'EnrollmentStatus', 'Grade', 'EnrollmentSchool' ];\r\n angularMatData = new TylerMatTableDataSource();\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: Student[],\r\n private userPreferences: UserPreferencesService\r\n ) {\r\n this.students = cloneDeep(this.data);\r\n if (this.userPreferences.generalPreferences == null || this.userPreferences.generalPreferences.StudentNameFormat == 'LNF') {\r\n this.sortByLastName();\r\n } else {\r\n this.sortByFirstName();\r\n }\r\n this.angularMatData.data = this.students;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.angularMatData.paginator = this.paginator;\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n closeClick(message: string) {\r\n this.dialogRef.close(message);\r\n }\r\n\r\n sortByFirstName() {\r\n this.students = this.students.sort(function (a, b) {\r\n if (a.FirstName < b.FirstName) {\r\n return -1;\r\n }\r\n if (a.FirstName > b.FirstName) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n sortByLastName() {\r\n this.students = this.students.sort(function (a, b) {\r\n if (a.LastName < b.LastName) {\r\n return -1;\r\n }\r\n if (a.LastName > b.LastName) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n}\r\n","import { DataQuery } from '../../classroom360/data-query/data-query.model';\r\nimport { StudentList } from '../../classroom360/student-lists/student-list.model';\r\n\r\nexport class StudentSearchCriteria {\r\n\r\n // Constructors\r\n constructor(\r\n yearId: number,\r\n studentNumber: string,\r\n firstName: string,\r\n lastName: string,\r\n schoolId: string,\r\n status: string,\r\n viewAllStudentInThisSchoolYear = false,\r\n courseId = '0',\r\n listId = -1,\r\n enrollmentDate = null,\r\n getStudentHomerooms = false,\r\n overrideIncludeAlertPreference = false\r\n ) {\r\n this.yearId = yearId;\r\n this.studentNumber = studentNumber;\r\n this.lastName = lastName;\r\n this.firstName = firstName;\r\n this.schoolId = schoolId;\r\n this.status = status;\r\n this.viewAllStudentInThisSchoolYear = viewAllStudentInThisSchoolYear;\r\n this.courseId = courseId;\r\n this.listId = listId;\r\n this.enrollmentDate = enrollmentDate;\r\n this.getStudentHomerooms = getStudentHomerooms;\r\n this.overrideIncludeAlertPreference = overrideIncludeAlertPreference;\r\n }\r\n\r\n // Server Properties\r\n public yearId: number;\r\n public studentNumber: string;\r\n public lastName: string;\r\n public firstName: string;\r\n public schoolId: string; // NOTE: the application treats this like a number, but it's really a string on the DTO\r\n public status: string;\r\n public viewAllStudentInThisSchoolYear = false;\r\n public courseId = '';\r\n public listId = -1;\r\n public enrollmentDate = null;\r\n public getStudentHomerooms = false;\r\n public overrideIncludeAlertPreference = false;\r\n\r\n // Local Properties\r\n currentQuery: DataQuery = null;\r\n studentList: StudentList = null;\r\n}\r\n","import {Directive} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[regex]'\r\n})\r\nexport class RegexDirective {\r\n\r\n static Contains(value: string, contains: string): boolean {\r\n // Returns a boolean\r\n const regExp = new RegExp(contains, 'g');\r\n return regExp.test(value);\r\n }\r\n static EndsWith(value: string, endsWith: string): boolean {\r\n // Returns a boolean\r\n const regExp = new RegExp(endsWith + '$', 'g');\r\n return regExp.test(value);\r\n }\r\n static StartsWith(value: string, startsWith: string): boolean {\r\n // Returns a boolean\r\n const regExp = new RegExp('^' + startsWith, 'g');\r\n return regExp.test(value);\r\n }\r\n static RegExBuilder(value: string, operator: string): RegExp {\r\n let regExp;\r\n switch (operator) {\r\n case 'startsWith':\r\n regExp = new RegExp('^' + value, 'g');\r\n break;\r\n case 'contains':\r\n regExp = new RegExp(value, 'g');\r\n break;\r\n case 'endsWith':\r\n regExp = new RegExp(value + '$', 'g');\r\n break;\r\n case 'doesNotStartWith':\r\n regExp = new RegExp('^(?!' + value + ').+', 'g');\r\n break;\r\n case 'doesNotEndWith':\r\n regExp = new RegExp('.+(?\r\n
\r\n\t
\r\n\t\tStudent Filters\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\tReset\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{recentFilter.QueryName}}\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\tConditions (Rows with the same group letter are joined with AND. Rows with different group letters are joined with OR.)\r\n\t
\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\t\t
\r\n\t\t\tSQL Translation\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{filterTranslation}}\r\n\t\t
\r\n\t
\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","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { TylerMatTableDataSource } from '../../angular-material/extended.class';\r\nimport { DataQueryService } from '../../../classroom360/data-query/data-query.service';\r\nimport { DataQueryFieldFilter } from '../../../classroom360/data-query/data-query-field-filter.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { DataQuery } from '../../../classroom360/data-query/data-query.model';\r\nimport { DataQueryField } from '../../../classroom360/data-query/data-query-field.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LookupService } from '../../lookup/lookup.service';\r\nimport { YearService } from '../../year/year.service';\r\nimport { GeneralPreferences } from '../../user-preferences/general-preferences.model';\r\nimport { UserPreferencesService } from '../../user-preferences/user-preferences.service';\r\nimport { AdvancedFilterComponent } from '../../advanced-filter/advanced-filter.component';\r\n\r\n@Component({\r\n selector: 'app-advanced-student-search',\r\n templateUrl: './advanced-student-search.component.html',\r\n styleUrls: ['./advanced-student-search.component.css']\r\n})\r\nexport class AdvancedStudentSearchComponent extends AdvancedFilterComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n initialStudentNumber = '';\r\n initialFirstName = '';\r\n initialLastName = '';\r\n initialGrade = '';\r\n initialEnrollment = '';\r\n initialEnrollDate = '';\r\n initialDOB = '';\r\n initialSchool = '';\r\n initialStatus = '';\r\n\r\n // Properties\r\n tableData = new TylerMatTableDataSource();\r\n subscriptions: Subscription[] = [];\r\n // information: DataQueryInformation;\r\n // preferences: DataQueryPreferences;\r\n generalPreferences: GeneralPreferences;\r\n allFilters: DataQueryFieldFilter[] = [];\r\n V10: boolean;\r\n\r\n // Class Functions\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n dialogBox: MatDialogRef,\r\n dataQueryService: DataQueryService,\r\n loginService: LoginService,\r\n lookupService: LookupService,\r\n yearService: YearService,\r\n userPreferencesService: UserPreferencesService,\r\n dialog: MatDialog\r\n ) {\r\n super(dataQueryService, userPreferencesService, loginService, dialogBox, lookupService, yearService, dialog);\r\n }\r\n\r\n // Event Functions\r\n addRosterFilter() {\r\n // PRE: the add roster filter button is clicked\r\n // POST: opens a dialog to select a number of courses. Then, adds those courses as a filter.\r\n this.dataQueryService.addRosterFilter(null, () => {\r\n\r\n // Re-establishing filter fields\r\n this.setAllFilters();\r\n\r\n // Setting table data\r\n this.tableData.data = this.allFilters;\r\n });\r\n }\r\n\r\n // Overridden Methods\r\n initialize() {\r\n // POST: initializes this component for staff search\r\n\r\n // Setting the injected properties\r\n if (this.data) {\r\n this.initialStudentNumber = this.data.initialStudentNumber;\r\n this.initialFirstName = this.data.initialFirstName;\r\n this.initialLastName = this.data.initialLastName;\r\n this.initialGrade = this.data.initialGrade;\r\n this.initialEnrollment = this.data.initialEnrollment;\r\n this.initialEnrollDate = this.data.initialEnrollDate;\r\n this.initialDOB = this.data.initialDOB;\r\n this.initialSchool = this.data.initialSchool;\r\n this.initialStatus = this.data.initialStatus;\r\n }\r\n\r\n // Undoing our current query to ensure no crossover from elsewhere\r\n if (!this.dataQueryService.isStudentSearch) {\r\n this.dataQueryService.currentQuery = new DataQuery();\r\n this.dataQueryService.isStudentSearch = true;\r\n }\r\n }\r\n\r\n setValueSwitch(field: DataQueryField, filter: DataQueryFieldFilter, updateUsing: boolean) {\r\n // POST: sets the values for the student search filters\r\n if (updateUsing) {\r\n filter.UseFilterForStudentSearch = false;\r\n }\r\n let val = '';\r\n\r\n // Updating based on grid filters (these do not take priority, so they come first)\r\n switch (field.Alias) {\r\n case 'Student ID':\r\n case 'Student Number':\r\n filter.Value = this.initialStudentNumber;\r\n break;\r\n case 'Name - First':\r\n case 'First Name':\r\n filter.Value = this.initialFirstName;\r\n break;\r\n case 'Name - Last':\r\n case 'Last Name':\r\n filter.Value = this.initialLastName;\r\n break;\r\n case 'Birth Date':\r\n case 'DOB':\r\n if (this.initialDOB) {\r\n const dateOfBirth = new Date(this.initialDOB);\r\n if (dateOfBirth.toString() != 'Invalid Date') {\r\n filter.Value = dateOfBirth.toString();\r\n }\r\n }\r\n break;\r\n case 'Grade':\r\n filter.Value = this.initialGrade;\r\n break;\r\n case 'School':\r\n filter.Value = this.initialSchool;\r\n break;\r\n case 'Enrollment Date':\r\n if (this.initialEnrollDate) {\r\n const enrollmentDate = new Date(this.initialEnrollDate);\r\n if (enrollmentDate.toString() != 'Invalid Date') {\r\n filter.Value = enrollmentDate.toString();\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Updating based on search criteria (these take priority, so they come last)\r\n if (this.loginService.LoginSettings.V10) {\r\n if (field.FieldName == 'Student_ID') {\r\n field.Alias = 'StudentId';\r\n }\r\n switch (field.FieldName.toLowerCase()) {\r\n case 'student_number':\r\n if (this.dataQueryService.studentSearchFilters.StudentNumber) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.StudentNumber;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'student_id':\r\n field.Alias = 'StudentId';\r\n filter.hidden = true;\r\n break;\r\n case 'first_name':\r\n filter.Operator = 'Starts With';\r\n if (this.dataQueryService.studentSearchFilters.FirstName) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.FirstName;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'last_name':\r\n filter.Operator = 'Starts With';\r\n if (this.dataQueryService.studentSearchFilters.LastName) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.LastName;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'grade_level':\r\n field.Alias = 'Grade';\r\n if (this.dataQueryService.studentSearchFilters.Grade) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.Grade;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'school_name':\r\n field.Alias = 'School';\r\n val = this.dataQueryService.studentSearchFilters.EnrollmentSchool == null ? '' : this.dataQueryService.studentSearchFilters.EnrollmentSchool;\r\n if (val == '') {\r\n val = this.dataQueryService.studentSearchFilters.ddlSchool == null ? '' : this.dataQueryService.studentSearchFilters.ddlSchool;\r\n }\r\n\r\n if (val != 'All' && val != '(All)' && val != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n filter.Value = val;\r\n }\r\n\r\n break;\r\n case 'primary':\r\n field.Alias = 'Enrollment';\r\n val = 'All';\r\n if (this.dataQueryService.studentSearchFilters.Enrollment) {\r\n val = this.dataQueryService.studentSearchFilters.Enrollment;\r\n }\r\n if (val != 'All' && val != '(All)' && val != '*' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n filter.Value = val;\r\n }\r\n\r\n break;\r\n case 'entry_date':\r\n field.Alias = 'Enrollment Date';\r\n if (this.dataQueryService.studentSearchFilters.EnrollmentDate) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.EnrollmentDate;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'enrollment_status':\r\n field.Alias = 'Status';\r\n val = this.dataQueryService.studentSearchFilters.EnrollmentStatus == null ? '' : this.dataQueryService.studentSearchFilters.EnrollmentStatus;\r\n if (val == '') {\r\n val = this.dataQueryService.studentSearchFilters.rbStatus == null ? '' : this.dataQueryService.studentSearchFilters.rbStatus;\r\n }\r\n if (val != 'All' && val != '(All)' && val != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n filter.Value = val;\r\n }\r\n break;\r\n case 'dob':\r\n if (this.dataQueryService.studentSearchFilters.DOB) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.DOB;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n }\r\n } else {\r\n switch (field.DisplayName) {\r\n case 'lngStudentId':\r\n case 'Primary':\r\n filter.hidden = true;\r\n break;\r\n case 'Student ID':\r\n if (this.dataQueryService.studentSearchFilters.StudentNumber) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.StudentNumber;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'Name - First':\r\n if (updateUsing || !filter.Operator || filter.Operator == '') {\r\n filter.Operator = 'Starts With';\r\n }\r\n if (this.dataQueryService.studentSearchFilters.FirstName) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.FirstName;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'Name - Last':\r\n if (updateUsing || !filter.Operator || filter.Operator == '') {\r\n filter.Operator = 'Starts With';\r\n }\r\n if (this.dataQueryService.studentSearchFilters.LastName) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.LastName;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'Grade':\r\n if (this.dataQueryService.studentSearchFilters.Grade) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.Grade;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'Primary Enrollment Site Name':\r\n val = this.dataQueryService.studentSearchFilters.EnrollmentSchool == null ? '' : this.dataQueryService.studentSearchFilters.EnrollmentSchool;\r\n if (val == '') {\r\n val = this.dataQueryService.studentSearchFilters.ddlSchool == null ? '' : this.dataQueryService.studentSearchFilters.ddlSchool;\r\n }\r\n if (val != 'All' && val != '(All)' && val != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n filter.Value = val;\r\n }\r\n break;\r\n case 'Enrollment Date':\r\n if (this.dataQueryService.studentSearchFilters.EnrollmentDate) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.EnrollmentDate;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n case 'Enrollment Status':\r\n val = this.dataQueryService.studentSearchFilters.EnrollmentStatus == null ? '' : this.dataQueryService.studentSearchFilters.EnrollmentStatus;\r\n if (val == '') {\r\n val = this.dataQueryService.studentSearchFilters.rbStatus == null ? '' : this.dataQueryService.studentSearchFilters.rbStatus;\r\n }\r\n if (val != 'All' && val != '(All)' && val != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n filter.Value = val;\r\n }\r\n if (!filter.Value) {\r\n filter.Value = 'All';\r\n }\r\n break;\r\n case 'Birth Date':\r\n if (this.dataQueryService.studentSearchFilters.DOB) {\r\n filter.Value = this.dataQueryService.studentSearchFilters.DOB;\r\n }\r\n if (filter.Value && filter.Value != '' && updateUsing) {\r\n filter.UseFilterForStudentSearch = true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setFilterPropertiesSwitch(field: DataQueryField, filter: DataQueryFieldFilter) {\r\n // POST: sets the filter's properties\r\n filter.Operator = '=';\r\n filter.Value = '';\r\n filter.Value2 = '';\r\n filter.Group = 'A';\r\n filter.DisplayMenu = false;\r\n filter.UseCurrentDate1 = false;\r\n filter.UseCurrentDate2 = false;\r\n filter.UseFilterForStudentSearch = true;\r\n filter.IsStudentFilter = false;\r\n filter.StudentFilterId = 0;\r\n filter.ApplyToAll = false;\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { UserService } from '../../user/user.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-student-search-warning',\r\n templateUrl: './student-search-warning.component.html',\r\n styles: []\r\n})\r\nexport class StudentSearchWarningComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n private userService: UserService,\r\n private router: Router,\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n okClick() {\r\n if (sessionStorage.getItem('loginFromLegacy') != null || sessionStorage.getItem('loginFromLegacy') == '1') {\r\n window.close();\r\n } else {\r\n this.router.navigateByUrl('/login');\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 0);\r\n }\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n}\r\n","
No Student Selected
\r\n\r\n\r\n
No information can be displayed because a student has not been selected.
\r\n
Select OK to log out.
\r\n
Select Cancel to return to the Student Search.
\r\n
\r\n\r\n\r\n \r\n","\r\n
\r\n

Student Search

\r\n

Student Search and Select

\r\n
\r\n {{headerMessage}}\r\n
\r\n
\r\n

{{headerMessage}}

\r\n
\r\n
\r\n
\r\n Searching students available in Academic Year\r\n {{currentYear.Description}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n (All)\r\n \r\n \r\n {{school.SchoolName}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n (All)\r\n Active\r\n Inactive\r\n Projected\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n None\r\n \r\n \r\n {{recentFilter.QueryName}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n None\r\n \r\n \r\n {{studentList.Name}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n {{col.name}}\r\n \r\n \r\n {{col.name}}\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Student #\r\n \r\n \r\n \r\n \r\n {{element.StudentNumber}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n First Name\r\n \r\n \r\n \r\n {{element.FirstName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Last Name\r\n \r\n \r\n \r\n {{element.LastName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Alerts\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Grade\r\n \r\n \r\n \r\n {{element.Grade}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Enrollment\r\n \r\n \r\n \r\n {{element.Enrollment}}\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n Enroll Date\r\n \r\n \r\n \r\n {{element.EnrollmentDateAsDate | date:'MM/dd/yyyy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Birth Date\r\n \r\n \r\n \r\n {{element.DateOfBirth | date:'MM/dd/yyyy'}}\r\n \r\n \r\n\r\n \r\n \r\n Birth Date\r\n \r\n \r\n \r\n {{element.DateOfBirthAsDate | date:'MM/dd/yyyy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n School\r\n \r\n \r\n \r\n \r\n {{element.EnrollmentSchool}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n \r\n \r\n {{element.EnrollmentStatus}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Homeroom Teacher\r\n \r\n \r\n \r\n \r\n {{element.Homeroom_Teacher}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n State ID\r\n \r\n \r\n \r\n \r\n {{element.StudentDOENumber}}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n","/* eslint-disable camelcase */\r\nimport { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { StudentSearchService } from './student-search.service';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { YearService } from '../year/year.service';\r\nimport { School } from '../year/school.model';\r\nimport { StudentSearchModel } from './student-search-model';\r\nimport { StudentService } from '../student/student.service';\r\nimport { Student } from '../student/student.model';\r\nimport { Router } from '@angular/router';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport * as moment from 'moment';\r\nimport { RegexDirective } from '../directives/regex.directive';\r\nimport { StudentSearchPreferences } from './student-search-preferences';\r\nimport { AdvancedStudentSearchComponent } from './advanced-student-search/advanced-student-search.component';\r\nimport { DataQueryService } from '../../classroom360/data-query/data-query.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { DataQueryResult } from '../../classroom360/data-query/data-query-result.model';\r\nimport { DataQueryInformation } from '../../classroom360/data-query/data-query-information';\r\nimport { DataQuery } from '../../classroom360/data-query/data-query.model';\r\nimport { System } from '../System';\r\nimport { SharedService } from '../shared.service';\r\nimport { StudentList } from '../../classroom360/student-lists/student-list.model';\r\nimport { StudentListsService } from '../../classroom360/student-lists/student-lists.service';\r\nimport { UserPermission } from '../user/user-permission.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { AddEditStudentListDialogComponent } from '../../classroom360/student-lists/add-edit-student-list-dialog/add-edit-student-list-dialog.component';\r\nimport { EnterCsvDialogComponent } from '../enter-csv-dialog/enter-csv-dialog.component';\r\nimport { ErrorList } from '../controls/error-prompt/error-list.model';\r\nimport { StudentSearchWarningComponent } from './student-search-warning/student-search-warning.component';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { StudentListModalComponent } from './student-list-modal/student-list-modal.component';\r\nimport { SecurityService } from '../security/security.service';\r\nimport { take } from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { TylerMatTableDataSource } from '../angular-material/extended.class';\r\nimport { StudentSearchCriteria } from './student-search-criteria.model';\r\nimport { MassEmailViewComponent } from '../../shared-components/mass-email-view/mass-email-view.component';\r\nimport { MassEmail } from '../../shared-components/mass-email-view/mass-email.model';\r\n@Component({\r\n selector: 'student-search',\r\n templateUrl: 'student-search.component.html',\r\n styleUrls: ['./student-search.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class StudentSearchComponent implements OnInit, OnDestroy {\r\n // Properties\r\n // @ViewChild(DatatableComponent) dataTableAPI: DatatableComponent;\r\n @ViewChild(MatMenuTrigger, { static: true }) trigger: MatMenuTrigger;\r\n subscriptions: Subscription[] = [];\r\n studentSearchData: Student[] = [];\r\n studentGridData: Student[] = [];\r\n selectedStudents: Student[] = [];\r\n // ----- MAt Table properties ONE-6748-------\r\n dataSource: TylerMatTableDataSource = new TylerMatTableDataSource(this.studentGridData);\r\n columnsToDisplay = ['SelectAll', 'Student #', 'First Name', 'Last Name', 'Alerts', 'Grade', 'Enrollment', 'Enroll Date', 'DOB', 'School', 'Status', 'Homeroom Teacher', 'State ID', 'Menue'];\r\n private _paginator: MatPaginator;\r\n @ViewChild(MatPaginator, { static: true }) set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.dataSource.paginator = value;\r\n }\r\n _sort: MatSort;\r\n @ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.dataSource.sort = value;\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n // -------------------\r\n originalStudentSearchData: StudentSearchModel[] = [];\r\n searchCriteria: StudentSearchCriteria;\r\n sortOrder: any[];\r\n searchCriteriaLoaded = false;\r\n studentIds = [];\r\n regularExpressions = [{ name: 'Starts With', value: 'startsWith' }, { name: 'Ends With', value: 'endsWith' }, {\r\n name: 'Contains',\r\n value: 'contains'\r\n }];\r\n currentYear;\r\n showAlert = true;\r\n isV10: Boolean;\r\n showStudentAlerts: boolean;\r\n prepopulateStudentSearch: boolean;\r\n defaultCursorPosition: number;\r\n selectedStudentHistory: Student[];\r\n schools: School[];\r\n allStudentsSelected = false;\r\n gridHeight;\r\n closeClicked = false;\r\n activeFilters = [];\r\n referral = false;\r\n defaultColumns = [ // changing this requires a change to the restoreDefaultsClick function\r\n { name: 'Student #', active: true, regEx: 'startsWith' },\r\n { name: 'First Name', active: true, regEx: 'startsWith' },\r\n { name: 'Last Name', active: true, regEx: 'startsWith' },\r\n { name: 'Alerts', active: true, regEx: 'startsWith' },\r\n { name: 'Grade', active: true, regEx: 'startsWith' },\r\n { name: 'Enrollment', active: true, regEx: 'startsWith' },\r\n { name: 'Enroll Date', active: true, regEx: 'startsWith' },\r\n { name: 'DOB', active: true, regEx: 'startsWith' },\r\n { name: 'School', active: true, regEx: 'startsWith' },\r\n { name: 'Status', active: true, regEx: 'startsWith' },\r\n { name: 'Homeroom Teacher', active: false, regEx: 'startsWith' },\r\n { name: 'State ID', active: false, regEx: 'startsWith' }\r\n ];\r\n // defaultMatTableColumns is depends on defaultColumns // ONE-6748\r\n // if make any changes in defaultColumns object then changes should require in defaultMatTableColumns object\r\n defaultMatTableColumns = [\r\n { name: 'Student #', active: true, MatTableColumn: 'StudentNumber' },\r\n { name: 'First Name', active: true, MatTableColumn: 'FirstName' },\r\n { name: 'Last Name', active: true, MatTableColumn: 'LastName' },\r\n { name: 'Alerts', active: true, MatTableColumn: 'StudentAlerts' },\r\n { name: 'Grade', active: true, MatTableColumn: 'Grade' },\r\n { name: 'Enrollment', active: true, MatTableColumn: 'Enrollment' },\r\n { name: 'Enroll Date', active: true, MatTableColumn: 'EnrollmentDateAsDate' },\r\n { name: 'DOB', active: true, MatTableColumn: 'DateOfBirthAsDate' },\r\n // { name: 'Enroll Date', active: true, MatTableColumn: 'EnrollmentDate' },\r\n // { name: 'DOB', active: true, MatTableColumn: 'DateOfBirth' },\r\n { name: 'School', active: true, MatTableColumn: 'EnrollmentSchool' },\r\n { name: 'Status', active: true, MatTableColumn: 'EnrollmentStatus' },\r\n { name: 'Homeroom Teacher', active: false, MatTableColumn: 'Homeroom_Teacher' },\r\n { name: 'State ID', active: false, MatTableColumn: 'StudentDOENumber' }\r\n ];\r\n redirectUrl = '';\r\n allSchoolsValue: string;\r\n inputBuffer: boolean;\r\n studentSearchCalled = false;\r\n\r\n hideSaveButton = false;\r\n hidNextButton = false;\r\n showLargeHeaderMessage = false;\r\n\r\n // filters\r\n studentNumberFilter: string;\r\n firstNameFilter: string;\r\n lastNameFilter: string;\r\n gradeFilter: string;\r\n enrollmentFilter: string;\r\n enrollDateFilter: string;\r\n dateOfBirthFilter: string;\r\n schoolFilter: string;\r\n statusFilter: string;\r\n studentDOENumberFilter: string;\r\n homeroomTeacherFilter: string;\r\n\r\n headerMessage: string;\r\n acceptLabel = 'Select';\r\n studentNumberRegExp = /^[^\\s,]+(,[^\\s,]+)*$/;\r\n studentNumberKeyRestriction = /[^\\s,]|,/;\r\n toggleSelectedStudents = false;\r\n\r\n // Permissions\r\n permissions: UserPermission[] = [];\r\n addStudentListPrivilegeId = 2206;\r\n addStudentList = false;\r\n\r\n // Data Query Properties\r\n information = new DataQueryInformation();\r\n private _currentQuery = new DataQuery();\r\n\r\n // Student List Properties\r\n private _studentList: StudentList = null;\r\n studentLists: StudentList[] = [];\r\n\r\n // Injected Properties\r\n returnSelectedStudents = true;\r\n performRoute = false;\r\n searchAndSelect = false;\r\n returnSingle = false;\r\n returnAll = false;\r\n currentSchool: boolean;\r\n schoolId: number;\r\n creatingStudentList = false;\r\n useLastSelectedSchool = true;\r\n disableSchoolDropdown = false;\r\n shortingBy = '';\r\n clickHandler = (event: any) => { };\r\n\r\n // Class Functions\r\n constructor(\r\n private studentSearchService: StudentSearchService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private studentService: StudentService,\r\n private router: Router,\r\n private loginService: LoginService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialog: MatDialog,\r\n private dataQueryService: DataQueryService,\r\n private sharedService: SharedService,\r\n private studentListsService: StudentListsService,\r\n private userService: UserService,\r\n private classroom360Service: Classroom360Service,\r\n private securityService: SecurityService\r\n ) {\r\n }\r\n\r\n get currentQuery(): DataQuery {\r\n return this._currentQuery;\r\n }\r\n\r\n set currentQuery(value: DataQuery) {\r\n this.dataQueryService.currentQuery = value;\r\n this.searchCriteria.currentQuery = value;\r\n }\r\n\r\n get studentList(): StudentList {\r\n return this._studentList;\r\n }\r\n\r\n set studentList(value: StudentList) {\r\n this._studentList = value;\r\n if (this._studentList) {\r\n this.searchCriteria.listId = this._studentList.ID;\r\n } else {\r\n this.searchCriteria.listId = -1;\r\n }\r\n }\r\n\r\n // Lifecycle Hooks\r\n dateComparator = (a, b) => this.compareByDate(a, b);\r\n\r\n ngOnInit(): void {\r\n\r\n // Setting initial values\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n this.currentYear = this.yearService.defaultYear;\r\n this.selectedStudentHistory = this.studentService.recentStudents;\r\n this.creatingStudentList = this.data.creatingStudentList;\r\n\r\n // Obtaining the schools and setting the \"all\" value\r\n if (this.isV10 && this.data.schools) {\r\n this.schools = this.data.schools;\r\n this.allSchoolsValue = '';\r\n this.schools.forEach(school => {\r\n if (this.allSchoolsValue) {\r\n this.allSchoolsValue += ',';\r\n }\r\n this.allSchoolsValue += school.Id;\r\n });\r\n // ONE-17063\r\n if (this.allSchoolsValue.length == 0) {\r\n this.allSchoolsValue = '0';\r\n }\r\n } else {\r\n if (!this.isV10 && this.yearService.schoolsForC360 && this.yearService.schools.length < this.yearService.schoolsForC360.length) {\r\n this.schools = this.yearService.schoolsForC360;\r\n } else {\r\n this.schools = this.yearService.schools;\r\n }\r\n this.allSchoolsValue = '0';\r\n }\r\n\r\n this.useLastSelectedSchool = this.data.useLastSelectedSchool == null ? true : this.data.useLastSelectedSchool;\r\n\r\n // Setting up initial display ???\r\n this.sortSchools();\r\n this.setPreferences();\r\n this.getSearchCriteria();\r\n this.getStudentSearchPreferences();\r\n\r\n // Loading criteria\r\n this.loadSearchCriteria();\r\n this.loadFilterCriteria();\r\n this.getStudentLists();\r\n\r\n // Obtaining permissions\r\n if (this.isV10) {\r\n if (this.securityService.userPermissions.find(o => o.PrivilegeId == this.addStudentListPrivilegeId) != null) {\r\n this.addStudentList = true;\r\n }\r\n }\r\n else {\r\n this.addStudentList = true;\r\n }\r\n\r\n // Build out the column Definitions ** Needs to Be Here (ngOnInit) **\r\n if (this.data) {\r\n if (this.data.disableSchoolDropdown) {\r\n this.disableSchoolDropdown = this.data.disableSchoolDropdown;\r\n }\r\n if (this.data.clickHandler) {\r\n this.clickHandler = this.data.clickHandler;\r\n }\r\n if (this.data.schoolId) {\r\n this.searchCriteria.schoolId = this.data.schoolId.toString();\r\n } else if (this.data.currentSchool) {\r\n this.searchCriteria.schoolId = this.yearService.defaultYear.SchoolID.toString();\r\n }\r\n if (this.data.returnSelectedStudents) {\r\n this.returnSelectedStudents = this.data.returnSelectedStudents;\r\n }\r\n if (this.data.selectedStudents) {\r\n this.selectedStudents = System.copyArray(this.data.selectedStudents);\r\n }\r\n if (this.data.viewAllStudentsInThisSchoolYear) {\r\n this.searchCriteria.viewAllStudentInThisSchoolYear = this.data.viewAllStudentsInThisSchoolYear;\r\n }\r\n if (this.data.headerMessage) {\r\n this.headerMessage = this.data.headerMessage;\r\n }\r\n if (this.data.acceptLabel) {\r\n this.acceptLabel = this.data.acceptLabel;\r\n }\r\n if (this.data.referral) {\r\n this.referral = this.data.referral;\r\n }\r\n if (this.data.hidNextButton) {\r\n this.hidNextButton = this.data.hidNextButton;\r\n }\r\n if (this.data.hideSaveButton) {\r\n this.hideSaveButton = this.data.hideSaveButton;\r\n }\r\n if (this.data.showLargeHeaderMessage) {\r\n this.showLargeHeaderMessage = this.data.showLargeHeaderMessage;\r\n }\r\n }\r\n this.performRoute = this.data.performRoute;\r\n this.searchAndSelect = this.data.searchAndSelect;\r\n if (this.data.callFromSpedHome == true) {\r\n this.redirectUrl = '/sped360/studentDocumentHome';\r\n } else {\r\n this.redirectUrl = this.data.redirectUrl;\r\n }\r\n this.returnSingle = this.data.returnSingle;\r\n this.returnAll = this.data.returnAll;\r\n // Set the default sort order based on the user preference\r\n if (this.userPreferencesService.generalPreferences.StudentNameFormat == 'LNF') {\r\n this.sortOrder = [{ prop: 'LastName', dir: 'asc' }];\r\n this.shortingBy = 'LastName';\r\n } else {\r\n this.sortOrder = [{ prop: 'FirstName', dir: 'asc' }];\r\n this.shortingBy = 'FirstName';\r\n }\r\n\r\n // Subscribing to data query values\r\n this.studentSearchService.unsavedStudentFilter = false;\r\n this.dataQueryService.getInformation().subscribe();\r\n this.dataQueryService.currentQuery = new DataQuery();\r\n this.dataQueryService.isStudentSearch = true;\r\n this.dataQueryService.pageSize = this.dataQueryService.initialPageSize;\r\n this.subscriptions.push(\r\n // Syncing properties\r\n this.dataQueryService.observableCurrentQueryStream$.subscribe(query => {\r\n this._currentQuery = query;\r\n this._currentQuery.StudentSearch = true;\r\n this._currentQuery.CourseSearch = false;\r\n this.dataQueryService.checkDefaultFilterFields(this._currentQuery.filterFields);\r\n }),\r\n this.dataQueryService.observableInformationStream$.subscribe(information => {\r\n this.information = information;\r\n if (this.currentQuery && !this.information.recentStudentFilters.find(filterQuery => filterQuery == this.currentQuery)) {\r\n const matchingQuery = this.information.recentStudentFilters.find(filterQuery => filterQuery.ID == this.currentQuery.ID);\r\n if (matchingQuery) {\r\n this.currentQuery = matchingQuery;\r\n }\r\n }\r\n if (!this.dataQueryService.obtainedRecentStudentQueries && !this.dataQueryService.isInformationCached()) {\r\n this.subscriptions.push(\r\n this.dataQueryService.getRecentQueries().subscribe(recentFilters => {\r\n this.information.recentStudentFilters = recentFilters;\r\n this.dataQueryService.obtainedRecentStudentQueries = true;\r\n })\r\n );\r\n }\r\n }),\r\n\r\n // Obtaining data\r\n this.dataQueryService.getPermissions().subscribe()\r\n );\r\n // Resetting the filter query\r\n this.currentQuery = new DataQuery();\r\n this.dataQueryService.currentSchoolOnly = false;\r\n if (this.studentSearchService.searchCriteria) {\r\n if (this.studentSearchService.searchCriteria.currentQuery) {\r\n this.currentQuery = this.information.recentStudentFilters.find(rf => rf.ID == this.studentSearchService.searchCriteria.currentQuery.ID);\r\n }\r\n }\r\n // default table columans\r\n if (this.searchAndSelect) {\r\n this.columnsToDisplay = ['SelectAll'];\r\n }\r\n else {\r\n this.columnsToDisplay = [];\r\n }\r\n for (let i = 0; i < this.defaultMatTableColumns.length; i++) {\r\n if (this.defaultMatTableColumns[i].active == true && (this.defaultMatTableColumns[i].name != 'Alerts' || this.showStudentAlerts == true)) {\r\n this.columnsToDisplay.push(this.defaultMatTableColumns[i].MatTableColumn);\r\n }\r\n }\r\n }\r\n chooseColumn() {\r\n if (this.searchAndSelect) {\r\n this.columnsToDisplay = ['SelectAll'];\r\n }\r\n else {\r\n this.columnsToDisplay = [];\r\n }\r\n for (let i = 0; i < this.defaultColumns.length; i++) {\r\n if (this.defaultColumns[i].active == true && (this.defaultColumns[i].name != 'Alerts' || this.showStudentAlerts == true)) {\r\n for (let j = 0; j < this.defaultMatTableColumns.length; j++) {\r\n if (this.defaultColumns[i].name == this.defaultMatTableColumns[j].name) {\r\n this.columnsToDisplay.push(this.defaultMatTableColumns[i].MatTableColumn);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n // Get the students\r\n }\r\n getCellClass = ({ row, column, value }): any => {\r\n if (!this.isV10) {\r\n if (value == 'Projected') {\r\n return ' ProjectedStudent';\r\n }\r\n else if (value == 'Withdrawn') {\r\n return ' WithdrawnStudent';\r\n }\r\n else if (value == 'Future') {\r\n return ' FutureStudent';\r\n }\r\n }\r\n return '';\r\n }\r\n ngOnDestroy(): void {\r\n if (!this.closeClicked) {\r\n // Saves to the database\r\n this.saveStudentSearchPreferences();\r\n }\r\n\r\n // Unsubscribing from all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n\r\n // Replacing the current query in case we were in data query\r\n this.dataQueryService.isStudentSearch = false;\r\n this.dataQueryService.isCourseSearch = false;\r\n // Saves to the service for the session\r\n this.studentSearchService.saveFilterCriteria(this.activeFilters);\r\n }\r\n\r\n closeClick() {\r\n this.saveSearchCriteria();\r\n this.saveStudentSearchPreferences();\r\n if (this.loginService.LoginSettings.ActivateClassroom360 == false && (this.studentService.selectedStudent == null || this.studentService.selectedStudent.Id == null)) {\r\n const studentSearchWarningDialogRef = this.dialog.open(StudentSearchWarningComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n minWidth: '500px',\r\n disableClose: true\r\n });\r\n\r\n studentSearchWarningDialogRef.afterClosed().subscribe(result => {\r\n if (result == 'OK was clicked.') {\r\n this.closeClicked = true;\r\n this.dialogRef.close();\r\n }\r\n });\r\n } else {\r\n this.closeClicked = true;\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n saveSearchCriteria() {\r\n const previousSchoolId = this.searchCriteria.schoolId;\r\n this.studentSearchService.searchCriteria = this.searchCriteria;\r\n this.studentSearchService.searchCriteria.currentQuery = null; // We don't save filters\r\n }\r\n\r\n checkStudentFilter() {\r\n // Checks to see if a student filter is active\r\n // return true to disable the header filters\r\n return this.studentSearchService.unsavedStudentFilter || this.currentQuery.ID != -1;\r\n }\r\n\r\n enterStudentNumbers() {\r\n // PRE: the CSV button next to student number is clicked\r\n // POST: opens the enter CSV dialog as \"Enter Student Numbers\"\r\n const dialogBox = this.dialog.open(EnterCsvDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n header: 'Enter Student Numbers',\r\n helpString: 'Separate numbers with a comma (Ex. 12345,13423,12312,19712)',\r\n pattern: this.studentNumberRegExp,\r\n keyRestriction: this.studentNumberKeyRestriction,\r\n validator: (csv: string): ErrorList[] => {\r\n if (!csv) {\r\n return [\r\n {\r\n errorMsg: 'Required field.',\r\n fieldName: 'Student Numbers',\r\n fieldRef: new ElementRef(null)\r\n }\r\n ];\r\n }\r\n if (csv[csv.length - 1] == ',') {\r\n return [\r\n {\r\n errorMsg: 'The CSV must not end with a comma.',\r\n fieldName: 'Student Numbers',\r\n fieldRef: new ElementRef(null)\r\n }\r\n ];\r\n } else if (!csv.match(this.studentNumberRegExp)) {\r\n return [\r\n {\r\n errorMsg: 'Separate numbers by commas. No spaces or special characters.',\r\n fieldName: 'Student Numbers',\r\n fieldRef: new ElementRef(null)\r\n }\r\n ];\r\n }\r\n return [];\r\n }\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(csv => {\r\n if (csv || csv == '') {\r\n this.searchCriteria.studentNumber = csv;\r\n }\r\n })\r\n );\r\n }\r\n\r\n loadSearchCriteria() {\r\n if (this.studentSearchService.searchCriteria) {\r\n this.searchCriteria.studentNumber = this.studentSearchService.searchCriteria.studentNumber;\r\n this.searchCriteria.firstName = this.studentSearchService.searchCriteria.firstName;\r\n this.searchCriteria.lastName = this.studentSearchService.searchCriteria.lastName;\r\n this.searchCriteria.schoolId = this.useLastSelectedSchool ? this.studentSearchService.searchCriteria.schoolId : this.yearService.defaultYear.SchoolID.toString();\r\n this.searchCriteria.status = this.studentSearchService.searchCriteria.status;\r\n this.searchCriteria.currentQuery = this.studentSearchService.searchCriteria.currentQuery;\r\n }\r\n\r\n // Loading the all value if the loaded school doesn't exist\r\n if (this.schools.findIndex(s => s.Id.toString() == this.searchCriteria.schoolId) < 0) {\r\n this.searchCriteria.schoolId = (this.allSchoolsValue != '') ? this.allSchoolsValue : '0';\r\n }\r\n }\r\n\r\n loadFilterCriteria() {\r\n if (this.studentSearchService.filterCriteria) {\r\n this.studentSearchService.filterCriteria.forEach(f => {\r\n this.activeFilters.push(f);\r\n });\r\n this.activeFilters.forEach(f => {\r\n switch (f.name) {\r\n case 'StudentNumber':\r\n this.studentNumberFilter = f.filter;\r\n break;\r\n case 'FirstName':\r\n this.firstNameFilter = f.filter;\r\n break;\r\n case 'LastName':\r\n this.lastNameFilter = f.filter;\r\n break;\r\n case 'Grade':\r\n this.gradeFilter = f.filter;\r\n break;\r\n case 'Enrollment':\r\n this.enrollmentFilter = f.filter;\r\n break;\r\n case 'EnrollmentDate':\r\n this.enrollDateFilter = f.filter;\r\n break;\r\n case 'DateOfBirth':\r\n this.dateOfBirthFilter = f.filter;\r\n break;\r\n case 'EnrollmentSchool':\r\n this.schoolFilter = f.filter;\r\n break;\r\n case 'EnrollmentStatus':\r\n this.statusFilter = f.filter;\r\n break;\r\n }\r\n });\r\n }\r\n }\r\n\r\n clearFilters() {\r\n this.studentNumberFilter = '';\r\n this.firstNameFilter = '';\r\n this.lastNameFilter = '';\r\n this.gradeFilter = '';\r\n this.enrollmentFilter = '';\r\n this.enrollDateFilter = '';\r\n this.dateOfBirthFilter = '';\r\n this.schoolFilter = '';\r\n this.statusFilter = '';\r\n }\r\n\r\n getStudentLists() {\r\n // POST: obtains the student lists from the server\r\n this.studentListsService.getStudentLists(\r\n false,\r\n this.searchCriteria.schoolId ? parseInt(this.searchCriteria.schoolId, 10) : this.yearService.defaultYear.SchoolID\r\n ).pipe(take(1)).subscribe(studentLists => {\r\n if (studentLists) {\r\n this.studentLists = studentLists.sort((a, b) =>\r\n a.Name.localeCompare(b.Name)\r\n );\r\n\r\n // Check for a student list in the session\r\n if (this.studentSearchService.searchCriteria) {\r\n if (this.studentSearchService.searchCriteria.listId) {\r\n this.studentList = this.studentLists.find(sl => sl.ID == this.studentSearchService.searchCriteria.listId);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n getStudents() {\r\n // Check if the homeroom teacher column is active\r\n this.defaultColumns.forEach(c => {\r\n if (c.name === 'Homeroom Teacher') {\r\n this.searchCriteria.getStudentHomerooms = c.active;\r\n }\r\n });\r\n this.subscriptions.push(\r\n this.studentSearchService.getStudentsBySearchCriteria(\r\n this.searchCriteria\r\n ).subscribe(\r\n data => {\r\n this.studentSearchCalled = true;\r\n this.originalStudentSearchData = JSON.parse(JSON.stringify(data));\r\n const studentData = data as StudentSearchModel[];\r\n this.studentSearchData = [];\r\n this.studentIds = [];\r\n // Convert the StudentSearchDTO to a student object\r\n for (let i = 0; i < studentData.length; i++) {\r\n const student = new Student();\r\n student.Id = studentData[i].StudentId;\r\n student.Grade = studentData[i].Grade;\r\n student.EnrollmentId = studentData[i].EnrollmentId;\r\n student.Enrollment = studentData[i].Enrollment;\r\n student.EnrollmentSchool = studentData[i].EnrollmentSchool;\r\n student.EnrollmentDate = moment(studentData[i].EnrollmentDate).format('MM/DD/YY');\r\n student.EnrollmentDateAsDate = new Date(studentData[i].EnrollmentDate);\r\n student.EnrollmentStatus = studentData[i].EnrollmentStatus;\r\n student.StudentNumber = studentData[i].StudentNumber;\r\n student.LastName = studentData[i].LastName;\r\n student.FirstName = studentData[i].FirstName;\r\n student.MiddleName = studentData[i].MiddleName;\r\n student.NickName = studentData[i].NickName;\r\n student.DateOfBirth = moment(studentData[i].DOB).format('MM/DD/YY');\r\n student.DateOfBirthAsDate = new Date(studentData[i].DOB);\r\n student.IEP = studentData[i].IEP;\r\n student.StudentAlerts = studentData[i].StudentAlerts;\r\n student.isSelected = false;\r\n student.HomeRoom_Class = studentData[i].HomeRoom_Class;\r\n student.Homeroom_CourseSection = studentData[i].Homeroom_CourseSection;\r\n student.Homeroom_Teacher = studentData[i].Homeroom_Teacher;\r\n student.StudentDOENumber = (studentData[i].State_ID != null) ? studentData[i].State_ID : '';\r\n // Add the ID to the list of studentIds\r\n this.studentIds.push(studentData[i].StudentId);\r\n\r\n if (this.userPreferencesService.generalPreferences != null && this.userPreferencesService.generalPreferences.ShowNickname && student.NickName != null && student.NickName != '') {\r\n student.FirstName = student.FirstName + ' \\\"' + student.NickName + '\\\"';\r\n }\r\n\r\n // Marking it as selected if it is in our selected students\r\n for (let j = 0; j < this.selectedStudents.length; j++) {\r\n if (student.Id == this.selectedStudents[j].Id) {\r\n this.selectedStudents[j] = student;\r\n }\r\n }\r\n\r\n // Add the student to the data grid\r\n this.studentSearchData.push(student);\r\n }\r\n this.studentGridData = this.studentSearchData;\r\n this.dataSource.data = this.studentGridData;\r\n if (!this.searchCriteriaLoaded) {\r\n this.updateSearchCriteria();\r\n }\r\n // If we have a list of selected students (passed in), mark them as selected\r\n if (this.selectedStudents.length > 0) {\r\n this.selectedStudents.forEach(s => {\r\n const studentObject = this.studentSearchData.find(o => Number(o.StudentNumber) == Number(s.StudentNumber));\r\n if (studentObject) {\r\n if (this.isV10) {\r\n Object.assign(s, studentObject);\r\n }\r\n studentObject.isSelected = true;\r\n }\r\n });\r\n }\r\n this.selectCheckBoxChange();\r\n this.processFilters();\r\n }, err => {\r\n // Error Getting Students\r\n console.log(err);\r\n }\r\n )\r\n );\r\n }\r\n\r\n getStudentSearchPreferences() {\r\n this.subscriptions.push(\r\n this.studentSearchService.getUserPreferences(0, '/studentSearchGrid').subscribe(data => {\r\n const studentSearchPreferences = JSON.parse(data[0]);\r\n // Make sure the user is using the latest version of settings\r\n if (studentSearchPreferences.hasOwnProperty('columnSettings')) {\r\n if (studentSearchPreferences.columnSettings.length == this.defaultColumns.length) {\r\n this.defaultColumns = studentSearchPreferences.columnSettings;\r\n this.setMatHeader();\r\n } else {\r\n this.saveStudentSearchPreferences();\r\n }\r\n } else {\r\n this.saveStudentSearchPreferences();\r\n }\r\n if (this.prepopulateStudentSearch) {\r\n this.getStudents();\r\n }\r\n })\r\n );\r\n }\r\n\r\n keyDownFunction(event) {\r\n if (event.keyCode == 13) {\r\n this.searchClick();\r\n }\r\n }\r\n\r\n menuClick() {\r\n // Do something when the menu is clicked\r\n }\r\n\r\n route() {\r\n\r\n if (this.redirectUrl != null && this.redirectUrl != '') {\r\n this.router.navigateByUrl(this.redirectUrl);\r\n } else if ((!this.sharedService.currentPortal || !this.sharedService.currentPortal.applyFilterStudents)) {\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onSelectionChanged(event, rowData) {\r\n // Helper Functions\r\n const returnSingleStudent = () => {\r\n // POST: returns the single selected student\r\n this.inputBuffer = true;\r\n if (!this.referral) {\r\n this.saveStudentSearchPreferences();\r\n }\r\n const selectedStudent = rowData;\r\n if (this.userPreferencesService.generalPreferences != null && this.userPreferencesService.generalPreferences.ShowNickname) {\r\n const student = this.originalStudentSearchData.find(o => o.StudentId == selectedStudent.Id);\r\n if (student != null) {\r\n selectedStudent.FirstName = student.FirstName;\r\n }\r\n }\r\n this.dialogRef.close(selectedStudent);\r\n setTimeout(() => {\r\n this.inputBuffer = false;\r\n }, 1000);\r\n };\r\n const setStudentsToAllStudents = (callBack?: Function) => {\r\n // PRE: a callback function if you need to do processing after\r\n // POST: sets the selected students to all the students in the list, then performs the callback\r\n const selectedStudent: Student = rowData;\r\n const selectedStudents = [];\r\n for (let i = 0; i < this.dataSource.data.length; i++) {\r\n if (this.userPreferencesService.generalPreferences != null && this.userPreferencesService.generalPreferences.ShowNickname && this.dataSource.data[i].NickName != null && this.dataSource.data[i].NickName != '') {\r\n const student = this.originalStudentSearchData.filter(o => o.StudentId == this.dataSource.data[i].Id)[0];\r\n if (student != null) {\r\n this.dataSource.data[i].FirstName = student.FirstName;\r\n }\r\n }\r\n selectedStudents.push(this.dataSource.data[i]);\r\n }\r\n this.subscriptions.push(\r\n this.studentService.getStudent(selectedStudent.Id).subscribe(student => {\r\n const studentIndex = selectedStudents.findIndex(x => x.Id == student.Id);\r\n // Grade is NULL in getStudent Method. ONE-10790 #2\r\n student.Grade = selectedStudents[studentIndex].Grade;\r\n\r\n // Using the callback\r\n if (callBack) {\r\n callBack(selectedStudents, studentIndex);\r\n }\r\n\r\n // Updating the student\r\n selectedStudents[studentIndex] = student;\r\n this.studentService.updateStudents(selectedStudents, studentIndex);\r\n })\r\n );\r\n };\r\n\r\n // Making sure the event's row is set\r\n event.row = rowData;\r\n\r\n // Handling the click event\r\n if (event.type == 'click') {\r\n this.saveSearchCriteria();\r\n if (this.searchAndSelect) {\r\n // other search and select logic here\r\n if (rowData != undefined) {\r\n rowData.isSelected = !rowData.isSelected;\r\n // Manage the selected student list\r\n if (rowData.isSelected) {\r\n this.selectedStudents.push(rowData);\r\n } else {\r\n this.selectedStudents = this.selectedStudents.filter(s => s.Id !== rowData.Id);\r\n }\r\n\r\n // ############\r\n if (this.dataSource.sort.direction == 'asc') {\r\n this.selectedStudents = _.orderBy(this.selectedStudents, [this.dataSource.sort.active], ['asc']);\r\n }\r\n if (this.dataSource.sort.direction == 'desc') {\r\n this.selectedStudents = _.orderBy(this.selectedStudents, [this.dataSource.sort.active], ['desc']);\r\n }\r\n // ############\r\n\r\n // check the selection\r\n this.selectCheckBoxChange();\r\n }\r\n } else if (this.returnSingle) {\r\n if (rowData != undefined) {\r\n // inputBuffer prevents user double clicking and calling saveStudentSearchPreferences() twice\r\n if (!this.inputBuffer) {\r\n returnSingleStudent();\r\n }\r\n }\r\n } else if (this.returnAll) {\r\n if (rowData != undefined) {\r\n // inputBuffer prevents user double clicking and calling saveStudentSearchPreferences() twice\r\n if (!this.inputBuffer) {\r\n\r\n // Selecting out all the students\r\n setStudentsToAllStudents(() => {\r\n\r\n // Returning the selected student\r\n returnSingleStudent();\r\n });\r\n }\r\n }\r\n } else {\r\n this.saveStudentSearchPreferences();\r\n if (rowData != undefined && this.userPreferencesService.generalPreferences != null && this.userPreferencesService.generalPreferences.ShowNickname) {\r\n const student = this.originalStudentSearchData.find(o => o.StudentId == rowData.Id);\r\n if (student != null) {\r\n rowData.FirstName = student.FirstName;\r\n }\r\n }\r\n this.clickHandler(event);\r\n if (this.performRoute) {\r\n setStudentsToAllStudents(() => {\r\n\r\n // Waiting for portal changes before routing\r\n // TODO: fix hacky solution #Justin\r\n let numHits = 0;\r\n const subscription = this.classroom360Service.observableStaffAssignedPortalsStream$.subscribe(() => {\r\n numHits += 1;\r\n if (numHits == 2) {\r\n this.route();\r\n subscription.unsubscribe();\r\n }\r\n });\r\n });\r\n } else {\r\n this.dialogRef.close(true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n startOverClick() {\r\n this.restoreDefaultsClick();\r\n this.studentSearchService.filterCriteria = undefined;\r\n this.studentSearchService.unsavedStudentFilter = false;\r\n this.searchCriteria = new StudentSearchCriteria(\r\n this.yearService.defaultYear.Id,\r\n '',\r\n '',\r\n '',\r\n this.data && this.data.schoolId ? this.data.schoolId.toString() : this.yearService.defaultYear.SchoolID.toString(),\r\n 'Active',\r\n );\r\n this.activeFilters = [];\r\n this.currentQuery = undefined;\r\n this.studentList = undefined;\r\n this.selectedStudents = [];\r\n this.allStudentsSelected = false;\r\n this.clearFilters();\r\n this.studentSearchData = [];\r\n this.studentGridData = [];\r\n this.dataSource.data = this.studentGridData;\r\n if (this.prepopulateStudentSearch) {\r\n this.getStudents();\r\n }\r\n }\r\n\r\n restoreDefaultsClick() {\r\n // reset the visible state on the default columns array\r\n this.defaultColumns = [\r\n { name: 'Student #', active: true, regEx: 'startsWith' },\r\n { name: 'First Name', active: true, regEx: 'startsWith' },\r\n { name: 'Last Name', active: true, regEx: 'startsWith' },\r\n { name: 'Alerts', active: true, regEx: 'startsWith' },\r\n { name: 'Grade', active: true, regEx: 'startsWith' },\r\n { name: 'Enrollment', active: true, regEx: 'startsWith' },\r\n { name: 'Enroll Date', active: true, regEx: 'startsWith' },\r\n { name: 'DOB', active: true, regEx: 'startsWith' },\r\n { name: 'School', active: true, regEx: 'startsWith' },\r\n { name: 'Status', active: true, regEx: 'startsWith' },\r\n { name: 'Homeroom Teacher', active: false, regEx: 'startsWith' },\r\n { name: 'State ID', active: false, regEx: 'startsWith' },\r\n ];\r\n this.setMatHeader();\r\n }\r\n\r\n setMatHeader() {\r\n this.defaultColumns.forEach(dc => {\r\n this.defaultMatTableColumns.forEach(dmc => {\r\n if (dc.name == dmc.name) {\r\n dmc.active = dc.active;\r\n }\r\n });\r\n });\r\n if (this.searchAndSelect) {\r\n this.columnsToDisplay = ['SelectAll'];\r\n }\r\n else {\r\n this.columnsToDisplay = [];\r\n }\r\n for (let i = 0; i < this.defaultMatTableColumns.length; i++) {\r\n if (this.defaultMatTableColumns[i].active == true && (this.defaultMatTableColumns[i].name != 'Alerts' || this.showStudentAlerts == true)) {\r\n this.columnsToDisplay.push(this.defaultMatTableColumns[i].MatTableColumn);\r\n }\r\n }\r\n }\r\n\r\n saveStudentSearchPreferences() {\r\n const prefs = new StudentSearchPreferences();\r\n prefs.columnSettings = this.defaultColumns;\r\n const xmlStream = [];\r\n xmlStream.push(JSON.stringify(prefs));\r\n // NOTE: we unsubscribe imperatively here to prevent it from being cancelled preemptively\r\n const subscription = this.studentSearchService.saveUserPreferences(0, '/studentSearchGrid', xmlStream).subscribe(\r\n data => {\r\n subscription.unsubscribe();\r\n },\r\n err => {\r\n console.log(err);\r\n subscription.unsubscribe();\r\n }\r\n );\r\n }\r\n\r\n searchClick() {\r\n this.saveSearchCriteria();\r\n if (this._currentQuery.filterFields.length > 0) {\r\n const schoolIds = '';\r\n // this.yearService.schools.forEach(school => {\r\n // if (school.SchoolName == this.dataQueryService.studentSearchFilters.ddlSchool || this.dataQueryService.studentSearchFilters.ddlSchool == '') {\r\n // schoolIds = schoolIds + (schoolIds == '' ? school.Id.toString() : ',' + school.Id.toString());\r\n // }\r\n // })\r\n\r\n this.dataQueryService.getResults(\r\n false,\r\n (results: DataQueryResult) => {\r\n this.processStudentFilterResults(results);\r\n },\r\n () => {\r\n },\r\n true,\r\n true,\r\n schoolIds\r\n );\r\n } else {\r\n this.getStudents();\r\n this.allStudentsSelected = false;\r\n }\r\n }\r\n\r\n selectClick() {\r\n if (this.returnSelectedStudents) {\r\n if (this.userPreferencesService.generalPreferences != null && this.userPreferencesService.generalPreferences.ShowNickname) {\r\n this.selectedStudents.forEach(obj => {\r\n const student = this.originalStudentSearchData.find(o => o.StudentId == obj.Id);\r\n if (student != null) {\r\n obj.FirstName = student.FirstName;\r\n }\r\n });\r\n }\r\n\r\n this.dialogRef.close(this.selectedStudents);\r\n } else {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n selectedSchoolChanged(event) {\r\n this.searchCriteria.schoolId = event.value;\r\n this.getStudentLists();\r\n }\r\n\r\n selectedStatusChanged(event) {\r\n this.searchCriteria.status = event.value;\r\n }\r\n\r\n studentFilterChange(event) {\r\n // Check if the user selected none in the student filter dropdown\r\n if (event.value == null) { // none\r\n // if so reset the unsavedStudentFilter\r\n this.studentSearchService.unsavedStudentFilter = false;\r\n }\r\n this.clearColumnFilters();\r\n }\r\n\r\n clearColumnFilters() {\r\n this.activeFilters = [];\r\n this.studentNumberFilter = undefined;\r\n this.firstNameFilter = undefined;\r\n this.lastNameFilter = undefined;\r\n this.gradeFilter = undefined;\r\n this.enrollmentFilter = undefined;\r\n this.enrollDateFilter = undefined;\r\n this.dateOfBirthFilter = undefined;\r\n this.schoolFilter = undefined;\r\n this.statusFilter = undefined;\r\n }\r\n\r\n studentFiltersClick() {\r\n // PRE: the student filter's button is clicked\r\n // POST: opens the student filter dialog. When closed with results, displays those results on the grid\r\n if (this.searchCriteria.schoolId) {\r\n const school = this.schools.find(s => s.Id.toString() == this.searchCriteria.schoolId);\r\n this.dataQueryService.studentSearchFilters.ddlSchool = school ? school.SchoolName : '';\r\n }\r\n this.dataQueryService.studentSearchFilters.rbStatus = this.searchCriteria.status;\r\n const dialogBox = this.dialog.open(AdvancedStudentSearchComponent, {\r\n disableClose: true,\r\n maxWidth: '100vw',\r\n maxHeight: '100vh',\r\n width: '100%',\r\n height: '100%',\r\n data: {\r\n initialStudentNumber: this.studentNumberFilter,\r\n initialFirstName: this.firstNameFilter,\r\n initialLastName: this.lastNameFilter,\r\n initialGrade: this.gradeFilter,\r\n initialEnrollment: this.enrollmentFilter,\r\n initialEnrollDate: this.enrollDateFilter,\r\n initialDOB: this.dateOfBirthFilter,\r\n initialSchool: this.schoolFilter,\r\n initialStatus: this.statusFilter\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe((results: DataQueryResult) => {\r\n if (results) {\r\n this.studentSearchService.unsavedStudentFilter = !this.currentQuery.QueryName;\r\n this.selectedStudents = [];\r\n this.clearColumnFilters();\r\n this.processStudentFilterResults(results);\r\n }\r\n })\r\n );\r\n }\r\n\r\n processStudentFilterResults(results: DataQueryResult) {\r\n // PRE: a set of results obtained by student filter\r\n // POST: composes students from those results and updates the displayed data\r\n if (!results) {\r\n return;\r\n }\r\n const newData: Student[] = [];\r\n results.Data.forEach(datum => {\r\n const newStudent = new Student();\r\n for (let i = 0; i < results.ColumnHeaders.length; i++) {\r\n switch (results.ColumnHeaders[i]) {\r\n case 'Student Number':\r\n case 'Student #':\r\n case 'StudentNumber':\r\n case 'Student ID':\r\n newStudent.StudentNumber = datum[i];\r\n break;\r\n case 'StudentId':\r\n case 'lngStudentId':\r\n case 'Student_ID':\r\n newStudent.Id = parseInt(datum[i], 10);\r\n break;\r\n case 'First Name':\r\n case 'FirstName':\r\n case 'Name - First':\r\n newStudent.FirstName = datum[i];\r\n break;\r\n case 'Last Name':\r\n case 'LastName':\r\n case 'Name - Last':\r\n newStudent.LastName = datum[i];\r\n break;\r\n case 'Grade':\r\n case 'Grade Level':\r\n newStudent.Grade = datum[i];\r\n break;\r\n case 'School':\r\n case 'School Name':\r\n case 'Primary Enrollment Site Name':\r\n newStudent.EnrollmentSchool = datum[i];\r\n break;\r\n case 'Enrollment Date':\r\n case 'Entry Date':\r\n newStudent.EnrollmentDate = datum[i];\r\n break;\r\n case 'Status':\r\n case 'Enrollment Status':\r\n newStudent.EnrollmentStatus = datum[i];\r\n break;\r\n case 'DOB':\r\n case 'Date of Birth':\r\n case 'Birth Date':\r\n newStudent.DateOfBirth = datum[i];\r\n break;\r\n case 'Primary':\r\n switch (datum[i]) {\r\n case '1':\r\n newStudent.Enrollment = 'Primary';\r\n break;\r\n case '2':\r\n newStudent.Enrollment = 'Alternate';\r\n break;\r\n default:\r\n newStudent.Enrollment = datum[i];\r\n break;\r\n }\r\n }\r\n }\r\n newData.push(newStudent);\r\n });\r\n newData.forEach(s => {\r\n if (s.EnrollmentDate) {\r\n s.EnrollmentDateAsDate = new Date(s.EnrollmentDate);\r\n }\r\n if (s.DateOfBirth) {\r\n s.DateOfBirthAsDate = new Date(s.DateOfBirth);\r\n }\r\n });\r\n this.studentSearchData = newData;\r\n if (this.selectedStudents.length > 0) {\r\n this.selectedStudents.forEach(s => {\r\n const studentObject = this.studentSearchData.find(o => Number(o.Id) == Number(s.Id));\r\n if (studentObject) {\r\n studentObject.isSelected = true;\r\n }\r\n });\r\n this.selectedStudents = [];\r\n this.selectedStudents = newData.filter(x => x.isSelected == true);\r\n }\r\n this.updateFilter();\r\n }\r\n\r\n updateFilter(val?, column?) {\r\n // UPDATING FILTER FOR DATA QUERY\r\n if (column) {\r\n this.dataQueryService.studentSearchFilters[column.prop] = column.searchCriteria;\r\n // Set the regEx for the column\r\n column.regEx = this.defaultColumns.find(c => c.name == column.name).regEx;\r\n }\r\n\r\n // Updating the filter value at the specified column\r\n if (val != undefined && val != null && column != undefined && column != null) {\r\n val = val.toLowerCase();\r\n if (this.activeFilters.find(col => col.name == column.prop)) {\r\n const index = this.activeFilters.map(function (x) {\r\n return x.name;\r\n }).indexOf(column.prop);\r\n if (val == '') {\r\n this.activeFilters.splice(index, 1);\r\n } else {\r\n this.activeFilters[index].filter = val;\r\n this.activeFilters[index].regEx = column.regEx;\r\n }\r\n } else {\r\n if (val != '') {\r\n const colFilter = { name: column.prop, filter: val, regEx: column.regEx };\r\n this.activeFilters.push(colFilter);\r\n }\r\n }\r\n }\r\n // Reset the data source\r\n // NOTE: uses the student list if one is provided\r\n this.studentGridData = this.studentSearchData;\r\n if (this.activeFilters.length > 0 && column) {\r\n // loop through and filter\r\n for (let i = 0; i < this.activeFilters.length; i++) {\r\n const regEx = RegexDirective.RegExBuilder(this.activeFilters[i].filter, column.regEx);\r\n this.studentGridData = this.studentGridData.filter(data => {\r\n return data[this.activeFilters[i].name].toString().toLowerCase().match(regEx);\r\n });\r\n }\r\n }\r\n this.dataSource.data = this.studentGridData;\r\n // Check the select box\r\n this.selectCheckBoxChange();\r\n }\r\n\r\n updateRegEx(column, newRegexValue?) {\r\n // Find the filter in the active filters and update it\r\n const gridData = _.cloneDeep(this.studentSearchData);\r\n // Find the column\r\n const col = this.defaultColumns.find(c => c.name.replace(/\\s+/g, '') == column.name.replace(/\\s+/g, ''));\r\n // Update the regEx value\r\n col.regEx = newRegexValue;\r\n setTimeout(() => {\r\n if (this.activeFilters.length > 0) {\r\n // loop through and filter\r\n for (let i = 0; i < this.activeFilters.length; i++) {\r\n const regEx = RegexDirective.RegExBuilder(this.activeFilters[i].filter, col.regEx);\r\n this.studentGridData = gridData.filter(data => {\r\n return data[this.activeFilters[i].name].toString().toLowerCase().match(regEx);\r\n });\r\n this.dataSource.data = this.studentGridData;\r\n }\r\n }\r\n }, 1);\r\n }\r\n\r\n updateSearchCriteria() {\r\n if (this.searchCriteria != undefined) {\r\n }\r\n this.searchCriteriaLoaded = true;\r\n }\r\n\r\n lastSelectedStudentClick(lastSelectedStudent: Student) {\r\n this.studentService.students = this.studentService.recentStudents;\r\n this.studentService.updateSelectedStudent(lastSelectedStudent.Id);\r\n this.subscriptions.push(\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n if (this.redirectUrl != null && this.redirectUrl != '') {\r\n this.router.navigateByUrl(this.redirectUrl);\r\n } else {\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n this.dialogRef.close();\r\n })\r\n );\r\n }\r\n\r\n createStudentList() {\r\n // POST: creates a student list\r\n // if this is student search and select, uses the selected students\r\n // if this is not student search and select, uses the visible students\r\n let students: Student[];\r\n if (this.searchAndSelect) {\r\n students = this.selectedStudents;\r\n } else {\r\n // students = this.studentGridData;\r\n students = this.dataSource.filteredData;\r\n }\r\n const dialogBox = this.dialog.open(AddEditStudentListDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n students: students,\r\n addMode: true,\r\n editMode: false,\r\n disableStudents: true\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(studentList => {\r\n if (studentList) {\r\n this.studentLists.push(studentList);\r\n this.studentLists = this.studentLists.sort((a, b) =>\r\n a.Name.localeCompare(b.Name)\r\n );\r\n this.studentSearchService.addStudentListEvent.emit(studentList);\r\n }\r\n })\r\n );\r\n }\r\n\r\n showSelectedStudents() {\r\n if (this.selectedStudents.length > 0) {\r\n this.displaySelectedStudentsModal(this.selectedStudents);\r\n }\r\n }\r\n\r\n massEmail() {\r\n const massEmail = new MassEmail();\r\n massEmail.ReferringPage = 'Student Search';\r\n if (this.searchAndSelect) {\r\n massEmail.StudentIds = this.selectedStudents.map(student => student.Id);\r\n } else {\r\n massEmail.StudentIds = this.dataSource.filteredData.map((student: Student) => student.Id);\r\n }\r\n this.dialog.open(MassEmailViewComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '100vw',\r\n height: '100vh',\r\n maxWidth: '100vw',\r\n maxHeight: '100vh',\r\n disableClose: true,\r\n data: {\r\n massEmail: massEmail\r\n },\r\n });\r\n }\r\n\r\n displaySelectedStudentsModal(students) {\r\n this.dialog.open(StudentListModalComponent, {\r\n minWidth: '60%',\r\n minHeight: '50%',\r\n maxHeight: '65%',\r\n autoFocus: false,\r\n disableClose: true,\r\n data: students\r\n }).afterClosed().subscribe(message => {\r\n if (message == 'ClearStudents') {\r\n this.selectedStudents = [];\r\n if (this.data.selectedStudents) {\r\n this.data.selectedStudents = [];\r\n }\r\n this.studentGridData.forEach(s => {\r\n s.isSelected = false;\r\n });\r\n this.dataSource.data = this.studentGridData;\r\n }\r\n });\r\n }\r\n\r\n private sortSchools() {\r\n this.schools = this.schools.sort(function (a, b) {\r\n if (a.SchoolName < b.SchoolName) {\r\n return -1;\r\n }\r\n if (a.SchoolName > b.SchoolName) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n private setPreferences() {\r\n if (this.userPreferencesService.generalPreferences != null) {\r\n this.defaultCursorPosition = this.userPreferencesService.generalPreferences.DefaultCursorPosition;\r\n this.showStudentAlerts = this.userPreferencesService.generalPreferences.ShowStudentAlerts;\r\n this.prepopulateStudentSearch = this.userPreferencesService.generalPreferences.PrepopulateStudent;\r\n } else {\r\n this.defaultCursorPosition = 1;\r\n this.showStudentAlerts = false;\r\n this.prepopulateStudentSearch = true;\r\n }\r\n }\r\n\r\n private getSearchCriteria() {\r\n this.searchCriteria = this.studentSearchService.getSearchCriteria();\r\n if (!this.searchCriteria) {\r\n this.searchCriteria = new StudentSearchCriteria(\r\n this.yearService.defaultYear.Id,\r\n '',\r\n '',\r\n '',\r\n this.yearService.defaultYear.SchoolID.toString(),\r\n 'Active'\r\n );\r\n }\r\n }\r\n\r\n selectAllCheckBoxChange() {\r\n // ---ONE-ONE-10914----\r\n this.dataSource.filteredData.forEach(s => {\r\n s.isSelected = this.allStudentsSelected;\r\n });\r\n this.selectedStudents = [];\r\n // Add to the selected student list\r\n this.dataSource.filteredData.forEach(s => {\r\n if (s.isSelected) {\r\n if (this.selectedStudents.indexOf(s) == -1) {\r\n this.selectedStudents.push(s);\r\n }\r\n } else {\r\n this.selectedStudents = this.selectedStudents.filter(stu => stu.Id !== s.Id);\r\n }\r\n });\r\n\r\n // ############\r\n if (this.dataSource.sort.direction == 'asc') {\r\n this.selectedStudents = _.orderBy(this.selectedStudents, [this.dataSource.sort.active], ['asc']);\r\n }\r\n if (this.dataSource.sort.direction == 'desc') {\r\n this.selectedStudents = _.orderBy(this.selectedStudents, [this.dataSource.sort.active], ['desc']);\r\n }\r\n // ############\r\n }\r\n\r\n selectCheckBoxChange() {\r\n if (this.studentGridData.filter(s => s.isSelected == true).length == this.studentGridData.length) {\r\n this.allStudentsSelected = true;\r\n } else {\r\n this.allStudentsSelected = false;\r\n }\r\n }\r\n\r\n showColumn(columnName: string) {\r\n return this.defaultColumns.find(s => s.name == columnName).active;\r\n }\r\n\r\n getRegEx(columnName: string, regExValue?: string) {\r\n const col = this.defaultColumns.find(c => c.name == columnName);\r\n const reg = this.regularExpressions.find(r => r.value == col.regEx);\r\n if (reg) {\r\n return reg.value == regExValue;\r\n }\r\n }\r\n\r\n getRowClass = (row) => {\r\n if (row.isSelected) {\r\n return 'selected-row';\r\n }\r\n }\r\n\r\n validateStudentNumberKey(event: KeyboardEvent) {\r\n // PRE: a key is entered into the csv\r\n // POST: ensures that it matches the format\r\n if (!this.studentNumberKeyRestriction.test(event.key) &&\r\n event.key != 'Backspace' &&\r\n event.key != 'Tab') {\r\n event.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n processFilters() {\r\n const gridData = _.cloneDeep(this.studentSearchData);\r\n setTimeout(() => {\r\n if (this.activeFilters.length > 0) {\r\n // loop through and filter\r\n for (let i = 0; i < this.activeFilters.length; i++) {\r\n const regEx = RegexDirective.RegExBuilder(this.activeFilters[i].filter, this.activeFilters[i].regEx);\r\n if (i == 0) {\r\n this.studentGridData = gridData.filter(data => {\r\n return data[this.activeFilters[i].name].toString().toLowerCase().match(regEx);\r\n });\r\n }\r\n else {\r\n this.studentGridData = this.studentGridData.filter(data => {\r\n return data[this.activeFilters[i].name].toString().toLowerCase().match(regEx);\r\n });\r\n }\r\n this.dataSource.data = this.studentGridData;\r\n }\r\n }\r\n }, 1);\r\n }\r\n\r\n private compareByDate(a, b): number {\r\n a = moment(a, 'MM/DD/YY');\r\n b = moment(b, 'MM/DD/YY');\r\n if (a < b) {\r\n return -1;\r\n } else if (b < a) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n clearFilter() {\r\n this.dataSource.removeAllFilters();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { EventEmitter, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { StudentList } from '../../classroom360/student-lists/student-list.model';\r\nimport { Alerts } from '../student/student.model';\r\nimport { System } from '../System';\r\nimport { YearService } from '../year/year.service';\r\nimport { StudentSearchModel } from './student-search-model';\r\nimport {StudentSearchCriteria} from './student-search-criteria.model';\r\n\r\n@Injectable()\r\nexport class StudentSearchService {\r\n filterCriteria: any[]; // Stores the inputs from the header columns of the grid.\r\n private _SearchCriteria: StudentSearchCriteria; // Stores the inputs from the top of the student search\r\n addStudentListEvent = new EventEmitter();\r\n unsavedStudentFilter = false; // This is used when creating a filter and selecting continue without saving.\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService) {\r\n }\r\n\r\n get searchCriteria() {\r\n return this._SearchCriteria;\r\n }\r\n\r\n set searchCriteria(searchCriteria: StudentSearchCriteria) {\r\n this._SearchCriteria = searchCriteria;\r\n }\r\n\r\n getStudentsBySearchCriteria(searchCriteria: StudentSearchCriteria): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetStudentsBySearchCriteria', searchCriteria);\r\n }\r\n\r\n getAlerts(studentIds: number[], yearId: number, schoolId: number, currentDate) {\r\n return this.http.post(System.apiURL.Student + `GetStudentAlerts?yearId=${yearId}&schoolId=${schoolId}¤tDate=${currentDate}`, studentIds);\r\n }\r\n\r\n getUserPreferences(studentId, pageURL, subjectListId?, subjectSection?, isDefaultPreferences?): Observable {\r\n return this.http.get(System.apiURL.Student + `GetUserPreferences?studentId=${studentId}&pageURL=${pageURL}&subjectListId=${subjectListId}&subjectSection=${subjectSection}&isDefaultPreferences=${isDefaultPreferences}`);\r\n }\r\n\r\n saveUserPreferences(studentId, pageURL, data, subjectListId?, subjectSection?, isDefaultPreferences?) {\r\n return this.http.post(System.apiURL.Student + `SaveUserPreferences?studentId=${studentId}&pageURL=${pageURL}&subjectListId=${subjectListId}&subjectSection=${subjectSection}&isDefaultPreferences=${isDefaultPreferences}`, data);\r\n }\r\n\r\n saveFilterCriteria(searchFields) {\r\n this.filterCriteria = searchFields;\r\n }\r\n\r\n getSearchCriteria() {\r\n return this.searchCriteria;\r\n }\r\n\r\n resetSearchCriteria() {\r\n this.searchCriteria = new StudentSearchCriteria(\r\n this.yearService.defaultYear.Id,\r\n '',\r\n '',\r\n '',\r\n this.yearService.defaultYear.SchoolID.toString(),\r\n 'Active'\r\n );\r\n }\r\n}\r\n","export class AcademicHistorySummary {\r\n Id: number;\r\n WeightedGPA: number;\r\n UnWeightedGPA: number;\r\n ClassRankIn: number;\r\n ClassRankOut: number;\r\n V9Flag: boolean;\r\n CalculatedOn: Date;\r\n CalculatedBy: string;\r\n RankCalculatedOn: Date;\r\n RankCalculatedBy: string;\r\n RankOutdated: boolean;\r\n S360ClassRank: boolean;\r\n}","import { CategoryAverage, ReportCardGradesStandards, ReportCardGradesTerm } from '../../student360/grades/grades.model';\r\nimport { Profile } from '../profile-table/profile.model';\r\nimport { System } from '../System';\r\nimport { AttendanceDetails } from './attendance-details.model';\r\nimport { CourseTerm } from './course-term.model';\r\nimport { Enrollment } from './enrollment.model';\r\n\r\nexport class CourseSchedule {\r\n\r\n\t// Properties\r\n\t// int MaxPeriod: static;\r\n\tId: number;\r\n\tSchoolId: number;\r\n\tSiteYearId: number;\r\n\tSiteSectionId: number;\r\n\tSiteSectionIds: number[];\r\n\tMeets: string;\r\n\tDropped: string;\r\n\tTerm: string;\r\n\tCourse: string;\r\n\tAbbreviatedTitle: string;\r\n\tTeacher: string;\r\n\tTeacherEmail: string;\r\n\tTeacherName: string;\r\n\tTeacherMemId: number;\r\n\tRoom: string;\r\n\tUsedForGrading: boolean;\r\n\tSubjectCode: string;\r\n\tSection: string;\r\n\tStartEndTime: string;\r\n\tSchoolName: string;\r\n\tTeacherId: number;\r\n\tSubjectTermType: string;\r\n\tStartPeriod: number;\r\n\tConsecutivePeriod: number;\r\n\tAbsences: number;\r\n\tTardies: number;\r\n\tAttendanceDetails: AttendanceDetails[];\r\n\tCalendarAssignments: any[];\r\n\tCourseTerms: CourseTerm[];\r\n\tReportCardGradesTerms: ReportCardGradesTerm[];\r\n\tReportCardGradesStandards: ReportCardGradesStandards[];\r\n\tCreditEarned: number;\r\n\tCreditAttempted: number;\r\n\tShowTraditionalTab: boolean;\r\n\tShowStandardTab: boolean;\r\n\tCurriculum: string;\r\n\tDescription: string;\r\n\tIsCurrentLocation: boolean;\r\n\tIsHomeRoom: boolean;\r\n\tCourseProfile: Profile[];\r\n\tTeacherProfile: Profile[];\r\n\tStaffPicture: any[];\r\n\tCourseStartDate: Date = null;\r\n\tCourseEndDate: Date = null;\r\n\tDisplayDroppedClasses: boolean;\r\n\tEntryDate: Date = null;\r\n\tWithdrawalDate: Date = null;\r\n\tDroppedDate: Date = null;\r\n\tGradingCycle: string;\r\n\tPeriodDayCode: string;\r\n\tShowOnGradesPage: boolean;\r\n\tTeamCode: string;\r\n\tCategoryAverages: CategoryAverage[];\r\n\tCategoriesTerms: any;\r\n\tAttendanceType: string;\r\n\r\n\t// Local Properties\r\n\tprivate _showSchool: { [key: number]: boolean } = {};\r\n\tprivate _entryDate: Date;\r\n\tprivate _droppedDate: Date;\r\n\tTempReportCardGradesTerms: ReportCardGradesTerm[];\r\n\r\n\t// Methods\r\n\tgetShowSchool(studentEnrollment: Enrollment): boolean {\r\n\t\t// POST: determines if the school should be shown with the name\r\n\r\n\t\t// If no student enrollment is supplied, always return false\r\n\t\tif (!studentEnrollment) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Checking if we've set this one yet\r\n\t\tif (this._showSchool[studentEnrollment.Id] == undefined) {\r\n\t\t\tthis._showSchool[studentEnrollment.Id] = studentEnrollment.SchoolName &&\r\n\t\t\t\tthis.SchoolName &&\r\n\t\t\t\tstudentEnrollment.SchoolName.trim().toUpperCase() != this.SchoolName.trim().toUpperCase();\r\n\t\t}\r\n\r\n\t\t// Returning our cached value\r\n\t\treturn this._showSchool[studentEnrollment.Id];\r\n\t}\r\n\r\n\tgetEntryDate() {\r\n\t\t// POST: obtains the entry date if it's valid (removing the junk date)\r\n\t\tif (this._entryDate == undefined) {\r\n\t\t\tif (this.EntryDate && this.EntryDate.toString() != System.junkDateString && this.EntryDate.toString() != System.junkDate.toString()) {\r\n\t\t\t\tthis._entryDate = this.EntryDate;\r\n\t\t\t} else {\r\n\t\t\t\tthis._entryDate = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._entryDate;\r\n\t}\r\n\r\n\tgetDroppedDate() {\r\n\t\t// POSt: obtains the dropped date if it's valid (removing the junk date)\r\n\t\tif (this._droppedDate == undefined) {\r\n\t\t\tif (this.DroppedDate && this.DroppedDate.toString() != System.junkDateString && this.DroppedDate.toString() != System.junkDate.toString()) {\r\n\t\t\t\tthis._droppedDate = this.DroppedDate;\r\n\t\t\t} else {\r\n\t\t\t\tthis._droppedDate = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._droppedDate;\r\n\t}\r\n}\r\n","import { StudentDocumentAccessHistory } from './student-documents-accesshistory.model';\r\n\r\nexport class StudentDocuments {\r\n DocumentId: number;\r\n Name: string;\r\n DocumentType: string;\r\n FileType: string;\r\n Notes: string;\r\n DocumentFor: string;\r\n CreatedBy: string;\r\n CreatedOn: Date = undefined; // We do this for conversion\r\n FileName: string;\r\n FileBase64: string;\r\n FileMimeType: string;\r\n AccessHistory: StudentDocumentAccessHistory[];\r\n RecentAccessHistory: string;\r\n Delete: boolean;\r\n StudentName: string;\r\n StudentId: number;\r\n FamilyId: number;\r\n DocumentTypeId: number;\r\n PermissionsCategory: string;\r\n}\r\n","import { Component, OnInit, Input, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { UserPreferencesService } from '../../user-preferences/user-preferences.service';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport { StudentService } from '../student.service';\r\nimport { UserService } from '../../user/user.service';\r\n\r\n@Component({\r\n selector: 'student-name',\r\n template: '{{formattedName}}',\r\n styleUrls: ['./student-name.component.css']\r\n})\r\nexport class StudentNameComponent implements OnInit, OnChanges {\r\n\r\n @Input() firstName: string;\r\n @Input() lastName: string;\r\n @Input() middleName: string;\r\n @Input() nickName: string;\r\n formattedName = '';\r\n generalPreferencesSubscription: Subscription;\r\n isComponentInitialized = false;\r\n\r\n constructor(\r\n private userPreferencesService: UserPreferencesService,\r\n private studentService: StudentService,\r\n private userService: UserService\r\n ) {\r\n this.generalPreferencesSubscription = this.userPreferencesService.observablegeneralPreferencesStream$.subscribe(\r\n preferences => {\r\n this.formatName();\r\n }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.formatName();\r\n this.isComponentInitialized = true;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.isComponentInitialized) {\r\n this.formatName();\r\n }\r\n }\r\n\r\n formatName() {\r\n if (this.userService.userType == 1) {\r\n this.formattedName = this.studentService.formatStudentName(this.firstName, this.middleName, this.lastName, this.nickName);\r\n }\r\n else {\r\n this.formattedName = this.firstName + ' ' + this.lastName;\r\n }\r\n }\r\n}\r\n","import { GeneralPreferences } from './../user-preferences/general-preferences.model';\r\n\r\nexport class Student {\r\n\r\n // Properties\r\n Id: number;\r\n FamilyId: number;\r\n StudentNumber: string;\r\n StudentDOENumber: string;\r\n SocialSecurityNumber: string;\r\n LastName: string;\r\n FirstName: string;\r\n MiddleName: string;\r\n NickName: string;\r\n DateOfBirth: string;\r\n Gender: string;\r\n Ethnicity: string;\r\n EMail: string;\r\n CellPhone: string;\r\n Age: number;\r\n Picture: Uint8Array;\r\n DisciplineCode: number;\r\n InvolvementType: string;\r\n IncidentComments: string;\r\n NonStudent: boolean;\r\n UnknownStudent: boolean;\r\n DRP_ID: number;\r\n DeletedFromReferral: boolean;\r\n PriorReferrals: number;\r\n EnrollmentId: number;\r\n EnrollmentSchool: string;\r\n EnrollmentDate: string;\r\n EnrollmentStatus: string;\r\n Enrollment: string;\r\n IEP: boolean;\r\n StudentAlerts: Alerts[];\r\n Grade: string;\r\n MemId: number;\r\n Suffix: string;\r\n PrimaryContact: boolean;\r\n SchoolName: string;\r\n EnrollDate: Date;\r\n WithdrawnDate: Date;\r\n AddedOn: Date;\r\n isSelected: boolean;\r\n SchoolDomain: number;\r\n HomeRoom_Class: string;\r\n Homeroom_CourseSection: string;\r\n Homeroom_Teacher: string;\r\n NewStudent: boolean;\r\n studentSelectionName: string;\r\n PickUp: boolean;\r\n DropOff: boolean;\r\n\r\n // NON DTO Variable\r\n // ONE-6748\r\n EnrollmentDateAsDate: Date;\r\n DateOfBirthAsDate: Date;\r\n\r\n\r\n // Class Functions\r\n get fullName(): string {\r\n return this.LastName + ' ' + this.FirstName;\r\n }\r\n\r\n // Methods\r\n formattedNameWithNumber(generalPreferences: GeneralPreferences): string {\r\n let nameWithNumber = this.formattedName(generalPreferences);\r\n if (generalPreferences.ShowStudentNumber) {\r\n if (this.NonStudent) {\r\n nameWithNumber += ' (' + this.StudentNumber + ')';\r\n } else {\r\n nameWithNumber += ' (#' + this.StudentNumber + ')';\r\n }\r\n }\r\n return nameWithNumber;\r\n }\r\n\r\n formattedName(generalPreferences: GeneralPreferences): string {\r\n let formattedName = '';\r\n if (generalPreferences) {\r\n const nameFormat = generalPreferences.StudentNameFormat;\r\n const middleNameFormat = generalPreferences.StudentMiddleNameFormat;\r\n const showNickname = generalPreferences.ShowNickname;\r\n if (nameFormat != '') {\r\n if (nameFormat == 'LNF') {\r\n formattedName = this.LastName + ', ';\r\n }\r\n if (nameFormat != 'FILN') {\r\n formattedName += this.FirstName;\r\n }\r\n if (nameFormat == 'FILN') {\r\n formattedName += this.FirstName.substr(0, 1);\r\n }\r\n if (showNickname && this.NickName != null && this.NickName != '') {\r\n formattedName += ' \"' + this.NickName + '\"';\r\n }\r\n if (middleNameFormat == 'SEN' && this.MiddleName != null && this.MiddleName != '') {\r\n formattedName += ' ' + this.MiddleName;\r\n }\r\n if (middleNameFormat == 'SFL' && this.MiddleName != null && this.MiddleName != '') {\r\n formattedName += ' ' + this.MiddleName.substr(0, 1);\r\n }\r\n if (nameFormat != 'LNF' && nameFormat != 'FNLI') {\r\n formattedName += ' ' + this.LastName;\r\n }\r\n if (nameFormat == 'FNLI') {\r\n formattedName += ' ' + this.LastName.substr(0, 1);\r\n }\r\n }\r\n }\r\n return formattedName;\r\n }\r\n formattedNumber(generalPreferences: GeneralPreferences, overridePref: boolean = false): string {\r\n let studentNumber = '';\r\n if (generalPreferences.ShowStudentNumber || overridePref) {\r\n if (this.NonStudent) {\r\n studentNumber += ' (' + this.StudentNumber + ')';\r\n } else {\r\n studentNumber += ' ' + this.StudentNumber;\r\n }\r\n }\r\n return studentNumber;\r\n }\r\n}\r\n\r\nexport class Alerts {\r\n Id: number;\r\n StudentId: number;\r\n AlertType: string;\r\n Program: string;\r\n Service: string;\r\n Description: string;\r\n StartDate: Date;\r\n EndDate: Date;\r\n AlertIcon: number[];\r\n Sequence: number;\r\n ContactName: string;\r\n ContactRelationship: string;\r\n UserHasPermisison: boolean;\r\n IsConfidential: boolean;\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { FamilyRegistrationStudent } from '../../shared-modules/family-registration/family-registration-student.model';\r\nimport { StudentDailyAttendance } from '../../student360/attendance/daily-attendance/student-daily-attendance.model';\r\nimport { OnlinePaymentConfiguration } from '../../student360/online-payment/models/online-payment-config.model';\r\nimport { Portfolio } from '../../student360/portfolio/portfolio.model';\r\nimport { StudentDetail } from '../../student360/student-details/student-detail.model';\r\nimport { StudentDigitalContent } from '../../student360/student-digital-content/models/student-digital-content.model';\r\nimport { CardStudentGrades } from '../../student360/student-summary/cards/student/current-grades-card/card-student-grades';\r\nimport { CheckForErrorsGuard } from '../guards/check-for-errors/check-for-errors.guard';\r\nimport { UnsavedChangesGuard } from '../guards/unsaved-changes/unsaved-changes.guard';\r\nimport { StudentAlerts } from '../models/student-alerts.model';\r\nimport { SharedService } from '../shared.service';\r\nimport { System } from '../System';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { UserService } from '../user/user.service';\r\nimport { YearService } from '../year/year.service';\r\nimport { AcademicHistorySummary } from './academic-history-summary.model';\r\nimport { AcademicHistory } from './academic-history.model';\r\nimport { Attendance, ExcessiveAttendance, SpecialAdditionalAttendance, StudentTeamAttendance } from './attendance.model';\r\nimport { CourseSchedule } from './course-schedule.model';\r\nimport { Discipline } from './discipline.model';\r\nimport { Enrollment } from './enrollment.model';\r\nimport { StudentContact } from './student-contact.model';\r\nimport { StudentDocuments } from './student-documents.model';\r\nimport { Alerts, Student } from './student.model';\r\nimport { StudentAddress } from '../../student360/student-details/view-student-address/student-address.model';\r\nimport { Year } from '../year/year.model';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class StudentService {\r\n\r\n private _previousSelectedStudent: Student;\r\n private _selectedStudent: Student;\r\n private observableSelectedStudent = new BehaviorSubject(-1);\r\n selectedStudentStream$ = this.observableSelectedStudent.asObservable();\r\n public lastSelectedStudent = null;\r\n public students: Student[];\r\n private observableStudents = new BehaviorSubject(null);\r\n observableStudentsStream$ = this.observableStudents.asObservable();\r\n student: Student;\r\n private observableStudentEnrollment = new BehaviorSubject(null);\r\n observableStudentEnrollmentStream$ = this.observableStudentEnrollment.asObservable();\r\n private _studentEnrollment: Enrollment;\r\n enrollmentYears: any[];\r\n studentPrimaryContacts: StudentContact[];\r\n recentStudents: Student[] = [];\r\n legacySelectedStudentId = 0;\r\n alerts: StudentAlerts[] = [];\r\n previousArrayForAlerts: number[] = [];\r\n selectedCourse: CourseSchedule;\r\n selectedSectionId = -1;\r\n selected: string;\r\n selectionIndex = 0;\r\n selectedProgramName: string;\r\n selectedServiceName: string;\r\n StandradTabByCurrentGrade = false;\r\n // V9 ONE-6156\r\n selectedCardCourse: CardStudentGrades;\r\n observableSelectedProgramAndService = new Subject();\r\n observableSelectedProgramAndServiceStream = this.observableSelectedProgramAndService.asObservable();\r\n\r\n // Common use in fine-billing, Meal-service, online Payment and fine -billing and Meal service card.\r\n // Online Payment Configuration\r\n private _onlinePaymentConfiguration: OnlinePaymentConfiguration = new OnlinePaymentConfiguration();\r\n public get onlinePaymentConfiguration(): OnlinePaymentConfiguration {\r\n return this._onlinePaymentConfiguration;\r\n }\r\n\r\n public set onlinePaymentConfiguration(value: OnlinePaymentConfiguration) {\r\n this._onlinePaymentConfiguration = value;\r\n this.observableOnlinePaymentConfiguration.next(value);\r\n }\r\n\r\n public observableOnlinePaymentConfiguration = new Subject();\r\n observableOnlinePaymentConfigurationStream$ = this.observableOnlinePaymentConfiguration.asObservable();\r\n\r\n studentDocuments: StudentDocuments[];\r\n public observableStudentDocuments = new BehaviorSubject(null);\r\n observableStudentDocumentsStream$ = this.observableStudentDocuments.asObservable();\r\n private _panelFilter: boolean;\r\n public get panelFilter(): boolean {\r\n return this._panelFilter;\r\n }\r\n\r\n public set panelFilter(value: boolean) {\r\n this._panelFilter = value;\r\n this.observablePanelFilter.next(value);\r\n }\r\n public observablePanelFilter = new Subject();\r\n observablePanelFilterStream$ = this.observablePanelFilter.asObservable();\r\n\r\n\r\n private _medicalShowAlert: boolean;\r\n public get medicalShowAlert(): boolean {\r\n return this._medicalShowAlert;\r\n }\r\n\r\n public set medicalShowAlert(value: boolean) {\r\n this._medicalShowAlert = value;\r\n this.observableMedicalShowAlert.next(value);\r\n }\r\n\r\n public observableMedicalShowAlert = new Subject();\r\n observableMedicalShowAlertStream$ = this.observableMedicalShowAlert.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private sharedService: SharedService,\r\n private userPreferencesService: UserPreferencesService,\r\n private unsavedChangesGuard: UnsavedChangesGuard,\r\n private checkForErrorsGuard: CheckForErrorsGuard,\r\n private router: Router\r\n ) {\r\n\r\n // If the academic year or school changes, reset the selected students\r\n this.yearService.observableDefaultYearStream$.subscribe(() => {\r\n this.lastSelectedStudent = null;\r\n if (this.selectedStudent) {\r\n this.getStudentEnrollments(\r\n this.selectedStudent.Id,\r\n this.yearService.defaultYear.Id\r\n ).pipe(take(1)).subscribe(enrollments => {\r\n let hasEnrollment = false;\r\n enrollments.forEach(enrollment => {\r\n if (enrollment.SchoolId == this.yearService.defaultYear.SchoolID) {\r\n hasEnrollment = true;\r\n }\r\n });\r\n if (!hasEnrollment) {\r\n this.selectedStudent = null;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n get previousSelectedStudent(): Student {\r\n return this._previousSelectedStudent;\r\n }\r\n\r\n get selectedStudent(): Student {\r\n return this._selectedStudent;\r\n }\r\n\r\n set selectedStudent(value: Student) {\r\n // PRE: a student to set the selected student to\r\n // POST: updates the student, but does NOT signal the observable for timing reasons\r\n // Also, if the value is not null, sets that to the last selected student\r\n this._previousSelectedStudent = this.selectedStudent;\r\n this._selectedStudent = value;\r\n if (value) {\r\n this.lastSelectedStudent = value;\r\n this.updateRecentStudents(value);\r\n }\r\n }\r\n\r\n clearSelectedStudent() {\r\n this._selectedStudent = null;\r\n this.lastSelectedStudent = null;\r\n this.studentEnrollment = null;\r\n this.students = [];\r\n }\r\n\r\n getStudentIsValidForUser(studentId: number = 0): Observable {\r\n // added if statement due to default value not always being used\r\n if (!studentId) {\r\n studentId = 0;\r\n }\r\n\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentIsValidForUser' + queryString);\r\n }\r\n\r\n getParentAssignedStudents(userId, yearId, userType): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetParentAssignedStudents?loginid=' + userId + '&yearId=' + yearId + '&userType=' + userType);\r\n }\r\n\r\n public get studentEnrollment(): Enrollment {\r\n return this._studentEnrollment;\r\n }\r\n\r\n public set studentEnrollment(enrollment: Enrollment) {\r\n if (!_.isEqual(enrollment, this._studentEnrollment)) {\r\n this._studentEnrollment = enrollment;\r\n this.observableStudentEnrollment.next(enrollment);\r\n }\r\n }\r\n\r\n updateStudents(students: Student[], index = 0) {\r\n this.students = students;\r\n this.observableStudents.next(students);\r\n if (students.length > 0) {\r\n this.updateSelectedStudent(this.students[index].Id);\r\n }\r\n }\r\n\r\n updateRecentStudents(student: Student) {\r\n // Remove student if already exists\r\n this.recentStudents = this.recentStudents.filter(s => s.Id !== student.Id);\r\n // Add the student to the front of the list\r\n this.recentStudents.unshift(student);\r\n // Keep the list to 10 students\r\n if (this.recentStudents.length > 10) {\r\n this.recentStudents.length = 10;\r\n }\r\n }\r\n\r\n clearRecentStudents() {\r\n this.recentStudents.length = 0;\r\n }\r\n\r\n updateSelectedStudent(studentId: number) {\r\n const canContinue = this.unsavedChangesGuard.checkForDeactivation() && this.checkForErrorsGuard.checkForDeactivation();\r\n if (canContinue instanceof Observable) {\r\n canContinue.subscribe(clickedOk => {\r\n if (clickedOk) {\r\n if (studentId != null) {\r\n this.updateStudentEnrollment(studentId);\r\n } else {\r\n this.observableSelectedStudent.next(null);\r\n }\r\n }\r\n });\r\n } else if (canContinue) {\r\n if (studentId != null) {\r\n this.updateStudentEnrollment(studentId);\r\n } else {\r\n this.selectedStudent = null;\r\n this.observableSelectedStudent.next(null);\r\n }\r\n }\r\n }\r\n\r\n updateStudentEnrollment(studentId: number) {\r\n if (this.selectedStudent == null || this.selectedStudent.Id != studentId) {\r\n this.selectedStudent = this.students.filter(student => student.Id == studentId)[0];\r\n this.yearService.getUserYears(this.userService.userId, this.userService.userType, studentId).subscribe(years => {\r\n\r\n // ONE-12175\r\n // This should be a temporary fix only. The header should not restrict years that a student is enrolled in outside of Student 360.\r\n // It may be a problem in other areas outside of Reg/Enroll, but this is likely the safest quick fix for now.\r\n let url = this.router.url;\r\n if (url.indexOf('registrationEnroll') == -1) {\r\n this.yearService.loadYears(years);\r\n this.yearService.years = years;\r\n }\r\n\r\n if (this.yearService.student360Year != undefined) {\r\n this.getStudentEnrollment(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(enrollment => {\r\n this.studentEnrollment = enrollment;\r\n if (this.userService.studentInformationView) {\r\n this.enrollmentYears = enrollment.EnrollmentYears;\r\n }\r\n this.observableSelectedStudent.next(studentId);\r\n });\r\n } else {\r\n this.getStudentEnrollment(this.selectedStudent.Id, this.yearService.defaultYear.Id).subscribe(enrollment => {\r\n this.studentEnrollment = enrollment;\r\n this.observableSelectedStudent.next(studentId);\r\n });\r\n }\r\n });\r\n } else {\r\n this.getStudentEnrollment(this.selectedStudent.Id, this.yearService.defaultYear.Id).subscribe(enrollment => {\r\n this.studentEnrollment = enrollment;\r\n if (this.userService.studentInformationView) {\r\n this.enrollmentYears = enrollment.EnrollmentYears;\r\n }\r\n this.observableSelectedStudent.next(studentId);\r\n });\r\n }\r\n }\r\n\r\n updateStudentsNFR(students: FamilyRegistrationStudent[]) {\r\n this.students = [];\r\n students.forEach(std => {\r\n const student = new Student();\r\n student.Id = std.id;\r\n student.FirstName = std.FirstNameNew;\r\n student.MiddleName = std.MiddleNameNew;\r\n student.LastName = std.LastNameNew;\r\n this.students.push(student);\r\n });\r\n }\r\n\r\n getStudentEnrollment(studentId: number, academicYearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&academicYearId=' + academicYearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentEnrollment' + queryString);\r\n }\r\n\r\n getStudentEnrollmentYears(studentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentEnrollmentYears' + queryString);\r\n }\r\n\r\n getStudentEnrollments(studentId: number, academicYearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&academicYearId=' + academicYearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentEnrollments' + queryString);\r\n }\r\n\r\n getStudentAttendance(studentId: number, yearId: number, showAllAttendanceCodes: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&showAllAttendanceCodes=' + showAllAttendanceCodes;\r\n return this.http.get(System.apiURL.Student + 'GetStudentAttendance' + queryString);\r\n }\r\n\r\n getStudentDailyAttendance(yearId: number, studentId: number): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetStudentDailyAttendance?yearId=' + yearId + '&studentId=' + studentId);\r\n }\r\n\r\n\r\n getAcademicHistory(studentId: number, yearId: number, isShowHSTranscript: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&isShowHSTranscript=' + isShowHSTranscript;\r\n return this.http.get(System.apiURL.Student + 'GetAcademicHistory' + queryString);\r\n }\r\n\r\n getAcademicHistorySummary(studentId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetAcademicHistorySummary' + queryString);\r\n }\r\n\r\n getStudentIdsByStudentNumbers(studentNumbers: string[]): Observable {\r\n return this.http.post(System.apiURL.Student + `getStudentIdsByStudentNumbers`, studentNumbers, { observe: 'response' });\r\n }\r\n\r\n getStudentSchedule(studentId: number, yearId: number, viewOption: number, includeAttendance: boolean, includeReportCardGrades: boolean, IsProgressGrades: boolean, userid: number, includeDropped: boolean, includeWithdrawnStudent: boolean, blnIncludeTerms: boolean, showAllAttendanceCodes: boolean, termDefinationId = 0): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&viewOption=' + viewOption +\r\n '&includeAttendance=' + includeAttendance +\r\n '&includeReportCardGrades=' + includeReportCardGrades +\r\n '&IsProgressGrades=' + IsProgressGrades +\r\n '&userid=' + userid +\r\n '&includeDropped=' + includeDropped +\r\n '&includeWithdrawnStudent=' + includeWithdrawnStudent +\r\n '&blnIncludeTerms=' + blnIncludeTerms +\r\n '&showAllAttendanceCodes=' + showAllAttendanceCodes +\r\n '&termDefinationId=' + termDefinationId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentSchedule' + queryString);\r\n }\r\n\r\n getStudent(studentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?id=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetStudent' + queryString);\r\n }\r\n\r\n /**\r\n * Retrieves an array of StudentContact for a given student\r\n * @param studentId The Id of the student whose contacts you want to retrieve\r\n */\r\n getStudentPrimaryContacts(studentId: number) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentPrimaryContacts' + queryString);\r\n }\r\n\r\n getSpecialAttendance(studentId: number, yearId: number) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetSpecialAttendance' + queryString);\r\n }\r\n\r\n getExcessiveAttendance(studentId: number, yearId: number) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetExcessiveAttendance' + queryString);\r\n }\r\n\r\n getAttendanceDaysAndHoursInfo(studentId: number, yearId: number) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetAttendanceDaysAndHoursInfo' + queryString);\r\n }\r\n\r\n getStudentDiscipline(studentId: number, yearId: number, userId: number) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&userId=' + userId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentDiscipline' + queryString);\r\n }\r\n\r\n formatStudentName(firstName: string, middleName: string, lastName: string, nickName: string): string {\r\n let formattedName = '';\r\n if (this.userPreferencesService.generalPreferences) {\r\n const nameFormat = this.userPreferencesService.generalPreferences.StudentNameFormat;\r\n const middleNameFormat = this.userPreferencesService.generalPreferences.StudentMiddleNameFormat;\r\n const showNickname = this.userPreferencesService.generalPreferences.ShowNickname;\r\n if (nameFormat != '') {\r\n if (nameFormat == 'LNF') {\r\n formattedName = lastName + ', ';\r\n }\r\n if (nameFormat != 'FILN') {\r\n formattedName += firstName;\r\n }\r\n if (nameFormat == 'FILN') {\r\n formattedName += firstName.substr(0, 1);\r\n }\r\n if (showNickname && nickName != null && nickName != '') {\r\n formattedName += ' \"' + nickName + '\"';\r\n }\r\n if (middleNameFormat == 'SEN' && middleName != null && middleName != '') {\r\n formattedName += ' ' + middleName;\r\n }\r\n if (middleNameFormat == 'SFL' && middleName != null && middleName != '') {\r\n formattedName += ' ' + middleName.substr(0, 1);\r\n }\r\n if (nameFormat != 'LNF' && nameFormat != 'FNLI') {\r\n formattedName += ' ' + lastName;\r\n }\r\n if (nameFormat == 'FNLI') {\r\n formattedName += ' ' + lastName.substr(0, 1);\r\n }\r\n }\r\n }\r\n return formattedName;\r\n }\r\n\r\n getStudentDetails(studentId: number, yearId: number, userId: number, skipEnrollmentsContactsSiblings: boolean = false) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&userId=' + userId +\r\n '&skipEnrollmentsContactsSiblings=' + skipEnrollmentsContactsSiblings;\r\n return this.http.get(System.apiURL.Student + 'GetStudentDetails' + queryString);\r\n }\r\n\r\n getStudentAddresses(studentId: number) {\r\n return this.http.get(System.apiURL.Student + 'GetStudentAddresses?studentId=' + studentId);\r\n }\r\n\r\n getStudentDocuments(studentId: number, yearId: number, showEntireFamilyDocuments: boolean = false, recentEvents: boolean = false) {\r\n const queryString = '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&ShowDocumentsEntireFamily=' + showEntireFamilyDocuments +\r\n '&recentEvents=' + recentEvents;\r\n return this.http.get(System.apiURL.Student + 'GetStudentDocuments' + queryString).pipe(\r\n map(results => {\r\n for (let i = 0; i < results.length; i++) {\r\n results[i] = System.convert(results[i], new StudentDocuments());\r\n }\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n deleteStudentDocuments(studentId: number, documentId: number, familyId: number): Observable {\r\n const queryString = '?studentId=' + studentId +\r\n '&documentId=' + documentId +\r\n '&familyId=' + familyId;\r\n return this.http.get(System.apiURL.Student + 'DeleteStudentAttachment' + queryString);\r\n }\r\n public saveAttachment(attachment: StudentDocuments, attachmentType: string): Observable {\r\n return this.http.post(System.apiURL.Student + `SaveStudentDocument?attachmentType=${attachmentType}`, attachment);\r\n }\r\n getAlerts(studentIds: number[]): Observable {\r\n // POST: obtains a list of student alerts from the server\r\n\r\n // If it is the previous call, just use our current alerts\r\n if (studentIds.find(studentId => this.previousArrayForAlerts.includes(studentId))) {\r\n studentIds.forEach(s => {\r\n return this.alerts.filter(x => x.StudentId == s); // ONE-5457\r\n });\r\n }\r\n\r\n // If this is not the previous call, get it from the server\r\n this.previousArrayForAlerts = studentIds;\r\n const currentDate = new Date();\r\n const dateString = currentDate.getMonth() + 1 + '/' + currentDate.getDate() + '/' + currentDate.getFullYear();\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '¤tDate=' + dateString;\r\n return this.http.post(System.apiURL.Student + 'GetStudentAlerts' + queryString, studentIds).pipe(\r\n map(result => {\r\n this.alerts = result;\r\n return this.alerts;\r\n })\r\n );\r\n }\r\n\r\n updateSelectedProgramAndService() {\r\n this.observableSelectedProgramAndService.next();\r\n }\r\n\r\n // Common use in fine-billing, Meal-service, online Payment and fine -billing and Meal service card.\r\n getOnlinePaymentConfiguration(): Observable {\r\n return this.sharedService.getOnlinePaymentConfiguration();\r\n }\r\n\r\n getStudentsByIds(studentIds: number[], showStudentPhoto = true): Observable {\r\n let queryString = '';\r\n queryString += '?showStudentPhoto=' + showStudentPhoto;\r\n return this.http.post(System.apiURL.Student + 'GetStudents' + queryString, studentIds);\r\n }\r\n\r\n getStudentsInformation(studentIds: number[]): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.post(System.apiURL.Student + 'GetStudentsInformation' + queryString, studentIds);\r\n }\r\n\r\n getStudentsBasicInformation(studentIds: number[]): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.post(System.apiURL.Student + 'GetStudentsBasicInformation' + queryString, studentIds);\r\n }\r\n\r\n public isStudentSpecialEd(studentId: number, forDate: Date): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId;\r\n queryString += '&forDate=' + forDate;\r\n\r\n return this.http.get(System.apiURL.Student + 'IsStudentSpecialEd' + queryString);\r\n }\r\n\r\n saveStudentDigitalContent(sdc: StudentDigitalContent, schoolId: number): Observable {\r\n let paramString = '';\r\n paramString += '?schoolId=' + schoolId;\r\n\r\n return this.http.post(System.apiURL.Student + 'SaveStudentDigitalContent' + paramString, sdc);\r\n }\r\n\r\n saveStudentPortfolio(document: Portfolio): Observable {\r\n return this.http.post(System.apiURL.Student + `SaveStudentPortfolio`, document, { observe: 'response' });\r\n }\r\n\r\n getStudentNamesByStudentIds(studentIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetStudentNamesByStudentIds', studentIds);\r\n }\r\n\r\n getStudentPicture(studentId: number, yearId: number): Observable {\r\n const queryString = '?studentId=' + studentId + '&siteYearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentPicture' + queryString);\r\n }\r\n\r\n getStudentTeamAttendanceAbsentTardiesCount(studentId: number, schoolId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&schoolId=' + schoolId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentTeamAttendanceAbsentTardiesCount' + queryString);\r\n }\r\n\r\n getStudentTeams(studentId: number = 0): Observable {\r\n const queryString = '?studentId=' + studentId +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&year=' + this.yearService.defaultYear.AYIdentifier;\r\n\r\n return this.http.get(System.apiURL.Classroom + 'GetStudentTeams' + queryString);\r\n }\r\n\r\n getStudentIdByNumber(studentNumber: string): Observable {\r\n const queryString = '?studentNumber=' + studentNumber;\r\n\r\n return this.http.get(System.apiURL.Student + 'getStudentIdByNumber' + queryString);\r\n }\r\n\r\n getStudentsByFamilyId(schoolId: number, yearId: number, familyId: number, includeAllStudents: boolean): Observable {\r\n const queryString = '?schoolId=' + schoolId +\r\n '&yearId=' + yearId +\r\n '&familyId=' + familyId +\r\n '&includeAllStudents=' + includeAllStudents;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetStudentsByFamilyId' + queryString);\r\n }\r\n\r\n getHouseholdParentsByFamilyID(familyId: number): Observable {\r\n const queryString = '?familyId=' + familyId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetHouseholdParentsByFamilyID' + queryString);\r\n }\r\n}\r\n","\r\n
\r\n\t{{header}}\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tStudent #\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{student.StudentNumber}}\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tName\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{{student.formattedName(generalPreferences)}}\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\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n","import {Component, Inject, OnInit, ViewChild} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport {Student} from '../student/student.model';\r\nimport {TylerMatTableDataSource} from '../angular-material/extended.class';\r\nimport {GeneralPreferences} from '../user-preferences/general-preferences.model';\r\nimport {StudentService} from '../student/student.service';\r\nimport {UserPreferencesService} from '../user-preferences/user-preferences.service';\r\nimport {StudentInformationComponent} from '../student-information/student-information.component';\r\nimport {LoginService} from '../../shared-modules/login/login.service';\r\nimport {DisciplineReferralStudent} from '../../classroom360/discipline-referral/discipline-referral-student.model';\r\n\r\n@Component({\r\n\tselector: 'app-students-to-add-dialog',\r\n\ttemplateUrl: './students-to-add-dialog.component.html',\r\n\tstyleUrls: ['./students-to-add-dialog.component.css']\r\n})\r\nexport class StudentsToAddDialogComponent implements OnInit {\r\n\r\n\t// Injected Properties\r\n\theader = 'Mass Add Students';\r\n\tstudents: Student[] = [];\r\n\r\n\t// Local Properties\r\n\ttableData = new TylerMatTableDataSource();\r\n\tgeneralPreferences: GeneralPreferences;\r\n\tprivate _sort: MatSort;\r\n\tV10: boolean;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\tprivate studentService: StudentService,\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate userPreferencesService: UserPreferencesService,\r\n\t\tprivate loginService: LoginService\r\n\t) { }\r\n\r\n\tget sort(): MatSort {\r\n\t\treturn this._sort;\r\n\t}\r\n\r\n\t@ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n\t\tthis._sort = value;\r\n\t\tthis.tableData.sort = value;\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.students = this.data.students;\r\n\t\tif (this.data.header) {\r\n\t\t\tthis.header = this.data.header;\r\n\t\t}\r\n\t\tthis.tableData.data = this.students;\r\n\t\tthis.generalPreferences = this.userPreferencesService.generalPreferences;\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\r\n\t\t// Changing the data accessor so that sorting happens correctly\r\n\t\tthis.tableData.sortingDataAccessor = (data: DisciplineReferralStudent, sortHeaderId: string): string|number => {\r\n\t\t\tswitch (sortHeaderId) {\r\n\t\t\t\tcase 'number':\r\n\t\t\t\t\tif (data.UnknownStudent) {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t} else if (data.NonStudent) {\r\n\t\t\t\t\t\treturn -2;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn Number.parseInt(data.StudentNumber, 10);\r\n\t\t\t\t\t}\r\n\t\t\t\tcase 'name': return data.formattedName(this.generalPreferences);\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif (data[sortHeaderId] instanceof Date) {\r\n\t\t\t\t\t\treturn data[sortHeaderId].getTime();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn this.tableData.defaultSortingAccessor(data, sortHeaderId);\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\tviewStudent(student: any) {\r\n\t\t// PRE: a student's name is clicked\r\n\t\t// POST: opens a sidenav for viewing student pages\r\n\t\tif (typeof student == 'number') {\r\n\t\t\tstudent = this.studentService.students.find(s => s.Id == student);\r\n\t\t}\r\n\t\tconst dialog = this.dialog.open(StudentInformationComponent, {\r\n\t\t\tpanelClass: 'tyl-mat-dialog',\r\n\t\t\tdisableClose: true,\r\n\t\t\theight: '100%',\r\n\t\t\tposition: {\r\n\t\t\t\ttop: '0px',\r\n\t\t\t\tright: '0px'\r\n\t\t\t}\r\n\t\t});\r\n\t\tdialog.componentInstance.student = student;\r\n\t\tdialog.componentInstance.students = [student];\r\n\t\tdialog.componentInstance.initMenu();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TylTranslation } from '../models/tyl-translation.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../System';\r\n\r\n@Injectable()\r\nexport class TranslationService {\r\n\r\n\tpublic overrideTranslationPipe: boolean = false;\r\n\tpublic revertToEnglish: boolean = false;\r\n\tpublic overrideTranslations: TylTranslation[] = [];\r\n\tpublic currentLanguageTranslations: TylTranslation[] = [];\r\n\r\n\tpublic _currentLanguage = 'en';\r\n\tpublic observableCurrentLanguage = new Subject();\r\n\tobservableCurrentLanguageStream$ = this.observableCurrentLanguage.asObservable();\r\n\tpublic get currentLanguage(): string {\r\n\t\treturn this._currentLanguage;\r\n\t}\r\n\r\n\tpublic set currentLanguage(value: string) {\r\n\t\tthis._currentLanguage = value;\r\n\t\tthis.setTranslationLanguage();\r\n\t\tthis.getLanguageTranslations();\r\n\t\tthis.observableCurrentLanguage.next(value);\r\n\t}\r\n\r\n\tconstructor(private translateService: TranslateService,\r\n\t\tprivate http: HttpClient) {\r\n\r\n\t}\r\n\r\n\tsetTranslationLanguage() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.translateService.use(this.currentLanguage);\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tpublic getLanguageTranslations() {\r\n\t\tlet language_ID: number;\r\n\r\n\t\t// TODO change to dto lookup\r\n\t\t// language must be 'en' for English, 'fr' for French, or 'es' for Spanish, or 'pt' for portuguese\r\n\t\tswitch (this.currentLanguage) {\r\n\t\t\tcase 'fr':\r\n\t\t\t\tlanguage_ID = 7;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'es':\r\n\t\t\t\tlanguage_ID = 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'pt':\r\n\t\t\t\tlanguage_ID = 107;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t// en\r\n\t\t\t\tlanguage_ID = 9;\r\n\t\t}\r\n\r\n\t\tthis.getTranslationsForLanguage(language_ID).subscribe(result => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.currentLanguageTranslations = result;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetLanguageId(iso: string): number {\r\n\t\tlet language_ID: number;\r\n\r\n\t\tswitch (iso) {\r\n\t\t\tcase 'fr':\r\n\t\t\t\tlanguage_ID = 7;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'es':\r\n\t\t\t\tlanguage_ID = 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'pt':\r\n\t\t\t\tlanguage_ID = 107;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t// en\r\n\t\t\t\tlanguage_ID = 9;\r\n\t\t}\r\n\r\n\t\treturn language_ID;\r\n\t}\r\n\r\n\tgetLanguageCode(id: number): string {\r\n\t\tlet languageCode: string;\r\n\r\n\t\tswitch (id) {\r\n\t\t\tcase 7:\r\n\t\t\t\tlanguageCode = 'fr';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1:\r\n\t\t\t\tlanguageCode = 'es';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 107:\r\n\t\t\t\tlanguageCode = 'pt';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t//9\r\n\t\t\t\tlanguageCode = 'en';\r\n\t\t}\r\n\r\n\t\treturn languageCode;\r\n\r\n\t}\r\n\r\n\t//------------------------------------------------------------------------------------\r\n\r\n\tgetTranslations(english: string[], language_ID: number): Observable {\r\n\t\tconst queryString = '?language_ID=' + language_ID;\r\n\t\treturn this.http.post(System.apiURL.Student + 'GetTranslations' + queryString, english);\r\n\t}\r\n\r\n\tgetTranslationsWithRichText(english: TylTranslation[], language_ID: number): Observable {\r\n\t\tconst queryString = '?language_ID=' + language_ID;\r\n\t\treturn this.http.post(System.apiURL.Student + 'GetTranslationsWithRichText' + queryString, english);\r\n\t}\r\n\r\n\tgetTranslationStatusForLanguages(english: TylTranslation[]): Observable {\r\n\t\treturn this.http.post(System.apiURL.Student + 'GetTranslationStatusForLanguages', english);\r\n\t}\r\n\r\n\tgetTranslationsForLanguage(language_ID: number): Observable {\r\n\t\tconst queryString = '?language_ID=' + language_ID;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetTranslationsForLanguage' + queryString);\r\n\t}\r\n\r\n\tsaveTranslations(translations: TylTranslation[], language_ID: number): Observable {\r\n\t\tconst queryString = '?language_ID=' + language_ID;\r\n\t\treturn this.http.post(System.apiURL.Student + 'SaveTranslations' + queryString, translations);\r\n\t}\r\n}\r\n\r\n","
\r\n
\r\n \r\n
\r\n
{{month | translate}} {{year}}
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
Sun
\r\n
\r\n \r\n
Mon
\r\n
\r\n \r\n
Tue
\r\n
\r\n \r\n
Wed
\r\n
\r\n \r\n
Thu
\r\n
\r\n \r\n
Fri
\r\n
\r\n \r\n
Sat
\r\n
\r\n \r\n
\r\n
{{date.day}}
\r\n
\r\n
\r\n
\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'tyl-cal-widget',\r\n templateUrl: './tyl-cal-widget.component.html',\r\n styleUrls: ['./tyl-cal-widget.component.css']\r\n})\r\nexport class TylCalWidgetComponent implements OnInit {\r\n\r\n calendarDates: CalendarDay[] = [];\r\n private _date: string;\r\n private _nonAttendanceDates: string[];\r\n private _eventDates: string[];\r\n @Output() monthChange: EventEmitter = new EventEmitter();\r\n @Output() dayClick: EventEmitter = new EventEmitter();\r\n month: string;\r\n year: string;\r\n @Input() showBellIcon = false;\r\n\r\n constructor() {\r\n }\r\n\r\n get nonAttendanceDates(): string[] {\r\n return this._nonAttendanceDates;\r\n }\r\n\r\n get date(): string {\r\n return this._date;\r\n }\r\n\r\n get eventDates(): string[] {\r\n return this._eventDates;\r\n }\r\n\r\n @Input() set nonAttendanceDates(value: string[]) {\r\n this._nonAttendanceDates = value;\r\n if (!this._nonAttendanceDates) {\r\n this._nonAttendanceDates = [];\r\n }\r\n this.populateCalendar();\r\n }\r\n\r\n @Input() set date(value: string) {\r\n this._date = value;\r\n if (!this._date) {\r\n this._date = moment().format('MM/DD/YYYY');\r\n }\r\n this.populateCalendar();\r\n }\r\n\r\n @Input() set eventDates(value: string[]) {\r\n this._eventDates = value;\r\n if (!this._eventDates) {\r\n this._eventDates = [];\r\n }\r\n this.populateCalendar();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n populateCalendar() {\r\n this.calendarDates.length = 42;\r\n this.month = moment(this.date, 'MM/DD/YYYY').format('MMMM');\r\n this.year = moment(this.date, 'MM/DD/YYYY').format('YYYY');\r\n const firstDayOfMonth = moment(this.date, 'MM/DD/YYYY').startOf('month');\r\n const startOfMonth = moment(this.date, 'MM/DD/YYYY').startOf('month').day();\r\n const calendarIndex = moment(firstDayOfMonth).add(-startOfMonth, 'day');\r\n // starting at the indexed day count the dates backwards\r\n for (let i = 0; i < this.calendarDates.length; i++) {\r\n this.calendarDates[i] = {\r\n date: calendarIndex.format('MM/DD/YYYY'),\r\n day: calendarIndex.date(),\r\n isToday: (calendarIndex.format('MM/DD/YYYY') == moment().format('MM/DD/YYYY')) ? true : false,\r\n isCurrentMonth: (calendarIndex.month() == moment(this.date, 'MM/DD/YYYY').month()) ? true : false,\r\n hasSchool: this.hasSchool(calendarIndex.format('MM/DD/YYYY')),\r\n hasEvents: this.hasEvents(calendarIndex.format('MM/DD/YYYY'))\r\n };\r\n calendarIndex.add(1, 'day');\r\n }\r\n let count = 0;\r\n // Check to see if we need the last row in the calendar\r\n for (let i = 35; i < this.calendarDates.length; i++) {\r\n if (this.calendarDates[i].isCurrentMonth == false) {\r\n count++;\r\n }\r\n }\r\n if (count == 7) {\r\n this.calendarDates.length = 35;\r\n }\r\n }\r\n\r\n changeMonth(action: string) {\r\n if (action == 'previous') {\r\n this.date = moment(this.date, 'MM/DD/YYYY').add(-1, 'month').format('MM/DD/YYYY');\r\n } else if (action == 'next') {\r\n this.date = moment(this.date, 'MM/DD/YYYY').add(1, 'month').format('MM/DD/YYYY');\r\n }\r\n this.monthChange.emit(this.date);\r\n this.populateCalendar();\r\n }\r\n\r\n hasSchool(date: string) {\r\n if (this.nonAttendanceDates) {\r\n return !this.nonAttendanceDates.includes(date);\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n hasEvents(date: string) {\r\n if (this.eventDates) {\r\n return this.eventDates.includes(date);\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n dayClicked(date: any) {\r\n this.dayClick.emit(date);\r\n }\r\n}\r\n\r\nexport class CalendarDay {\r\n date: string;\r\n day: number;\r\n isToday: boolean;\r\n isCurrentMonth: boolean;\r\n hasSchool: boolean;\r\n hasEvents: boolean;\r\n}\r\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Optional, Inject, NgModule } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\nimport * as _rollupMoment from 'moment';\nimport _rollupMoment__default from 'moment';\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 moment = _rollupMoment__default || _rollupMoment;\n/** InjectionToken for moment date adapter to configure options. */\nconst MAT_MOMENT_DATE_ADAPTER_OPTIONS = new InjectionToken('MAT_MOMENT_DATE_ADAPTER_OPTIONS', {\n providedIn: 'root',\n factory: MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY() {\n return {\n useUtc: false,\n };\n}\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/** Adapts Moment.js Dates for use with Angular Material. */\nclass MomentDateAdapter extends DateAdapter {\n constructor(dateLocale, _options) {\n super();\n this._options = _options;\n this.setLocale(dateLocale || moment.locale());\n }\n setLocale(locale) {\n super.setLocale(locale);\n let momentLocaleData = moment.localeData(locale);\n this._localeData = {\n firstDayOfWeek: momentLocaleData.firstDayOfWeek(),\n longMonths: momentLocaleData.months(),\n shortMonths: momentLocaleData.monthsShort(),\n dates: range(31, i => this.createDate(2017, 0, i + 1).format('D')),\n longDaysOfWeek: momentLocaleData.weekdays(),\n shortDaysOfWeek: momentLocaleData.weekdaysShort(),\n narrowDaysOfWeek: momentLocaleData.weekdaysMin(),\n };\n }\n getYear(date) {\n return this.clone(date).year();\n }\n getMonth(date) {\n return this.clone(date).month();\n }\n getDate(date) {\n return this.clone(date).date();\n }\n getDayOfWeek(date) {\n return this.clone(date).day();\n }\n getMonthNames(style) {\n // Moment.js doesn't support narrow month names, so we just use short if narrow is requested.\n return style == 'long' ? this._localeData.longMonths : this._localeData.shortMonths;\n }\n getDateNames() {\n return this._localeData.dates;\n }\n getDayOfWeekNames(style) {\n if (style == 'long') {\n return this._localeData.longDaysOfWeek;\n }\n if (style == 'short') {\n return this._localeData.shortDaysOfWeek;\n }\n return this._localeData.narrowDaysOfWeek;\n }\n getYearName(date) {\n return this.clone(date).format('YYYY');\n }\n getFirstDayOfWeek() {\n return this._localeData.firstDayOfWeek;\n }\n getNumDaysInMonth(date) {\n return this.clone(date).daysInMonth();\n }\n clone(date) {\n return date.clone().locale(this.locale);\n }\n createDate(year, month, date) {\n // Moment.js will create an invalid date if any of the components are out of bounds, but we\n // explicitly check each case so we can throw more descriptive errors.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n const result = this._createMoment({ year, month, date }).locale(this.locale);\n // If the result isn't valid, the date must have been out of bounds for this month.\n if (!result.isValid() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return this._createMoment().locale(this.locale);\n }\n parse(value, parseFormat) {\n if (value && typeof value == 'string') {\n return this._createMoment(value, parseFormat, this.locale);\n }\n return value ? this._createMoment(value).locale(this.locale) : null;\n }\n format(date, displayFormat) {\n date = this.clone(date);\n if (!this.isValid(date) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('MomentDateAdapter: Cannot format invalid date.');\n }\n return date.format(displayFormat);\n }\n addCalendarYears(date, years) {\n return this.clone(date).add({ years });\n }\n addCalendarMonths(date, months) {\n return this.clone(date).add({ months });\n }\n addCalendarDays(date, days) {\n return this.clone(date).add({ days });\n }\n toIso8601(date) {\n return this.clone(date).format();\n }\n /**\n * Returns the given value if given a valid Moment or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid Moments and empty\n * string into null. Returns an invalid date for all other values.\n */\n deserialize(value) {\n let date;\n if (value instanceof Date) {\n date = this._createMoment(value).locale(this.locale);\n }\n else if (this.isDateInstance(value)) {\n // Note: assumes that cloning also sets the correct locale.\n return this.clone(value);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = this._createMoment(value, moment.ISO_8601).locale(this.locale);\n }\n if (date && this.isValid(date)) {\n return this._createMoment(date).locale(this.locale);\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return moment.isMoment(obj);\n }\n isValid(date) {\n return this.clone(date).isValid();\n }\n invalid() {\n return moment.invalid();\n }\n /** Creates a Moment instance while respecting the current UTC settings. */\n _createMoment(date, format, locale) {\n const { strict, useUtc } = this._options || {};\n return useUtc ? moment.utc(date, format, locale, strict) : moment(date, format, locale, strict);\n }\n}\nMomentDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MomentDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: MAT_MOMENT_DATE_ADAPTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nMomentDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MomentDateAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MomentDateAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_MOMENT_DATE_ADAPTER_OPTIONS]\n }] }];\n } });\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 MAT_MOMENT_DATE_FORMATS = {\n parse: {\n dateInput: 'l',\n },\n display: {\n dateInput: 'l',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\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 */\nclass MomentDateModule {\n}\nMomentDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MomentDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMomentDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MomentDateModule });\nMomentDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MomentDateModule, providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\n },\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MomentDateModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\n },\n ],\n }]\n }] });\nclass MatMomentDateModule {\n}\nMatMomentDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMomentDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatMomentDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMomentDateModule, imports: [MomentDateModule] });\nMatMomentDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMomentDateModule, providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS }], imports: [[MomentDateModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMomentDateModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MomentDateModule],\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS }],\n }]\n }] });\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 */\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 */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY, MAT_MOMENT_DATE_FORMATS, MatMomentDateModule, MomentDateAdapter, MomentDateModule };\n","import { Directive } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n\tselector: '[dateValidator]',\r\n\tproviders: [{ provide: NG_VALIDATORS, useExisting: DateValidator, multi: true }]\r\n})\r\nexport class DateValidator implements Validator {\r\n\tvalidate(control: AbstractControl): { [key: string]: any } | null {\r\n\t\tlet dateValue = new Date(control.value);\r\n\t\tlet momentDateValue: moment.Moment;\r\n\t\tif (control.value && dateValue.toString() != 'Invalid Date') {\r\n\t\t\tif (control.value.toString().indexOf('T') > -1) {\r\n\t\t\t\tmomentDateValue = moment(control.value);\r\n\t\t\t} else {\r\n\t\t\t\tmomentDateValue = moment(control.value, 'MM/DD/YY');\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!control.value || dateValue.toString() != 'Invalid Date') {\r\n\t\t\tif (momentDateValue != undefined && momentDateValue.toString().toLocaleLowerCase() == 'invalid date') {\r\n\t\t\t\treturn { 'invalidDate': true };\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn { 'invalidDate': true };\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n {{label}}\r\n \r\n {{label | translate}}\r\n {{label | translate}} \r\n \r\n mm/dd/yyyy\r\n {{label}}\r\n {{customHint}}\r\n \r\n {{errorMessage}}\r\n \r\n Invalid date\r\n Required field\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MAT_MOMENT_DATE_FORMATS, MomentDateAdapter } from '@angular/material-moment-adapter';\r\nimport { TextMaskConfig } from 'angular2-text-mask/src/angular2TextMask';\r\nimport * as moment from 'moment';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'tyl-datepicker',\r\n templateUrl: './tyl-datepicker.component.html',\r\n styleUrls: ['./tyl-datepicker.component.css'],\r\n providers: [\r\n { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },\r\n { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },\r\n ]\r\n})\r\nexport class TylDatepickerComponent implements OnInit, OnChanges, OnDestroy {\r\n constructor() { }\r\n\r\n displayControl = new FormControl('', { updateOn: 'blur' });\r\n hiddenControl = new FormControl('', { updateOn: 'blur' });\r\n innerValue: moment.Moment;\r\n isError = false;\r\n get localValue(): string | Date | moment.Moment {\r\n return this.innerValue;\r\n }\r\n\r\n set localValue(v: string | Date | moment.Moment) {\r\n let newVal: moment.Moment = null;\r\n if (v != null && v != '') {\r\n if (moment.isMoment(v)) {\r\n newVal = v;\r\n }\r\n else {\r\n if (v.toString().indexOf('T') > -1) {\r\n newVal = moment(v);\r\n } else {\r\n newVal = moment(v, 'MM/DD/YYYY');\r\n }\r\n }\r\n }\r\n this.innerValue = newVal;\r\n }\r\n\r\n @Input() label = '';\r\n @Input() value: string | Date | moment.Moment;\r\n @Input() id: string;\r\n @Input() floatLabel = 'auto';\r\n @Input() stopPropagation = false;\r\n @Input() isRequired: boolean;\r\n @Input() truncateLabel: boolean;\r\n @Input() showLabelAsHint = false;\r\n @Input() disabled = false;\r\n @Input() errorMessage = '';\r\n @Input() appearance = 'outline';\r\n @Input() hideRequiredMarker = false;\r\n @Input() allowEnter = false;\t// If this is true, pressing enter updates the model\r\n @Input() fullWidth: boolean;\r\n @Input() tabIndex = 0;\r\n @Output() valueChange = new EventEmitter();\r\n @Output() dateInputChange = new EventEmitter();\r\n @Input() postLabelSpace = false;\r\n @Input() clearable = false;\r\n @Input() customHint = '';\r\n @Input() showTodayButton = false;\r\n\r\n hovering = false;\r\n displayValue: string;\r\n updated = false;\r\n private _dateInput: ElementRef;\r\n public mask: TextMaskConfig = {\r\n guide: true,\r\n showMask: false,\r\n mask: (rawValue: string) => {\r\n if (rawValue) {\r\n const maskArray = [];\r\n maskArray.push(/\\d/);\r\n let secondDashPosition = 4;\r\n if (rawValue.length > 1\r\n && rawValue.charAt(1) == '/') {\r\n secondDashPosition -= 1;\r\n maskArray.push('/');\r\n } else {\r\n maskArray.push(/\\d/);\r\n maskArray.push('/');\r\n }\r\n maskArray.push(/\\d/);\r\n if (rawValue.length > secondDashPosition\r\n && rawValue.charAt(secondDashPosition) == '/'\r\n && rawValue.charAt(secondDashPosition - 1).match(/\\d/)) {\r\n maskArray.push('/');\r\n } else {\r\n maskArray.push(/\\d/);\r\n maskArray.push('/');\r\n }\r\n maskArray.push(/\\d/);\r\n maskArray.push(/\\d/);\r\n maskArray.push(/\\d/);\r\n maskArray.push(/\\d/);\r\n return maskArray;\r\n } else {\r\n return [/\\d/, /\\d/, '/', /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/];\r\n }\r\n }\r\n };\r\n\r\n ngOnInit() {\r\n this.setDate(this.value);\r\n if (this.id == null || this.id == '') {\r\n this.id = this.label.replace(' ', '');\r\n }\r\n }\r\n\r\n get dateInput() {\r\n return this._dateInput;\r\n }\r\n\r\n @ViewChild('dateInput', { static: true }) set dateInput(value: ElementRef) {\r\n this._dateInput = value;\r\n this.dateInputChange.emit(this._dateInput);\r\n }\r\n\r\n setParentValue() {\r\n if (moment.isMoment(this.value)) {\r\n this.value = this.localValue;\r\n }\r\n else if (this.value instanceof Date) {\r\n if (this.innerValue != null) {\r\n this.value = this.innerValue.toDate();\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n }\r\n else {\r\n if (this.innerValue != null) {\r\n this.value = this.innerValue.toDate();\r\n }\r\n else {\r\n this.value = '';\r\n }\r\n }\r\n this.valueChange.emit(this.value);\r\n this.updated = true;\r\n }\r\n\r\n enterPressed() {\r\n this.dateInput.nativeElement.blur();\r\n // this.dateInput.nativeElement.focus(); // ONE-5782 - if I use the [Tab] key to navigate to the next field, I receive the correct error message (Invalid Date). However, if I use the [Enter] key, it either just blanks out the field with no error or gives an \"Required Field\" error.\r\n }\r\n\r\n calendarDateChanged() {\r\n if (this.innerValue != null) {\r\n this.displayValue = this.innerValue.format('MM/DD/YYYY');\r\n }\r\n else {\r\n this.displayValue = '';\r\n }\r\n this.setParentValue();\r\n this.validate();\r\n }\r\n\r\n displayDateChanged() {\r\n if (!this.updated) {\r\n this.localValue = this.displayValue;\r\n this.setParentValue();\r\n this.validate();\r\n }\r\n }\r\n\r\n setDate(value: string | Date | moment.Moment) {\r\n if (value != null && value != '') {\r\n this.localValue = value;\r\n if (value.toString().toLowerCase() != 'invalid date') {\r\n this.displayValue = this.innerValue.format('MM/DD/YYYY');\r\n }\r\n }\r\n else {\r\n this.localValue = null;\r\n this.displayValue = '';\r\n }\r\n }\r\n\r\n todayClick() {\r\n // PRE: the today button is clicked\r\n // POST: sets the date to today\r\n const today = new Date();\r\n this.setDate(today);\r\n this.valueChange.emit(today);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes && changes.value) {\r\n this.setDate(changes.value.currentValue);\r\n }\r\n }\r\n\r\n clearIfInvalid() {\r\n // POST: clears the date value if it is in valid\r\n const dateValueFromDisplay = new Date(this.displayValue);\r\n if (dateValueFromDisplay.toString() == 'Invalid Date') {\r\n this.clear();\r\n } else {\r\n let momentDatevaluefromDisplay: moment.Moment;\r\n if (this.displayValue.indexOf('T') > -1) {\r\n momentDatevaluefromDisplay = moment(this.displayValue);\r\n } else {\r\n momentDatevaluefromDisplay = moment(this.displayValue, 'MM/DD/YYYY');\r\n }\r\n if (momentDatevaluefromDisplay != null && momentDatevaluefromDisplay.toString().toLocaleLowerCase() == 'invalid date') {\r\n this.displayValue = '';\r\n this.displayDateChanged();\r\n }\r\n }\r\n }\r\n\r\n validate() {\r\n // this.isError = false;\r\n // if (this.innerValue.isValid() == false) {\r\n // this.isError = true;\r\n // }\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n @HostListener('mouseenter', ['$event'])\r\n mouseEnter(event) {\r\n // PRE: the mouse enters this component\r\n // POST: sets hovering to true to allow showing the red X\r\n this.hovering = true;\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n mouseLeave() {\r\n // PRE: the mouse leaves the component\r\n // POST: sets hovering to false to disable showing the red X\r\n this.hovering = false;\r\n }\r\n\r\n clear() {\r\n // POST: clears the date and display\r\n this.displayValue = '';\r\n this.updated = false;\r\n this.displayDateChanged();\r\n }\r\n}\r\n","export class DataQueryPreferences {\r\n LoadMyDefaults: boolean;\r\n StartPage: string;\r\n DisplayRelationshipTab: boolean;\r\n ShowSQLTranslation: boolean;\r\n ShowObjectName: boolean;\r\n }","export class PortalMenuPreferences {\r\n PortalMenus: PortalMenuItem[];\r\n}\r\n\r\nexport class PortalMenuItem {\r\n GroupName: string;\r\n GroupIcon: string;\r\n Expanded: number;\r\n Id: number;\r\n}","import {ScheduleSlot} from '../../counselor360/scheduling/schedule-student-list/schedule-slot';\r\n\r\nexport class ScheduleStudentListPreferences {\r\n\r\n // Server Properties\r\n AvailableSlots: string[] = [];\r\n ShowSchedulingSlots: string[] = [];\r\n AvailableMainGridColumns: string[] = [];\r\n ShowMainGridColumns: string[] = [];\r\n AvailableSubGridColumns: string[] = [];\r\n ShowSubGridColumns: string[] = [];\r\n CheckPeriodOverlaps: boolean;\r\n CheckDayOverlaps: boolean;\r\n CheckTermOverlaps: boolean;\r\n\r\n // Local Properties\r\n get termDisplay(): boolean {\r\n return this.ShowSchedulingSlots.includes(ScheduleSlot.Displays.Term);\r\n }\r\n\r\n get periodDisplay(): boolean {\r\n return this.ShowSchedulingSlots.includes(ScheduleSlot.Displays.Period);\r\n }\r\n\r\n get dayDisplay(): boolean {\r\n return this.ShowSchedulingSlots.includes(ScheduleSlot.Displays.Day);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-gradebook-preferences-reset-warnings',\r\n templateUrl: './gradebook-preferences-reset-warnings.component.html',\r\n styles: []\r\n})\r\nexport class GradebookPreferencesResetWarningsComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n gradebookPreferencesClick() {\r\n this.dialogRef.close('Preferences was clicked.');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","
Gradebook Preferences
\r\n\r\n\r\n
A problem was encountered and your preferences regarding which columns to show have been reset.To show additional\r\n columns, change your preferences for Columns in Scores\r\n Grid.\r\n
\r\n
\r\n\r\n\r\n \r\n","export class GeneralPreferences {\r\n PageSize: string = '';\r\n EmailFrom: string = '';\r\n IsActiveDirectoryUser: boolean;\r\n IgnoreInADPermissionUpdate: boolean;\r\n DefaultYearIdentifier: string = '';\r\n DefaultSchoolId: string = '';\r\n StudentNameFormat: string = '';\r\n StudentMiddleNameFormat: string = '';\r\n ShowNickname: boolean;\r\n PrepopulateStudent: boolean;\r\n DefaultCursorPosition: number;\r\n ShowStudentAlerts: boolean;\r\n MaximumAlertIcon: string = '';\r\n AvailableClassesOption: string[];\r\n SelectedClassesOption: string = '';\r\n SelectedClassesOptionText: string = '';\r\n DefaultLoginScreen: string = '';\r\n ShowStudentNumber: boolean;\r\n ShowSQLTranslation: boolean;\r\n}","export class ClassroomSummaryPreferences {\r\n static V10AllOptions : string[] = [];\r\n static V9AllOptions : string[] = [];\r\n AvailableOptions: string[] = [];\r\n OptionsToShow: string[] = [];\r\n GridColumns = [];\r\n TermId: number;\r\n ViewId: number;\r\n IncludeEmptySections: boolean;\r\n }","
\r\n Sync Preferences Across Classes\r\n
\r\n\r\n\r\n
\r\n Unchecking this setting will make the preferences for all classes be independent. From this point\r\n forward, if you make a preference change in one class and want the change to apply to all classes, you will\r\n have to manually go to the preference screen for each class and make the change.

\r\n Are you sure you want to turn off syncing?\r\n
\r\n
\r\n Checking this setting and saving will make the preferences for this class be applied to all\r\n classes. If instead you want the preferences from a different\r\n class to be applied to all classes, click Cancel, go to that other class, go to Preferences, click the\r\n Sync preferences checkbox, then click Save.

\r\n Are you sure you want to turn on syncing from this class?\r\n
\r\n
\r\n\r\n\r\n \r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n\r\n@Component({\r\n selector: 'sync-preferences-dialog',\r\n templateUrl: './sync-preferences-dialog.component.html'\r\n})\r\nexport class SyncPreferencesDialogComponent {\r\n\r\n syncPreferencesAcrossCourses: boolean;\r\n\r\n constructor(private dialogRef: MatDialogRef) {\r\n }\r\n\r\n okClick() {\r\n this.dialogRef.close('OK was clicked');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n\r\n@Component({\r\n selector: 'primary-teacher-warning-dialog',\r\n templateUrl: './primary-teacher-warning-dialog.component.html'\r\n})\r\nexport class PrimaryTeacherWarningDialogComponent {\r\n\r\n constructor( private dialogRef: MatDialogRef ) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n okClick(){\r\n this.dialogRef.close('OK was clicked');\r\n }\r\n\r\n closeClick(){\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n You are not the primary teacher for this class.\r\n
\r\n
\r\n
\r\n Only the primary teacher is allowed to make changes to the preferences for a class.\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n\r\n@Component({\r\n selector: 'no-grading-classes-dialog',\r\n templateUrl: './no-grading-classes-dialog.component.html'\r\n})\r\nexport class NoGradingClassesDialogComponent {\r\n\r\n constructor( private dialogRef: MatDialogRef ) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n okClick(){\r\n this.dialogRef.close('OK was clicked');\r\n }\r\n\r\n closeClick(){\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
WARNING
\r\n
\r\n
\r\n
\r\n To change Gradebook Preferences, you must be the primary teacher for at least one class open for grading.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n\r\n@Component({\r\n selector: 'custom-sort-warning-dialog',\r\n templateUrl: './custom-sort-warning-dialog.component.html'\r\n})\r\nexport class CustomSortWarningDialogComponent {\r\n\r\n constructor(private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n okClick() {\r\n this.dialogRef.close('OK was clicked');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
Sort Order - Custom
\r\n
\r\n
\r\n
\r\n The custom order for each class can be set by selecting Set Custom Sort Order for Students from the Tools menu.\r\n
\r\n
\r\n For classes where a custom order has not been defined, the students will be sorted alphabetically by name.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n ","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n\r\n@Component({\r\n selector: 'calculation-preference-warning-dialog',\r\n templateUrl: './calculation-preference-warning-dialog.component.html'\r\n})\r\nexport class CalculationPreferenceWarningDialogComponent {\r\n\r\n constructor(private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n okClick() {\r\n this.dialogRef.close('OK was clicked');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
WARNING - Additional Teacher
\r\n
\r\n
\r\n
\r\n You are an additional teacher for some classesa class. Only the primary teacher is able to make changes to the preferences for a class.\r\n
\r\n
\r\n Changes you make will apply only to the classes for which you are not an additional teacher.\r\n
\r\n
\r\n The Show Preferences For dropdown at the top of the page only lists classes for which you are not an additional teacher.\r\n
\r\n
\r\n Note that the class selected in the dropdown is NOT the current class.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n ","
\r\n
\r\n
Calculation Type Changed
\r\n
\r\n
\r\n You have changed the Gradebook Calculation Preference and one or more of the sections has assignment scores. You may need to open each gradebook and save it in order for these changes to take affect.\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n ","import { Component, Input } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n\r\n@Component({\r\n selector: 'additional-teacher-warning-dialog',\r\n templateUrl: './additional-teacher-warning-dialog.component.html'\r\n})\r\nexport class AdditionalTeacherWarningDialogComponent {\r\n\r\n @Input() additionalTeacher:boolean;\r\n @Input() multipleAdditional:boolean;\r\n @Input() singleAdditional:boolean;\r\n @Input() syncPreferencesAcrossCourses:boolean;\r\n @Input() additionalTeacherClassFocus:boolean;\r\n\r\n constructor(private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n okClick() {\r\n this.dialogRef.close('OK was clicked');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-project-scores-info',\r\n templateUrl: './project-scores-info.component.html'\r\n})\r\nexport class ProjectScoresInfoComponent {\r\n\r\n constructor(\r\n private dialog: MatDialogRef\r\n ) {\r\n }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n\r\n}\r\n","
\r\n Project Future Scores\r\n
\r\n\r\n\r\n\r\n \r\n The columns shown are based on the Slot Weight Formula defined for this course's grading type. When grades have\r\n not been posted, only the first calculated period and all contributing periods will be displayed. When the grades have been posted\r\n all contributing periods up to the first unposted period, and the final grade will be displayed.\r\n \r\n\r\n\r\n\r\n\r\n \r\n","export class CustomLayoutSchoolDefault { \r\n Id: number;\r\n Layout_Id: number;\r\n School_Domain: number;\r\n LayoutType_Id: number;\r\n SchoolName: string;\r\n }","export class BehaviorPreferences {\r\n Layout_ID: number;\r\n }","\r\n
\r\n Scheduling\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n Class Roster\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the columns are displayed.\r\n
\r\n
\r\n\r\n \r\n
\r\n Classes by Course\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Main Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Main Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the columns are displayed.\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Sub Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Sub Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the columns are displayed.\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n Master Schedule\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Class Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Class Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the columns are displayed.\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Section Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Section Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the columns are displayed.\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n Period Statistics\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Statistics\r\n
\r\n
\r\n
\r\n
\r\n {{field}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show\r\n
\r\n
\r\n
\r\n
\r\n {{field}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Statistics into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the fields are displayed.\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n Room Scheduling Settings\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Columns\r\n
\r\n
\r\n
\r\n
\r\n {{field}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Columns\r\n
\r\n
\r\n
\r\n
\r\n {{field}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the fields are displayed.\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n Schedule Student List\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Slots\r\n
\r\n
\r\n
\r\n
\r\n {{slot}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Scheduling Slots\r\n
\r\n
\r\n
\r\n
\r\n {{slot}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Slots into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the fields are displayed.\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Main Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Main Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the fields are displayed.\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Available Add Student to Sections Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Show Add Student to Sections Grid Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Columns into Show to add them to the grid.\r\n
\r\n Drag within Show to change the order in which the fields are displayed.\r\n
\r\n
\r\n
\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {MasterSchedulePreferences} from '../../master-schedule-preferences.model';\r\nimport {PeriodStatisticsPreferences} from '../../period-statistics-preferences.model';\r\nimport {CdkDragDrop, moveItemInArray, transferArrayItem} from '@angular/cdk/drag-drop';\r\nimport {ScheduleStudentListPreferences} from '../../schedule-student-list-preferences.model';\r\nimport {ClassesByCoursePreferences} from '../../classes-by-course-preferences.model';\r\nimport {ClassRosterPreferences} from '../../class-roster-preferences.model';\r\nimport {RoomSchedulingSettingsPreferences} from '../../room-scheduling-settings-preferences.model';\r\n\r\n@Component({\r\n selector: 'scheduling-tab',\r\n templateUrl: './scheduling-tab.component.html',\r\n styleUrls: [\r\n './scheduling-tab.component.css',\r\n '../user-preferences-window.component.css'\r\n ]\r\n})\r\nexport class SchedulingTabComponent implements OnInit {\r\n\r\n // Input Properties\r\n @Input() masterSchedulePreferences: MasterSchedulePreferences;\r\n @Input() periodStatisticsPreferences: PeriodStatisticsPreferences;\r\n @Input() scheduleStudentListPreferences: ScheduleStudentListPreferences;\r\n @Input() classesByCoursePreferences: ClassesByCoursePreferences;\r\n @Input() classRosterPreferences: ClassRosterPreferences;\r\n @Input() roomSchedulingSettingsPreferences: RoomSchedulingSettingsPreferences;\r\n @Input() canSeeMasterSchedule: boolean;\r\n @Input() canSeePeriodStatistics: boolean;\r\n @Input() canSeeScheduleStudentList: boolean;\r\n @Input() canSeeClassesByCourse: boolean;\r\n @Input() canSeeRoomSchedulingSettings: boolean;\r\n @Input() fieldDrop = (event: CdkDragDrop) => {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n }\r\n else {\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n }\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Signature (Also used in Send Email)\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Default\r\n
\r\n
Preferences
\r\n
\r\n for {{currentUser.FirstName}} {{currentUser.LastName}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
General
Attendance
Behavior
Classroom\r\n Summary
Communication\r\n Log
Data\r\n Query
Favorites
Gradebook
Home
Mass\r\n Email
\r\n Scheduling\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n General\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Default From\r\n address when sending emails through the system \r\n \r\n \r\n \r\n {{ea.value}}\r\n \r\n \r\n \r\n
\r\n
\r\n ACTIVE DIRECTORY\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Active\r\n Directory user\r\n \r\n
\r\n \r\n Do not\r\n update this user's permissions from Active\r\n Directory\r\n \r\n
\r\n
\r\n
\r\n LOGIN\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Default Year after login\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{year.Description}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{year.Description}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Default School after login\r\n \r\n \r\n \r\n \r\n {{school.SchoolName}}\r\n \r\n \r\n \r\n
\r\n
\r\n When Enter is pressed\r\n on the Login screen, log me into\r\n
\r\n
\r\n
\r\n STUDENT ALERTS\r\n \r\n
\r\n
\r\n \r\n When student alerts are shown in a grid, maximum alert icons to show\r\n \r\n \r\n \r\n All\r\n \r\n 1\r\n 2\r\n 3\r\n 4\r\n 5\r\n 6\r\n 7\r\n 8\r\n 9\r\n 10\r\n \r\n \r\n \r\n
\r\n
\r\n STUDENT NAMES\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n Format
\r\n \r\n \r\n
Middle\r\n Name
\r\n \r\n \r\n
\r\n \r\n Show\r\n student preferred name if it exists\r\n Show\r\n nickname if exists\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Attendance, Behavior Referrals, Communication\r\n Log, Gradebook, Student Notes\r\n \r\n \r\n Attendance, Behavior Referrals, Communication\r\n Log, Gradebook\r\n \r\n \r\n
\r\n \r\n Show student # column in tables on\r\n teacher-oriented pages:\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n STUDENT SEARCH\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Pre-populate Student Search grid with results when\r\n opened\r\n \r\n \r\n
Default\r\n cursor position for Student Search screen
\r\n \r\n \r\n
\r\n \r\n Show student\r\n alerts in Student Search grid\r\n \r\n
\r\n \r\n Show SQL\r\n Translation on Student Filter page\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Attendance\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Show all periods in the day\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Enter codes using
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Default for side panel
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Available\r\n Columns\r\n
\r\n
\r\n
\r\n
\r\n {{column}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n Show\r\n
\r\n
\r\n
\r\n {{column}}
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n Drag names from Available Columns into Show to\r\n add them to the grid.
\r\n Drag within Show to change the order in which\r\n the columns are displayed.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Behavior\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Quick Add Layout\r\n \r\n \r\n \r\n \r\n (Use School Default)\r\n \r\n \r\n {{layout.Name}}\r\n \r\n \r\n \r\n \r\n \r\n Edit My Layouts\r\n Edit Layouts\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
Choose Default Layouts
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n School\r\n \r\n \r\n Layout\r\n
\r\n (All)\r\n \r\n \r\n \r\n \r\n {{layout.Name}}\r\n \r\n \r\n \r\n
\r\n {{defaultSchoolLayout.SchoolName}}\r\n \r\n \r\n \r\n \r\n {{layout.Name}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Classroom Summary\r\n Home\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Available Columns\r\n \r\n
\r\n
\r\n
\r\n {{column.Name}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n Show\r\n \r\n
\r\n
\r\n
\r\n \r\n {{column.Name}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Available\r\n Buttons\r\n
\r\n
\r\n
\r\n {{option}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n Show\r\n
\r\n
\r\n
\r\n
\r\n {{option}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Drag names from Available Buttons into Show to add them to the screen.
\r\n Drag within Show to change the order in which the buttons are displayed.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Communication Log\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Default\r\n for Show\r\n entries created by all staff
\r\n \r\n \r\n
\r\n \r\n Display\r\n single line of text for Notes\r\n Display\r\n single line of text for Subject\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Data Query\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n When the Data Query page is first accessed\r\n
\r\n \r\n Load my default\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Display
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n Display the Relationships\r\n tab\r\n \r\n
\r\n \r\n Show Object name as part of Field\r\n name\r\n \r\n
\r\n \r\n Show SQL Translation on Filters\r\n tab\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n Gradebook\r\n \r\n \r\n Preferences cannot be changed for additional courses\r\n \r\n
\r\n Show Preferences\r\n For: \r\n 0\">\r\n \r\n \r\n {{course.Course}} ({{course.SubjectCode}}-{{course.Section}}) M:\r\n {{course.Meets}}\r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n {{course.Course}} ({{course.SubjectCode}}-{{course.Section}}) M:\r\n {{course.Meets}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Sync preferences\r\n across classes\r\n \r\n
\r\n \r\n Show Unit Dropdown\r\n \r\n
\r\n \r\n Show \"Not on Portal\" row\r\n \r\n
\r\n \r\n Show letter grades\r\n \r\n
\r\n ADDING ASSIGNMENTS\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Use\r\n Quick Add window\r\n Disabled in\r\n School Policies\r\n \r\n
\r\n Default Show on parent/student portal\r\n
\r\n \r\n \r\n \r\n  Set\r\n in School Policies\r\n
\r\n Default Class(es) field to\r\n \r\n \r\n
\r\n
\r\n
\r\n ASSIGNMENT HEADING\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {{option.DisplayName}}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Characters\r\n of Summary to show in columns:\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Characters\r\n of Summary to show in right-side\r\n panel:\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
Show\r\n heading:
\r\n \r\n \r\n
\r\n
\r\n
Drag fields up or down to change the\r\n order in which they display.
\r\n
\r\n
\r\n ASSIGNMENT SORT\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
AscendDescend
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{option.Heading}}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Drag rows up or down to change the sort order.\r\n
\r\n
\r\n ASSIGNMENT SCORES\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Show Comment column\r\n \r\n When\r\n editing a score, highlight:
\r\n \r\n \r\n
Show\r\n effective score as:\r\n \r\n Warn if score\r\n entered > possible points\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Enable number panel\r\n pop-up\r\n \r\n
\r\n
When using Fill Blank Scores\r\n
\r\n
Assign\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Score\r\n \r\n \r\n
\r\n \r\n \r\n Special\r\n mark\r\n \r\n \r\n \r\n \r\n {{specialMark.Code}}\r\n \r\n \r\n \r\n
\r\n
\r\n
to\r\n students without a score or special mark
\r\n \r\n Ask\r\n every time\r\n \r\n
\r\n
\r\n
\r\n AUTO-SAVE\r\n \r\n
\r\n
\r\n \r\n Every \r\n \r\n \r\n\r\n \r\n \r\n \r\n   minutes\r\n Disabled\r\n in School Policies\r\n
\r\n
\r\n COMMENTS\r\n \r\n
\r\n
\r\n \r\n \r\n Space\r\n Comma\r\n Semi-Colon\r\n \r\n \r\n
\r\n
\r\n Use\r\n Comment Codes instead of Comments\r\n
\r\n
\r\n COLUMNS IN SCORES GRID\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Available Columns\r\n \r\n
\r\n \r\n
\r\n \r\n {{column.DisplayName}}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Non-Scrolling Columns\r\n \r\n
\r\n
\r\n
\r\n {{column.DisplayName}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n Scrolling Columns\r\n \r\n
\r\n
\r\n \r\n {{column.DisplayName}}\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n Drag columns from Available Columns into either of the other\r\n boxes.
\r\n Drag within the center and right boxes to change the order in\r\n which the columns display.
\r\n Non-scrolling columns will be listed first and will stay\r\n visible as the grid is scrolled to the right.\r\n
\r\n
\r\n
\r\n \r\n REPORT CARD GRADES\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Past\r\n terms\r\n \r\n \r\n \r\n \r\n \r\n \r\n Future\r\n terms\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Show Report Card Grade Columns for all\r\n terms that include the current date\r\n \r\n
\r\n Also\r\n show\r\n
\r\n \r\n \r\n \r\n \r\n Ended within \r\n \r\n \r\n \r\n   days of current date\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Started within \r\n \r\n \r\n \r\n   days of current date\r\n \r\n
\r\n \r\n Project Future Scores\r\n \r\n
\r\n
\r\n Show\r\n Report Card Grade columns for\r\n
\r\n \r\n Progress\r\n Cycles\r\n \r\n
\r\n \r\n Terms\r\n \r\n
\r\n \r\n Semesters\r\n \r\n
\r\n \r\n Year-End\r\n \r\n
\r\n
\r\n
\r\n STANDARDS\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Show column headings:\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Show\r\n row for Special Mark\r\n \r\n
\r\n \r\n Show\r\n assignments on Report Card Grades tab\r\n \r\n
\r\n
\r\n
\r\n
\r\n STUDENTS\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Sort Order:\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Show\r\n dropped/withdrawn\r\n
\r\n Set\r\n in School Policies
\r\n
\r\n
\r\n \r\n Show\r\n future students\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n FINAL GRADE CALCULATIONSet\r\n in the School Policy\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n Semester\r\n and Final grades are calculated using\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n Cannot select Total Points for calculating the Semester and\r\n Final Grade until an Administrator creates a Total Point\r\n formula\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n Semester and Final grades are calculated using\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n Cannot\r\n select Total\r\n Points for calculating the Semester and Final Grade\r\n until\r\n an Administrator creates a Total Point formula.\r\n Cannot\r\n select Total\r\n Points for calculation because Category Weights are not\r\n the\r\n same across Grading Periods.\r\n
\r\n
\r\n
\r\n
\r\n ROUNDING\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Assignments\r\n \r\n Set in the School Policy\r\n \r\n
\r\n \r\n Allow entry of\r\n \r\n \r\n \r\n 0\r\n 1\r\n 2\r\n \r\n \r\n \r\n decimal places\r\n \r\n
\r\n \r\n Grading Period/Course Work\r\n \r\n \r\n Set in the School Policy\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n 0\r\n 1\r\n 2\r\n \r\n \r\n
\r\n \r\n Semester/Term/Final Grades\r\n \r\n \r\n Set in the School Policy\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n 0\r\n 1\r\n 2\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Mass Email\r\n
\r\n
\r\n Default Create Communication Log entries\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n 0)\"\r\n image=\"Save.png\" label=\"Save\" (clickEvent)=\"saveClick()\" style=\"float:right\">\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit, ViewChild, Inject, ElementRef, AfterViewInit } from '@angular/core';\r\nimport { MatDialogRef, MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { Portal } from '../../portal.model';\r\nimport { UserService } from '../../user/user.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { UserPreferencesService } from '../user-preferences.service';\r\nimport { GeneralPreferences } from '../general-preferences.model';\r\nimport { Year } from '../../year/year.model';\r\nimport { YearService } from '../../year/year.service';\r\nimport { School } from '../../year/school.model';\r\nimport { AttendancePreferences } from '../attendance-preferences.model';\r\nimport { ClassroomSummaryPreferences } from '../classroom-summary-preferences.model';\r\nimport { DataQueryPreferences } from '../data-query-preferences.model';\r\nimport { CommunicationLogPreferences } from '../communication-log-preferences.model';\r\nimport { MassEmailPreferences } from '../mass-email-preferences.model';\r\nimport { GradebookPreferences } from '../../../classroom360/gradebook/shared/models/preferences/gradebook-preferences.model';\r\nimport { Router } from '../../../../../node_modules/@angular/router';\r\nimport { ClassroomSummary } from '../../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { UserSchoolYearPolicies } from '../../user/user-school-year-policies.model';\r\nimport { UserPermission } from '../../user/user-permission.model';\r\nimport { FavoritePreferences } from '../favorite-prefences.model';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { SyncPreferencesDialogComponent } from './sync-preferences-dialog/sync-preferences-dialog.component';\r\nimport { PrimaryTeacherWarningDialogComponent } from './primary-teacher-warning-dialog/primary-teacher-warning-dialog.component';\r\nimport { NoGradingClassesDialogComponent } from './no-grading-classes-dialog/no-grading-classes-dialog.component';\r\nimport { CustomSortWarningDialogComponent } from './custom-sort-warning-dialog/custom-sort-warning-dialog.component';\r\nimport { CalculationPreferenceWarningDialogComponent } from './calculation-preference-warning-dialog/calculation-preference-warning-dialog.component';\r\nimport { AdditionalTeacherWarningDialogComponent } from './additional-teacher-warning-dialog/additional-teacher-warning-dialog.component';\r\nimport { FavoritesComponent } from '../../favorites/favorites.component';\r\nimport { Classroom360Service } from '../../../classroom360/classroom360.service';\r\nimport { forkJoin, Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { moveItemInArray, transferArrayItem, CdkDrag, CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { ProjectScoresInfoComponent } from './project-scores-info/project-scores-info.component';\r\nimport { User } from '../../user/user.model';\r\nimport { CustomLayoutsService } from '../../custom-layouts/custom-layouts.service';\r\nimport { LayoutEditorComponent } from '../../custom-layouts/layout-editor/layout-editor.component';\r\nimport { CustomLayout } from '../../custom-layouts/Models/custom-layout.model';\r\nimport { GeneralConfirmationComponent } from '../../controls/general-confirmation/general-confirmation.component';\r\nimport { CustomLayoutSchoolDefault } from '../../custom-layouts/Models/custom-layout-school-default.model';\r\nimport { BehaviorPreferences } from '../behavior-preferences.model';\r\nimport { SpecialMark } from '../../../classroom360/gradebook/v9/models/special-mark.model';\r\nimport { GradebookV9Service } from '../../../classroom360/gradebook/v9/gradebook-v9.service';\r\nimport { SharedService } from '../../shared.service';\r\nimport { GradebookV10Service } from '../../../classroom360/gradebook/v10/gradebook-V10.service';\r\nimport { MasterSchedulePreferences } from '../master-schedule-preferences.model';\r\nimport { SecurityService } from '../../security/security.service';\r\nimport { ErrorList } from '../../controls/error-prompt/error-list.model';\r\nimport { GradebookPreferencesResetWarningsComponent } from './gradebook-preferences-reset-warnings/gradebook-preferences-reset-warnings.component';\r\nimport { PeriodStatisticsPreferences } from '../period-statistics-preferences.model';\r\nimport { ScheduleStudentListPreferences } from '../schedule-student-list-preferences.model';\r\nimport { ClassesByCoursePreferences } from '../classes-by-course-preferences.model';\r\nimport { ClassRosterPreferences } from '../class-roster-preferences.model';\r\nimport { RoomSchedulingSettingsPreferences } from '../room-scheduling-settings-preferences.model';\r\nimport { SavedLayoutsDialogComponent } from '../../custom-layouts/saved-layouts-dialog/saved-layouts-dialog.component';\r\n\r\n@Component({\r\n selector: 'user-preferences-window',\r\n templateUrl: './user-preferences-window.component.html',\r\n styleUrls: ['./user-preferences-window.component.css']\r\n})\r\nexport class UserPreferencesWindowComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() staffAssignedPortals: Portal[];\r\n @Input() courseId: number;\r\n @ViewChild('specialMarks') specialMarks: ElementRef;\r\n @ViewChild('scoreValue') scoreValue: ElementRef;\r\n @ViewChild('gradebookPreferencesDiv') gradebookPreferencesDiv: ElementRef;\r\n @ViewChild('columnsInScoreGridRow') columnsInScoreGridRow: ElementRef;\r\n public entryId: number;\r\n public form: FormGroup;\r\n private saveRequests: Observable[] = [];\r\n\r\n subscriptions: Subscription[] = [];\r\n // ------------User Data---------------------------\r\n staffAssignedPortalNames: boolean[] = [];\r\n generalPreferences: GeneralPreferences = new GeneralPreferences();\r\n sendingEmailAddress: any;\r\n currentYearSchools: School[];\r\n years: Year[];\r\n selectedYear: Year;\r\n attendancePreferences: AttendancePreferences;\r\n communicationLogPreferences: CommunicationLogPreferences;\r\n classroomSummaryPreferences: ClassroomSummaryPreferences = new ClassroomSummaryPreferences();\r\n dataQueryPreferences: DataQueryPreferences;\r\n massEmailPreferences: MassEmailPreferences;\r\n gradebookPreferences: GradebookPreferences = new GradebookPreferences();\r\n schoolYearSettings: any;\r\n favoritesPreferences: FavoritePreferences;\r\n behaviorPreferences: BehaviorPreferences;\r\n userPermissions: UserPermission[];\r\n @ViewChild('appFavorites', { static: true }) appFavorites: FavoritesComponent;\r\n schools: School[] = [];\r\n layouts: CustomLayout[] = [];\r\n // schoolLayouts: SchoolLayout[] = [];\r\n allLayoutsId = 0;\r\n defaultSchoolLayouts: CustomLayoutSchoolDefault[] = [];\r\n defaultUserLayoutId: number;\r\n numericZero = 0;\r\n masterSchedulePreferences: MasterSchedulePreferences;\r\n periodStatisticsPreferences: PeriodStatisticsPreferences;\r\n scheduleStudentListPreferences: ScheduleStudentListPreferences;\r\n classesByCoursePreferences: ClassesByCoursePreferences;\r\n classRosterPreferences: ClassRosterPreferences;\r\n roomSchedulingSettingsPreferences: RoomSchedulingSettingsPreferences;\r\n errors: ErrorList[] = [];\r\n // ------------Gradebook-----------------------------------\r\n selectedGradebookClass: ClassroomSummary;\r\n selectedGradebookClassId: any;\r\n myClasses: ClassroomSummary[] = [];\r\n additionalCourses: ClassroomSummary[] = [];\r\n gradebookSpecialMarks: SpecialMark[] = [];\r\n singleAdditional: boolean;\r\n multipleAdditional: boolean;\r\n additionalTeacher: boolean;\r\n additionalTeacherClassFocus: boolean;\r\n userSchoolYearPolicies: UserSchoolYearPolicies;\r\n setDefaultForStandardsView: boolean;\r\n warnIfCalculationPreferencesChanged: boolean;\r\n\r\n // ------------Selection/Flags-----------------------------------\r\n editFavorites: boolean;\r\n activateClassroom360: boolean;\r\n userIsTeacher: boolean;\r\n selectedPreferenceTab: string;\r\n v10: boolean;\r\n rowDetailExpand: boolean[] = [];\r\n useUnifiedLoginPage: boolean;\r\n classroom360AttendanceCommentsEditable: boolean;\r\n isDefaultPreferences = false;\r\n c360ShowCommunicationLog: boolean;\r\n viewAllStaffCommunicationLogs: boolean;\r\n disciplineQuickEntryUserCreateLayout: boolean;\r\n disciplineQuickEntrySetDefaultSchoolLayout: boolean;\r\n disciplineQuickEntrySetDefaultDistrictLayout: boolean;\r\n disciplineQuickEntryUserSelectLayout: boolean;\r\n allowDisciplineQuickEntry: boolean;\r\n\r\n currentUser: User;\r\n gradebookStudentSortOrderOptions: string[] = ['Course Add Date', 'Custom', 'Status', 'Student Name'];\r\n // ------------Modal windows----------------------------------\r\n additionalTeacherWarningDialogRef: MatDialogRef;\r\n calculationPreferenceWarningDialogRef: MatDialogRef;\r\n customSortWarningDialogRef: MatDialogRef;\r\n noGradingClassesDialogRef: MatDialogRef;\r\n primaryTeacherWarningDialogRef: MatDialogRef;\r\n syncPrefDialogRef: MatDialogRef;\r\n projectScoresDialog: MatDialogRef;\r\n staffAssignedPortalsCopy: Portal[] = [];\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private userPreferenceService: UserPreferencesService,\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private customLayoutService: CustomLayoutsService,\r\n private classroom360Service: Classroom360Service,\r\n private gradebookV9Service: GradebookV9Service,\r\n private gradebookV10Service: GradebookV10Service,\r\n private sharedService: SharedService,\r\n private securityService: SecurityService,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) {\r\n this.form = new FormGroup({\r\n filler: new FormControl()\r\n });\r\n\r\n this.editFavorites = false;\r\n this.activateClassroom360 = loginService.LoginSettings.ActivateClassroom360;\r\n this.currentUser = this.userService.currentUser;\r\n this.userIsTeacher = userService.currentUser.UserIsTeacher;\r\n this.v10 = loginService.LoginSettings.V10;\r\n this.useUnifiedLoginPage = loginService.LoginSettings.UseUnifiedLoginPage;\r\n this.c360ShowCommunicationLog = loginService.LoginSettings.C360ShowCommunicationLog;\r\n this.classroom360AttendanceCommentsEditable = loginService.LoginSettings.Classroom360AttendanceCommentsEditable;\r\n this.dataQueryPreferences = new DataQueryPreferences;\r\n\r\n if (this.data == null || this.data.initialTab == undefined || this.data.initialTab == null) {\r\n this.selectedPreferenceTab = 'General';\r\n } else {\r\n this.selectedPreferenceTab = this.data.initialTab;\r\n if (!this.v10 && this.selectedPreferenceTab == 'Gradebook') {\r\n if (this.activateClassroom360 && !this.userIsTeacher || this.data.isDefaultPreferences) {\r\n this.selectedPreferenceTab = 'General';\r\n }\r\n }\r\n }\r\n\r\n if (this.data != null && this.data.isDefaultPreferences != undefined) {\r\n this.isDefaultPreferences = this.data.isDefaultPreferences;\r\n }\r\n\r\n this.getMyClass();\r\n this.getUserSchoolYearPolicies();\r\n this.getUserPermission();\r\n this.getSchoolYearSettings();\r\n\r\n this.getGeneralPreferences();\r\n this.getDataQueryPreferences();\r\n this.getAttendancePreferences();\r\n this.getClassroomSummaryPreferences();\r\n this.getCommunicationLogPreferences();\r\n this.getMassEmailPreferences();\r\n this.getMasterSchedulePreferences();\r\n this.getPeriodStatisticsPreferences();\r\n this.getScheduleStudentListPreferences();\r\n this.getClassesByCoursePreferences();\r\n this.getClassRosterPreferences();\r\n this.getRoomSchedulingSettingsPreferences();\r\n }\r\n\r\n // --------------LifeCycle---------------------------------------\r\n\r\n ngOnInit() {\r\n // relies on @input that is not available until ngOnInit\r\n this.getStaffAssignedPortals();\r\n // requires getStaffAssignedPortals\r\n // this.getFavoritesPreferences();\r\n // relies on data\r\n if (this.data && this.data.selectedTab) {\r\n this.selectedPreferenceTab = this.data.selectedTab;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.data.scrollToElement != null && this.data.scrollToElement != '') {\r\n if (this.data.scrollToElement == 'COLUMNS IN SCORES GRID' && this.gradebookPreferencesDiv != null && this.columnsInScoreGridRow != null) {\r\n this.gradebookPreferencesDiv.nativeElement.scrollTop = this.columnsInScoreGridRow.nativeElement.offsetTop;\r\n }\r\n }\r\n }\r\n\r\n columnDropped(event) {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n } else {\r\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\r\n }\r\n this.setGradebookStudentNumberColumn();\r\n }\r\n\r\n columnDroppedAndSort(event, column: string) {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n } else {\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n // //if transfer, recalculate the order of previous (the list from drag)\r\n // if(column) {\r\n // event.previousContainer.data.sort((a, b) => a[column] < b[column] ? -1 : a[column] > b[column] ? 1 : 0)\r\n // event.previousContainer.data.forEach((x, index) => {\r\n // x.order = index;\r\n // });\r\n // }\r\n // else {\r\n // event.previousContainer.data.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\r\n // }\r\n }\r\n // always, recalculate the order of the container (the list to drag)\r\n if (column) {\r\n event.container.data.sort((a, b) => a[column] < b[column] ? -1 : a[column] > b[column] ? 1 : 0);\r\n event.container.data.forEach((x, index) => {\r\n x.order = index;\r\n });\r\n } else {\r\n event.container.data.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\r\n }\r\n this.setGradebookStudentNumberColumn();\r\n }\r\n\r\n setGradebookStudentNumberColumn() {\r\n if (this.generalPreferences.ShowStudentNumber) {\r\n let studentNameColumn = this.gradebookPreferences.AvailableColumns.filter(c => c.Field == 'StudentName' || c.Field == 'StudentNumber')[0];\r\n if (studentNameColumn != undefined) {\r\n this.gradebookPreferences.AvailableColumns = this.gradebookPreferences.AvailableColumns.filter(c => c.Field != 'StudentName');\r\n this.gradebookPreferences.AvailableColumns = this.gradebookPreferences.AvailableColumns.filter(c => c.Field != 'StudentNumber');\r\n } else {\r\n studentNameColumn = this.gradebookPreferences.ScrollingColumns.filter(c => c.Field == 'StudentName' || c.Field == 'StudentNumber')[0];\r\n if (studentNameColumn != undefined) {\r\n this.gradebookPreferences.ScrollingColumns = this.gradebookPreferences.ScrollingColumns.filter(c => c.Field != 'StudentName');\r\n this.gradebookPreferences.ScrollingColumns = this.gradebookPreferences.ScrollingColumns.filter(c => c.Field != 'StudentNumber');\r\n }\r\n }\r\n if (studentNameColumn != undefined) {\r\n this.gradebookPreferences.NonScrollingColumns.unshift(studentNameColumn);\r\n }\r\n studentNameColumn = this.gradebookPreferences.NonScrollingColumns.filter(c => c.Field == 'StudentName' || c.Field == 'StudentNumber')[0];\r\n this.gradebookPreferences.NonScrollingColumns.unshift(this.gradebookPreferences.NonScrollingColumns.splice(this.gradebookPreferences.NonScrollingColumns.indexOf(studentNameColumn), 1)[0]);\r\n }\r\n }\r\n\r\n // ------------Get User Data---------------------------\r\n\r\n getStaffAssignedPortals() {\r\n\r\n // Helper Function\r\n const processStaffAssignedPortals = () => {\r\n for (let i = 0; i < this.staffAssignedPortals.length; i++) {\r\n if (this.staffAssignedPortals[i].Deleted == false) {\r\n if (this.staffAssignedPortals[i].PortalName != 'Attendance' || this.staffAssignedPortals[i].PortalDescription == '/classroomAttendance') {\r\n this.staffAssignedPortalNames[this.staffAssignedPortals[i].PortalName] = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Performing Processing\r\n this.staffAssignedPortalNames = [];\r\n if (this.userService.userType == 1) {\r\n this.staffAssignedPortalNames['Classroom Summary'] = true;\r\n this.staffAssignedPortalNames['Mass Email'] = true;\r\n }\r\n if (!this.staffAssignedPortals) {\r\n this.staffAssignedPortals = this.classroom360Service.staffAssignedPortals;\r\n processStaffAssignedPortals();\r\n } else {\r\n this.subscriptions.push(\r\n this.classroom360Service.getStaffAssignedPortals().subscribe(result => {\r\n this.staffAssignedPortals = result;\r\n processStaffAssignedPortals();\r\n })\r\n );\r\n }\r\n }\r\n\r\n getUserPermission() {\r\n this.viewAllStaffCommunicationLogs = false;\r\n\r\n this.userPermissions = this.securityService.userPermissions;\r\n\r\n if (this.loginService.LoginSettings.C360ShowCommunicationLog == false) {\r\n if (this.userPermissions.filter(x => x.PermissionName == 'View ALL Staff Parent Contact Logs').length > 0) {\r\n this.viewAllStaffCommunicationLogs = true;\r\n }\r\n } else {\r\n if (this.userPermissions.filter(x => x.PermissionName == 'View All Communication Logs').length > 0) {\r\n this.viewAllStaffCommunicationLogs = true;\r\n } else if (this.userPermissions.filter(x => x.PermissionName == 'Add Edit All Communication Logs').length > 0) {\r\n this.viewAllStaffCommunicationLogs = true;\r\n }\r\n }\r\n if (this.v10) {\r\n this.allowDisciplineQuickEntry = this.userPermissions.filter(x => x.PrivilegeId == 2204).length > 0;\r\n this.disciplineQuickEntryUserSelectLayout = this.userPermissions.filter(x => x.PrivilegeId == 2543).length > 0;\r\n this.disciplineQuickEntryUserCreateLayout = this.userPermissions.filter(x => x.PrivilegeId == 2544).length > 0;\r\n this.disciplineQuickEntrySetDefaultSchoolLayout = this.userPermissions.filter(x => x.PrivilegeId == 2545).length > 0;\r\n this.disciplineQuickEntrySetDefaultDistrictLayout = this.userPermissions.filter(x => x.PrivilegeId == 2546).length > 0;\r\n } else {\r\n this.allowDisciplineQuickEntry = this.userPermissions.filter(x => x.PermissionName == 'Allow user to use Quick Entry').length > 0;\r\n this.disciplineQuickEntryUserSelectLayout = this.userPermissions.filter(x => x.PermissionName == 'Allow user to select own Quick Entry layout').length > 0;\r\n this.disciplineQuickEntryUserCreateLayout = this.userPermissions.filter(x => x.PermissionName == 'Allow user to create Quick Entry layout').length > 0;\r\n this.disciplineQuickEntrySetDefaultSchoolLayout = this.userPermissions.filter(x => x.PermissionName == 'User can set default Quick Entry layout for school').length > 0;\r\n this.disciplineQuickEntrySetDefaultDistrictLayout = this.userPermissions.filter(x => x.PermissionName == 'User can set default Quick Entry layout for district').length > 0;\r\n }\r\n if (this.isDefaultPreferences || (this.disciplineQuickEntryUserSelectLayout && this.allowDisciplineQuickEntry)) {\r\n this.getLayoutType();\r\n }\r\n }\r\n\r\n getMyClass() {\r\n const selectedTermId = 0; // All terms\r\n const selectedViewValue = 3; // Merged For Grading\r\n\r\n this.userPreferenceService.getMyClasses(selectedTermId, Number(selectedViewValue), this.userService.currentUser.UserIsTeacher, false, this.loginService.LoginSettings.V10 ? null : new Date(Date.now())).subscribe(data => {\r\n this.myClasses = data.filter(x => x.UsedForGrading && !x.AdditionalTeacher);\r\n this.additionalCourses = data.filter(x => x.UsedForGrading && x.AdditionalTeacher);\r\n this.getGradebookPreferences();\r\n });\r\n }\r\n\r\n setEmailAddress() {\r\n this.sendingEmailAddress = [\r\n { id: 'Personal', value: 'My Email Address' },\r\n { id: 'No Reply', value: 'Parent Notification Default \"From\" Address' }];\r\n\r\n if (this.v10) {\r\n this.sendingEmailAddress[1].value = 'System\\'s No-Reply Email Address';\r\n }\r\n }\r\n\r\n getUserSchoolYear() {\r\n let year: any;\r\n this.years = [];\r\n\r\n // V10\r\n if (this.v10) {\r\n year = { Id: 'Current Year', Description: 'Current Year', AYIdentifier: 'Current Year' };\r\n this.years.push(year);\r\n\r\n for (year of this.yearService.allYears) {\r\n if (this.years.filter(y => y.AYIdentifier == year.AYIdentifier).length == 0) {\r\n this.years.push(year);\r\n }\r\n }\r\n\r\n const selectedYear = this.years.filter(y => y.AYIdentifier == this.generalPreferences.DefaultYearIdentifier)[0];\r\n this.selectedYear = selectedYear;\r\n this.getCurrentYearSchools(selectedYear);\r\n }\r\n\r\n // V9\r\n if (!this.v10) {\r\n for (year of this.yearService.years) {\r\n if (this.years.filter(x => x.Description == year.Description).length == 0) {\r\n this.years.push(year);\r\n }\r\n }\r\n this.getCurrentYearSchoolsV9(this.generalPreferences.DefaultYearIdentifier);\r\n }\r\n\r\n }\r\n\r\n getCurrentYearSchools(year: Year) {\r\n this.generalPreferences.DefaultYearIdentifier = (year) ? year.AYIdentifier : '';\r\n const yearDescription = (year) ? year.Description : '';\r\n this.currentYearSchools = [];\r\n let filterSchools: Year[] = [];\r\n\r\n let school: School = new School();\r\n school.Id = 0;\r\n school.SchoolName = '';\r\n this.currentYearSchools.push(school);\r\n\r\n if (yearDescription == 'Current Year') {\r\n const currentYear = this.yearService.allYears.find(x => x.Status == 1);\r\n if (currentYear) {\r\n filterSchools = this.yearService.allYears.filter(y => y.AYIdentifier == currentYear.AYIdentifier);\r\n }\r\n } else {\r\n filterSchools = (year) ? this.yearService.allYears.filter(y => y.AYIdentifier == year.AYIdentifier) : [];\r\n }\r\n\r\n if (filterSchools.length > 0) {\r\n for (let i = 0; i < filterSchools.length; i++) {\r\n school = new School();\r\n school.Id = filterSchools[i].SchoolID;\r\n school.SchoolName = filterSchools[i].SchoolName;\r\n this.currentYearSchools.push(school);\r\n }\r\n }\r\n }\r\n\r\n getCurrentYearSchoolsV9(yearDescription) {\r\n let school: School = new School();\r\n this.currentYearSchools = [];\r\n let filterSchools: Year[] = [];\r\n if (yearDescription == 'Current Year') {\r\n const currentYear = this.yearService.years.find(x => x.Status == 1);\r\n if (currentYear) {\r\n filterSchools = this.yearService.years.filter(x => x.Description == currentYear.Description);\r\n }\r\n } else {\r\n if (this.yearService.allYears.filter(x => x.SchoolID == 0).length > 0) {\r\n filterSchools = this.yearService.yearsForC360.filter(x => x.Id == parseInt(yearDescription, 10));\r\n } else {\r\n filterSchools = this.yearService.allYears.filter(x => x.Id == parseInt(yearDescription, 10));\r\n }\r\n }\r\n\r\n if (filterSchools.length > 0) {\r\n for (let i = 0; i < filterSchools.length; i++) {\r\n school = new School();\r\n\r\n school.Id = filterSchools[i].SchoolID;\r\n school.SchoolName = filterSchools[i].SchoolName;\r\n this.currentYearSchools.push(school);\r\n }\r\n }\r\n }\r\n\r\n getUserSchoolYearPolicies() {\r\n this.userService.getUserSchoolYearPolicies(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(data => {\r\n this.userSchoolYearPolicies = data;\r\n });\r\n }\r\n\r\n getSchoolYearSettings() {\r\n this.schoolYearSettings = {};\r\n if (this.loginService.LoginSettings.V10 == false) {\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(data => {\r\n this.schoolYearSettings = data;\r\n });\r\n }\r\n }\r\n\r\n // ------------Get Preference Data---------------------------\r\n\r\n getGeneralPreferences() {\r\n if (this.userPreferenceService.generalPreferences == undefined || this.isDefaultPreferences) {\r\n\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISGeneralPreferences', 0, '', this.isDefaultPreferences).subscribe(data => {\r\n this.generalPreferences = JSON.parse(data);\r\n this.setEmailAddress();\r\n this.getUserSchoolYear();\r\n if (this.generalPreferences.PageSize == '0') {\r\n this.generalPreferences.PageSize = '100';\r\n }\r\n });\r\n } else {\r\n this.generalPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.generalPreferences));\r\n this.setEmailAddress();\r\n this.getUserSchoolYear();\r\n if (this.generalPreferences.PageSize == '0') {\r\n this.generalPreferences.PageSize = '100';\r\n }\r\n }\r\n }\r\n\r\n getAttendancePreferences() {\r\n if (this.userPreferenceService.attendancePreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISAttendance', 0, '', this.isDefaultPreferences).subscribe(data => {\r\n this.attendancePreferences = JSON.parse(data);\r\n this.attendancePreferences.ShowAlert = this.yearService.defaultYear.DisplayStudentAlertsOnAttendance;\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.attendancePreferences = JSON.parse(JSON.stringify(this.attendancePreferences));\r\n }\r\n });\r\n } else {\r\n this.attendancePreferences = JSON.parse(JSON.stringify(this.userPreferenceService.attendancePreferences));\r\n this.attendancePreferences.ShowAlert = this.yearService.defaultYear.DisplayStudentAlertsOnAttendance;\r\n }\r\n }\r\n\r\n getBehaviorPreferences() {\r\n if (this.userPreferenceService.behaviorPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISBehavior', 0, '', this.isDefaultPreferences).subscribe(data => {\r\n this.behaviorPreferences = JSON.parse(data);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.behaviorPreferences = JSON.parse(JSON.stringify(this.behaviorPreferences));\r\n }\r\n this.defaultUserLayoutId = this.behaviorPreferences.Layout_ID;\r\n });\r\n } else {\r\n this.behaviorPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.behaviorPreferences));\r\n this.defaultUserLayoutId = this.behaviorPreferences.Layout_ID;\r\n }\r\n }\r\n\r\n\r\n getClassroomSummaryPreferences() {\r\n if (this.userPreferenceService.classroomSummaryPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISClassroomSummary', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.classroomSummaryPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.classroomSummaryPreferences = JSON.parse(JSON.stringify(this.classroomSummaryPreferences));\r\n }\r\n });\r\n } else {\r\n this.classroomSummaryPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.classroomSummaryPreferences));\r\n }\r\n }\r\n\r\n getCommunicationLogPreferences() {\r\n if (this.userPreferenceService.communicationLogPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISCommunicationLog', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.communicationLogPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.communicationLogPreferences = JSON.parse(JSON.stringify(this.communicationLogPreferences));\r\n }\r\n });\r\n } else {\r\n this.communicationLogPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.communicationLogPreferences));\r\n }\r\n }\r\n\r\n getDataQueryPreferences() {\r\n if (this.userPreferenceService.dataQueryPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISDataQuery', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.dataQueryPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.dataQueryPreferences = JSON.parse(JSON.stringify(this.dataQueryPreferences));\r\n }\r\n });\r\n } else {\r\n this.dataQueryPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.dataQueryPreferences));\r\n }\r\n }\r\n\r\n getFavoritesPreferences() {\r\n if (this.userPreferenceService.favoritesPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISFavorites', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.favoritesPreferences = JSON.parse(results[0]);\r\n\r\n for (let i = 0; i < this.favoritesPreferences.FavoritePortals.length; i++) {\r\n const portalIndex: number = this.staffAssignedPortals.findIndex(x => x.PortalDescription == this.favoritesPreferences.FavoritePortals[i].PortalDescription);\r\n\r\n if (portalIndex != -1) {\r\n this.staffAssignedPortals[portalIndex].Selected = true;\r\n }\r\n }\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.favoritesPreferences = JSON.parse(JSON.stringify(this.favoritesPreferences));\r\n }\r\n });\r\n\r\n } else {\r\n this.favoritesPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.favoritesPreferences));\r\n\r\n for (let i = 0; i < this.favoritesPreferences.FavoritePortals.length; i++) {\r\n const portalIndex: number = this.staffAssignedPortals.findIndex(x => x.PortalDescription == this.favoritesPreferences.FavoritePortals[i].PortalDescription);\r\n\r\n if (portalIndex != -1) {\r\n this.staffAssignedPortals[portalIndex].Selected = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n getMassEmailPreferences() {\r\n if (this.userPreferenceService.massEmailPreferences == undefined || this.userPreferenceService.massEmailPreferences.Signature == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISMassEmail', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.massEmailPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.massEmailPreferences = JSON.parse(JSON.stringify(this.massEmailPreferences));\r\n }\r\n });\r\n } else {\r\n this.massEmailPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.massEmailPreferences));\r\n }\r\n }\r\n\r\n getGradebookPreferences() {\r\n if (this.selectedGradebookClass == undefined) {\r\n if (this.router.url == '/classroom360/gradebook/V10') {\r\n if (this.myClasses.length > 0) {\r\n this.selectedGradebookClass = this.myClasses.filter(x => x.Id == this.courseId)[0];\r\n if (this.selectedGradebookClass == undefined) {\r\n this.selectedGradebookClass = this.myClasses[0];\r\n }\r\n } else {\r\n this.selectedGradebookClass = this.additionalCourses.filter(x => x.Id == this.courseId)[0];\r\n if (this.selectedGradebookClass == undefined) {\r\n this.selectedGradebookClass = this.additionalCourses[0];\r\n }\r\n }\r\n } else if (this.myClasses.length > 0 || this.additionalCourses.length > 0) {\r\n if (this.myClasses.length > 0) {\r\n this.selectedGradebookClass = this.myClasses[0];\r\n } else {\r\n this.selectedGradebookClass = this.additionalCourses[0];\r\n }\r\n }\r\n }\r\n if (this.gradebookPreferences == undefined || !this.gradebookPreferences.SyncPreferencesAcrossCourses || this.v10 || this.isDefaultPreferences) {\r\n let subjectListId = 0;\r\n const subjectSection = '';\r\n if (!this.v10) {\r\n if (this.selectedGradebookClass != undefined && this.selectedGradebookClass.SiteSubjectListId != undefined) {\r\n subjectListId = this.selectedGradebookClass.SiteSubjectListId;\r\n }\r\n\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISGradeBook', subjectListId, subjectSection, this.isDefaultPreferences).subscribe(results => {\r\n this.gradebookPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.gradebookPreferences = JSON.parse(JSON.stringify(this.gradebookPreferences));\r\n if (parseInt(this.gradebookPreferences.AutoSaveDuration, 10) < 0) {\r\n this.gradebookPreferences.AutoSaveDuration = '0';\r\n }\r\n if (this.gradebookPreferences != undefined && this.gradebookPreferences.DefaultForStandardsView == 'Show') {\r\n this.setDefaultForStandardsView = true;\r\n } else {\r\n this.setDefaultForStandardsView = false;\r\n }\r\n if (this.gradebookPreferences && this.gradebookPreferences.StudentSortOrder == 'Custom') {\r\n this.gradebookStudentSortOrderOptions = ['Course Add Date', 'Custom (Set custom order from Tools menu)', 'Status', 'StudentName'];\r\n } else {\r\n this.gradebookStudentSortOrderOptions = ['Course Add Date', 'Custom', 'Status', 'StudentName'];\r\n }\r\n }\r\n this.changeFillBlankScore();\r\n if (this.gradebookPreferences.ResetPreferences == true) {\r\n this.getGradebookPreferencesResetWarningWindow();\r\n }\r\n });\r\n } else {\r\n if (this.selectedGradebookClass != undefined) {\r\n subjectListId = this.selectedGradebookClass.Id;\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISGradeBook', subjectListId, subjectSection, this.isDefaultPreferences).subscribe(data => {\r\n this.gradebookPreferences = JSON.parse(data);\r\n\r\n if (this.userSchoolYearPolicies.ShowInactiveStudents) {\r\n this.gradebookPreferences.ShowDroppedWithdrawn = true;\r\n }\r\n if (this.userSchoolYearPolicies.DisableAutoSave) {\r\n this.gradebookPreferences.AutoSave = false;\r\n }\r\n if (!this.userSchoolYearPolicies.AllowQuickAddAssignments) {\r\n this.gradebookPreferences.UseQuickAddWindow = false;\r\n }\r\n if (this.userSchoolYearPolicies.DefaultParentPublish) {\r\n this.gradebookPreferences.DefaultShowOnPortal = true;\r\n }\r\n\r\n if (this.additionalCourses != undefined && this.additionalCourses.length > 0) {\r\n if (this.additionalCourses.length == 1) {\r\n this.singleAdditional = true;\r\n } else {\r\n this.multipleAdditional = true;\r\n }\r\n this.additionalTeacher = true;\r\n if (this.router.url == 'classroom360/gradebook/V10') {\r\n const gradebookClass = this.additionalCourses.filter(function (element) {\r\n return element.Id == this.userPreferenceService.courseId;\r\n })[0];\r\n if (gradebookClass != undefined && !this.gradebookPreferences.SyncPreferencesAcrossCourses) {\r\n this.additionalTeacherClassFocus = (gradebookClass.AdditionalTeacher) ? true : false;\r\n }\r\n }\r\n }\r\n\r\n if (!this.userSchoolYearPolicies.IsAllowTeacherToSetFinalGradeCalculation) {\r\n this.gradebookPreferences.FGradeCalculationType = this.userSchoolYearPolicies.FGradeCalculationType.toString();\r\n // Set Calculation Type Preferences From Policies\r\n if (this.gradebookPreferences.FGradeCalculationType == '1') {\r\n this.gradebookPreferences.SemesterFinalGradeCalculationPoints = '0';\r\n this.gradebookPreferences.SemesterFinalGradeCalculationCombo = '0';\r\n } else if (this.gradebookPreferences.FGradeCalculationType == '2') {\r\n this.gradebookPreferences.SemesterFinalGradeCalculationPoints = this.userSchoolYearPolicies.SemesterFinalGradeCalculation.toString();\r\n this.gradebookPreferences.SemesterFinalGradeCalculationCombo = '0';\r\n } else if (this.gradebookPreferences.FGradeCalculationType == '3') {\r\n this.gradebookPreferences.SemesterFinalGradeCalculationPoints = '0';\r\n this.gradebookPreferences.SemesterFinalGradeCalculationCombo = this.userSchoolYearPolicies.SemesterFinalGradeCalculation.toString();\r\n }\r\n }\r\n\r\n // Set Rounding Preferences From Policies\r\n if (!this.userSchoolYearPolicies.IsAllowTeacherToSelectAssignmentRoundingInGB) {\r\n this.gradebookPreferences.NumericalGradeRoundTo = this.userSchoolYearPolicies.NumericalGradeRoundTo.toString();\r\n }\r\n\r\n if (!this.userSchoolYearPolicies.IsAllowTeacherToSelectGPRoundingInGB) {\r\n if (this.userSchoolYearPolicies.IsGPCWRoundDown) {\r\n this.gradebookPreferences.GPCWRound = '1';\r\n } else if (this.userSchoolYearPolicies.IsGPCWRoundUp) {\r\n this.gradebookPreferences.GPCWRound = '2';\r\n } else {\r\n this.gradebookPreferences.GPCWRound = '3';\r\n }\r\n this.gradebookPreferences.GPCWRoundToValue = this.userSchoolYearPolicies.GPCWRoundToValue.toString();\r\n }\r\n if (!this.userSchoolYearPolicies.IsAllowTeacherToSelectSemRoundingInGB) {\r\n if (this.userSchoolYearPolicies.IsSemFinalRoundDown) {\r\n this.gradebookPreferences.SemFinalRound = '1';\r\n } else if (this.userSchoolYearPolicies.IsSemFinalRoundUp) {\r\n this.gradebookPreferences.SemFinalRound = '2';\r\n } else {\r\n this.gradebookPreferences.SemFinalRound = '3';\r\n }\r\n this.gradebookPreferences.SemFinalRoundToValue = this.userSchoolYearPolicies.SemFinalRoundToValue.toString();\r\n }\r\n\r\n this.userPreferenceService.gradebookPreferences = JSON.parse(JSON.stringify(this.gradebookPreferences));\r\n\r\n // Wait until gradebook preferences have loaded\r\n if (this.router.url == '/classroom360/gradebook/V10') {\r\n this.menuSelected('Gradebook');\r\n }\r\n\r\n this.userPreferenceService.getWarnIfCalculationPreferencesChanged(this.selectedGradebookClass.Id, this.gradebookPreferences.SyncPreferencesAcrossCourses).subscribe(result => {\r\n this.warnIfCalculationPreferencesChanged = result;\r\n });\r\n this.changeFillBlankScore();\r\n });\r\n } else {\r\n if (this.additionalCourses != undefined && this.additionalCourses.length > 0) {\r\n if (this.additionalCourses.length == 1) {\r\n this.singleAdditional = true;\r\n } else {\r\n this.multipleAdditional = true;\r\n }\r\n this.additionalTeacher = true;\r\n if (this.router.url == 'classroom360/gradebook/V10') {\r\n const gradebookClass = this.additionalCourses.filter(function (element) {\r\n return element.Id == this.userPreferenceService.courseId;\r\n })[0];\r\n if (gradebookClass != undefined && !this.gradebookPreferences.SyncPreferencesAcrossCourses) {\r\n this.additionalTeacherClassFocus = (gradebookClass.AdditionalTeacher) ? true : false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n this.gradebookPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.gradebookPreferences));\r\n if (this.additionalCourses != undefined && this.additionalCourses.length > 0) {\r\n if (this.additionalCourses.length == 1) {\r\n this.singleAdditional = true;\r\n } else {\r\n this.multipleAdditional = true;\r\n }\r\n this.additionalTeacher = true;\r\n if (this.router.url == 'classroom360/gradebook/V10') {\r\n const gradebookClass = this.additionalCourses.filter(function (element) {\r\n return element.Id == this.userPreferenceService.courseId;\r\n })[0];\r\n if (gradebookClass != undefined && !this.gradebookPreferences.SyncPreferencesAcrossCourses) {\r\n this.additionalTeacherClassFocus = (gradebookClass.AdditionalTeacher) ? true : false;\r\n }\r\n }\r\n }\r\n if (this.gradebookPreferences != undefined && this.gradebookPreferences.DefaultForStandardsView == 'Show') {\r\n this.setDefaultForStandardsView = true;\r\n } else {\r\n this.setDefaultForStandardsView = false;\r\n }\r\n this.changeFillBlankScore();\r\n }\r\n\r\n if (this.v10 == false && this.gradebookSpecialMarks.length == 0) {\r\n if (this.gradebookV9Service.specialMarks.length == 0) {\r\n this.gradebookV9Service.course = new ClassroomSummary();\r\n this.gradebookV9Service.course.Id = 0;\r\n this.gradebookV9Service.getGradebookV9SpecialMarks().subscribe(specialMarks => {\r\n this.gradebookV9Service.specialMarks = specialMarks;\r\n this.gradebookSpecialMarks = JSON.parse(JSON.stringify(this.gradebookV9Service.specialMarks.filter(o => o.Selected == true)));\r\n const specialMark: SpecialMark = {\r\n Id: 0,\r\n Code: '',\r\n Description: '',\r\n Value: 0,\r\n Operation: 0,\r\n Locked: false,\r\n Selected: true,\r\n InUse: false,\r\n IsSelected: false,\r\n IsEdited: false,\r\n OperationDescription: '',\r\n IsUsedInCurrentYear: false,\r\n ColorCode: ''\r\n };\r\n this.gradebookSpecialMarks.splice(0, 0, specialMark);\r\n });\r\n } else {\r\n this.gradebookSpecialMarks = JSON.parse(JSON.stringify(this.gradebookV9Service.specialMarks.filter(o => o.Selected == true)));\r\n const specialMark: SpecialMark = {\r\n Id: 0,\r\n Code: '',\r\n Description: '',\r\n Value: 0,\r\n Operation: 0,\r\n Locked: false,\r\n Selected: true,\r\n InUse: false,\r\n IsSelected: false,\r\n IsEdited: false,\r\n OperationDescription: '',\r\n IsUsedInCurrentYear: false,\r\n ColorCode: ''\r\n };\r\n this.gradebookSpecialMarks.splice(0, 0, specialMark);\r\n }\r\n }\r\n }\r\n\r\n getGradebookPreferencesResetWarningWindow() {\r\n const gradebookPreferencesResetWarningsRef = this.dialog.open(GradebookPreferencesResetWarningsComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '425px',\r\n disableClose: true\r\n });\r\n\r\n gradebookPreferencesResetWarningsRef.afterClosed().subscribe(returnMessage => {\r\n if (returnMessage == 'Preferences was clicked.') {\r\n this.selectedPreferenceTab = 'Gradebook';\r\n setTimeout(() => {\r\n if (this.gradebookPreferencesDiv != null && this.columnsInScoreGridRow != null) {\r\n this.gradebookPreferencesDiv.nativeElement.scrollTop = this.columnsInScoreGridRow.nativeElement.offsetTop;\r\n }\r\n }, 100);\r\n }\r\n });\r\n }\r\n\r\n getMasterSchedulePreferences() {\r\n if (this.userPreferenceService.masterSchedulePreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISMasterSchedule', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.masterSchedulePreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.masterSchedulePreferences = JSON.parse(JSON.stringify(this.masterSchedulePreferences));\r\n }\r\n });\r\n } else {\r\n this.masterSchedulePreferences = JSON.parse(JSON.stringify(this.userPreferenceService.masterSchedulePreferences));\r\n }\r\n }\r\n\r\n getPeriodStatisticsPreferences() {\r\n if (this.userPreferenceService.periodStatisticsPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISPeriodStatistics', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.periodStatisticsPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.periodStatisticsPreferences = JSON.parse(JSON.stringify(this.periodStatisticsPreferences));\r\n }\r\n });\r\n } else {\r\n this.periodStatisticsPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.periodStatisticsPreferences));\r\n }\r\n\r\n }\r\n\r\n getScheduleStudentListPreferences() {\r\n if (this.userPreferenceService.scheduleStudentListPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISScheduleStudentList', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.scheduleStudentListPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.scheduleStudentListPreferences = JSON.parse(JSON.stringify(this.scheduleStudentListPreferences));\r\n }\r\n });\r\n } else {\r\n this.scheduleStudentListPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.scheduleStudentListPreferences));\r\n }\r\n }\r\n\r\n getClassesByCoursePreferences() {\r\n if (this.userPreferenceService.classesByCoursePreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISClassesByCourse', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.classesByCoursePreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.classesByCoursePreferences = JSON.parse(JSON.stringify(this.classesByCoursePreferences));\r\n }\r\n });\r\n } else {\r\n this.classesByCoursePreferences = JSON.parse(JSON.stringify(this.userPreferenceService.classesByCoursePreferences));\r\n }\r\n }\r\n\r\n getClassRosterPreferences() {\r\n if (this.userPreferenceService.classRosterPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISClassRoster', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.classRosterPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.classRosterPreferences = JSON.parse(JSON.stringify(this.classRosterPreferences));\r\n }\r\n });\r\n } else {\r\n this.classRosterPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.classRosterPreferences));\r\n }\r\n }\r\n\r\n getRoomSchedulingSettingsPreferences() {\r\n if (this.userPreferenceService.roomSchedulingSettingsPreferences == undefined || this.isDefaultPreferences) {\r\n this.userPreferenceService.getUserPreferences(0, '/OneSISRoomSchedulingSettings', 0, '', this.isDefaultPreferences).subscribe(results => {\r\n this.roomSchedulingSettingsPreferences = JSON.parse(results[0]);\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.roomSchedulingSettingsPreferences = JSON.parse(JSON.stringify(this.roomSchedulingSettingsPreferences));\r\n }\r\n });\r\n } else {\r\n this.roomSchedulingSettingsPreferences = JSON.parse(JSON.stringify(this.userPreferenceService.roomSchedulingSettingsPreferences));\r\n }\r\n }\r\n\r\n // ------------Save Preference Data--------------------------\r\n saveClick() {\r\n this.errors = [];\r\n if (this.loginService.LoginSettings.ActivateClassroom360 == false) {\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.generalPreferences = this.generalPreferences;\r\n }\r\n this.saveUserPreferences('/OneSISGeneralPreferences', this.generalPreferences, 0, '');\r\n } else if (this.loginService.LoginSettings.V10 == false && this.gradebookPreferences.FillBlankScores == 'Score'\r\n && this.gradebookPreferences.FillBlankScoreValue == null) {\r\n this.errors.push({\r\n fieldName: 'Score',\r\n fieldRef: this.scoreValue,\r\n errorMsg: 'Score is required'\r\n });\r\n this.menuSelected('Gradebook');\r\n } else if (this.loginService.LoginSettings.V10 == false && this.gradebookPreferences.FillBlankScores == 'SpecialMark'\r\n && (this.gradebookPreferences.FillBlankScoreSpecialMarkId == null || this.gradebookPreferences.FillBlankScoreSpecialMarkId == '0')) {\r\n this.errors.push({\r\n fieldName: 'Special Mark',\r\n fieldRef: this.specialMarks,\r\n errorMsg: 'Special Mark is required'\r\n });\r\n this.menuSelected('Gradebook');\r\n } else {\r\n if (this.gradebookPreferences != null && ((this.loginService.LoginSettings.V10\r\n // && _.findWhere(this.gradebookPreferences.AvailableColumns, { Field: 'Final' }))\r\n && (this.gradebookPreferences.AvailableColumns.filter(x => x.Field == 'Final').length > 0))\r\n || (!this.loginService.LoginSettings.V10 && this.gradebookPreferences.ReportCardGrades == 0))) {\r\n this.gradebookPreferences.ShowProgressCycles = false;\r\n this.gradebookPreferences.ShowTerms = false;\r\n this.gradebookPreferences.ShowSemesters = false;\r\n this.gradebookPreferences.ShowYearEnd = false;\r\n this.gradebookPreferences.ShowAllTerms = false;\r\n }\r\n if (!this.isDefaultPreferences) {\r\n this.userPreferenceService.generalPreferences = this.generalPreferences;\r\n this.userPreferenceService.attendancePreferences = this.attendancePreferences;\r\n this.userPreferenceService.classroomSummaryPreferences = this.classroomSummaryPreferences;\r\n this.userPreferenceService.communicationLogPreferences = this.communicationLogPreferences;\r\n this.userPreferenceService.dataQueryPreferences = this.dataQueryPreferences;\r\n this.userPreferenceService.massEmailPreferences = this.massEmailPreferences;\r\n this.userPreferenceService.gradebookPreferences = this.gradebookPreferences;\r\n this.userPreferenceService.favoritesPreferences = this.favoritesPreferences;\r\n this.userPreferenceService.masterSchedulePreferences = this.masterSchedulePreferences;\r\n this.userPreferenceService.periodStatisticsPreferences = this.periodStatisticsPreferences;\r\n this.userPreferenceService.scheduleStudentListPreferences = this.scheduleStudentListPreferences;\r\n this.userPreferenceService.classesByCoursePreferences = this.classesByCoursePreferences;\r\n this.userPreferenceService.classRosterPreferences = this.classRosterPreferences;\r\n this.userPreferenceService.roomSchedulingSettingsPreferences = this.roomSchedulingSettingsPreferences;\r\n }\r\n\r\n // this.setFavoritesPreferences();\r\n this.saveUserPreferences('/OneSISGeneralPreferences', this.generalPreferences, 0, '');\r\n if (this.loginService.LoginSettings.V10 && this.router.url == 'classroom360/gradebook/V10') {\r\n this.saveUserPreferences('/OneSISAttendance', this.attendancePreferences, 0, '');\r\n } else {\r\n this.saveUserPreferences('/OneSISAttendance', this.attendancePreferences, 0, '');\r\n }\r\n\r\n this.saveUserPreferences('/OneSISClassroomSummary', this.classroomSummaryPreferences, 0, '');\r\n this.saveUserPreferences('/OneSISCommunicationLog', this.communicationLogPreferences, 0, '');\r\n // this.saveUserPreferences('/OneSISFavorites', this.favoritesPreferences, 0, '');\r\n this.appFavorites.saveClick();\r\n this.saveUserPreferences('/OneSISMassEmail', this.massEmailPreferences, 0, '');\r\n this.saveUserPreferences('/OneSISDataQuery', this.dataQueryPreferences, 0, '');\r\n this.saveUserPreferences('/OneSISMasterSchedule', this.masterSchedulePreferences, 0, '');\r\n this.saveUserPreferences('/OneSISPeriodStatistics', this.periodStatisticsPreferences, 0, '');\r\n this.saveUserPreferences('/OneSISScheduleStudentList', this.scheduleStudentListPreferences, 0, '');\r\n this.saveUserPreferences('/OneSISClassesByCourse', this.classesByCoursePreferences, 0, '');\r\n this.saveUserPreferences('/OneSISClassRoster', this.classRosterPreferences, 0, '');\r\n this.saveUserPreferences('/OneSISRoomSchedulingSettings', this.roomSchedulingSettingsPreferences, 0, '');\r\n\r\n if (!this.loginService.LoginSettings.V10) {\r\n let subjectListId = 0;\r\n let subjectSection = '';\r\n if (this.selectedGradebookClass != undefined && this.selectedGradebookClass.SiteSubjectListId != undefined) {\r\n subjectListId = this.selectedGradebookClass.SiteSubjectListId;\r\n subjectSection = this.selectedGradebookClass.Section;\r\n }\r\n if (this.gradebookPreferences.SummaryCharacterCount == undefined || this.gradebookPreferences.SummaryCharacterCount.toString().length == 0 || isNaN(this.gradebookPreferences.SummaryCharacterCount)) {\r\n this.gradebookPreferences.SummaryCharacterCount = 15;\r\n }\r\n if (this.gradebookPreferences.SummaryCharacterSlideCount == undefined || this.gradebookPreferences.SummaryCharacterSlideCount.toString().length == 0 || isNaN(this.gradebookPreferences.SummaryCharacterSlideCount)) {\r\n this.gradebookPreferences.SummaryCharacterSlideCount = 40;\r\n }\r\n this.saveUserPreferences('/OneSISGradeBook', this.gradebookPreferences, subjectListId, subjectSection);\r\n } else {\r\n if (this.myClasses.length > 0 && (this.selectedGradebookClass != null || this.isDefaultPreferences)) {\r\n const classId = (this.isDefaultPreferences) ? 0 : this.selectedGradebookClass.Id;\r\n this.saveUserPreferences('/OneSISGradeBook', this.gradebookPreferences, classId, '');\r\n }\r\n }\r\n\r\n if (this.isDefaultPreferences) {\r\n this.saveBehaviorDefaultLayouts();\r\n } else if (this.disciplineQuickEntryUserSelectLayout && this.allowDisciplineQuickEntry) {\r\n this.saveUserDefaultLayout();\r\n }\r\n }\r\n\r\n\r\n // Saving the requests as batch and then closing\r\n const batchRequest = forkJoin(this.saveRequests);\r\n const saveSubscription = batchRequest.subscribe(() => {\r\n saveSubscription.unsubscribe();\r\n this.dialogRef.close('Save was clicked.');\r\n });\r\n // this.classroom360Service.getStaffAssignedPortals(0, true).subscribe(staffAssignedPortals => {\r\n // this.classroom360Service.updateStaffAssignedPortals(staffAssignedPortals);\r\n // });\r\n }\r\n\r\n saveUserPreferences(pageUrl: string, preferenceData: any, subjectListId: number, subjectSection: string) {\r\n // PRE: the parameters needed to perform a preference save: pageUrl, the preferences, the subject list id, and the subject's section\r\n // POST: appends the save request to the list of save requests for batch saving\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(preferenceData));\r\n\r\n // Obtaining the save request\r\n const saveRequest = this.userPreferenceService.saveUserPreferences(0, pageUrl, xmlStream, subjectListId, subjectSection, this.isDefaultPreferences).pipe(\r\n map(result => {\r\n if (pageUrl == '/OneSISGradeBook') {\r\n this.userPreferenceService.updateGradebookPReferences();\r\n }\r\n return result;\r\n })\r\n );\r\n\r\n // Appending it to our list of save requests\r\n this.saveRequests.push(saveRequest);\r\n }\r\n\r\n // ------------Helper Methods--------------------------\r\n\r\n editLayoutsClick() {\r\n // ONE-7723 Behavior Quick Add - Disable Edit My Layouts\r\n // We need to temporarily Disable the use of \"Edit My Layout\" in Preferences > Behavior.\r\n // Once the customization framework is built for v9 then we will enable it again.\r\n if (this.v10) {\r\n this.dialog.open(SavedLayoutsDialogComponent, { height: '80vh', minWidth: '1000px', disableClose: true });\r\n // if (this.customLayoutService.layoutTypes.length == 0) {\r\n // this.subscriptions.push(this.customLayoutService.getLayoutTypes().subscribe(types => {\r\n // this.customLayoutService.layoutTypes = types;\r\n // this.customLayoutService.selectedLayoutType = types.find(t => t.Name == 'Behavior Quick Add');\r\n // this.openLayoutEditor();\r\n // }));\r\n // } else {\r\n // this.customLayoutService.selectedLayoutType = this.customLayoutService.layoutTypes.find(t => t.Name == 'Behavior Quick Add');\r\n // this.openLayoutEditor();\r\n // }\r\n }\r\n }\r\n\r\n openLayoutEditor() {\r\n // get default user layout before opening editor.\r\n this.subscriptions.push(this.customLayoutService.getUserDefaultLayout(this.customLayoutService.selectedLayoutType.Id, this.yearService.defaultYear.SchoolID, false).subscribe(layoutId => {\r\n this.customLayoutService.selectedLayout = this.layouts.find(o => o.Id == layoutId);\r\n const dialogRef = this.dialog.open(LayoutEditorComponent, {\r\n height: '100vh',\r\n width: '80vw',\r\n disableClose: true,\r\n });\r\n\r\n this.subscriptions.push(dialogRef.afterClosed().subscribe(result => {\r\n this.getBehaviorLayout();\r\n }));\r\n }));\r\n\r\n }\r\n\r\n getLayoutType() {\r\n if (this.customLayoutService.layoutTypes.length == 0) {\r\n this.subscriptions.push(this.customLayoutService.getLayoutTypes().subscribe(types => {\r\n this.customLayoutService.layoutTypes = types;\r\n this.customLayoutService.selectedLayoutType = types.find(t => t.Name == 'Behavior Quick Add');\r\n if (this.customLayoutService.selectedLayoutType) {\r\n this.getBehaviorLayout();\r\n }\r\n }));\r\n } else {\r\n this.customLayoutService.selectedLayoutType = this.customLayoutService.layoutTypes.find(t => t.Name == 'Behavior Quick Add');\r\n if (this.customLayoutService.selectedLayoutType) {\r\n this.getBehaviorLayout();\r\n }\r\n }\r\n }\r\n\r\n getBehaviorLayout() {\r\n this.getBehaviorPreferences();\r\n\r\n this.schools = this.yearService.schools;\r\n\r\n this.customLayoutService.getCustomLayoutSchoolDefaults(this.customLayoutService.selectedLayoutType.Id).subscribe(result => {\r\n this.defaultSchoolLayouts = result.filter(x => this.schools.findIndex(o => o.Id == x.School_Domain) != -1);\r\n this.defaultSchoolLayouts.sort(function (a, b) {\r\n if (a.SchoolName < b.SchoolName) {\r\n return -1;\r\n }\r\n if (a.SchoolName > b.SchoolName) {\r\n return 1;\r\n }\r\n });\r\n\r\n this.customLayoutService.getLayoutsByType(this.customLayoutService.selectedLayoutType.Id, this.yearService.defaultYear.Id, false).subscribe(results => {\r\n this.layouts = results;\r\n let defaultLayoutId = 0;\r\n\r\n const defaultLayoutIndex: number = this.layouts.findIndex(layout => layout.TylerDefault == true);\r\n if (defaultLayoutIndex != -1) {\r\n defaultLayoutId = this.layouts[defaultLayoutIndex].Id;\r\n }\r\n\r\n this.schools.forEach(school => {\r\n const schoolDefaultIndex: number = this.defaultSchoolLayouts.findIndex(x => x.School_Domain == school.Id);\r\n\r\n if (schoolDefaultIndex != -1) {\r\n this.defaultSchoolLayouts[schoolDefaultIndex].SchoolName = school.SchoolName;\r\n } else {\r\n const defaultSchoolLayout: CustomLayoutSchoolDefault = new CustomLayoutSchoolDefault();\r\n defaultSchoolLayout.Id = 0;\r\n defaultSchoolLayout.LayoutType_Id = 2;\r\n defaultSchoolLayout.Layout_Id = defaultLayoutId;\r\n defaultSchoolLayout.SchoolName = school.SchoolName;\r\n defaultSchoolLayout.School_Domain = school.Id;\r\n\r\n this.defaultSchoolLayouts.push(defaultSchoolLayout);\r\n }\r\n });\r\n\r\n this.defaultSchoolLayouts.sort(function (a, b) {\r\n if (a.SchoolName < b.SchoolName) {\r\n return -1;\r\n }\r\n if (a.SchoolName > b.SchoolName) {\r\n return 1;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n saveBehaviorDefaultLayouts() {\r\n this.customLayoutService.saveDefaultSchoolLayouts(this.defaultSchoolLayouts).subscribe();\r\n }\r\n\r\n saveUserDefaultLayout() {\r\n this.behaviorPreferences = new BehaviorPreferences;\r\n this.behaviorPreferences.Layout_ID = this.defaultUserLayoutId;\r\n this.userPreferenceService.behaviorPreferences = this.behaviorPreferences;\r\n this.saveUserPreferences('/OneSISBehavior', this.behaviorPreferences, 0, '');\r\n }\r\n\r\n changeAllDefaultLayouts() {\r\n this.defaultSchoolLayouts.forEach(schoolLayout => {\r\n schoolLayout.Layout_Id = this.allLayoutsId;\r\n });\r\n }\r\n\r\n resetAllUsersToDefault() {\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'WARNING';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Are you sure you want to reset all users to default layout for the district?';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteUserDefaults: boolean) => {\r\n if (deleteUserDefaults) {\r\n this.customLayoutService.setUserLayoutToDefault(this.customLayoutService.selectedLayoutType.Id).subscribe(result => {\r\n this.sharedService.showCustomSnackbar('All users have been reset to the default layout.', 'success');\r\n });\r\n }\r\n });\r\n }\r\n\r\n checkShowPortal(portalName: string): boolean {\r\n if (this.staffAssignedPortalNames[portalName] != undefined) {\r\n return this.staffAssignedPortalNames[portalName];\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n checkForChildPortals(portal: Portal): boolean {\r\n return this.staffAssignedPortals.filter(x => x.ParentId == portal.Id).length > 0;\r\n }\r\n\r\n isEven(rowId): boolean {\r\n return (rowId % 2) === 0;\r\n }\r\n\r\n expandDetailSection(sectionName: string) {\r\n if (this.rowDetailExpand[sectionName] != null) {\r\n this.rowDetailExpand[sectionName] = !this.rowDetailExpand[sectionName];\r\n } else {\r\n this.rowDetailExpand[sectionName] = false;\r\n }\r\n }\r\n\r\n closeClick() {\r\n if (this.selectedPreferenceTab == 'Favorites') {\r\n this.staffAssignedPortals = JSON.parse(JSON.stringify(this.staffAssignedPortalsCopy));\r\n this.classroom360Service.updateStaffAssignedPortals(this.staffAssignedPortals);\r\n }\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n expandAllClick(expandSection) {\r\n\r\n if (this.selectedPreferenceTab == 'General') {\r\n this.rowDetailExpand['ACTIVE DIRECTORY'] = expandSection;\r\n this.rowDetailExpand['CLASSES IN DROPDOWN'] = expandSection;\r\n this.rowDetailExpand['LOGIN'] = expandSection;\r\n this.rowDetailExpand['STUDENT ALERTS'] = expandSection;\r\n this.rowDetailExpand['STUDENT NAMES'] = expandSection;\r\n this.rowDetailExpand['STUDENT SEARCH'] = expandSection;\r\n }\r\n if (this.selectedPreferenceTab == 'Favorites') {\r\n this.appFavorites.expandAllClick(expandSection);\r\n } else if (this.selectedPreferenceTab == 'Gradebook') {\r\n this.rowDetailExpand['ADDING ASSIGNMENTS'] = expandSection;\r\n this.rowDetailExpand['ASSIGNMENT HEADING'] = expandSection;\r\n this.rowDetailExpand['ASSIGNMENT SORT'] = expandSection;\r\n this.rowDetailExpand['ASSIGNMENT SCORES'] = expandSection;\r\n this.rowDetailExpand['AUTO-SAVE'] = expandSection;\r\n this.rowDetailExpand['COLUMNS IN SCORES GRID'] = expandSection;\r\n this.rowDetailExpand['STUDENTS'] = expandSection;\r\n this.rowDetailExpand['COMMENTS'] = expandSection;\r\n this.rowDetailExpand['REPORTCARDGRADES'] = expandSection;\r\n this.rowDetailExpand['STANDARDS'] = expandSection;\r\n this.rowDetailExpand['FINAL GRADE CALCULATION'] = expandSection;\r\n this.rowDetailExpand['ROUNDING'] = expandSection;\r\n }\r\n }\r\n\r\n menuSelected(selection: string) {\r\n if (selection == 'Gradebook') {\r\n if (!this.userService.currentUser.UserIsTeacher && !this.isDefaultPreferences && !this.userGBPreferencesPermission()) {\r\n this.PrimaryTeacherWarningModal();\r\n this.selectedPreferenceTab = 'General';\r\n return;\r\n }\r\n if (this.myClasses.length == 0) {\r\n this.NoGradingClassesModal();\r\n if (this.additionalCourses.length == 0) {\r\n this.selectedPreferenceTab = 'General';\r\n } else {\r\n this.selectedPreferenceTab = selection;\r\n }\r\n } else {\r\n if (this.additionalCourses != undefined && this.additionalCourses.length > 0) {\r\n this.AdditionalTeacherWarningModal();\r\n }\r\n this.selectedPreferenceTab = selection;\r\n }\r\n } else if (selection == 'Favorites') {\r\n this.staffAssignedPortalsCopy = JSON.parse(JSON.stringify(this.staffAssignedPortals));\r\n this.selectedPreferenceTab = selection;\r\n } else {\r\n this.selectedPreferenceTab = selection;\r\n }\r\n }\r\n\r\n AssignmentHeadingCheck(): boolean {\r\n return this.gradebookPreferences.AssignmentHeading.filter(x => x.Field == 'Summary' && x.value).length > 0;\r\n }\r\n\r\n validateField(Type: string) {\r\n let autoSaveDurationInt = 10;\r\n if (this.gradebookPreferences.AutoSaveDuration != undefined || this.gradebookPreferences.AutoSaveDuration == null) {\r\n autoSaveDurationInt = parseInt(this.gradebookPreferences.AutoSaveDuration, 10);\r\n }\r\n if (Type == 'Summary') {\r\n if (this.loginService.LoginSettings.C360GradebookAssignmentsLongSummary == false) {\r\n if (this.gradebookPreferences.SummaryCharacterCount < 1) {\r\n this.gradebookPreferences.SummaryCharacterCount = 1;\r\n }\r\n if (this.gradebookPreferences.SummaryCharacterCount > 50) {\r\n this.gradebookPreferences.SummaryCharacterCount = 50;\r\n }\r\n } else {\r\n if (this.gradebookPreferences.SummaryCharacterCount < 1) {\r\n this.gradebookPreferences.SummaryCharacterCount = 1;\r\n }\r\n if (this.gradebookPreferences.SummaryCharacterCount > 1000) {\r\n this.gradebookPreferences.SummaryCharacterCount = 1000;\r\n }\r\n }\r\n } else if (Type == 'AutoSaveDuration') {\r\n if (autoSaveDurationInt < 1) {\r\n this.gradebookPreferences.AutoSaveDuration = '1';\r\n }\r\n if (autoSaveDurationInt > 60) {\r\n this.gradebookPreferences.AutoSaveDuration = '60';\r\n }\r\n } else if (Type == 'FillBlankScoreValue') {\r\n if ($.isNumeric(this.gradebookPreferences.FillBlankScoreValue) == false) {\r\n this.gradebookPreferences.FillBlankScoreValue = 0;\r\n }\r\n }\r\n }\r\n\r\n changeGradePreferenceCourse() {\r\n this.getGradebookPreferences();\r\n }\r\n\r\n setCalculationValues() {\r\n if (this.gradebookPreferences.FGradeCalculationType == '1') {\r\n this.gradebookPreferences.SemesterFinalGradeCalculationPoints = '0';\r\n this.gradebookPreferences.SemesterFinalGradeCalculationCombo = '0';\r\n } else if (this.gradebookPreferences.FGradeCalculationType == '2') {\r\n this.gradebookPreferences.SemesterFinalGradeCalculationPoints = '1';\r\n this.gradebookPreferences.SemesterFinalGradeCalculationCombo = '0';\r\n } else if (this.gradebookPreferences.FGradeCalculationType == '3') {\r\n this.gradebookPreferences.SemesterFinalGradeCalculationPoints = '0';\r\n this.gradebookPreferences.SemesterFinalGradeCalculationCombo = '1';\r\n }\r\n }\r\n\r\n calculationTypeChanged() {\r\n if (this.warnIfCalculationPreferencesChanged) {\r\n this.CalculationPreferencesWarningModal();\r\n }\r\n }\r\n\r\n switchRCGType(type: string) {\r\n if (type == 'projection' && this.gradebookPreferences.ProjectFutureScores) {\r\n this.gradebookPreferences.ShowAllTerms = false;\r\n this.projectScoresDialog = this.dialog.open(ProjectScoresInfoComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '600px'\r\n });\r\n } else if (this.gradebookPreferences.ShowAllTerms) {\r\n this.gradebookPreferences.ProjectFutureScores = false;\r\n }\r\n }\r\n\r\n userGBPreferencesPermission() {\r\n return this.gradebookV10Service.adminPermissions && this.gradebookV10Service.adminPermissions.filter(p => p.PermissionName == 'Change Preferences').length > 0;\r\n }\r\n\r\n // ------------Modal window-----------------------\r\n SyncPreferencesClick() {\r\n this.syncPrefDialogRef = this.dialog.open(SyncPreferencesDialogComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n maxWidth: '500px'\r\n });\r\n this.syncPrefDialogRef.componentInstance.syncPreferencesAcrossCourses = this.gradebookPreferences.SyncPreferencesAcrossCourses;\r\n\r\n this.syncPrefDialogRef.afterClosed().subscribe(result => {\r\n if (result != 'OK was clicked') {\r\n this.gradebookPreferences.SyncPreferencesAcrossCourses = !this.gradebookPreferences.SyncPreferencesAcrossCourses;\r\n }\r\n });\r\n }\r\n\r\n NoGradingClassesModal() {\r\n this.noGradingClassesDialogRef = this.dialog.open(NoGradingClassesDialogComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '500px'\r\n });\r\n }\r\n\r\n CustomSortWarningModal() {\r\n if (this.gradebookPreferences.StudentSortOrder == 'Custom') {\r\n this.gradebookStudentSortOrderOptions = ['Course Add Date', 'Custom (Set custom order from Tools menu)', 'Status', 'StudentName'];\r\n this.customSortWarningDialogRef = this.dialog.open(CustomSortWarningDialogComponent, {\r\n panelClass: 'tyl-mat-dialog'\r\n });\r\n } else {\r\n this.gradebookStudentSortOrderOptions = ['Course Add Date', 'Custom', 'Status', 'StudentName'];\r\n }\r\n }\r\n\r\n AdditionalTeacherWarningModal() {\r\n this.additionalTeacherWarningDialogRef = this.dialog.open(AdditionalTeacherWarningDialogComponent, {\r\n panelClass: 'tyl-mat-dialog'\r\n });\r\n\r\n this.additionalTeacherWarningDialogRef.componentInstance.additionalTeacher = this.additionalTeacher;\r\n this.additionalTeacherWarningDialogRef.componentInstance.multipleAdditional = this.multipleAdditional;\r\n this.additionalTeacherWarningDialogRef.componentInstance.singleAdditional = this.singleAdditional;\r\n this.additionalTeacherWarningDialogRef.componentInstance.syncPreferencesAcrossCourses = this.gradebookPreferences.SyncPreferencesAcrossCourses;\r\n this.additionalTeacherWarningDialogRef.componentInstance.additionalTeacherClassFocus = this.additionalTeacherClassFocus;\r\n }\r\n\r\n PrimaryTeacherWarningModal() {\r\n this.primaryTeacherWarningDialogRef = this.dialog.open(PrimaryTeacherWarningDialogComponent, {\r\n panelClass: 'tyl-mat-dialog'\r\n });\r\n }\r\n\r\n CalculationPreferencesWarningModal() {\r\n this.calculationPreferenceWarningDialogRef = this.dialog.open(CalculationPreferenceWarningDialogComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '500px'\r\n });\r\n }\r\n\r\n showStudentNumberCheck() {\r\n if (this.generalPreferences.ShowStudentNumber && this.attendancePreferences && this.attendancePreferences.AvailableColumns.filter(c => c == 'Student #').length > 0) {\r\n const studentNumberColumn = this.attendancePreferences.AvailableColumns.filter(c => c == 'Student #')[0];\r\n if (studentNumberColumn != undefined) {\r\n this.attendancePreferences.ColumnsToShow.push(studentNumberColumn);\r\n this.attendancePreferences.AvailableColumns = this.attendancePreferences.AvailableColumns.filter(c => c != 'Student #');\r\n }\r\n }\r\n this.setGradebookStudentNumberColumn();\r\n }\r\n\r\n attendanceRestrict(item: CdkDrag) {\r\n if (item.data == 'Student Name' || item.data == 'Projected Enrollment') {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n attendanceRestrictNumber(item: CdkDrag) {\r\n if (item.data == 'Student Name' || item.data == 'Student #' || item.data == 'Projected Enrollment') {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n fieldDrop(event: CdkDragDrop) {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n } else {\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n }\r\n }\r\n dropAssignmentSort(event: CdkDragDrop) {\r\n moveItemInArray(this.gradebookPreferences.AssignmentSort, event.previousIndex, event.currentIndex);\r\n // re-index the items\r\n for (let i = 0; i < this.gradebookPreferences.AssignmentSort.length; i++) {\r\n this.gradebookPreferences.AssignmentSort[i].LinkOrder = i;\r\n }\r\n }\r\n\r\n dropAssignmentHeading(event: CdkDragDrop) {\r\n moveItemInArray(this.gradebookPreferences.AssignmentHeading, event.previousIndex, event.currentIndex);\r\n // re-index the items\r\n for (let i = 0; i < this.gradebookPreferences.AssignmentHeading.length; i++) {\r\n this.gradebookPreferences.AssignmentHeading[i].LinkOrder = i;\r\n }\r\n }\r\n\r\n getStaticAttendanceColumnColor(column: string) {\r\n return column == 'Student Name' || column == 'Projected Enrollment' || (this.generalPreferences.ShowStudentNumber && column == 'Student #');\r\n }\r\n\r\n defaultForStandardsViewChange() {\r\n this.setDefaultForStandardsView = !this.setDefaultForStandardsView;\r\n if (this.setDefaultForStandardsView) {\r\n this.gradebookPreferences.DefaultForStandardsView = 'Show';\r\n } else {\r\n this.gradebookPreferences.DefaultForStandardsView = 'Hide';\r\n }\r\n }\r\n\r\n changeFillBlankScore() {\r\n this.errors = [];\r\n if (this.gradebookPreferences.FillBlankScores == 'Score') {\r\n this.gradebookPreferences.FillBlankScoreSpecialMarkId = '0';\r\n } else if (this.gradebookPreferences.FillBlankScores == 'SpecialMark') {\r\n this.gradebookPreferences.FillBlankScoreValue = null;\r\n }\r\n }\r\n\r\n showSchedulingTab() {\r\n return this.activateClassroom360 &&\r\n (\r\n this.staffAssignedPortalNames['Master Schedule']\r\n || this.staffAssignedPortalNames['Period Statistics']\r\n || this.staffAssignedPortalNames['Schedule Student List']\r\n || this.staffAssignedPortals['Classes By Course']\r\n );\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'portalFilter',\r\n pure: false\r\n})\r\nexport class PortalFilterPipe implements PipeTransform {\r\n transform(items: Portal[]): any {\r\n // return items.filter(x => x.ShowAsMenu == true && x.ParentId == 0);\r\n return items.filter(x => x.ParentId == 0);\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'tileFilter',\r\n pure: false\r\n})\r\nexport class TileFilterPipe implements PipeTransform {\r\n transform(tiles: string[], staffAssignedPortalNames: string[]): any {\r\n // return items.filter(x => x.ShowAsMenu == true && x.ParentId == 0);\r\n return tiles.filter(name =>\r\n staffAssignedPortalNames[name]\r\n );\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'childPortalFilter',\r\n pure: false\r\n})\r\nexport class ChildPortalFilterPipe implements PipeTransform {\r\n transform(items: Portal[], filter: Object): any {\r\n return items.filter(x => x.ParentId == filter);\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'schoolLayoutFilter',\r\n pure: false\r\n})\r\nexport class SchoolLayoutFilterPipe implements PipeTransform {\r\n transform(items: CustomLayout[], filter: number): any {\r\n return items.filter(x =>\r\n x.SelectedSites == undefined ||\r\n x.SelectedSites.split(',').indexOf(filter.toString()) != -1);\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'schoolLayoutAllFilter',\r\n pure: false\r\n})\r\nexport class SchoolLayoutAllFilterPipe implements PipeTransform {\r\n transform(items: CustomLayout[], filter: number): any {\r\n return items.filter(x => x.SelectedSites == undefined);\r\n }\r\n}\r\n","export class RoomSchedulingSettingsPreferences {\r\n AvailableColumns: string[] = [];\r\n ShowColumns: string[] = [];\r\n}\r\n","import { System } from './../System';\r\n\r\nimport { Observable, of, ReplaySubject} from 'rxjs';\r\nimport {EventEmitter, Injectable} from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GeneralPreferences } from './general-preferences.model';\r\nimport { AttendancePreferences } from './attendance-preferences.model';\r\nimport { ClassroomSummaryPreferences } from './classroom-summary-preferences.model';\r\nimport { CommunicationLogPreferences } from './communication-log-preferences.model';\r\nimport { DataQueryPreferences } from './data-query-preferences.model';\r\nimport { MassEmailPreferences } from './mass-email-preferences.model';\r\nimport { GradebookPreferences } from '../../classroom360/gradebook/shared/models/preferences/gradebook-preferences.model';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { Year } from '../year/year.model';\r\nimport { Subscription } from '../../../../node_modules/rxjs';\r\nimport { YearService } from '../year/year.service';\r\nimport { Subject } from '../../../../node_modules/rxjs';\r\nimport { FavoritePreferences } from './favorite-prefences.model';\r\nimport { PortalMenuPreferences } from './portal-menu-preferences.model';\r\nimport { Portal } from '../portal.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { GradebookSelectionPreferences } from './gradebook-selection-preferences.model';\r\nimport {map} from 'rxjs/operators';\r\nimport { BehaviorPreferences } from './behavior-preferences.model';\r\nimport {MasterSchedulePreferences} from './master-schedule-preferences.model';\r\nimport {PeriodStatisticsPreferences} from './period-statistics-preferences.model';\r\nimport { GradebookAnalysisSetting } from './gradebook-analysis-setting.model';\r\nimport {ScheduleStudentListPreferences} from './schedule-student-list-preferences.model';\r\nimport {ClassesByCoursePreferences} from './classes-by-course-preferences.model';\r\nimport {ClassRosterPreferences} from './class-roster-preferences.model';\r\nimport {RoomSchedulingSettingsPreferences} from './room-scheduling-settings-preferences.model';\r\n\r\n@Injectable()\r\nexport class UserPreferencesService {\r\n // General preferences\r\n private _generalPreferences: GeneralPreferences;\r\n public get generalPreferences(): GeneralPreferences {\r\n return this._generalPreferences;\r\n }\r\n\r\n public set generalPreferences(value: GeneralPreferences) {\r\n this._generalPreferences = value;\r\n this.observablegeneralPreferences.next(value);\r\n }\r\n\r\n public observablegeneralPreferences = new Subject();\r\n observablegeneralPreferencesStream$ = this.observablegeneralPreferences.asObservable();\r\n\r\n // Attendance preferences\r\n private _attendancePreferences: AttendancePreferences;\r\n public get attendancePreferences(): AttendancePreferences {\r\n return this._attendancePreferences;\r\n }\r\n\r\n public set attendancePreferences(value: AttendancePreferences) {\r\n this._attendancePreferences = value;\r\n this.observableAttendancePreferences.next(value);\r\n }\r\n\r\n public observableAttendancePreferences = new Subject();\r\n observableAttendancePreferencesStream$ = this.observableAttendancePreferences.asObservable();\r\n\r\n // ClassroomSummary preferences\r\n private _classroomSummaryPreferences: ClassroomSummaryPreferences;\r\n public get classroomSummaryPreferences(): ClassroomSummaryPreferences {\r\n return this._classroomSummaryPreferences;\r\n }\r\n\r\n public set classroomSummaryPreferences(value: ClassroomSummaryPreferences) {\r\n this._classroomSummaryPreferences = value;\r\n this.observableClassroomSummaryPreferences.next(value);\r\n }\r\n\r\n public observableClassroomSummaryPreferences = new Subject();\r\n observableclassroomSummaryPreferencesStream$ = this.observableClassroomSummaryPreferences.asObservable();\r\n\r\n // CommunicationLog preferences\r\n private _communicationLogPreferences: CommunicationLogPreferences;\r\n public get communicationLogPreferences(): CommunicationLogPreferences {\r\n return this._communicationLogPreferences;\r\n }\r\n\r\n public set communicationLogPreferences(value: CommunicationLogPreferences) {\r\n this._communicationLogPreferences = value;\r\n this.observableCommunicationLogPreferences.next(value);\r\n }\r\n\r\n public observableCommunicationLogPreferences = new Subject();\r\n observableCommunicationLogPreferencesStream$ = this.observableCommunicationLogPreferences.asObservable();\r\n\r\n // DataQuery preferences\r\n private _dataQueryPreferences: DataQueryPreferences;\r\n public get dataQueryPreferences(): DataQueryPreferences {\r\n return this._dataQueryPreferences;\r\n }\r\n\r\n public set dataQueryPreferences(value: DataQueryPreferences) {\r\n this._dataQueryPreferences = value;\r\n this.observableDataQueryPreferences.next(value);\r\n }\r\n\tpublic dataQueryPreferenceChange = new EventEmitter();\r\n public observableDataQueryPreferences = new Subject();\r\n observableDataQueryPreferencesStream$ = this.observableDataQueryPreferences.asObservable();\r\n\r\n // MassEmail preferences\r\n private _massEmailPreferences: MassEmailPreferences;\r\n public get massEmailPreferences(): MassEmailPreferences {\r\n return this._massEmailPreferences;\r\n }\r\n\r\n public set massEmailPreferences(value: MassEmailPreferences) {\r\n this._massEmailPreferences = value;\r\n this.observableMassEmailPreferences.next(value);\r\n }\r\n\r\n public observableMassEmailPreferences = new Subject();\r\n observableMassEmailPreferencesStream$ = this.observableMassEmailPreferences.asObservable();\r\n\r\n // Gradebook preferences\r\n private _gradebookPreferences: GradebookPreferences;\r\n public get gradebookPreferences(): GradebookPreferences {\r\n return this._gradebookPreferences;\r\n }\r\n\r\n public set gradebookPreferences(value: GradebookPreferences) {\r\n this._gradebookPreferences = value;\r\n }\r\n\r\n public observableGradebookPreferences = new Subject();\r\n observableGradebookPreferencesStream$ = this.observableGradebookPreferences.asObservable();\r\n\r\n // Favorites preferences\r\n private _favoritesPreferences: FavoritePreferences;\r\n public get favoritesPreferences(): FavoritePreferences {\r\n return this._favoritesPreferences;\r\n }\r\n\r\n public set favoritesPreferences(value: FavoritePreferences) {\r\n this._favoritesPreferences = value;\r\n this.observableFavoritesPreferences.next(value);\r\n }\r\n\r\n public observableFavoritesPreferences = new Subject();\r\n observableFavoritesPreferencesStream$ = this.observableFavoritesPreferences.asObservable();\r\n\r\n // Behavior preferences\r\n private _behaviorPreferences: BehaviorPreferences;\r\n public get behaviorPreferences(): BehaviorPreferences {\r\n return this._behaviorPreferences;\r\n }\r\n\r\n public set behaviorPreferences(value: BehaviorPreferences) {\r\n this._behaviorPreferences = value;\r\n this.observableBehaviorPreferences.next(value);\r\n }\r\n\r\n public observableBehaviorPreferences = new Subject();\r\n observableBehaviorPreferencesStream$ = this.observableBehaviorPreferences.asObservable();\r\n\r\n // Portal Menu Preferences\r\n private studentId = -1;\r\n private _studentPortalMenuPreferences: PortalMenuPreferences;\r\n public get studentPortalMenuPreferences(): PortalMenuPreferences {\r\n return this._studentPortalMenuPreferences;\r\n }\r\n\r\n public set studentPortalMenuPreferences(value: PortalMenuPreferences) {\r\n this._studentPortalMenuPreferences = value;\r\n this.observableStudentPortalMenuPreferences.next(value);\r\n }\r\n\r\n public observableStudentPortalMenuPreferences = new Subject();\r\n observableStudentPortalMenuPreferencesStream$ = this.observableStudentPortalMenuPreferences.asObservable();\r\n\r\n private _staffPortalMenuPreferences: PortalMenuPreferences;\r\n public get staffPortalMenuPreferences(): PortalMenuPreferences {\r\n return this._staffPortalMenuPreferences;\r\n }\r\n\r\n public observableStaffPortalMenuPreferences = new Subject();\r\n observableStaffPortalMenuPreferencesStream$ = this.observableStaffPortalMenuPreferences.asObservable();\r\n\r\n // Master Schedule Preferences\r\n private _masterSchedulePreferences: MasterSchedulePreferences;\r\n public get masterSchedulePreferences(): MasterSchedulePreferences {\r\n return this._masterSchedulePreferences;\r\n }\r\n public set masterSchedulePreferences(value: MasterSchedulePreferences) {\r\n this._masterSchedulePreferences = value;\r\n this.observableMasterSchedulePreferences.next(value);\r\n }\r\n private observableMasterSchedulePreferences = new Subject();\r\n observableMasterSchedulePreferencesStream$ = this.observableMasterSchedulePreferences.asObservable();\r\n\r\n // Class Roster Preferences\r\n private _classRosterPreferences: ClassRosterPreferences;\r\n public get classRosterPreferences(): ClassRosterPreferences {\r\n return this._classRosterPreferences;\r\n }\r\n public set classRosterPreferences(value: ClassRosterPreferences) {\r\n this._classRosterPreferences = value;\r\n this.observableClassRosterPreferences.next(value);\r\n }\r\n private observableClassRosterPreferences = new Subject();\r\n observableClassRosterPreferencesStream$ = this.observableClassRosterPreferences.asObservable();\r\n\r\n // Period Statistics Preferences\r\n private _periodStatisticsPreferences: PeriodStatisticsPreferences;\r\n public get periodStatisticsPreferences(): PeriodStatisticsPreferences {\r\n return this._periodStatisticsPreferences;\r\n }\r\n public set periodStatisticsPreferences(value: PeriodStatisticsPreferences) {\r\n this._periodStatisticsPreferences = value;\r\n this.observablePeriodStatisticsPreferences.next(value);\r\n }\r\n private observablePeriodStatisticsPreferences = new Subject();\r\n observablePeriodStatisticsPreferencesStream$ = this.observablePeriodStatisticsPreferences.asObservable();\r\n\r\n // Schedule Student List Preferences\r\n private _scheduleStudentListPreferences: ScheduleStudentListPreferences;\r\n public get scheduleStudentListPreferences(): ScheduleStudentListPreferences {\r\n return this._scheduleStudentListPreferences;\r\n }\r\n public set scheduleStudentListPreferences(value: ScheduleStudentListPreferences) {\r\n this._scheduleStudentListPreferences = System.convert(value, new ScheduleStudentListPreferences());\r\n this.observableScheduleStudentListPreferences.next(value);\r\n }\r\n private observableScheduleStudentListPreferences = new Subject();\r\n observableScheduleStudentListPreferencesStream$ = this.observableScheduleStudentListPreferences.asObservable();\r\n\r\n // Classes By Course Preferences\r\n private _classesByCoursePreferences: ClassesByCoursePreferences;\r\n public get classesByCoursePreferences(): ClassesByCoursePreferences {\r\n return this._classesByCoursePreferences;\r\n }\r\n public set classesByCoursePreferences(value: ClassesByCoursePreferences) {\r\n this._classesByCoursePreferences = value;\r\n this.observableClassesByCoursePreferences.next(value);\r\n }\r\n private observableClassesByCoursePreferences = new Subject();\r\n observableClassesByCoursePreferencesStream$ = this.observableClassesByCoursePreferences.asObservable();\r\n\r\n // Room Scheduling Settings Preferences\r\n private _roomSchedulingSettingsPreferences: RoomSchedulingSettingsPreferences;\r\n public get roomSchedulingSettingsPreferences(): RoomSchedulingSettingsPreferences {\r\n return this._roomSchedulingSettingsPreferences;\r\n }\r\n public set roomSchedulingSettingsPreferences(value: RoomSchedulingSettingsPreferences) {\r\n this._roomSchedulingSettingsPreferences = System.convert(value, new RoomSchedulingSettingsPreferences());\r\n this.observableRoomSchedulingSettingsPreferences.next(value);\r\n }\r\n private observableRoomSchedulingSettingsPreferences = new ReplaySubject(1);\r\n observableRoomSchedulingSettingsPreferencesStream$ = this.observableRoomSchedulingSettingsPreferences.asObservable();\r\n\r\n defaultYear: Year;\r\n defaultYearSubscription: Subscription;\r\n courseId: any;\r\n siteSubjectListId: any;\r\n section: any;\r\n showAssignmentsonStandards: boolean;\r\n editFavorites = false;\r\n warnIfCalculationPreferencesChanged = false;\r\n gradebookV9SelectionPreferences: GradebookSelectionPreferences;\r\n gradebookV9AnalysisSettings: GradebookAnalysisSetting;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private userService: UserService\r\n ) {\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.defaultYearSubscription = yearService.observableDefaultYearStream$.subscribe(\r\n defaultYear => {\r\n this.defaultYear = defaultYear;\r\n }\r\n );\r\n }\r\n\r\n getUserPreferences(studentId: number, pageUrl: string, subjectListId: number = 0, subjectSection: string = '', isDefaultPreferences: boolean = false): Observable {\r\n let paramString = '';\r\n paramString += '?studentId=' + studentId;\r\n paramString += '&pageURL=' + pageUrl;\r\n paramString += '&subjectListId=' + subjectListId;\r\n paramString += '&subjectSection=' + subjectSection;\r\n paramString += '&isDefaultPreferences=' + isDefaultPreferences;\r\n return this.http.get(System.apiURL.Student + 'GetUserPreferences' + paramString);\r\n }\r\n\r\n saveUserPreferences(studentId: number, pageUrl: string, data: any, subjectListId: number, subjectSection: string, isDefaultPreferences: boolean = false): Observable {\r\n let paramString = '';\r\n paramString += '?studentId=' + studentId;\r\n paramString += '&pageURL=' + pageUrl;\r\n paramString += '&subjectListId=' + subjectListId;\r\n paramString += '&subjectSection=' + subjectSection;\r\n paramString += '&isDefaultPreferences=' + isDefaultPreferences;\r\n return this.http.post(System.apiURL.Student + 'SaveUserPreferences' + paramString, data).pipe(\r\n \tmap(results => {\r\n \t\tif (pageUrl.toLowerCase().includes('dataquery')) {\r\n\t\t\t\t\tthis.dataQueryPreferenceChange.emit();\r\n\t\t\t\t}\r\n \t\treturn results;\r\n\t\t\t})\r\n\t\t);\r\n }\r\n\r\n getGeneralPreferences(): Observable {\r\n if (this.generalPreferences) {\r\n return of(this.generalPreferences);\r\n } else {\r\n return this.getUserPreferences(0, '/OneSISGeneralPreferences', 0, '', false).pipe(\r\n map(results => {\r\n this.generalPreferences = JSON.parse(results[0]);\r\n return this.generalPreferences;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getGradebookPreferences(course: ClassroomSummary): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetUserPreferences?studentId=0&pageURL=/OneSISGradeBook&subjectListId=' + course.Id + '&subjectSection=\\'\\'&isDefaultPreferences=false');\r\n }\r\n\r\n updateGradebookPReferences() {\r\n this.observableGradebookPreferences.next();\r\n }\r\n\r\n getAttendancePreferences(): Observable {\r\n return this.getUserPreferences(0, '/OneSISAttendance');\r\n }\r\n\r\n getWarnIfCalculationPreferencesChanged(courseId: number, syncPreference: boolean): Observable {\r\n let paramString = '';\r\n paramString += '?tgsId=' + courseId;\r\n paramString += '&syncPreferences=' + syncPreference;\r\n return this.http.get(System.apiURL.Student + 'WarnIfCalculationPreferencesChanged' + paramString);\r\n }\r\n\r\n saveAttendancePreferences() {\r\n this.saveUserPreferences(0, '/OneSISAttendance', this.attendancePreferences, 0, '');\r\n }\r\n\r\n getMyClasses(termId: number, viewId: number, isTeacher: boolean, includeAllCourses: boolean, dateItem: Date): Observable {\r\n const currentDate = new Date();\r\n const dateString = (currentDate.getUTCMonth() + 1) + '/' + currentDate.getDate() + '/' + currentDate.getUTCFullYear();\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&termId=' + termId +\r\n '&viewId=' + viewId +\r\n '&isTeacher=' + isTeacher +\r\n '&dateItem=' + dateItem +\r\n '&includeAllCourses=' + includeAllCourses +\r\n '¤tDate=' + dateString;\r\n return this.http.get\r\n (System.apiURL.Classroom + 'GetMyClasses' + queryString);\r\n }\r\n\r\n\tpublic set staffPortalMenuPreferences(value: PortalMenuPreferences) {\r\n\t\tthis._staffPortalMenuPreferences = value;\r\n\t\tthis.observableStaffPortalMenuPreferences.next(value);\r\n\t}\r\n\r\n\tgetStaffMenuPreferences() {\r\n\t\tif (this.staffPortalMenuPreferences) {\r\n\t\t\treturn of(this.staffPortalMenuPreferences);\r\n\t\t} else {\r\n\t\t\treturn this.getUserPreferences(0, '/OneSISPortalMenuPreferences');\r\n\t\t}\r\n\t}\r\n\r\n\tgetStudentMenuPreferences(studentId: number) {\r\n\t\tif (this.studentPortalMenuPreferences && studentId == this.studentId) {\r\n\t\t\treturn of(this.studentPortalMenuPreferences);\r\n\t\t} else {\r\n\t\t\tthis.studentId = studentId;\r\n\t\t\treturn this.getUserPreferences(studentId, '/OneSISPortalMenuPreferences');\r\n\t\t}\r\n\t}\r\n\r\n getMasterSchedulePreferences() {\r\n if (this.masterSchedulePreferences) {\r\n return of(this.masterSchedulePreferences);\r\n } else {\r\n return this.getUserPreferences(0, '/OneSISMasterSchedule');\r\n }\r\n }\r\n\r\n getPeriodStatisticsPreferences() {\r\n if (this.periodStatisticsPreferences) {\r\n return of(this.periodStatisticsPreferences);\r\n } else {\r\n return this.getUserPreferences(0, '/OneSISPeriodStatistics').pipe(\r\n map(json => {\r\n return JSON.parse(json[0]) as PeriodStatisticsPreferences;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getScheduleStudentListPreferences() {\r\n if (this.scheduleStudentListPreferences) {\r\n return of(this.scheduleStudentListPreferences);\r\n } else {\r\n return this.getUserPreferences(0, '/OneSISScheduleStudentList').pipe(\r\n map(json => {\r\n let preferences = JSON.parse(json[0]) as ScheduleStudentListPreferences;\r\n preferences = System.convert(preferences, new ScheduleStudentListPreferences());\r\n return preferences;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getClassesByCoursePreferences() {\r\n if (this.classesByCoursePreferences) {\r\n return of(this.classesByCoursePreferences);\r\n } else {\r\n return this.getUserPreferences(0, '/OneSISClassesByCourse').pipe(\r\n map(json => {\r\n const preferences = JSON.parse(json[0]) as ClassesByCoursePreferences;\r\n this.classesByCoursePreferences = preferences;\r\n return preferences;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getClassRosterPreferences() {\r\n if (this.classRosterPreferences) {\r\n return of(this.classRosterPreferences);\r\n } else {\r\n return this.getUserPreferences(0, '/OneSISClassRoster').pipe(\r\n map(json => {\r\n const preferences = JSON.parse(json[0]) as ClassRosterPreferences;\r\n this.classRosterPreferences = preferences;\r\n return preferences;\r\n })\r\n );\r\n }\r\n }\r\n\r\n getRoomSchedulingSettingsPreferences() {\r\n if (this.roomSchedulingSettingsPreferences) {\r\n return of(this.roomSchedulingSettingsPreferences);\r\n } else {\r\n return this.getUserPreferences(0, '/OneSISRoomSchedulingSettings').pipe(\r\n map(json => {\r\n const preferences = JSON.parse(json[0]) as RoomSchedulingSettingsPreferences;\r\n this.roomSchedulingSettingsPreferences = preferences;\r\n return preferences;\r\n })\r\n );\r\n }\r\n }\r\n\r\n updateFavoritePortals(staffAssignedPortals: Portal[], isDefaultPreferences: boolean) {\r\n let paramString = '';\r\n paramString += '?isDefaultPreferences=' + isDefaultPreferences;\r\n return this.http.post(System.apiURL.Student + 'UpdateFavoritePortals' + paramString, staffAssignedPortals);\r\n }\r\n}\r\n","import { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Link, NewLink } from '../../classroom360/links/link.model';\r\nimport { Card } from '../../student360/student-summary/card-container/card/card';\r\nimport { SharedService } from '../shared.service';\r\nimport { TranslationService } from '../translation/translation.service';\r\nimport { Year } from '../year/year.model';\r\nimport { System } from './../System';\r\nimport { GoogleUser } from './google-user.model';\r\nimport { UserPermission } from './user-permission.model';\r\nimport { UserRole } from './user-role.model';\r\nimport { UserSchoolYearPolicies } from './user-school-year-policies.model';\r\nimport { UserSchoolYear } from './user-school-year.model';\r\nimport { User } from './user.model';\r\n\r\n@Injectable()\r\nexport class UserService {\r\n public userId = 0;\r\n public username = '';\r\n public password = '';\r\n public firstname = '';\r\n public lastname = '';\r\n private _cards: Card[];\r\n public userType = 0;\r\n public studentId = 0;\r\n public links = [];\r\n private _currentUser: User;\r\n public observableCurrentUser = new Subject();\r\n observableCurrentUserStream$ = this.observableCurrentUser.asObservable();\r\n public isLoggedIn = new Subject();\r\n forceUserToClassic: boolean;\r\n isLoggedInStream$ = this.isLoggedIn.asObservable();\r\n staffUserStudentLocked: boolean;\r\n studentInformationView: boolean;\r\n userRoles: UserRole[];\r\n googleUser: GoogleUser;\r\n\r\n public observableStudentInfoRoute = new Subject();\r\n observableStudentInfoRouteStream$ = this.observableStudentInfoRoute.asObservable();\r\n\r\n public selectedStudentInfoPortal: string;\r\n\r\n get languageId() {\r\n let languageId: number;\r\n switch (this.currentLanguage) {\r\n case 'fr':\r\n languageId = 2;\r\n break;\r\n case 'es':\r\n languageId = 3;\r\n break;\r\n default:\r\n languageId = 1;\r\n }\r\n return languageId;\r\n }\r\n\r\n public get currentUser(): User {\r\n return this._currentUser;\r\n }\r\n\r\n public set currentUser(value: User) {\r\n this._currentUser = value;\r\n this.observableCurrentUser.next(value);\r\n }\r\n\r\n public get currentLanguage(): string {\r\n return this.translateService.currentLanguage;\r\n }\r\n\r\n public set currentLanguage(value: string) {\r\n this.translateService.currentLanguage = value;\r\n }\r\n\r\n public get cards() {\r\n return this._cards;\r\n }\r\n\r\n public set cards(cards: Card[]) {\r\n this._cards = cards;\r\n }\r\n\r\n constructor(\r\n private sharedService: SharedService,\r\n private http: HttpClient,\r\n private translateService: TranslationService\r\n ) {\r\n this.isLoggedIn.next(false);\r\n }\r\n\r\n logoutUser() {\r\n this.isLoggedIn.next(false);\r\n this.userId = 0;\r\n this.username = '';\r\n this.password = '';\r\n this.firstname = '';\r\n this.lastname = '';\r\n this.userType = 0;\r\n this.studentId = 0;\r\n this.sharedService.updateIsPageLoaded(false);\r\n }\r\n\r\n getUserLanguage() {\r\n // POST: gets the current user language\r\n // NOTE: this will set the current language and translation by default\r\n const queryString = '?studentId=' + this.studentId;\r\n const query = this.http.get(System.apiURL.Student + 'GetUserLanguage' + queryString).subscribe(result => {\r\n this.currentLanguage = result;\r\n });\r\n }\r\n\r\n getUserSchoolYearPolicies(yearId: number, schoolId: number): Observable {\r\n let paramString = '';\r\n paramString += '?yearId=' + yearId;\r\n paramString += '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Student + 'GetUserSchoolYearPolicies' + paramString);\r\n }\r\n\r\n getAllUserSchoolYearPolicies(yearId: number): Observable {\r\n const paramString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetAllUserSchoolYearPolicies' + paramString);\r\n }\r\n\r\n getUserPermissions(yearId: number, schoolId: number): Observable {\r\n let paramString = '';\r\n paramString += '?yearId=' + yearId;\r\n paramString += '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Student + 'GetUserPermission' + paramString);\r\n }\r\n\r\n getUserRoles(yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetUserRoles?yearId=' + yearId);\r\n }\r\n\r\n /**\r\n * Changes the users email\r\n * @param newEmail the new email for the user\r\n * @return null if email is invalid. Otherwise, returns an observable for the API call.\r\n */\r\n setUserEmail(newEmail: string): Observable> {\r\n const mailFormat = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,4})+$/;\r\n if (!newEmail.match(mailFormat)) {\r\n return null;\r\n } else {\r\n return this.http.get(\r\n System.apiURL.Student +\r\n 'SaveUserEmail?' +\r\n 'userId=' + this.currentUser.Id +\r\n '&email=' + newEmail,\r\n { observe: 'response' }\r\n );\r\n }\r\n }\r\n\r\n emailAlreadyExists(email: string): Observable {\r\n const queryString = '?email=' + email;\r\n return this.http.get(System.apiURL.Student + 'EmailAlreadyExists' + queryString);\r\n }\r\n\r\n canUserChangeEmail(email: string): Observable {\r\n const queryString = '?email=' + email;\r\n return this.http.get(System.apiURL.Student + 'CanUserChangeEmail' + queryString);\r\n }\r\n\r\n setUserLanguage(language: string): Observable {\r\n // PRE: language must be 'en' for English, 'fr' for French, or 'es' for Spanish, or 'pt' for portuguese\r\n // POST: sets the user's language to that language\r\n this.currentLanguage = language;\r\n const queryString = '?studentId=' + this.studentId +\r\n '&language=' + language;\r\n return this.http.get(System.apiURL.Student + 'SaveUserLanguage' + queryString);\r\n }\r\n\r\n changeUserPassword(userType: number, isExpired: boolean, area: string, data: string[]): Observable {\r\n return this.http.post(System.apiURL.Student + `SaveUserPassword?userType=${userType}&isExpired=${isExpired}&area=${area}`, data, { observe: 'response' });\r\n }\r\n\r\n getDefaultYear(userId: number): Observable {\r\n let paramString = '';\r\n paramString += '?userId=' + userId;\r\n return this.http.get(System.apiURL.Student + 'GetDefaultYear' + paramString);\r\n\r\n }\r\n\r\n getLinks(userId: number, studentId: number, ayIdentifier: string): Observable {\r\n return this.http.get(System.apiURL.Student + `getMyLinks?userid=${userId}&studentID=${studentId}&ayidentifier=${ayIdentifier}`, { observe: 'response' });\r\n }\r\n\r\n getParentStudentLinks(studentId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetParentStudentLinks?studentId=${studentId}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n saveLink(link: NewLink): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveLink', link, { observe: 'response' });\r\n }\r\n\r\n deleteLink(link: Link): Observable {\r\n return this.http.post(System.apiURL.Student + `DeleteLink?linkId=${link.Link_ID}`, link, { observe: 'response' });\r\n }\r\n\r\n updateLinkSequence(links: NewLink[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'UpdateLinkSequence', links, { observe: 'response' });\r\n }\r\n\r\n userLinks() {\r\n return this.links;\r\n }\r\n\r\n getImpersonateByUser(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetImpersonateByUser');\r\n }\r\n\r\n setNotificationPreferencesMenu(): Observable {\r\n return this.http.get(System.apiURL.Student + 'SetNotificationPreferencesMenu');\r\n }\r\n\r\n markWelcomeAsSeen(studentId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `MarkWelcomeAsSeen?studentId=${studentId}`, { observe: 'response' });\r\n }\r\n\r\n updateStudentViewRoute(route: string) {\r\n this.observableStudentInfoRoute.next(route);\r\n }\r\n\r\n getUserPermissionByPrivilegeIds(yearId: number, siteId: number, privilegeIds: number[]): Observable {\r\n let paramString = '';\r\n paramString += '?yearId=' + yearId;\r\n paramString += '&siteId=' + siteId;\r\n return this.http.post(System.apiURL.Student + 'GetUserPermissionByPrivilegeIds' + paramString, privilegeIds);\r\n }\r\n\r\n getUserPermissionBySchoolIds(YearId: number, privilegeId: number, siteIds: number[]): Observable {\r\n let paramString = '';\r\n paramString += '?YearId=' + YearId;\r\n paramString += '&privilegeId=' + privilegeId;\r\n return this.http.post(System.apiURL.Student + 'GetUserPermissionBySchoolIds' + paramString, siteIds);\r\n }\r\n\r\n isGALDSRoleAssigned(siteId: number): Observable {\r\n // PRE: the site to query at\r\n // POST: returns true if the user has the GALDS permission for this site\r\n const paramString = '?schoolId=' + siteId;\r\n return this.http.get(System.apiURL.Student + 'IsGALDSRolAssigned' + paramString);\r\n }\r\n\r\n isAZEdsRoleAssigned(): Observable {\r\n // POST: returns true if the user has the AZEds permission\r\n return this.http.get(System.apiURL.Student + 'IsAZEdsRolAssigned');\r\n }\r\n\r\n processADEConnect(): Observable {\r\n // POST: attempts to connect to AZEds\r\n return this.http.get(System.apiURL.Student + 'ProcessADEConnect');\r\n }\r\n\r\n getUserIsTeacher(schoolId: number, yearId: number): Observable {\r\n let paramString = '';\r\n paramString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetUserIsTeacher' + paramString);\r\n }\r\n\r\n getUserIsNurse(schoolId: number, yearId: number): Observable {\r\n let paramString = '';\r\n paramString += '?schoolId=' + schoolId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetUserIsNurse' + paramString);\r\n }\r\n\r\n getSchoolYearByFacultyStaffId(yearId: number, facultyStaffId: number): Observable {\r\n let paramString = '';\r\n paramString += '?yearId=' + yearId +\r\n '&facultyStaffId=' + facultyStaffId;\r\n return this.http.get(System.apiURL.Student + 'GetSchoolYearByFacultyStaffId' + paramString);\r\n }\r\n\r\n}","import {AbstractControl, NG_VALIDATORS, Validator} from '@angular/forms';\r\nimport {Directive, Input} from '@angular/core';\r\nimport {System} from '../System';\r\n\r\n@Directive({\r\n\tselector: '[emailFormat]',\r\n\tproviders: [{provide: NG_VALIDATORS, useExisting: EmailFormatDirectiveValidator, multi: true}]\r\n})\r\nexport class EmailFormatDirectiveValidator implements Validator {\r\n\t@Input('emailFormat') allowValidation = true;\r\n\temailFormat = System.mailRegexp;\r\n\r\n\tvalidate(control: AbstractControl): {[key: string]: any} | null {\r\n\t\treturn (typeof this.allowValidation != 'boolean' || this.allowValidation) && control.value && !control.value.toString().toLowerCase().match(this.emailFormat) ? {'emailFormat': control.value} : null;\r\n\t}\r\n}","import {AbstractControl, NG_VALIDATORS, Validator} from '@angular/forms';\r\nimport {Directive, Input} from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[falseyRequired]',\r\n\tproviders: [{provide: NG_VALIDATORS, useExisting: FalseyRequiredDirectiveValidator, multi: true}]\r\n})\r\nexport class FalseyRequiredDirectiveValidator implements Validator {\r\n\t@Input() falseyRequired = true;\r\n\r\n\tvalidate(control: AbstractControl): {[key: string]: any} | null {\r\n\t\treturn this.falseyRequired && (!control.value || control.value == '0') ? {'falseyRequried': control.value} : null;\r\n\t}\r\n}","\r\n\r\n\r\n
0\">\r\n \r\n\r\n \r\n \r\n Start Date\r\n \r\n \r\n {{st.StartDate | date: 'MM/dd/yyyy'}}\r\n \r\n\r\n \r\n \r\n End Date\r\n \r\n \r\n {{st.EndDate | date: 'MM/dd/yyyy'}}\r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n {{st.Status}}\r\n \r\n\r\n \r\n \r\n \r\n \"paperclip\"\r\n \r\n \r\n Y\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Reason\r\n \r\n \r\n {{st.Reason}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { take } from 'rxjs/operators';\r\nimport { AttendanceAdministrationService } from '../../admin360/attendance-administration/attendance-administration.service';\r\nimport { AbsentNotice } from '../../admin360/attendance-administration/review-absent-notices/absent-notice.model';\r\nimport { TylerMatTableDataSource } from '../angular-material/extended.class';\r\nimport { ViewAttachmentsComponent } from '../view-attachments/view-attachments.component';\r\n\r\n@Component({\r\n selector: 'app-view-absent-notice-history-dialog',\r\n templateUrl: './view-absent-notice-history-dialog.component.html',\r\n styleUrls: ['./view-absent-notice-history-dialog.component.css']\r\n})\r\nexport class ViewAbsentNoticeHistoryDialogComponent implements OnInit {\r\n studentId: number;\r\n absentNotices: AbsentNotice[] = [];\r\n\r\n columnsToDisplay = ['StartDate', 'EndDate', 'Status', 'Attachment', 'Reason'];\r\n angularMatData = new TylerMatTableDataSource(this.absentNotices);\r\n\r\n _sort: MatSort;\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private attendanceAdminService: AttendanceAdministrationService) { }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n this.angularMatData.sort = value;\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.studentId = this.data.studentId;\r\n this.getSelfCheckInOutSubmissionHistory();\r\n }\r\n\r\n getSelfCheckInOutSubmissionHistory() {\r\n this.attendanceAdminService.getAbsentNoticesByStudentIdAndYearId(this.studentId).pipe(take(1)).subscribe(absentNotice => {\r\n this.absentNotices = absentNotice;\r\n this.angularMatData.data = this.absentNotices;\r\n });\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n viwAttachments(id: number) {\r\n this.attendanceAdminService.getAbsentNoticeAttachmentById(id).pipe(take(1)).subscribe(attachment => {\r\n this.dialog.open(ViewAttachmentsComponent, {\r\n data: {\r\n attachments: attachment\r\n },\r\n disableClose: true,\r\n minWidth: '750px'\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\n","
\r\n Attachments\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n {{AR.FileName}}\r\n \r\n \r\n \r\n \r\n Description\r\n \r\n {{AR.AttachmentDescription}}\r\n \r\n \r\n \r\n File Type\r\n \r\n {{AR.DocumentType}}\r\n \r\n \r\n \r\n Uploaded Date\r\n \r\n \r\n {{AR.AttachmentAddedOn|date:'MM/dd/yy h:mm a'}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n ","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TylerMatTableDataSource } from '../angular-material/extended.class';\r\nimport { Attachment } from '../models/attachment.model';\r\nimport { System } from '../System';\r\n\r\n@Component({\r\n selector: 'app-view-attachments',\r\n templateUrl: './view-attachments.component.html',\r\n styleUrls: ['./view-attachments.component.css']\r\n})\r\nexport class ViewAttachmentsComponent implements OnInit {\r\n attachmentMatTable = new TylerMatTableDataSource();\r\n attachmentColumnsToDisplay = ['FileName', 'Description', 'DocumentType', 'UploadedDate'];\r\n attachments: Attachment[] = [];\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any) { }\r\n\r\n ngOnInit(): void {\r\n this.attachments = this.data.attachments;\r\n this.attachmentMatTable.data = this.attachments;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n saveAttachment(attachment: Attachment) {\r\n // PRE: an attachment to open\r\n // POST: takes you to the student attachment page\r\n if (attachment.FileName && !attachment.AttachmentFileName) {\r\n attachment.AttachmentFileName = attachment.FileName;\r\n }\r\n\r\n if (attachment.MyFileBase64String && attachment.AttachmentFileName && attachment.FileType) {\r\n System.viewFileFromBase(attachment.MyFileBase64String, attachment.FileType, attachment.AttachmentFileName);\r\n } else if (attachment.Id && attachment.AttachmentFileName) {\r\n System.viewFileFromId(attachment.Id, attachment.AttachmentFileName);\r\n }\r\n }\r\n\r\n}\r\n","export class NestedData {\r\n\r\n\t// Properties\r\n\tdata: any;\r\n\tidentifier: string;\r\n\tparent: NestedData;\r\n\tchildren: NestedData[] = [];\r\n\tshowChildren = false;\r\n\tselected = false;\r\n\theader = false;\r\n\tID: number | string;\r\n\tstyle: any = {};\r\n\tallowTab = false;\r\n\tariaLabel: string;\r\n\tclick = (event: MouseEvent, nestedData: NestedData) => {};\r\n\tkeydown = (event: KeyboardEvent, nestedData: NestedData) => {};\r\n\r\n\t// Class Function\r\n\tconstructor(data: any, parent: NestedData, ID: number | string, identifier?: string, children?: NestedData[]) {\r\n\t\tthis.data = data;\r\n\t\tthis.identifier = identifier;\r\n\t\tthis.parent = parent;\r\n\t\tif (children) {\r\n\t\t\tthis.children = children;\r\n\t\t}\r\n\t}\r\n\r\n\tget level(): number {\r\n\t\tlet level = 0;\r\n\t\tlet datum: NestedData = this;\r\n\t\twhile (datum.parent) {\r\n\t\t\tlevel += 1;\r\n\t\t\tdatum = datum.parent;\r\n\t\t}\r\n\t\treturn level;\r\n\t}\r\n\r\n\tget shown(): boolean {\r\n\t\tlet datum: NestedData = this;\r\n\t\twhile (datum.parent) {\r\n\t\t\tif (datum.parent.showChildren == false) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tdatum = datum.parent;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tget hasChildren(): boolean {\r\n\t\treturn this.children && this.children.length > 0;\r\n\t}\r\n\r\n\tget showingChildren(): boolean {\r\n\t\treturn this.hasChildren && this.showChildren;\r\n\t}\r\n\r\n\tget lastChild(): boolean {\r\n\t\tif (this.parent) {\r\n\t\t\tconst index = this.parent.children.indexOf(this);\r\n\t\t\tif (index + 1 == this.parent.children.length) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Methods\r\n\tparentSelected(levelsAbove = 1) {\r\n\t\tlet datum: NestedData = this;\r\n\t\twhile (levelsAbove > 0 && datum) {\r\n\t\t\tdatum = datum.parent;\r\n\t\t\tlevelsAbove -= 1;\r\n\t\t}\r\n\t\treturn datum && datum.selected;\r\n\t}\r\n\r\n\tparentShowChildren(levelsAbove = 1) {\r\n\t\tlet datum: NestedData = this;\r\n\t\twhile (levelsAbove > 0 && datum) {\r\n\t\t\tdatum = datum.parent;\r\n\t\t\tlevelsAbove -= 1;\r\n\t\t}\r\n\t\treturn datum && datum.showChildren;\r\n\t}\r\n}\r\n","\r\n\r\n\r\n\t\r\n\t
\r\n\r\n\t\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t
\r\n\r\n\t\t\t\r\n\t\t\t
\r\n\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
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import {\r\n\tChangeDetectionStrategy,\r\n\tComponent,\r\n\tElementRef,\r\n\tEmbeddedViewRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnInit,\r\n\tOutput,\r\n\tTemplateRef,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {NestedData} from './nested-data';\r\nimport {CdkVirtualForOf, CdkVirtualForOfContext} from '@angular/cdk/scrolling';\r\nimport {CdkDragDrop, CdkDropList} from '@angular/cdk/drag-drop';\r\n\r\n/**\r\n * This provides a virtualized table for especially large data sets. It has a different styling from the other tables\r\n * and is meant to display large nested data structures. To use this, wrap your data using the NestedData model found\r\n * in this directory. Then, supply the following required properties. You may supply any of the optional properties.\r\n *\r\n * REQUIRED\r\n * @Input data: an array of nested data that will be displayed.\r\n * @Input columns: the columns that will be on the table. This is a dictionary of string keys to string arrays.\r\n * \t\t\tThe key is the identifier of the nested datum. The string array are the columns that display for that\r\n * \t\t\tidentifier.\r\n * @Input cellTemplate: a template that represents the contents of the cells. The template is supplied a context of\r\n * \t\t\tthe datum and the column of the cell as {datum: datum, column: column}.\r\n *\r\n * \tOPTIONAL\r\n * \t@Input height: this is the height styling for the viewport. It is a string and will be injected directly to the style.\r\n * \t@Input width: this is the width styling of the viewport. It is a string and will be injected directly to the style.\r\n * \t@Input paddingLeftPerLevel: this is the amount of padding there will be at a given level for each level of nesting.\r\n * @Input draggableIdentifiers: these are the datum that are draggable.\r\n * @Input draggableConnectedLists: this is a list of cdkDropLists that are capable of being dragged into\r\n *\r\n * \tOUTPUT\r\n * \t@Output dragStart: This event fires the nested data when the user starts dragging its cell\r\n * \t@Output dragEnd: This event fires the nested data when the user ends dragging its cell.\r\n * \t\t\tNOTE: this event is volatile and sometimes doesn't fire correctly. Avoid using it.\r\n */\r\n@Component({\r\n\tselector: 'virtualized-table',\r\n\ttemplateUrl: './virtualized-table.component.html',\r\n\tstyleUrls: [\r\n\t\t'./virtualized-table.component.css',\r\n\t\t'../../../assets/styles/angular-material.scss'\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class VirtualizedTableComponent implements OnInit, OnChanges {\r\n\r\n\t// Interface Properties\r\n\t@Input() data: NestedData[];\r\n\t@Input() columns: {[identifier: string]: string[]} = {};\r\n\t@Input() draggableIdentifiers: string[] = [];\r\n\t@Input() draggableConnectedLists: CdkDropList[];\r\n\t@Input() cellTemplate: TemplateRef;\r\n\t@Input() height = '300px';\r\n\t@Input() width = '100px';\r\n\t@Input() paddingLeftPerLevel = 20;\r\n\t@Output() fieldDrop = new EventEmitter>();\r\n\t@Output() dragStart = new EventEmitter();\r\n\t@Output() dragEnd = new EventEmitter();\r\n\r\n\t// Local Properties\r\n\tflatData: NestedData[] = [];\r\n\t@ViewChild('scrollComponent', { read: ElementRef, static: true }) scrollComponent: ElementRef;\r\n\t@ViewChild('virtualizedDropList', { read: CdkDropList, static: true }) virtualizedDropList: CdkDropList;\r\n\r\n\t// Class Functions\r\n\tconstructor() { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: applying patch to prevent errors\r\n\t\tCdkVirtualForOf.prototype['_updateContext'] = function (this: any) {\r\n\t\t\tconst count = this._data.length;\r\n\t\t\tlet i = this._viewContainerRef.length;\r\n\t\t\twhile (i--) {\r\n\t\t\t\tconst view = this._viewContainerRef.get(i) as EmbeddedViewRef>;\r\n\t\t\t\tif (!view.destroyed) {\r\n\t\t\t\t\tview.context.index = this._renderedRange.start + i;\r\n\t\t\t\t\tview.context.count = count;\r\n\t\t\t\t\tthis._updateComputedContextProperties(view.context);\r\n\t\t\t\t\tview.detectChanges();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t\t// POST: assembles the data whenever a property changes\r\n\t\tthis.assembleData();\r\n\t}\r\n\r\n\trowClick(row: NestedData) {\r\n\t\t// PRE: a row is clicked\r\n\t\t// POST: expands its children and sets it as selected\r\n\r\n\t\t// If this is a header row, don't do anything\r\n\t\tif (row.header) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Showing children\r\n\t\trow.showChildren = !row.showChildren;\r\n\r\n\t\t// Don't do any selection if we're already selected\r\n\t\tif (row.selected) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Unselecting peers and their children\r\n\t\tthis.flatData.forEach(data => {\r\n\t\t\tdata.selected = false;\r\n\t\t});\r\n\r\n\t\t// Selecting the row\r\n\t\trow.selected = true;\r\n\r\n\t\t// Selecting the parents\r\n\t\tlet datum = row;\r\n\t\twhile (datum.parent) {\r\n\t\t\tdatum.parent.selected = true;\r\n\t\t\tdatum = datum.parent;\r\n\t\t}\r\n\t}\r\n\r\n\trowKeydown(row: NestedData, event) {\r\n\t\t// PRE: a row is focused while a key is pressed\r\n\t\t// POST: behaves identically to a click if enter is pressed\r\n\t\tif (event.key == 'Enter') {\r\n\t\t\tthis.rowClick(row);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// Methods\r\n\tassembleData(data = this.data, initial = true, parent = null) {\r\n\t\t// POST: assembles the data for the virtual table recursively\r\n\r\n\t\t// On the first call, reset the data\r\n\t\tif (initial) {\r\n\t\t\tthis.flatData = [];\r\n\t\t}\r\n\r\n\t\t// Applying the column header\r\n\t\tif (data.length > 0) {\r\n\t\t\tconst ID = 'header' + (parent ? parent.ID : '');\r\n\t\t\tconst headerData = new NestedData(null, parent, ID, data[0].identifier);\r\n\t\t\theaderData.header = true;\r\n\t\t\tthis.flatData.push(headerData);\r\n\t\t}\r\n\r\n\t\t// For each data, push it to the flat data and push its children\r\n\t\tdata.forEach(datum => {\r\n\t\t\tthis.flatData.push(datum);\r\n\t\t\tif (datum.children) {\r\n\t\t\t\tthis.assembleData(datum.children, false, datum);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfilterShown() {\r\n\t\t// POST: returns the panelFiltered data that should be shown\r\n\t\treturn this.flatData.filter(datum => datum.shown);\r\n\t}\r\n\r\n\ttrackByID(index: number, item: NestedData) {\r\n\t\t// POST: tracks the items by their identifiers\r\n\t\treturn item.ID;\r\n\t}\r\n\r\n\tcreateRange(indexes: number) {\r\n\t\t// POST: creates an array of numbers from 0 to indexes\r\n\t\tconst arr = [];\r\n\t\tfor (let i = 0; i < indexes; i++) {\r\n\t\t\tarr.push(i);\r\n\t\t}\r\n\t\treturn arr;\r\n\t}\r\n}\r\n","export class School {\r\n Id: number;\r\n SchoolCode: string;\r\n SchoolName: string;\r\n SchoolDescription: string;\r\n SchoolType: string;\r\n StudentIds?: number[] = [];\r\n FamilyCount?: number;\r\n GradelevelDescription?: string[] = [];\r\n // FamilyInfo?: FamilyInfo[] = [];\r\n}\r\n\r\nexport class SchoolStudentFamiliesInfo {\r\n Parent_ID: number;\r\n Row_Count: number;\r\n ParentName: string;\r\n Student: string;\r\n StudentNumber: string;\r\n Grade: string;\r\n EnrolleDate?: Date;\r\n BirthDate?: Date;\r\n SchoolName: string;\r\n FamilyCount?: number;\r\n Student_ID: number;\r\n ParentMem_ID: number;\r\n Row_Number: number;\r\n}\r\n","\r\nexport class Year {\r\n Id: number;\r\n SiteYearId: number;\r\n Default: boolean;\r\n Status: number;\r\n YearType: number;\r\n Term: string;\r\n Description: string;\r\n Sequence: string;\r\n StartDate: Date;\r\n EndDate: Date;\r\n OpenForRegistration: boolean;\r\n UsedOnPortal: boolean;\r\n PortalDefault: boolean;\r\n EnableOnlinePayment: boolean;\r\n OnlineRegistration: boolean;\r\n ObjectiveByYear: boolean;\r\n CourseRequestYear: boolean;\r\n AYIdentifier: string;\r\n Disabled: boolean;\r\n SchoolID: number;\r\n SchoolCode: string;\r\n SchoolName: string;\r\n SchoolType: string;\r\n V10Flag: boolean;\r\n Visible: boolean;\r\n CurrentAttendanceDate: Date;\r\n DisplayStudentAlertsOnAttendance: boolean;\r\n IsOverride: boolean;\r\n EformYearEnabled: boolean;\r\n SelfRegistrationEnabled: boolean;\r\n QuickRegistrationEnabled: boolean;\r\n ReEnrollStudentEnabled: boolean;\r\n AddNewStudentEnabled: boolean;\r\n\r\n // client-side properties\r\n selected: boolean;\r\n\r\n constructor() { }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { UnsavedChangesGuard } from '../guards/unsaved-changes/unsaved-changes.guard';\r\nimport { UserSchoolYear } from '../user/user-school-year.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { CheckForErrorsGuard } from './../guards/check-for-errors/check-for-errors.guard';\r\nimport { System } from './../System';\r\nimport { SchoolYearSettings } from './school-year-settings.model';\r\nimport { School } from './school.model';\r\nimport { Year } from './year.model';\r\n\r\n@Injectable()\r\nexport class YearService {\r\n\r\n // This is the default course request year\r\n defaultCourseRequestYear: Year;\r\n\r\n // This is the default Versatrans year\r\n defaultTransportationYear: Year;\r\n\r\n // This is the default year\r\n loginYear: Year;\r\n\r\n // This is the previously selected year, which will always hold the default years last value\r\n private _previousYear: Year;\r\n get previousYear(): Year {\r\n return this._previousYear;\r\n }\r\n\r\n // This is the selected year, which is initialized to the default year\r\n private _defaultYear: Year;\r\n get defaultYear(): Year {\r\n return this._defaultYear;\r\n }\r\n set defaultYear(value: Year) {\r\n this._previousYear = this._defaultYear;\r\n this._defaultYear = value;\r\n this.observableDefaultYear.next(this._defaultYear);\r\n }\r\n\r\n private _student360Year: Year;\r\n get student360Year(): Year {\r\n return this._student360Year;\r\n }\r\n set student360Year(value: Year) {\r\n this._student360Year = value;\r\n this.observableStudent360Year.next(this._student360Year);\r\n }\r\n\r\n public observableDefaultYear = new Subject();\r\n observableDefaultYearStream$ = this.observableDefaultYear.asObservable();\r\n\r\n public observableStudent360Year = new Subject();\r\n observableStudent360YearStream$ = this.observableStudent360Year.asObservable();\r\n\r\n public allYears: Year[];\r\n private _years: Year[];\r\n public get years(): Year[] {\r\n return this._years;\r\n }\r\n public set years(value: Year[]) {\r\n this._years = value;\r\n this.observableYears.next(value);\r\n }\r\n\r\n private _yearsForC360: Year[];\r\n public get yearsForC360(): Year[] {\r\n return this._yearsForC360;\r\n }\r\n public set yearsForC360(value: Year[]) {\r\n this._yearsForC360 = value;\r\n this.observableYears.next(value);\r\n }\r\n\r\n private _schools: School[] = [];\r\n private _schoolsForC360: School[] = [];\r\n public get schools(): School[] {\r\n return this._schools;\r\n }\r\n public set schools(value: School[]) {\r\n if (\r\n value\r\n && value != this._schools\r\n && (\r\n !this._schools\r\n || value.length != this._schools.length\r\n )\r\n ) {\r\n\r\n this._schools = value;\r\n this.observableSchools.next(value);\r\n }\r\n }\r\n public get schoolsForC360(): School[] {\r\n return this._schoolsForC360;\r\n }\r\n public set schoolsForC360(value: School[]) {\r\n this._schoolsForC360 = value;\r\n this.observableSchools.next(value);\r\n }\r\n\r\n private observableYears = new Subject();\r\n observableYearStream$ = this.observableYears.asObservable();\r\n private observableSchools = new Subject();\r\n observableSchoolsStream$ = this.observableSchools.asObservable();\r\n\r\n // This is used to Disabled School & Year dropdown based on Selected Tab\r\n observableSetSchoolDisabled = new Subject();\r\n observableSetSchoolDisabledStream$ = this.observableSetSchoolDisabled.asObservable();\r\n observableSetYearDisabled = new Subject();\r\n observableSetYearDisabledStream$ = this.observableSetYearDisabled.asObservable();\r\n\r\n private userSchools: School[];\r\n public allDistrictYears: Year[] = [];\r\n public allDistrictSchools: School[] = [];\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private unsavedChangesGuard: UnsavedChangesGuard,\r\n private checkForErrorsGuard: CheckForErrorsGuard,\r\n private loginService: LoginService,\r\n private userService: UserService\r\n ) {\r\n }\r\n\r\n updateSelectedYear(newDefaultYear: Year) {\r\n const canContinue = this.unsavedChangesGuard.checkForDeactivation() && this.checkForErrorsGuard.checkForDeactivation();\r\n if (canContinue instanceof Observable) {\r\n canContinue.subscribe(clickedOk => {\r\n if (clickedOk) {\r\n this.defaultYear = newDefaultYear;\r\n if (this.loginService.LoginSettings.V10 || this.userService.userType != 1) {\r\n this.years = this.allYears.filter(function (element) { return element.SchoolID == newDefaultYear.SchoolID; });\r\n }\r\n else {\r\n this.schools = this.getSchoolsForSelectedYear(this.allYears, this.defaultYear);\r\n }\r\n }\r\n });\r\n } else if (canContinue) {\r\n this.defaultYear = newDefaultYear;\r\n if (this.allYears.filter(x => x.SchoolID == 0).length > 0) {\r\n if (this.loginService.LoginSettings.V10 || this.userService.userType != 1) {\r\n this.years = this.yearsForC360.filter(function (element) { return element.SchoolID == newDefaultYear.SchoolID; });\r\n }\r\n else {\r\n this.schools = this.getSchoolsForSelectedYear(this.yearsForC360, this.defaultYear);\r\n }\r\n }\r\n else {\r\n if (this.loginService.LoginSettings.V10 || this.userService.userType != 1) {\r\n this.years = this.allYears.filter(function (element) { return element.SchoolID == newDefaultYear.SchoolID; });\r\n }\r\n else {\r\n this.schools = this.getSchoolsForSelectedYear(this.allYears, this.defaultYear);\r\n }\r\n }\r\n this.updateStudent360Year(this.defaultYear);\r\n }\r\n }\r\n\r\n updateStudent360Year(student360Year: Year) {\r\n const canContinue = this.unsavedChangesGuard.checkForDeactivation() && this.checkForErrorsGuard.checkForDeactivation();\r\n if (canContinue instanceof Observable) {\r\n canContinue.subscribe(clickedOk => {\r\n if (clickedOk) {\r\n this.defaultYear = student360Year;\r\n if (this.loginService.LoginSettings.V10 || this.userService.userType != 1) {\r\n this.years = this.allYears.filter(function (element) { return element.SchoolID == student360Year.SchoolID; });\r\n }\r\n else {\r\n this.schools = this.getSchoolsForSelectedYear(this.allYears, this.defaultYear);\r\n }\r\n }\r\n });\r\n } else if (canContinue) {\r\n this.student360Year = student360Year;\r\n if (!this.loginService.LoginSettings.V10) {\r\n if (this.allYears.filter(x => x.SchoolID == 0).length > 0) {\r\n if (this.loginService.LoginSettings.V10 || this.userService.userType != 1) {\r\n this.years = this.yearsForC360.filter(function (element) { return element.SchoolID == student360Year.SchoolID; });\r\n if (this.years.length == 0) {\r\n this.years = this.allYears.filter(function (element) { return element.SchoolID == student360Year.SchoolID; });\r\n }\r\n }\r\n else {\r\n this.schools = this.getSchoolsForSelectedYear(this.allYears, this.defaultYear);\r\n }\r\n }\r\n else {\r\n if (this.loginService.LoginSettings.V10 || this.userService.userType != 1) {\r\n this.years = this.allYears.filter(function (element) { return element.SchoolID == student360Year.SchoolID; });\r\n }\r\n else {\r\n this.schools = this.getSchoolsForSelectedYear(this.allYears, this.defaultYear);\r\n }\r\n }\r\n }\r\n\r\n if (this.student360Year.CourseRequestYear == true) {\r\n this.defaultCourseRequestYear = this.student360Year;\r\n }\r\n else {\r\n let courseRequestYears = this.years.filter(o => o.CourseRequestYear == true);\r\n if (courseRequestYears.length == 0) {\r\n this.getDefaultCourseRequestYear().pipe(take(1)).subscribe();\r\n } else if (courseRequestYears.length == 1) {\r\n this.defaultCourseRequestYear = courseRequestYears[0];\r\n }\r\n else if (courseRequestYears.length > 1) {\r\n courseRequestYears = _.sortBy(courseRequestYears, ['EndDate'], ['DESC']);\r\n this.defaultCourseRequestYear = courseRequestYears[0];\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateSelectedSchool(schoolId: number) {\r\n const currentAY = this.defaultYear.AYIdentifier;\r\n let schoolYears = this.allYears.filter(function (element) { return element.SchoolID == schoolId; });\r\n if (schoolYears.length == 0) {\r\n schoolYears = this.yearsForC360.filter(function (element) { return element.SchoolID == schoolId; });\r\n }\r\n const newYear = schoolYears.filter(function (element) { return element.AYIdentifier == currentAY; })[0];\r\n if (newYear != undefined) {\r\n this.updateSelectedYear(newYear);\r\n }\r\n else {\r\n this.updateSelectedYear(schoolYears[0]);\r\n }\r\n }\r\n\r\n public isCurrentYear(year = this.defaultYear): boolean {\r\n return moment().isBetween(this.defaultYear.StartDate, this.defaultYear.EndDate, 'day', '[]');\r\n }\r\n\r\n getCurrentYear(): Year {\r\n for (let i = 0; i < this.years.length; i++) {\r\n if (this.isCurrentYear(this.years[i])) {\r\n return this.years[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getUserYears(userId: number, usertype: number = 0, studentId: number = 0): Observable {\r\n const queryString: string = '?userId=' + userId +\r\n '&usertype=' + usertype +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetUserYears' + queryString);\r\n }\r\n\r\n loadYears(years: Year[]) {\r\n this.allYears = years;\r\n const defaultCourseRequestYear = years.filter(y => y.CourseRequestYear)[0];\r\n if (!this.defaultCourseRequestYear) {\r\n if (defaultCourseRequestYear) {\r\n this.defaultCourseRequestYear = defaultCourseRequestYear;\r\n } else {\r\n this.getDefaultCourseRequestYear().pipe(take(1)).subscribe();\r\n }\r\n }\r\n this.setCurrentAttendanceDate(this.allYears);\r\n if (this.loginService.LoginSettings.V10) {\r\n this.schools = this.getSchoolsFromYears(years);\r\n }\r\n else {\r\n this.schools = this.getSchoolsForSelectedYear(years, this.defaultYear);\r\n }\r\n }\r\n\r\n loadYearsForC360(years: Year[]) {\r\n this.yearsForC360 = years;\r\n if (this.loginService.LoginSettings.V10) {\r\n this.schoolsForC360 = this.getSchoolsFromYears(this.yearsForC360);\r\n }\r\n else {\r\n this.schoolsForC360 = this.getSchoolsForSelectedYear(years, this.defaultYear);\r\n }\r\n }\r\n\r\n setCurrentAttendanceDate(years: Year[]) {\r\n // this should be set client-side rather than server-side to avoid time-zone mismatches which cause invalid dates\r\n years.forEach(year => {\r\n if (!year.CurrentAttendanceDate) {\r\n year.CurrentAttendanceDate = new Date();\r\n }\r\n });\r\n }\r\n\r\n getSchoolsFromYears(years: Year[]): School[] {\r\n const schools: School[] = [];\r\n for (let i = 0; i < years.length; i++) {\r\n if (schools.filter(function (element) { return element.Id == years[i].SchoolID; })[0] == undefined) {\r\n schools.push({ Id: years[i].SchoolID, SchoolName: years[i].SchoolName, SchoolCode: years[i].SchoolCode, SchoolDescription: '', SchoolType: years[i].SchoolType });\r\n }\r\n }\r\n return schools;\r\n }\r\n\r\n getSchoolsForSelectedYear(years: Year[], selectedYear: Year): School[] {\r\n const schools: School[] = [];\r\n const filteredYears = years.filter(o => o.Id == selectedYear.Id);\r\n filteredYears.forEach(obj => {\r\n if (schools.filter(o => o.Id == obj.SchoolID).length == 0) {\r\n schools.push({ Id: obj.SchoolID, SchoolName: obj.SchoolName, SchoolCode: obj.SchoolCode, SchoolDescription: '', SchoolType: obj.SchoolType });\r\n }\r\n });\r\n return schools;\r\n }\r\n\r\n getUserSchools(yearId: number, forceCheck = false): Observable {\r\n // PRE:\tyearId is the default user school year ID\r\n // \tforceCheck is true if you want to force the check to the server\r\n // POST: obtains the user schools\r\n\r\n // Checking the cache\r\n if (!forceCheck && this.userSchools) {\r\n return of(this.userSchools);\r\n }\r\n\r\n // Obtaining it from the server\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetUserSchools' + queryString).pipe(\r\n map(schools => {\r\n this.schools = schools;\r\n return this.schools;\r\n })\r\n );\r\n }\r\n\r\n getSchoolYearSettings(yearId: number, schoolId: number): Observable {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Student + 'GetSchoolYearSettings' + queryString);\r\n }\r\n\r\n getDefaultYear(userId: number): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + userId;\r\n return this.http.get(System.apiURL.Student + 'GetDefaultYear' + queryString);\r\n }\r\n\r\n getStudentSearchSchoolByYearId(yearId: number): Observable {\r\n // PRE: a year ID, probably the current one\r\n // POST: obtains the student search school using a supplied year ID\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentSearchSchoolByYearId' + queryString);\r\n }\r\n\r\n getAllSchoolYearsInDistrict(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetAllSchoolYearsInDistrict');\r\n }\r\n\r\n getDistrictYearsOnly(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetDistrictYearsOnly');\r\n }\r\n getDistrictYearbyIdentifier(): Observable {\r\n const queryString = '?ayIdentifier=' + this.defaultYear.AYIdentifier;\r\n return this.http.get(System.apiURL.Student + 'GetDistrictYearbyIdentifier' + queryString);\r\n }\r\n getAllSchools(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetAllSchools');\r\n }\r\n\r\n getAllEnrolledYears(studentId: number, schoolId: number): Observable {\r\n const queryString = '?studentId=' + studentId + '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Student + 'GetAllEnrolledYears' + queryString);\r\n }\r\n\r\n getSchoolsBySchoolIds(schoolIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetSchoolsBySchoolIds', schoolIds);\r\n }\r\n\r\n getSchoolsStudentIds(schoolIds: number[], yearId: number): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.post(System.apiURL.Student + 'GetSchoolsStudentIds' + queryString, schoolIds);\r\n }\r\n\r\n getDefaultCourseRequestYear(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetDefaultCourseRequestYear').pipe(\r\n map(result => {\r\n this.defaultCourseRequestYear = result;\r\n return result;\r\n })\r\n );\r\n }\r\n\r\n isDateWithinCurrentYear(testDate: Date | string | moment.Moment): boolean {\r\n return moment(testDate) >= moment(this.defaultYear.StartDate) && moment(testDate) <= moment(this.defaultYear.EndDate);\r\n }\r\n\r\n isDateWithinGivenYear(testDate: Date | string | moment.Moment, year: Year): boolean {\r\n return moment(testDate) >= moment(year.StartDate) && moment(testDate) <= moment(year.EndDate);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\n\r\n@Pipe({\r\n name: 'announcementFilter'\r\n})\r\nexport class AnnouncementFilterPipe implements PipeTransform {\r\n transform(announcementDataSource: TylerMatTableDataSource, school: string): TylerMatTableDataSource {\r\n return new TylerMatTableDataSource(\r\n announcementDataSource.data.filter(x => x.SchoolName == school)\r\n );\r\n }\r\n}\r\n","

\r\n District Message\r\n

\r\n\r\n
\r\n
\r\n {{districtMessage.Title}}\r\n \r\n Revised {{districtMessage.RevisedDate|date:'MM/dd/yy'}}\r\n \r\n
\r\n

\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import { System } from './../../../shared-components/System';\r\nimport {Component, OnInit, Inject} from '@angular/core';\r\nimport { Announcement } from '../announcement.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n// Class\r\n@Component ({\r\n selector: 'announcementMessage',\r\n templateUrl: './announcement-message.component.html'\r\n})\r\nexport class AnnouncementMessageComponent implements OnInit {\r\n\r\n // Properties\r\n districtMessages: Announcement[];\r\n dialogBox: MatDialogRef; // The dialog this is stored in\r\n stripHTML: (str: string) => string;\r\n junkDate = new Date('0001-01-01T00:00:00');\r\n\r\n // Class Functions\r\n constructor (\r\n private userService: UserService,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {}\r\n\r\n // Event Functions\r\n ngOnInit () {\r\n // POST: captures district announcements to display\r\n this.stripHTML = System.stripHTML;\r\n this.districtMessages = this.data.districtMessages;\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n More \r\n \r\n \r\n \r\n \r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n \r\n\t\t\t\tNew\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tCourse\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{announcement.Course}}\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tTeacher\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{announcement.Teacher}}\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n \r\n \r\n \r\n Announcements\r\n \r\n \r\n\t\t\t\r\n \t{{announcement.StartDate | date:'MM/dd/yy'}} - {{announcement.Title}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tNEW \r\n\t\t\t\t{{announcement.StartDate | date:'MM/dd/yy'}} - {{announcement.Title}}\r\n\t\t\t\r\n \r\n \r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t\"Paperclip\"\r\n\t\t\t\tsrc=\"./assets/images/paperclip.png\"\r\n\t\t\t\tstyle=\"height:20px;\"\r\n\t\t\r\n\t\t\r\n\t\t\t{{announcement.AnnouncementAttachments && announcement.AnnouncementAttachments.length > 0 ? 'Y' : ''}}\r\n\t\t\r\n\t\r\n \r\n \r\n \r\n \r\n\r\n\t\t\t\r\n \r\n\r\n\t\t\t\r\n\t\t\t
0\"\r\n\t\t\t\tstyle=\"display: flex; flex-direction: column; width: 100%;\">\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{attachment.AttachmentFileName}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{attachment.AttachmentDescription}}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n","import { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from './../../../shared-components/angular-material/extended.class';\r\nimport { Component, Input, OnInit, ViewChild, OnChanges } from '@angular/core';\r\nimport { System } from '../../../shared-components/System';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'announcement-table',\r\n templateUrl: './announcement-table.component.html',\r\n styleUrls: [\r\n './announcement-table.component.css'\r\n ],\r\n animations: [\r\n detailExpand\r\n ]\r\n})\r\nexport class AnnouncementTableComponent implements OnInit, OnChanges {\r\n\r\n // Properties\r\n _tableData = new TylerMatTableDataSource();\r\n @Input() classAnnouncements = false;\r\n columnsToDisplay = ['more', 'announcement'];\r\n stripHTML: (str: string) => string;\r\n V10: boolean;\r\n LoginSettings: LoginSettings;\r\n\r\n // Class Functions\r\n constructor(\r\n private loginService: LoginService,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n @Input() set tableData(value: TylerMatTableDataSource) {\r\n this._tableData = value;\r\n }\r\n\r\n get tableData(): TylerMatTableDataSource {\r\n return this._tableData;\r\n }\r\n\r\n @ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n this.tableData.sort = value;\r\n }\r\n\r\n get sort(): MatSort {\r\n return this.tableData.sort;\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n this.stripHTML = System.stripHTML;\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.V10 = this.LoginSettings.V10;\r\n // Setting columns\r\n if (this.classAnnouncements) {\r\n this.columnsToDisplay.splice(1, 0, 'new', 'course', 'teacher');\r\n if (!this.loginService.LoginSettings.V10) {\r\n this.columnsToDisplay.push('attachments');\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n // POST: sets the table data to the right sort\r\n this.tableData.sort = this.sort;\r\n }\r\n\r\n showAttachment(attachment: Attachment) {\r\n // PRE: an attachment link is clicked\r\n // POST: opens the attachment in a new tab\r\n System.viewFileFromId(attachment.AttachmentId, attachment.AttachmentFileName);\r\n }\r\n\r\n transform(content) {\r\n return this.sanitizer.bypassSecurityTrustHtml(content);\r\n }\r\n // Methods\r\n}\r\n","\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n School Announcements\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n {{school}}\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n

{{sectionNames[i]}}

\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n No announcements for selected date\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n 0\" image=\"announcement icon.png\" label=\"District Message\" (clickEvent)=\"showDistrictMessages()\">\r\n
\r\n
\r\n","import { System } from './../../shared-components/System';\r\nimport { Component, EventEmitter, OnInit } from '@angular/core';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { AnnouncementService } from './announcement.service';\r\nimport { Announcement } from './announcement.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport {forkJoin, Observable, Subscription} from 'rxjs';\r\nimport { AnnouncementMessageComponent } from './announcement-message/announcement-message.component';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { LoginService } from '../login/login.service';\r\nimport { Router } from '@angular/router';\r\nimport {Enrollment} from '../../shared-components/student/enrollment.model';\r\n\r\n// Class\r\n@Component({\r\n selector: 'announcement',\r\n templateUrl: './announcement.component.html',\r\n styleUrls: [\r\n './announcement.component.css'\r\n ]\r\n})\r\nexport class AnnouncementComponent implements OnInit {\r\n\r\n // Properties\r\n currentUser: User;\r\n defaultYear: Year;\r\n inputDate: Date;\r\n inputString: string;\r\n announcements: Announcement[] = [];\r\n districtMessages: Announcement[] = [];\r\n schoolNames: string[] = [];\r\n schoolExpanded: {[name: string]: boolean} = {};\r\n gotAnnouncements = false;\r\n noAnnouncements = false;\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n isBusy: boolean;\r\n subscriptions: Subscription[] = [];\r\n v10: boolean;\r\n tableData: TylerMatTableDataSource[] = [];\r\n showTableFlags = [false, false, false];\r\n sectionNames = ['District Announcements', 'School Announcements', 'Class Announcements'];\r\n student360 = false;\r\n studentEnrollments: Enrollment[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private announcementService: AnnouncementService,\r\n private studentService: StudentService,\r\n private sharedService: SharedService,\r\n private dialog: MatDialog,\r\n private router: Router\r\n ) {\r\n\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the services and sets input date to the current date. Sets input string accordingly\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.currentUser = this.userService.currentUser;\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.inputDate = new Date();\r\n this.inputString = this.inputDate.toLocaleDateString();\r\n this.student360 = this.router.url.toLowerCase().indexOf('/student360') >= 0;\r\n this.getAnnouncements();\r\n if (this.v10) {\r\n this.subscriptions.push(\r\n this.yearService.observableDefaultYearStream$.subscribe(() => {\r\n this.getAnnouncements();\r\n }),\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n this.noAnnouncements = false;\r\n this.getAnnouncements();\r\n }),\r\n this.sharedService.observableIsPageLoadedStream$.subscribe(loaded => {\r\n this.isBusy = !loaded;\r\n })\r\n );\r\n }\r\n else {\r\n if (this.sharedService.currentPortal == undefined) {\r\n this.subscriptions.push(\r\n this.yearService.observableDefaultYearStream$.subscribe(() => {\r\n this.getAnnouncements();\r\n }),\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n this.noAnnouncements = false;\r\n this.getAnnouncements();\r\n }),\r\n this.sharedService.observableIsPageLoadedStream$.subscribe(loaded => {\r\n this.isBusy = !loaded;\r\n })\r\n );\r\n }\r\n }\r\n this.subscriptions.push(\r\n this.toggleAllRows.subscribe(toggle => {\r\n this.tableData[0].expandAll(toggle);\r\n this.tableData[1].expandAll(toggle);\r\n this.tableData[2].expandAll(toggle);\r\n this.schoolNames.forEach(schoolName => {\r\n this.schoolExpanded[schoolName] = toggle;\r\n });\r\n })\r\n );\r\n }\r\n\r\n // Methods\r\n getAnnouncements() {\r\n // POST: gets the announcements for the date input\r\n this.gotAnnouncements = false;\r\n if (this.inputDate != null && this.inputDate.toString() != 'Invalid Date') {\r\n if (this.currentUser.UserType == 1 &&\r\n (!this.sharedService.currentPortal || !this.sharedService.currentPortal.applyFilterStudents)) {\r\n if (this.student360) {\r\n this.subscriptions.push(\r\n this.announcementService.getStudentAnnouncements(this.inputDate).subscribe(data => {\r\n this.announcements = [];\r\n data.forEach(datum => {\r\n this.announcements.push(System.convert(datum, new Announcement()));\r\n });\r\n this.virtualize();\r\n })\r\n );\r\n }\r\n else {\r\n this.subscriptions.push(\r\n this.announcementService.getStaffAnnouncements(this.inputDate).subscribe(data => {\r\n this.announcements = [];\r\n data.forEach(datum => {\r\n this.announcements.push(System.convert(datum, new Announcement()));\r\n });\r\n this.virtualize();\r\n })\r\n );\r\n }\r\n } else {\r\n let observable: Observable = this.announcementService.getStudentAnnouncements(this.inputDate);\r\n if (this.student360) {\r\n observable = forkJoin(\r\n observable,\r\n this.studentService.getStudentEnrollments(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.defaultYear.Id\r\n )\r\n );\r\n }\r\n this.subscriptions.push(\r\n observable.subscribe(data => {\r\n this.announcements = [];\r\n const announcementData = this.student360 ? data[0] : data;\r\n announcementData.forEach(datum => {\r\n this.announcements.push(System.convert(datum, new Announcement()));\r\n });\r\n if (this.student360) {\r\n this.studentEnrollments = data[1];\r\n }\r\n this.virtualize();\r\n })\r\n );\r\n }\r\n this.gotAnnouncements = true;\r\n }\r\n if (!this.gotAnnouncements) {\r\n this.announcements = [];\r\n this.virtualize();\r\n }\r\n }\r\n\r\n virtualize() {\r\n this.noAnnouncements = false;\r\n // POST: transforms announcements into grid data\r\n\r\n // District student announcements\r\n const districtData = this.filterAnnouncements(this.announcements, 'D');\r\n this.tableData[0] = new TylerMatTableDataSource(districtData);\r\n this.showTableFlags[0] = districtData.length > 0;\r\n\r\n // Class staff announcements\r\n const classData = this.filterAnnouncements(this.announcements, 'C');\r\n this.tableData[2] = new TylerMatTableDataSource(classData);\r\n this.showTableFlags[2] = classData.length > 0;\r\n\r\n // District Message\r\n this.districtMessages = this.filterAnnouncements(this.announcements, 'M');\r\n\r\n // School staff announcements\r\n const schoolData = this.filterAnnouncements(this.announcements, 'S');\r\n this.schoolNames = [];\r\n schoolData.forEach(obj => {\r\n if (!this.schoolNames.includes(obj.SchoolName)) {\r\n this.schoolNames.push(obj.SchoolName);\r\n }\r\n this.schoolExpanded[obj.SchoolName] = true;\r\n });\r\n if (!this.student360) {\r\n this.schoolNames.sort((a, b) =>\r\n a.localeCompare(b)\r\n );\r\n } else {\r\n const primaryEnrollment = this.studentEnrollments.find(o => o.PrimaryEnrollment);\r\n this.schoolNames.sort((a, b) => {\r\n if (a == primaryEnrollment.SchoolName && b != primaryEnrollment.SchoolName) {\r\n return -1;\r\n } else if (b == primaryEnrollment.SchoolName && a != primaryEnrollment.SchoolName) {\r\n return 1;\r\n } else {\r\n return a.localeCompare(b);\r\n }\r\n });\r\n }\r\n this.tableData[1] = new TylerMatTableDataSource(schoolData);\r\n this.showTableFlags[1] = schoolData.length > 0;\r\n\r\n // Determining whether to show any announcements\r\n this.noAnnouncements = !this.showTableFlags[0] && !this.showTableFlags[1] && !this.showTableFlags[2];\r\n }\r\n\r\n private filterAnnouncements(announcements: Announcement[], type: string) {\r\n // PRE: a list of announcements and a single character type indicator\r\n // POST: filters the announcements for a given type. Returns those announcements whose type matches.\r\n return announcements.filter(function (announcement: Announcement) {\r\n return announcement.AnnouncementType == type;\r\n });\r\n }\r\n\r\n showDistrictMessages() {\r\n // POST: shows the district message\r\n const dialogBox = this.dialog.open(AnnouncementMessageComponent, {\r\n data: {\r\n districtMessages: this.districtMessages\r\n },\r\n disableClose: true\r\n });\r\n dialogBox.componentInstance.dialogBox = dialogBox;\r\n }\r\n\r\n studentInfoView() {\r\n return this.sharedService.currentPortal && this.sharedService.currentPortal.applyFilterStudents;\r\n }\r\n\r\n showYearSelector() {\r\n return !this.v10;\r\n }\r\n}\r\n","// Imports\r\n\r\n// Class\r\nimport {System} from '../../shared-components/System';\r\nimport {Attachment} from '../../shared-components/models/attachment.model';\r\n\r\nexport class Announcement {\r\n\r\n // Properties\r\n id: number;\r\n AnnouncementAttachments: Attachment[];\r\n AnnouncementType: string;\r\n Course: string;\r\n Description: string;\r\n EndDate = new Date();\r\n Id: number;\r\n IsNewAnnouncement: boolean;\r\n IsValidForParents: boolean;\r\n IsValidForStudents: boolean;\r\n RevisedDate = new Date();\r\n SchoolName: string;\r\n ShowDaily: boolean;\r\n StartDate = new Date();\r\n StudentBirthDate = new Date();\r\n StudentName: string;\r\n Teacher: string;\r\n Title: string;\r\n\r\n // Methods\r\n\tgetRevisedDate(): Date {\r\n\t\treturn this.RevisedDate && this.RevisedDate.toString() != System.junkDateString && this.RevisedDate.toString() != 'Invalid Date' ? this.RevisedDate : null;\r\n\t}\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {Announcement} from '../announcement.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-broadcast-dialog',\r\n templateUrl: './broadcast-dialog.component.html',\r\n styleUrls: ['./broadcast-dialog.component.css']\r\n})\r\nexport class BroadcastDialogComponent implements OnInit {\r\n\r\n // Injected Properties\r\n broadcast: Announcement;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.broadcast = this.data.broadcast;\r\n }\r\n\r\n close() {\r\n // PRE: the close button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n}\r\n","\r\n
\r\n {{broadcast.Title}}\r\n
\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n","import { System } from './../../shared-components/System';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Announcement } from './announcement.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {BroadcastDialogComponent} from './broadcast-dialog/broadcast-dialog.component';\r\nimport {LoginService} from '../login/login.service';\r\nimport {take} from 'rxjs/operators';\r\n\r\n// Class\r\n@Injectable ()\r\nexport class AnnouncementService {\r\n\r\n // Properties\r\n checkingBroadcast = false;\r\n\r\n // Class Functions\r\n constructor (\r\n private http: HttpClient,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private dialog: MatDialog,\r\n private loginService: LoginService\r\n ) { }\r\n\r\n // Event Functions\r\n checkBroadcast () {\r\n // POST: waits for the student broadcast\r\n\r\n // We only want to do this one and if the system setting is set\r\n if (!this.checkingBroadcast && this.loginService.LoginSettings.ActivateBroadcast) {\r\n this.checkingBroadcast = true;\r\n\r\n // Setting up query string\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&userId=' + this.userService.currentUser.Id;\r\n let call: string;\r\n switch (this.userService.currentUser.UserType) {\r\n case 1:\r\n call = 'CheckBroadcastStaff';\r\n break;\r\n case 2:\r\n call = 'CheckBroadcastParent';\r\n break;\r\n case 3:\r\n call = 'CheckBroadcastStudent';\r\n break;\r\n }\r\n\r\n // Checking the broadcast upon initialization\r\n this.http.get(System.apiURL.Student + call + queryString).pipe(take(1)).subscribe(\r\n broadcasts => {\r\n if (broadcasts) {\r\n broadcasts.forEach(broadcast => {\r\n this.dialog.open(BroadcastDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n broadcast: broadcast\r\n }\r\n });\r\n });\r\n }\r\n }\r\n );\r\n\r\n // Setting the interval for checking broadcast\r\n setInterval(() => {\r\n this.http.get(System.apiURL.Student + call + queryString).pipe(take(1)).subscribe(\r\n broadcasts => {\r\n if (broadcasts) {\r\n broadcasts.forEach(broadcast => {\r\n this.dialog.open(BroadcastDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n broadcast: broadcast\r\n }\r\n });\r\n });\r\n }\r\n }\r\n );\r\n }, this.loginService.LoginSettings.BroadcastInterval * 1000);\r\n }\r\n }\r\n\r\n // Methods\r\n getStaffAnnouncements (currentDate: Date): Observable {\r\n // PRE: the route requires the user's id, the school's id, the year's id, and date of inquiry as a string formatted mm/dd/yy\r\n // POST: returns all staff announcements for the user of a given school during a given year at a given date\r\n const dateString = (currentDate.getMonth() + 1) + '/' + (currentDate.getDate()) + '/' + (currentDate.getFullYear().toString().slice(2));\r\n return this.http.get(\r\n System.apiURL.Student +\r\n 'GetStaffAnnouncements' +\r\n '?userId=' + this.userService.currentUser.Id +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '¤tDate=' + dateString\r\n );\r\n }\r\n\r\n getStudentAnnouncements (currentDate): Observable {\r\n // PRE: the route requires the student's id, the year's id, the user's id, the date of inquiry as a string formatted mm/dd/yy, and whether or not this is mobile\r\n // POST: returns all student announcements for the given student as a given user during a given year at a given date. Mobile changes the format (I think?).\r\n const dateString = (currentDate.getMonth() + 1) + '/' + (currentDate.getDate()) + '/' + (currentDate.getFullYear().toString().slice(2));\r\n return this.http.get(\r\n System.apiURL.Student +\r\n 'GetStudentAnnouncements' +\r\n '?studentId=' + this.studentService.selectedStudent.Id +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '¤tDate=' + dateString +\r\n '&isMobile=false' // TODO: make this a function\r\n );\r\n }\r\n}\r\n","import { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport * as moment from 'moment';\r\n\r\nexport class CommunicationLog {\r\n\r\n // Server Properties\r\n Id: number;\r\n StudentId: number;\r\n StaffId: number;\r\n StudentNumber: string;\r\n NickName: string;\r\n FirstName: string;\r\n MiddleName: string;\r\n LastName: string;\r\n StaffName: string;\r\n Site: string;\r\n Year: string;\r\n Date: Date;\r\n Time: string | Date; // I'm not sure why this is a datetime, but it is on the API\r\n TypeId: string;\r\n ContactPersonId: string;\r\n Notes: string;\r\n ResultId: string;\r\n Attach: string;\r\n Location: string;\r\n Duration: number;\r\n Comments: string;\r\n RequestedBy: string;\r\n RequestedByName: string;\r\n Reaction: string;\r\n NotifyCounselor: boolean;\r\n NotifyParent: boolean;\r\n NotifyStudent: boolean;\r\n NotifyTeacher: boolean;\r\n AddedOn: Date;\r\n LastUpdatedBy: string;\r\n LastUpdatedOn: Date;\r\n MassEmailLogId: number;\r\n isSelected: boolean;\r\n AttachmentRecords: Attachment[];\r\n Reason: string | string[] = [];\r\n InformOthers: string | string[] = [];\r\n ConfidentialNote: string;\r\n\r\n // Local Properties\r\n typeCode;\r\n personCode;\r\n resultCode;\r\n MoreAreaDataLoaded = false;\r\n\r\n // Methods\r\n get displayTime() {\r\n if (this.Time && this.Time instanceof Date) {\r\n return moment(this.Time).format('hh:mm a');\r\n } else {\r\n return this.Time;\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 ? field.EndRange : 99999}}\"\r\n />\r\n \r\n \r\n \r\n 0 ? field.EndRange : 99999}}\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{field.DisplayName}}\r\n \r\n \r\n \r\n \r\n {{opt.Description}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{chip.Description}}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef, OnDestroy } from '@angular/core';\r\nimport { CustomizationFrameworkService } from '../customization-framework.service';\r\nimport { CSTField, CustomFieldDataObject } from '../models/custom-data-field.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { skip, timestamp } from 'rxjs/operators';\r\nimport { CustomFieldControlTypeEnum } from '../models/custom-data-control-type.model';\r\nimport { CustomFieldDataTypeEnum } from '../models/custom-data-field-type.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { take } from 'rxjs/operators';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { SecurityService } from '../../../shared-components/security/security.service';\r\nimport { System } from '../../../shared-components/System';\r\nimport { cloneDeep } from 'lodash';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'custom-data-field',\r\n templateUrl: './custom-data-field.component.html',\r\n styleUrls: ['./custom-data-field.component.css']\r\n})\r\nexport class CustomDataFieldComponent implements OnInit, OnDestroy {\r\n\r\n // private _id: number;\r\n // @Input() set id(value: number) {\r\n // this._id = value;\r\n // this.getFieldMetadata();\r\n // }\r\n // get id(): number {\r\n // return this._id;\r\n // }\r\n\r\n private _fieldName: string;\r\n @Input() set fieldName(value: string) {\r\n this._fieldName = value;\r\n if (this.initialized) {\r\n this.getFieldMetadata();\r\n }\r\n }\r\n get fieldName(): string {\r\n return this._fieldName;\r\n }\r\n\r\n private _label: string;\r\n get label(): string {\r\n return this._label;\r\n }\r\n @Input() set label(value: string) {\r\n this._label = value;\r\n if (this.field) {\r\n this.field.DisplayName = value;\r\n }\r\n }\r\n\r\n private _controlTypeID: number;\r\n get controlTypeID(): number {\r\n return this._controlTypeID;\r\n }\r\n @Input() set controlTypeID(value: number) {\r\n this._controlTypeID = value;\r\n if (this.field) {\r\n this.field.ControlTypeID = value;\r\n if (this.field.ControlTypeID == this.controlTypes.RadioButtons) {\r\n this.setUpRadioButtons();\r\n }\r\n }\r\n }\r\n\r\n private _readOnly: boolean;\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n @Input() set readOnly(value: boolean) {\r\n this._readOnly = value;\r\n if (this.field) {\r\n if (value == true) {\r\n this.field.ReadOnly = value;\r\n }\r\n else {\r\n const originalField = this.customizationFrameworkService.customDataFields.find(o => o.ID == this.field.ID);\r\n if (originalField) {\r\n this.field.ReadOnly = originalField.ReadOnly;\r\n }\r\n }\r\n this.setReadWriteAccess();\r\n }\r\n }\r\n\r\n private _required: boolean;\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n @Input() set required(value: boolean) {\r\n this._required = value;\r\n if (this.field) {\r\n if (value == true) {\r\n this.field.IsRequired = value;\r\n }\r\n else {\r\n const originalField = this.customizationFrameworkService.customDataFields.find(o => o.ID == this.field.ID);\r\n if (originalField) {\r\n this.field.IsRequired = originalField.IsRequired;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _value: any;\r\n get value(): any {\r\n return this._value;\r\n }\r\n @Input() set value(val: any) {\r\n if (this.transformDataType(val) != this._value) {\r\n this._value = this.transformDataType(val);\r\n if (this.field) {\r\n if (this.field.DataTypeID == CustomFieldDataTypeEnum.Telephone) {\r\n this.setTelephoneDisplayValue();\r\n }\r\n else if (this.field.DataTypeID == CustomFieldDataTypeEnum.YesNo && (typeof val) == 'string') {\r\n this._value = val == 'true';\r\n }\r\n if (this.persistDataInMemory) {\r\n if (this.field.IsDataDef && this.field.Options && this.field.Options.length > 0 && !this.field.Options.find(o => o.Id == val)) {\r\n // invalid selection\r\n this._value = null;\r\n }\r\n this.persistValue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n private _masterId: number;\r\n get masterId(): number {\r\n return this._masterId;\r\n }\r\n @Input() set masterId(value: number) {\r\n if (this.initialized) {\r\n this.customizationFrameworkService.customFieldData.forEach(f => {\r\n if (f.CustomFieldID == this.field.ID && f.SiteYearId == this.yearService.defaultYear.SiteYearId && f.MasterId == this._masterId) {\r\n f.MasterId = value;\r\n }\r\n });\r\n }\r\n this._masterId = value;\r\n }\r\n\r\n private _allowControlToHandleOwnData: boolean;\r\n public get allowControlToHandleOwnData(): boolean {\r\n return this._allowControlToHandleOwnData;\r\n }\r\n @Input() public set allowControlToHandleOwnData(value: boolean) {\r\n this._allowControlToHandleOwnData = value;\r\n if (this.initialized) {\r\n this.persistValue();\r\n }\r\n }\r\n\r\n @Input() pageIndex: number;\r\n @Input() width: string;\r\n @Input() hideLabel: boolean;\r\n @Input() hintLabel: string;\r\n @Input() noteRows: number;\r\n @Input() persistDataInMemory: boolean;\r\n @Input() alwaysShowControl: boolean;\r\n\r\n @Output() valueChange: EventEmitter = new EventEmitter();\r\n\r\n field: CSTField;\r\n controlTypes = CustomFieldControlTypeEnum;\r\n dataTypes = CustomFieldDataTypeEnum;\r\n subscriptions: Subscription[] = [];\r\n labels: string[] = [];\r\n values: string[] = [];\r\n ids: string[] = [];\r\n userCanView = true;\r\n userCanEdit = true;\r\n parentFieldValue: number;\r\n phoneMask = System.phoneTextMask;\r\n telephoneDisplayValue: string;\r\n initialized = false;\r\n metaDataRetrieved = false;\r\n timeControl: ElementRef;\r\n localDateValue: Date;\r\n localTimeValue: string;\r\n\r\n private _control: ElementRef;\r\n @ViewChild('control', { read: ElementRef }) set control(value: ElementRef) {\r\n this._control = value;\r\n }\r\n get control(): ElementRef {\r\n if (this.field.ControlTypeID == this.controlTypes.Time || this.field.ControlTypeID == this.controlTypes.Date || this.field.ControlTypeID == this.controlTypes.DateTime) {\r\n return this.timeControl;\r\n }\r\n else {\r\n return this._control;\r\n }\r\n }\r\n\r\n constructor(\r\n private customizationFrameworkService: CustomizationFrameworkService,\r\n private yearService: YearService,\r\n private securityService: SecurityService\r\n ) {\r\n const x = this.masterId;\r\n }\r\n\r\n ngOnInit() {\r\n this.getFieldMetadata();\r\n\r\n this.subscriptions.push(this.customizationFrameworkService.observablesSaveCustomFieldsTrigger.subscribe(o => {\r\n this.save();\r\n }));\r\n\r\n this.subscriptions.push(this.customizationFrameworkService.observableCustomDataFieldValueChangedStream$.subscribe(parentField => {\r\n if (this.pageIndex == parentField.PageIndex && this.field.ParentFieldID == parentField.ID && this.field.IsDataDef && this.field.LookupENUM) {\r\n this.getLookups();\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this.securityService.observablePermissionStream$.subscribe(o => {\r\n if (this.field) {\r\n this.checkFieldPermissions();\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this.customizationFrameworkService.observableobservableFieldMetaDataRetrievedStream$.subscribe(o => {\r\n if (!this.metaDataRetrieved) {\r\n this.getFieldMetadata();\r\n }\r\n }));\r\n\r\n\r\n this.initialized = true;\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n getFieldMetadata() {\r\n if (this.fieldName) {\r\n const field = this.customizationFrameworkService.customDataFields.find(o => o.FieldName == this.fieldName);\r\n if (field) {\r\n this.metaDataRetrieved = true;\r\n this.setUpControl(field);\r\n }\r\n }\r\n }\r\n\r\n setUpControl(field: CSTField) {\r\n if (!field) {\r\n field = new CSTField();\r\n }\r\n const tmpField = cloneDeep(field);\r\n tmpField.PageIndex = this.pageIndex;\r\n if (this.label) {\r\n tmpField.DisplayName = this.label;\r\n }\r\n if (this.controlTypeID) {\r\n tmpField.ControlTypeID = this.controlTypeID;\r\n }\r\n if (this.readOnly) {\r\n tmpField.ReadOnly = true;\r\n }\r\n if (this.required) {\r\n tmpField.IsRequired = true;\r\n }\r\n this.field = tmpField;\r\n this.checkFieldPermissions();\r\n if (this.field.IsDataDef && this.field.LookupENUM) {\r\n this.getLookups();\r\n }\r\n if (this.userCanView) {\r\n this.getValue();\r\n }\r\n if (this.field.DataTypeID == CustomFieldDataTypeEnum.Telephone && this.value) {\r\n this.setTelephoneDisplayValue();\r\n }\r\n }\r\n\r\n getLookups() {\r\n if (!this.field.Options || this.field.Options.length == 0 || this.field.ParentFieldID > 0) {\r\n this.subscriptions.push(this.customizationFrameworkService.getDataDefinition(this.field.LookupENUM, this.yearService.defaultYear.Id, this.yearService.defaultYear.SiteYearId, this.parentFieldValue).pipe(take(1)).subscribe(options => {\r\n if (options) {\r\n this.field.Options = options;\r\n if (this.allowControlToHandleOwnData && this.persistDataInMemory && this.field.IsDataDef && this.field.Options && this.field.Options.length > 0 && !this.field.Options.find(o => o.Id == this.value)) {\r\n // invalid selection\r\n this._value = null;\r\n this.persistValue();\r\n }\r\n const serviceField = this.customizationFrameworkService.customDataFields.find(o => o.FieldName == this.field.FieldName);\r\n if (serviceField) {\r\n serviceField.Options = options;\r\n }\r\n if (this.field.ControlTypeID == this.controlTypes.RadioButtons) {\r\n this.setUpRadioButtons();\r\n }\r\n }\r\n if (options.find(o => o.Id == this.value) == null) {\r\n this.value = null;\r\n }\r\n }));\r\n }\r\n else {\r\n if (this.field.ControlTypeID == this.controlTypes.RadioButtons) {\r\n this.setUpRadioButtons();\r\n }\r\n }\r\n }\r\n\r\n checkFieldPermissions() {\r\n this.userCanView = this.customizationFrameworkService.userCanViewField(this.field, !this.readOnly, this.allowControlToHandleOwnData);\r\n this.userCanEdit = this.customizationFrameworkService.userCanEditField(this.field, !this.readOnly, this.allowControlToHandleOwnData);\r\n this.setReadWriteAccess();\r\n }\r\n\r\n setReadWriteAccess() {\r\n if (!this.userCanEdit || this.readOnly) {\r\n this.field.ReadOnly = true;\r\n }\r\n else {\r\n const originalField = this.customizationFrameworkService.customDataFields.find(o => o.ID == this.field.ID);\r\n if (!originalField.ReadOnly) {\r\n this.field.ReadOnly = false;\r\n }\r\n }\r\n if (this.initialized) {\r\n this.persistValue();\r\n }\r\n }\r\n\r\n getValue() {\r\n if (!this.value) {\r\n const dataObj = this.getCustomFieldDataObject();\r\n if (dataObj) {\r\n this.value = this.transformDataType(dataObj.Value);\r\n // this.valueChange.emit(this.value); -- this breaks the unsaved changes guard in Reg/Enroll\r\n }\r\n }\r\n }\r\n\r\n transformDataType(val: any): any {\r\n if (this.field && val) {\r\n if (this.field.DataTypeID == CustomFieldDataTypeEnum.Date || this.field.DataTypeID == CustomFieldDataTypeEnum.Datetime) {\r\n return new Date(val);\r\n }\r\n else if (this.field.DataTypeID == CustomFieldDataTypeEnum.Decimal || this.field.DataTypeID == CustomFieldDataTypeEnum.Integer) {\r\n return Number(val);\r\n }\r\n else {\r\n return val;\r\n }\r\n }\r\n else {\r\n return val;\r\n }\r\n }\r\n\r\n getCustomFieldDataObject(): CustomFieldDataObject {\r\n return this.customizationFrameworkService.customFieldData.find(o => o.CustomFieldID == this.field.ID && o.MasterId == this.masterId && o.SiteYearId == this.yearService.defaultYear.SiteYearId);\r\n }\r\n\r\n persistValue() {\r\n if (this.customizationFrameworkService.userCanEditField(this.field, !this.readOnly, this.allowControlToHandleOwnData) && this.persistDataInMemory && this.allowControlToHandleOwnData) {\r\n let dataObj = this.getCustomFieldDataObject();\r\n if (!dataObj) {\r\n if (this.pageIndex) {\r\n dataObj = new CustomFieldDataObject();\r\n dataObj.CustomFieldID = this.field.ID;\r\n dataObj.MasterId = this.masterId;\r\n dataObj.SiteYearId = this.yearService.defaultYear.SiteYearId;\r\n dataObj.Value = this.value;\r\n dataObj.ObjectID = this.field.ObjectID;\r\n this.customizationFrameworkService.customFieldData.push(dataObj);\r\n }\r\n }\r\n else {\r\n dataObj.Value = this.value;\r\n }\r\n }\r\n }\r\n\r\n setUpRadioButtons() {\r\n if (this.field && this.field.Options) {\r\n this.labels = this.field.Options.map(o => o.Description);\r\n this.values = this.field.Options.map(o => o.Id.toString());\r\n this.ids = this.field.Options.map(o => 'rbField' + this.field.ID + '_' + o.Id);\r\n }\r\n }\r\n\r\n valueChangeHandler() {\r\n this.persistValue();\r\n this.valueChange.emit(this.value);\r\n this.customizationFrameworkService.customDataFieldValueChanged(this.field);\r\n }\r\n\r\n telephoneValueChanged() {\r\n let value = '';\r\n if (this.telephoneDisplayValue) {\r\n for (let i = 0; i < this.telephoneDisplayValue.length; i++) {\r\n if (this.telephoneDisplayValue[i] && this.telephoneDisplayValue[i] != ' ' && !isNaN(Number(this.telephoneDisplayValue[i]))) {\r\n value += this.telephoneDisplayValue[i];\r\n }\r\n }\r\n }\r\n this._value = value;\r\n this.valueChangeHandler();\r\n }\r\n\r\n retrieveValueFromDB() {\r\n const dataObj = this.getCustomFieldDataObject();\r\n if (dataObj && dataObj.Value != null) {\r\n this.value = this.transformDataType(dataObj.Value);\r\n }\r\n else {\r\n if (this.masterId && this.allowControlToHandleOwnData) {\r\n this.customizationFrameworkService.getCustomDataFieldValue(this.field.ID, this.masterId, this.yearService.defaultYear.SiteYearId).pipe(take(1)).subscribe(val => {\r\n this.value = this.transformDataType(val);\r\n this.persistValue();\r\n });\r\n }\r\n }\r\n }\r\n\r\n validate(): ErrorList[] {\r\n return this.customizationFrameworkService.validateCustomField(this.field, this.value, this.control);\r\n }\r\n\r\n save(): ErrorList[] {\r\n const errors = this.validate();\r\n if (errors.length == 0 && !this.field.ReadOnly && this.allowControlToHandleOwnData && !this.persistDataInMemory && this.value != null) {\r\n this.customizationFrameworkService.updateCustomDataFieldValue(this.field.ID, this.masterId, this.value ? this.value.toString() : '', this.yearService.defaultYear.SiteYearId).pipe(take(1)).subscribe(result => {\r\n const success = result;\r\n });\r\n }\r\n return errors;\r\n }\r\n\r\n dateValueChanged(newDate: any) {\r\n this.localDateValue = newDate;\r\n this._value = this.concatDateAndTime();\r\n this.valueChangeHandler();\r\n }\r\n\r\n timeValueChange(time: string) {\r\n this.localTimeValue = time;\r\n this._value = this.concatDateAndTime();\r\n this.valueChangeHandler();\r\n }\r\n\r\n concatDateAndTime(): Date {\r\n const dt = new Date(this.localDateValue);\r\n if (dt && this.localTimeValue) {\r\n const timeParts = this.localTimeValue.split(':');\r\n if (timeParts.length == 2) {\r\n let hours = parseInt(timeParts[0].trim(), 10);\r\n let ampm = '';\r\n const minParts = timeParts[1].trim().split(' ');\r\n if (minParts.length > 0) {\r\n const minutes = parseInt(minParts[0].trim(), 10);\r\n if (minParts.length > 1) {\r\n ampm = minParts[1].trim();\r\n }\r\n if (ampm.toLowerCase() == 'pm') {\r\n hours += 12;\r\n }\r\n dt.setHours(hours);\r\n dt.setMinutes(minutes);\r\n }\r\n }\r\n }\r\n return dt;\r\n }\r\n\r\n setLocalDateTime() {\r\n if (this.field.ControlTypeID == this.controlTypes.DateTime) {\r\n this.localDateValue = cloneDeep(this.value);\r\n this.localTimeValue = '';\r\n if (this.value) {\r\n let hours = (this.value as Date).getHours();\r\n const minutes = (this.value as Date).getMinutes();\r\n if (hours && minutes) {\r\n let ampm = 'am';\r\n let timeString = '';\r\n if (hours < 10) {\r\n timeString += '0';\r\n }\r\n else if (hours > 12) {\r\n hours = hours - 12;\r\n ampm = 'pm';\r\n }\r\n timeString += hours.toString();\r\n timeString += ':';\r\n if (minutes < 10) {\r\n timeString += '0';\r\n }\r\n timeString += minutes.toString();\r\n timeString += ' ';\r\n timeString += ampm;\r\n this.localTimeValue = timeString;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setTelephoneDisplayValue() {\r\n if (this.field && this.field.DataTypeID == CustomFieldDataTypeEnum.Telephone) {\r\n let displayVal = '';\r\n if (this.value && !isNaN(this.value)) {\r\n let charLimit = 10;\r\n if (this.value.toString().length < 10) {\r\n charLimit = this.value.toString().length;\r\n }\r\n for (let i = 0; i < charLimit; i++) {\r\n if (i == 0) {\r\n displayVal += '(';\r\n }\r\n displayVal += this.value.toString()[i];\r\n if (i == 2) {\r\n displayVal += ')';\r\n }\r\n else if (i == 5) {\r\n displayVal += '-';\r\n }\r\n }\r\n }\r\n this.telephoneDisplayValue = displayVal;\r\n }\r\n }\r\n\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { CSTField, CustomFieldDataObject } from './models/custom-data-field.model';\r\nimport { Observable, Subject, BehaviorSubject, of } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../../shared-components/System';\r\nimport { CustomFieldDataType, CustomFieldDataTypeEnum } from './models/custom-data-field-type.model';\r\nimport { CustomFieldControlType } from './models/custom-data-control-type.model';\r\nimport { CustomDataModule } from './models/custom-data-module.model';\r\nimport { CustomDataObject } from './models/custom-data-object.model';\r\nimport { DataDefinitionList, DataDefinition } from '../../admin360/data-definition/data-definition.model';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { CSTCustomPage } from './models/cst-custom-page.model';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { SecurityService } from '../../shared-components/security/security.service';\r\nimport { EFormDataObject } from '../../shared-components/e-forms/e-formDataObject.model';\r\nimport { EFormService } from '../../shared-components/e-forms/e-form.service';\r\nimport { EFormControl } from '../../shared-components/e-forms/e-form-control.model';\r\nimport { EFormRow } from '../../shared-components/e-forms/e-form-row.model';\r\nimport { CustomDesignPage } from '../../admin360/customization/models/custom-design-page.model';\r\nimport * as _ from 'lodash';\r\nimport { CSTImportResults } from './models/cst-import-results.model';\r\nimport { LoginService } from '../login/login.service';\r\nimport { EForm } from '../../shared-components/e-forms/e-form.model';\r\n\r\n@Injectable()\r\nexport class CustomizationFrameworkService {\r\n\r\n customDataFields: CSTField[] = [];\r\n dataTypes: CustomFieldDataType[] = [];\r\n controlTypes: CustomFieldControlType[] = [];\r\n modules: CustomDataModule[] = [];\r\n objects: CustomDataObject[] = [];\r\n designPageIndexIncrementor = 1;\r\n basePageOnly = false;\r\n dataDefinitionLists: DataDefinitionList[] = [];\r\n dataDefSubjects: { [enum_value: string]: Subject } = {};\r\n customFieldData: CustomFieldDataObject[] = [];\r\n\r\n public observablesBasePageOnly = new Subject();\r\n observablesBasePageOnlyStream$ = this.observablesBasePageOnly.asObservable();\r\n\r\n public observablesSaveCustomFieldsTrigger = new Subject();\r\n observablesSaveCustomFieldsTriggerStream$ = this.observablesSaveCustomFieldsTrigger.asObservable();\r\n\r\n public observableCustomDataFieldValueChanged = new Subject();\r\n observableCustomDataFieldValueChangedStream$ = this.observableCustomDataFieldValueChanged.asObservable();\r\n\r\n public observableFieldMetaDataRetrieved = new Subject();\r\n observableobservableFieldMetaDataRetrievedStream$ = this.observableFieldMetaDataRetrieved.asObservable();\r\n\r\n public observableFieldValuesRetrieved = new Subject();\r\n observableFieldValuesRetrievedStream$ = this.observableFieldValuesRetrieved.asObservable();\r\n\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private sharedService: SharedService,\r\n private yearService: YearService,\r\n private securityService: SecurityService,\r\n private eFormService: EFormService,\r\n private loginService: LoginService\r\n ) {\r\n this.sharedService.observableClearStoredCustomFieldDataStream$.subscribe(o => this.clearStoredCustomFieldData());\r\n }\r\n\r\n triggerAllCustomDataFieldSave() {\r\n this.observablesSaveCustomFieldsTrigger.next(true);\r\n }\r\n\r\n updateBasePageOnly(basePageOnly: boolean) {\r\n this.basePageOnly = basePageOnly;\r\n this.observablesBasePageOnly.next(basePageOnly);\r\n }\r\n\r\n customDataFieldValueChanged(field: CSTField) {\r\n this.observableCustomDataFieldValueChanged.next(field);\r\n }\r\n\r\n getCustomDataFields(yearId: number, siteYearId: number): Observable {\r\n const queryString = '?yearId=' + yearId\r\n + '&siteYearId=' + siteYearId;\r\n return this.http.get(System.apiURL.Admin + 'GetCustomDataFields' + queryString);\r\n }\r\n\r\n getCustomDataFieldByID(fieldID: number): Observable {\r\n const queryString = '?fieldID=' + fieldID;\r\n return this.http.get(System.apiURL.Admin + 'GetCustomDataFieldByID' + queryString);\r\n }\r\n\r\n getCustomDataFieldByFieldName(fieldName: string): Observable {\r\n const queryString = '?fieldName=' + fieldName;\r\n return this.http.get(System.apiURL.Admin + 'GetCustomDataFieldByFieldName' + queryString);\r\n }\r\n\r\n getCustomFieldDataTypes(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetCustomFieldDataTypes');\r\n }\r\n\r\n getCustomFieldControlTypes(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetCustomFieldControlTypes');\r\n }\r\n\r\n getCustomDataFieldsByObjectID(objectID: number): Observable {\r\n return this.sharedService.getCustomDataFieldsByObjectID(objectID);\r\n }\r\n\r\n getCustomDataFieldValue(fieldID: number, masterId: number, siteYearId: number): Observable {\r\n const queryString = '?fieldID=' + fieldID\r\n + '&masterId=' + masterId\r\n + '&siteYearId=' + siteYearId;\r\n return this.http.get(System.apiURL.Admin + 'GetCustomDataFieldValue' + queryString);\r\n }\r\n\r\n updateCustomDataFieldValue(fieldID: number, masterId: number, textValue: string, siteYearId: number): Observable {\r\n const queryString = '?fieldID=' + fieldID\r\n + '&masterId=' + masterId\r\n + '&textValue=' + textValue\r\n + '&siteYearId=' + siteYearId;\r\n return this.http.get(System.apiURL.Admin + 'UpdateCustomDataFieldValue' + queryString);\r\n }\r\n\r\n getCSTModules(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetCSTModules');\r\n }\r\n\r\n getCSTObjects(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetCSTObjects');\r\n }\r\n\r\n getDataDefinitionList(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'GetDataDefinitionList');\r\n }\r\n\r\n getDataDefinitionListsWithCodes(enum_value: string, yearId: number, siteYearId: number, masterId: number): Observable {\r\n const queryString = '?enum_value=' + enum_value +\r\n '&yearId=' + yearId +\r\n '&siteYearId=' + siteYearId +\r\n '&masterId=' + masterId;\r\n return this.http.get(System.apiURL.Admin + 'GetDataDefinitionListsWithCodes' + queryString);\r\n }\r\n\r\n getDataDefinitionListByEnum(\r\n enum_value: string,\r\n yearId = this.yearService.defaultYear.Id,\r\n siteYearId = this.yearService.defaultYear.SiteYearId,\r\n masterId: number = null\r\n): Observable {\r\n let dataDefList: DataDefinitionList;\r\n // check if we have cached the data def list\r\n if (this.dataDefinitionLists) {\r\n dataDefList = this.dataDefinitionLists.find(o => o.Enum == enum_value);\r\n }\r\n return of(dataDefList);\r\n}\r\n\r\n getDataDefinition(enum_value: string, yearId: number, siteYearId: number, masterId: number): Observable {\r\n let bh = this.dataDefSubjects[enum_value];\r\n if (!bh) {\r\n bh = new Subject();\r\n this.dataDefSubjects[enum_value] = bh;\r\n let queryString = '';\r\n queryString += '?enum_value=' + enum_value +\r\n '&yearId=' + yearId +\r\n '&siteYearId=' + siteYearId +\r\n '&masterId=' + masterId;\r\n const obs = this.http.get(System.apiURL.Admin + 'GetDataDefinition' + queryString);\r\n obs.pipe(take(1)).subscribe(o => {\r\n bh.next(o);\r\n this.dataDefSubjects[enum_value] = null;\r\n });\r\n }\r\n return bh.asObservable();\r\n // we return a behavior subject so that a single page that uses the same data def more than once (design pages) won't make duplicate http calls.\r\n }\r\n\r\n importCustomFieldsFromClassic(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'ImportCustomFieldsFromClassic');\r\n }\r\n\r\n checkClassicFieldsForDuplicateNames(): Observable {\r\n return this.http.get(System.apiURL.Admin + 'CheckClassicFieldsForDuplicateNames');\r\n }\r\n\r\n getCustomPagesByModuleObject(moduleId: number, objectId: number, siteYearId: number, area?: string): Observable {\r\n const queryString = '?moduleId=' + moduleId +\r\n '&objectId=' + objectId +\r\n '&siteYearId=' + siteYearId +\r\n '&area=' + area;\r\n return this.http.get(System.apiURL.Admin + 'GetCustomPagesByModuleObject' + queryString);\r\n }\r\n\r\n massGetCustomDataFieldByFieldName(fieldNames: string[]): Observable {\r\n return this.http.post(System.apiURL.Admin + 'MassGetCustomDataFieldByFieldName', fieldNames);\r\n }\r\n\r\n massGetCustomDataFieldValue(siteYearId: number, fields: CSTField[]): Observable {\r\n const queryString = '?siteYearId=' + siteYearId;\r\n return this.http.post(System.apiURL.Admin + 'MassGetCustomDataFieldValue' + queryString, fields);\r\n }\r\n\r\n massUpdateCustomDataFieldValue(siteYearId: number, fields: CSTField[]): Observable {\r\n const queryString = '?siteYearId=' + siteYearId;\r\n return this.http.post(System.apiURL.Admin + 'MassUpdateCustomDataFieldValues' + queryString, fields);\r\n }\r\n\r\n getDesignPageByIDs(basePageOnly: boolean = false, pageIDs: number[] = [], includeAllUserPagesForID: boolean = false): Observable {\r\n const queryString = '?basePageOnly=' + basePageOnly +\r\n '&includeAllUserPagesForID=' + includeAllUserPagesForID;\r\n return this.http.post(System.apiURL.Admin + 'GetDesignPageByIDs' + queryString, pageIDs);\r\n }\r\n\r\n validateCustomField(field: CSTField, value: string, fieldRef: ElementRef = null, isRequiredOverride: boolean = false): ErrorList[] {\r\n const errors: ErrorList[] = [];\r\n if (!field.ReadOnly || field.IsRequired || isRequiredOverride) {\r\n if ((field.IsRequired || isRequiredOverride) && !value) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'is required.'\r\n });\r\n }\r\n let val = 0;\r\n if (value) {\r\n if (field.DataTypeID == CustomFieldDataTypeEnum.AlphaNumeric) {\r\n val = value.length;\r\n if (field.StartRange > 0 && val < field.StartRange) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'must be at least ' + field.StartRange + 'characters long.'\r\n });\r\n }\r\n if (field.EndRange > 0 && val > field.EndRange) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'must not exceed ' + field.EndRange + 'characters in length.'\r\n });\r\n }\r\n }\r\n else if (field.DataTypeID == CustomFieldDataTypeEnum.Integer || field.DataTypeID == CustomFieldDataTypeEnum.Decimal) {\r\n if (!isNaN(Number(value))) {\r\n val = +value;\r\n }\r\n if (field.StartRange > 0 && val < field.StartRange) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'must be greather than or equal to ' + field.StartRange + '.'\r\n });\r\n }\r\n if (field.EndRange > 0 && val > field.EndRange) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'must be less than or equal to ' + field.EndRange + '.'\r\n });\r\n }\r\n if (field.DataTypeID == CustomFieldDataTypeEnum.Integer && (isNaN(Number(value)) || parseInt(Number(value).toString(), 10) != Number(value) || isNaN(parseInt(value, 10)))) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'must be a whole number.'\r\n });\r\n }\r\n if (field.DataTypeID == CustomFieldDataTypeEnum.Decimal) {\r\n if (isNaN(Number(value))) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'must be a valid number.'\r\n });\r\n }\r\n else if (field.DecimalPrecision >= 0) {\r\n let digitsAfterDecimal = 0;\r\n const numberParts = value.toString().split('.');\r\n if (numberParts.length > 1) {\r\n digitsAfterDecimal = numberParts[1].length;\r\n }\r\n if (digitsAfterDecimal > field.DecimalPrecision) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'only allows ' + field.DecimalPrecision + ' digits after the decimal.'\r\n });\r\n }\r\n }\r\n }\r\n }\r\n else if (field.DataTypeID == CustomFieldDataTypeEnum.Telephone) {\r\n // if (!telephoneDisplayvalue.match(System.phoneRegexp)) {\r\n if (value.length != 10) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'Invalid phone number.'\r\n });\r\n }\r\n }\r\n else if (field.DataTypeID == CustomFieldDataTypeEnum.Email) {\r\n if (!value.match(System.mailRegexp)) {\r\n errors.push({\r\n fieldName: field.DisplayName,\r\n fieldRef: fieldRef,\r\n errorMsg: 'Invalid email address.'\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n return errors;\r\n }\r\n\r\n validateAllCustomFieldsInMemory(): ErrorList[] {\r\n let errors: ErrorList[] = [];\r\n this.customFieldData.forEach(f => {\r\n const field = this.customDataFields.find(o => o.ID == f.CustomFieldID);\r\n errors = errors.concat(this.validateCustomField(field, f.Value));\r\n });\r\n return errors;\r\n }\r\n\r\n saveAllCustomFieldsInMemory(): ErrorList[] {\r\n const errors = this.validateAllCustomFieldsInMemory();\r\n if (errors.length == 0) {\r\n const fieldsToSave: CSTField[] = [];\r\n this.customFieldData.filter(o => o.MasterId > 0 && o.Value != null && o.SiteYearId == this.yearService.defaultYear.SiteYearId).forEach(c => {\r\n const field = this.customDataFields.find(o => o.ID == c.CustomFieldID);\r\n const f = _.cloneDeep(field);\r\n f.Value = c.Value;\r\n f.MasterId = c.MasterId;\r\n fieldsToSave.push(f);\r\n });\r\n if (fieldsToSave.length > 0) {\r\n this.massUpdateCustomDataFieldValue(this.yearService.defaultYear.SiteYearId, fieldsToSave).pipe(take(1)).subscribe(o => { });\r\n }\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n clearStoredCustomFieldData() {\r\n this.customFieldData = [];\r\n }\r\n\r\n clearStoredCustomFieldDataByObject(objectId: number, masterId?: number) {\r\n this.customFieldData = this.customFieldData.filter(o => o.ObjectID == objectId && (masterId == null || o.MasterId == masterId));\r\n }\r\n\r\n updateMasterIDForPersistedData(objectId: number, newMasterId: number, oldMasterId?: number) {\r\n this.customFieldData.forEach(f => {\r\n const field = this.customDataFields.find(o => o.ID == f.CustomFieldID && o.ObjectID == objectId && (oldMasterId == null || f.MasterId == oldMasterId));\r\n if (field) {\r\n f.MasterId = newMasterId;\r\n }\r\n });\r\n }\r\n\r\n userCanViewField(field: CSTField, editable: boolean, handleOwnData: boolean): boolean {\r\n let userCanView = false;\r\n if (field && field.Active) {\r\n userCanView = this.userCanEditField(field, editable, handleOwnData)\r\n || !field.IsSecured\r\n || field.IsRequired\r\n || this.securityService.IsAllPermissionCodeAssigned('CST_VAUF')\r\n || this.securityService.IsAnyPermissionGroupAssigned(...field.ViewPermissionGroupIDs);\r\n }\r\n return userCanView;\r\n }\r\n\r\n userCanEditField(field: CSTField, editable: boolean, handleOwnData: boolean): boolean {\r\n let userCanEdit = false;\r\n if (field && field.Active && editable && !field.ReadOnly\r\n && (!handleOwnData || (handleOwnData && (!field.IsProcedureBased || field.WriteSPName)))\r\n ) {\r\n userCanEdit = !field.IsSecured\r\n || this.securityService.IsAllPermissionCodeAssigned('CST_MAUF')\r\n || this.securityService.IsAllPermissionCodeAssigned('CST_MACP')\r\n || this.securityService.IsAnyPermissionGroupAssigned(...field.ModifyPermissionGroupIDS);\r\n }\r\n return userCanEdit;\r\n }\r\n\r\n getCustomPageSystemTemplateByID(pageId: number): Observable {\r\n const queryString = '?pageId=' + pageId;\r\n return this.http.get(System.apiURL.Admin + 'GetCustomPageSystemTemplateByID' + queryString);\r\n }\r\n\r\n reconcileChangesToCustomPage(customPage: CSTCustomPage): Observable {\r\n let formData = new EFormDataObject();\r\n try {\r\n formData = JSON.parse(customPage.FormData);\r\n\r\n // need to reconcile any changes to the system version of this page to the local version\r\n if (customPage && customPage.IsSysGen && customPage.LocalVersion != customPage.SystemVersion) {\r\n return this.getCustomPageSystemTemplateByID(customPage.ID).pipe(map(systemPage => {\r\n let systemFormData = new EFormDataObject();\r\n try {\r\n systemFormData = JSON.parse(systemPage.FormData);\r\n } catch (err) {\r\n systemFormData = new EFormDataObject();\r\n }\r\n return this.compareSystemPageToLocalPage(systemFormData, formData);\r\n }));\r\n }\r\n else {\r\n return of(formData);\r\n }\r\n\r\n\r\n } catch (err) {\r\n formData = new EFormDataObject();\r\n return of(formData);\r\n }\r\n }\r\n\r\n reconcileChangesToDesignPage(designPage: CustomDesignPage): Observable {\r\n let formData = new EFormDataObject();\r\n try {\r\n formData = JSON.parse(designPage.FormData);\r\n\r\n // need to reconcile any changes to the system version of this page to the local version\r\n if (designPage && designPage.Version != designPage.BaseVersion) {\r\n return this.getDesignPageByIDs(true, [designPage.ID], false).pipe(map(systemPages => {\r\n const systemPage = systemPages.find(o => o.BasePage);\r\n let systemFormData = new EFormDataObject();\r\n try {\r\n systemFormData = JSON.parse(systemPage.FormData);\r\n } catch (err) {\r\n systemFormData = new EFormDataObject();\r\n }\r\n return this.compareSystemPageToLocalPage(systemFormData, formData);\r\n }));\r\n }\r\n else {\r\n return of(formData);\r\n }\r\n\r\n\r\n } catch (err) {\r\n formData = new EFormDataObject();\r\n return of(formData);\r\n }\r\n }\r\n\r\n compareSystemPageToLocalPage(systemFormData: EFormDataObject, localFormData: EFormDataObject): EFormDataObject {\r\n const systemPageControls = this.eFormService.getAllFormControls(systemFormData);\r\n const localPageControls = this.eFormService.getAllFormControls(localFormData);\r\n const newSystemControls: EFormControl[] = [];\r\n systemPageControls.forEach(sysControl => {\r\n if (sysControl.CustomField && sysControl.CustomFieldName && !localPageControls.find(o => o.CustomFieldName == sysControl.CustomFieldName)) {\r\n newSystemControls.push(sysControl);\r\n }\r\n });\r\n if (newSystemControls.length > 0 && localFormData && localFormData.Tabs.length > 0 && localFormData.Tabs[0].Pages.length > 0 && localFormData.Tabs[0].Pages[0].Columns.length > 0) {\r\n const col = localFormData.Tabs[0].Pages[0].Columns[0];\r\n if (col.Rows.length > 0) {\r\n newSystemControls.forEach(c => {\r\n const newRow = new EFormRow();\r\n newRow.Controls = [];\r\n newRow.Controls.push(c);\r\n col.Rows.push(newRow);\r\n });\r\n }\r\n else {\r\n newSystemControls.forEach(c => {\r\n col.Controls.push(c);\r\n });\r\n }\r\n }\r\n return localFormData;\r\n }\r\n\r\n getLinkedCustomFields(formData: EFormDataObject, eForm: EForm): Observable {\r\n const newValues: CSTField[] = [];\r\n if (this.loginService.LoginSettings.EnableCustomizationFramework && this.loginService.LoginSettings.C360CustomFieldsImported && eForm.TemplateType == 'student') {\r\n const controls = this.eFormService.getAllFormControls(formData);\r\n const fieldNames = controls.filter(o => o.LinkedCSTFieldName).map(o => o.LinkedCSTFieldName);\r\n return this.massGetCustomDataFieldByFieldName(fieldNames).pipe(take(1)).pipe(map(fields => {\r\n controls.forEach(control => {\r\n if (control.LinkedCSTFieldName) {\r\n const dbField = fields.find(o => o.FieldName == control.LinkedCSTFieldName);\r\n if (dbField) {\r\n if (control.Value) {\r\n dbField.Value = control.Value.toString();\r\n }\r\n dbField.MasterId = eForm.Student_ID;\r\n newValues.push(dbField);\r\n }\r\n }\r\n });\r\n return newValues;\r\n }))\r\n \r\n }\r\n return of(newValues);\r\n }\r\n\r\n\r\n}\r\n","export interface CustomFieldControlType {\r\n ID: number;\r\n Description: string;\r\n }\r\n\r\n export enum CustomFieldControlTypeEnum {\r\n Textbox = 1,\r\n Image = 2,\r\n Buttons = 3,\r\n RadioButtons = 4,\r\n MultiLineTextbox = 5,\r\n Date = 6,\r\n Checkbox = 7,\r\n Dropdown = 8,\r\n Time = 9,\r\n DateTime = 10,\r\n Text = 11,\r\n Component = 12 // TODO\r\n}","export interface CustomFieldDataType {\r\n ID: number;\r\n Description: string;\r\n Format: string;\r\n }\r\n\r\nexport enum CustomFieldDataTypeEnum {\r\n AlphaNumeric = 1,\r\n Decimal = 3,\r\n Date = 4,\r\n Telephone = 5,\r\n // LunchPin = 6,\r\n // ID = 7,\r\n // StateID = 8,\r\n // SSN = 9,\r\n // GradeLevel = 10,\r\n Email = 11,\r\n Integer = 12,\r\n Datetime = 13,\r\n Time = 14,\r\n YesNo = 15\r\n}","\r\nimport { DataDefinition } from '../../../admin360/data-definition/data-definition.model';\r\n\r\n export class CSTField {\r\n ID: number;\r\n ObjectID: number;\r\n FieldName: string;\r\n DisplayName: string;\r\n ExternalControlDataID: number;\r\n Description: string;\r\n DynamicPagesDataFiledsID: number;\r\n DynamicPagesDataFieldName: string;\r\n IsSysGen: boolean;\r\n FieldLength: number;\r\n StartRange: number;\r\n EndRange: number;\r\n DecimalPrecision: number;\r\n IsRequired: boolean;\r\n IsDataDef: boolean;\r\n LookupENUM: string;\r\n DataTypeID: number;\r\n ControlTypeID: number;\r\n ReadOnly: boolean;\r\n Active = true;\r\n IsFieldTracked: boolean;\r\n RequireNoGaps: boolean;\r\n AllowMultipleSelections: boolean;\r\n HeightInRows: number;\r\n IsSecured = false;\r\n PermissionCategory: string;\r\n AddedOn: Date;\r\n AddedBy: number;\r\n LastUpdatedOn: Date;\r\n LastUpdatedBy: number;\r\n DelStatus: boolean;\r\n ExternalDataDescription: string;\r\n ReadSPName: string;\r\n WriteSPName: string;\r\n ValueColumnName: string;\r\n DisplayColumnName: string;\r\n ParentFieldID: number;\r\n UsedForStateReporting: boolean;\r\n Options: DataDefinition[];\r\n TextFormat: string;\r\n Value: string;\r\n IsProcedureBased: boolean;\r\n MasterId: number;\r\n ViewPermissionGroupIDs: number[];\r\n ModifyPermissionGroupIDS: number[];\r\n StateReportingFieldMetaDataID: number;\r\n\r\n // client properties\r\n PageIndex: number;\r\n }\r\n\r\n export class CustomFieldDataObject {\r\n CustomFieldID: number;\r\n MasterId: number;\r\n SiteYearId: number;\r\n Value: string;\r\n ObjectID: number;\r\n }","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-email-not-sent',\r\n templateUrl: './email-not-sent.component.html',\r\n styleUrls: ['./email-not-sent.component.css']\r\n})\r\nexport class EmailNotSentComponent implements OnInit {\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n modalInstanceCloseClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","\r\n

\r\n Email Not Sent\r\n

\r\n\r\n
\r\n The system was not able to send an email to your email address. Please contact the district for further instructions.\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","\r\n

\r\n Email Sent\r\n

\r\n\r\n
\r\n \r\n An email has been sent to\r\n {{emailAddress}}. \r\n Please use the link in the email to proceed to the next step.\r\n \r\n \r\n
\r\n
\r\n
Please enter the code provided in that email.
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { MatDialogRef, MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { FamilyRegistrationService } from '../family-registration.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslationService } from '../../../shared-components/translation/translation.service';\r\nimport { FamilyRegistrationYear } from '../../family-registration/family-registration-year.model';\r\nimport { NewFamilyRegistrationYearSelectionComponent } from '../../family-registration/new-family-registration-year-selection/new-family-registration-year-selection.component';\r\nimport { Router } from '@angular/router';\r\nimport { GeneralConfirmationComponent } from '../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { EmailNotSentComponent } from '../email-not-sent/email-not-sent.component';\r\n\r\n@Component({\r\n selector: 'app-email-sent',\r\n templateUrl: './email-sent.component.html',\r\n styleUrls: [\r\n './email-sent.component.css',\r\n '../familiy-registration-shared-style.css'\r\n ]\r\n})\r\nexport class EmailSentComponent implements OnInit {\r\n\r\n @ViewChild('code', { static: true }) inputCode: ElementRef;\r\n\r\n LoginSettings: LoginSettings;\r\n registerNewFamily: any;\r\n emailAddress: string;\r\n verifyCode: string;\r\n languageId: number;\r\n public errorList: ErrorList[] = [];\r\n @ViewChild('dialogWindow', { read: ElementRef }) dialogWindow: ElementRef;\r\n frYearsDialogRef: MatDialogRef;\r\n\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private userService: UserService,\r\n private translateService: TranslateService,\r\n private translationService: TranslationService,\r\n private router: Router,\r\n private sharedService: SharedService,\r\n private familyRegistrationService: FamilyRegistrationService\r\n ) { }\r\n\r\n\r\n enableSelfRegistrationCode = false;\r\n displayAsPopupOnly = false;\r\n ngOnInit() {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.enableSelfRegistrationCode = this.LoginSettings.EnableSelfRegistrationCode; \r\n this.registerNewFamily = this.data.registerNewFamily;\r\n if (this.data.emailAddress != undefined || this.data.emailAddress != '') {\r\n this.emailAddress = this.data.emailAddress;\r\n }\r\n else {\r\n this.emailAddress = '';\r\n }\r\n if (this.registerNewFamily != undefined && this.registerNewFamily.emailAddress != undefined && this.registerNewFamily.emailAddress != '')\r\n {\r\n this.emailAddress = this.registerNewFamily.emailAddress ;\r\n }\r\n if (this.registerNewFamily != undefined)\r\n {\r\n this.languageId = this.registerNewFamily.languageId;\r\n }\r\n else if (this.data.languageId != undefined)\r\n {\r\n this.languageId =this.data.languageId;\r\n }\r\n if (this.data.showPopupOnly != undefined && this.data.showPopupOnly == true)\r\n {\r\n this.enableSelfRegistrationCode = false; this.displayAsPopupOnly = true;\r\n }\r\n }\r\n\r\n modalInstanceNextClick() {\r\n if (this.validate()) {\r\n this.loginService.getRegisterParentInfo(this.emailAddress, this.verifyCode).subscribe(\r\n (result) => {\r\n if (result) {\r\n // this.location.url(this.location.path());\r\n this.familyRegistrationService.students = []; \r\n this.familyRegistrationService.householdParent = result;\r\n if (this.familyRegistrationService.householdParent.Id == -1) {\r\n this.invalidCombination();\r\n }\r\n else if (this.familyRegistrationService.householdParent.Id == -2) {\r\n // Expired\r\n this.codeExpire();\r\n this.dialogRef.close('Closed.');\r\n\r\n }\r\n else if (this.familyRegistrationService.householdParent.Id > 0) {\r\n this.dialogRef.close('Next was clicked.');\r\n this.redirectQR();\r\n }\r\n\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n invalidCombination() {\r\n const invalidCodeDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n invalidCodeDialog.componentInstance.headerLabel = 'Invalid Email/Code Combination';\r\n invalidCodeDialog.componentInstance.confirmMessage = 'The code provided is not associated with this email address.';\r\n invalidCodeDialog.componentInstance.disableConfirmation = true;\r\n invalidCodeDialog.componentInstance.confirmEvent.subscribe((invalidCodeReturnValue: boolean) => {\r\n });\r\n }\r\n\r\n\r\n codeExpire() {\r\n const codeExpiredDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n codeExpiredDialog.componentInstance.headerLabel = 'Expired Code';\r\n codeExpiredDialog.componentInstance.confirmMessage = 'The code you entered has expired.' + \"
\" +\r\n \"Would you like to have a new code sent to \" + this.emailAddress;\r\n codeExpiredDialog.componentInstance.okButtonLabel = 'Yes';\r\n codeExpiredDialog.componentInstance.cancelButtonLabel = 'No';\r\n codeExpiredDialog.componentInstance.confirmEvent.subscribe((resendEmail: boolean) => {\r\n \r\n if (resendEmail) {\r\n this.familyRegistrationService.sendRegisterParentEmail(this.emailAddress, this.languageId, \"\").subscribe(\r\n (result) => {\r\n if (!result) {\r\n const emailNotSentDialog = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n },\r\n () => {\r\n const emailNotSentDialog = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n );\r\n \r\n }\r\n });\r\n }\r\n\r\n\r\n redirectQR() {\r\n this.userService.currentLanguage = 'en';\r\n if (this.familyRegistrationService.householdParent.Language == 2) {\r\n this.userService.currentLanguage = 'fr';\r\n } else if (this.familyRegistrationService.householdParent.Language == 3) {\r\n this.userService.currentLanguage = 'es';\r\n } else if (this.familyRegistrationService.householdParent.Language == 4) {\r\n this.userService.currentLanguage = 'pt';\r\n }\r\n\r\n this.translateService.use(this.userService.currentLanguage);\r\n this.translateService.setDefaultLang(this.userService.currentLanguage);\r\n this.translationService.getLanguageTranslations();\r\n\r\n this.familyRegistrationService.getORYears().subscribe((years: FamilyRegistrationYear[]) => {\r\n this.familyRegistrationService.years = years;\r\n if (this.familyRegistrationService.years.length != 0) {\r\n if ((this.loginService.LoginSettings.V10 && this.familyRegistrationService.householdParent.AyIdentifier != null && this.familyRegistrationService.householdParent.AyIdentifier != '') || (!this.loginService.LoginSettings.V10 && this.familyRegistrationService.householdParent.YearId > 0)) {\r\n if (this.loginService.LoginSettings.V10) {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years.find(o => o.AYIdentifier == this.familyRegistrationService.householdParent.AyIdentifier);\r\n } else {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years.find(o => o.Id == this.familyRegistrationService.householdParent.YearId);\r\n }\r\n if (this.familyRegistrationService.defaultYear) {\r\n this.router.navigateByUrl('/familyregistration/householdparent');\r\n }\r\n } else {\r\n if (this.loginService.LoginSettings.V10) {\r\n const currentDate = new Date();\r\n for (let i = 0; i < this.familyRegistrationService.years.length; i++) {\r\n if (this.familyRegistrationService.years[i].Status == 1) {\r\n if (this.familyRegistrationService.years[i].StartDate < currentDate) {\r\n this.familyRegistrationService.years[i].Status = 3;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.familyRegistrationService.years.length > 1) {\r\n this.frYearsDialogRef = this.dialog.open(NewFamilyRegistrationYearSelectionComponent, {\r\n disableClose: true,\r\n maxWidth: '500px'\r\n });\r\n } else {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years[0];\r\n this.familyRegistrationService.householdParent.YearId = this.familyRegistrationService.defaultYear.Id;\r\n this.familyRegistrationService.householdParent.AyIdentifier = this.loginService.LoginSettings.V10 ? this.familyRegistrationService.defaultYear.AYIdentifier : this.familyRegistrationService.defaultYear.Description;\r\n\r\n this.frYearsDialogRef = this.dialog.open(NewFamilyRegistrationYearSelectionComponent, {\r\n disableClose: true,\r\n maxWidth: '500px'\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n validate(): boolean {\r\n const mailformat = System.mailRegexp;\r\n this.errorList = [];\r\n\r\n if (this.verifyCode == null || this.verifyCode == '') {\r\n this.errorList.push({\r\n fieldName: 'Code',\r\n fieldRef: this.inputCode,\r\n errorMsg: 'Field is required'\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n modalInstanceCloseClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","import { System } from './../../shared-components/System';\r\nimport { FamilyRegistrationYear } from './family-registration-year.model';\r\nimport { FamilyRegistrationAddressSettings } from './family-registration-household-addresses/family-registration-address-settings.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { FamilyRegistration } from './family-registration.model';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FamilyRegistrationStudent } from './family-registration-student.model';\r\n\r\n@Injectable()\r\nexport class FamilyRegistrationService {\r\n\r\n // Properties\r\n public householdParent: FamilyRegistration;\r\n public years: FamilyRegistrationYear[];\r\n public defaultYear: FamilyRegistrationYear;\r\n public registerNewFamily: any;\r\n public students: FamilyRegistrationStudent[] = [];\r\n public redirectUrl: string;\r\n\r\n // Class Functions\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n // Methods\r\n getORYears(yearId = 0, studentId = 0): Observable {\r\n const queryString = '?yearId=' + yearId +\r\n '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetORYears' + queryString);\r\n }\r\n\r\n saveRegisterParent(familyRegistration: FamilyRegistration): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveRegisterParent', familyRegistration);\r\n }\r\n\r\n registerParent(emailAddress: string, languageId: number, url: string, clientIP: string, clientMachineName: string, serverIP: string): Observable {\r\n const data = [emailAddress, languageId, url, clientIP, clientMachineName, serverIP];\r\n return this.http.post(System.apiURL.Student + 'RegisterParent', data);\r\n }\r\n\r\n sendRegisterParentEmail(emailAddress: string, languageId: number, url: string): Observable {\r\n const data = [emailAddress, languageId, url];\r\n return this.http.post(System.apiURL.Student + 'SendRegisterParentEmail', data);\r\n }\r\n\r\n parentAlreadyExists(familyRegistration: FamilyRegistration): Observable {\r\n // PRE: edited family registration data with an email address\r\n // POST: sends to the server to see if that data is in use\r\n return this.http.post(System.apiURL.Student + 'ParentAlreadyExist', familyRegistration);\r\n }\r\n\r\n getFamilyRegistrationAddressSettings(): Observable {\r\n // POST: obtains the family registration address settings from the server\r\n return this.http.get(System.apiURL.Student + 'GetFamilyRegistrationAddressSettings');\r\n }\r\n\r\n saveRegisterParentAddress(familyRegistration: FamilyRegistration): Observable {\r\n // PRE: a family registration that has edited addresses\r\n // POST: saves the family registration addresses to the server\r\n return this.http.post(System.apiURL.Student + 'SaveRegisterParentAddress', familyRegistration);\r\n }\r\n\r\n getFamilyRegistrationStudents(): Observable {\r\n // POST: obtains the starting data for a family registration student\r\n return this.http.get(System.apiURL.Student + 'GetFamilyRegistrationStudent');\r\n }\r\n\r\n studentAlreadyExists(students: FamilyRegistrationStudent[]): Observable {\r\n // POST: returns a list of names indicating the duplicate students\r\n return this.http.post(System.apiURL.Student + 'StudentAlreadyExist', students);\r\n }\r\n\r\n saveFamilyRegistrationStudents(students: FamilyRegistrationStudent[]): Observable {\r\n // PRE: a set of family students\r\n // POST: saves the students to the server\r\n const queryString = '?ayIdentifier=' + this.householdParent.AyIdentifier;\r\n return this.http.post(System.apiURL.Student + 'SaveFamilyRegistrationStudent' + queryString, students);\r\n }\r\n\r\n CheckExistingEmail(emailAddress: string): Observable {\r\n const data = [emailAddress];\r\n return this.http.post(System.apiURL.Student + 'CheckExistingEmail', data);\r\n }\r\n}\r\n","

Re-Enroll Students into {{selectedYear.Description}}

\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Student\r\n \r\n {{ss.StudentName}}\r\n \r\n \r\n \r\n Grade Level into which Student will be Enrolling\r\n \r\n \r\n \r\n \r\n {{gl.Code}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Previous Enrollment
GradeSchoolWithdrawn
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ss.GradeLevel}}\r\n {{ss.SchoolDescription}}\r\n {{ss.WithdrawalDate | date: 'MM/dd/yy'}}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n","import { Component, OnInit, Inject, ElementRef } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { Lookup } from '../../lookup/lookup.model';\r\nimport { LookupService } from '../../lookup/lookup.service';\r\nimport { SharedService } from '../../shared.service';\r\nimport { Enrollment } from '../../student/enrollment.model';\r\nimport { UserService } from '../../user/user.service';\r\nimport { User } from '../../user/user.model';\r\nimport { TylerMatTableDataSource } from '../../angular-material/extended.class';\r\nimport { StudentService } from '../../student/student.service';\r\nimport { YearService } from '../../year/year.service';\r\nimport { Student } from '../../student/student.model';\r\nimport { ErrorList } from '../../controls/error-prompt/error-list.model';\r\nimport { OnlineRegistrationService } from '../../../student360/online-registration/online-registration.service';\r\nimport { Year } from '../../year/year.model';\r\n\r\n@Component({\r\n selector: 'app-re-enroll-students',\r\n templateUrl: './re-enroll-students.component.html',\r\n styleUrls: ['./re-enroll-students.component.css']\r\n})\r\nexport class ReEnrollStudentsComponent implements OnInit {\r\n\r\n yearId: number;\r\n familyId: number;\r\n selectedYear: Year;\r\n columnToDisplay: string[] = ['Checked', 'Student', 'GradeLevel', 'Previous Enrollment'];\r\n // columnToDisplay: string[] = ['Student', 'GradeLevel'];\r\n gradeLevels: Lookup[];\r\n students: Enrollment[];\r\n currentUser: User;\r\n angularMatDataStudents = new TylerMatTableDataSource();\r\n allStudentsSelected = false;\r\n errors: ErrorList[] = [];\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogRef: MatDialogRef,\r\n private lookupService: LookupService,\r\n private sharedService: SharedService,\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private onlineRegistrationService: OnlineRegistrationService) { }\r\n\r\n ngOnInit() {\r\n this.currentUser = this.userService.currentUser;\r\n this.yearId = this.data.yearId;\r\n this.familyId = this.data.familyId;\r\n this.selectedYear = this.data.selectedYear;\r\n\r\n this.lookupService.getGradeLevelLookup(true, this.yearId).subscribe(result => {\r\n this.gradeLevels = result;\r\n });\r\n\r\n this.sharedService.getReEnrollStudentsList(this.yearId, this.familyId, 0).subscribe(students => {\r\n students.forEach(element => {\r\n element.EnrollmentGradeLevel = '';\r\n });\r\n this.students = students;\r\n this.angularMatDataStudents.data = this.students;\r\n });\r\n }\r\n\r\n modalInstanceCancelClick() {\r\n this.dialogRef.close('Cancel');\r\n }\r\n\r\n modalInstanceContinueClick() {\r\n this.validateStudents();\r\n if (this.errors.length == 0) {\r\n let studentIds = '';\r\n let gradeLevelIds = '';\r\n this.students.forEach(element => {\r\n if (element.Selected == true) {\r\n studentIds = studentIds == '' ? element.StudentId.toString() : (studentIds + ',' + element.StudentId.toString());\r\n gradeLevelIds = gradeLevelIds == '' ? element.EnrollmentGradeLevel.toString() : (gradeLevelIds + ',' + element.EnrollmentGradeLevel.toString());\r\n }\r\n });\r\n\r\n this.sharedService.markStudentsAsNew(this.yearId, this.familyId, studentIds, gradeLevelIds).subscribe(result => {\r\n this.studentService.getParentAssignedStudents(this.userService.userId, this.yearService.defaultYear.Id, this.userService.currentUser.UserType).subscribe((students: Student[]) => {\r\n this.studentService.selectedStudent = students.find(x => x.Id == this.studentService.selectedStudent.Id);\r\n this.studentService.updateStudents(students);\r\n });\r\n this.yearService.student360Year = this.selectedYear;\r\n this.onlineRegistrationService.ORYear = this.selectedYear;\r\n this.onlineRegistrationService.familyId = this.familyId;\r\n this.onlineRegistrationService.parentType = this.students[0].IsPrimaryParent == false ? 'Nonresident Parent' : '';\r\n this.dialogRef.close('Close');\r\n });\r\n }\r\n }\r\n\r\n selectAll() {\r\n if (this.allStudentsSelected) {\r\n this.angularMatDataStudents.data.forEach(student => {\r\n student.Selected = true;\r\n });\r\n }\r\n else {\r\n this.angularMatDataStudents.data.forEach(student => {\r\n student.Selected = false;\r\n });\r\n }\r\n }\r\n\r\n studentSelect() {\r\n this.allStudentsSelected = this.angularMatDataStudents.data.filter(x => x.Selected == true).length == this.angularMatDataStudents.data.length;\r\n }\r\n\r\n validateStudents() {\r\n this.errors = [];\r\n let element: ElementRef;\r\n if (this.students.filter(x => x.Selected == true).length == 0) {\r\n this.errors.push({\r\n fieldName: null,\r\n fieldRef: null,\r\n errorMsg: 'At least one student must be selected.'\r\n });\r\n }\r\n\r\n for (let i = 0; i < this.students.length; i++) {\r\n if (this.students[i].Selected == true && (this.students[i].EnrollmentGradeLevel == '0' || this.students[i].EnrollmentGradeLevel == '')) {\r\n element = new ElementRef(document.getElementById('selectedGradeLevel' + this.students[i].StudentId));\r\n // $('#selectTylerFormField' + this.students[i].StudentId).css('border', 'thin solid red');\r\n this.students[i].EnrollmentGradeLevel = '0';\r\n this.errors.push({\r\n fieldName: 'Grade',\r\n fieldRef: element,\r\n errorMsg: 'Required for selected students'\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n}\r\n","\r\n
\r\n\tNew Family Registration\r\n
\r\n
\r\n\tRe-Enroll Students\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t 1\">\r\n\t\t
For which year do you want to register students?
\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
Re-enrollment is currently available for the following years.
\r\n\t\t
\r\n\t\t
For which year do you want to re-enroll students?
\r\n\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\t
Students registered using this process will be registered in the\r\n\t\t\tschool year currently in progress: {{defaultYear.Description}}.
\r\n\t\t
\r\n\t\t\t
Students registered using this process will be registered in the
\r\n\t\t\t
{{defaultYear.Description}} 
\r\n\t\t\t
school year.
\r\n\t\t
Students registered using this process will\r\n\t\t\tbe registered in the upcoming {{defaultYear.Description}} school year, which begins on\r\n\t\t\t{{defaultYear.ORStartDate|date:'MM/dd/yy'}}.
\r\n\t
\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\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { FamilyRegistrationYear } from './../family-registration-year.model';\r\nimport { Component, OnInit, ElementRef, Inject } from '@angular/core';\r\nimport { FamilyRegistrationService } from '../family-registration.service';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { ReEnrollStudentsComponent } from '../../../shared-components/student-header/re-enroll-students/re-enroll-students.component';\r\n\r\n@Component({\r\n\tselector: 'app-new-family-registration-year-selection',\r\n\ttemplateUrl: './new-family-registration-year-selection.component.html',\r\n\tstyleUrls: [\r\n\t\t'./new-family-registration-year-selection.component.css',\r\n\t\t'../familiy-registration-shared-style.css'\r\n\t]\r\n})\r\nexport class NewFamilyRegistrationYearSelectionComponent implements OnInit {\r\n\tyears: FamilyRegistrationYear[];\r\n\tids: string[] = [];\r\n\tlabels: string[] = [];\r\n\tpublic errorList: ErrorList[] = [];\r\n\tLoginSettings: LoginSettings;\r\n\tdefaultYear: FamilyRegistrationYear;\r\n\tV10: boolean;\r\n\treEnrollStudent = false;\r\n\r\n\tconstructor(\r\n\t @Inject(MAT_DIALOG_DATA) private data: any,\r\n\t\tprivate familyRegistrationService: FamilyRegistrationService,\r\n\t\tprivate loginService: LoginService,\r\n\t\tprivate dialogRef: MatDialogRef,\r\n\t\tprivate router: Router,\r\n private dialog: MatDialog,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tif (this.data != undefined) {\r\n\t\t\tthis.reEnrollStudent = this.data.reEnrollStudent;\r\n\t\t}\r\n\t\tthis.V10 = this.loginService.LoginSettings.V10;\r\n\t\tthis.LoginSettings = this.loginService.LoginSettings;\r\n\t\tthis.defaultYear = this.familyRegistrationService.defaultYear;\r\n\t\tif (this.reEnrollStudent) {\r\n\t\t\tthis.years = this.data.years;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.years = this.familyRegistrationService.years;\r\n\t\t}\r\n\t\tfor (let i = 0; i < this.years.length; i++) {\r\n\t\t\tthis.ids.push('yearRadio' + i);\r\n\t\t\tlet yearLabel = '';\r\n\t\t\tif (this.V10) {\r\n\t\t\t\tif (this.years[i].Status == 1) {\r\n\t\t\t\t\tyearLabel += 'The current school year ';\r\n\t\t\t\t}\r\n\t\t\t\tif (this.years[i].Status == 2) {\r\n\t\t\t\t\tyearLabel += 'The upcoming school year ';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tyearLabel += this.years[i].Description;\r\n\t\t\tthis.labels.push(yearLabel);\r\n\t\t}\r\n\t}\r\n\r\n\tmodalInstanceOKClick() {\r\n\t\tthis.dialogRef.close('OK was clicked.');\r\n\t\tthis.familyRegistrationService.saveRegisterParent(this.familyRegistrationService.householdParent).subscribe(\r\n\t\t\t() => {\r\n\t\t\t\tthis.router.navigateByUrl('/familyregistration/householdparent');\r\n\t\t\t});\r\n\t}\r\n\r\n\tmodalInstanceNextClick() {\r\n\t\tif (this.validate() && this.reEnrollStudent) {\r\n\t\t\tconst dialogBox = this.dialog.open(ReEnrollStudentsComponent,\r\n {\r\n disableClose: true,\r\n width: '65vw',\r\n height: '58vh',\r\n data: {\r\n yearId: this.defaultYear.Id,\r\n\t\t\t\t\t\tfamilyId: this.data.familyId,\r\n\t\t\t\t\t\tselectedYear: this.defaultYear\r\n }\r\n });\r\n \r\n const subscription = dialogBox.afterClosed().subscribe(result => {\r\n if (result == 'Close') {\r\n\t\t\t\t\tthis.router.navigateByUrl('/student360/onlineRegistration');\r\n\t\t\t\t\tthis.dialogRef.close('OK was clicked.');\r\n\t\t\t\t}\r\n\t\t\t\telse if (result == 'Cancel') {\r\n\t\t\t\t\tthis.dialogRef.close('OK was clicked.');\r\n\t\t\t\t}\r\n });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.validate()) {\r\n\t\t\t\tthis.dialogRef.close('Next was clicked.');\r\n\t\t\t\tthis.familyRegistrationService.defaultYear = this.defaultYear;\r\n\t\t\t\tthis.familyRegistrationService.householdParent.YearId = this.familyRegistrationService.defaultYear.Id;\r\n\t\t\t\tthis.familyRegistrationService.householdParent.AyIdentifier = this.loginService.LoginSettings.V10 ? this.familyRegistrationService.defaultYear.AYIdentifier : this.familyRegistrationService.defaultYear.Description;\r\n\t\t\t\tthis.familyRegistrationService.saveRegisterParent(this.familyRegistrationService.householdParent).subscribe(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.router.navigateByUrl('/familyregistration/householdparent');\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(): boolean {\r\n\t\tthis.errorList = [];\r\n\t\tif (!this.defaultYear || this.defaultYear.Id == undefined) {\r\n\t\t\tlet htmlElement: Element = document.getElementById(this.ids[0]);\r\n\t\t\thtmlElement = htmlElement.getElementsByClassName('mat-radio-input')[0];\r\n\t\t\tconst element = new ElementRef(htmlElement);\r\n\t\t\tthis.errorList.push({\r\n\t\t\t\tfieldName: 'Year',\r\n\t\t\t\tfieldRef: element,\r\n\t\t\t\terrorMsg: 'Select Year'\r\n\t\t\t});\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tmodalInstanceCancelClick() {\r\n\t\tthis.dialogRef.close('Cancel was clicked.');\r\n\t}\r\n\r\n\r\n}\r\n","export class LoginSettings {\r\n Id: number;\r\n DistrictLogo: number[];\r\n CountryCode: string;\r\n AttemptsAllowed: number;\r\n FreezeTime: number;\r\n EnablePasswordComplexity: boolean;\r\n MinimumLength: number;\r\n PasswordExpirationInterval: number;\r\n PreventPasswordReuse: boolean;\r\n PreventEqualPassUserName: boolean;\r\n PasswordRequiresUpper: boolean;\r\n PasswordRequiresNumeric: boolean;\r\n PasswordRequiresSpecial: boolean;\r\n DisplayDistrictNameOnLoginPage: number;\r\n DisplayClassMeetsOnStudentScheduleCard: boolean;\r\n DisplayForgotUserName: boolean;\r\n DisplayForgotPassword: boolean;\r\n DisplaySeparateUserTypes: boolean;\r\n ParentPortalDisciplineShowComments: boolean;\r\n ParentPortalCourseScheduleProfiles: boolean;\r\n ParentPortalAssignmentsDisplayProfiles: boolean;\r\n ParentPortalAssignmentsShowEffectiveScore: boolean;\r\n ParentPortalAssignmentsShowGradeColumn: boolean;\r\n ParentPortalAttendanceCommentsByPeriod: boolean;\r\n ParentPortalStudentSubjectDelStatus: boolean;\r\n ParentPortalNotificationSettingsByStudent: boolean;\r\n ParentPortalNotificationSettingsSelectFrequency: boolean;\r\n ParentPortalHealthShowMedicineFrequency: boolean;\r\n ParentPortalHealthShowDoctorAddress: boolean;\r\n ParentPortalHealthShowDoctorEmail: boolean;\r\n ParentPortalReportCardGradesShowCitizenship: boolean;\r\n StudentUserNameLabel: string;\r\n NumberOfFailedAttemptsPriorToLockout: number;\r\n DistrictName: string;\r\n DistrictSpanishName: string;\r\n DistrictFrenchName: string;\r\n DistrictURL: string;\r\n DistrictLoginMessage: string;\r\n LoginAssistMessage: string;\r\n TimeoutTime: number;\r\n DisplayCustodyIssue: boolean;\r\n DisplayBus: boolean;\r\n DisplayReportCardTranscriptOnHold: boolean;\r\n DisplayEmergencyPhoneNumberInGrid: boolean;\r\n DisplayIsGuardian: boolean;\r\n DisplayCanPickup: boolean;\r\n DisplayHasCustody: boolean;\r\n ParentPortalORShowAttachments: boolean;\r\n ParentPortalORv10Data: boolean;\r\n ParentPortalORCustomFormWidth: number;\r\n ParentPortalUHDv10Data: boolean;\r\n ParentPortalCourseRequestsShowRequirements: boolean;\r\n ParentPortalShowStudentTeams: boolean;\r\n ParentPortalAssessmentsShowBestOf: boolean;\r\n ParentPortalShowMonthlyLunchMeal: boolean;\r\n DisplayChangeEmailAddress: boolean;\r\n PasswordCaseSensitive: boolean;\r\n DisplayProgressGradesCheckBox: boolean;\r\n ParentPortalShowAttendExcessiveTab: boolean;\r\n ParentPortalShowAttendSpecialTab: boolean;\r\n Student360StaffLoginChangeUserName: boolean;\r\n MinimumPasswordLength: number;\r\n PasswordRequiresMixedLettersAndNumbers: boolean;\r\n Student360StaffPasswordCaseSensitive: boolean;\r\n Classroom360AttendanceDateAllowEditing: boolean;\r\n Classroom360AttendanceAllowMerging: boolean;\r\n Classroom360AttendanceSeatingChartView: boolean;\r\n Classroom360AttendanceLunchCountAdults: boolean;\r\n Classroom360AttendanceAllPeriods: boolean;\r\n Classroom360AttendancePerfectOverwrites: boolean;\r\n Classroom360AttendanceCommentsEditable: boolean;\r\n Classroom360AttendanceShowTardyTime: boolean;\r\n OneSISVersion: string;\r\n MyClassesShowView: boolean;\r\n ParentPortalShowParentTab: boolean;\r\n ParentPortalShowStudentTab: boolean;\r\n ParentPortalShowOnlinePayment: boolean;\r\n ParentPortalShowParentStudentLinks: boolean;\r\n C360ShowCommunicationLog: boolean;\r\n ActivateStudent360: boolean;\r\n ActivateClassroom360: boolean;\r\n StaffUserUseADPassword: boolean;\r\n StudentUserUseADPassword: boolean;\r\n ActiveDirectoryAgentURL: string;\r\n C360GradebookGradingPeriod: boolean;\r\n C360GradebookAllowMerging: boolean;\r\n C360GradebookUnits: boolean;\r\n C360GradebookAllowCategoryEditing: boolean;\r\n C360GradebookCourseSpecificCategories: boolean;\r\n C360GradebookUseCategoryCodes: boolean;\r\n C360GradebookAssignmentsLongSummary: boolean;\r\n C360GradebookAssignmentsGPSpecific: boolean;\r\n C360GradebookUseStandards: boolean;\r\n C360GradebookRequireDateAssigned: boolean;\r\n C360GradebookLimitTo100: boolean;\r\n C360GradebookWeightIsPercent: boolean;\r\n C360GradebookAssignmentForSelectedStudents: boolean;\r\n C360GradebookExcludeAssignmentsFromCalculations: boolean;\r\n C360GradebookAssignmentAttachmentDescriptions: boolean;\r\n C360GradebookSGGradesAsAssignments: boolean;\r\n C360GradebookUseSpecialMarks: boolean;\r\n C360GradebookSpecialGradingScaleForStudent: boolean;\r\n C360GradebookUserDefinedScorePrecision: boolean;\r\n C360GradebookModifyScoresWhenCopying: boolean;\r\n C360GradebookGradingScalesAllowNumbers: boolean;\r\n C360GradebookSpecialMarksEditable: boolean;\r\n C360GradebookAllowTeacherComments: boolean;\r\n C360GradebookSpanishComments: boolean;\r\n C360GradebookAllowCustomAssignmentComments: boolean;\r\n ShowForgotPasswordLink: boolean;\r\n TabSpecificForgotPasswordLink: boolean;\r\n ShowForgotUserNameLink: boolean;\r\n ShowLoginAssistanceInfo: boolean;\r\n V10: boolean;\r\n Classroom360AttendanceChangeAll: boolean;\r\n C360DisciplineReferralsv10PBIS: boolean;\r\n C360DisciplineReferralsv10PBISClassroom: boolean;\r\n AllowStudentsToChangeTheirPassword: boolean;\r\n LegacyURL: string;\r\n RedirectTeachersTo360: boolean;\r\n UseUnifiedLoginPage: boolean;\r\n AllowNewFamiliesToSelfRegister: boolean;\r\n AllowExistingFamiliesToAddNewStudentsInOR: boolean;\r\n AllowExistingFamiliesToAddNewStudentsInUHHD: boolean;\r\n S360HealthShowScreenings: boolean;\r\n S360DisplayImmunizations: boolean;\r\n S360DisplayMedications: boolean;\r\n S360DisplayHealthVisitLog: boolean;\r\n S360DisplayDoctors: boolean;\r\n S360DisplayInsurane: boolean;\r\n S360DisplayScreenings: boolean;\r\n AllowParentStudentEmail: boolean;\r\n InstanceName: string;\r\n DisplayFullBulletins: boolean;\r\n UseDisciplineEventModel: boolean;\r\n C360DataQueryAllowEditing: boolean;\r\n AddReferralsForAllStudents: boolean;\r\n UsernamePasswordRequestEmail: string;\r\n UsernamePasswordRequestPhone: string;\r\n MassEmailContactsGrouped: boolean;\r\n DefaultEmailReplyToAddress: string;\r\n UtilizeDistributebyEmail: boolean;\r\n TeachersMustMarkAttendanceForProjectedStudent: boolean;\r\n PresentAttendanceCode: string;\r\n ImportGradeBookFromCanvas: boolean;\r\n ScoreStandardsByAssignment: boolean;\r\n LegacyVersion: string;\r\n ReportsVersion: string;\r\n StudentNotes: boolean;\r\n AllowSpanishLanguageMailings: boolean;\r\n DisableAllEmail: boolean;\r\n AllowAutoRunReport: boolean;\r\n MaxReportSnapshotAllowed: number;\r\n EnablePulseSSO: boolean;\r\n PulseURL: string;\r\n DisplayGoogleClassroom: boolean;\r\n TraversaEnabled: boolean;\r\n VersatransEnabled: boolean;\r\n AllowGALDSStudentPortal: boolean;\r\n AllowGALDSParentPortal: boolean;\r\n GALDSServiceURL: string;\r\n DisplaySchoology: boolean;\r\n ShowTraversaBusNumber: boolean;\r\n ShowTraversaBusRoute: boolean;\r\n ActivateDisciplineTeams: boolean;\r\n TryNewApplication: boolean;\r\n State: string;\r\n ReportDefinitionsOption: number;\r\n AllowArchiveReportPDF: boolean;\r\n UtilizeTranscriptTracking: boolean;\r\n BlockClassroom360: boolean;\r\n AllowFutureFeeBillingPayments: boolean;\r\n ActivateApplicationMonitoring: boolean;\r\n EFormUseRoles: boolean;\r\n EFormNonResident: boolean;\r\n ActivateBehavior360: boolean;\r\n ActivateEForms: boolean;\r\n MailServer: string;\r\n GoogleAuthentication: boolean;\r\n GoogleClientId: string;\r\n DisplayItsLearning: boolean;\r\n SDMIntegration: boolean;\r\n ActivateBroadcast: boolean;\r\n BroadcastInterval: number;\r\n ForceNewApplication: boolean;\r\n ForceNewApplicationPS: boolean;\r\n CreateServiceActivityForHonorRoll: boolean;\r\n HonorRollProgramID: number;\r\n ViewDailyAttendance: boolean;\r\n CreditDecimalPlaces: number;\r\n ActivateGoogleAuthenticationForStaff: boolean;\r\n ActivateGoogleAuthenticationForStudent: boolean;\r\n CustomizationDevMode: boolean;\r\n ActivateRegistrationEnrollment360: boolean;\r\n ActivateAttendanceAdministration360: boolean;\r\n ActivateNotificationFramework360: boolean;\r\n ActivateGlobalSearch360: boolean;\r\n S360HideAttendanceComments: boolean;\r\n BehaviorLetterDocumentType: string;\r\n ActivateEFormsPremium: boolean;\r\n ActivateAcademicHistory360: boolean;\r\n ActivateProgramAndService360: boolean;\r\n ActivateFeesAndBilling: boolean;\r\n EnableDataDefinitions: boolean;\r\n EnableCustomizationFramework: boolean;\r\n CombineGoalsAndObjectives: boolean;\r\n C360CustomFieldsImported: boolean;\r\n ForceTeachersDate: Date;\r\n UseSection504: boolean;\r\n EnableSelfRegistrationCode: boolean;\r\n ClassicIsGone: boolean;\r\n ViewDocumentBeforeApproval: boolean;\r\n AllowCopy: boolean;\r\n AllowCopyToCreateAmendedDocument: boolean;\r\n AllowCopyToCreateAnnualDocument: boolean;\r\n AllowSpEdAssessment: boolean;\r\n AllowCheckInOutSpEdForms: boolean;\r\n AllowCopyToCreateBothDocument: boolean;\r\n AllowPrintWithoutWorkingDraft: boolean;\r\n ShowParentInformation: boolean;\r\n ShowIEPInformation: boolean;\r\n ShowEvalInformation: boolean;\r\n ShowReferralInformation: boolean;\r\n ForceSDMADMINAudit: boolean;\r\n EnableMergeSectionsForAttendance: boolean;\r\n ActivateKendoGridInMasterSchedule360: boolean;\r\n EnableFreeReducedMealApp: boolean;\r\n EnableGoogleIdentityServices: boolean;\r\n}\r\n","import { AbstractControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { LoginSettings } from '../loginSetting.model';\r\nimport { User } from '../../../shared-components/user/user.model';\r\nimport { System } from '../../../shared-components/System';\r\n\r\nexport function validateCurrentPassword(currentPass: string, loginSettings: LoginSettings, user?: User): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n if (control.value != null) {\r\n if (control.value != currentPass) {\r\n if (control.value.toLowerCase() !== currentPass.toLowerCase() || (user.UserType == 1 && loginSettings.Student360StaffPasswordCaseSensitive == true) || loginSettings.PasswordCaseSensitive == true) {\r\n return { 'invalidCurrentPassword': true };\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\nexport function validateCurrentPasswordV9(currentPass: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n if (control.value !== undefined && control.value !== null && control.value !== currentPass) {\r\n return { 'invalidCurrentPassword': true };\r\n }\r\n return null;\r\n };\r\n}\r\nexport const passwordsMatch: ValidatorFn = (control: FormGroup): ValidationErrors | null => {\r\n const newPassword = control.get('newPassword');\r\n const repeatNewPassword = control.get('repeatNewPassword');\r\n if (newPassword.value !== repeatNewPassword.value) {\r\n return { 'passwordsMustMatch': true };\r\n }\r\n return null;\r\n};\r\n\r\nexport function passwordsMatchForChangePassword(loginSettings: LoginSettings, user?: User): ValidatorFn {\r\n return (control: FormGroup): ValidationErrors | null => {\r\n const newPassword = control.get('newPassword');\r\n const repeatNewPassword = control.get('repeatNewPassword');\r\n if (newPassword.value && repeatNewPassword.value) {\r\n if (newPassword.value !== repeatNewPassword.value) {\r\n if (!loginSettings.V10) {\r\n if ((user.UserType == 1 && loginSettings.Student360StaffPasswordCaseSensitive == true) || loginSettings.PasswordCaseSensitive == true || newPassword.value.toLowerCase() !== repeatNewPassword.value.toLowerCase()) {\r\n return { 'passwordsMustMatch': true };\r\n }\r\n }\r\n else {\r\n return { 'passwordsMustMatch': true };\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function requiresUpperCase(loginSettings: LoginSettings): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n const regexp = new RegExp('(?=.*[A-Z])');\r\n if (control.value !== undefined && !regexp.test(control.value) && loginSettings.V10 == true && loginSettings.PasswordRequiresUpper == true) {\r\n return { 'mustContainUpperCase': true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function isValidEmail(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n const regexp = System.mailRegexp;\r\n if (control.value !== undefined && !regexp.test(control.value)) {\r\n return { 'notValidEmail': true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function requiresNumeric(loginSettings: LoginSettings): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n const regexp = new RegExp('(?=.*[0-9])');\r\n if (control.value !== undefined && !regexp.test(control.value) && loginSettings.V10 == true && loginSettings.PasswordRequiresNumeric == true) {\r\n return { 'mustContainNumeric': true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function requiresSpecial(loginSettings: LoginSettings): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n const regexp = new RegExp('(?=.*[^a-zA-Z0-9+])');\r\n if (control.value !== undefined && !regexp.test(control.value) && loginSettings.V10 == true && loginSettings.PasswordRequiresSpecial == true) {\r\n return { 'mustContainSpecial': true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function mustBeDifferent(user: User, loginSettings: LoginSettings): ValidatorFn {\r\n const currentPassword = user.Password;\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n if (loginSettings.V10 && control.value !== undefined && control.value == currentPassword) {\r\n return { 'mustBeDifferent': true };\r\n }\r\n\r\n if (!loginSettings.V10 && control.value !== undefined) {\r\n if (user.UserType == 1 && loginSettings.Student360StaffPasswordCaseSensitive == true && control.value == currentPassword) {\r\n return { 'mustBeDifferent': true };\r\n }\r\n else if (user.UserType == 1 && loginSettings.Student360StaffPasswordCaseSensitive == false && control.value && control.value.toLowerCase() === currentPassword.toLowerCase()) {\r\n return { 'mustBeDifferent': true };\r\n }\r\n else if (control.value && control.value.toLowerCase() === currentPassword.toLowerCase()) {\r\n return { 'mustBeDifferent': true };\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function notSameAsUsername(user: User, loginSettings: LoginSettings): ValidatorFn {\r\n const userName = user.UserName;\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n if (control.value !== undefined && control.value == userName && loginSettings.PreventEqualPassUserName) {\r\n return { 'notSameAsUsername': true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function requiresMixedLettersNumbers(loginSettings: LoginSettings, user?: User): ValidatorFn {\r\n const passwordFormat = /^(?=.*\\d)(?=.*[A-Za-z])[0-9a-zA-Z_@./#!$%^&*+-]*$/;\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n const value = control.value;\r\n if ((control.value !== undefined && control.value !== null) && !value.match(passwordFormat) && !loginSettings.V10 && (user ? user.UserType == 1 : true) && loginSettings.PasswordRequiresMixedLettersAndNumbers) {\r\n return { 'requiresMixedLettersNumbers': true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function preventPasswordReuse(loginSettings: LoginSettings, user: User): ValidatorFn {\r\n const previousPasswords = user.ExpiredPasswords;\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n if (control.value !== undefined && loginSettings.PreventPasswordReuse && previousPasswords.indexOf(control.value) > -1) {\r\n return { 'preventPasswordReuse': true };\r\n }\r\n return null;\r\n };\r\n}\r\n","import { System } from './../../shared-components/System';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSettings } from './LoginSetting.model';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { AccessHistory } from '../../classroom360/system-settings/system-settings-v9/upgrade-access-history/access-history-sub-tab/access-history-sub-tab.model';\r\n\r\n@Injectable()\r\nexport class LoginService {\r\n\r\n public LoginSettings: LoginSettings;\r\n public googleError: string = '';\r\n public hasSignedIntoGoogle = false;\r\n public isLogin: boolean;\r\n\r\n observableLogin = new Subject();\r\n observableLoginStream$ = this.observableLogin.asObservable();\r\n\r\n observableLoginError = new Subject();\r\n observableLoginErrorStream$ = this.observableLoginError.asObservable();\r\n\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getDistrictSettings(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetLoginDistrictSettings');\r\n }\r\n\r\n saveDistrictSettings(schoolId: number, yearId: number, settings: LoginSettings): Observable {\r\n const queryString = '?schoolId=' + schoolId +\r\n '&yearId=' + yearId;\r\n return this.http.post(System.apiURL.Student + 'SaveLoginDistrictSettings' + queryString, settings);\r\n }\r\n\r\n logon(userName: string, password: string, userType = 1): Observable {\r\n const data = 'grant_type=password&username=' + encodeURIComponent(userName) + '&password=' + encodeURIComponent(password) + '&scope=' + userType;\r\n return this.http.post(System.tokenURL, data);\r\n }\r\n\r\n logonGoogle(idToken: string, userType: number, grantType: string): Observable {\r\n const data = 'grant_type=' + grantType +\r\n '&idToken=' + encodeURIComponent(idToken) +\r\n '&userType=' + userType;\r\n return this.http.post(System.tokenURL, data);\r\n }\r\n\r\n getUser(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetUser');\r\n }\r\n\r\n getForgetPasswordDetail(params: string[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetForgetPasswordDetail', params);\r\n }\r\n\r\n getRegisterParent(id: number): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetRegisterParent?id=' + id);\r\n }\r\n\r\n getRegisterParentInfo(parentEmail: string, verificationCode: string): Observable {\r\n let queryString = '';\r\n queryString += '?parentEmail=' + encodeURIComponent(parentEmail) +\r\n '&verificationCode=' + verificationCode;\r\n return this.http.get(System.apiURL.Student + 'GetRegisterParentInfo' + queryString);\r\n }\r\n\r\n\r\n getUserDefaultSchoolYearIsBlocked(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetUserDefaultSchoolYearIsBlocked');\r\n }\r\n\r\n saveUserLoginInfo(userId: number, userType: number, height: number, width: number, loginAction: number, loginName: string): void {\r\n this.getClientInformation().subscribe((clientInfo) => {\r\n const userAgent = window.navigator.userAgent\r\n\r\n let queryString = '';\r\n queryString += '?userId=' + userId +\r\n '&userType=' + userType +\r\n '&clientIP=' + clientInfo[0] +\r\n '&clientMachineName=' + clientInfo[1] +\r\n '&serverIP=' + clientInfo[2] +\r\n '&screenHeight=' + height +\r\n '&screenWidth=' + width +\r\n '&loginAction=' + loginAction +\r\n '&loginName=' + loginName +\r\n '&userAgent=' + userAgent;\r\n\r\n this.http.get(System.apiURL.Student + 'SaveUserLoginInfo' + queryString).subscribe();\r\n });\r\n }\r\n\r\n getClientInformation(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetClientInformation');\r\n }\r\n\r\n sendForgetUserNameEmail(firstName: string, lastName: string, emailAddress: string, userType: number): Observable {\r\n let queryString = '';\r\n queryString += '?firstName=' + firstName +\r\n '&lastName=' + lastName +\r\n '&emailAddress=' + emailAddress +\r\n '&userType=' + userType;\r\n return this.http.get(System.apiURL.Student + 'SendForgetUserNameEmail' + queryString);\r\n }\r\n\r\n saveForgetPassword(password: string, area: string, forgetPasswordParams: any): Observable {\r\n password = encodeURIComponent(password);\r\n return this.http.post(System.apiURL.Student + `SaveForgetPassword?password=${password}&area=${area}`, forgetPasswordParams, { observe: 'response' });\r\n }\r\n\r\n sendForgetPasswordEmail(userName: string, userType: number, setPassword: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?userName=' + userName +\r\n '&userType=' + userType +\r\n '&setPassword=' + setPassword;\r\n return this.http.get(System.apiURL.Student + 'SendForgetPasswordEmail' + queryString);\r\n }\r\n\r\n getStaffIdByUserId(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetStaffIdByUserId');\r\n }\r\n\r\n saveTylerAccessHistory(accessHistory: AccessHistory) {\r\n return this.http.post(System.apiURL.Classroom + 'SaveTylerAccessHistory', accessHistory);\r\n }\r\n\r\n}\r\n","import { Assignment } from '../../../../classroom360/gradebook/v9/models/assignment.model';\r\n\r\n\r\nexport class GradebookStatisticalAnalysisReport {\r\n SiteSectionId: number;\r\n DistrictSubjectId: number;\r\n TermDescription: string;\r\n Course: string;\r\n StartPeriod: number;\r\n SubjectTitle: string;\r\n TeacherName: string;\r\n RoomNumber: string;\r\n StudentCount: number;\r\n Selected = false;\r\n }\r\n\r\n export class ReportParameters {\r\n AssignmentSelection = 1;\r\n EnrolmentStatus = 0;\r\n AddressWindowEnvelop = true;\r\n PrintGradeForIndevedual = true;\r\n GroupByAssignmentType = true;\r\n ShowAssignmentDate = true;\r\n AverageMean = true;\r\n Marks = 1.0;\r\n chMarks = true;\r\n PrintDate: Date;\r\n Percentage = 1.0;\r\n chkPercentage = true;\r\n chkTerm = true;\r\n TermAndSem = true;\r\n PrintNameColumnOnly: boolean;\r\n PrintGridLines: boolean;\r\n BlankRowBetweenStudent: boolean;\r\n OnlyTotalsAndTermCols: boolean;\r\n PrintAssignmentNotes: boolean;\r\n BlankColAtEnd: boolean;\r\n ShowStudentsComments: boolean;\r\n ParentSinatureLines: boolean;\r\n Progress: boolean;\r\n TermQtr: boolean;\r\n ShowAssignmentNumber: boolean;\r\n Semester: boolean;\r\n StandardDeviation: boolean;\r\n MaxMinScore: boolean;\r\n Median: boolean;\r\n DroppedStudents: boolean;\r\n HideNameBy: boolean;\r\n AlsoSortByThisId: boolean;\r\n HideAndSortBy: number;\r\n Footer: boolean;\r\n BlankColBetweenAssignments: boolean;\r\n FooterMessage: string;\r\n ddlPercentage: string[] = ['=', '>', '<'];\r\n SortByID: boolean;\r\n SelectAssignment: string;\r\n classSelectionPage: boolean;\r\n SiteSectionIds: string = null;\r\n Title: string;\r\n Term: string;\r\n Teacher: string;\r\n Section: string;\r\n Period: number;\r\n siteSectionHeader: string;\r\n SelectClasses: string;\r\n SelectStudents: string;\r\n RangeScores: string;\r\n RangeFrom: number;\r\n RangeTo: number;\r\n ShowAYPGroups: boolean;\r\n ReportType: number;\r\n Listing: number;\r\n ValueReported: number;\r\n GroupScore: number;\r\n Labels: number;\r\n HorizantalValue: number;\r\n ShowLabels: boolean;\r\n ScoreRange: boolean;\r\n SpecificAssignments: Assignment[] = [];\r\n SpecificAssignment: Assignment;\r\n AssignmentTypes: GradeBookAssignmentTypeBySiteSectionIds[] = [];\r\n AssignmentType: GradeBookAssignmentTypeBySiteSectionIds;\r\n IsViewGradebookForAllTeacher: boolean;\r\n StatisticalAnalysisRetports: GradebookStatisticalAnalysisReport[] = [];\r\n ReportTitle: string;\r\n}\r\n\r\nexport class StatisticalAnalysisReportPreferences {\r\n pub_bytReportType: number;\r\n pub_bytListing: number;\r\n pub_bytValueReported: number;\r\n pub_bytLabels: number;\r\n pub_bytHorizantalValue: number;\r\n pub_bytselectedStudent: number;\r\n pub_blnShowAyp: boolean;\r\n pub_blnSelectRange: boolean;\r\n pub_blnSelectedAssignment: boolean;\r\n pub_blnRangeUse: boolean;\r\n pub_blnOverrideLineTo: boolean;\r\n pub_strOverrideLineToHeader: string;\r\n pub_strRangeFrom: string;\r\n pub_strRangeTo: string;\r\n pub_strSiteSectionIds: string;\r\n pub_blnAllClasses: boolean;\r\n pub_intScoreUseIndex: number;\r\n pub_intAssignmentTypeId: number;\r\n pub_intAssignmentSequence: number;\r\n pub_intGroupByInterval: number;\r\n pub_intSelectedAssignmentIndex: number;\r\n pub_intTeacherId: number;\r\n pub_intDistrictSubjectId: number;\r\n pub_blnShowLabels: boolean;\r\n }\r\n\r\n export class GradeBookAssignmentTypeBySiteSectionIds {\r\n Id: string;\r\n Code: string;\r\n CodeDescription: string;\r\n Default: boolean;\r\n Sequence: number;\r\n State: string;\r\n }\r\n\r\n export class ScoreRange {\r\n Value: number;\r\n Description: string;\r\n }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { V9ParameterRow, V9ParameterRows } from '../../models/v9-parameter-row.model';\r\n\r\n@Pipe({\r\n name: 'v9ReportParameterTabsFilter'\r\n})\r\nexport class V9ReportParameterTabsFilterPipe implements PipeTransform {\r\n\r\n transform(chunkedParameters: V9ParameterRow[], tabName: string): any {\r\n const reportparameters = new V9ParameterRows();\r\n chunkedParameters.forEach(obj => {\r\n if (obj.Parameters.filter(x => x.TabName == tabName).length > 0) {\r\n const parameterRow = new V9ParameterRow();\r\n parameterRow.IncludeLineAtEndOfGroup = obj.IncludeLineAtEndOfGroup;\r\n parameterRow.IncludeLineAtStartOfGroup = obj.IncludeLineAtStartOfGroup;\r\n const parameters = obj.Parameters.filter(x => x.TabName == tabName);\r\n parameters.forEach(element => {\r\n parameterRow.Parameters.push(element);\r\n });\r\n reportparameters.Rows.push(parameterRow);\r\n }\r\n });\r\n return reportparameters.Rows;\r\n }\r\n}\r\n","\r\n\r\n
Print and Delivery Options
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n {{parameter.Name}}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n {{parameter.Name}}\r\n \r\n\r\n \r\n
\r\n {{parameter.Name}}\r\n\r\n
\r\n \r\n {{dataItem.TextField}}\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n 1\">\r\n Multiple Selected\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{parameter.Name}}\r\n\r\n
\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n {{parameter.Name}}\r\n\r\n
\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n {{parameter.Name}}\r\n
\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n {{disCol}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{row[disCol]}}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \"Image\"\r\n
\r\n\r\n
{{parameter.Hint}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ErrorList } from '../../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { ReportV9 } from '../../../models/report-v9.model';\r\nimport { V9ParameterRow, V9ParameterRows } from '../../../models/v9-parameter-row.model';\r\nimport { V9ReportParameter } from '../../../models/v9-report-parameter.model';\r\nimport { ReportingService } from '../../../reporting.service';\r\n\r\n@Component({\r\n selector: 'app-v9-letter-report-parameters',\r\n templateUrl: './v9-letter-report-parameters.component.html',\r\n styles: []\r\n})\r\nexport class V9LetterReportParametersComponent implements OnInit {\r\n\r\n reportParameters: V9ReportParameter[] = [];\r\n chunkedParameters: V9ParameterRows;\r\n errors: ErrorList[] = [];\r\n selectedReport: ReportV9;\r\n constructor(\r\n private reportingService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private yearService: YearService,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this.data != undefined) {\r\n this.selectedReport = this.data.selectedReport;\r\n this.reportParameters = this.data.reportParameters;\r\n this.setParameterRows();\r\n }\r\n }\r\n\r\n getParameterStyle(parameter: V9ReportParameter): object {\r\n let obj: object = null;\r\n if (parameter != null && parameter.ParameterStyle != '') {\r\n obj = JSON.parse('{' + parameter.ParameterStyle + '}');\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n setParameterRows() {\r\n this.chunkedParameters = new V9ParameterRows();\r\n const reportParameter = this.reportParameters[this.reportParameters.length - 1];\r\n if (reportParameter != null) {\r\n for (let rowIndex = 0; rowIndex < reportParameter.RowNumberInTable; rowIndex++) {\r\n const parameterRow = new V9ParameterRow();\r\n let includeLineAtStartOfGroup = true;\r\n let includeLineAtEndOfGroup = true;\r\n this.reportParameters.filter(o => o.RowNumberInTable == rowIndex + 1 && o.IsLetterParameter == true).forEach(obj => {\r\n obj.Disabled = false;\r\n if (obj.DataType == 'BIT') {\r\n if (typeof (obj.Value) != 'boolean') {\r\n obj.Value = obj.Value != null && obj.Value.toUpperCase() == 'TRUE' ? true : false;\r\n }\r\n }\r\n if (obj.IncludeLineAtStartOfGroup != includeLineAtStartOfGroup) {\r\n includeLineAtStartOfGroup = false;\r\n }\r\n if (obj.IncludeLineAtEndOfGroup != includeLineAtEndOfGroup) {\r\n includeLineAtEndOfGroup = false;\r\n }\r\n if (obj.ParentId != null && obj.ParentId > 0) {\r\n const parentReportParameter = this.reportParameters.filter(o => o.Id == obj.ParentId)[0];\r\n if (parentReportParameter.ControlType == 'rbl') {\r\n const parentValue = obj.ParentValue.split(',');\r\n if (parentValue.length > 1) {\r\n if (parentValue.indexOf(parentReportParameter.Value) > -1) {\r\n obj.Disabled = false;\r\n }\r\n else {\r\n obj.Disabled = true;\r\n }\r\n obj.Disabled = obj.Disabled == false && parentReportParameter.Disabled == true ? true : obj.Disabled;\r\n }\r\n else {\r\n obj.Disabled = parentReportParameter.Disabled == true ? true : obj.ParentValue.toUpperCase() != parentReportParameter.Value.toString().toUpperCase() && obj.ParentValue != '';\r\n }\r\n\r\n const parameterParentValue = this.reportParameters.filter(x => x.Id == obj.ParentId)[0];\r\n if (parameterParentValue != undefined && parameterParentValue != null && parameterParentValue.Value == 'Journal') {\r\n this.reportParameters.filter(x => x.IsLetterParameter == true && x.ParameterName != 'blnPrimaryParentsAddress' && x.ParameterName != 'blnAlternateParentsAddress'\r\n && x.ParameterName != 'blnAlternateParAddrOnlyIfRequested' && x.ParameterName != 'strReportType' && x.ParameterName != 'bytMailingLanguage').forEach(obj => {\r\n obj.Disabled = true;\r\n if (obj.ParameterName == 'blnIncludePdfAttachment') {\r\n obj.Value = null;\r\n }\r\n if (obj.ParameterName == 'strEmailOptions') {\r\n obj.Value = 'SendEmail';\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n if (parentReportParameter != null && parentReportParameter.Value != null) {\r\n if (obj.DataSource == null && obj.ControlType == 'ddl') {\r\n // parentReportParameter.Disabled = true;\r\n }\r\n if (parentReportParameter.Disabled == true) {\r\n obj.Disabled = true;\r\n }\r\n else {\r\n if (obj.ParentValue.toUpperCase() != '') {\r\n if (obj.ParentValue.toUpperCase() != parentReportParameter.Value.toString().toUpperCase()) {\r\n obj.Disabled = true;\r\n }\r\n }\r\n }\r\n // obj.Disabled = parentReportParameter.Disabled == true ? true : obj.ParentValue.toUpperCase() != parentReportParameter.Value.toString().toUpperCase();\r\n }\r\n }\r\n }\r\n\r\n if (obj.ControlType == 'cbl') {\r\n if (obj.DataSource != null) {\r\n if (obj.DataSource.length > 0) {\r\n const variable = obj.Value.split(',');\r\n variable.forEach(ele => {\r\n obj.DataSource.forEach(element => {\r\n if (element.ValueField == ele) {\r\n element.IsSelected = true;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (obj.ControlType == 'ddcbl') {\r\n if (obj.Value != '' && obj.Value != null) {\r\n const objValue: string[] = [];\r\n const variable = obj.Value.split(',');\r\n variable.forEach(element => {\r\n objValue.push(element);\r\n });\r\n if (objValue.length > 0) {\r\n obj.Value = objValue;\r\n }\r\n }\r\n }\r\n\r\n if (obj.ControlType == 'img') {\r\n if (obj.Value != '' && obj.Value != null) {\r\n if (obj.Value['changingThisBreaksApplicationSecurity'] == undefined && obj.Value['changingThisBreaksApplicationSecurity'] == null) {\r\n obj.Value = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/png;base64, ' + obj.Value);\r\n }\r\n }\r\n }\r\n\r\n if (obj.ControlType == 'ddl') {\r\n if (obj.Value != '') {\r\n if (obj.DataSource != null) {\r\n const objDataSourceValue = obj.DataSource.filter(x => x.ValueField == obj.Value);\r\n if (objDataSourceValue.length == 0) {\r\n if (obj.DataSource != null && obj.DataSource.length > 0) {\r\n obj.Value = obj.DataSource[0].ValueField;\r\n }\r\n }\r\n }\r\n else if (obj.DataSource == null) {\r\n obj.Value = '';\r\n }\r\n }\r\n }\r\n\r\n parameterRow.Parameters.push(obj);\r\n });\r\n parameterRow.IncludeLineAtStartOfGroup = includeLineAtStartOfGroup;\r\n parameterRow.IncludeLineAtEndOfGroup = includeLineAtEndOfGroup;\r\n this.chunkedParameters.Rows.push(parameterRow);\r\n }\r\n }\r\n\r\n }\r\n\r\n parameterChanged(parameter: V9ReportParameter) {\r\n if (parameter.ControlType == 'chk') {\r\n this.reportParameters.filter(o => o.ParentId == parameter.Id).forEach(obj => {\r\n obj.Disabled = false;\r\n if (obj.ParentValue != null && parameter.Value != null) {\r\n if (obj.ParentValue.toUpperCase() != parameter.Value.toString().toUpperCase()) {\r\n obj.Disabled = true;\r\n }\r\n }\r\n this.reportParameters.filter(x => x.ParentId == obj.Id).forEach(element => {\r\n element.Disabled = obj.Disabled;\r\n });\r\n });\r\n }\r\n if (parameter.ControlType == 'rbl') {\r\n this.reportParameters.filter(o => o.ParentId == parameter.Id).forEach(obj => {\r\n obj.Disabled = false;\r\n const parentValue = obj.ParentValue.split(',');\r\n if (parentValue.length > 1) {\r\n if (parentValue.indexOf(parameter.Value) > -1 && obj.IsRequired == false) {\r\n obj.Disabled = false;\r\n }\r\n else {\r\n obj.Disabled = true;\r\n if (obj.ControlType == 'chk') {\r\n obj.Value = null;\r\n }\r\n }\r\n }\r\n else {\r\n if (obj.ParentValue != null && parameter.Value != null) {\r\n if (obj.ParentValue != parameter.Value && obj.ParentValue != '') {\r\n obj.Disabled = true;\r\n obj.Value = null;\r\n }\r\n }\r\n this.reportParameters.filter(x => x.ParentId == obj.Id).forEach(element => {\r\n if (obj.Value != null && element.ParentValue.toUpperCase() != obj.Value.toString().toUpperCase()) {\r\n element.Disabled = true;\r\n }\r\n else {\r\n if (obj.Value == null) {\r\n element.Disabled = true\r\n }\r\n else {\r\n element.Disabled = obj.Disabled;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n if (parameter.Value == 'Journal') {\r\n this.reportParameters.filter(x => x.IsLetterParameter == true && x.ParameterName != 'blnPrimaryParentsAddress' && x.ParameterName != 'blnAlternateParentsAddress'\r\n && x.ParameterName != 'blnAlternateParAddrOnlyIfRequested' && x.ParameterName != 'strReportType' && x.ParameterName != 'bytMailingLanguage').forEach(obj => {\r\n obj.Disabled = true;\r\n if (obj.ParameterName == 'blnIncludePdfAttachment') {\r\n obj.Value = null;\r\n }\r\n if (obj.ParameterName == 'strEmailOptions') {\r\n obj.Value = 'SendEmail';\r\n }\r\n });\r\n }\r\n else if (parameter.Value == 'Report' || parameter.Value == 'Letters') {\r\n this.reportParameters.filter(o => o.ParentId == parameter.Id && o.ControlType == 'rbl').forEach(obj => {\r\n this.reportParameters.filter(o => o.ParentId == obj.Id).forEach(ele => {\r\n ele.Disabled = false;\r\n const parentValues = ele.ParentValue.split(',');\r\n if (parentValues.length > 1) {\r\n if (parentValues.indexOf(obj.Value) > -1 && ele.IsRequired == false) {\r\n ele.Disabled = false;\r\n }\r\n else {\r\n ele.Disabled = true;\r\n }\r\n }\r\n else {\r\n if (ele.ParentValue != null && obj.Value != null) {\r\n if (ele.ParentValue != obj.Value && ele.ParentValue != '') {\r\n ele.Disabled = true;\r\n }\r\n }\r\n this.reportParameters.filter(x => x.ParentId == ele.Id).forEach(element => {\r\n element.Disabled = ele.Disabled;\r\n });\r\n }\r\n });\r\n });\r\n this.reportParameters.forEach(obj => {\r\n if (obj.ParameterName == 'blnUsingSchoolLetterHead') {\r\n obj.Disabled = false;\r\n }\r\n if (obj.ParameterName == 'bytPrintLogo') {\r\n obj.Disabled = false;\r\n }\r\n if (obj.ParameterName == 'blnPrintToMailFormat') {\r\n obj.Disabled = false;\r\n }\r\n if (obj.ParameterName == 'blnPrintSchoolAddress') {\r\n obj.Disabled = false;\r\n }\r\n if (obj.ParameterName == 'blnReverseName') {\r\n obj.Disabled = false;\r\n }\r\n if (obj.ParameterName == 'blnPrintFullDuplex') {\r\n obj.Disabled = false;\r\n }\r\n if (obj.ParameterName == 'blnPrintTeacherName') {\r\n obj.Disabled = false;\r\n } \r\n });\r\n }\r\n const parameterParentValue = this.reportParameters.filter(x => x.Id == parameter.ParentId)[0];\r\n if (parameterParentValue != undefined && parameterParentValue != null && parameterParentValue.Value == 'Journal') {\r\n this.reportParameters.filter(x => x.IsLetterParameter == true && x.ParameterName != 'blnPrimaryParentsAddress' && x.ParameterName != 'blnAlternateParentsAddress'\r\n && x.ParameterName != 'blnAlternateParAddrOnlyIfRequested' && x.ParameterName != 'strReportType' && x.ParameterName != 'bytMailingLanguage').forEach(obj => {\r\n obj.Disabled = true;\r\n if (obj.ParameterName == 'blnIncludePdfAttachment') {\r\n obj.Value = null;\r\n }\r\n if (obj.ParameterName == 'strEmailOptions') {\r\n obj.Value = 'SendEmail';\r\n }\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n validationFields() {\r\n this.errors = [];\r\n this.selectedReport.ReportParameters = this.reportParameters.filter(o => o.IsLetterParameter == true && o.ParentId != 0 && o.IsRequired == false);\r\n this.selectedReport.ReportParameters.forEach(obj => {\r\n const parentobject = this.reportParameters.filter(o => o.Id == obj.ParentId)[0];\r\n if (parentobject) {\r\n if (this.selectedReport.ReportParameters.filter(x => x.Id == parentobject.Id).length == 0) {\r\n this.selectedReport.ReportParameters.push(parentobject);\r\n }\r\n }\r\n });\r\n this.reportingService.getV9ReportParameterValidation(this.selectedReport).subscribe(result => {\r\n if (result != '') {\r\n const errormessage = result.split('|');\r\n errormessage.forEach(obj => {\r\n if (obj != '') {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: obj\r\n });\r\n }\r\n });\r\n }\r\n this.validateRequiredFields();\r\n this.okClick();\r\n });\r\n }\r\n\r\n validateRequiredFields() {\r\n this.reportParameters.filter(o => o.IsVisible == true && o.Disabled == false && o.IsRequired == true).forEach(obj => {\r\n if (obj.Value == null || obj.Value.toString() == '') {\r\n let fieldName: string;\r\n if (obj.Name != null && obj.Name != '') {\r\n fieldName = obj.Name;\r\n }\r\n else if (obj.ParentId != null && obj.ParentId > 0) {\r\n const parentObject = this.reportParameters.filter(o => o.Id == obj.ParentId)[0];\r\n if (parentObject != null && parentObject.Name != null && parentObject.Name != '') {\r\n fieldName = parentObject.Name;\r\n }\r\n }\r\n fieldName = fieldName.replace(':', '');\r\n\r\n this.errors.push({\r\n fieldName: fieldName,\r\n fieldRef: null,\r\n errorMsg: 'Field is required'\r\n });\r\n }\r\n });\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close(null);\r\n }\r\n\r\n okClick() {\r\n if (this.errors.length == 0) {\r\n this.dialogRef.close(this.reportParameters);\r\n }\r\n }\r\n}\r\n","\r\n\r\n
{{selectedReport.Description}}
\r\n\r\n\r\n
\r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{parameter.Name}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{parameter.Name}}\r\n \r\n \r\n \r\n
\r\n {{parameter.Name}}\r\n \r\n
\r\n \r\n {{dataItem.TextField}}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 1\">\r\n Multiple Selected\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{parameter.Name}}\r\n \r\n
\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {{parameter.Name}}\r\n
\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {{disCol}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{row[disCol]}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \"Image\"\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
{{parameter.Hint}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n {{parameter.Name}}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n {{parameter.Name}}\r\n \r\n\r\n \r\n
\r\n {{parameter.Name}}\r\n\r\n
\r\n \r\n {{dataItem.TextField}}\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n 1\">\r\n Multiple Selected\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{parameter.Name}}\r\n\r\n
\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n {{parameter.Name}}\r\n
\r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{disCol}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{row[disCol]}}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
{{parameter.Hint}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n\r\n\r\n","import { Component, OnInit, OnDestroy, ViewChild, Inject } from '@angular/core';\r\nimport { MatDialogRef, MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { StudentSearchComponent } from '../../../../shared-components/student-search/student-search.component';\r\nimport { ReportQueueComponent } from '../../report-queue/report-queue.component';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { ReportV9 } from '../../models/report-v9.model';\r\nimport { V9ReportParameter } from '../../models/v9-report-parameter.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { V9ParameterRows, V9ParameterRow } from '../../models/v9-parameter-row.model';\r\nimport { System } from '../../../../shared-components/System';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\nimport { GradebookStudent } from '../../../../classroom360/gradebook/v9/models/gradebook-student.model';\r\nimport { V9LetterReportParametersComponent } from './v9-letter-report-parameters/v9-letter-report-parameters.component';\r\nimport { GenericListItem, GenericList } from '../../../../shared-components/generic-list-selector/generic-list.model';\r\nimport { GenericListSelectorComponent } from '../../../../shared-components/generic-list-selector/generic-list-selector.component';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DataQueryField } from '../../../../classroom360/data-query/data-query-field.model';\r\nimport { Year } from '../../../../shared-components/year/year.model';\r\nimport { SchoolYearSettings } from '../../../../shared-components/year/school-year-settings.model';\r\nimport { StaffSearchComponent } from '../../../../shared-components/staff-search/staff-search.component';\r\nimport { Staff } from '../../../../shared-components/staff-search/staff.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-v9-report-parameters',\r\n templateUrl: './v9-report-parameters.component.html',\r\n styles: []\r\n})\r\nexport class V9ReportParametersComponent implements OnInit, OnDestroy {\r\n\r\n selectedReport: ReportV9;\r\n reportForSaveRCM: ReportV9;\r\n refreshGrid: ReportV9;\r\n reportParameters: V9ReportParameter[] = [];\r\n chunkedParameters: V9ParameterRows;\r\n selectedSiteSectionId = 0;\r\n selectedStudentIds: GradebookStudent[] = [];\r\n errors: ErrorList[] = [];\r\n showLegend = false;\r\n selectAllGridRecords = false;\r\n gridDataMatDatasource = new TylerMatTableDataSource();\r\n gridDataSource: any[] = [];\r\n columnToDisplay: string[] = [];\r\n tabNames: string[] = [];\r\n blnIsParameterLink = false;\r\n dataColumns: DataQueryField[] = [];\r\n selectedStudentIdsArray: number[] = [];\r\n blnSaveReportCardMessage = false;\r\n blnReportCardsGrade = false;\r\n defaultYear: Year;\r\n schoolYearSettings: SchoolYearSettings;\r\n @ViewChild(MatSort) set sort(val: MatSort) {\r\n this.gridDataMatDatasource.sort = val;\r\n }\r\n @ViewChild(MatSort) sortValue: MatSort;\r\n studentNameFormat: string;\r\n studentMiddleNameFormat: string;\r\n ShowNickname: string\r\n imageIconName: string;\r\n constructor(\r\n private reportingService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private yearService: YearService,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private studentListSelectorDialog: MatDialog,\r\n private sanitizer: DomSanitizer,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.defaultYear = this.yearService.defaultYear;\r\n if (this.data != undefined) {\r\n this.selectedReport = this.data.Report;\r\n this.selectedSiteSectionId = this.data.selectedSectionId == undefined ? 0 : this.data.selectedSectionId;\r\n this.selectedStudentIds = this.data.studentSelection;\r\n this.blnReportCardsGrade = this.data.blnReportCardsGrade == undefined ? false : this.data.blnReportCardsGrade;\r\n }\r\n if (this.selectedSiteSectionId != 0) {\r\n this.getV9StudentNameFormat();\r\n }\r\n this.getV9ReportParameters();\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n getV9ReportParameters() {\r\n this.reportingService.getV9ReportParameters(this.selectedReport.Id, this.selectedSiteSectionId, 0).subscribe(result => {\r\n this.reportParameters = result;\r\n this.reportParameters.forEach(obj => {\r\n if (obj.TabName != '' && obj.TabName != undefined) {\r\n if (!this.tabNames.includes(obj.TabName)) {\r\n this.tabNames.push(obj.TabName);\r\n }\r\n }\r\n });\r\n if (this.tabNames.length > 0) {\r\n if (this.tabNames.includes('Report Card Messages')) {\r\n this.blnSaveReportCardMessage = true;\r\n this.reportForSaveRCM = this.selectedReport;\r\n }\r\n if (this.tabNames.includes('Messages')) {\r\n this.reportForSaveRCM = this.selectedReport;\r\n }\r\n }\r\n this.setParameterRows();\r\n });\r\n }\r\n\r\n getV9StudentNameFormat() {\r\n this.reportingService.getV9ReportParameterStudentNameFormat(this.selectedSiteSectionId).subscribe(result => {\r\n const studentName = result.split(',');\r\n if (studentName.length > 0) {\r\n this.studentNameFormat = studentName[0];\r\n this.studentMiddleNameFormat = studentName[1];\r\n this.ShowNickname = studentName[2];\r\n }\r\n });\r\n }\r\n\r\n getParameterStyle(parameter: V9ReportParameter): object {\r\n let obj: object = null;\r\n if (parameter != null && parameter.ParameterStyle != '') {\r\n obj = JSON.parse('{' + parameter.ParameterStyle + '}');\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n runReportClick() {\r\n const reportType = this.reportParameters.filter(o => o.ColumnName == 'reportType' || o.ColumnName == 'PrintLetters' || o.ColumnName == 'CustomInfo')[0];\r\n if (reportType != undefined && (reportType.Value == 'Letters' || reportType.Value == 'Export' || reportType.Value == true)) {\r\n alert('Not yet implemented!');\r\n }\r\n else {\r\n this.errors = [];\r\n const reportFullSheets = this.reportParameters.filter(o => o.ParameterName == 'strFullSheet')[0];\r\n if (reportFullSheets != undefined) {\r\n if (reportFullSheets.Value == 'GridPage') {\r\n this.selectedReport.WorkflowReport = false;\r\n }\r\n }\r\n const journalReportType = this.reportParameters.filter(o => o.ParameterName == 'strReportType')[0];\r\n if (journalReportType != undefined) {\r\n if (journalReportType.Value == 'Journal') {\r\n const emailOptions = this.reportParameters.filter(o => o.ParameterName == 'strEmailOptions')[0];\r\n if (emailOptions != undefined && emailOptions.Value == 'SendEmailAndLetter') {\r\n this.selectedReport.WorkflowReport = false;\r\n }\r\n }\r\n if (journalReportType.Value == 'P') {\r\n this.selectedReport.WorkflowReport = false;\r\n }\r\n }\r\n\r\n this.reportParameters.filter(o => o.ControlType == 'cbl').forEach(obj => {\r\n obj.Value = '';\r\n if (obj.DataSource != null) {\r\n obj.DataSource.filter(o => o.IsSelected == true).forEach(dsObj => {\r\n obj.Value += dsObj.ValueField + ',';\r\n });\r\n }\r\n });\r\n\r\n this.reportParameters.filter(o => o.ControlType == 'ddcbl').forEach(obj => {\r\n let objValue = '';\r\n if (obj.Value != '') {\r\n obj.Value.forEach(element => {\r\n objValue += element + ',';\r\n });\r\n if (objValue != '') {\r\n obj.Value = '';\r\n obj.Value = objValue;\r\n }\r\n }\r\n });\r\n\r\n this.reportParameters.filter(o => o.ControlType == 'grid').forEach(obj => {\r\n obj.Value = '';\r\n this.gridDataSource.filter(o => o.Selected == true).forEach(dsObj => {\r\n obj.Value += dsObj.Id + ',';\r\n });\r\n });\r\n\r\n this.reportParameters.filter(o => o.ControlType == 'stp').forEach(obj => {\r\n obj.Value = obj.selectedStaffNumbers;\r\n });\r\n\r\n this.validateRequiredFields();\r\n\r\n if (this.errors.length == 0) {\r\n let studentIds = '';\r\n const studentSelection = this.reportParameters.filter(o => o.ControlType == 'ssrbl')[0];\r\n if (studentSelection != null && studentSelection.Value != null && studentSelection.Value.toString() == 'Custom') {\r\n if (this.selectedStudentIds != undefined && this.selectedStudentIds.length > 0) {\r\n const students = new GenericList();\r\n this.selectedStudentIds.forEach(obj => {\r\n const student = new GenericListItem();\r\n students.DialogTitle = 'Select Student(s)';\r\n students.ColumnHeader = 'Student';\r\n student.Id = this.blnReportCardsGrade == false ? obj.Id.toString() : obj.StudentId.toString();\r\n student.TextField = this.studentName(obj) + ' (' + obj.StudentNumber + ')';\r\n\r\n student.ValueField = this.blnReportCardsGrade == false ? obj.Id.toString() : obj.StudentId.toString();\r\n student.IsSelected = true;\r\n if (this.selectedStudentIdsArray.length > 0) {\r\n const studentSelect = this.selectedStudentIdsArray.find(s => s.toString() == obj.StudentId.toString());\r\n if (studentSelect == null || studentSelect == undefined) {\r\n student.IsSelected = false;\r\n }\r\n }\r\n students.Items.push(student);\r\n });\r\n const studentListSelectorDialogRef = this.studentListSelectorDialog.open(\r\n GenericListSelectorComponent,\r\n {\r\n data: students,\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n minWidth: '50vw',\r\n maxWidth: '100vw',\r\n minHeight: '75vh',\r\n maxHeight: '100vh'\r\n });\r\n\r\n studentListSelectorDialogRef.afterClosed().subscribe(resultValue => {\r\n if (resultValue != undefined) {\r\n const studentId: number[] = resultValue;\r\n this.selectedStudentIdsArray = [];\r\n for (let x = 0; x < studentIds.length; x++) {\r\n this.selectedStudentIdsArray.push(studentId[x]);\r\n }\r\n resultValue.forEach(obj => {\r\n studentIds = studentIds + obj + ',';\r\n });\r\n this.printReportWithValidation(studentIds);\r\n }\r\n else {\r\n this.errors.push({\r\n fieldName: 'Student Selection',\r\n fieldRef: null,\r\n errorMsg: 'Select at least one student'\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n if (this.selectedReport.ReportName == 'CreateProfileReport') {\r\n this.selectedReport.ReportParameters = this.reportParameters;\r\n this.reportingService.getV9ReportParameterValidation(this.selectedReport).subscribe(resultError => {\r\n if (resultError != '') {\r\n const errormessage = resultError.split('|');\r\n errormessage.forEach(obj => {\r\n if (obj != '') {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: obj\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.selectedReport.ReportParameters = [];\r\n const studentSearchDialogRef = this.dialog.open(\r\n StudentSearchComponent,\r\n {\r\n data: {\r\n searchAndSelect: true,\r\n returnSelectedStudents: true\r\n },\r\n disableClose: true,\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n });\r\n\r\n studentSearchDialogRef.afterClosed().subscribe(result => {\r\n if (result != undefined && result.length > 0) {\r\n result.forEach(obj => {\r\n studentIds = studentIds + obj.Id + ',';\r\n });\r\n this.printReportWithValidation(studentIds);\r\n }\r\n else {\r\n this.errors.push({\r\n fieldName: 'Student Selection',\r\n fieldRef: null,\r\n errorMsg: 'Select at least one student'\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n else {\r\n const studentSearchDialogRef = this.dialog.open(\r\n StudentSearchComponent,\r\n {\r\n data: {\r\n searchAndSelect: true,\r\n returnSelectedStudents: true\r\n },\r\n disableClose: true,\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n });\r\n\r\n studentSearchDialogRef.afterClosed().subscribe(result => {\r\n if (result != undefined && result.length > 0) {\r\n result.forEach(obj => {\r\n studentIds = studentIds + obj.Id + ',';\r\n });\r\n this.printReportWithValidation(studentIds);\r\n }\r\n else {\r\n this.errors.push({\r\n fieldName: 'Student Selection',\r\n fieldRef: null,\r\n errorMsg: 'Select at least one student'\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n this.printReportWithValidation(studentIds);\r\n }\r\n }\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n selectAllGridRecordsChange() {\r\n this.gridDataSource.forEach(row => {\r\n row['Selected'] = this.selectAllGridRecords;\r\n });\r\n }\r\n\r\n printReport(studentIds: string) {\r\n if (this.selectedStudentIds != undefined && this.selectedStudentIds.length > 0 && studentIds == '') {\r\n this.selectedStudentIds.forEach(obj => {\r\n studentIds = studentIds + obj.StudentId + ',';\r\n });\r\n }\r\n this.selectedReport.StudentIds = studentIds;\r\n this.reportParameters.filter(x => x.ControlType == 'img').forEach(obj => {\r\n obj.Value = '';\r\n });\r\n\r\n this.reportParameters.filter(x => x.ControlType == 'grid').forEach(obj => {\r\n obj.GridDataSources = null;\r\n obj.ColumnToDisplay = [];\r\n });\r\n\r\n this.selectedReport.ReportParameters = this.reportParameters;\r\n if (this.selectedReport.WorkflowReport == true && studentIds.length > 0) {\r\n if (studentIds.split(',').length <= this.selectedReport.MinimumStudentsForWorkflow) {\r\n this.selectedReport.WorkflowReport = false;\r\n }\r\n }\r\n\r\n if (this.selectedReport.WorkflowReport == false) {\r\n const studentAttachment: ReportV9 = {\r\n Id: this.selectedReport.Id,\r\n ParentId: this.selectedReport.ParentId,\r\n Description: this.selectedReport.Description,\r\n ReportName: this.selectedReport.ReportName,\r\n ReportTitle: this.selectedReport.ReportTitle,\r\n ReportType: this.selectedReport.ReportType,\r\n Active: this.selectedReport.Active,\r\n WorkflowReport: this.selectedReport.WorkflowReport,\r\n MinimumStudentsForWorkflow: this.selectedReport.MinimumStudentsForWorkflow,\r\n ReportParameterClassName: this.selectedReport.ReportParameterClassName,\r\n StudentIds: this.selectedReport.StudentIds,\r\n ReportsList: this.selectedReport.ReportsList,\r\n ReportParameters: this.selectedReport.ReportParameters,\r\n ReportValue: this.selectedReport.ReportValue,\r\n SchoolId: this.yearService.defaultYear.SchoolID,\r\n YearId: this.yearService.defaultYear.Id,\r\n SiteSectionId: this.selectedSiteSectionId\r\n };\r\n window.localStorage.setItem('v9ReportParameter', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n else {\r\n this.reportingService.runV9ReportByParameter(this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.Id, this.selectedSiteSectionId, 0, this.selectedReport).subscribe(result => {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n });\r\n }\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n parameterChanged(parameter: V9ReportParameter) {\r\n if (parameter.ControlType == 'chk') {\r\n this.reportParameters.filter(o => o.ParentId == parameter.Id).forEach(obj => {\r\n obj.Disabled = false;\r\n if (obj.ParentValue != null && parameter.Value != null) {\r\n if (obj.ParentValue.toUpperCase() != parameter.Value.toString().toUpperCase()) {\r\n obj.Disabled = true;\r\n }\r\n }\r\n this.reportParameters.filter(x => x.ParentId == obj.Id).forEach(element => {\r\n element.Disabled = false;\r\n if (obj.Value != null && element.Value != null) {\r\n if (element.ParentValue.toUpperCase() != obj.Value.toString().toUpperCase()) {\r\n element.Disabled = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n if (parameter.ControlType == 'rbl') {\r\n this.reportParameters.filter(o => o.ParentId == parameter.Id).forEach(obj => {\r\n obj.Disabled = false;\r\n const parentValue = obj.ParentValue.split(',');\r\n if (parentValue.length > 1) {\r\n if (parentValue.indexOf(parameter.Value) > -1) {\r\n obj.Disabled = false;\r\n }\r\n else {\r\n obj.Disabled = true;\r\n }\r\n }\r\n else {\r\n if (obj.ParentValue != null && parameter.Value != null) {\r\n if (obj.ParentValue != parameter.Value) {\r\n obj.Disabled = true;\r\n }\r\n }\r\n this.reportParameters.filter(x => x.ParentId == obj.Id).forEach(element => {\r\n element.Disabled = obj.Disabled;\r\n });\r\n }\r\n });\r\n }\r\n if (parameter.ControlType == 'ddl') {\r\n this.reportParameters.filter(o => o.ParentId == parameter.Id).forEach(obj => {\r\n obj.Disabled = false;\r\n if (obj.ParentValue != null && parameter.Value != null) {\r\n if (obj.ParentValue.toUpperCase() != parameter.Value.toString().toUpperCase()) {\r\n obj.Disabled = true;\r\n }\r\n }\r\n this.reportParameters.filter(x => x.ParentId == obj.Id).forEach(element => {\r\n element.Disabled = false;\r\n if (obj.Value != null && element.Value != null) {\r\n if (element.ParentValue.toUpperCase() != obj.Value.toString().toUpperCase()) {\r\n element.Disabled = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n setParameterRows() {\r\n this.chunkedParameters = new V9ParameterRows();\r\n const reportParameter = this.reportParameters[this.reportParameters.length - 1];\r\n if (reportParameter != null) {\r\n for (let rowIndex = 0; rowIndex < reportParameter.RowNumberInTable; rowIndex++) {\r\n const parameterRow = new V9ParameterRow();\r\n let includeLineAtStartOfGroup = true;\r\n let includeLineAtEndOfGroup = true;\r\n this.reportParameters.filter(o => o.RowNumberInTable == rowIndex + 1 && o.IsLetterParameter == false).forEach(obj => {\r\n if (obj.DataType == 'BIT') {\r\n if (typeof (obj.Value) != 'boolean') {\r\n obj.Value = obj.Value != null && obj.Value.toUpperCase() == 'TRUE' ? true : false;\r\n }\r\n }\r\n if (obj.IncludeLineAtStartOfGroup != includeLineAtStartOfGroup) {\r\n includeLineAtStartOfGroup = false;\r\n }\r\n if (obj.IncludeLineAtEndOfGroup != includeLineAtEndOfGroup) {\r\n includeLineAtEndOfGroup = false;\r\n }\r\n if (obj.ParentId != null && obj.ParentId > 0) {\r\n const parentReportParameter = this.reportParameters.filter(o => o.Id == obj.ParentId)[0];\r\n if (parentReportParameter.ControlType == 'rbl') {\r\n const parentValue = obj.ParentValue.split(',');\r\n if (parentValue.length > 1) {\r\n if (parentValue.indexOf(parentReportParameter.Value) > -1) {\r\n obj.Disabled = false;\r\n }\r\n else {\r\n obj.Disabled = true;\r\n }\r\n obj.Disabled = obj.Disabled == false && parentReportParameter.Disabled == true ? true : obj.Disabled;\r\n }\r\n else {\r\n obj.Disabled = parentReportParameter.Disabled == true ? true : obj.ParentValue.toUpperCase() != parentReportParameter.Value.toString().toUpperCase();\r\n }\r\n }\r\n else {\r\n if (parentReportParameter != null && parentReportParameter.Value != null) {\r\n if (parentReportParameter.Disabled == true) {\r\n obj.Disabled = true;\r\n }\r\n else {\r\n if (obj.ParentValue.toUpperCase() != '') {\r\n if (obj.ParentValue.toUpperCase() != parentReportParameter.Value.toString().toUpperCase()) {\r\n obj.Disabled = true;\r\n }\r\n }\r\n }\r\n // obj.Disabled = parentReportParameter.Disabled == true ? true : obj.ParentValue.toUpperCase() != parentReportParameter.Value.toString().toUpperCase();\r\n }\r\n }\r\n if (obj.DataSource == null) {\r\n if (obj.LookupProcedureName != '') {\r\n let parentValue = '';\r\n if (parentReportParameter.DataSource != null && parentReportParameter.DataSource.length > 0) {\r\n parentValue = parentReportParameter.Value == '' ? parentReportParameter.DataSource[0].ValueField : parentReportParameter.Value;\r\n }\r\n else {\r\n parentValue = parentReportParameter.Value;\r\n }\r\n this.reportingService.getV9ReportParameterSelectionByLookupName(obj.Id, this.selectedSiteSectionId, parentValue, obj.LookupProcedureName, 0, obj.ControlType).subscribe(result => {\r\n if (obj.ControlType == 'grid') {\r\n obj.GridDataSource = result.GridDataSource;\r\n obj.ColumnToDisplay = [];\r\n if (obj.Disabled == false) {\r\n obj.ColumnToDisplay = ['Selected'];\r\n }\r\n if (obj.GridDataSource != null && obj.GridDataSource != '') {\r\n this.gridDataSource = JSON.parse(obj.GridDataSource);\r\n obj.GridDataSources = new TylerMatTableDataSource(this.gridDataSource);\r\n obj.GridDataSources.sort = this.sort;\r\n if (this.gridDataSource.length > 0) {\r\n obj.ColumnToDisplay = obj.ColumnToDisplay.concat(Object.keys(this.gridDataSource[0]));\r\n if (obj.ColumnToDisplay.includes('Id')) {\r\n obj.ColumnToDisplay.splice(obj.ColumnToDisplay.indexOf('Id'), 1);\r\n }\r\n }\r\n }\r\n }\r\n else if (obj.ControlType == 'rtxt') {\r\n obj.Value = result.Value;\r\n }\r\n else {\r\n if (result.DataSource != null) {\r\n obj.DataSource = result.DataSource;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n if (obj.ControlType == 'cbl') {\r\n if (obj.DataSource != null) {\r\n if (obj.DataSource.length > 0) {\r\n const variable = obj.Value.split(',');\r\n variable.forEach(ele => {\r\n obj.DataSource.forEach(element => {\r\n if (element.ValueField == ele) {\r\n element.IsSelected = true;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n if (obj.ControlType == 'ddcbl') {\r\n const objValue: string[] = [];\r\n if (obj.DataSource != null && obj.DataSource.filter(x => x.TextField.trim() == 'ALL').length > 0) {\r\n obj.DataSource.forEach(obj => {\r\n objValue.push(obj.ValueField);\r\n });\r\n }\r\n else {\r\n if (obj.Value != '' && obj.Value != null) {\r\n const variable = obj.Value.split(',');\r\n variable.forEach(element => {\r\n if (element != '') {\r\n objValue.push(element);\r\n }\r\n });\r\n }\r\n }\r\n if (objValue.length > 0) {\r\n obj.Value = objValue;\r\n }\r\n }\r\n if (obj.ControlType == 'grid') {\r\n if (obj.GridDataSource != null) {\r\n obj.ColumnToDisplay = [];\r\n if (obj.Disabled == false) {\r\n obj.ColumnToDisplay = ['Selected'];\r\n }\r\n if (obj.GridDataSource != null && obj.GridDataSource != '') {\r\n this.gridDataSource = JSON.parse(obj.GridDataSource);\r\n obj.GridDataSources = new TylerMatTableDataSource(this.gridDataSource);\r\n if (this.gridDataSource.length > 0) {\r\n obj.ColumnToDisplay = obj.ColumnToDisplay.concat(Object.keys(this.gridDataSource[0]));\r\n if (obj.ColumnToDisplay.includes('Id')) {\r\n obj.ColumnToDisplay.splice(obj.ColumnToDisplay.indexOf('Id'), 1);\r\n }\r\n }\r\n obj.GridDataSources.sort = this.sort;\r\n }\r\n }\r\n }\r\n if (obj.ControlType == 'lnk') {\r\n this.blnIsParameterLink = true;\r\n obj.IsVisible = false;\r\n }\r\n if (obj.ControlType == 'img') {\r\n if (obj.Value != '' && obj.Value != null) {\r\n if (obj.Value['changingThisBreaksApplicationSecurity'] == undefined && obj.Value['changingThisBreaksApplicationSecurity'] == null) {\r\n obj.Value = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/png;base64, ' + obj.Value);\r\n }\r\n }\r\n }\r\n if (obj.ControlType == 'ddl') {\r\n if (obj.Value != '') {\r\n if (obj.DataSource != null || obj.DataSource != undefined) {\r\n const objDataSourceValue = obj.DataSource.filter(x => x.ValueField == obj.Value);\r\n if (objDataSourceValue.length == 0) {\r\n if (obj.DataSource != null && obj.DataSource.length > 0) {\r\n obj.Value = obj.DataSource[0].ValueField;\r\n }\r\n }\r\n }\r\n const childReportParameters = this.reportParameters.filter(o => o.ParentId == obj.Id);\r\n if (childReportParameters != undefined && childReportParameters.length > 0) {\r\n this.parameterSelectionChange(obj);\r\n }\r\n }\r\n }\r\n if (obj.ControlType == 'btn') {\r\n switch (obj.Value) {\r\n case \"RefreshGrid\":\r\n this.imageIconName = \"refresh.png\"\r\n break;\r\n case \"AttendanceDay\":\r\n this.imageIconName = \"refresh.png\"\r\n break;\r\n case \"StaffSearch\":\r\n this.imageIconName = \"search normal.png\"\r\n obj.Name = '';\r\n break;\r\n case \"StaffSearchSelect\":\r\n this.imageIconName = \"search normal.png\"\r\n obj.Name = '';\r\n break;\r\n }\r\n }\r\n if (obj.ControlType == 'stp') {\r\n this.imageIconName = \"search normal.png\";\r\n obj.staffpickerControlType = obj.Value;\r\n }\r\n\r\n parameterRow.Parameters.push(obj);\r\n });\r\n parameterRow.IncludeLineAtStartOfGroup = includeLineAtStartOfGroup;\r\n parameterRow.IncludeLineAtEndOfGroup = includeLineAtEndOfGroup;\r\n this.chunkedParameters.Rows.push(parameterRow);\r\n }\r\n }\r\n }\r\n\r\n validateRequiredFields() {\r\n this.reportParameters.filter(o => o.IsVisible == true && o.Disabled == false && o.IsRequired == true && o.IsLetterParameter == false).forEach(obj => {\r\n if (obj.Value == null || obj.Value.toString() == '') {\r\n let fieldName: string;\r\n if (obj.Name != null && obj.Name != '') {\r\n fieldName = obj.Name;\r\n }\r\n else if (obj.ParentId != null && obj.ParentId > 0) {\r\n const parentObject = this.reportParameters.filter(o => o.Id == obj.ParentId)[0];\r\n if (parentObject != null && parentObject.Name != null && parentObject.Name != '') {\r\n fieldName = parentObject.Name;\r\n }\r\n }\r\n fieldName = fieldName.replace(':', '');\r\n\r\n this.errors.push({\r\n fieldName: fieldName,\r\n fieldRef: null,\r\n errorMsg: 'Field is required'\r\n });\r\n }\r\n });\r\n }\r\n\r\n parameterSelectionChange(parameter: V9ReportParameter) {\r\n const reportParentParameter = this.reportParameters.filter(o => o.ParentId == parameter.Id);\r\n reportParentParameter.forEach(obj => {\r\n this.reportingService.getV9ReportParameterSelectionByLookupName(obj.Id, this.selectedSiteSectionId, parameter.Value, obj.LookupProcedureName, 0, obj.ControlType).subscribe(result => {\r\n if (obj.ControlType == 'grid') {\r\n obj.GridDataSource = result.GridDataSource;\r\n obj.ColumnToDisplay = [];\r\n if (obj.Disabled == false) {\r\n obj.ColumnToDisplay = ['Selected'];\r\n }\r\n if (obj.GridDataSource != null && obj.GridDataSource != '') {\r\n this.gridDataSource = JSON.parse(obj.GridDataSource);\r\n obj.GridDataSources = new TylerMatTableDataSource(this.gridDataSource);\r\n obj.GridDataSources.sort = this.sort;\r\n if (this.gridDataSource.length > 0) {\r\n obj.ColumnToDisplay = obj.ColumnToDisplay.concat(Object.keys(this.gridDataSource[0]));\r\n if (obj.ColumnToDisplay.includes('Id')) {\r\n obj.ColumnToDisplay.splice(obj.ColumnToDisplay.indexOf('Id'), 1);\r\n }\r\n }\r\n }\r\n }\r\n else if (obj.ControlType == 'rtxt') {\r\n obj.Value = result.Value;\r\n }\r\n else if (obj.ControlType == 'rbl') {\r\n\r\n }\r\n else if (obj.ControlType == 'ddl') {\r\n\r\n }\r\n else {\r\n obj.DataSource = result.DataSource;\r\n }\r\n });\r\n });\r\n }\r\n\r\n parameterLinkClick(parameterName: string) {\r\n if (parameterName == 'Print and Delivery Options') {\r\n const letterReportParameters = this.reportParameters.filter(x => x.IsLetterParameter == true);\r\n if (letterReportParameters.length > 0) {\r\n const letterPrintOptionDialogRef = this.dialog.open(V9LetterReportParametersComponent, {\r\n data: {\r\n reportParameters: this.reportParameters,\r\n selectedReport: this.selectedReport\r\n },\r\n disableClose: true,\r\n minWidth: '50vw',\r\n maxWidth: '100vw',\r\n minHeight: '50vh',\r\n maxHeight: '100vh'\r\n });\r\n letterPrintOptionDialogRef.afterClosed().subscribe(result => {\r\n if (result != undefined && result.length > 0) {\r\n this.reportParameters = result;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n private _compare(a: number | string, b: number | string, isAsc: boolean) {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n sortData(sort: Sort, gridDataSource: TylerMatTableDataSource) {\r\n // Sort sorts the current list, but it wasnt updating it unless i reassigned.\r\n gridDataSource.data = gridDataSource.data.sort((a, b) => {\r\n const isAsc = sort.direction === 'asc';\r\n return this._compare(a[sort.active], b[sort.active], isAsc);\r\n });\r\n }\r\n\r\n printReportWithValidation(studentIds: string) {\r\n if (this.selectedReport.ReportName == 'CreateGeneratingAcademicAwardsReport') {\r\n const postAwardstoProgramsandServices = this.reportParameters.find(o => o.ParameterName == 'blnPostAwardstoProgramsandServices');\r\n if (postAwardstoProgramsandServices != null) {\r\n if (postAwardstoProgramsandServices.Value == true) {\r\n this.selectedReport.ReportParameters = this.reportParameters.filter(o => o.ParentId == postAwardstoProgramsandServices.Id);\r\n this.selectedReport.ReportParameters.forEach((obj, index) => {\r\n const parentobject = this.reportParameters.filter(o => o.Id == obj.ParentId)[index];\r\n if (parentobject) {\r\n this.selectedReport.ReportParameters.push(parentobject);\r\n }\r\n });\r\n this.reportingService.getV9ReportParameterValidation(this.selectedReport).subscribe(result => {\r\n if (result != '') {\r\n const errormessage = result.split('|');\r\n errormessage.forEach(obj => {\r\n if (obj != '') {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: obj\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.printReport(studentIds);\r\n }\r\n });\r\n }\r\n //else { this.printReport(studentIds); }\r\n }\r\n else { this.printReport(studentIds); }\r\n }\r\n else if (this.selectedReport.ReportName == 'MissingGrades') {\r\n this.selectedReport.ReportParameters = this.reportParameters;\r\n this.reportingService.getV9ReportParameterValidation(this.selectedReport).subscribe(resultError => {\r\n if (resultError != '') {\r\n const errormessage = resultError.split('|');\r\n errormessage.forEach(obj => {\r\n if (obj != '') {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: obj\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.selectedReport.ReportParameters = [];\r\n this.printReport(studentIds);\r\n }\r\n });\r\n }\r\n if (this.selectedReport.ReportName == 'CreateStaffPermissionsComparisonReport') {\r\n this.selectedReport.ReportParameters = this.reportParameters;\r\n this.reportingService.getV9ReportParameterValidation(this.selectedReport).subscribe(result => {\r\n if (result != '') {\r\n const errormessage = result.split('|');\r\n errormessage.forEach(obj => {\r\n if (obj != '') {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: obj\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.printReport(studentIds);\r\n }\r\n });\r\n }\r\n else {\r\n this.printReport(studentIds);\r\n }\r\n }\r\n\r\n saveRCMessages() {\r\n this.reportForSaveRCM.ReportParameters = this.reportParameters.filter(x => x.ParameterName != '' && (x.TabName == 'Report Card Messages' || x.TabName == 'Messages'));\r\n this.reportingService.saveReportCardMessage(this.reportForSaveRCM).subscribe(result => {\r\n\r\n });\r\n }\r\n\r\n studentName(CL: GradebookStudent) {\r\n // Formats student name based on general preferences\r\n\r\n let middle: string;\r\n let name: string;\r\n let nickName: string;\r\n\r\n // Check gen pref and add middle name if selected\r\n switch (this.studentMiddleNameFormat) {\r\n case 'SEN': // Show Entire Name\r\n if (CL.MiddleName) {\r\n middle = ' ' + CL.MiddleName + ' ';\r\n } else {\r\n middle = ' ';\r\n }\r\n break;\r\n case 'SFL': // Show First Letter\r\n if (this.checkChar(CL.MiddleName)) {\r\n middle = ' ' + CL.MiddleName.charAt(0) + ' ';\r\n } else {\r\n middle = ' ';\r\n }\r\n break;\r\n default: // Do not show\r\n middle = ' ';\r\n break;\r\n }\r\n\r\n // Check gen pref and add nickname if selected\r\n if (this.ShowNickname == '1' && CL.NickName != undefined && CL.NickName != '') {\r\n nickName = '\"' + CL.NickName + '\"';\r\n } else {\r\n nickName = '';\r\n }\r\n\r\n // Check gen pref and format first/last name\r\n switch (this.studentNameFormat) {\r\n case 'FNF': // First Name First\r\n name = CL.FirstName + nickName + middle + CL.LastName;\r\n break;\r\n case 'LNF': // Last Name First\r\n name = CL.LastName + ', ' + CL.FirstName + ' ' + nickName + middle;\r\n break;\r\n case 'FILN': // First Initial Last Name\r\n if (this.checkChar(CL.FirstName)) {\r\n name = CL.FirstName.charAt(0) + nickName + middle + CL.LastName;\r\n } else {\r\n name = nickName + middle + CL.LastName;\r\n }\r\n break;\r\n case 'FNLI': // First Name Last Initial\r\n if (this.checkChar(CL.LastName)) {\r\n name = CL.FirstName + nickName + middle + CL.LastName.charAt(0);\r\n } else {\r\n name = CL.FirstName + nickName + middle;\r\n }\r\n break;\r\n default:\r\n return 'Invalid Format';\r\n }\r\n return name;\r\n }\r\n\r\n checkChar(str: string): boolean {\r\n return str != '' && str != null;\r\n }\r\n\r\n parameterDropdownlistSelectChange(parameter: V9ReportParameter, parameterValue: string) {\r\n let objValue: string[] = [];\r\n if (parameter.Value == '0') {\r\n parameter.DataSource.forEach(obj => {\r\n objValue.push(obj.ValueField);\r\n });\r\n }\r\n else {\r\n if (parameter.Value.length > 0) {\r\n const isParameterValue = parameter.Value.indexOf('0') > -1 && parameterValue == '0';\r\n const isUncheckAll = !parameter.Value.includes('0') && parameterValue == '0';\r\n if (parameter.DataSource.length != parameter.Value.length) {\r\n if (parameter.Value.includes('0')) {\r\n if (isParameterValue) {\r\n parameter.DataSource.forEach(obj => {\r\n objValue.push(obj.ValueField);\r\n });\r\n } else {\r\n parameter.Value.forEach(obj => {\r\n if (obj != '0') {\r\n objValue.push(obj);\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n parameter.Value.forEach(obj => {\r\n if (isParameterValue) {\r\n objValue.push(obj);\r\n }\r\n else {\r\n if (obj != '0') {\r\n objValue.push(obj);\r\n }\r\n }\r\n });\r\n if (isUncheckAll) {\r\n objValue = [];\r\n }\r\n }\r\n }\r\n else {\r\n parameter.Value.forEach(obj => {\r\n objValue.push(obj);\r\n });\r\n }\r\n }\r\n }\r\n parameter.Value = objValue;\r\n }\r\n searchClick(parameter: V9ReportParameter) {\r\n if (this.selectedReport.ReportName == 'CreateStaffPermissionsComparisonReport' && parameter.ControlType == 'stp') {\r\n parameter.Value = parameter.staffpickerControlType;\r\n }\r\n if (parameter.Value == 'StaffSearch' || parameter.Value == 'StaffSearchSelect') {\r\n const schoolIds: number[] = [];\r\n this.yearService.schools.forEach(p => {\r\n if (!schoolIds.includes(p.Id)) {\r\n schoolIds.push(p.Id);\r\n }\r\n });\r\n const staffSearchDialog = this.dialog.open(StaffSearchComponent, {\r\n height: '100vh',\r\n width: '100vw',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw',\r\n disableClose: true,\r\n data: {\r\n schoolIds: schoolIds,\r\n searchAndSelect: (parameter.Value == 'StaffSearchSelect' ? true : false)\r\n }\r\n });\r\n staffSearchDialog.afterClosed().subscribe((selectedStaff: Staff) => {\r\n if (selectedStaff) {\r\n this.chunkedParameters.Rows.forEach(parameterRow => {\r\n const index = parameterRow.Parameters.findIndex(o => o.ParameterName == parameter.ParameterName);\r\n if (index > -1) {\r\n if (Array.isArray(selectedStaff)) {\r\n let staffNumbers = '';\r\n let staffNames = '';\r\n selectedStaff.forEach(obj => {\r\n staffNumbers = staffNumbers + obj.EmployeeNumber.trim() + ',';\r\n staffNames = staffNames + obj.LastName + ', ' + obj.FirstName + ',';\r\n });\r\n if (parameterRow.Parameters[index].ControlType == 'stp') {\r\n parameterRow.Parameters[index].selectedStaffNames = staffNames;\r\n parameterRow.Parameters[index].selectedStaffNumbers = staffNumbers;\r\n } else {\r\n parameterRow.Parameters[index - 1].Value = staffNumbers;\r\n }\r\n } else {\r\n if (parameterRow.Parameters[index].ControlType == 'stp') {\r\n parameterRow.Parameters[index].selectedStaffNames = selectedStaff.LastName + ', ' + selectedStaff.FirstName;\r\n parameterRow.Parameters[index].selectedStaffNumbers = selectedStaff.EmployeeNumber;\r\n } else {\r\n parameterRow.Parameters[index - 1].Value = selectedStaff.EmployeeNumber;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n if (parameter.Value == 'RefreshGrid') {\r\n this.refreshGrid = this.selectedReport;\r\n this.refreshGrid.ReportParameters = this.reportParameters.filter(o => o.ControlType != 'grid');\r\n const refreshGrid = this.reportParameters.filter(o => o.ControlType == 'grid')[0];\r\n this.reportingService.getV9ReportParameterBtnRefreshData('RefreshGrid', this.selectedReport).subscribe(result => {\r\n if (refreshGrid.ControlType == 'grid') {\r\n refreshGrid.GridDataSource = result.GridDataSource;\r\n if (refreshGrid.GridDataSource != '') {\r\n refreshGrid.ColumnToDisplay = [];\r\n if (refreshGrid.Disabled == false) {\r\n refreshGrid.ColumnToDisplay = ['Selected'];\r\n }\r\n }\r\n\r\n if (refreshGrid.GridDataSource != null && refreshGrid.GridDataSource != '') {\r\n this.gridDataSource = JSON.parse(refreshGrid.GridDataSource);\r\n refreshGrid.GridDataSources = new TylerMatTableDataSource(this.gridDataSource);\r\n refreshGrid.GridDataSources.sort = this.sort;\r\n if (this.gridDataSource.length > 0) {\r\n refreshGrid.ColumnToDisplay = refreshGrid.ColumnToDisplay.concat(Object.keys(this.gridDataSource[0]));\r\n if (refreshGrid.ColumnToDisplay.includes('Id')) {\r\n refreshGrid.ColumnToDisplay.splice(refreshGrid.ColumnToDisplay.indexOf('Id'), 1);\r\n }\r\n }\r\n }\r\n else {\r\n refreshGrid.GridDataSources.data = [];\r\n }\r\n }\r\n });\r\n }\r\n if (parameter.Value == 'AttendanceDay') {\r\n this.refreshGrid = this.selectedReport;\r\n this.refreshGrid.ReportParameters = this.reportParameters;\r\n this.reportingService.getV9ReportParameterBtnRefreshData('AttendanceDay', this.selectedReport).subscribe(result => {\r\n if (result.Name) {\r\n const calendarDay = this.reportParameters.filter(o => o.ColumnName == 'CalendarDay')[0];\r\n calendarDay.Name = result.Name;\r\n }\r\n });\r\n }\r\n if (parameter.Value == 'ReportCardMessage') {\r\n this.saveRCMessages();\r\n }\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'ReportToEmail',\r\n templateUrl: './confirm-cancel-archive.component.html',\r\n styleUrls: ['./confirm-cancel-archive.component.css']\r\n})\r\n\r\nexport class ConfirmCancelArchiveReportComponent implements OnDestroy, OnInit {\r\n\r\n\r\n\r\n // private snapshotToDelete: AutoRunSnapshot;\r\n\r\n // private _reportName: string;\r\n // private _autoRunDate: Date;\r\n\r\n // get reportName(): string {\r\n // return this._reportName;\r\n // }\r\n\r\n // set reportName(value: string) {\r\n // this._reportName = value;\r\n // }\r\n\r\n // get autoRunDate(): Date {\r\n // return this._autoRunDate;\r\n // }\r\n\r\n // set autoRunDate(value: Date) {\r\n // this._autoRunDate = value;\r\n // }\r\n\r\n // isDistributebyEmail: boolean; // ONE-4387\r\n\r\n selectedRecipients: string;\r\n\r\n header = 'Cancel Report to Archive';\r\n messageLine1 = 'Are you sure you want to cancel this report to archive?';\r\n messageLine2 = 'If you continue, this archive batch will be cancelled and any associated archived reports will be removed.';\r\n removeArchivedFiles = true;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n\r\n private dialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n ) {\r\n if (data) {\r\n if (data.header) {\r\n this.header = data.header;\r\n }\r\n\r\n if (data.messageLine1) {\r\n this.messageLine1 = data.messageLine1;\r\n this.messageLine2 = data.messageLine2;\r\n }\r\n }\r\n\r\n\r\n // this.snapshotToDelete = reportService.autoRunSnapshot;\r\n\r\n // this.autoRunDate = this.snapshotToDelete.TimeStamp;\r\n // this.reportName = this.snapshotToDelete.ReportName;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n }\r\n\r\n continueClick() {\r\n\r\n // const snapshotId = this.snapshotToDelete.AutoRunReportSnapshots_ID;\r\n\r\n // this.reportService.deleteReportSnapshot(snapshotId).subscribe(res => {\r\n\r\n // // todo: check that the delete was successful\r\n // this.reportService.autoRunSnapshot = null;\r\n // // this.ReportToEmailEvent.emit(true);\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n\r\n // // }\r\n // });\r\n\r\n this.reportService.removeArchivedFiles = this.removeArchivedFiles;\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n exitClick() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n}","
{{header}}
\r\n\r\n \r\n \r\n\r\n
\r\n {{ messageLine1 }}\r\n
\r\n {{ messageLine2 }}\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n ","
Report to Archive - Processes
\r\n\r\n\r\n\r\n
\r\n Click refresh to update the status of your archiving process(es).\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n Status\r\n \r\n \r\n \r\n \r\n {{process.TextField}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Added By\r\n \r\n \r\n \r\n \r\n {{user.TextField}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n Status\r\n \r\n Report\r\n \r\n Archive To\r\n \r\n Added On\r\n \r\n Added By\r\n \r\n Total Students\r\n \r\n # Completed\r\n
\r\n Cancel\r\n 0 && allowDeleteArchivedReports && !Batch.InProcess\" (click)=\"deleteClick(Batch)\">Delete\r\n \r\n {{ Batch.ProcessingDescription }}\r\n \r\n {{ Batch.ReportName }}\r\n \r\n {{ Batch.OperationDescriptions }}\r\n \r\n {{ Batch.AddedOnDate_Display }}\r\n \r\n {{ Batch.AddedByName }}\r\n \r\n {{ Batch.TotalNumberOfStudents }}\r\n \r\n Unknown\r\n \r\n {{ Batch.NumberOfStudentsCompleted }}\r\n
\r\n \r\n {{ Batch.ErrMsg.substr(0, 200) }} 199\">...\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { ReportBatch } from '../models/report-batch.model';\r\nimport { ConfirmCancelArchiveReportComponent } from './confirm-cancel-archive.component';\r\nimport { DataSource } from '../models/data-source.model';\r\nimport * as moment from 'moment';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'appArchiveProcess',\r\n templateUrl: './archive-process.component.html',\r\n styleUrls: ['./archive-process.component.css']\r\n})\r\n\r\nexport class ArchiveProcessComponent implements OnDestroy, OnInit {\r\n\r\n\r\n\r\n // private snapshotToDelete: AutoRunSnapshot;\r\n\r\n private _reportName: string;\r\n // private _autoRunDate: Date;\r\n\r\n get reportName(): string {\r\n return this._reportName;\r\n }\r\n\r\n set reportName(value: string) {\r\n this._reportName = value;\r\n }\r\n\r\n archiveTypes = '';\r\n\r\n fromDate: Date;\r\n // processStatus: string[] = [];\r\n\r\n // get autoRunDate(): Date {\r\n // return this._autoRunDate;\r\n // }\r\n\r\n // set autoRunDate(value: Date) {\r\n // this._autoRunDate = value;\r\n // }\r\n\r\n ReportBatches: ReportBatch[] = [];\r\n confirmCancelArchiveDialogRef: MatDialogRef;\r\n\r\n processes: DataSource[] = [];\r\n selectedProcess: string;\r\n filteredBatches: ReportBatch[] = [];\r\n\r\n addedBys: DataSource[] = [];\r\n addedBy: string;\r\n\r\n viewArchiveProcessesFromAllUsers: boolean;\r\n allowCancelArchiveProcesses: boolean;\r\n allowDeleteArchivedReports: boolean;\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n private confirmCancelArchiveDialog: MatDialog,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n this.viewArchiveProcessesFromAllUsers = this.reportService.viewArchiveProcessesFromAllUsers;\r\n this.allowCancelArchiveProcesses = this.reportService.allowCancelArchiveProcesses;\r\n this.allowDeleteArchivedReports = this.reportService.allowDeleteArchivedReports;\r\n\r\n const today = this.reportService.getDateWithoutTime(); // new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), 0, 0, 0);\r\n\r\n // this.fromDate = today; // new Date();\r\n\r\n if (this.reportService.SelectedReport != null && this.reportService.SelectedReport != undefined) {\r\n this.reportName = this.reportService.SelectedReport.Name;\r\n }\r\n // if (this.reportService.SelectedReport.StudentDigitalContent != null) {\r\n // this.archiveTypes = this.archiveTypes + 'Student Digital Content\\n';\r\n // }\r\n\r\n // if (this.reportService.SelectedReport.StudentPortfolio != null) {\r\n // this.archiveTypes = this.archiveTypes + 'Student Portfolio\\n';\r\n // }\r\n\r\n // if (this.reportService.SelectedReport.ArchiveToTCM) {\r\n // this.archiveTypes = this.archiveTypes + 'Tyler Content Manager\\n';\r\n // }\r\n\r\n this.reportService.getReportBatches().subscribe(archiveBatches => {\r\n for (let x = 0; x < archiveBatches.length; x++) {\r\n this.setAddedOnDate_Display(archiveBatches[x]);\r\n }\r\n\r\n\r\n\r\n this.ReportBatches = archiveBatches;\r\n this.filteredBatches = archiveBatches;\r\n this.getAddedBys();\r\n\r\n this.fromDate = this.getMinDate();\r\n\r\n let process = new DataSource();\r\n process = new DataSource();\r\n process.TextField = 'All';\r\n this.selectedProcess = 'All';\r\n this.processes.push(process);\r\n\r\n for (let x = 0; x < archiveBatches.length; x++) {\r\n if (!this.processes.find(p => p.TextField == archiveBatches[x].ProcessingDescription)) {\r\n process = new DataSource();\r\n process.TextField = archiveBatches[x].ProcessingDescription;\r\n this.processes.push(process);\r\n }\r\n }\r\n\r\n // var minDate=new Date(Math.min.apply(null, archiveBatches.));\r\n\r\n\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n // itemExistsInArray() {\r\n\r\n // }\r\n\r\n getAddedBys() {\r\n const users: string[] = [];\r\n\r\n for (let x = 0; x < this.ReportBatches.length; x++) {\r\n\r\n const tempUsers = users.find(u => u == this.ReportBatches[x].AddedByName);\r\n if (tempUsers == null || tempUsers == undefined) {\r\n users.push(this.ReportBatches[x].AddedByName);\r\n }\r\n }\r\n const sortedAddedBys = users.sort((a, b): number => {\r\n if (a < b) {\r\n return -1;\r\n }\r\n if (a > b) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n let addby = new DataSource();\r\n addby.TextField = 'All';\r\n this.addedBys.push(addby);\r\n this.addedBy = 'All'; // default\r\n\r\n for (let w = 0; w < sortedAddedBys.length; w++) {\r\n addby = new DataSource();\r\n addby.TextField = sortedAddedBys[w];\r\n this.addedBys.push(addby);\r\n }\r\n\r\n }\r\n\r\n getMinDate(): Date {\r\n let myMinDate = new Date();\r\n for (let x = 0; x < this.ReportBatches.length; x++) {\r\n if (new Date(this.ReportBatches[x].AddedOn).getTime() < new Date(myMinDate).getTime()) {\r\n myMinDate = this.ReportBatches[x].AddedOn;\r\n }\r\n }\r\n return myMinDate;\r\n }\r\n\r\n\r\n\r\n setAddedOnDate_Display(batch: ReportBatch) {\r\n batch.AddedOnDate_Display = moment(batch.AddedOn).format('MM/DD/YYYY h:mm:ss a');\r\n }\r\n\r\n fromDateChanged() {\r\n this.filteredBatches = this.getFilteredItems();\r\n }\r\n\r\n processChanged() {\r\n this.filteredBatches = this.getFilteredItems();\r\n }\r\n\r\n getFilteredItems(): ReportBatch[] {\r\n const batches: ReportBatch[] = [];\r\n\r\n for (let x = 0; x < this.ReportBatches.length; x++) {\r\n\r\n if (this.selectedProcess != 'All') {\r\n // filtering on process\r\n if (this.ReportBatches[x].ProcessingDescription == this.selectedProcess) {\r\n\r\n if ( // moment(this.fromDate, ['MM/DD/YYYY']).isValid() &&\r\n // moment(this.ReportBatches[x].AddedOn).isAfter(this.fromDate)\r\n this.isThisDateEqualToOrAfterThatDate(this.ReportBatches[x].AddedOn, this.fromDate)\r\n && (this.addedBy == 'All' || this.ReportBatches[x].AddedByName == this.addedBy)) {\r\n batches.push(this.ReportBatches[x]);\r\n }\r\n\r\n }\r\n }\r\n else {\r\n // not filtering on process\r\n if ( // moment(this.fromDate, ['MM/DD/YYYY']).isValid() &&\r\n // moment(this.ReportBatches[x].AddedOn).isAfter(this.fromDate)\r\n\r\n this.isThisDateEqualToOrAfterThatDate(this.ReportBatches[x].AddedOn, this.fromDate)\r\n && (this.addedBy == 'All' || this.ReportBatches[x].AddedByName == this.addedBy)) {\r\n batches.push(this.ReportBatches[x]);\r\n }\r\n }\r\n }\r\n\r\n return batches;\r\n }\r\n\r\n isThisDateEqualToOrAfterThatDate(thisDate: Date | string, thatDate: Date | string) {\r\n const date1 = new Date(thisDate).getTime();\r\n const date2 = new Date(thatDate).getTime();\r\n if (!(date1 < date2)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // getDate(batch: ReportBatch) {\r\n // return moment(batch.AddedOn, ['MM/DD/YYYY']);\r\n // }\r\n\r\n itemExistsInArray(textFieldToFind: string, batchesToCheck: ReportBatch[]): boolean {\r\n let itemExists = false;\r\n\r\n for (let x = 0; x < batchesToCheck.length; x++) {\r\n if (batchesToCheck.find(p => p.ProcessingDescription == textFieldToFind)) {\r\n itemExists = true;\r\n break;\r\n }\r\n }\r\n\r\n return itemExists;\r\n\r\n }\r\n\r\n cancelClick(batch: ReportBatch) {\r\n // confirm they want to cancel the report to archive\r\n this.confirmCancelArchiveDialogRef = this.confirmCancelArchiveDialog.open(ConfirmCancelArchiveReportComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.confirmCancelArchiveDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (result == true) {\r\n this.cancelBatch(batch);\r\n // this.thisDialogRef.close();\r\n }\r\n });\r\n\r\n // batch.InProcess = false;\r\n\r\n // // mark as cancelling\r\n // this.reportService.cancellingReportBatch(batch).subscribe(batches => {\r\n // this.ReportBatches = batches;\r\n // });\r\n\r\n // // now kick off background cancel\r\n // const asyncSub = this.reportService.startCancelReportBatchCleanupProcess(batch).subscribe(() => { });\r\n // setTimeout(() => {\r\n // asyncSub.unsubscribe();\r\n // }, 0);\r\n\r\n // this.reportService.getReportBatches().subscribe(archiveBatches => {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(archiveBatches);\r\n // }\r\n // this.ReportBatches = archiveBatches;\r\n // });\r\n }\r\n\r\n\r\n cancelBatch(batch: ReportBatch) {\r\n batch.InProcess = false;\r\n\r\n // mark as cancelling\r\n this.reportService.cancellingReportBatch(batch).subscribe(batches => {\r\n this.ReportBatches = batches;\r\n\r\n batch.RemoveArchivedFiles = this.reportService.removeArchivedFiles;\r\n this.reportService.removeArchivedFiles = false; // reset to default behavior\r\n\r\n // // now kick off background cancel\r\n // const asyncSub = this.reportService.startCancelReportBatchCleanupProcess(batch).subscribe(() => { });\r\n // setTimeout(() => {\r\n // // asyncSub.unsubscribe();\r\n // this.reportService.getReportBatches().subscribe(archiveBatches => {\r\n\r\n // for (let x = 0; x < archiveBatches.length; x++) {\r\n // this.setAddedOnDate_Display(archiveBatches[x]);\r\n // }\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(archiveBatches);\r\n // }\r\n // this.ReportBatches = archiveBatches;\r\n\r\n // }); // END getReportBatches\r\n // }, 0);\r\n\r\n\r\n this.reportService.startCancelReportBatchCleanupProcess(batch).subscribe(results => {\r\n // asyncSub.unsubscribe();\r\n this.reportService.getReportBatches().subscribe(archiveBatches => {\r\n\r\n for (let x = 0; x < archiveBatches.length; x++) {\r\n this.setAddedOnDate_Display(archiveBatches[x]);\r\n }\r\n this.ReportBatches = archiveBatches;\r\n\r\n }); // END getReportBatches\r\n });\r\n\r\n\r\n\r\n }); // END cancellingReportBatch\r\n\r\n // // now kick off background cancel\r\n // const asyncSub = this.reportService.startCancelReportBatchCleanupProcess(batch).subscribe(() => { });\r\n // setTimeout(() => {\r\n // asyncSub.unsubscribe();\r\n // }, 0);\r\n\r\n // this.reportService.getReportBatches().subscribe(archiveBatches => {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(archiveBatches);\r\n // }\r\n // this.ReportBatches = archiveBatches;\r\n // });\r\n }\r\n\r\n deleteClick(batch: ReportBatch) {\r\n // confirm they want to delete any reports which have already been archived\r\n this.confirmCancelArchiveDialogRef = this.confirmCancelArchiveDialog.open(ConfirmCancelArchiveReportComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n header: 'Delete archived reports?',\r\n messageLine1: 'Are you sure you want to delete any archived reports in this batch?',\r\n messageLine2: 'If you continue, the reports will be deleted and this archive batch will be cancelled'\r\n }\r\n });\r\n\r\n this.confirmCancelArchiveDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (result == true) {\r\n this.cancelBatch(batch);\r\n // this.thisDialogRef.close();\r\n }\r\n });\r\n\r\n // this.cancelBatch(batch);\r\n }\r\n\r\n getAddedOn(batch: ReportBatch) {\r\n return batch.AddedOn.toString().replace('T', ',');\r\n }\r\n\r\n getStatusFontColor(batch: ReportBatch) {\r\n if (batch.InProcess) {\r\n return 'green';\r\n } else {\r\n if (batch.HasError || batch.ProcessingDescription == 'Errored') {\r\n return 'red';\r\n } else {\r\n return 'default';\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n refreshClick() {\r\n\r\n this.reportService.getReportBatches().subscribe(archiveBatches => {\r\n for (let x = 0; x < archiveBatches.length; x++) {\r\n this.setAddedOnDate_Display(archiveBatches[x]);\r\n }\r\n this.ReportBatches = archiveBatches;\r\n this.filteredBatches = this.getFilteredItems();\r\n });\r\n }\r\n\r\n closeClick() {\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n\r\n}","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportOptionsHowTo',\r\n templateUrl: './report-options-how-to.component.html',\r\n styleUrls: ['./report-options-how-to.component.css']\r\n\r\n})\r\n\r\nexport class ReportOptionsHowToComponent implements OnInit, OnDestroy {\r\n\r\n thisDialogRef: MatDialogRef;\r\n\r\n constructor(\r\n dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n\r\n ) {\r\n this.thisDialogRef = dialogRef;\r\n\r\n } // end constructor\r\n\r\n\r\n ngOnInit() {\r\n\r\n // place holder\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n\r\n closeClick() {\r\n this.thisDialogRef.close();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n}// end class","\r\n
\r\n
\r\n Report Options - How To\r\n
\r\n\r\n \r\n
\r\n\r\n

\r\n Report Options are used to save/hide parameters you would like, and these will be pre-populated\r\n whenever\r\n you come into a report.\r\n

\r\n

\r\n User level parameters which have been marked to save will be updated with the latest value you have selected each time you run a\r\n report.\r\n

\r\n

\r\n If you select to hide a parameter, save will be checked as well, as this will be the actual value since\r\n it will not be visible unless you click \"Show Hidden Parameters\" on the report page.\r\n

\r\n

\r\n District level parameters can only be defined by administrators, and will override any user saved\r\n parameters.\r\n

\r\n

\r\n For district level parameters, you should select any values you would like to save/hide prior to coming\r\n to\r\n the report options page, as these are the values which will be saved.\r\n

\r\n\r\n

\r\n To be safe you should click \"Show Hidden Parameters\" on the report page to see which values will be saved.\r\n

\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
","\r\n
Report Options - {{reportName}}
\r\n\r\n\r\n\r\n\r\n
\r\n Please ensure you have selected any parameter values you want to save or hide prior to coming to this page.\r\n
\r\n \r\n \r\n It is strongly recommeneded you click the \"How To\" below to understand the behavior.\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n Personal\r\n District\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
Parameter\r\n \r\n \r\n Save\r\n \r\n \r\n \r\n Hide\r\n Is UserIs DistrictIs System
{{reportDef.ParameterLabel}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatRadioChange } from '@angular/material/radio';\r\nimport { LoginService } from '../../login/login.service';\r\n// import { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { Report } from '../models/report.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportDefinition } from '../models/report-definition.model';\r\nimport { ReportLegendComponent } from '../report-legend/report-legend.component';\r\nimport { ReportOptionsHowToComponent } from './report-options-how-to.component';\r\n\r\nimport { CheckForErrorsMessageComponent } from '../../../shared-components/guards/check-for-errors/check-for-errors-message/check-for-errors-message.component';\r\n\r\n// import { AddReportFolderComponent } from './add-folder/add-folder.component';\r\n// import { DeleteReportFolderComponent } from './delete-folder/delete-folder.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportOptions',\r\n templateUrl: './report-options.component.html',\r\n styleUrls: ['./report-options.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\nexport class ReportOptionsComponent implements OnInit, OnDestroy {\r\n\r\n thisDialogRef: MatDialogRef;\r\n reportLegendDialogRef: MatDialogRef;\r\n selectedReport: Report;\r\n reportName: string;\r\n howToDialogRef: MatDialogRef;\r\n\r\n reportDefinitions: ReportDefinition[] = [];\r\n userHasDistrictPermissions: boolean;\r\n isDistrictDefinitions: boolean;\r\n inDebugMode: boolean;\r\n saveAllChecked: boolean;\r\n hideAllChecked: boolean;\r\n // cancelCloseLabel: string;\r\n isFromMenu: boolean;\r\n isDirty: boolean;\r\n\r\n previouslySavedUserDefinitions: number[]; // existing ParameterValue.IDs\r\n previouslySavedDistrictDefinitions: number[]; // existing ParameterValue.IDs\r\n\r\n // reportFolders: ReportFolder[];\r\n\r\n // addReportFolderDialogRef: MatDialogRef;\r\n // deleteReportFolderDialogRef: MatDialogRef;\r\n\r\n // reportFolderChanged = false;\r\n\r\n // addReportFolderDialog: MatDialog;\r\n\r\n constructor(\r\n reportOptionsDialogRef: MatDialogRef,\r\n private reportLegendDialog: MatDialog,\r\n private howToDialog: MatDialog,\r\n private reportService: ReportingService,\r\n // private myReportsComponent: MyReportsComponent\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n // private checkForErrorsGuard: CheckForErrorsGuard,\r\n\r\n // private addReportFolderDialog: MatDialog,\r\n // private deleteReportFolderDialog: MatDialog,\r\n\r\n ) {\r\n\r\n this.thisDialogRef = reportOptionsDialogRef;\r\n }\r\n\r\n ngOnInit() {\r\n this.isDirty = false;\r\n this.inDebugMode = this.reportService.inDebugMode;\r\n this.selectedReport = this.reportService.SelectedReport;\r\n this.reportName = this.selectedReport.Name;\r\n this.userHasDistrictPermissions = this.reportService.userHasPrivilegeAddEditDistrictReportDefinitions;\r\n this.isDistrictDefinitions = false; // defaults to personal\r\n this.isFromMenu = this.reportService.isFromMenu;\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('isFromMenu = ');\r\n // console.log(this.isFromMenu);\r\n // }\r\n\r\n // REMOVE AFTER TESTING\r\n // this.selectedReport.Parameters.length = 0;\r\n\r\n\r\n // need to populate the report parameters if coming from actions menu instead of report parameters component\r\n if (this.isFromMenu) {\r\n this.getDefaultReportParametersForUser();\r\n }\r\n else {\r\n // we already have the parameters so go get the definitions\r\n this.getReportDefinitions();\r\n }\r\n }\r\n ngOnDestroy() { }\r\n\r\n getDefaultReportParametersForUser() {\r\n this.reportService.getReportParameters(-1, this.selectedReport, false).subscribe(selectedReport => {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('In getDefaultReportParametersForUser()');\r\n // console.log(selectedReport);\r\n // }\r\n\r\n this.getReportDefinitions();\r\n\r\n for (let i = 0; i < this.selectedReport.Parameters.length; i++) {\r\n\r\n // if (this.selectedReport.Parameters[i].ParameterReportDefinition.HasParameterValueDefined\r\n // && this.selectedReport.Parameters[i].ParameterReportDefinition.IsSystem == false\r\n // ) {\r\n // this.selectedReport.Parameters[i].SetBackgroundColorForSavedDefinition = true;\r\n // }\r\n\r\n // handle bit parameters if saved definition to convert from string\r\n\r\n if (this.selectedReport.Parameters[i].DataType == 'bit') {\r\n if (this.selectedReport.Parameters[i].ParameterReportDefinition.Value == '1') {\r\n this.selectedReport.Parameters[i].ParameterReportDefinition.Value = true;\r\n this.selectedReport.Parameters[i].Value = true;\r\n }\r\n else {\r\n this.selectedReport.Parameters[i].ParameterReportDefinition.Value = false;\r\n this.selectedReport.Parameters[i].Value = false;\r\n }\r\n\r\n }\r\n }\r\n\r\n // this.reportService.SelectedReport = selectedReport;\r\n this.selectedReport = selectedReport;\r\n this.selectedReport.IsDistrictReportDefinitions = false;\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n // cancelClick() {\r\n // this.thisDialogRef.close(this.isDirty);\r\n // }\r\n\r\n closeClick() {\r\n\r\n const parameterDefinitions: ReportDefinition[] = this.getUnsavedChanges();\r\n\r\n\r\n if (this.isDirty) {\r\n\r\n const dialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n disableClose: true,\r\n data: {\r\n errors: []\r\n }\r\n });\r\n\r\n dialog.componentInstance.dialogBox = dialog;\r\n dialog.afterClosed().subscribe(result => {\r\n console.log(result);\r\n switch (result) {\r\n case 1: { // save and continue\r\n this.reportService.saveReportOptions(parameterDefinitions, true).subscribe(saveWasSuccessful => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('saveWasSuccessful: ' + saveWasSuccessful);\r\n // console.log(parameterDefinitions);\r\n // }\r\n\r\n // close after save\r\n this.thisDialogRef.close(true);\r\n\r\n });\r\n break;\r\n }\r\n case 0: { // continue without save\r\n this.thisDialogRef.close(false);\r\n break;\r\n }\r\n case -1: { // cancel\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n });\r\n\r\n }\r\n else { // no unsaved changes\r\n this.thisDialogRef.close(false);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // cancelClick() {\r\n // switch (this.selectedTab) {\r\n // case 'Event': {\r\n // if (this.eventTab.formIsDirty) {\r\n // const dialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n // disableClose: true,\r\n // data: {\r\n // errors: []\r\n // }\r\n // });\r\n // dialog.componentInstance.dialogBox = dialog;\r\n // dialog.afterClosed().subscribe(result => {\r\n\r\n // switch (result) {\r\n // case 1: { // save and continue\r\n // if (this.validateTab()) {\r\n // this.saveBehaviorEvent(true);\r\n // }\r\n // break;\r\n // }\r\n // case 0: { // continue without save\r\n // this.dialogRef.close(null);\r\n // break;\r\n // }\r\n // case -1: { // cancel\r\n // break;\r\n // }\r\n // default: {\r\n // break;\r\n // }\r\n // }\r\n // });\r\n // }\r\n // else {\r\n // this.dialogRef.close(null);\r\n // }\r\n // break;\r\n // }\r\n // default: {\r\n // this.dialogRef.close(this.behaviorEvent);\r\n // break;\r\n // }\r\n // }\r\n // }\r\n\r\n saveAllChanged(isChecked: boolean) {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(isChecked);\r\n // }\r\n\r\n for (let i = 0; i < this.reportDefinitions.length; i++) {\r\n if (!this.isDisabled(this.reportDefinitions[i])) {\r\n this.reportDefinitions[i].SaveChecked = isChecked;\r\n this.saveChecked(this.reportDefinitions[i]);\r\n }\r\n }\r\n\r\n }\r\n\r\n hideAllChanged(isChecked: boolean) {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(isChecked);\r\n // }\r\n\r\n for (let i = 0; i < this.reportDefinitions.length; i++) {\r\n if (!this.isDisabled(this.reportDefinitions[i])) {\r\n this.reportDefinitions[i].HideChecked = isChecked;\r\n this.hideChecked(this.reportDefinitions[i]);\r\n }\r\n }\r\n\r\n }\r\n\r\n getReportDefinitions() {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(this.selectedReport);\r\n // }\r\n\r\n // this.cancelCloseLabel = 'Close';\r\n\r\n this.selectedReport.IsDistrictReportDefinitions = this.isDistrictDefinitions;\r\n\r\n this.reportService.getReportDefinitions(true).subscribe(reportDefs => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(reportDefs);\r\n // }\r\n\r\n\r\n this.reportDefinitions = reportDefs;\r\n\r\n for (let i = 0; i < this.reportDefinitions.length; i++) {\r\n\r\n // if HasParameterValueDefined we also need to uncheck any user level defs saved if running for district\r\n if (this.reportDefinitions[i].HasParameterValueDefined == 1 && (!this.isDistrictDefinitions || this.reportDefinitions[i].IsDistrictDefinedParameter)) {\r\n if (this.reportDefinitions[i].CanSave) {\r\n this.reportDefinitions[i].SaveChecked = true;\r\n }\r\n if (this.reportDefinitions[i].IsHidden) {\r\n this.reportDefinitions[i].HideChecked = true;\r\n }\r\n }\r\n if (!this.reportDefinitions[i].SaveChecked) {\r\n this.reportDefinitions[i].SaveChecked = false;\r\n }\r\n this.reportDefinitions[i].CanSave = this.reportDefinitions[i].SaveChecked;\r\n if (!this.isDisabled(this.reportDefinitions[i])) {\r\n this.reportDefinitions[i].IsUserDefinedParameter = !this.isDistrictDefinitions;\r\n this.reportDefinitions[i].IsDistrictDefinedParameter = this.isDistrictDefinitions;\r\n\r\n if (this.reportDefinitions[i].IsUserDefinedParameter) {\r\n this.reportDefinitions[i].Login_ID = this.reportService.login_ID;\r\n }\r\n else {\r\n this.reportDefinitions[i].Login_ID = -1;\r\n }\r\n }\r\n this.setBackgroundColorForSavedDefinition(this.reportDefinitions[i]);\r\n\r\n // set the value coming from the report parameters page\r\n\r\n for (let p = 0; p < this.selectedReport.Parameters.length; p++) {\r\n // if (this.selectedReport.Parameters[p].ParameterName == '@' + this.reportDefinitions[i].ParameterName)\r\n if (this.selectedReport.Parameters[p].ParameterName == '@' + this.reportDefinitions[i].ParameterName) {\r\n\r\n // since the saved definition value may be different than the current parameter value we need to check for isDirty even if they never check any checkboxes\r\n if (!this.isDirty) {\r\n\r\n // todo: we may need to handle the _Y/_N bit parameters here as well\r\n\r\n if (this.isDistrictDefinitions && this.reportDefinitions[i].IsDistrictDefinedParameter) {\r\n if (this.reportDefinitions[i].HasParameterValueDefined && this.reportDefinitions[i].Value != this.selectedReport.Parameters[p].Value) {\r\n this.isDirty = true;\r\n }\r\n }\r\n\r\n }\r\n\r\n this.reportDefinitions[i].Value = this.selectedReport.Parameters[p].Value;\r\n // if (this.inDebugMode) {\r\n // console.log('Setting definition value');\r\n // console.log(this.selectedReport.Parameters[p]);\r\n // console.log(this.reportDefinitions[i]);\r\n // }\r\n break; // continue;\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(this.reportDefinitions);\r\n // }\r\n\r\n\r\n });\r\n\r\n }\r\n\r\n saveChecked(reportDef: ReportDefinition) {\r\n reportDef.CanSave = reportDef.SaveChecked;\r\n\r\n if (this.isDistrictDefinitions) {\r\n reportDef.IsDistrictDefinedParameter = true;\r\n reportDef.IsUserDefinedParameter = false;\r\n }\r\n else {\r\n reportDef.IsDistrictDefinedParameter = false;\r\n reportDef.IsUserDefinedParameter = true;\r\n }\r\n\r\n\r\n // we need to save any parameters marked to hide\r\n\r\n if (reportDef.HideChecked) {\r\n reportDef.SaveChecked = true;\r\n this.isDisabled(reportDef);\r\n // this.hideChecked(reportDef);\r\n }\r\n\r\n this.setBackgroundColorForSavedDefinition(reportDef);\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(reportDef);\r\n // }\r\n\r\n }\r\n\r\n hideChecked(reportDef: ReportDefinition) {\r\n reportDef.IsHidden = reportDef.HideChecked;\r\n\r\n if (this.isDistrictDefinitions) {\r\n reportDef.IsDistrictDefinedParameter = true;\r\n reportDef.IsUserDefinedParameter = false;\r\n }\r\n else {\r\n reportDef.IsDistrictDefinedParameter = false;\r\n reportDef.IsUserDefinedParameter = true;\r\n }\r\n\r\n // we need to save any parameters marked to hide\r\n\r\n if (reportDef.HideChecked) {\r\n reportDef.SaveChecked = true;\r\n this.saveChecked(reportDef);\r\n }\r\n\r\n this.setBackgroundColorForSavedDefinition(reportDef);\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(reportDef);\r\n // }\r\n\r\n }\r\n\r\n saveReportOptionsClick() {\r\n const parameterDefinitions: ReportDefinition[] = this.getUnsavedChanges();\r\n\r\n if (this.inDebugMode) {\r\n console.log('Saving...');\r\n console.log(parameterDefinitions);\r\n }\r\n\r\n // need to save any changes\r\n this.reportService.saveReportOptions(parameterDefinitions, true).subscribe(saveWasSuccessful => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('saveWasSuccessful: ' + saveWasSuccessful);\r\n // console.log(parameterDefinitions);\r\n // }\r\n\r\n // close after save\r\n this.thisDialogRef.close(true);\r\n\r\n });\r\n\r\n // if (this.isDirty) {\r\n\r\n // // need to save any changes\r\n // this.reportService.saveReportOptions(parameterDefinitions, true).subscribe(saveWasSuccessful => {\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n // // console.log('saveWasSuccessful: ' + saveWasSuccessful);\r\n // // console.log(parameterDefinitions);\r\n // // }\r\n\r\n // // close after save\r\n // this.thisDialogRef.close(this.isDirty);\r\n\r\n // });\r\n\r\n // }\r\n // else { // NO need to save any changes\r\n // this.thisDialogRef.close(this.isDirty);\r\n // }\r\n\r\n }\r\n\r\n // saveReportOptionsClick() {\r\n\r\n // const parameterDefinitions: ReportDefinition[] = [];\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n // // console.log(this.reportDefinitions);\r\n // // }\r\n\r\n // for (let i = 0; i < this.reportDefinitions.length; i++) {\r\n\r\n // let thisReportDef: ReportDefinition;\r\n // thisReportDef = this.reportDefinitions[i];\r\n\r\n // // handle bit parameters since we need them as 1 or 0 in database but boolean in typescript\r\n // if (thisReportDef.DataType == 'bit') {\r\n // if (thisReportDef.Value == true) {\r\n // thisReportDef.Value = '1';\r\n // }\r\n // else {\r\n // thisReportDef.Value = '0';\r\n // }\r\n // }\r\n\r\n // if (\r\n // // we want to ignore any system parameters\r\n // !(thisReportDef.IsSystem && !thisReportDef.AllowUserSaveParameter && !thisReportDef.AllowUserHideParameter)\r\n\r\n // // we want to ignore any parameters that don't have a saved definition and have no options checked\r\n // // && !(thisReportDef.HasReportDefinition == 0 && !thisReportDef.CanSave && !thisReportDef.IsHidden)\r\n // && !(thisReportDef.HasReportDefinition == 0 && !thisReportDef.SaveChecked && !thisReportDef.IsHidden)\r\n\r\n // ) {\r\n // if (thisReportDef.SaveChecked) {\r\n // thisReportDef.CanSave = true;\r\n // }\r\n // else {\r\n // thisReportDef.CanSave = false;\r\n // }\r\n\r\n // if (thisReportDef.HideChecked) {\r\n // thisReportDef.IsHidden = true;\r\n // }\r\n // else {\r\n // thisReportDef.IsHidden = false;\r\n // }\r\n\r\n // // now we need to determine if this component needs to be marked as isDirty\r\n\r\n // // first we will look at new definitions to be saved\r\n\r\n // if (!this.isDirty && thisReportDef.HasParameterValueDefined == 0 && thisReportDef.SaveChecked) {\r\n\r\n // if (this.isDistrictDefinitions && thisReportDef.IsDistrictDefinedParameter) {\r\n // this.isDirty = true;\r\n // }\r\n // else if (!this.isDistrictDefinitions && thisReportDef.IsUserDefinedParameter) {\r\n // this.isDirty = true;\r\n // }\r\n // }\r\n\r\n // // now we will look at existing definitions that have been unchecked to save\r\n\r\n // if (!this.isDirty && thisReportDef.HasParameterValueDefined == 1 && !thisReportDef.SaveChecked) {\r\n\r\n // if (this.isDistrictDefinitions && thisReportDef.IsDistrictDefinedParameter) {\r\n // this.isDirty = true;\r\n // }\r\n // else if (!this.isDistrictDefinitions && thisReportDef.IsUserDefinedParameter) {\r\n // this.isDirty = true;\r\n // }\r\n // }\r\n\r\n\r\n\r\n\r\n // // // set the value coming from the report parameters page\r\n // // if (thisReportDef.CanSave) {\r\n // // for (let p = 0; p < this.selectedReport.Parameters.length; p++) {\r\n // // if (this.selectedReport.Parameters[p].ParameterReportDefinition.ParameterName_ID == thisReportDef.ParameterName_ID) {\r\n // // thisReportDef.Value = this.selectedReport.Parameters[p].Value;\r\n // // }\r\n // // }\r\n // // }\r\n\r\n\r\n // // handle district parameters\r\n // // this.selectedReport.IsDistrictReportDefinitions\r\n // if (this.isDistrictDefinitions && thisReportDef.IsDistrictDefinedParameter) {\r\n // parameterDefinitions.push(thisReportDef);\r\n // }\r\n\r\n // // handle user parameter definitions\r\n // // this.selectedReport.IsDistrictReportDefinitions\r\n // if (!this.selectedReport.IsDistrictReportDefinitions && !thisReportDef.IsDistrictDefinedParameter && (thisReportDef.SaveChecked || thisReportDef.HideChecked)) {\r\n // thisReportDef.Login_ID = this.reportService.login_ID;\r\n // parameterDefinitions.push(thisReportDef);\r\n // }\r\n\r\n // }\r\n\r\n // }\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n // // console.log(parameterDefinitions);\r\n // // }\r\n\r\n // if (this.isDirty) {\r\n\r\n // // need to save any changes\r\n // this.reportService.saveReportOptions(parameterDefinitions, true).subscribe(saveWasSuccessful => {\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n // // console.log('saveWasSuccessful: ' + saveWasSuccessful);\r\n // // console.log(parameterDefinitions);\r\n // // }\r\n\r\n // // close after save\r\n // this.thisDialogRef.close(this.isDirty);\r\n\r\n // });\r\n\r\n // }\r\n // else { // NO need to save any changes\r\n // this.thisDialogRef.close(this.isDirty);\r\n // }\r\n\r\n\r\n\r\n // }\r\n\r\n\r\n getUnsavedChanges(): ReportDefinition[] {\r\n\r\n this.isDirty = false;\r\n\r\n const parameterDefinitions: ReportDefinition[] = [];\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(this.reportDefinitions);\r\n // }\r\n\r\n for (let i = 0; i < this.reportDefinitions.length; i++) {\r\n\r\n let thisReportDef: ReportDefinition;\r\n thisReportDef = this.reportDefinitions[i];\r\n\r\n // handle bit parameters since we need them as 1 or 0 in database but boolean in typescript\r\n if (thisReportDef.DataType == 'bit') {\r\n if (thisReportDef.Value == true) {\r\n thisReportDef.Value = '1';\r\n }\r\n else {\r\n thisReportDef.Value = '0';\r\n }\r\n }\r\n\r\n if (\r\n // we want to ignore any system parameters\r\n !(thisReportDef.IsSystem && !thisReportDef.AllowUserSaveParameter && !thisReportDef.AllowUserHideParameter)\r\n\r\n // we want to ignore any parameters that don't have a saved definition and have no options checked\r\n // && !(thisReportDef.HasReportDefinition == 0 && !thisReportDef.CanSave && !thisReportDef.IsHidden)\r\n && !(thisReportDef.HasReportDefinition == 0 && !thisReportDef.SaveChecked && !thisReportDef.IsHidden)\r\n\r\n ) {\r\n if (thisReportDef.SaveChecked) {\r\n thisReportDef.CanSave = true;\r\n }\r\n else {\r\n thisReportDef.CanSave = false;\r\n }\r\n\r\n if (thisReportDef.HideChecked) {\r\n thisReportDef.IsHidden = true;\r\n }\r\n else {\r\n thisReportDef.IsHidden = false;\r\n }\r\n\r\n // now we need to determine if this component needs to be marked as isDirty\r\n\r\n // first we will look at new definitions to be saved\r\n\r\n if (!this.isDirty && thisReportDef.HasParameterValueDefined == 0 && thisReportDef.SaveChecked) {\r\n\r\n if (this.isDistrictDefinitions && thisReportDef.IsDistrictDefinedParameter) {\r\n this.isDirty = true;\r\n\r\n if (this.inDebugMode) {\r\n console.log('isDirty');\r\n console.log(thisReportDef);\r\n }\r\n }\r\n else if (!this.isDistrictDefinitions && thisReportDef.IsUserDefinedParameter) {\r\n this.isDirty = true;\r\n if (this.inDebugMode) {\r\n console.log('isDirty');\r\n console.log(thisReportDef);\r\n }\r\n }\r\n }\r\n\r\n // now we will look at existing definitions that have been unchecked to save\r\n\r\n if (!this.isDirty && thisReportDef.HasParameterValueDefined == 1 && !thisReportDef.SaveChecked) {\r\n\r\n if (this.isDistrictDefinitions && thisReportDef.IsDistrictDefinedParameter) {\r\n this.isDirty = true;\r\n if (this.inDebugMode) {\r\n console.log('isDirty');\r\n console.log(thisReportDef);\r\n }\r\n }\r\n else if (!this.isDistrictDefinitions && thisReportDef.IsUserDefinedParameter) {\r\n this.isDirty = true;\r\n if (this.inDebugMode) {\r\n console.log('isDirty');\r\n console.log(thisReportDef);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // // set the value coming from the report parameters page\r\n // if (thisReportDef.CanSave) {\r\n // for (let p = 0; p < this.selectedReport.Parameters.length; p++) {\r\n // if (this.selectedReport.Parameters[p].ParameterReportDefinition.ParameterName_ID == thisReportDef.ParameterName_ID) {\r\n // thisReportDef.Value = this.selectedReport.Parameters[p].Value;\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n // handle district parameters\r\n // this.selectedReport.IsDistrictReportDefinitions\r\n if (this.isDistrictDefinitions && thisReportDef.IsDistrictDefinedParameter) {\r\n parameterDefinitions.push(thisReportDef);\r\n }\r\n\r\n // handle user parameter definitions\r\n // this.selectedReport.IsDistrictReportDefinitions\r\n if (!this.selectedReport.IsDistrictReportDefinitions && !thisReportDef.IsDistrictDefinedParameter && (thisReportDef.SaveChecked || thisReportDef.HideChecked)) {\r\n thisReportDef.Login_ID = this.reportService.login_ID;\r\n parameterDefinitions.push(thisReportDef);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n return parameterDefinitions;\r\n\r\n\r\n // if (this.isDirty) {\r\n\r\n // // need to save any changes\r\n // this.reportService.saveReportOptions(parameterDefinitions, true).subscribe(saveWasSuccessful => {\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n // // console.log('saveWasSuccessful: ' + saveWasSuccessful);\r\n // // console.log(parameterDefinitions);\r\n // // }\r\n\r\n // // close after save\r\n // this.thisDialogRef.close(this.isDirty);\r\n\r\n // });\r\n\r\n // }\r\n // else { // NO need to save any changes\r\n // this.thisDialogRef.close(this.isDirty);\r\n // }\r\n\r\n\r\n\r\n }\r\n\r\n isDisabled(reportDef: ReportDefinition) {\r\n let isDisabled = false;\r\n // disable user parameters where there is a district override\r\n if (!this.isDistrictDefinitions && reportDef.IsDistrictDefinedParameter && reportDef.HasParameterValueDefined == 1) {\r\n isDisabled = true;\r\n }\r\n // if (reportDef.HideChecked) {\r\n // isDisabled = true;\r\n // }\r\n return isDisabled;\r\n }\r\n\r\n isSaveDisabled(reportDef: ReportDefinition) {\r\n let isDisabled = false;\r\n // disable user parameters where there is a district override\r\n if (!this.isDistrictDefinitions && reportDef.IsDistrictDefinedParameter && reportDef.HasParameterValueDefined == 1) {\r\n isDisabled = true;\r\n }\r\n if (reportDef.HideChecked) {\r\n isDisabled = true;\r\n }\r\n return isDisabled;\r\n }\r\n\r\n IsDistrictReportDefinitionsChanged(event: MatRadioChange) {\r\n\r\n // this.selectedReport.IsDistrictReportDefinitions = !this.selectedReport.IsDistrictReportDefinitions;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // // console.log('IsDistrictReportDefinitionsChanged()');\r\n // console.log(event.value);\r\n // // console.log('this.selectedReport.IsDistrictReportDefinitions');\r\n // // console.log(this.selectedReport.IsDistrictReportDefinitions);\r\n // }\r\n\r\n if (event.value == 'true') {\r\n this.isDistrictDefinitions = true;\r\n this.selectedReport.IsDistrictReportDefinitions = true;\r\n }\r\n else {\r\n this.isDistrictDefinitions = false;\r\n this.selectedReport.IsDistrictReportDefinitions = false;\r\n }\r\n // we need to reload the report for appropriate saved report defs\r\n\r\n // this.selectedReport.GetSelectedReportDefintionsOnly = false;\r\n\r\n this.getReportDefinitions();\r\n\r\n // this.selectedReport.Parameters.length = 0;\r\n // this.selectedReport.ReportDefinitions.length = 0;\r\n\r\n\r\n // this.reportService.getReportParameters(-1, this.selectedReport).subscribe(report => {\r\n // this.selectedReport = report; // update the local reference\r\n // });\r\n\r\n\r\n }\r\n\r\n setBackgroundColorForSavedDefinition(repDef: ReportDefinition) {\r\n if (repDef.HideChecked || repDef.SaveChecked) {\r\n if (repDef.IsDistrictDefinedParameter) {\r\n repDef.BackgroundColorForSavedDefinition = this.reportService.backgroundColorForDistrictDefinedDefinition;\r\n }\r\n else if (repDef.IsUserDefinedParameter) {\r\n repDef.BackgroundColorForSavedDefinition = this.reportService.backgroundColorForUserDefinedDefinition;\r\n }\r\n }\r\n else {\r\n repDef.BackgroundColorForSavedDefinition = null;\r\n }\r\n }\r\n\r\n defintionsToConsole() {\r\n console.log(this.reportDefinitions);\r\n console.log('IsDirty: ' + this.isDirty);\r\n }\r\n\r\n selectedReportToConsole() {\r\n console.log(this.selectedReport);\r\n }\r\n\r\n // folderDeleteClick(folder: ReportFolder) {\r\n // this.reportService.reportFolderIdToDelete = folder.Id;\r\n // this.reportService.reportFolderNameToDelete = folder.Name;\r\n // this.deleteReportFolderDialogRef = this.deleteReportFolderDialog.open(DeleteReportFolderComponent, {\r\n // panelClass: 'tyl-mat-dialog',\r\n // disableClose: true\r\n // });\r\n\r\n // this.deleteReportFolderDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('deleteReportFolderDialogRef.afterClosed()');\r\n // }\r\n\r\n // if (result == true) {\r\n // // we need to refresh report folders\r\n\r\n // this.getMyReportFolders();\r\n // }\r\n\r\n // });\r\n // }\r\n\r\n // addFolderClick() {\r\n\r\n // this.addReportFolderDialogRef = this.addReportFolderDialog.open(AddReportFolderComponent, {\r\n // panelClass: 'tyl-mat-dialog',\r\n // disableClose: true\r\n // });\r\n\r\n // this.addReportFolderDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('addReportFolderDialogRef.afterClosed()');\r\n // }\r\n\r\n // if (result == true) {\r\n // // we need to refresh report folders\r\n\r\n // this.getMyReportFolders();\r\n // }\r\n\r\n // });\r\n\r\n\r\n // }\r\n\r\n // getMyReportFolders(): void {\r\n // this.reportService.getMyReportFolders().subscribe(folders => {\r\n // this.reportFolders = folders;\r\n // this.reportService.ReportFolders = this.reportFolders;\r\n\r\n // });\r\n // }\r\n\r\n\r\n // closeClick() {\r\n // // this.getMyReportFolders();\r\n // this.thisDialogRef.close(this.isDirty);\r\n // }\r\n\r\n\r\n // saveFolderReports(selectedFolderIds: number[]) {\r\n\r\n // // // we need to save the report folders\r\n // // this.reportService.saveFolderReports(this.reportService.login_ID, this.selectedReport.Id, selectedFolderIds).subscribe(results => {\r\n // // this.thisDialogRef.close('Folders Saved');\r\n // // });\r\n // }\r\n\r\n legendClick() {\r\n this.reportLegendDialogRef = this.reportLegendDialog.open(ReportLegendComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n }\r\n\r\n howToClick() {\r\n this.howToDialogRef = this.howToDialog.open(ReportOptionsHowToComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n }\r\n\r\n\r\n}","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\n\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { LoginService } from '../../login/login.service';\r\nimport { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportHeader',\r\n templateUrl: './report-header.component.html',\r\n styleUrls: ['./report-header.component.css']\r\n})\r\nexport class ReportHeaderComponent implements OnInit, OnDestroy {\r\n\r\n loginSettings: LoginSettings;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n private loginService: LoginService\r\n ) {\r\n this.loginSettings = loginService.LoginSettings;\r\n\r\n } // end constructor\r\n\r\n\r\n ngOnInit() { }\r\n\r\n ngOnDestroy() { }\r\n\r\n // closeReportingWindow(){\r\n // console.log(\"ReportHeaderComponent.ts=>closeReportingWindow()\");\r\n // }\r\n\r\n closeClick() {\r\n // console.log('ReportHeaderComponent.ts => closeClick()');\r\n this.dialogRef.close();\r\n }\r\n\r\n} // end export class ReportHeaderComponent\r\n\r\n\r\n\r\n\r\n","
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Tyler SIS\r\n \r\n Reports \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n\r\n
\r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n
\r\n\r\n","export class DataSource {\r\n Id: string;\r\n TextField: string;\r\n ValueField: string;\r\n IsSelected: boolean;\r\n}\r\n\r\n","import { Report } from './report.model';\r\n\r\nexport class ReportFolder {\r\n Description: string;\r\n Id: number;\r\n Name: string;\r\n Reports: Report[];\r\n ReportInFolder: boolean;\r\n IsDetailRowExpanded: boolean;\r\n Order: number;\r\n}","import { Lookup } from '../../../shared-components/lookup/lookup.model';\r\nimport { CourseTerm } from '../../../student360/student-schedule/course-term.model';\r\nimport { TeacherPreview } from './teacher-preview.model';\r\nexport class ReportParameterV9 {\r\n IsCriteriaChange: boolean;\r\n ReportTitle: string;\r\n isValueChange: boolean;\r\n isReportList: boolean;\r\n PrintDate: string;\r\n AttendanceDate = '';\r\n FromPeriod: number;\r\n ToPeriod: number;\r\n Week1Date = '';\r\n Week2Date = '';\r\n TermId: number;\r\n radValue: string;\r\n SkipLineBetweenStudent = false;\r\n PrintWithGreyHeading = false;\r\n PrintStudentAbsencesAlreadyEntered = false;\r\n PrintTeacherSignatureLine = false;\r\n OtherFields: Lookup[];\r\n Terms: CourseTerm[];\r\n OtherField: string;\r\n Select: boolean;\r\n ReportGridData: TeacherPreview[];\r\n selectAllReportGridData: boolean;\r\n PrintAdds = false;\r\n PrintComment = false;\r\n\r\n AddTermAll() {\r\n const term = new CourseTerm();\r\n term.Id = 0;\r\n term.LongDescription = ' All Terms';\r\n this.Terms.push(term);\r\n }\r\n\r\n\r\n\r\n}\r\n","import { V9ReportParameter } from './v9-report-parameter.model';\r\n\r\nexport class ReportV9 {\r\n Id: number;\r\n ParentId: number;\r\n Description: string;\r\n ReportName: string;\r\n ReportTitle: string;\r\n ReportType: number;\r\n Active: boolean;\r\n WorkflowReport: boolean;\r\n MinimumStudentsForWorkflow: number;\r\n ReportParameterClassName: string;\r\n StudentIds: string;\r\n ReportsList: ReportV9[];\r\n ReportParameters: V9ReportParameter[];\r\n ReportValue: number;\r\n SchoolId: number;\r\n YearId: number;\r\n SiteSectionId: number;\r\n}\r\n","\r\nimport { AutoRunSnapshot } from './auto-run-report-snapshots.model';\r\nimport { ParameterDependency } from './parameter-dependency.model';\r\nimport { ReportParameter } from './report-parameter.model';\r\nimport { ReportDefinition } from './report-definition.model';\r\nimport { StudentDigitalContent } from '../../../student360/student-digital-content/models/student-digital-content.model';\r\n// import { StudentDocuments} from '../../../shared-components/student/student-documents.model';\r\nimport { Portfolio } from '../../../student360/portfolio/portfolio.model';\r\nimport { DocumentArchivePermissions } from './document-archive-permissions.model';\r\nimport { ReportBatch } from './report-batch.model';\r\n\r\nexport class Report {\r\n Id: number;\r\n Name: string;\r\n Procedure: string;\r\n Type: string;\r\n URL: string;\r\n AutoRun: string;\r\n AutoRunReport: boolean;\r\n AutoRunSchedule_ID: number;\r\n AutoRunFrequency: number;\r\n AutoRunDate: Date;\r\n AutoRunTime: string;\r\n AutoRunDay: string;\r\n Snapshots: AutoRunSnapshot[];\r\n ReportFolder: string;\r\n ReportFormat: string;\r\n Parameters: ReportParameter[];\r\n Dependencies: ParameterDependency[];\r\n ReportDefinitions: ReportDefinition[];\r\n IsSysGen: number;\r\n ShowReportOptions: boolean;\r\n SendToEmail: boolean;\r\n IsDistributeByEmail: boolean;\r\n EmailFrom: string;\r\n EmailsToSendReport: string;\r\n EmailSubject: string;\r\n EmailBody: string;\r\n IsDistrictReportDefinitions: boolean;\r\n GetSelectedReportDefintionsOnly: boolean;\r\n AllowAutoRun: boolean;\r\n AllowTCMArchiving: boolean;\r\n AllowStudentDigitalContent: boolean;\r\n AllowStudentPortfolio: boolean;\r\n // properties from services to attempt to pre-populate certain parameters in the DTO\r\n SelectedSubjectId: number;\r\n SelectedSubjectCode: string;\r\n SelectedSectionId: number;\r\n SelectedSectionName: string;\r\n SelectedStudentId: number;\r\n\r\n // UseReportDefinitions: boolean;\r\n // ParameterRows: ParameterRow[];\r\n // WeeklyTime: string;\r\n // DailyTime\r\n\r\n // archive properties:\r\n IsArchiveReport: boolean;\r\n\r\n StudentDigitalContent: StudentDigitalContent;\r\n HasUniqueStudentParameter: boolean;\r\n HasDistributeByEmailParameter: boolean;\r\n\r\n StudentPortfolio: Portfolio; // StudentDocuments;\r\n\r\n ArchiveToTCM: boolean; // when they click to save to TCM\r\n TCM_DocumentType: string;\r\n\r\n ShowArchiveToPdfButton: boolean;\r\n DocumentArchivePermissions: DocumentArchivePermissions[];\r\n\r\n // parameter groups\r\n\r\n UseParameterGroups: boolean; // so I can turn off this functionality until I get all of the parts into place -- ONE-2400\r\n\r\n // parameter formatting\r\n\r\n UseParameterFormatting: boolean; // so I can turn off this functionality until I get all of the parts into place -- ONE-2400\r\n\r\n ReportBatch: ReportBatch;\r\n ArchiveToStudentPortfolio: boolean;\r\n ArchiveToStudentDigitalContent: boolean;\r\n\r\n QueryString: string;\r\n Login_ID: number;\r\n\r\n UtilizeTranscriptTracking: boolean;\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { V9ReportParameter } from './v9-report-parameter.model';\r\n\r\nexport class V9ParameterRow {\r\n Parameters: V9ReportParameter[] = [];\r\n IncludeLineAtStartOfGroup: boolean;\r\n IncludeLineAtEndOfGroup: boolean;\r\n}\r\n\r\nexport class V9ParameterRows {\r\n Rows: V9ParameterRow[] = [];\r\n}\r\n","import { ReportParameter } from './report-parameter.model';\r\n\r\nexport class ParameterRow {\r\n Parameters: ReportParameter[] = [];\r\n HasParameterInGroup: boolean;\r\n IncludeGroupLabel: boolean;\r\n Group_ID: number;\r\n MaxNumberOfParameters: number;\r\n Colspan: number;\r\n GroupLabel: string;\r\n IncludeLineAtStartOfGroup: boolean;\r\n IncludeLineAtEndOfGroup: boolean;\r\n AlreadyCheckedForGroupStart: boolean;\r\n AlreadyCheckedForGroupEnd: boolean;\r\n IsStartOfVisibleGroup: boolean;\r\n IsEndOfVisibleGroup: boolean;\r\n\r\n // constructor(parameters: ReportParameter[]) {\r\n // this.Parameters = parameters;\r\n // }\r\n}\r\n\r\n\r\n\r\n\r\n // RowNumber: number;\r\n // ParameterIds: number[] = [];\r\n // NumberOfColumns: number;\r\n","import { ParameterRow } from './parameter-row-model';\r\n\r\nexport class ParameterRows {\r\n Rows: ParameterRow[] = [];\r\n}\r\n","
{{header}}
\r\n\r\n \r\n \r\n\r\n
\r\n Are you sure you want to send this report to the emails listed?\r\n
\r\n If you continue, the report will be sent to the recipient(s) once the report is processed.\r\n
\r\n\r\n
\r\n Are you sure you want to distribute this report to the emails of the student/contact(s) listed?\r\n
{{selectedRecipients}}

\r\n If you continue, this report will be emailed to ALL students/contacts selected. You will receive an email with the results.\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n \r\n ","import { Component, OnDestroy, OnInit, } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'ReportToEmail',\r\n templateUrl: './confirm-report-to-email.component.html',\r\n styleUrls: ['./confirm-report-to-email.component.css']\r\n})\r\n\r\nexport class ConfirmReportToEmailComponent implements OnDestroy, OnInit {\r\n\r\n\r\n\r\n // private snapshotToDelete: AutoRunSnapshot;\r\n\r\n // private _reportName: string;\r\n // private _autoRunDate: Date;\r\n\r\n // get reportName(): string {\r\n // return this._reportName;\r\n // }\r\n\r\n // set reportName(value: string) {\r\n // this._reportName = value;\r\n // }\r\n\r\n // get autoRunDate(): Date {\r\n // return this._autoRunDate;\r\n // }\r\n\r\n // set autoRunDate(value: Date) {\r\n // this._autoRunDate = value;\r\n // }\r\n\r\n isDistributebyEmail: boolean; // ONE-4387\r\n\r\n selectedRecipients: string;\r\n\r\n header = 'Report to Email';\r\n\r\n constructor(\r\n // private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n ) {\r\n\r\n // this.snapshotToDelete = reportService.autoRunSnapshot;\r\n\r\n // this.autoRunDate = this.snapshotToDelete.TimeStamp;\r\n // this.reportName = this.snapshotToDelete.ReportName;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.isDistributebyEmail = this.reportService.isDistributebyEmail;\r\n\r\n\r\n\r\n if (this.reportService.isDistributebyEmail) {\r\n\r\n this.header = 'Distribute By Email';\r\n\r\n }\r\n\r\n this.selectedRecipients = '';\r\n\r\n\r\n if (this.reportService.distributeByEmailOption_StudentSelected) {\r\n this.selectedRecipients += 'Student, ';\r\n }\r\n if (this.reportService.distributeByEmailOption_PrimaryContactSelected) {\r\n this.selectedRecipients += ' Primary Contact, ';\r\n }\r\n if (this.reportService.distributeByEmailOption_AllElectronicContactsSelected) {\r\n this.selectedRecipients += ' All Electronic Contacts, ';\r\n }\r\n\r\n let temp = '';\r\n temp = this.selectedRecipients.substring(0, this.selectedRecipients.length - 2); // remove trailing ,\r\n this.selectedRecipients = temp;\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(this.isDistributebyEmail);\r\n console.log(this.selectedRecipients);\r\n }\r\n\r\n }\r\n\r\n okClick() {\r\n\r\n // const snapshotId = this.snapshotToDelete.AutoRunReportSnapshots_ID;\r\n\r\n // this.reportService.deleteReportSnapshot(snapshotId).subscribe(res => {\r\n\r\n // // todo: check that the delete was successful\r\n // this.reportService.autoRunSnapshot = null;\r\n // // this.ReportToEmailEvent.emit(true);\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n\r\n // // }\r\n // });\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n cancelClick() {\r\n // this.ReportToEmailEvent.emit(false);\r\n this.dialogRef.close(false);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'ReportToEmail',\r\n templateUrl: './confirm-archive-report.component.html',\r\n styleUrls: ['./confirm-archive-report.component.css']\r\n})\r\n\r\nexport class ConfirmArchiveReportComponent implements OnDestroy, OnInit {\r\n\r\n\r\n\r\n // private snapshotToDelete: AutoRunSnapshot;\r\n\r\n private _reportName: string;\r\n // private _autoRunDate: Date;\r\n\r\n get reportName(): string {\r\n return this._reportName;\r\n }\r\n\r\n set reportName(value: string) {\r\n this._reportName = value;\r\n }\r\n\r\n archiveTypes = '';\r\n\r\n // get autoRunDate(): Date {\r\n // return this._autoRunDate;\r\n // }\r\n\r\n // set autoRunDate(value: Date) {\r\n // this._autoRunDate = value;\r\n // }\r\n\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.reportName = this.reportService.SelectedReport.Name;\r\n // if (this.reportService.SelectedReport.StudentDigitalContent != null) {\r\n // this.archiveTypes = this.archiveTypes + 'Student Digital Content\\n';\r\n // }\r\n\r\n // if (this.reportService.SelectedReport.StudentPortfolio != null) {\r\n // this.archiveTypes = this.archiveTypes + 'Student Portfolio\\n';\r\n // }\r\n\r\n // if (this.reportService.SelectedReport.ArchiveToTCM) {\r\n // this.archiveTypes = this.archiveTypes + 'Tyler Content Manager\\n';\r\n // }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n okClick() {\r\n\r\n // const snapshotId = this.snapshotToDelete.AutoRunReportSnapshots_ID;\r\n\r\n // this.reportService.deleteReportSnapshot(snapshotId).subscribe(res => {\r\n\r\n // // todo: check that the delete was successful\r\n // this.reportService.autoRunSnapshot = null;\r\n // // this.ReportToEmailEvent.emit(true);\r\n\r\n // // if (this.reportService.inDebugMode) {\r\n\r\n // // }\r\n // });\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n cancelClick() {\r\n // this.ReportToEmailEvent.emit(false);\r\n this.dialogRef.close(false);\r\n }\r\n\r\n\r\n}","
Archive Report
\r\n\r\n \r\n \r\n
\r\n Are you sure you want to archive the report {{reportName}}?\r\n
\r\n If you continue, the report will be archived to your selected destination(s) once the report is through being processed.\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n ","\r\n\r\nexport class ReportBatch {\r\n Id: number;\r\n TotalNumberOfStudents: number;\r\n NumberOfStudentsCompleted: number;\r\n BatchDescription: string;\r\n ReportName: string;\r\n IsSysGen: number;\r\n AddedByLogin_Id: number;\r\n AddedOn: Date;\r\n AddedByName: string;\r\n ErrorMessage_Id: number;\r\n HasError: boolean;\r\n ErrMsg = '';\r\n ProcessingDescription: string;\r\n Cancel: boolean;\r\n InProcess: boolean;\r\n OperationDescriptions: string;\r\n Operations: ReportBatchOperation[] = [];\r\n RemoveArchivedFiles: boolean;\r\n ShowTotalNumberOfStudents: boolean;\r\n // SkipActuallyArchivingReport = false; // for testing process without actually pushing report out\r\n\r\n AddedOnDate_Display: string;\r\n AddedOnTime_Display: string;\r\n\r\n viewArchiveProcessesFromAllUsers: boolean;\r\n allowCancelArchiveProcesses: boolean;\r\n allowDeleteArchivedReports: boolean;\r\n\r\n sendEmailNotification: boolean;\r\n DistributeByEmailOption: string; // comma delimited string, 1 = Student, 2 = PrimaryContact, 3 = AllElectronicContacts\r\n\r\n EmailFrom: string;\r\n EmailsToSendReport: string;\r\n EmailSubject: string;\r\n EmailBody: string;\r\n}\r\n\r\nexport class ReportBatchOperation {\r\n Batch_Id: number;\r\n Operation_Id: number;\r\n OperationOrder: number;\r\n OperationDescription: string;\r\n ProcessingDescription: string;\r\n CurrentStudent_Id: number;\r\n ErrorMessage_Id: number;\r\n HasError: boolean;\r\n ErrMsg = '';\r\n // RemoveArchivedFiles: boolean;\r\n}\r\n\r\n","
\r\n Archive Report\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n {{reportName}}
\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n Archive in Student Digital Content\r\n \r\n \r\n \r\n \r\n \r\n {{type.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n \r\n Archive in Student Portfolio\r\n \r\n \r\n \r\n \r\n \r\n {{category.StuPortCategoryName}}\r\n \r\n \r\n \r\n
\r\n \r\n Archive in Tyler Content Manager\r\n \r\n \r\n \r\n \r\n \r\n {{docType.TextField}}\r\n \r\n \r\n \r\n
\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n '' && allowArchiveToStudentPortfolio\" style=\"width:100%;\">\r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n
\r\n \r\n Send Email Notifications (Only for Student Portfolio)\r\n \r\n\r\n \r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Send emails to:\r\n \r\n \r\n Student\r\n \r\n \r\n Primary Contact\r\n \r\n \r\n All Electronic Contacts\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n
\r\n \r\n
","import { Component, OnInit, ViewChild, Inject, ElementRef } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\n// import { StudentDigitalContentService } from '../student-digital-content.service';\r\n// import { StudentDigitalContent } from '../models/student-digital-content.model';\r\nimport { LookupService } from '../../../shared-components/lookup/lookup.service';\r\nimport { Lookup } from '../../../shared-components/lookup/lookup.model';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\n\r\nimport { StudentDigitalContent } from '../../../student360/student-digital-content/models/student-digital-content.model';\r\nimport { Portfolio } from '../../../student360/portfolio/portfolio.model';\r\nimport { PortfolioService } from '../../../student360/portfolio/portfolio.service';\r\n\r\nimport { ReportingService } from '../reporting.service';\r\n// import { AnyARecord } from 'dns';\r\n\r\nimport { DataSource } from '../models/data-source.model';\r\nimport { ConfirmArchiveReportComponent } from './confirm-archive-report.component';\r\nimport { ArchiveProcessComponent } from './archive-process.component';\r\nimport { ReportBatch } from '../models/report-batch.model';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { Report } from '../models/report.model';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'archive-report-modal',\r\n templateUrl: './archive-report-modal.component.html'\r\n})\r\n\r\nexport class ArchiveReportModalComponent implements OnInit {\r\n\r\n studentDigitalContent: StudentDigitalContent;\r\n studentPortfolio: Portfolio;\r\n\r\n documentTypeIdString: string;\r\n descriptionString: string;\r\n fileNameString: string;\r\n portfolioCategories: any[];\r\n fileCategoryId: number;\r\n\r\n newFile: boolean;\r\n fileError: boolean;\r\n documentTypes: Lookup[] = [];\r\n errors: ErrorList[] = [];\r\n\r\n selectedTCMdocument: string;\r\n tcmDocumentTypes: DataSource[] = [];\r\n reportName: string;\r\n batchDescription: string;\r\n MailServer: string;\r\n selectedReport: Report;\r\n sendEmailStudent: boolean;\r\n sendEmailPrimaryContact: boolean;\r\n sendEmailAllElectronicContacts: boolean;\r\n sendEmailNotification: boolean;\r\n\r\n emailBody = '';\r\n emailSubject = '';\r\n emailFrom = '';\r\n\r\n\r\n @ViewChild('fileNameInput', { read: ElementRef, static: true }) fileNameInput: ElementRef;\r\n @ViewChild('documentTypeInput', { read: ElementRef, static: true }) documentTypeInput: ElementRef;\r\n @ViewChild('fileCategoryInput', { read: ElementRef, static: true }) fileCategoryInput: ElementRef;\r\n @ViewChild('documentTypeTCMInput', { read: ElementRef, static: true }) documentTypeTCMInput: ElementRef;\r\n @ViewChild('EmailSubjectRef', { read: ElementRef }) emailSubjectRef: ElementRef;\r\n @ViewChild('EmailFromRef', { read: ElementRef }) emailFromRef: ElementRef;\r\n\r\n\r\n\r\n confirmArchiveReportDialogRef: MatDialogRef;\r\n archiveProcessDialogRef: MatDialogRef;\r\n\r\n // @ViewChild(AddFileComponent) addFile;\r\n\r\n showErrorMustSelectStudent = false;\r\n studentInfo = '';\r\n\r\n archiveToStudentDigitalContent = false;\r\n archiveToStudentPortfolio = false;\r\n archiveToTCM = false;\r\n\r\n // archiveToStudentDigitalContent_touched = false;\r\n // archiveToStudentPortfolio_touched = false;\r\n // archiveToTCM_touched = false;\r\n\r\n // archiveToStudentDigitalContent_touched_count = 0;\r\n // archiveToStudentPortfolio_touched_count = 0;\r\n // archiveToTCM_touched_count = 0;\r\n\r\n allowArchiveToStudentDigitalContent = false;\r\n allowArchiveToStudentPortfolio = false;\r\n allowArchiveToTCM = false;\r\n\r\n isForSchedule: boolean;\r\n\r\n\r\n constructor(private yearService: YearService,\r\n private lookupService: LookupService,\r\n private portfolioService: PortfolioService,\r\n private reportService: ReportingService,\r\n private loginService: LoginService,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n // private studentService: StudentService,\r\n private dialogRef: MatDialogRef,\r\n // private confirmArchiveReportDialogRef: MatDialogRef,\r\n private confirmArchiveReportDialog: MatDialog,\r\n private archiveProcessDialog: MatDialog,\r\n ) {\r\n this.MailServer = this.loginService.LoginSettings.MailServer;\r\n }\r\n\r\n ngOnInit() {\r\n // this.studentDigitalContent = this.data.studentDigitalContent;\r\n\r\n this.reportName = this.reportService.SelectedReport.Name;\r\n this.selectedReport = this.reportService.SelectedReport;\r\n // this.selectedReport.EmailBody = '';\r\n this.emailFrom = this.selectedReport.EmailFrom;\r\n this.emailSubject = this.reportName;\r\n\r\n this.isForSchedule = false; // this.reportService.i\r\n this.allowArchiveToStudentDigitalContent = this.reportService.SelectedReport.AllowStudentDigitalContent;\r\n this.allowArchiveToStudentPortfolio = this.reportService.SelectedReport.AllowStudentPortfolio;\r\n this.allowArchiveToTCM = this.reportService.SelectedReport.AllowTCMArchiving;\r\n\r\n this.studentDigitalContent = new StudentDigitalContent;\r\n this.newFile = true;\r\n this.fileNameString = this.reportService.SelectedReport.Name;\r\n this.descriptionString = this.reportService.SelectedReport.Name;\r\n this.batchDescription = 'Archive Reports'; // this.descriptionString + ' - ' + new Date().toDateString() + ' ' + new Date().toLocaleTimeString();\r\n\r\n // getHours(), getMinutes(), getSeconds(), getMilliseconds()\r\n\r\n if (this.reportService.SelectedReport.AllowTCMArchiving) {\r\n this.allowArchiveToTCM = true;\r\n this.populate_TCM_DocumentTypes();\r\n }\r\n\r\n\r\n this.studentPortfolio = new Portfolio();\r\n\r\n // if (this.studentDigitalContent == undefined) {\r\n // this.studentDigitalContent = new StudentDigitalContent;\r\n // this.newFile = true;\r\n // this.fileNameString = this.reportService.SelectedReport.Name;\r\n // }\r\n // else {\r\n // this.documentTypeIdString = this.studentDigitalContent.DocumentTypeId.toString();\r\n // this.descriptionString = this.studentDigitalContent.Description;\r\n // this.fileNameString = this.studentDigitalContent.FileName;\r\n // }\r\n\r\n // get Document Types for Student Digital Content\r\n\r\n // if (this.reportService.documentTypes.length == 0) {\r\n this.lookupService.getORFormDocumentType(this.yearService.defaultYear.SchoolID).subscribe(result => {\r\n this.reportService.documentTypes = result;\r\n this.documentTypes = this.reportService.documentTypes;\r\n if (this.documentTypes.length == 0) {\r\n this.reportService.SelectedReport.AllowStudentDigitalContent = false;\r\n this.allowArchiveToStudentDigitalContent = false;\r\n }\r\n });\r\n // }\r\n // else {\r\n // this.documentTypes = this.reportService.documentTypes;\r\n // }\r\n\r\n // get Portfolio Categories for Student Portfolio\r\n\r\n // if (this.reportService.documentTypes.length == 0) {\r\n\r\n this.portfolioService.getPortfolioCategories(this.reportService.currentUser.Id).subscribe(res => {\r\n this.portfolioCategories = res;\r\n\r\n if (this.portfolioCategories.length == 0) {\r\n this.reportService.SelectedReport.AllowStudentPortfolio = false;\r\n this.allowArchiveToStudentPortfolio = false;\r\n }\r\n\r\n });\r\n\r\n\r\n\r\n // }\r\n // else {\r\n // this.documentTypes = this.reportService.documentTypes;\r\n // }\r\n\r\n\r\n }\r\n\r\n OnDestroy() { }\r\n\r\n populate_TCM_DocumentTypes() {\r\n\r\n let tcmDocumentType: DataSource;\r\n\r\n // if (this.reportService.SelectedReport.AllowTCMArchiving)\r\n\r\n // if (this.reportService.SelectedReport.DocumentArchivePermissions.find(p => p.PrivilegeType == 'StudentAttendance')) {\r\n // tcmDocumentType = new DataSource();\r\n // tcmDocumentType.TextField = 'Student Attendance';\r\n // tcmDocumentType.ValueField = 'TeStuAttendance';\r\n // this.tcmDocumentTypes.push(tcmDocumentType);\r\n // }\r\n\r\n // if (this.reportService.SelectedReport.DocumentArchivePermissions.find(p => p.PrivilegeType == 'StudentDiscipline')) {\r\n // tcmDocumentType = new DataSource();\r\n // tcmDocumentType.TextField = 'Student Discipline';\r\n // tcmDocumentType.ValueField = 'TeStuDiscipline';\r\n // this.tcmDocumentTypes.push(tcmDocumentType);\r\n // }\r\n\r\n if (this.reportService.SelectedReport.DocumentArchivePermissions.find(p => p.PrivilegeType == 'StudentGeneral')) {\r\n tcmDocumentType = new DataSource();\r\n tcmDocumentType.TextField = 'Student General';\r\n tcmDocumentType.ValueField = 'TeStuGeneral'; // this is what TCM is looking for\r\n this.tcmDocumentTypes.push(tcmDocumentType);\r\n }\r\n\r\n if (this.reportService.SelectedReport.DocumentArchivePermissions.find(p => p.PrivilegeType == 'StudentGrades')) {\r\n tcmDocumentType = new DataSource();\r\n tcmDocumentType.TextField = 'Student Grades';\r\n tcmDocumentType.ValueField = 'TeStuGrades';\r\n this.tcmDocumentTypes.push(tcmDocumentType);\r\n }\r\n\r\n if (this.reportService.SelectedReport.DocumentArchivePermissions.find(p => p.PrivilegeType == 'StudentHealth')) {\r\n tcmDocumentType = new DataSource();\r\n tcmDocumentType.TextField = 'Student Health';\r\n tcmDocumentType.ValueField = 'TeStuHealth';\r\n this.tcmDocumentTypes.push(tcmDocumentType);\r\n }\r\n\r\n if (this.reportService.SelectedReport.DocumentArchivePermissions.find(p => p.PrivilegeType == 'StudentRegistration')) {\r\n tcmDocumentType = new DataSource();\r\n tcmDocumentType.TextField = 'Student Registration';\r\n tcmDocumentType.ValueField = 'TeStuRegistration';\r\n this.tcmDocumentTypes.push(tcmDocumentType);\r\n }\r\n\r\n if (this.reportService.SelectedReport.DocumentArchivePermissions.find(p => p.PrivilegeType == 'StudentServiceActivity')) {\r\n tcmDocumentType = new DataSource();\r\n tcmDocumentType.TextField = 'Student Service Activity';\r\n tcmDocumentType.ValueField = 'TeStuServiceActivity';\r\n this.tcmDocumentTypes.push(tcmDocumentType);\r\n }\r\n\r\n if (this.tcmDocumentTypes.length == 0) {\r\n this.allowArchiveToTCM = false;\r\n }\r\n\r\n\r\n }\r\n\r\n saveClick() {\r\n\r\n this.checkInputs();\r\n\r\n if (this.errors.length == 0) {\r\n\r\n // confirm they want to archive the report\r\n this.confirmArchiveReportDialogRef = this.confirmArchiveReportDialog.open(ConfirmArchiveReportComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.confirmArchiveReportDialogRef.afterClosed().subscribe(result => {\r\n\r\n\r\n if (result == true) {\r\n this.prepareArchiveReportAsync();\r\n // this.thisDialogRef.close();\r\n }\r\n });\r\n\r\n\r\n } // END this.errors.length == 0\r\n\r\n }\r\n\r\n prepareArchiveReportAsync() {\r\n\r\n // this.selectedReport.ReportBatch.DistributeByEmailOption = '';\r\n\r\n // if (this.sendEmailStudent) {\r\n // this.selectedReport.ReportBatch.DistributeByEmailOption = '1';\r\n // }\r\n\r\n // if (this.sendEmailPrimaryContact) {\r\n // if (this.selectedReport.ReportBatch.DistributeByEmailOption > '') {\r\n // this.selectedReport.ReportBatch.DistributeByEmailOption += ',2';\r\n // } else {\r\n // this.selectedReport.ReportBatch.DistributeByEmailOption = '2';\r\n // }\r\n // }\r\n\r\n // if (this.sendEmailAllElectronicContacts) {\r\n // if (this.selectedReport.ReportBatch.DistributeByEmailOption > '') {\r\n // this.selectedReport.ReportBatch.DistributeByEmailOption += ',3';\r\n // } else {\r\n // this.selectedReport.ReportBatch.DistributeByEmailOption = '3';\r\n // }\r\n // }\r\n\r\n if (this.archiveToStudentDigitalContent) {\r\n\r\n // START Archive To Student Digital Content *************************************\r\n\r\n // this.studentDigitalContent.DocumentOwnerId : set in Reports DTO\r\n this.studentDigitalContent.DocumentType = this.documentTypes.find(x => x.Id == this.documentTypeIdString).CodeDescription;\r\n this.studentDigitalContent.DocumentTypeId = parseInt(this.documentTypeIdString, 10);\r\n this.studentDigitalContent.Description = this.fileNameString; // this.descriptionString;\r\n this.studentDigitalContent.FileName = this.fileNameString + '.pdf';\r\n\r\n if (this.newFile) {\r\n this.studentDigitalContent.FileExtension = '.pdf';\r\n // this.studentDigitalContent.OriginalFileName = this.addFile.fileName;\r\n // this.studentDigitalContent.MyFileBase64String = this.addFile.fileString; // THIS WILL BE SET IN THE BACKGROUND IN DTO\r\n this.studentDigitalContent.FileType = 'pdf';\r\n this.studentDigitalContent.FileName = this.fileNameString + '.pdf';\r\n }\r\n\r\n this.reportService.SelectedReport.StudentDigitalContent = this.studentDigitalContent;\r\n this.reportService.SelectedReport.ArchiveToStudentDigitalContent = true;\r\n\r\n } // END Archive To Student Digital Content\r\n else {\r\n this.reportService.SelectedReport.StudentDigitalContent = null;\r\n this.reportService.SelectedReport.ArchiveToStudentDigitalContent = false;\r\n }\r\n\r\n\r\n // START Archive to Student Portfolio **********************************************\r\n\r\n if (this.archiveToStudentPortfolio) {\r\n // this.studentPortfolio.StudentID : set in Reports DTO\r\n\r\n // let fileSize = window.atob(this.addFile.fileString).length;\r\n // let sizeUnit = 'bytes';\r\n // if (fileSize > 1024) {\r\n // fileSize = this.roundToTwo(fileSize / 1024);\r\n // sizeUnit = 'KB';\r\n // }\r\n // if (fileSize > 1000) {\r\n // fileSize = this.roundToTwo(fileSize / 1024);\r\n // sizeUnit = 'MB';\r\n // }\r\n\r\n // build of the portfolio object\r\n const portfolio: Portfolio = new Portfolio();\r\n portfolio.CategoryID = this.fileCategoryId;\r\n // portfolio.StudentID : set in DTO\r\n portfolio.Name = this.fileNameString + '.pdf';\r\n portfolio.Description = this.fileNameString; // this.descriptionString;\r\n // portfolio.FileBase64 = this.addFile.fileString; // set in Reports DTO\r\n portfolio.FilePath = this.fileNameString + '.pdf';\r\n portfolio.AYIdentifier = this.yearService.defaultYear.AYIdentifier;\r\n portfolio.AddedBy = this.reportService.currentUser.MemberId.toString();\r\n // portfolio.Size = fileSize;\r\n // portfolio.SizeUnit = sizeUnit;\r\n\r\n this.reportService.SelectedReport.StudentPortfolio = portfolio;\r\n this.reportService.SelectedReport.ArchiveToStudentPortfolio = true;\r\n\r\n }\r\n else {\r\n this.reportService.SelectedReport.StudentPortfolio = null;\r\n this.reportService.SelectedReport.ArchiveToStudentPortfolio = false;\r\n } // end Archive to Student Portfolio\r\n\r\n // START Archive To TCM *************************************\r\n\r\n if (this.archiveToTCM) {\r\n this.reportService.SelectedReport.TCM_DocumentType = this.selectedTCMdocument;\r\n this.reportService.SelectedReport.ArchiveToTCM = true;\r\n\r\n }\r\n else {\r\n this.reportService.SelectedReport.TCM_DocumentType = ''; // do I want this null?\r\n this.reportService.SelectedReport.ArchiveToTCM = false;\r\n }\r\n\r\n // NOW, we save any archives to the database\r\n\r\n if (this.archiveToStudentDigitalContent || this.archiveToStudentPortfolio || this.archiveToTCM) {\r\n\r\n this.reportService.SelectedReport.IsArchiveReport = true;\r\n this.archiveReportAsync();\r\n }\r\n else {\r\n this.reportService.SelectedReport.IsArchiveReport = false;\r\n this.reportService.SelectedReport.ArchiveToTCM = false;\r\n this.reportService.SelectedReport.StudentDigitalContent = null;\r\n this.reportService.SelectedReport.StudentPortfolio = null;\r\n }\r\n\r\n // this.dialogRef.close(true);\r\n\r\n }\r\n\r\n\r\n archiveReportAsync() {\r\n\r\n // this will archive to any available selected options for archiving\r\n // we immediately unsubscribe so it runs in background\r\n\r\n // TODO: UNCOMMENT SO ARCHIVIVING ACTUALLY WORKS!!!!\r\n\r\n // const asyncSub = this.reportService.archiveReport(this.yearService.defaultYear.SchoolID).subscribe(() => { });\r\n // setTimeout(() => {\r\n // asyncSub.unsubscribe();\r\n // }, 0);\r\n\r\n const reportBatch: ReportBatch = new ReportBatch();\r\n reportBatch.Id = 0;\r\n reportBatch.Operations = [];\r\n reportBatch.AddedByName = this.reportService.getCurrentUserName_FNLN();\r\n reportBatch.AddedByLogin_Id = this.reportService.getCurrentUserId();\r\n // reportBatch.ReportName = this.reportService.SelectedReport.Name;\r\n reportBatch.ReportName = this.fileNameString;\r\n reportBatch.BatchDescription = this.batchDescription;\r\n reportBatch.AddedOn = new Date();\r\n\r\n reportBatch.sendEmailNotification = this.sendEmailNotification;\r\n\r\n reportBatch.DistributeByEmailOption = '';\r\n\r\n // if (reportBatch.sendEmailNotification) {\r\n\r\n if (this.sendEmailStudent) {\r\n reportBatch.DistributeByEmailOption = '1';\r\n }\r\n\r\n if (this.sendEmailPrimaryContact) {\r\n if (reportBatch.DistributeByEmailOption > '') {\r\n reportBatch.DistributeByEmailOption += ',2';\r\n } else {\r\n reportBatch.DistributeByEmailOption = '2';\r\n }\r\n }\r\n\r\n if (this.sendEmailAllElectronicContacts) {\r\n if (reportBatch.DistributeByEmailOption > '') {\r\n reportBatch.DistributeByEmailOption += ',3';\r\n } else {\r\n reportBatch.DistributeByEmailOption = '3';\r\n }\r\n }\r\n\r\n reportBatch.EmailFrom = this.emailFrom;\r\n reportBatch.EmailSubject = this.emailSubject;\r\n reportBatch.EmailBody = this.emailBody;\r\n // }\r\n\r\n\r\n\r\n this.reportService.addReportBatch(reportBatch).subscribe(results => {\r\n // kickoff batch asynchronously\r\n // const asyncSub = this.reportService.startReportBatch(reportBatch).subscribe(() => { });\r\n // setTimeout(() => {\r\n // asyncSub.unsubscribe();\r\n // }, 0);\r\n\r\n // this.openArchiveProcess();\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('here');\r\n // console.log(results);\r\n // }\r\n\r\n this.reportService.reportBatch = results;\r\n\r\n\r\n // // kickoff batch asynchronously\r\n const asyncSub = this.reportService.startReportBatch(this.selectedReport).subscribe(() => { });\r\n setTimeout(() => {\r\n this.reportService.reportBatch = null;\r\n asyncSub.unsubscribe();\r\n }, 1000);\r\n\r\n\r\n\r\n this.openArchiveProcess();\r\n\r\n });\r\n\r\n\r\n // // kickoff batch asynchronously\r\n // const asyncSub = this.reportService.startReportBatch(reportBatch).subscribe(() => { });\r\n // setTimeout(() => {\r\n // asyncSub.unsubscribe();\r\n // }, 0);\r\n\r\n\r\n // this.openArchiveProcess();\r\n\r\n }\r\n\r\n openArchiveProcess() {\r\n // confirm they want to archive the report\r\n this.archiveProcessDialogRef = this.archiveProcessDialog.open(ArchiveProcessComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n\r\n this.archiveProcessDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(result);\r\n // }\r\n\r\n if (result == true) {\r\n\r\n\r\n\r\n // this.reportService.getReportBatches();\r\n\r\n this.reportService.SelectedReport = null;\r\n this.reportService.reportBatch = null;\r\n\r\n this.dialogRef.close(true);\r\n }\r\n });\r\n }\r\n\r\n archiveToStudentDigitalContentChecked(isChecked: boolean) {\r\n this.archiveToStudentDigitalContent = isChecked;\r\n this.populateEmailBody();\r\n // this.archiveToStudentDigitalContent_touched = true;\r\n // this.archiveToStudentDigitalContent_touched_count += 1;\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(this.documentTypeIdString);\r\n // }\r\n }\r\n\r\n archiveToStudentPortfolioChecked(isChecked: boolean) {\r\n this.archiveToStudentPortfolio = isChecked;\r\n // this.archiveToStudentPortfolio_touched = true;\r\n // this.archiveToStudentPortfolio_touched_count += 1;\r\n this.populateEmailBody();\r\n\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(this.fileCategoryId);\r\n // }\r\n }\r\n\r\n archiveToTCMChecked(isChecked: boolean) {\r\n this.archiveToTCM = isChecked;\r\n this.populateEmailBody();\r\n // this.archiveToTCM_touched = true;\r\n // this.archiveToTCM_touched_count += 1;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(this.selectedTCMdocument);\r\n // }\r\n\r\n // this.reportService.SelectedReport.ArchiveToTCM = this.archiveToTCM;\r\n // if (isChecked) {\r\n // this.reportService.SelectedReport.TCM_DocumentType = this.selectedTCMdocument;\r\n // }\r\n }\r\n\r\n populateEmailBody() {\r\n\r\n if (!this.archiveToTCM && !this.archiveToStudentPortfolio && !this.archiveToStudentDigitalContent) {\r\n this.emailBody = '';\r\n return;\r\n }\r\n\r\n this.emailBody = this.selectedReport.Name + ' for student [StudentFirstName] [StudentLastName]';\r\n\r\n if (this.archiveToStudentPortfolio) {\r\n this.emailBody += ' is now available under Student Portfolio.';\r\n }\r\n\r\n\r\n // if (this.archiveToTCM && !this.archiveToStudentPortfolio && !this.archiveToStudentDigitalContent) {\r\n // this.emailBody += ' is now available under Documents.';\r\n // }\r\n\r\n // if (!this.archiveToTCM && this.archiveToStudentPortfolio && !this.archiveToStudentDigitalContent) {\r\n // this.emailBody += ' is now available under Student Portfolio.';\r\n // }\r\n\r\n // if (!this.archiveToTCM && !this.archiveToStudentPortfolio && this.archiveToStudentDigitalContent) {\r\n // this.emailBody += ' is now available under Student Digital Content.';\r\n // }\r\n\r\n // if (!this.archiveToTCM && this.archiveToStudentPortfolio && this.archiveToStudentDigitalContent) {\r\n // this.emailBody += ' is now available under Student Digital Content and Student Portfolio.';\r\n // }\r\n\r\n // if (this.archiveToTCM && !this.archiveToStudentPortfolio && this.archiveToStudentDigitalContent) {\r\n // this.emailBody += ' is now available under Student Digital Content and Documents.';\r\n // }\r\n\r\n // if (this.archiveToTCM && this.archiveToStudentPortfolio && !this.archiveToStudentDigitalContent) {\r\n // this.emailBody += ' is now available under Student Portfolio and Documents.';\r\n // }\r\n\r\n // if (this.archiveToTCM && this.archiveToStudentPortfolio && this.archiveToStudentDigitalContent) {\r\n // this.emailBody += ' is now available under Student Digital Content, Student Portfolio, and Documents.';\r\n // }\r\n }\r\n\r\n\r\n\r\n checkInputs() {\r\n // let isValidFile = true;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // ConsoleReporter.log();\r\n // ConsoleReporter.log();\r\n // ConsoleReporter.log();\r\n // }\r\n\r\n // if (\r\n // (this.archiveToStudentDigitalContent && this.archiveToStudentDigitalContent_touched_count == 1 && this.documentTypeIdString == undefined) ||\r\n // (this.archiveToStudentPortfolio && this.archiveToStudentPortfolio_touched_count == 1 && this.fileCategoryId == undefined) ||\r\n // (this.archiveToTCM && this.archiveToTCM_touched_count == 1 && this.selectedTCMdocument == undefined)\r\n // ) {\r\n // return; // no need to validate yet\r\n // }\r\n\r\n this.errors = [];\r\n\r\n if (!this.archiveToStudentDigitalContent && !this.archiveToStudentPortfolio && !this.archiveToTCM) {\r\n this.errors.push({\r\n fieldName: '',\r\n fieldRef: null,\r\n errorMsg: 'You must select at least one archive type.'\r\n });\r\n }\r\n\r\n // if (this.fileNameString == undefined || this.fileNameString == null || this.fileNameString == '') {\r\n // this.errors.push({\r\n // fieldName: 'File Name',\r\n // fieldRef: this.fileNameInput,\r\n // errorMsg: 'Field is required.'\r\n // });\r\n // }\r\n\r\n // if (this.archiveToStudentDigitalContent) {\r\n\r\n // // START Archive To Student Digital Content\r\n\r\n\r\n\r\n // if (this.documentTypeIdString == undefined || this.documentTypeIdString == null || this.documentTypeIdString == '') {\r\n // this.errors.push({\r\n // fieldName: 'Document Type',\r\n // fieldRef: this.documentTypeInput,\r\n // errorMsg: 'Field is required.'\r\n // });\r\n // }\r\n\r\n // if (this.newFile) {\r\n\r\n // if (this.fileNameString.length == 0) {\r\n // this.fileError = true;\r\n // isValidFile = false;\r\n // } else {\r\n // this.fileError = false;\r\n // }\r\n\r\n // ANY/ALL archive options use this field\r\n\r\n if (this.fileNameString == undefined || this.fileNameString == null || this.fileNameString == '') {\r\n this.errors.push({\r\n fieldName: 'File Name',\r\n fieldRef: this.fileNameInput,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n if (this.archiveToStudentDigitalContent) {\r\n\r\n // START Archive To Student Digital Content\r\n\r\n if (this.documentTypeIdString == undefined || this.documentTypeIdString == null || this.documentTypeIdString == '') {\r\n this.errors.push({\r\n fieldName: 'Student Digital Content Document Type',\r\n fieldRef: this.documentTypeInput,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n } // END Archive To Student Digital Content\r\n\r\n\r\n if (this.archiveToStudentPortfolio) {\r\n\r\n // START Archive To Student Portfolio\r\n\r\n if (this.fileCategoryId == undefined || this.fileCategoryId == null || !(this.fileCategoryId > 0)) {\r\n this.errors.push({\r\n fieldName: 'Student Portfolio Document Type',\r\n fieldRef: this.fileCategoryInput,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n } // END Archive To Student Digital Content\r\n\r\n if (this.archiveToTCM) {\r\n\r\n // START TCM -- Tyler Content Management\r\n\r\n if (this.selectedTCMdocument == undefined || this.selectedTCMdocument == null || this.selectedTCMdocument == '') {\r\n this.errors.push({\r\n fieldName: 'TCM Document Type',\r\n fieldRef: this.documentTypeTCMInput,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n }\r\n\r\n this.validateEmailFields();\r\n\r\n\r\n\r\n\r\n // }\r\n\r\n // for ALL archive options\r\n\r\n // if (this.fileNameString.length == 0) {\r\n // this.fileError = true;\r\n // isValidFile = false;\r\n // } else {\r\n // this.fileError = false;\r\n // }\r\n\r\n\r\n // if (!isValidFile) {\r\n // this.errors.push({\r\n // fieldName: 'File',\r\n // fieldRef: this.fileNameInput,\r\n // errorMsg: 'Field is required.'\r\n // });\r\n // }\r\n\r\n\r\n } // end checkInputs()\r\n\r\n validateEmailFields() {\r\n if (this.sendEmailNotification && !this.sendEmailStudent && !this.sendEmailPrimaryContact && !this.sendEmailAllElectronicContacts) {\r\n this.errors.push({\r\n fieldName: null,\r\n fieldRef: null,\r\n errorMsg: 'You must select at least one option for Send emails to.'\r\n });\r\n }\r\n\r\n\r\n /********************* START EMAIL SUBJECT VALIDATION *********************/\r\n\r\n // Email Subject required\r\n if (this.sendEmailNotification && this.selectedReport.EmailSubject.trim().length == 0) {\r\n this.errors.push({\r\n fieldName: 'Email Subject',\r\n fieldRef: this.emailSubjectRef,\r\n errorMsg: 'Required Field'\r\n });\r\n }\r\n\r\n\r\n /********************* START EMAIL FROM VALIDATION *********************/\r\n\r\n const emailFormat = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,4})+$/;\r\n // const emailsTo: string[] = this.selectedReport.EmailsToSendReport.replace(' ', '').split(';');\r\n\r\n // // remove final empty string from split\r\n // if (emailsTo.length > 1) {\r\n // if (emailsTo[emailsTo.length - 1] == '') {\r\n // emailsTo.length = emailsTo.length - 1;\r\n // }\r\n // }\r\n\r\n // Email From required -- FIRST MESSAGE\r\n if (this.selectedReport.EmailFrom.trim().length == 0) {\r\n\r\n this.errors.push({\r\n fieldName: 'Email From',\r\n errorMsg: 'Required field.',\r\n fieldRef: this.emailFromRef\r\n });\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('this.selectedReport.EmailFrom.trim().length');\r\n // console.log(this.selectedReport.EmailFrom.trim().length);\r\n // }\r\n }\r\n else {\r\n\r\n // errorMsg: this.selectedReport.EmailFrom.trim() + ' is not a valid email format',\r\n\r\n // check Email From format -- SECOND MESSAGE\r\n if (this.selectedReport.EmailFrom.trim().match(emailFormat) == null) {\r\n this.errors.push({\r\n fieldName: 'Email From',\r\n errorMsg: 'Invalid email address.',\r\n fieldRef: this.emailFromRef\r\n });\r\n\r\n }\r\n\r\n else {\r\n\r\n // check Email From is a single email -- THIRD MESSAGE\r\n if (this.selectedReport.EmailFrom.split(';').length > 1) {\r\n\r\n this.errors.push({\r\n fieldName: 'Email From',\r\n errorMsg: 'Must be a single email.',\r\n fieldRef: this.emailFromRef\r\n });\r\n\r\n }\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('this.selectedReport.EmailFrom.trim().match(emailFormat)');\r\n // console.log(this.selectedReport.EmailFrom.trim().match(emailFormat));\r\n // }\r\n\r\n }\r\n\r\n }\r\n\r\n // addFileChanges(event) {\r\n // // check if a file has been selected\r\n // if (this.addFile.hasOwnProperty('fileName')) {\r\n // this.fileError = false;\r\n // }\r\n // }\r\n\r\n getEmailRegexp() {\r\n return this.reportService.getEmailRegexp();\r\n }\r\n\r\n sendToEmailChecked(isChecked: boolean) {\r\n\r\n // right now the only errors being handled are for report to email\r\n // so clear them out if they uncheck the checkbox\r\n if (!isChecked) {\r\n this.errors = [];\r\n }\r\n }\r\n\r\n\r\n closeClick() {\r\n this.reportService.SelectedReport.IsArchiveReport = false;\r\n this.reportService.SelectedReport.ArchiveToTCM = false;\r\n this.reportService.SelectedReport.ArchiveToStudentDigitalContent = false;\r\n this.reportService.SelectedReport.ArchiveToStudentDigitalContent = false;\r\n this.reportService.SelectedReport.StudentDigitalContent = null;\r\n this.reportService.SelectedReport.StudentPortfolio = null;\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n","
\r\n\r\n \r\n
\r\n

{{selectedReport.Name}} - Auto-Run Settings

\r\n\r\n
\r\n\r\n \r\n\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n '' \" style=\"width:100%;\">\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n \r\n\r\n \r\n Report to Email\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n
{{parameterRow.GroupLabel}}{{parameterRow.GroupLabel}}\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n {{parameter.Name}}\r\n \r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n \r\n {{dataItem.TextField}}\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n {{parameter.Name}}\r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n {{dataItem.TextField}}\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n ''\"\r\n style='white-space: no-wrap; width: 100%;'\r\n >\r\n \r\n\r\n \r\n\r\n\r\n\r\n
\r\n\r\n\r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n
\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatRadioChange } from '@angular/material/radio'; // ???\r\n\r\nimport { ReportingService } from '../reporting.service';\r\n\r\nimport { LoginService } from '../../login/login.service';\r\nimport { LoginSettings } from '../../login/LoginSetting.model';\r\n\r\nimport { Report } from '../models/report.model';\r\nimport { ReportParameter } from '../models/report-parameter.model';\r\nimport { ParameterRow } from '../models/parameter-row-model';\r\nimport { ParameterRows } from '../models/parameter-rows.model';\r\n\r\nimport { DataSource } from '../models/data-source.model';\r\n\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { UserPreferencesService } from '../../../shared-components/user-preferences/user-preferences.service';\r\n\r\n// import { ClassroomSummaryService } from '../../../classroom360/classroom-summary/classroom-summary.service';\r\n// import { StudentService } from '../../../shared-components/student/student.service';\r\nimport { ClassroomSummary } from '../../../classroom360/classroom-summary/models/classroom-summary.model';\r\n\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { ReportOptionsComponent } from '../definitions/report-options.component';\r\nimport { ReportLegendComponent } from '../report-legend/report-legend.component';\r\nimport { ReportSettingsAutoRunComponent } from '../report-settings/report-settings-autorun.component';\r\nimport { ConfirmReportToEmailComponent } from './confirm-report-to-email.component';\r\n\r\n// import { Form } from '../../../form.model';\r\nimport { HasErrors } from '../../../shared-components/guards/check-for-errors/HasErrors';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { StudentSearchComponent } from '../../../shared-components/student-search/student-search.component';\r\n// import moment = require('moment');\r\n\r\nimport { ArchiveReportModalComponent } from '../archive-report/archive-report-modal.component';\r\n\r\n\r\n\r\n// import { toUnicode } from 'punycode';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportParameters',\r\n templateUrl: './report-parameters.component.html',\r\n styleUrls: ['./report-parameters.component.css']\r\n // changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n// HasErrors\r\n\r\nexport class ReportParametersComponent implements OnInit, OnDestroy, HasErrors {\r\n\r\n // @Output() showReportToPDF = new EventEmitter();\r\n @ViewChild(ReportSettingsAutoRunComponent)\r\n private AutoRunComponent: ReportSettingsAutoRunComponent;\r\n\r\n thisDialogRef: MatDialogRef;\r\n reportOptionsDialogRef: MatDialogRef;\r\n reportLegendDialogRef: MatDialogRef;\r\n confirmReportToEmailDialogRef: MatDialogRef;\r\n StudentSearchDialogRef: MatDialogRef;\r\n archiveReportModalDialogRef: MatDialogRef;\r\n loginSettings: LoginSettings;\r\n utilizeDistributebyEmail: boolean;\r\n selectedReport: Report;\r\n userEmail: string;\r\n isInFolder: boolean;\r\n showReportToPDF: boolean;\r\n showCancelSendToEmail: boolean;\r\n showCancelShowReportOptions: boolean;\r\n // cancelShowReport: boolean = false;\r\n cancelShowReport = false;\r\n allowAutoRunReport: boolean;\r\n inDebugMode: boolean;\r\n MailServer: string;\r\n maxNumberOfColumns: number;\r\n ChunkedParameters: ParameterRows;\r\n subscriptions: Subscription[] = [];\r\n maxTableCellsPerRow: number;\r\n\r\n // showFooter = true;\r\n\r\n isForSchedule: boolean;\r\n userPreferences: any;\r\n\r\n selectedCourse: ClassroomSummary;\r\n selectedStudent: Student;\r\n selectedStudentSearch: Student;\r\n studentList = [];\r\n studentListString: string;\r\n ParamColWidth: string;\r\n useReportDefinitions: boolean;\r\n showHiddenParameters: boolean;\r\n hiddenParametersLabel: string;\r\n userHasPrivilegeAddEditDistrictReportDefinitions: boolean;\r\n\r\n showDistributebyEmail: boolean; // ONE-4387\r\n\r\n distributeByEmailOption_StudentSelected: boolean;\r\n distributeByEmailOption_PrimaryContactSelected: boolean;\r\n distributeByEmailOption_AllElectronicContactsSelected: boolean;\r\n\r\n utilizeTranscriptTracking: boolean; // ONE-4343\r\n isTylerAdmin = false;\r\n debugMessage = '';\r\n\r\n\r\n showReportToConsole = false;\r\n isDebugModeInProduction = false;\r\n\r\n // ERROR HANDLING\r\n // form: Form;\r\n errors: ErrorList[] = [];\r\n // @ViewChild('tableContainer', { read: ElementRef }) tableContainerRef: ElementRef;\r\n @ViewChild('ngForm', { read: NgForm }) ngForm: NgForm;\r\n @ViewChild('emailFrom', { read: ElementRef }) emailFrom: ElementRef;\r\n @ViewChild('emailsToSendReport', { read: ElementRef }) emailsToSendReport: ElementRef;\r\n @ViewChild('emailSubject', { read: ElementRef }) emailSubject: ElementRef;\r\n // @ViewChild('DebugInfo', { read: ElementRef }) debugInfo: ElementRef;\r\n\r\n // numbers: number[] = [];\r\n selectedPostHsInstitution = '';\r\n PostHsInstitutions: DataSource[];\r\n\r\n constructor(\r\n\r\n reportParametersDialogRef: MatDialogRef,\r\n private studentSearchDialog: MatDialog,\r\n private reportLegendDialog: MatDialog,\r\n private confirmReportToEmailDialog: MatDialog,\r\n private reportOptionsDialog: MatDialog,\r\n\r\n private reportService: ReportingService,\r\n private loginService: LoginService,\r\n private userPreferencesService: UserPreferencesService,\r\n\r\n private thisDialog: MatDialog,\r\n private archiveReportModalDialog: MatDialog,\r\n // private classroomSummaryService: ClassroomSummaryService,\r\n // private studentService: StudentService,\r\n // @Inject(MAT_DIALOG_DATA) public data: any\r\n\r\n // private changeDetector: ChangeDetectorRef\r\n ) {\r\n\r\n\r\n // for (let index = 0; index < 10000; index++) {\r\n // this.numbers.push(index);\r\n // }\r\n\r\n this.userPreferences = this.userPreferencesService;\r\n this.MailServer = this.loginService.LoginSettings.MailServer;\r\n\r\n /* BEGIN CONSTRUCTOR */\r\n // this.loginSettings = loginService.LoginSettings;\r\n // this.utilizeDistributebyEmail = this.loginSettings.UtilizeDistributebyEmail;\r\n // this.selectedReport = this.reportService.SelectedReport;\r\n\r\n // this.userEmail = this.reportService.userEmail;\r\n // this.inDebugMode = this.inDebugMode;\r\n\r\n // this.isForSchedule = this.reportService.isForSchedule;\r\n\r\n // this.allowAutoRunReport = this.loginSettings.AllowAutoRunReport;\r\n // this.showReportToPDF = true;\r\n // this.showCancelSendToEmail = false;\r\n // this.showCancelShowReportOptions = false;\r\n\r\n\r\n\r\n this.thisDialogRef = reportParametersDialogRef;\r\n\r\n\r\n\r\n\r\n\r\n // this.getReportDefinitions();\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ReportParametersComponent => constructor() - selectedReport BELOW');\r\n // console.log(this.selectedReport);\r\n // }\r\n\r\n } // end constructor\r\n\r\n // ngOnInit() {\r\n\r\n // // this.showReportToPDF.emit(true);\r\n\r\n // // we need to select all ddcbl items if none are selected\r\n // // this.checkAllCheckBoxes();\r\n\r\n // } // end ngOnInit\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.isTylerAdmin = this.reportService.isTylerAdmin;\r\n\r\n // this.loginSettings = this.loginService.LoginSettings;\r\n // this.utilizeDistributebyEmail = this.loginSettings.UtilizeDistributebyEmail;\r\n this.selectedReport = this.reportService.SelectedReport;\r\n\r\n\r\n this.loginSettings = this.loginService.LoginSettings;\r\n\r\n this.selectedReport.Login_ID = this.loginSettings.Id;\r\n this.utilizeDistributebyEmail = this.loginSettings.UtilizeDistributebyEmail;\r\n // this.selectedReport = this.reportService.SelectedReport;\r\n this.inDebugMode = this.reportService.inDebugMode;\r\n if (this.inDebugMode || (this.reportService.isTylerAdmin && this.isDebugModeInProduction)) {\r\n this.showReportToConsole = true;\r\n }\r\n\r\n this.isForSchedule = this.reportService.isForSchedule;\r\n\r\n this.allowAutoRunReport = this.loginSettings.AllowAutoRunReport;\r\n this.showReportToPDF = true;\r\n this.showCancelSendToEmail = false;\r\n this.showCancelShowReportOptions = false;\r\n this.showHiddenParameters = false;\r\n this.hiddenParametersLabel = 'Show Hidden Parameters';\r\n\r\n if (!this.isForSchedule) {\r\n this.userEmail = this.reportService.userEmail;\r\n // this.selectedCourse = this.classroomSummaryService.selectedCourse;\r\n // this.selectedStudent = this.studentService.selectedStudent;\r\n this.selectedCourse = this.reportService.selectedCourse;\r\n this.selectedStudent = this.reportService.selectedStudent;\r\n this.useReportDefinitions = this.reportService.useReportDefinitions;\r\n this.userHasPrivilegeAddEditDistrictReportDefinitions = this.reportService.userHasPrivilegeAddEditDistrictReportDefinitions;\r\n this.selectedReport.AutoRunReport = false;\r\n }\r\n\r\n if (this.selectedReport.ReportFolder == '') {\r\n this.isInFolder = false;\r\n } else {\r\n this.isInFolder = true;\r\n }\r\n\r\n this.utilizeTranscriptTracking = this.loginService.LoginSettings.UtilizeTranscriptTracking;\r\n\r\n // const transcriptTrackingParam = this.selectedReport.Parameters.find((param) => {\r\n // return param.ControlType == 'trctrl';\r\n // });\r\n\r\n // if (transcriptTrackingParam) {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(transcriptTrackingParam);\r\n // }\r\n // }\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // this.reportService.utilizeDistributebyEmail = true; // SET FOR TESTING PURPOSES\r\n // // console.log(this.MailServer);\r\n // // console.log(this.reportService.utilizeDistributebyEmail);\r\n // // console.log(this.selectedReport.HasDistributeByEmailParameter);\r\n // // console.log(this.selectedReport.HasUniqueStudentParameter);\r\n // }\r\n\r\n this.reportService.isDistributebyEmail = false;\r\n this.selectedReport.IsDistributeByEmail = false;\r\n\r\n if (this.MailServer > '' && this.reportService.utilizeDistributebyEmail && this.selectedReport.HasDistributeByEmailParameter && this.selectedReport.HasUniqueStudentParameter) {\r\n // NOTE: THIS CAN STILL BLOW UP IF THE RESULTS DO NOT HAVE Student_ID IN THE RESULTS!!!!\r\n this.showDistributebyEmail = true;\r\n }\r\n\r\n\r\n if (!this.isForSchedule) {\r\n this.selectedReport.EmailFrom = this.userPreferences.generalPreferences.EmailFrom == 'Personal' ? this.userEmail : this.loginSettings.DefaultEmailReplyToAddress;\r\n this.selectedReport.EmailsToSendReport = this.userEmail;\r\n this.selectedReport.EmailSubject = this.selectedReport.Name;\r\n this.selectedReport.EmailBody = 'Please see the attached PDF for this report.';\r\n }\r\n\r\n this.initParameters();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n // do any necessary cleanup\r\n\r\n }\r\n\r\n\r\n initParameters() {\r\n\r\n // set params when coming from certain areas\r\n\r\n this.setBackgroundColorForSavedDefinitions();\r\n\r\n if (this.reportService.isAllReports || this.reportService.isMyReports) {\r\n this.maxTableCellsPerRow = 3;\r\n }\r\n else {\r\n this.maxTableCellsPerRow = 2; // report settings and definitions?\r\n }\r\n this.maxNumberOfColumns = this.maxTableCellsPerRow;\r\n\r\n this.setParameterRows(this.maxTableCellsPerRow);\r\n\r\n\r\n if (this.maxNumberOfColumns == 1) {\r\n this.ParamColWidth = '400px';\r\n }\r\n else if (this.maxNumberOfColumns == 2) {\r\n this.ParamColWidth = '350px';\r\n }\r\n else if (this.maxNumberOfColumns == 3) {\r\n this.ParamColWidth = '400px';\r\n }\r\n else {\r\n // tslint:disable-next-line:no-unused-expression\r\n this.ParamColWidth == '200px';\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n setBackgroundColorForSavedDefinitions() {\r\n // if (this.inDebugMode) {\r\n // console.log(this.useReportDefinitions);\r\n // }\r\n if (!this.useReportDefinitions) {\r\n return; // drop out here\r\n }\r\n for (let i = 0; i < this.selectedReport.Parameters.length; i++) {\r\n\r\n if (this.selectedReport.Parameters[i].ParameterReportDefinition.HasParameterValueDefined\r\n && this.selectedReport.Parameters[i].ParameterReportDefinition.IsSystem == false\r\n ) {\r\n this.selectedReport.Parameters[i].SetBackgroundColorForSavedDefinition = true;\r\n }\r\n\r\n /****************************** CONVERT ANY SAVED DEFINITIONS ******************************/\r\n\r\n // handle bit parameters if saved definition to convert from string\r\n if (this.selectedReport.Parameters[i].DataType == 'bit' && this.selectedReport.Parameters[i].ParameterReportDefinition.HasParameterValueDefined) {\r\n if (this.selectedReport.Parameters[i].ParameterReportDefinition.Value == '1') {\r\n this.selectedReport.Parameters[i].ParameterReportDefinition.Value = true;\r\n this.selectedReport.Parameters[i].Value = true;\r\n }\r\n else {\r\n this.selectedReport.Parameters[i].ParameterReportDefinition.Value = false;\r\n this.selectedReport.Parameters[i].Value = false;\r\n }\r\n\r\n }\r\n\r\n // handle datepicker value conversion here\r\n if ((this.selectedReport.Parameters[i].DataType == 'date' || this.selectedReport.Parameters[i].DataType == 'datetime') && this.selectedReport.Parameters[i].ParameterReportDefinition.HasParameterValueDefined) {\r\n const dateParts = this.selectedReport.Parameters[i].ParameterReportDefinition.Value.split('/');\r\n // if (this.inDebugMode) {\r\n // console.log(dateParts);\r\n // }\r\n if (dateParts.length == 3) {\r\n // note: saved dates are in format \"5/9/2018\"\r\n const savedDate = new Date(dateParts[2], dateParts[0] - 1, dateParts[1]);\r\n this.selectedReport.Parameters[i].Value = savedDate;\r\n }\r\n\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.selectedReport.Parameters[i]);\r\n // }\r\n }\r\n\r\n /****************************** END - CONVERT ANY SAVED DEFINITIONS ******************************/\r\n\r\n }\r\n }\r\n\r\n getBackgroundColorForSavedDefinition(parameter: ReportParameter) {\r\n\r\n let backgroundColor: string;\r\n if (parameter.ParameterReportDefinition.IsDistrictDefinedParameter) {\r\n backgroundColor = this.reportService.backgroundColorForDistrictDefinedDefinition;\r\n }\r\n else if (parameter.ParameterReportDefinition.Login_ID > 0) {\r\n backgroundColor = this.reportService.backgroundColorForUserDefinedDefinition;\r\n }\r\n return backgroundColor;\r\n }\r\n\r\n\r\n\r\n setParameterRows(tableCellsPerRow: number) {\r\n\r\n\r\n // this.ChunkedParameters = this.chunkParameters(this.selectedReport.Parameters, tableCellsPerRow);\r\n\r\n this.ChunkedParameters = new ParameterRows();\r\n\r\n this.chunkParameters(this.selectedReport.Parameters, tableCellsPerRow);\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n handleDistributeByEmailOption(recipients: string) {\r\n\r\n // const recipients: string = value.Value;\r\n\r\n if (recipients.indexOf('1') !== -1) {\r\n this.distributeByEmailOption_StudentSelected = true; // student is checked (-1 is all and would include this)\r\n }\r\n else {\r\n this.distributeByEmailOption_StudentSelected = false;\r\n }\r\n\r\n if (recipients.indexOf('2') !== -1) {\r\n this.distributeByEmailOption_PrimaryContactSelected = true; // primary contact is checked\r\n }\r\n else {\r\n this.distributeByEmailOption_PrimaryContactSelected = false;\r\n }\r\n\r\n if (recipients.indexOf('3') !== -1) {\r\n this.distributeByEmailOption_AllElectronicContactsSelected = true; // all electronic contacts is checked\r\n }\r\n else {\r\n this.distributeByEmailOption_AllElectronicContactsSelected = false;\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.distributeByEmailOption_StudentSelected);\r\n // console.log(this.distributeByEmailOption_PrimaryContactSelected);\r\n // console.log(this.distributeByEmailOption_AllElectronicContactsSelected);\r\n // }\r\n }\r\n\r\n\r\n\r\n chunkParameters(params: ReportParameter[], maxNumberOfColumns: number) {\r\n const nonPrivateParameters: ReportParameter[] = [];\r\n\r\n let newParamsRows: ReportParameter[][] = []; // new ReportParameter();\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('this.showHiddenParameters: ' + this.showHiddenParameters);\r\n // }\r\n\r\n const group_Ids: number[] = [];\r\n\r\n for (let p = 0; p < params.length; p++) {\r\n\r\n // handle bit parameters\r\n if (params[p].DataType == 'bit') {\r\n if (params[p].Value == '1') {\r\n params[p].Value = true;\r\n }\r\n else {\r\n params[p].Value = false;\r\n }\r\n }\r\n\r\n // if ((this.showHiddenParameters && !params[p].ParameterName.toLowerCase().startsWith('@p_')) || !params[p].ParameterReportDefinition.IsHidden) {\r\n if (\r\n (\r\n (\r\n this.userHasPrivilegeAddEditDistrictReportDefinitions || !params[p].ParameterReportDefinition.IsDistrictDefinedParameter\r\n )\r\n && this.showHiddenParameters && !params[p].IsSystemHiddenParameter // !params[p].ParameterName.startsWith('@p_')\r\n )\r\n || !params[p].ParameterReportDefinition.IsHidden) {\r\n\r\n // don't push group parameters yet if grouping is turned on, we will add them later\r\n\r\n // if (this.reportService.useParameterGroups) {\r\n // if (!params[p].IsInGroup) {\r\n // nonPrivateParameters.push(params[p]);\r\n // }\r\n // }\r\n // else {\r\n // NOT using groups\r\n\r\n // if (params[p].Group_ID > 0 && !group_Ids.includes(params[p].Group_ID)) {\r\n // group_Ids.push(params[p].Group_ID);\r\n // }\r\n\r\n // get a distinct list of group_Ids, including zero for non-grouped parameters\r\n if (!group_Ids.includes(params[p].Group_ID)) {\r\n group_Ids.push(params[p].Group_ID);\r\n }\r\n\r\n // // TODO: COMMENT OR REMOVE AFTER TESTING!!!\r\n // if (params[p].ParameterName == '@GradeLevelIdentifier' || params[p].ParameterName == '@CampusEnrollment') {\r\n // params[p].ShowOptionsVertically = true;\r\n // }\r\n\r\n\r\n\r\n\r\n if (params[p].ParameterName.toLowerCase() == '@distributebyemailoption') {\r\n\r\n const recipients: string = params[p].Value;\r\n\r\n this.handleDistributeByEmailOption(recipients);\r\n }\r\n\r\n // ONE-4386 - HIDE DISTRIBUTE BY EMAIL PARAMETERS -- THIS WILL BE NEED TO BE REMOVED AFTER ONE-4387 HAS BEEN COMPLETED\r\n\r\n // THESE PARAMETERS ARE TO BE EXCLUDED FROM THE PARAMETERS SCREEN\r\n if ( // params[p].ParameterName.toLowerCase() == '@distributebyemailoption'\r\n // HIDE PARAMETERS BELOW (also need to hide them in spOneSISReporting_GetReportDefinitions)\r\n params[p].ParameterName.toLowerCase() == '@distributebyemailsubject' // ONE-4387 I'm gonna still hide these optional parameters\r\n || params[p].ParameterName.toLowerCase() == '@distributebyemailbody'\r\n || params[p].ParameterName.toLowerCase() == '@distributebyemailfromaddress'\r\n\r\n || (!this.loginService.LoginSettings.UtilizeDistributebyEmail && params[p].ParameterName.toLowerCase() == '@distributebyemailoption')\r\n || params[p].ControlType == 'trctrl' // transcript tracking\r\n || (this.utilizeTranscriptTracking == false && (params[p].ParameterName == '@p_Post_HS_Contact_Type' || params[p].ParameterName == '@p_Post_HS_Institution' || params[p].ParameterName == '@p_Post_HS_Comments'))\r\n // || (!this.loginService.LoginSettings.UtilizeTranscriptTracking && params[p].ControlType == 'trctrl')\r\n ) {\r\n // DO NOT ADD PARAMETER, we want to exclude these for now\r\n }\r\n else {\r\n\r\n // if (params[p].ControlType == 'trctrl' && this.inDebugMode) {\r\n // console.log('TRANSCRIPT TRACKING');\r\n // }\r\n\r\n nonPrivateParameters.push(params[p]);\r\n }\r\n\r\n\r\n\r\n // }\r\n\r\n // nonPrivateParameters.push(System.convert(params[p], new ReportParameter()));\r\n }\r\n } // end going through ALL parameters\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(nonPrivateParameters);\r\n // }\r\n\r\n // now break up into individual groups\r\n\r\n\r\n const groupParameters: ReportParameter[][] = [];\r\n\r\n // groupParameters = new ReportParameter[group_Ids.length]; // one array for each group\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(group_Ids);\r\n // }\r\n\r\n const tempParmArray: ReportParameter[][] = [];\r\n\r\n for (let g = 0; g < group_Ids.length; g++) {\r\n let thisGroupParameters: ReportParameter[] = [];\r\n\r\n for (let p = 0; p < nonPrivateParameters.length; p++) {\r\n if (nonPrivateParameters[p].Group_ID == group_Ids[g]) {\r\n\r\n // if (this.inDebugMode && nonPrivateParameters[p].ControlType == 'trctrl') {\r\n // console.log(nonPrivateParameters[p]);\r\n // }\r\n\r\n\r\n // if (thisGroupParameters.length[g] == 0) {\r\n thisGroupParameters.push(nonPrivateParameters[p]);\r\n // }\r\n // groupParameters[g].push(nonPrivateParameters[p]);\r\n }\r\n // groupParameters[nonPrivateParameters.[p];\r\n } // END looping through group parameterrs\r\n\r\n thisGroupParameters = this.getGroup(thisGroupParameters);\r\n\r\n groupParameters.push(thisGroupParameters);\r\n // newParamsRows.push(thisGroupParameters);\r\n const tempGroup: number[] = [];\r\n tempGroup.push(group_Ids[g]);\r\n\r\n // const tempParameterRows: ReportParameter[] = this.getParameterRows(thisGroupParameters, maxNumberOfColumns, tempGroup);\r\n // const tempParameterRows: ParameterRows = []; // ReportParameter[] = [];\r\n // const tempParameterRows = this.getParameterRows(thisGroupParameters, maxNumberOfColumns, tempGroup);\r\n\r\n const tempParameterRows: ParameterRows[] = [];\r\n // let tempParameterRow: ParameterRow;\r\n\r\n tempParameterRows.push(this.getParameterRows(thisGroupParameters, maxNumberOfColumns, tempGroup));\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(thisGroupParameters);\r\n // console.log(tempParameterRows);\r\n // }\r\n\r\n\r\n // tempParmArray.\r\n\r\n for (let r = 0; r < tempParameterRows.length; r++) {\r\n const myParamRows = tempParameterRows[r];\r\n // if (this.inDebugMode) {\r\n // console.log(myParamRows);\r\n // }\r\n for (let rw = 0; rw < myParamRows.Rows.length; rw++) {\r\n const myParamRow = myParamRows.Rows[rw];\r\n // if (this.inDebugMode) {\r\n // console.log(myParamRow);\r\n // }\r\n\r\n for (let p = 0; p < myParamRow.Parameters.length; p++) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(myParamRow.Parameters[p]);\r\n // }\r\n\r\n // newParamsRows.push(myParamRow.Parameters[p]);\r\n\r\n // newParamsRows.push\r\n }\r\n\r\n\r\n tempParmArray.push(myParamRow.Parameters);\r\n\r\n }\r\n\r\n }\r\n\r\n } // END looping through groups\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(tempParmArray);\r\n // }\r\n newParamsRows = tempParmArray; // ReportParamter[][]\r\n\r\n for (let pr = 0; pr < newParamsRows.length; pr++) {\r\n const newParamRow = new ParameterRow();\r\n const newGroupParamRow = new ParameterRow();\r\n newParamRow.Parameters = newParamsRows[pr];\r\n let thisGroupHasBeenHandled = false;\r\n\r\n // handle groups??\r\n for (let p = 0; p < newParamRow.Parameters.length; p++) {\r\n\r\n if (newParamRow.Parameters[p].Group_ID > 0) {\r\n\r\n // START ONE-2400 TESTING *************\r\n if (newParamRow.Parameters[p].ParameterReportDefinition.IsHidden) {\r\n // if (this.inDebugMode) {\r\n // console.log('PARAMETER DEFINTION IS HIDDEN!');\r\n // console.log(newParamRow.Parameters[p]);\r\n // }\r\n continue;\r\n }\r\n // END ONE-2400 TESTING *************\r\n\r\n\r\n // BEGIN HANDLING GROUP\r\n\r\n if (newParamRow.Parameters[p].Group_ID) {\r\n\r\n newGroupParamRow.Group_ID = newParamRow.Parameters[p].Group_ID;\r\n\r\n }\r\n\r\n\r\n if (newParamRow.Parameters[p].IsStartOfVisibleGroup) {\r\n\r\n newGroupParamRow.IsStartOfVisibleGroup = newParamRow.Parameters[p].IsStartOfVisibleGroup;\r\n\r\n }\r\n\r\n if (newParamRow.Parameters[p].IncludeLineAtStartOfGroup) {\r\n\r\n newGroupParamRow.IncludeLineAtStartOfGroup = newParamRow.Parameters[p].IncludeLineAtStartOfGroup;\r\n\r\n }\r\n\r\n if (newParamRow.Parameters[p].IsStartOfVisibleGroup) {\r\n newGroupParamRow.IsStartOfVisibleGroup = newParamRow.Parameters[p].IsStartOfVisibleGroup;\r\n }\r\n\r\n if (newParamRow.Parameters[p].IncludeGroupLabel) {\r\n newGroupParamRow.IncludeGroupLabel = newParamRow.Parameters[p].IncludeGroupLabel;\r\n }\r\n\r\n if (newParamRow.Parameters[p].GroupLabel > '') {\r\n newGroupParamRow.GroupLabel = newParamRow.Parameters[p].GroupLabel;\r\n }\r\n\r\n }\r\n\r\n if (newGroupParamRow.Group_ID > 0 && thisGroupHasBeenHandled == false) {\r\n\r\n this.ChunkedParameters.Rows.push(newGroupParamRow);\r\n thisGroupHasBeenHandled = true;\r\n }\r\n\r\n\r\n }\r\n\r\n this.ChunkedParameters.Rows.push(newParamRow);\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.ChunkedParameters);\r\n // }\r\n\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.ChunkedParameters);\r\n // }\r\n\r\n\r\n return newParamsRows;\r\n\r\n }\r\n\r\n getGroup(reportParametersInGroup: ReportParameter[]): ReportParameter[] {\r\n return (reportParametersInGroup);\r\n }\r\n\r\n\r\n getParameterRowParameters(paramRows: ParameterRow): ReportParameter[] {\r\n const paramRowParams: ReportParameter[] = [];\r\n\r\n for (let p = 0; p < paramRows.Parameters.length; p++) {\r\n\r\n const params: ReportParameter[] = [];\r\n paramRowParams.push(paramRows[p]);\r\n\r\n }\r\n\r\n return paramRowParams;\r\n }\r\n\r\n handleParameterGroups(paramsRows: ParameterRows) {\r\n // NOW WE START TO HANDLE GROUPS\r\n\r\n let needToAddNewParameterRow = false;\r\n\r\n for (let r = 0; r < paramsRows.Rows.length; r++) {\r\n\r\n needToAddNewParameterRow = false;\r\n const paramRow = new ParameterRow();\r\n paramRow.HasParameterInGroup = false;\r\n\r\n // now we need to handle parameter groups at the parameter row level\r\n\r\n const groupParamRow = new ParameterRow();\r\n\r\n for (let pr = 0; pr < paramRow.Parameters.length; pr++) {\r\n\r\n // if (this.inDebugMode && paramRow.Parameters[pr].ControlType == 'trctrl') {\r\n // console.log(paramRow.Parameters[pr]);\r\n // }\r\n\r\n if (!paramRow.AlreadyCheckedForGroupStart) {\r\n\r\n if (!paramRow.Parameters[pr].IsInGroup) {\r\n continue;\r\n }\r\n\r\n // groupParamRow\r\n groupParamRow.HasParameterInGroup = true;\r\n\r\n if (paramRow.Parameters[pr].IsStartOfVisibleGroup) {\r\n groupParamRow.IsStartOfVisibleGroup = true;\r\n paramRow.HasParameterInGroup = true; // mark the 'regular' param row\r\n groupParamRow.AlreadyCheckedForGroupStart = true;\r\n groupParamRow.IncludeGroupLabel = paramRow.Parameters[pr].IncludeGroupLabel;\r\n if (groupParamRow.IncludeGroupLabel) {\r\n groupParamRow.GroupLabel = paramRow.Parameters[pr].GroupLabel;\r\n }\r\n groupParamRow.IncludeLineAtStartOfGroup = paramRow.Parameters[pr].IncludeLineAtStartOfGroup;\r\n\r\n break; // we only need to check one start parameter in the row\r\n\r\n } // END IsStartOfVisibleGroup\r\n\r\n } // END AlreadyCheckedForGroupStart\r\n\r\n if (!paramRow.AlreadyCheckedForGroupEnd) {\r\n\r\n if (!paramRow.Parameters[pr].IsInGroup) {\r\n continue;\r\n }\r\n\r\n groupParamRow.HasParameterInGroup = true;\r\n\r\n if (paramRow.Parameters[pr].IsEndOfVisibleGroup) {\r\n groupParamRow.IsEndOfVisibleGroup = true;\r\n groupParamRow.AlreadyCheckedForGroupEnd = true;\r\n\r\n groupParamRow.IncludeLineAtEndOfGroup = paramRow.Parameters[pr].IncludeLineAtEndOfGroup;\r\n\r\n break; // we only need to check one end parameter in the row\r\n\r\n }\r\n\r\n } // END IsEndOfVisibleGroup\r\n\r\n\r\n if (groupParamRow.IncludeLineAtStartOfGroup && groupParamRow.HasParameterInGroup && groupParamRow.Parameters.length == 0) {\r\n paramsRows.Rows.push(groupParamRow);\r\n }\r\n\r\n\r\n } // END looping through GROUP parameters\r\n\r\n\r\n\r\n }\r\n // END HANDLE GROUPS\r\n }\r\n\r\n getParameterRows(nonPrivateParameters: ReportParameter[], maxNumberOfColumns: number, group_Ids: number[]): ParameterRows {\r\n\r\n const newParamsRows = new ParameterRows();\r\n let group_Id = 0;\r\n\r\n const groupParameters: ReportParameter[] = [];\r\n // this gets run for each parameter group, group_Id will be zero if they are not in a Definitions.ReportGroup\r\n\r\n for (let g = 0; g < group_Ids.length; g++) {\r\n\r\n group_Id = group_Ids[g];\r\n // const C: ReportParameter[] = [];\r\n // groupParameters.length = 0;\r\n\r\n // first we need to grab only the parameters in the particular group\r\n for (let p = 0; p < nonPrivateParameters.length; p++) {\r\n\r\n // if (nonPrivateParameters[p].Group_ID != group_Id) {\r\n // continue; // we are only looking at the parameters in a particular group at a time\r\n // }\r\n // else {\r\n // groupParameters.push(nonPrivateParameters[p]);\r\n // }\r\n\r\n\r\n if (nonPrivateParameters[p].Group_ID == group_Id) {\r\n\r\n // if (this.inDebugMode && nonPrivateParameters[p].ControlType == 'trctrl') {\r\n // console.log(nonPrivateParameters[p]);\r\n // }\r\n\r\n groupParameters.push(nonPrivateParameters[p]);\r\n }\r\n }\r\n\r\n // this.showHiddenParameters\r\n\r\n // // // we need to make sure that hidden parameters come before the end of the group line when the show hidden parameters is toggled ON\r\n // if (group_Id > 0) { // we only need to look at true grouped parameters\r\n\r\n // // let startIndex = -1;\r\n // // let endIndex = -1;\r\n\r\n // for (let i = 0; i < groupParameters.length; i++) {\r\n // groupParameters[i].IsVisible = true;\r\n\r\n // groupParameters[i].IsStartOfVisibleGroup = false;\r\n // groupParameters[i].IsEndOfVisibleGroup = false;\r\n\r\n // // if (i == 0) {\r\n // // groupParameters[i].IsStartOfVisibleGroup = true;\r\n // // }\r\n // // if (i == groupParameters.length - 1) {\r\n // // groupParameters[i].IsEndOfVisibleGroup = true;\r\n // // }\r\n // }\r\n\r\n // groupParameters[0].IsStartOfVisibleGroup = true;\r\n\r\n // groupParameters[groupParameters.length - 1].IsStartOfVisibleGroup = true;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(groupParameters);\r\n // }\r\n\r\n // }\r\n\r\n // const newParamsRows = new ParameterRows();\r\n let paramRow = new ParameterRow();\r\n newParamsRows.Rows = [];\r\n paramRow.Parameters = [];\r\n let currentColumn = 1;\r\n\r\n // for (let p1 = 0; p1 < groupParameters.length; p1++) {\r\n // groupParameters[p1].ParameterHasBeenAddedToRow = false;\r\n // }\r\n\r\n for (let p = 0; p < groupParameters.length; p++) {\r\n\r\n groupParameters[p].ParameterHasBeenAddedToRow = false;\r\n\r\n // if (groupParameters[p].ControlType == 'trctrl') {\r\n // groupParameters[p].IsStartOfVisibleGroup = true;\r\n // groupParameters[p].SpanEntireRow = true;\r\n // }\r\n\r\n if (groupParameters[p].IsStartOfVisibleGroup) {\r\n\r\n const startOfGroupParamRow = new ParameterRow();\r\n startOfGroupParamRow.IsStartOfVisibleGroup = true;\r\n startOfGroupParamRow.Group_ID = groupParameters[p].Group_ID;\r\n startOfGroupParamRow.GroupLabel = groupParameters[p].GroupLabel;\r\n startOfGroupParamRow.IncludeLineAtStartOfGroup = groupParameters[p].IncludeLineAtStartOfGroup;\r\n startOfGroupParamRow.IncludeGroupLabel = groupParameters[p].IncludeGroupLabel;\r\n startOfGroupParamRow.MaxNumberOfParameters = 0;\r\n newParamsRows.Rows.push(startOfGroupParamRow);\r\n }\r\n\r\n if (groupParameters[p].SpanEntireRow) {\r\n // we need to break out any parameters which span the entire row to a new row\r\n\r\n // first, we need to look for parameters which have NOT been added to a row\r\n // because they did not reach the max number of parameters\r\n\r\n const paramRowForParamsNotAddedYet = new ParameterRow();\r\n\r\n for (let x = 0; x < p; x++) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(groupParameters[x].ParameterName);\r\n // console.log('ParameterHasBeenAddedToRow: ');\r\n\r\n\r\n\r\n // console.log(groupParameters[x].ParameterHasBeenAddedToRow);\r\n // }\r\n\r\n if (!groupParameters[x].ParameterHasBeenAddedToRow) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('*** ADDING PARAMETER TO ROW ***');\r\n // }\r\n\r\n // if (this.inDebugMode && groupParameters[x].ControlType == 'trctrl') {\r\n // console.log(groupParameters[x]);\r\n // }\r\n\r\n paramRowForParamsNotAddedYet.Parameters.push(groupParameters[x]);\r\n }\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(paramRowForParamsNotAddedYet);\r\n // }\r\n\r\n\r\n if (paramRowForParamsNotAddedYet.Parameters.length > 0) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('*** ADDING PARAMETER ROW ITSELF ***');\r\n // console.log(paramRowForParamsNotAddedYet);\r\n // }\r\n\r\n this.setParameterHasBeenAddedToRow(paramRowForParamsNotAddedYet);\r\n\r\n\r\n newParamsRows.Rows.push(paramRowForParamsNotAddedYet);\r\n // paramRow = new ParameterRow();\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('SPANS WHOLE ROW');\r\n // }\r\n\r\n paramRow = new ParameterRow();\r\n\r\n if (groupParameters[p].IsInGroup) {\r\n paramRow.HasParameterInGroup = true;\r\n paramRow.Group_ID = group_Id;\r\n }\r\n\r\n groupParameters[p].ParameterHasBeenAddedToRow = true;\r\n paramRow.Parameters.push(groupParameters[p]);\r\n paramRow.MaxNumberOfParameters = 1;\r\n newParamsRows.Rows.push(paramRow);\r\n\r\n if (groupParameters[p].IsEndOfVisibleGroup) {\r\n const endOfGroupParamRow = new ParameterRow();\r\n endOfGroupParamRow.IsEndOfVisibleGroup = true;\r\n endOfGroupParamRow.Group_ID = groupParameters[p].Group_ID;\r\n endOfGroupParamRow.GroupLabel = groupParameters[p].GroupLabel;\r\n endOfGroupParamRow.IncludeLineAtEndOfGroup = groupParameters[p].IncludeLineAtEndOfGroup;\r\n endOfGroupParamRow.IncludeGroupLabel = groupParameters[p].IncludeGroupLabel;\r\n endOfGroupParamRow.MaxNumberOfParameters = 0;\r\n newParamsRows.Rows.push(endOfGroupParamRow);\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(paramRow);\r\n // }\r\n\r\n currentColumn = 1;\r\n paramRow = new ParameterRow();\r\n\r\n continue;\r\n }\r\n\r\n else { // DOES NOT SPAN WHOLE ROW\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('DOES NOT SPAN WHOLE ROW');\r\n // }\r\n\r\n // // debugging group parameters\r\n // if (this.inDebugMode && groupParameters[p].IsInGroup) {\r\n // console.log('DOES NOT SPAN WHOLE ROW');\r\n // }\r\n\r\n if (currentColumn <= maxNumberOfColumns) {\r\n\r\n paramRow.Parameters.push(groupParameters[p]);\r\n paramRow.MaxNumberOfParameters = maxNumberOfColumns;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(paramRow);\r\n // console.log('ADDING PARAM ' + groupParameters[p].Name);\r\n // }\r\n\r\n\r\n }\r\n\r\n if (currentColumn == maxNumberOfColumns || p == groupParameters.length - 1) {\r\n // we've reached maxNumberOfColumns\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('we have reached maxNumberOfColumns');\r\n // }\r\n\r\n // // debugging group parameters\r\n // if (this.inDebugMode && groupParameters[p].IsInGroup) {\r\n // console.log(console.log('WE HAVE REACHED maxNumberOfColumns'));\r\n // }\r\n\r\n if (groupParameters[p].IsInGroup) {\r\n paramRow.HasParameterInGroup = true;\r\n paramRow.Group_ID = group_Id;\r\n\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ADDING PARAM ROW');\r\n // console.log(paramRow);\r\n // }\r\n\r\n this.setParameterHasBeenAddedToRow(paramRow);\r\n\r\n newParamsRows.Rows.push(paramRow);\r\n\r\n if (groupParameters[p].IsEndOfVisibleGroup) {\r\n const endOfGroupParamRow = new ParameterRow();\r\n endOfGroupParamRow.IsEndOfVisibleGroup = true;\r\n endOfGroupParamRow.Group_ID = groupParameters[p].Group_ID;\r\n endOfGroupParamRow.GroupLabel = groupParameters[p].GroupLabel;\r\n endOfGroupParamRow.IncludeLineAtEndOfGroup = groupParameters[p].IncludeLineAtEndOfGroup;\r\n endOfGroupParamRow.IncludeGroupLabel = groupParameters[p].IncludeGroupLabel;\r\n endOfGroupParamRow.MaxNumberOfParameters = 0;\r\n newParamsRows.Rows.push(endOfGroupParamRow);\r\n }\r\n\r\n paramRow = new ParameterRow();\r\n if (groupParameters[p].IsInGroup) {\r\n paramRow.HasParameterInGroup = true;\r\n paramRow.Group_ID = group_Id;\r\n }\r\n // paramRow.Parameters.push(groupParameters[p]);\r\n currentColumn = 1;\r\n continue;\r\n // }\r\n\r\n }\r\n\r\n // if (groupParameters[p].IsEndOfVisibleGroup) {\r\n // const endOfGroupParamRow = new ParameterRow();\r\n // endOfGroupParamRow.IsEndOfVisibleGroup = true;\r\n // endOfGroupParamRow.Group_ID = groupParameters[p].Group_ID;\r\n // endOfGroupParamRow.GroupLabel = groupParameters[p].GroupLabel;\r\n // endOfGroupParamRow.IncludeLineAtEndOfGroup = groupParameters[p].IncludeLineAtEndOfGroup;\r\n // endOfGroupParamRow.IncludeGroupLabel = groupParameters[p].IncludeGroupLabel;\r\n // endOfGroupParamRow.MaxNumberOfParameters = 0;\r\n // newParamsRows.Rows.push(endOfGroupParamRow);\r\n // }\r\n\r\n currentColumn++;\r\n\r\n }\r\n\r\n\r\n\r\n // } // end handling group\r\n\r\n } // END for (let p\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(groupParameters);\r\n // // console.log(newParamsRows);\r\n // }\r\n\r\n } // END handling ALL groups - for (let g\r\n\r\n\r\n\r\n this.handleParameterGroups(newParamsRows);\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(newParamsRows);\r\n // }\r\n\r\n\r\n return newParamsRows;\r\n }\r\n\r\n setParameterHasBeenAddedToRow(paramRow: ParameterRow) {\r\n for (let i = 0; i < paramRow.Parameters.length; i++) {\r\n paramRow.Parameters[i].ParameterHasBeenAddedToRow = true;\r\n }\r\n }\r\n\r\n // getParameterRow(paramRow: ParameterRow, group_Id: number) {\r\n\r\n // }\r\n\r\n // getStartParameterRowBorder(paramRow: ParameterRow) {\r\n // if (paramRow.IncludeLineAtStartOfGroup) {\r\n // return '2 px solid silver;';\r\n // }\r\n // else {\r\n // return 'null';\r\n // }\r\n // }\r\n\r\n showHiddenParametersChecked(event: boolean) {\r\n this.showHiddenParameters = !this.showHiddenParameters;\r\n if (this.showHiddenParameters) {\r\n this.hiddenParametersLabel = 'Hide Hidden Parameters';\r\n }\r\n else {\r\n this.hiddenParametersLabel = 'Show Hidden Parameters';\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('showHiddenParametersChecked()');\r\n // console.log(event);\r\n // }\r\n\r\n this.initParameters();\r\n }\r\n\r\n distributeByEmailClick() {\r\n\r\n // const errCount = this.checkErrors();\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('errors: ' + errCount);\r\n // console.log(this.errors);\r\n // }\r\n\r\n // if (errCount > 0) {\r\n // // drop out here\r\n // return;\r\n // }\r\n\r\n this.reportService.isDistributebyEmail = true;\r\n this.selectedReport.IsDistributeByEmail = true;\r\n\r\n this.reportService.distributeByEmailOption_StudentSelected = this.distributeByEmailOption_StudentSelected;\r\n this.reportService.distributeByEmailOption_PrimaryContactSelected = this.distributeByEmailOption_PrimaryContactSelected;\r\n this.reportService.distributeByEmailOption_AllElectronicContactsSelected = this.distributeByEmailOption_AllElectronicContactsSelected;\r\n\r\n /*\r\n select 'Student' as TextField, 1 as ValueField\r\n union all\r\n select 'Primary Contact' as TextField, 2 as ValueField\r\n union all\r\n select 'All Electronic Contacts' as TextField, 3 as ValueField\r\n */\r\n\r\n // confirm they want to send the emails\r\n this.confirmReportToEmailDialogRef = this.confirmReportToEmailDialog.open(ConfirmReportToEmailComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.confirmReportToEmailDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (result == true) {\r\n this.executeDistributeByEmailAsync();\r\n this.thisDialogRef.close(); // close report parameters\r\n }\r\n });\r\n\r\n this.reportService.SelectedReport = this.selectedReport;\r\n\r\n // this.reportService.distributeByEmail().subscribe(results => {\r\n // });\r\n }\r\n\r\n archiveReportClick() {\r\n\r\n this.reportService.SelectedReport = this.selectedReport;\r\n\r\n // open archive popup\r\n this.archiveReportModalDialogRef = this.archiveReportModalDialog.open(ArchiveReportModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.archiveReportModalDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (result == true) {\r\n // this.executeRunReportToEmailAsync();\r\n this.thisDialogRef.close();\r\n }\r\n });\r\n\r\n }\r\n\r\n isEven(rownum: number) {\r\n return (rownum % 2) == 0;\r\n }\r\n\r\n reportOptionsClick() {\r\n this.reportService.SelectedReport = this.selectedReport;\r\n // this.reportService.ReportFolders = this.myReportFolders;\r\n\r\n this.reportOptionsDialogRef = this.reportOptionsDialog.open(ReportOptionsComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.reportOptionsDialogRef.afterClosed().subscribe(isDirty => {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('reportOptionsDialogRef.afterClosed()');\r\n // console.log('reportOptions.IsDirty' + isDirty);\r\n // }\r\n\r\n if (isDirty) {\r\n\r\n\r\n // do we really want to reload the report here?\r\n\r\n // clearing the parameters and definitions here so the DTO knows it is another initial load\r\n this.selectedReport.Parameters.length = 0;\r\n this.selectedReport.ReportDefinitions.length = 0;\r\n\r\n this.reportService.getReportParameters(-1, this.selectedReport, false).subscribe(selectedReport => {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(selectedReport);\r\n // }\r\n\r\n this.reportService.SelectedReport = selectedReport;\r\n // this.selectedReport = selectedReport;\r\n // this.initParameters();\r\n\r\n this.ngOnInit();\r\n\r\n });\r\n\r\n } // end if (isDirty)\r\n\r\n // if (result > '') {\r\n // this.getMyReportFolders();\r\n // }\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n // getLabels(parameter: ReportParameter) {\r\n // if (this.inDebugMode) {\r\n // console.log('getLabels(' + parameter.Name + ')');\r\n // }\r\n\r\n // this.tylMultiValueControlCollection.getLabels(parameter);\r\n // }\r\n\r\n\r\n\r\n radioButtonChange(event: MatRadioChange, param: ReportParameter) {\r\n // if (this.inDebugMode) {\r\n // console.log(event.value);\r\n // console.log(param.ParameterName);\r\n // }\r\n if (param.ParameterReportDefinition.CanSave) {\r\n param.ParameterReportDefinition.Value = event.value;\r\n }\r\n }\r\n\r\n\r\n datePickerChanged(param: ReportParameter) {\r\n\r\n if (param.ParameterReportDefinition.CanSave) {\r\n param.ParameterReportDefinition.Value = param.Value;\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('datePickerChanged() after value reset');\r\n // console.log(param);\r\n // console.log('this.selectedReport.Parameters[param.Id].ParameterReportDefinition');\r\n // console.log(this.selectedReport.Parameters[param.Id].ParameterReportDefinition);\r\n // }\r\n\r\n // this.selectedReport.Parameters[param.Id].ParameterReportDefinition = param.ParameterReportDefinition;\r\n\r\n }\r\n\r\n\r\n SelectedReportToConsole() {\r\n console.log(this.ChunkedParameters);\r\n console.log(this.selectedReport);\r\n\r\n }\r\n\r\n\r\n\r\n // runReportToEmail(reportType: string) {\r\n // this.reportService.runReportToEmail().subscribe(results => {\r\n // this.reportService.runReportToEmail();\r\n // });\r\n\r\n // }\r\n\r\n sendToEmailChecked(isChecked: boolean) {\r\n\r\n // right now the only errors being handled are for report to email\r\n // so clear them out if they uncheck the checkbox\r\n if (!isChecked) {\r\n this.errors = [];\r\n }\r\n }\r\n\r\n\r\n // ERROR CHECKING\r\n\r\n // START - Implementing for HasErrors **********************\r\n\r\n save() {\r\n\r\n }\r\n\r\n checkErrors(): number {\r\n this.errors = [];\r\n this.validateFields();\r\n return this.errors.length;\r\n\r\n }\r\n\r\n validateFields() {\r\n this.errors = [];\r\n\r\n if (this.selectedReport.SendToEmail) {\r\n this.validateEmailFields();\r\n\r\n // System.forceUpdateValidity(this.ngForm);\r\n }\r\n\r\n }\r\n\r\n // END - Implementing for HasErrors **********************\r\n\r\n\r\n validateEmailFields() {\r\n // let emailsFieldsAreValid = true;\r\n\r\n // let emailErrorMessages = '';\r\n // const emailRegex = this.getEmailRegexp;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('validateEmailFields');\r\n // }\r\n\r\n const emailFormat = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,4})+$/;\r\n const emailsTo: string[] = this.selectedReport.EmailsToSendReport.replace(' ', '').split(';');\r\n\r\n // remove final empty string from split\r\n if (emailsTo.length > 1) {\r\n if (emailsTo[emailsTo.length - 1] == '') {\r\n emailsTo.length = emailsTo.length - 1;\r\n }\r\n }\r\n\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(emailsTo);\r\n // }\r\n\r\n /********************* START EMAIL FROM VALIDATION *********************/\r\n\r\n // Email From required -- FIRST MESSAGE\r\n if (this.selectedReport.EmailFrom.trim().length == 0) {\r\n\r\n this.errors.push({\r\n fieldName: 'Email From',\r\n errorMsg: 'Required field.',\r\n fieldRef: this.emailFrom\r\n });\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('this.selectedReport.EmailFrom.trim().length');\r\n // console.log(this.selectedReport.EmailFrom.trim().length);\r\n // }\r\n }\r\n else {\r\n\r\n // errorMsg: this.selectedReport.EmailFrom.trim() + ' is not a valid email format',\r\n\r\n // check Email From format -- SECOND MESSAGE\r\n if (this.selectedReport.EmailFrom.trim().match(emailFormat) == null) {\r\n this.errors.push({\r\n fieldName: 'Email From',\r\n errorMsg: 'Invalid email address.',\r\n fieldRef: this.emailFrom\r\n });\r\n\r\n }\r\n\r\n else {\r\n\r\n // check Email From is a single email -- THIRD MESSAGE\r\n if (this.selectedReport.EmailFrom.split(';').length > 1) {\r\n\r\n this.errors.push({\r\n fieldName: 'Email From',\r\n errorMsg: 'Must be a single email.',\r\n fieldRef: this.emailFrom\r\n });\r\n\r\n }\r\n }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('this.selectedReport.EmailFrom.trim().match(emailFormat)');\r\n // console.log(this.selectedReport.EmailFrom.trim().match(emailFormat));\r\n // }\r\n\r\n }\r\n\r\n /********************* START EMAIL TO VALIDATION *********************/\r\n\r\n // Send to Email required -- FIRST MESSAGE\r\n if (this.selectedReport.EmailsToSendReport.trim().length == 0) {\r\n\r\n this.errors.push({\r\n fieldName: 'Send to Email(s)',\r\n errorMsg: 'Required field.',\r\n fieldRef: this.emailsToSendReport\r\n });\r\n\r\n }\r\n else {\r\n\r\n // check Send to Email(s) format -- SECOND MESSAGE\r\n for (let i = 0; i < emailsTo.length; i++) {\r\n if (emailsTo[i].length > 0 && emailsTo[i].trim().match(emailFormat) == null) {\r\n\r\n this.errors.push({\r\n fieldName: 'Send to Email(s)',\r\n errorMsg: emailsTo[i].trim() + ' is not a valid email format',\r\n fieldRef: this.emailsToSendReport\r\n });\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('Send to email');\r\n // console.log(emailsTo[i]);\r\n // }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n /********************* START EMAIL SUBJECT VALIDATION *********************/\r\n\r\n // Email Subject required\r\n if (this.selectedReport.EmailSubject.trim().length == 0) {\r\n\r\n this.errors.push({\r\n fieldName: 'Email Subject',\r\n errorMsg: 'Required field.',\r\n fieldRef: this.emailSubject\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n runReportToEmail(reportType: string) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('runReportToEmail');\r\n // }\r\n\r\n const errCount = this.checkErrors();\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('errors: ' + errCount);\r\n // console.log(this.errors);\r\n // }\r\n\r\n if (errCount > 0) {\r\n // drop out here\r\n return;\r\n }\r\n\r\n\r\n // confirm they want to send the emails\r\n this.confirmReportToEmailDialogRef = this.confirmReportToEmailDialog.open(ConfirmReportToEmailComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.confirmReportToEmailDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (result == true) {\r\n this.executeRunReportToEmailAsync();\r\n this.thisDialogRef.close();\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n // this will kick off a background process by unsubscribing immediately\r\n executeRunReportToEmailAsync() {\r\n const asyncSub = this.reportService.runReportToEmail().subscribe(() => { });\r\n setTimeout(() => {\r\n asyncSub.unsubscribe();\r\n }, 0);\r\n }\r\n\r\n // this will kick off a background process by unsubscribing immediately\r\n executeDistributeByEmailAsync() {\r\n const asyncSub = this.reportService.distributeByEmail().subscribe(() => { });\r\n setTimeout(() => {\r\n asyncSub.unsubscribe();\r\n }, 0);\r\n }\r\n\r\n\r\n // IsDistrictReportDefinitionsChanged(event: MatRadioChange) {\r\n\r\n // // this.selectedReport.IsDistrictReportDefinitions = !this.selectedReport.IsDistrictReportDefinitions;\r\n\r\n // if (this.inDebugMode) {\r\n // // console.log('IsDistrictReportDefinitionsChanged()');\r\n // console.log(event.value);\r\n // // console.log('this.selectedReport.IsDistrictReportDefinitions');\r\n // // console.log(this.selectedReport.IsDistrictReportDefinitions);\r\n // }\r\n\r\n // if (event.value == 'true') {\r\n // this.selectedReport.IsDistrictReportDefinitions = true;\r\n // }\r\n // else {\r\n // this.selectedReport.IsDistrictReportDefinitions = false;\r\n // }\r\n // // we need to reload the report for appropriate saved report defs\r\n\r\n // this.selectedReport.GetSelectedReportDefintionsOnly = true;\r\n\r\n // // this.selectedReport.Parameters.length = 0;\r\n // // this.selectedReport.ReportDefinitions.length = 0;\r\n\r\n\r\n // // this.reportService.getReportParameters(-1, this.selectedReport).subscribe(report => {\r\n // // this.selectedReport = report; // update the local reference\r\n // // });\r\n\r\n\r\n // }\r\n\r\n\r\n getReportParameters(paramId: number) {\r\n this.reportService.getReportParameters(paramId, this.selectedReport).subscribe(report => {\r\n this.selectedReport = report; // update the local reference\r\n\r\n // IMPORTANT: we need to update the chunked rows to refresh the references to the updated parameters\r\n\r\n // if (paramId > -1) {\r\n this.initParameters();\r\n // }\r\n\r\n // this.setParameterRows(this.maxTableCellsPerRow);\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.selectedReport);\r\n // }\r\n\r\n });\r\n\r\n // console.log(this.tempReport)\r\n // this.selectedReport.Parameters[paramId].Value = this.tempReport.Parameters[paramId].Value\r\n // this.selectedReport.Parameters[paramId].DataSource = this.tempReport.Parameters[paramId].DataSource;\r\n\r\n // we need to update any child controls\r\n }\r\n\r\n\r\n\r\n cancelSendToEmailClick() {\r\n\r\n this.selectedReport.SendToEmail = !this.selectedReport.SendToEmail;\r\n this.showCancelSendToEmail = !this.showCancelSendToEmail;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ReportParametersComponent => cancelSendToEmailClick');\r\n // console.log(this.showCancelSendToEmail);\r\n // }\r\n\r\n }\r\n\r\n cancelShowReportOptionsClick() {\r\n\r\n this.selectedReport.ShowReportOptions = !this.selectedReport.ShowReportOptions;\r\n this.showCancelShowReportOptions = !this.showCancelShowReportOptions;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ReportParametersComponent => cancelShowReportOptionsClick()');\r\n // // console.log(this.showCancelShowReportOptions);\r\n // }\r\n\r\n }\r\n\r\n\r\n cancelShowReportParameters() {\r\n // this.cancelShowReport = true;\r\n\r\n // if auto-run then use close dialog on that component for unsaved changes\r\n if (this.selectedReport.AutoRunReport && this.reportService.isForSchedule) {\r\n this.AutoRunComponent.cancelClick();\r\n } else {\r\n this.thisDialogRef.close();\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // saveReportOptionsClick() {\r\n\r\n // // const parameterDefinitions: ReportDefinition[] = [];\r\n\r\n // // for (let i = 0; i < this.selectedReport.Parameters.length; i++) {\r\n\r\n // // let thisReportDef: ReportDefinition;\r\n // // thisReportDef = this.selectedReport.Parameters[i].ParameterReportDefinition;\r\n\r\n // // if (\r\n // // // we want to ignore any system parameters\r\n // // !(thisReportDef.IsSystem && !thisReportDef.AllowUserSaveParameter && !thisReportDef.AllowUserHideParameter)\r\n\r\n // // // we want to ignore any parameters that don't have a saved definition and have no options checked\r\n // // && !(thisReportDef.HasReportDefinition == 0 && !thisReportDef.CanSave && !thisReportDef.IsHidden)\r\n\r\n // // ) {\r\n\r\n // // // handle district parameters\r\n // // if (this.selectedReport.IsDistrictReportDefinitions && thisReportDef.IsDistrictDefinedParameter) {\r\n // // parameterDefinitions.push(thisReportDef);\r\n // // }\r\n\r\n // // // handle user parameter definitions\r\n // // if (!this.selectedReport.IsDistrictReportDefinitions && !thisReportDef.IsDistrictDefinedParameter) {\r\n // // parameterDefinitions.push(thisReportDef);\r\n // // }\r\n\r\n // // }\r\n // // }\r\n\r\n // // this.reportService.saveReportOptions(parameterDefinitions, saveHideSaveOptions).subscribe(saveWasSuccessful => {\r\n\r\n // // // this.cancelShowReportOptionsClick();\r\n // // console.log('saveWasSuccessful: ' + saveWasSuccessful);\r\n\r\n // // });\r\n\r\n\r\n // }\r\n\r\n // gets the email regex for validation\r\n getEmailRegexp() {\r\n return this.reportService.getEmailRegexp();\r\n }\r\n\r\n // validateFields() {\r\n // \tthis.errors = [];\r\n // \tconst emailFormat = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,4})+$/;\r\n // }\r\n\r\n // getColspan(parameter: ReportParameter) {\r\n // if (parameter.SpanEntireRow) {\r\n // return this.maxTableCellsPerRow;\r\n // }\r\n // else {\r\n // return parameter.SpanNumberOfColumns;\r\n // }\r\n // }\r\n\r\n getColumnWidth(parameter: ReportParameter) {\r\n if (parameter.SpanEntireRow) {\r\n return '100%';\r\n }\r\n else {\r\n return this.ParamColWidth;\r\n }\r\n }\r\n\r\n getFlexDirection(parameter: ReportParameter) {\r\n if (parameter.ShowOptionsVertically) {\r\n return 'column';\r\n }\r\n else {\r\n return 'row';\r\n }\r\n }\r\n\r\n getArrangeDirection(parameter: ReportParameter) {\r\n if (parameter.ShowOptionsVertically) {\r\n return 'vertical';\r\n }\r\n else {\r\n return 'horizontal';\r\n }\r\n }\r\n\r\n getWrap(parameter: ReportParameter) {\r\n if (parameter.NoWrap) {\r\n return 'nowrap';\r\n }\r\n else {\r\n return 'wrap';\r\n }\r\n }\r\n\r\n\r\n ddlChange(parameter: ReportParameter) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ReportParametersComponent => filterChangeByModel(parameter)');\r\n // console.log(this.selectedReport.Parameters[parameter.Id])\r\n // }\r\n\r\n this.parameterChanged(parameter);\r\n // this.filterChanged.emit('changed');\r\n\r\n\r\n }\r\n\r\n ddbcblChanged(parameter: ReportParameter, dataItem: DataSource) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ReportParametersComponent => ddbcblChanged(parameter)');\r\n // console.log(parameter);\r\n // console.log(this.selectedReport.Parameters[parameter.Id].MultiValue);\r\n // }\r\n\r\n dataItem.IsSelected = !dataItem.IsSelected;\r\n\r\n let allIndex = -1;\r\n\r\n for (let x = 0; x < parameter.DataSource.length; x++) {\r\n if (parameter.DataSource[x].TextField.toString().toLowerCase() == 'all' && parameter.DataSource[x].ValueField == '-1') {\r\n allIndex = x;\r\n }\r\n }\r\n\r\n if (allIndex > -1) { // has ALL checkbox\r\n\r\n\r\n // check/uncheck when All is changed\r\n if (dataItem.TextField.toString().toLowerCase() == 'all' && dataItem.ValueField == '-1') { // -1 is All\r\n\r\n // now set the others to match All\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n parameter.DataSource[i].IsSelected = parameter.DataSource[allIndex].IsSelected;\r\n }\r\n\r\n // first toggle the ALL checkbox\r\n // parameter.DataSource[0].IsSelected = !parameter.DataSource[0].IsSelected;\r\n\r\n // // now set the others to match All\r\n // for (let i = 0; i < parameter.DataSource.length; i++) {\r\n // parameter.DataSource[i].IsSelected = parameter.DataSource[0].IsSelected;\r\n // }\r\n }\r\n\r\n // let firstCheckBoxIsAll = false;\r\n\r\n // if (parameter.DataSource[0].TextField.toString().toLowerCase() == 'all' && parameter.DataSource[0].ValueField == '-1') {\r\n // firstCheckBoxIsAll = true;\r\n // }\r\n\r\n // uncheck the All checkbox if ANY checkbox is unselected\r\n\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n\r\n if (i != allIndex && !parameter.DataSource[i].IsSelected) {\r\n parameter.DataSource[allIndex].IsSelected = false; // uncheck All\r\n break;\r\n }\r\n }\r\n\r\n\r\n // we need to check the ALL checkbox if ALL other checkboxes are checked\r\n\r\n let allCheckBoxesAreChecked = true;\r\n\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n if (i != allIndex && !parameter.DataSource[i].IsSelected) {\r\n allCheckBoxesAreChecked = false;\r\n break;\r\n }\r\n }\r\n if (allCheckBoxesAreChecked) {\r\n parameter.DataSource[allIndex].IsSelected = true;\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n // we need to update the MultiValue based on the selected checkboxes\r\n\r\n const newMulivalues: string[] = []; // must initialize for push to work!\r\n\r\n // parameter.MultiValue.\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n if (parameter.DataSource[i].IsSelected) {\r\n newMulivalues.push(parameter.DataSource[i].ValueField);\r\n }\r\n }\r\n\r\n parameter.MultiValue = newMulivalues;\r\n\r\n\r\n this.parameterChanged(parameter);\r\n\r\n // this.filterChanged.emit(parameter.Name);\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('After calling this.parameterChanged(parameter) - MultiValue:');\r\n // console.log(this.selectedReport.Parameters[parameter.Id].MultiValue);\r\n // console.log('Value:');\r\n // console.log(this.selectedReport.Parameters[parameter.Id].Value);\r\n // }\r\n\r\n }\r\n\r\n\r\n // reportDefinitionOptionChanged(parmOption: string, parameterId: number) { // parameter: ReportParameter, parmOption: NameValue_Bool ){\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ReportParametersComponent => reportDefinitionOptionChanged(parameter)');\r\n // console.log(parmOption);\r\n // console.log(this.selectedReport.Parameters[parameterId].Name);\r\n // }\r\n // for (let i = 0; i < this.selectedReport.Parameters[parameterId].ParameterOptions.length; i++) {\r\n\r\n // if (this.selectedReport.Parameters[parameterId].ParameterOptions[i].Name == parmOption) {\r\n\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.selectedReport.Parameters[parameterId].ParameterOptions[i]);\r\n // }\r\n\r\n // let nameValue: NameValueBool;\r\n // nameValue = this.selectedReport.Parameters[parameterId].ParameterOptions[i];\r\n // // nameValue.Value = !nameValue.Value; // no need to toggle the flag, it is bound to the value\r\n\r\n // this.selectedReport.Parameters[parameterId].ParameterOptions[i] = nameValue;\r\n\r\n // let paramReportDefinition: ReportDefinition;\r\n // paramReportDefinition = this.selectedReport.Parameters[parameterId].ParameterReportDefinition;\r\n\r\n // if (parmOption == 'Save') {\r\n // paramReportDefinition.CanSave = nameValue.Value;\r\n // paramReportDefinition.HasParameterValueDefined = 1;\r\n // paramReportDefinition.Value = this.selectedReport.Parameters[parameterId].Value; // update the definition value\r\n // }\r\n\r\n // if (parmOption == 'Hide') {\r\n // paramReportDefinition.IsHidden = nameValue.Value;\r\n // }\r\n\r\n // this.selectedReport.Parameters[parameterId].ParameterReportDefinition = paramReportDefinition;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(paramReportDefinition);\r\n // console.log(nameValue.Value);\r\n // console.log(this.selectedReport.Parameters[parameterId].ParameterReportDefinition);\r\n // }\r\n\r\n // break;\r\n // }\r\n // }\r\n\r\n // // ShowOptionsVertically\r\n\r\n // }\r\n\r\n\r\n parameterChanged(parameter: ReportParameter, event?: any, index?: number) {\r\n\r\n\r\n\r\n // this.changeDetector.detectChanges();\r\n // }\r\n\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('Start ReportParametersComponent => parameterChanged()');\r\n // console.log('local parameter:');\r\n // console.log(parameter);\r\n // console.log('event');\r\n // console.log(event);\r\n // console.log('index');\r\n // console.log(index);\r\n // console.log('this.ChunkedParameters');\r\n // console.log(this.ChunkedParameters);\r\n\r\n // }\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('this.selectedReport.Parameters[parameter.Id].ParameterReportDefinition.Value:');\r\n // console.log(this.selectedReport.Parameters[parameter.Id].ParameterReportDefinition.Value);\r\n\r\n // }\r\n\r\n // for cbl we need to reset the parameter's value to match the DataSource.IsSelected is true\r\n\r\n if (parameter.ControlType == 'cbl') {\r\n this.handleAllChecked(parameter, index);\r\n parameter.Value = '';\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n if (parameter.DataSource[i].IsSelected) {\r\n parameter.Value += parameter.DataSource[i].ValueField + ',';\r\n }\r\n\r\n // parameter.Value = parameter.Value.replace(/(^,)|(,$)/g, '');\r\n }\r\n\r\n if (parameter.Value.endsWith(',')) {\r\n // now remove trailing comma\r\n parameter.Value = parameter.Value.slice(0, -1);\r\n }\r\n\r\n }\r\n\r\n\r\n // for ddcbl we need to reset the parameter's value to match the MultiValue property\r\n\r\n if (parameter.ControlType == 'ddcbl') {\r\n\r\n parameter.Value = '';\r\n\r\n for (let i = 0; i < parameter.MultiValue.length; i++) {\r\n parameter.Value += parameter.MultiValue[i] + ',';\r\n }\r\n\r\n parameter.Value = parameter.Value.replace(/(^,)|(,$)/g, '');\r\n }\r\n\r\n if (parameter.IsParent) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('ReportParametersComponent => parameterChanged() : parameter.IsParent = true');\r\n // }\r\n\r\n this.getReportParameters(parameter.RC_ID);\r\n\r\n }\r\n\r\n if (parameter.ParameterName.toLowerCase() == '@distributebyemailoption') {\r\n\r\n // this.handleDistributeByEmailOption(params[p].Value);\r\n const recipients: string = parameter.Value;\r\n\r\n this.handleDistributeByEmailOption(recipients);\r\n\r\n }\r\n }\r\n\r\n handleAllChecked(parameter: ReportParameter, index: number) {\r\n // check/uncheck when All is changed\r\n if (index == 0 && parameter.DataSource[0].TextField.toString().toLowerCase() == 'all' && parameter.DataSource[0].ValueField == '-1') { // -1 is All\r\n\r\n // now set the others to match All\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n parameter.DataSource[i].IsSelected = parameter.DataSource[0].IsSelected;\r\n }\r\n return; // drop out here\r\n }\r\n\r\n // otherwise, we need to set the All checkbox based on selections\r\n\r\n let firstCheckBoxIsAll = false;\r\n\r\n if (parameter.DataSource[0].TextField.toString().toLowerCase() == 'all' && parameter.DataSource[0].ValueField == '-1') {\r\n firstCheckBoxIsAll = true;\r\n }\r\n\r\n // uncheck the All checkbox if ANY checkbox is unselected\r\n if (firstCheckBoxIsAll) {\r\n for (let i = 1; i < parameter.DataSource.length; i++) { // starting at index 1 instead of o to skip looking at All\r\n\r\n if (!parameter.DataSource[i].IsSelected) {\r\n parameter.DataSource[0].IsSelected = false; // uncheck All\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // we need to check the ALL checkbox if ALL other checkboxes are checked\r\n\r\n let allCheckBoxesAreChecked = true;\r\n\r\n if (firstCheckBoxIsAll) {\r\n for (let i = 1; i < parameter.DataSource.length; i++) {\r\n if (!parameter.DataSource[i].IsSelected) {\r\n allCheckBoxesAreChecked = false;\r\n break;\r\n }\r\n }\r\n if (allCheckBoxesAreChecked) {\r\n parameter.DataSource[0].IsSelected = true;\r\n }\r\n }\r\n\r\n\r\n this.selectedReport.Parameters[parameter.Id].ParameterReportDefinition.Value = parameter.Value;\r\n\r\n\r\n }\r\n\r\n textChanged(parameter: ReportParameter) {\r\n\r\n }\r\n\r\n\r\n runReport(reportType: string) {\r\n\r\n this.selectedReport.ReportFormat = reportType;\r\n this.reportService.SelectedReport = this.selectedReport; // ???\r\n\r\n this.reportService.runReport().subscribe(results => {\r\n\r\n if (reportType == 'PDF' || reportType == 'EXCEL') {\r\n this.runReportByType(reportType, results);\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n runReportByType(reportType: string, results): void {\r\n\r\n try {\r\n\r\n this.selectedReport.ReportFormat = reportType; // 'PDF';\r\n\r\n const byteCharacters: string = atob(results);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n\r\n const byteArray: Uint8Array = new Uint8Array(byteNumbers);\r\n\r\n\r\n let fileExtension: string;\r\n let mimeType: string;\r\n if (this.selectedReport.ReportFormat == 'PDF') {\r\n mimeType = 'application/pdf';\r\n fileExtension = '.pdf';\r\n } else if (reportType == 'EXCEL') {\r\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset-utf-8;';\r\n fileExtension = '.xls';\r\n }\r\n\r\n let FileAsBlob: Blob;\r\n\r\n if (reportType == 'PDF') {\r\n FileAsBlob = new Blob([byteArray], { type: 'application/pdf' });\r\n }\r\n else if (reportType == 'EXCEL') {\r\n FileAsBlob = new Blob([byteArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + results });\r\n }\r\n\r\n // For other browsers:\r\n // Create a link pointing to the ObjectURL containing the blob.\r\n\r\n const reportNameWithoutSpaces: string = this.selectedReport.Name.replace(/ /g, '');\r\n\r\n const data = window.URL.createObjectURL(FileAsBlob);\r\n const link = document.createElement('a');\r\n link.href = data;\r\n link.download = reportNameWithoutSpaces + fileExtension;\r\n // link.title = reportNameWithoutSpaces + '.pdf';\r\n link.click();\r\n\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n setTimeout(this.revokeObjectURL(data), 100);\r\n\r\n } catch { }\r\n\r\n } // end runReportPDF\r\n\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n revokeObjectURL(data): any {\r\n window.URL.revokeObjectURL(data);\r\n }\r\n\r\n\r\n rblChanged(parameter: ReportParameter, dataItem: DataSource) {\r\n\r\n const selectedValueField = dataItem.ValueField;\r\n\r\n this.selectedReport.Parameters[parameter.Id].Value = selectedValueField;\r\n\r\n if (parameter.IsParent) {\r\n\r\n this.getReportParameters(parameter.RC_ID);\r\n }\r\n\r\n this.selectedReport.Parameters[parameter.Id] = parameter;\r\n\r\n this.reportService.SelectedReport.Parameters[parameter.Id] = parameter;\r\n\r\n } // END rblChanged\r\n\r\n\r\n\r\n cblChanged(parameter: ReportParameter, dataItem: DataSource) {\r\n\r\n // first toggle the checkbox\r\n\r\n dataItem.IsSelected = !dataItem.IsSelected;\r\n\r\n\r\n // check/uncheck when All is changed\r\n if (dataItem.TextField.toString().toLowerCase() == 'all' && dataItem.ValueField == '-1') { // -1 is All\r\n\r\n // now set the others to match All\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n parameter.DataSource[i].IsSelected = parameter.DataSource[0].IsSelected;\r\n }\r\n }\r\n\r\n let firstCheckBoxIsAll = false;\r\n\r\n if (parameter.DataSource[0].TextField.toString().toLowerCase() == 'all' && parameter.DataSource[0].ValueField == '-1') {\r\n firstCheckBoxIsAll = true;\r\n }\r\n\r\n // uncheck the All checkbox if ANY checkbox is unselected\r\n if (firstCheckBoxIsAll) {\r\n for (let i = 1; i < parameter.DataSource.length; i++) { // starting at index 1 instead of o to skip looking at All\r\n\r\n if (!parameter.DataSource[i].IsSelected) {\r\n parameter.DataSource[0].IsSelected = false; // uncheck All\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // we need to check the ALL checkbox if ALL other checkboxes are checked\r\n\r\n let allCheckBoxesAreChecked = true;\r\n\r\n if (firstCheckBoxIsAll) {\r\n for (let i = 1; i < parameter.DataSource.length; i++) {\r\n if (!parameter.DataSource[i].IsSelected) {\r\n allCheckBoxesAreChecked = false;\r\n break;\r\n }\r\n }\r\n if (allCheckBoxesAreChecked) {\r\n parameter.DataSource[0].IsSelected = true;\r\n }\r\n }\r\n\r\n\r\n // now we need to reset the value of this parameter to include only selected items\r\n\r\n let newValue = '';\r\n\r\n for (let i = 0; i < parameter.DataSource.length; i++) {\r\n if (parameter.DataSource[i].IsSelected) {\r\n\r\n // we need set the comma delimited value\r\n\r\n newValue += parameter.DataSource[i].ValueField + ',';\r\n\r\n }\r\n\r\n } // END for loop\r\n\r\n if (newValue.toString().endsWith(',')) {\r\n // now remove trailing comma\r\n newValue = newValue.toString().slice(0, -1);\r\n }\r\n\r\n parameter.Value = newValue; // ??\r\n\r\n\r\n // to update any dependencies\r\n\r\n if (parameter.IsParent) {\r\n\r\n this.getReportParameters(parameter.RC_ID);\r\n }\r\n\r\n this.parameterChanged(parameter); // ?????\r\n\r\n\r\n this.selectedReport.Parameters[parameter.Id] = parameter;\r\n\r\n } // END cblChanged\r\n\r\n legendClick() {\r\n this.reportLegendDialogRef = this.reportLegendDialog.open(ReportLegendComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n }\r\n\r\n studentSearchClick(parameter: ReportParameter) {\r\n this.StudentSearchDialogRef = this.studentSearchDialog.open(\r\n StudentSearchComponent,\r\n {\r\n data: {\r\n searchAndSelect: true,\r\n returnSelectedStudents: true\r\n\r\n },\r\n disableClose: true,\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n });\r\n this.subscriptions.push(\r\n this.StudentSearchDialogRef.afterClosed().subscribe(result => {\r\n if (result != undefined) {\r\n this.selectedStudentSearch = result;\r\n\r\n this.studentList = [];\r\n\r\n for (const key of Object.keys(this.selectedStudentSearch)) {\r\n\r\n this.studentList.push(this.selectedStudentSearch[key].StudentNumber);\r\n\r\n // remove commas, replace with carriage return\r\n this.studentListString = this.studentList.join('\\r\\n');\r\n }\r\n\r\n parameter.Value = this.studentListString; // set the parameters value\r\n\r\n this.selectedStudentSearch = undefined; // cleanup\r\n this.studentList = undefined; // cleanup\r\n\r\n }\r\n })\r\n );\r\n } // end studentSearchClick\r\n\r\n getQueryString() {\r\n // FOR DEBUGGING PURPOSES\r\n this.reportService.getReportQueueQuery(this.selectedReport).subscribe(queryString => {\r\n\r\n this.debugMessage = queryString; // this.debugMessage + queryString + '\\r\\n\\r\\n';\r\n // this.debugInfo.nativeElement.focus();\r\n // window.scrollTo(0, document.body.scrollHeight); // scroll to bottom so query string is visible\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(queryString);\r\n // }\r\n\r\n });\r\n }\r\n\r\n isDebugModeInProductionChecked(checked: boolean) {\r\n this.isDebugModeInProduction = checked;\r\n this.reportService.isDebugModeInProduction = this.isDebugModeInProduction;\r\n if (this.inDebugMode || (this.reportService.isTylerAdmin && this.isDebugModeInProduction)) {\r\n this.showReportToConsole = true;\r\n }\r\n else {\r\n this.showReportToConsole = false;\r\n }\r\n }\r\n\r\n continuedWithoutSave(): any {\r\n }\r\n\r\n\r\n\r\n} // END class ReportParametersComponent\r\n\r\n\r\n","
\r\n Add Report Folder\r\n Edit Report Folder\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { ReportFolder } from '../../models/report-folder.model';\r\nimport { CheckForErrorsMessageComponent } from '../../../../shared-components/guards/check-for-errors/check-for-errors-message/check-for-errors-message.component';\r\n\r\n\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'AddReportFolder',\r\n templateUrl: './add-folder.component.html',\r\n styleUrls: ['./add-folder.component.css']\r\n})\r\n\r\nexport class AddReportFolderComponent implements OnInit, OnDestroy {\r\n\r\n // private reportService: ReportingService;\r\n\r\n // @Output() deleteSnapshotEvent: EventEmitter = new EventEmitter();\r\n\r\n // private snapshotToDelete: AutoRunSnapshot;\r\n\r\n // private _reportName: string;\r\n // private _autoRunDate: Date;\r\n\r\n // get reportName(): string {\r\n // return this._reportName;\r\n // }\r\n\r\n // set reportName(value: string) {\r\n // this._reportName = value;\r\n // }\r\n\r\n // get autoRunDate(): Date {\r\n // return this._autoRunDate;\r\n // }\r\n\r\n // set autoRunDate(value: Date) {\r\n // this._autoRunDate = value;\r\n // }\r\n\r\n folderName: string;\r\n folderDescription: string;\r\n isFolderEdit: boolean;\r\n reportFolder: ReportFolder;\r\n ReportFolderToEdit: ReportFolder;\r\n isDirty: boolean;\r\n\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog\r\n\r\n ) {\r\n\r\n this.isFolderEdit = this.reportService.isFolderEdit;\r\n this.ReportFolderToEdit = this.reportService.ReportFolderToEdit;\r\n\r\n if (this.isFolderEdit) {\r\n\r\n this.folderName = this.ReportFolderToEdit.Name;\r\n this.folderDescription = this.ReportFolderToEdit.Description;\r\n }\r\n\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('AddReportFolderComponent > isFolderEdit: ' + this.isFolderEdit.toString());\r\n }\r\n // this.snapshotToDelete = reportService.autoRunSnapshot;\r\n\r\n // this.autoRunDate = this.snapshotToDelete.TimeStamp;\r\n // this.reportName = this.snapshotToDelete.ReportName;\r\n }\r\n\r\n ngOnInit() {\r\n this.isDirty = false;\r\n }\r\n\r\n saveReportFolderClick() {\r\n // they must enter a folder name to pass validation\r\n if (typeof this.folderName === 'undefined') {\r\n return;\r\n }\r\n\r\n let folderAlreadyExists = false;\r\n for (let i; i < this.reportService.ReportFolders.length; i++) {\r\n if (this.reportService.ReportFolders[i].Name.toLowerCase() == this.folderName.toLowerCase()) {\r\n folderAlreadyExists = true;\r\n break;\r\n }\r\n }\r\n if (!folderAlreadyExists) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('saveReportFolderClick()');\r\n }\r\n\r\n // avoid printing 'undefined' as folder desc\r\n if (typeof this.folderDescription === 'undefined') {\r\n this.folderDescription = '';\r\n // return;\r\n }\r\n\r\n // if (typeof this.folderDescription == 'undefined' || this.folderDescription == '') {\r\n // // this.folderDescription = '';\r\n // return;\r\n\r\n // }\r\n\r\n const newReportFolder = new ReportFolder();\r\n newReportFolder.Name = this.folderName;\r\n newReportFolder.Description = this.folderDescription;\r\n newReportFolder.Id = -1;\r\n\r\n this.reportService.saveReportFolder(newReportFolder).subscribe(res => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(res);\r\n }\r\n });\r\n }\r\n\r\n this.dialogRef.close(true); // true to refreshFolders\r\n\r\n\r\n }\r\n\r\n saveEditClick() {\r\n\r\n // they must enter a folder name to pass validation\r\n if (typeof this.folderName === 'undefined') {\r\n return;\r\n }\r\n\r\n let folderAlreadyExists = false;\r\n for (let i = 0; i < this.reportService.ReportFolders.length; i++) {\r\n if (this.reportService.ReportFolders[i].Name.toLowerCase() == this.folderName.toLowerCase()) {\r\n folderAlreadyExists = true;\r\n break;\r\n }\r\n }\r\n if (!folderAlreadyExists) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('saveEditClick()');\r\n console.log('folderName');\r\n console.log(this.folderName);\r\n console.log('folderDescription');\r\n console.log(this.folderDescription);\r\n\r\n }\r\n\r\n // avoid printing 'undefined' as folder desc\r\n if (typeof this.folderDescription === 'undefined') {\r\n this.folderDescription = '';\r\n // return;\r\n }\r\n\r\n if (this.folderDescription == 'null' || this.folderDescription == null) {\r\n this.folderDescription = '';\r\n }\r\n\r\n // if (typeof this.folderDescription == 'undefined' || this.folderDescription == '') {\r\n // // this.folderDescription = '';\r\n // return;\r\n\r\n // }\r\n\r\n this.ReportFolderToEdit.Name = this.folderName;\r\n this.ReportFolderToEdit.Description = this.folderDescription;\r\n\r\n\r\n this.reportService.saveReportFolder(this.ReportFolderToEdit).subscribe(res => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(res);\r\n }\r\n });\r\n }\r\n\r\n this.dialogRef.close(true); // true to refreshFolders\r\n\r\n\r\n }\r\n checkIsDirty() {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('folderName: ' + this.folderName);\r\n console.log('folderDesc: ' + this.folderDescription);\r\n }\r\n\r\n if (this.isFolderEdit) {\r\n if (this.folderName != this.ReportFolderToEdit.Name || this.folderDescription != this.ReportFolderToEdit.Description) {\r\n\r\n this.isDirty = true;\r\n\r\n\r\n }\r\n } else { // not edit\r\n if (typeof this.folderDescription === 'undefined' && typeof this.folderName === 'undefined') {\r\n\r\n this.isDirty = false;\r\n\r\n } else {\r\n this.isDirty = true;\r\n }\r\n }\r\n }\r\n\r\n\r\n cancelClick() {\r\n\r\n this.checkIsDirty();\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('isDirty: ' + this.isDirty.toString());\r\n }\r\n\r\n if (this.isDirty) {\r\n\r\n const dialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n disableClose: true,\r\n data: {\r\n errors: []\r\n }\r\n });\r\n\r\n dialog.componentInstance.dialogBox = dialog;\r\n dialog.afterClosed().subscribe(result => {\r\n console.log(result);\r\n switch (result) {\r\n case 1: { // determine if edit or new folder > save and continue\r\n if (this.isFolderEdit) {\r\n this.saveEditClick();\r\n } else if (!this.isFolderEdit) {\r\n this.saveReportFolderClick();\r\n }\r\n break;\r\n }\r\n case 0: { // continue without save\r\n this.dialogRef.close(false);\r\n break;\r\n }\r\n case -1: { // cancel\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n });\r\n\r\n }\r\n else { // no unsaved changes\r\n this.dialogRef.close(false); // true to refreshFolders\r\n }\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n}","import { Component, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../../reporting.service';\r\n\r\n// import { AutoRunSnapshot } from './../models/auto-run-report-snapshots.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'DeleteFolder',\r\n templateUrl: './delete-folder.component.html',\r\n styleUrls: ['./delete-folder.component.css']\r\n})\r\n\r\nexport class DeleteReportFolderComponent implements OnDestroy {\r\n\r\n // private reportService: ReportingService;\r\n\r\n // @Output() deleteSnapshotEvent: EventEmitter = new EventEmitter();\r\n\r\n // private _folderToDelete: ReportFolder;\r\n\r\n private _reportFolderName: string;\r\n private _reportFolderIdToDelete: number;\r\n\r\n get reportFolderName(): string {\r\n return this._reportFolderName;\r\n }\r\n\r\n set reportFolderName(value: string) {\r\n this._reportFolderName = value;\r\n }\r\n\r\n get reportFolderIdToDelete(): number {\r\n return this._reportFolderIdToDelete;\r\n }\r\n\r\n set reportFolderIdToDelete(value: number) {\r\n this._reportFolderIdToDelete = value;\r\n }\r\n\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef\r\n ) {\r\n\r\n this.reportFolderIdToDelete = reportService.reportFolderIdToDelete;\r\n this.reportFolderName = reportService.reportFolderNameToDelete;\r\n\r\n // this.snapshotToDelete = reportService.autoRunSnapshot;\r\n\r\n // this.autoRunDate = this.snapshotToDelete.TimeStamp;\r\n // this.reportName = this.snapshotToDelete.ReportName;\r\n }\r\n\r\n okClick() {\r\n\r\n // const snapshotId = this.snapshotToDelete.AutoRunReportSnapshots_ID;\r\n\r\n this.reportService.deleteReportFolder(this.reportFolderIdToDelete).subscribe(res => {\r\n\r\n // todo: check that the delete was successful\r\n this.reportService.reportFolderNameToDelete = null;\r\n this.reportService.reportFolderIdToDelete = null;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n\r\n // }\r\n });\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n cancelClick() {\r\n // this.deleteSnapshotEvent.emit(false);\r\n this.dialogRef.close(false);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n}","

Delete Report Folder

\r\n\r\n\r\n
This will delete the folder {{reportFolderName}}.\r\n
\r\n
\r\n\r\n\r\n \r\n","

Report Folders

\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n Folder\r\n \r\n \r\n {{Folder.Name}}\r\n \r\n \r\n\r\n \r\n Description\r\n \r\n \r\n {{Folder.Description}}\r\n \r\n \r\n\r\n \r\n Total Reports\r\n \r\n \r\n {{Folder.Reports.length}}\r\n \r\n \r\n\r\n \r\n Actions\r\n \r\n \r\n
\r\n \"Actions\"\r\n\r\n
\r\n \r\n
\r\n Edit\r\n
\r\n
\r\n Delete\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { ReportFolder } from '../models/report-folder.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { AddReportFolderComponent } from './add-folder/add-folder.component';\r\nimport { DeleteReportFolderComponent } from './delete-folder/delete-folder.component';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportFolders',\r\n templateUrl: './report-folders.component.html',\r\n styleUrls: ['./report-folders.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\nexport class ReportFoldersComponent implements OnInit, OnDestroy {\r\n\r\n thisDialogRef: MatDialogRef;\r\n angularMatData = new TylerMatTableDataSource;\r\n columnsToDisplay: string[] = ['ReportFolderName', 'Description', 'Total', 'Actions'];\r\n\r\n reportFolders: ReportFolder[];\r\n reportFoldersOnLoad: ReportFolder[];\r\n\r\n addReportFolderDialogRef: MatDialogRef;\r\n deleteReportFolderDialogRef: MatDialogRef;\r\n isDirty: boolean;\r\n\r\n reportFolderChanged = false;\r\n\r\n // addReportFolderDialog: MatDialog;\r\n\r\n constructor(\r\n reportFoldersDialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n // private myReportsComponent: MyReportsComponent\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n\r\n private addReportFolderDialog: MatDialog,\r\n private deleteReportFolderDialog: MatDialog,\r\n\r\n ) {\r\n\r\n this.thisDialogRef = reportFoldersDialogRef;\r\n this.angularMatData = new TylerMatTableDataSource(this.reportFolders);\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.reportFolders = this.reportService.ReportFolders;\r\n this.reportFoldersOnLoad = this.reportFolders;\r\n this.isDirty = false;\r\n this.loadReportData();\r\n if (this.reportService.inDebugMode) {\r\n console.log('Report-Folders Component ngOnInit()');\r\n\r\n }\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n loadReportData(): void {\r\n // load data into Angular Material table\r\n this.angularMatData.data = this.reportFolders;\r\n if (this.reportService.inDebugMode) {\r\n console.log('Report-Folders Component => angularMatData');\r\n console.log(this.reportFolders);\r\n console.log(this.angularMatData);\r\n }\r\n }\r\n folderDeleteClick(folder: ReportFolder) {\r\n this.reportService.reportFolderIdToDelete = folder.Id;\r\n this.reportService.reportFolderNameToDelete = folder.Name;\r\n this.deleteReportFolderDialogRef = this.deleteReportFolderDialog.open(DeleteReportFolderComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.deleteReportFolderDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('deleteReportFolderDialogRef.afterClosed()');\r\n }\r\n\r\n if (result == true) {\r\n // we need to refresh report folders\r\n\r\n this.getMyReportFolders();\r\n }\r\n\r\n });\r\n }\r\n\r\n folderEditClick(folder: ReportFolder) {\r\n this.reportService.isFolderEdit = true;\r\n this.reportService.ReportFolderToEdit = folder;\r\n\r\n // use add folder dialog - prepopulate name and desc\r\n this.addReportFolderDialogRef = this.addReportFolderDialog.open(AddReportFolderComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.addReportFolderDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('addReportFolderDialogRef.afterClosed()');\r\n }\r\n\r\n if (result == true) {\r\n // we need to refresh report folders\r\n\r\n this.getMyReportFolders();\r\n }\r\n\r\n });\r\n }\r\n\r\n addFolderClick() {\r\n\r\n this.reportService.isFolderEdit = false;\r\n this.addReportFolderDialogRef = this.addReportFolderDialog.open(AddReportFolderComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.addReportFolderDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('addReportFolderDialogRef.afterClosed()');\r\n }\r\n\r\n if (result == true) {\r\n // we need to refresh report folders\r\n\r\n this.getMyReportFolders();\r\n }\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n getMyReportFolders(): void {\r\n this.reportService.getMyReportFolders().subscribe(folders => {\r\n this.reportFolders = folders;\r\n this.reportService.ReportFolders = this.reportFolders;\r\n this.loadReportData();\r\n });\r\n }\r\n\r\n\r\n closeClick() {\r\n if (this.reportFolders == this.reportFoldersOnLoad) {\r\n this.isDirty = false;\r\n } else {\r\n this.isDirty = true;\r\n\r\n }\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('isDirty: ' + this.isDirty);\r\n }\r\n\r\n this.thisDialogRef.close(this.isDirty);\r\n }\r\n\r\n\r\n saveFolderReports(selectedFolderIds: number[]) {\r\n\r\n // // we need to save the report folders\r\n // this.reportService.saveFolderReports(this.reportService.login_ID, this.selectedReport.Id, selectedFolderIds).subscribe(results => {\r\n // this.thisDialogRef.close('Folders Saved');\r\n // });\r\n }\r\n\r\n}","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportLegend',\r\n templateUrl: './report-legend.component.html',\r\n styleUrls: ['./report-legend.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\nexport class ReportLegendComponent implements OnInit, OnDestroy {\r\n\r\n thisDialogRef: MatDialogRef;\r\n backgroundColorForDistrictDefinedDefinition: string;\r\n backgroundColorForUserDefinedDefinition: string;\r\n\r\n legendItem_1 = 'Personal Report Options'; // default\r\n legendItem_2 = 'District Report Options'; // default\r\n\r\n\r\n constructor(\r\n reportLegendDialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private reportService: ReportingService,\r\n // private myReportsComponent: MyReportsComponent,\r\n // private loginService: LoginService,\r\n private dialog: MatDialog,\r\n\r\n\r\n\r\n ) {\r\n this.thisDialogRef = reportLegendDialogRef;\r\n // get definition colors from reportService\r\n this.backgroundColorForUserDefinedDefinition = this.reportService.backgroundColorForUserDefinedDefinition;\r\n this.backgroundColorForDistrictDefinedDefinition = this.reportService.backgroundColorForDistrictDefinedDefinition;\r\n\r\n\r\n if (this.data != null && this.data != undefined) {\r\n this.legendItem_1 = data.legendItem_1;\r\n this.legendItem_2 = data.legendItem_2;\r\n }\r\n\r\n } // end constructor\r\n\r\n\r\n ngOnInit() {\r\n\r\n // place holder\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.reportService.isForSchedule = false;\r\n }\r\n\r\n\r\n closeClick() {\r\n\r\n this.thisDialogRef.close();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n}// end class","\r\n
\r\n
\r\n
Legend
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n\r\n \r\n
\r\n             \r\n \r\n     {{ legendItem_1 }} \r\n
\r\n             \r\n \r\n     {{ legendItem_2 }}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
","import { System } from '../../../shared-components/System';\r\n\r\nexport class ReportqueueFilter {\r\n // Properties\r\n\tprivate _startDate: Date = undefined;\r\n\tprivate _endDate: Date = undefined;\r\n\tSISCode = '';\r\n Term = '';\r\n ReportName = '';\r\n RunDate: Date = undefined;\r\n ReportStatus = '';\r\n UserName = '';\r\n\tSubmitted: boolean = false;\r\n\tRunning: boolean = false;\r\n\tCompleted: boolean = false;\r\n\tErrorStatus: boolean = false;\r\n\r\n\t// Methods\r\n\tget startDate(): Date {\r\n\t\treturn this._startDate;\r\n\t}\r\n\r\n\tset startDate(value: Date) {\r\n\t\tSystem.roundDateDown(value);\r\n\t\tthis._startDate = value;\r\n\t}\r\n\r\n\tget endDate(): Date {\r\n\t\treturn this._endDate;\r\n\t}\r\n\r\n\tset endDate(value: Date) {\r\n\t\tSystem.roundDateUp(value);\r\n\t\tthis._endDate = value;\r\n\t}\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n
\r\n

Report Queue

\r\n
\r\n \r\n \r\n {{school.SchoolName}}\r\n \r\n \r\n \r\n \r\n {{year.Description}}\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Report\r\n \r\n \r\n \r\n \r\n {{report.ReportName}}\r\n {{report.ReportName}}\r\n \r\n \r\n \r\n \r\n Site\r\n \r\n \r\n \r\n \r\n {{report.SISCode}}\r\n \r\n \r\n \r\n \r\n \r\n Year\r\n \r\n \r\n \r\n \r\n {{report.Term}}\r\n \r\n \r\n\r\n \r\n \r\n User\r\n \r\n \r\n \r\n \r\n {{report.UserName}}\r\n \r\n \r\n \r\n \r\n Run\r\n \r\n \r\n \r\n \r\n {{report.RunDate | date:'MM/dd/yy h:mm a'}}\r\n \r\n \r\n \r\n \r\n Status\r\n \r\n \r\n \r\n \r\n {{report.ReportStatus}}\r\n \r\n \r\n \r\n Actions\r\n \r\n Delete\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n Filter\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Submitted\r\n \r\n
\r\n
\r\n \r\n Running\r\n \r\n
\r\n
\r\n \r\n Completed\r\n \r\n
\r\n
\r\n \r\n Error\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
","import { Component, OnInit, TemplateRef, ViewChild, EventEmitter, ChangeDetectorRef, Output } from '@angular/core';\r\nimport { GeneralPreferences } from '../../../shared-components/user-preferences/general-preferences.model';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { ReportsQueue } from '../models/reports-queue.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { GeneralConfirmationComponent } from '../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { DatePipe } from '@angular/common';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { StudentAttachment } from '../../student-attachment/student-attachment.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { UserPreferencesService } from '../../../shared-components/user-preferences/user-preferences.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { ReportqueueFilter } from './reportqueue-filter';\r\nimport * as moment from 'moment';\r\nimport { SpinnerService } from '../../../shared-components/spinner/spinner.service';\r\n// @ts-ignore\r\nimport printJS from 'print-js';\r\nimport { RouteInfo } from '../../../shared-components/routeInfo';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { Year } from '../../../shared-components/year/year.model';\r\nimport * as _ from 'lodash';\r\nimport { School } from '../../../shared-components/year/school.model';\r\nimport { SecurityService } from '../../../shared-components/security/security.service';\r\n\r\n@Component({\r\n selector: 'app-report-queue',\r\n templateUrl: './report-queue.component.html',\r\n styleUrls: ['./report-queue.component.css']\r\n})\r\nexport class ReportQueueComponent implements OnInit {\r\n @ViewChild('filterMenu', { read: TemplateRef }) filterMenu: TemplateRef;\r\n\r\n reportsQueue: ReportsQueue[] = [];\r\n gridField: ReportsQueue;\r\n generalPreferences: GeneralPreferences;\r\n angularMatData = new TylerMatTableDataSource;\r\n checkedAll: boolean;\r\n checkIndeterminate: boolean;\r\n selectedReportQueue: number[] = [];\r\n columnsToDisplay: string[] = ['CheckBox', 'ReportName', 'SISCode', 'Term', 'UserName', 'RunDate', 'ReportStatus', 'Actions'];\r\n years: Year[] = [];\r\n selectedYear: Year;\r\n schools: School[] = [];\r\n selectedSchool: School;\r\n isDataFiltered: boolean;\r\n studentAttachment = new StudentAttachment();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n public gridHeight = 650;\r\n public gridWidth = 100;\r\n reportQueqe = false;\r\n pageSizes = [\r\n 50,\r\n 100,\r\n 250,\r\n 500\r\n ];\r\n pageSize = 50;\r\n isFiltered: boolean = false;\r\n @Output() clearFilterEvent = new EventEmitter();\r\n ShowAllUsers: boolean = false;\r\n ShowCompleted: boolean = false;\r\n filter = new ReportqueueFilter();\r\n previousFilter = new ReportqueueFilter();\r\n showFilter: boolean = false;\r\n userName: string;\r\n constructor(\r\n private userService: UserService,\r\n private reportService: ReportingService,\r\n private sharedService: SharedService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private datePipe: DatePipe,\r\n private location: Location,\r\n private router: Router,\r\n private userPreferencesService: UserPreferencesService,\r\n private changeDetector: ChangeDetectorRef,\r\n private spinnerService: SpinnerService,\r\n private yearService: YearService,\r\n private securityService: SecurityService\r\n ) {\r\n if (this.location.path() == '/classroom360/reportsQueue') {\r\n this.reportQueqe = true;\r\n }\r\n this.generalPreferences = this.userPreferencesService.generalPreferences;\r\n this.userName = this.userService.currentUser.UserName.toUpperCase();\r\n this.years = _.uniqBy(this.yearService.years, 'Id');\r\n this.years = this.yearService.years.filter(year => year.SchoolID == this.yearService.defaultYear.SchoolID);\r\n this.selectedYear = this.years.find(o => o.Id == this.yearService.defaultYear.Id);\r\n this.schools = this.yearService.schools;\r\n if (this.schools.filter(o => o.SchoolName == 'All').length == 0) {\r\n const sch = new School();\r\n sch.Id = 0;\r\n sch.SchoolName = 'All';\r\n this.schools.unshift(sch);\r\n }\r\n this.selectedSchool = this.schools.find(o => o.Id == this.yearService.defaultYear.SchoolID);\r\n const permission = this.securityService.userPermissions.find(o => o.GroupPermissionName == 'SDM Admin Group');\r\n if (permission != undefined && permission != null) {\r\n const yr = new Year();\r\n yr.Id = 0;\r\n yr.Description = 'All';\r\n yr.SchoolID = 0;\r\n this.years.unshift(yr);\r\n }\r\n }\r\n ngOnInit() {\r\n const dialogRefId: string = this.dialogRef.id != undefined ? this.dialogRef.id.toString() : '';\r\n if (dialogRefId != '') {\r\n this.reportQueqe = false;\r\n }\r\n if (this.userName == 'SDMADMIN') {\r\n this.ShowAllUsers = true;\r\n this.ShowCompleted = true;\r\n\r\n }\r\n this.filter.Submitted = true;\r\n this.filter.Running = true;\r\n this.filter.Completed = true;\r\n this.filter.ErrorStatus = true;\r\n this.getReportsQueue(this.ShowAllUsers);\r\n }\r\n get initialPageSize(): number {\r\n if (this.generalPreferences.PageSize != null) {\r\n return +this.generalPreferences.PageSize;\r\n }\r\n else {\r\n this.pageSize = 50;\r\n }\r\n }\r\n getReportsQueue(ShowAllUsers: boolean) {\r\n this.reportService.getReportsQueue(ShowAllUsers, this.selectedSchool.Id, this.selectedYear.Id).subscribe(result => {\r\n if (!this.ShowAllUsers) {\r\n this.columnsToDisplay.splice(this.columnsToDisplay.indexOf('UserName'), 1);\r\n if (this.userName != 'SDMADMIN') {\r\n this.ShowAllUsers = false;\r\n this.ShowCompleted = false;\r\n }\r\n }\r\n result.forEach(x => x.Selected = false);\r\n this.reportsQueue = result;\r\n this.checkedAll = false;\r\n this.checkIndeterminate = false;\r\n this.selectedReportQueue = [];\r\n this.applyFilters();\r\n setTimeout(() => {\r\n this.gridHeight = window.innerHeight - 260;\r\n }, 0);\r\n });\r\n }\r\n\r\n checkAll() {\r\n this.angularMatData.data.forEach(x => x.Selected = this.checkedAll);\r\n this.getCheckedIds();\r\n }\r\n\r\n setAllCheckbox() {\r\n this.checkedAll = false;\r\n this.checkIndeterminate = false;\r\n const selectedCount = this.angularMatData.data.filter(x => x.Selected).length;\r\n if (selectedCount > 0) {\r\n if (this.angularMatData.data.length === selectedCount) {\r\n this.checkedAll = true;\r\n }\r\n else {\r\n this.checkIndeterminate = true;\r\n }\r\n }\r\n this.getCheckedIds();\r\n }\r\n\r\n getCheckedIds() {\r\n this.selectedReportQueue = [];\r\n this.reportsQueue.forEach(element => {\r\n if (element.Selected == true) {\r\n this.selectedReportQueue.push(element.Id);\r\n }\r\n });\r\n }\r\n\r\n closeClick() {\r\n if (this.reportQueqe == true) {\r\n this.dialog.closeAll();\r\n this.router.navigateByUrl('classroom360/cards');\r\n } else {\r\n this.dialog.closeAll();\r\n }\r\n }\r\n\r\n reportList() {\r\n this.dialogRef.close();\r\n }\r\n\r\n deleteReportQueue(report: ReportsQueue) {\r\n\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = 'Confirm Deletion';\r\n deleteConfirmDialog.componentInstance.confirmMessage = 'Delete ' + report.ReportName + ' run at ' + (this.datePipe.transform(report.RunDate, 'MM/dd/yy h:mm a'));\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject && report.Id > 0) {\r\n const reportIds: number[] = [];\r\n reportIds.push(report.Id);\r\n this.reportService.deleteReportsQueue(reportIds).subscribe(result => {\r\n this.getReportsQueue(this.ShowAllUsers);\r\n });\r\n }\r\n });\r\n }\r\n\r\n deleteSelected() {\r\n if (this.selectedReportQueue.length > 0) {\r\n this.reportService.deleteReportsQueue(this.selectedReportQueue).subscribe(result => {\r\n this.getReportsQueue(this.ShowAllUsers);\r\n });\r\n }\r\n }\r\n refreshPage() {\r\n this.getReportsQueue(this.ShowAllUsers);\r\n }\r\n saveFile(report: ReportsQueue) {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: report.Id,\r\n DocumentName: report.ReportName,\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: 'ReportQueue',\r\n ReportParameters: [],\r\n ReportType: 0\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n clearFilter() {\r\n // Clearing the filter\r\n this.filter = new ReportqueueFilter();\r\n if (this.userName == 'SDMADMIN') {\r\n this.ShowCompleted = true;\r\n }\r\n this.filter.Submitted = true;\r\n this.filter.Running = true;\r\n this.filter.Completed = true;\r\n this.filter.ErrorStatus = true;\r\n this.previousFilter = new ReportqueueFilter();\r\n this.clearFilterEvent.emit();\r\n this.angularMatData.removeAllFilters();\r\n this.applyFilter();\r\n }\r\n formChanged() {\r\n if (!this.ShowCompleted) {\r\n this.filter.Submitted = true;\r\n this.filter.Running = true;\r\n this.filter.ErrorStatus = true;\r\n this.filter.Completed = false;\r\n }\r\n else if (this.ShowCompleted) {\r\n this.filter.Submitted = true;\r\n this.filter.Running = true;\r\n this.filter.ErrorStatus = true;\r\n this.filter.Completed = true;\r\n }\r\n this.applyFilters();\r\n }\r\n applyFilters() {\r\n this.columnsToDisplay = [];\r\n let tableData: ReportsQueue[] = [];\r\n this.columnsToDisplay = ['CheckBox', 'ReportName', 'SISCode', 'Term', 'UserName', 'RunDate', 'ReportStatus', 'Actions'];\r\n // Set the table data after finishing filtering\r\n if (this.isPanelPreviousFiltered() == true) {\r\n Object.assign(this.filter, this.previousFilter);\r\n\r\n if (this.ShowCompleted && this.showFilter) {\r\n this.filter.Submitted = true;\r\n this.filter.Running = true;\r\n this.filter.ErrorStatus = true;\r\n this.filter.Completed = this.ShowCompleted;\r\n }\r\n }\r\n else if (this.userName != 'SDMADMIN') {\r\n this.filter.Submitted = true;\r\n this.filter.Running = true;\r\n this.filter.Completed = true;\r\n this.filter.ErrorStatus = true;\r\n }\r\n if (!this.ShowAllUsers) {\r\n this.columnsToDisplay.splice(this.columnsToDisplay.indexOf('UserName'), 1);\r\n }\r\n\r\n if (this.ShowCompleted && this.ShowAllUsers) {\r\n tableData = this.reportsQueue;\r\n }\r\n else if (!this.ShowCompleted && this.ShowAllUsers) {\r\n tableData = this.reportsQueue.filter(r => r.ReportStatus != 'Completed');\r\n }\r\n else if (!this.ShowCompleted && !this.ShowAllUsers && this.userName == 'SDMADMIN') {\r\n tableData = this.reportsQueue.filter(r => r.ReportStatus != 'Completed' && (r.UserName).toUpperCase() == this.userName);\r\n }\r\n else if (!this.ShowAllUsers) {\r\n tableData = this.reportsQueue.filter(r => (r.UserName).toUpperCase() == this.userName);\r\n }\r\n if (this.showFilter) {\r\n\r\n tableData = tableData.filter(be => (be.ReportStatus == 'Submitted' && this.filter.Submitted) ||\r\n (be.ReportStatus == 'Completed' && this.filter.Completed) ||\r\n (be.ReportStatus == 'Running' && this.filter.Running) ||\r\n (be.ReportStatus == 'Error' && this.filter.ErrorStatus)\r\n );\r\n if (this.filter.ReportName) {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => be.ReportName.toLowerCase().includes(this.filter.ReportName.toLowerCase()));\r\n }\r\n if (this.filter.SISCode) {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => be.SISCode.toLowerCase().includes(this.filter.SISCode.toLowerCase()));\r\n }\r\n if (this.filter.UserName && this.ShowAllUsers) {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => be.UserName.toLowerCase().includes(this.filter.UserName.toLowerCase()));\r\n }\r\n\r\n if (this.filter.startDate && this.filter.startDate.toString() != 'Invalid Date') {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => moment(moment(be.RunDate, 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY'), 'MM/DD/YY').isSameOrAfter(fromDate));\r\n }\r\n if (this.filter.endDate && this.filter.endDate.toString() != 'Invalid Date') {\r\n tableData = tableData.filter(be => moment(moment(be.RunDate, 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY'), 'MM/DD/YY').isSameOrBefore(this.filter.endDate));\r\n }\r\n }\r\n if (this.isPanelPreviousFiltered() == true) {\r\n this.applyFilter();\r\n }\r\n else {\r\n\r\n this.angularMatData = new TylerMatTableDataSource(tableData);\r\n this.angularMatData.data = tableData;\r\n this.angularMatData.sort = this.sort;\r\n this.angularMatData.paginator = this.paginator;\r\n this.isFiltered = false;\r\n if ((!!this.filter.startDate || !!this.filter.endDate || !!this.filter.ReportName\r\n || !!this.filter.SISCode || !!this.filter.UserName) ||\r\n (!this.filter.Completed || !this.filter.Submitted || !this.filter.Running || !this.filter.ErrorStatus)) {\r\n this.isFiltered = true;\r\n }\r\n\r\n }\r\n }\r\n\r\n openFilter() {\r\n this.showFilter = true;\r\n this.gridWidth = this.showFilter ? 84 : 100;\r\n if (this.userName == 'SDMADMIN' && this.ShowCompleted) {\r\n this.filter.Submitted = true;\r\n this.filter.Completed = true;\r\n this.filter.Running = true;\r\n this.filter.ErrorStatus = true;\r\n }\r\n this.applyFilters();\r\n }\r\n\r\n // Methods\r\n applyFilter() {\r\n // POST: applies the filter\r\n // Dates\r\n let tableData: ReportsQueue[] = [];\r\n tableData = this.reportsQueue;\r\n if (this.userName == 'SDMADMIN' && (!this.filter.Completed || !this.filter.Submitted || !this.filter.Running || !this.filter.ErrorStatus)) {\r\n this.ShowCompleted = false;\r\n }\r\n else if (this.userName == 'SDMADMIN' && this.filter.Completed && (this.filter.Submitted && this.filter.Running && this.filter.ErrorStatus)) {\r\n this.ShowCompleted = this.filter.Completed;\r\n }\r\n tableData = tableData.filter(be => (be.ReportStatus == 'Submitted' && this.filter.Submitted) ||\r\n (be.ReportStatus == 'Completed' && this.filter.Completed) ||\r\n (be.ReportStatus == 'Running' && this.filter.Running) ||\r\n (be.ReportStatus == 'Error' && this.filter.ErrorStatus)\r\n );\r\n if (this.filter.ReportName) {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => be.ReportName.toLowerCase().includes(this.filter.ReportName.toLowerCase()));\r\n }\r\n if (this.filter.SISCode) {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => be.SISCode.toLowerCase().includes(this.filter.SISCode.toLowerCase()));\r\n }\r\n if (this.filter.UserName && this.ShowAllUsers) {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => be.UserName.toLowerCase().includes(this.filter.UserName.toLowerCase()));\r\n }\r\n\r\n if (this.filter.startDate && this.filter.startDate.toString() != 'Invalid Date') {\r\n const fromDate = this.filter.startDate;\r\n tableData = tableData.filter(be => moment(moment(be.RunDate, 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY'), 'MM/DD/YY').isSameOrAfter(fromDate));\r\n }\r\n if (this.filter.endDate && this.filter.endDate.toString() != 'Invalid Date') {\r\n tableData = tableData.filter(be => moment(moment(be.RunDate, 'YYYY-MM-DDTHH:mm:ss').format('MM/DD/YY'), 'MM/DD/YY').isSameOrBefore(this.filter.endDate));\r\n }\r\n\r\n this.angularMatData = new TylerMatTableDataSource(tableData);\r\n this.angularMatData.data = tableData;\r\n this.angularMatData.sort = this.sort;\r\n this.angularMatData.paginator = this.paginator;\r\n this.isFiltered = false;\r\n if ((!!this.filter.startDate || !!this.filter.endDate || !!this.filter.ReportName\r\n || !!this.filter.SISCode || !!this.filter.UserName) ||\r\n (!this.filter.Completed || !this.filter.Submitted || !this.filter.Running || !this.filter.ErrorStatus)) {\r\n this.isFiltered = true;\r\n }\r\n }\r\n\r\n saveFilter() {\r\n // PRE: the save button is clicked in the filter\r\n // POST: saves the filter and closes the menu\r\n this.showFilter = false;\r\n this.gridWidth = this.showFilter ? 84 : 100;\r\n setTimeout(\r\n () => {\r\n // Saving the filter to the previous filter\r\n this.previousFilter = new ReportqueueFilter();\r\n Object.assign(this.previousFilter, this.filter);\r\n // Applying the filter\r\n this.applyFilters();\r\n // Detecting changes to prevent errors\r\n this.changeDetector.detectChanges();\r\n },\r\n 0\r\n );\r\n }\r\n\r\n closeFilter() {\r\n this.showFilter = false;\r\n this.gridWidth = this.showFilter ? 84 : 100;\r\n // PRE: the close filter button is clicked\r\n // POST: reverts the filter and closes the menu\r\n setTimeout(\r\n () => {\r\n // Resetting the filter\r\n if (this.isPanelPreviousFiltered() == false) {\r\n this.initialFilter();\r\n }\r\n // Applying the filter\r\n this.applyFilters();\r\n // Detecting page changes to deal with ExpressionChanged errors\r\n this.changeDetector.detectChanges();\r\n },\r\n 0\r\n );\r\n }\r\n isPanelFiltered(): boolean {\r\n return !!this.filter.startDate ||\r\n !!this.filter.endDate ||\r\n !!this.filter.ReportName ||\r\n !!this.filter.SISCode ||\r\n !!this.filter.UserName ||\r\n this.filter.Completed ||\r\n this.filter.Submitted ||\r\n this.filter.Running ||\r\n this.filter.ErrorStatus;\r\n }\r\n isPanelPreviousFiltered(): boolean {\r\n return !!this.previousFilter.startDate ||\r\n !!this.previousFilter.endDate ||\r\n !!this.previousFilter.ReportName ||\r\n !!this.previousFilter.SISCode ||\r\n !!this.previousFilter.UserName ||\r\n this.previousFilter.Completed ||\r\n this.previousFilter.Submitted ||\r\n this.previousFilter.Running ||\r\n this.previousFilter.ErrorStatus;\r\n }\r\n initialFilter() {\r\n this.filter = new ReportqueueFilter();\r\n if (this.userName == 'SDMADMIN') {\r\n this.ShowAllUsers = true;\r\n this.ShowCompleted = true;\r\n }\r\n this.filter.Submitted = true;\r\n this.filter.Running = true;\r\n this.filter.Completed = true;\r\n this.filter.ErrorStatus = true;\r\n }\r\n printClick() {\r\n if (this.router.url.indexOf('classroom360/reportsQueue') > 0) {\r\n // Timeout is needed to allow the spinner to show before the print preview load takes priority\r\n setTimeout(() => {\r\n this.sharedService.pageToPdfTrigger = !this.sharedService.pageToPdfTrigger;\r\n }, 0);\r\n }\r\n else {\r\n // If page open from matDialog should use Id\r\n const dialogRefId: string = this.dialogRef.id != undefined ? this.dialogRef.id.toString() : '';\r\n const pagePrintStyle: string = RouteInfo.getPagePrintStyle(this.router.url);\r\n const styleURLs: string[] = ['./assets/styles/print-styles.css'];\r\n\r\n if (pagePrintStyle) {\r\n styleURLs.push(pagePrintStyle);\r\n }\r\n this.spinnerService.showSpinner = true;\r\n // Timeout is needed to allow the spinner to show before the print preview load takes priority\r\n setTimeout(() => {\r\n printJS({\r\n printable: this.router.url.toString() == '/classroom360/reportsQueue' ? 'print-content' : dialogRefId,\r\n documentTitle: 'OneSIS',\r\n type: 'html',\r\n css: styleURLs,\r\n ignoreElements: ['print-ignore'],\r\n targetStyles: ['*'],\r\n maxWidth: 1500\r\n });\r\n this.spinnerService.showSpinner = false;\r\n }, 500);\r\n }\r\n }\r\n\r\n yearChange() {\r\n this.yearService.getUserSchools(this.selectedYear.Id).subscribe(results => {\r\n this.schools = results;\r\n if (this.schools.filter(o => o.SchoolName == 'All').length == 0) {\r\n const sch = new School();\r\n sch.Id = 0;\r\n sch.SchoolName = 'All';\r\n this.schools.unshift(sch);\r\n }\r\n const selectedSchool: School = this.schools.find(o => o.Id == this.selectedSchool.Id) != undefined ? this.schools.find(o => o.Id == this.selectedSchool.Id) : this.schools.find(o => o.Id == this.selectedYear.SchoolID);\r\n this.selectedSchool = selectedSchool;\r\n });\r\n }\r\n\r\n schoolChange() { }\r\n\r\n searchClick() {\r\n this.getReportsQueue(this.ShowAllUsers);\r\n }\r\n}","\r\n\r\n\r\n\r\n
\r\n \r\n\r\n\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n Maximum Snapshots is set to {{maxReportSnapshotAllowed}}\r\n
\r\n
\r\n \r\n Once a Week\r\n
\r\n\r\n \r\n\r\n \r\n Monday\r\n Tuesday\r\n Wednesday\r\n Thursday\r\n Friday\r\n Saturday\r\n Sunday\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n 01\r\n 02\r\n 03\r\n 04\r\n 05\r\n 06\r\n 07\r\n 08\r\n 09\r\n 10\r\n 11\r\n 12\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n 00\r\n 05\r\n 10\r\n 15\r\n 20\r\n 25\r\n 30\r\n 35\r\n 40\r\n 45\r\n 50\r\n 55\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n AM\r\n PM\r\n\r\n \r\n\r\n \r\n
\r\n \r\n Once a Day\r\n
\r\n\r\n \r\n\r\n \r\n 01\r\n 02\r\n 03\r\n 04\r\n 05\r\n 06\r\n 07\r\n 08\r\n 09\r\n 10\r\n 11\r\n 12\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n 00\r\n 05\r\n 10\r\n 15\r\n 20\r\n 25\r\n 30\r\n 35\r\n 40\r\n 45\r\n 50\r\n 55\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n AM\r\n PM\r\n\r\n \r\n\r\n \r\n
\r\n \r\n Once Only\r\n
\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n 01\r\n 02\r\n 03\r\n 04\r\n 05\r\n 06\r\n 07\r\n 08\r\n 09\r\n 10\r\n 11\r\n 12\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n 00\r\n 05\r\n 10\r\n 15\r\n 20\r\n 25\r\n 30\r\n 35\r\n 40\r\n 45\r\n 50\r\n 55\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n AM\r\n PM\r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\n// import { LoginService } from '../../login/login.service';\r\n// import { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { Report } from '../models/report.model';\r\nimport { ReportFolder } from '../models/report-folder.model';\r\n// import { ReportParametersComponent } from '../parameters/report-parameters.component';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ReportParametersComponent } from '../parameters/report-parameters.component';\r\nimport { CheckForErrorsMessageComponent } from '../../../shared-components/guards/check-for-errors/check-for-errors-message/check-for-errors-message.component';\r\nimport { System } from '../../../shared-components/System';\r\n// import { MyReportsComponent } from '../my-reports/my-reports.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportSettingsAutoRun',\r\n templateUrl: './report-settings-autorun.component.html',\r\n styleUrls: ['./report-settings.folders.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\nexport class ReportSettingsAutoRunComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('autorunForm', { read: NgForm, static: true }) autorunForm: NgForm;\r\n // @ViewChildren('timePickerForm', {read: NgForm}) timePickerForm: NgForm;\r\n thisDialogRef: MatDialogRef;\r\n\r\n // loginSettings: LoginSettings;\r\n allowAutoRunReport: boolean;\r\n autoRunTime: string;\r\n autoRunTime24: string;\r\n hoursNum: Number;\r\n reportFolders: ReportFolder[] = [];\r\n // //ReportParameters: ReportParameter[]; //??\r\n\r\n selectedReport: Report;\r\n // reportSettingsDialogRef: MatDialogRef;\r\n\r\n reportsMode: number; // enum: MyReports = 1, AllReports = 2\r\n foldersChkAll: boolean;\r\n noFolderSelected: boolean;\r\n isChecked: boolean;\r\n inDebugMode: boolean;\r\n // MaximumSnapshots: number;\r\n maxReportSnapshotAllowed: number;\r\n reportParametersDialogRef: MatDialogRef;\r\n isDirty: boolean;\r\n AutoRunHour_0: string;\r\n AutoRunMinute_0: string;\r\n AutoRunPeriod_0: string;\r\n AutoRunHour_1: string;\r\n AutoRunMinute_1: string;\r\n AutoRunPeriod_1: string;\r\n AutoRunHour_2: string;\r\n AutoRunMinute_2: string;\r\n AutoRunPeriod_2: string;\r\n today: Date;\r\n\r\n constructor(\r\n reportSettingsDialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n // private myReportsComponent: MyReportsComponent,\r\n // private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private reportParametersDialog: MatDialog,\r\n // private allReportsComponent: AllReportsComponent\r\n\r\n ) {\r\n\r\n this.thisDialogRef = reportSettingsDialogRef;\r\n this.selectedReport = reportService.SelectedReport;\r\n this.reportFolders = reportService.ReportFolders;\r\n // this.allowAutoRunReport = this.loginService.LoginSettings.AllowAutoRunReport;\r\n // this.loginSettings = loginService.LoginSettings;\r\n this.allowAutoRunReport = this.reportService.allowAutoRunReport;\r\n this.inDebugMode = reportService.inDebugMode;\r\n this.maxReportSnapshotAllowed = this.reportService.maxReportSnapshotAllowed;\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // only needs called if in all reports\r\n if (this.reportService.isAllReports) {\r\n this.getMyReportFolders();\r\n }\r\n\r\n // set form auto-run time for frequency if exists\r\n if (this.selectedReport.AutoRunReport && this.selectedReport.AutoRunTime > '') {\r\n this.convertTime24to12(this.selectedReport.AutoRunTime, this.selectedReport.AutoRunFrequency);\r\n }\r\n\r\n if (this.inDebugMode) {\r\n console.log(this.reportFolders);\r\n console.log(this.reportService.ReportFolders);\r\n }\r\n this.reportService.isForSchedule = true;\r\n\r\n // allow auto run when this component is opened and report is in a folder\r\n if (this.selectedReport.ReportFolder == '') {\r\n this.selectedReport.AutoRunReport = false;\r\n } else {\r\n this.selectedReport.AutoRunReport = true;\r\n\r\n }\r\n\r\n this.isDirty = false;\r\n\r\n // default date picker to today if not set in DB (new autorun)\r\n if (this.selectedReport.AutoRunDate.toString() == '0001-01-01T00:00:00') {\r\n this.today = new Date();\r\n this.selectedReport.AutoRunDate = this.today;\r\n }\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.reportService.isForSchedule = false;\r\n }\r\n\r\n initFolder() {\r\n\r\n\r\n let reportIsInAllFolders = false;\r\n let reportIsInThisFolder = false;\r\n let folderCount = 0;\r\n\r\n for (let f = 0; f < this.reportFolders.length; f++) {\r\n for (let r = 0; r < this.reportFolders[f].Reports.length; r++) {\r\n if (this.reportFolders[f].Reports[r].Id == this.selectedReport.Id) {\r\n this.reportFolders[f].ReportInFolder = true;\r\n reportIsInThisFolder = true;\r\n folderCount += 1;\r\n break;\r\n }\r\n else {\r\n this.reportFolders[f].ReportInFolder = false;\r\n reportIsInThisFolder = false;\r\n }\r\n }\r\n }\r\n if (folderCount == this.reportFolders.length) {\r\n reportIsInAllFolders = true;\r\n this.foldersChkAll = true;\r\n this.noFolderSelected = false;\r\n }\r\n else {\r\n this.foldersChkAll = false;\r\n }\r\n if (folderCount == 0) {\r\n this.noFolderSelected = true;\r\n }\r\n\r\n if (this.inDebugMode) {\r\n console.log(this.reportFolders);\r\n console.log('foldersChkAll:');\r\n console.log(this.foldersChkAll);\r\n console.log('folderCount');\r\n console.log(folderCount);\r\n }\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(this.selectedReport);\r\n console.log(this.reportFolders);\r\n\r\n // this.loginService.MaximumSnapshots\r\n\r\n }\r\n\r\n // this.MaximumSnapshots = this.reportService.maxReportSnapshotAllowed;\r\n\r\n this.setSelectedFolders();\r\n this.getReportParameters();\r\n }\r\n\r\n getMyReportFolders(): void {\r\n this.reportService.getMyReportFolders().subscribe(reportFolders => {\r\n this.reportFolders = reportFolders;\r\n this.reportService.ReportFolders = this.reportFolders;\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsAutoRunComponent=>getMyReportFolders()');\r\n console.log(this.reportFolders);\r\n }\r\n this.initFolder();\r\n });\r\n }\r\n\r\n // openAutorunDefaultParametersDialog() {\r\n // this.reportParametersDialogRef = this.reportParametersDialog.open(ReportParametersComponent, {\r\n // panelClass: 'tyl-mat-dialog',\r\n // disableClose: true\r\n // });\r\n\r\n // // this.reportsDialogRef.beforeClose().subscribe(result => {\r\n // // console.log('shared/HeaderComponent =>reportsDialogRef.beforeClose()');\r\n // // });\r\n\r\n\r\n // this.reportParametersDialogRef.afterClosed().subscribe(result => {\r\n // this.reportService.SelectedReport = null;\r\n // this.reportService.autoRunSnapshot = null;\r\n // this.reportService.isForSchedule = false;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n\r\n // }\r\n // });\r\n // }\r\n\r\n // openReportParametersWindow() {\r\n\r\n\r\n\r\n // }\r\n\r\n getReportParameters() {\r\n // todo: forschedule = true!!!\r\n this.reportService.getReportParameters(this.reportService.login_ID, this.selectedReport, true).subscribe(report => {\r\n // GetReportParameters?userId=72646¶mId=-1&ayIdentifier=1819&schoolId=10&forSchedule=true\r\n if (this.reportService.inDebugMode) {\r\n console.log(report);\r\n }\r\n\r\n this.selectedReport = report;\r\n this.reportService.SelectedReport = report;\r\n // this.openReportParametersWindow();\r\n\r\n });\r\n }\r\n\r\n SelectedReportToConsole() {\r\n console.log(this.selectedReport);\r\n }\r\n\r\n convertTime12to24(time12h: string) {\r\n\r\n const [time, period] = time12h.split(' ');\r\n\r\n let [hours, minutes] = time.split(':');\r\n\r\n if (hours === '12') {\r\n hours = '00';\r\n }\r\n\r\n if (period === 'PM') {\r\n this.hoursNum = parseInt(hours, 10) + 12;\r\n hours = this.hoursNum.toString();\r\n }\r\n // to avoid error\r\n minutes = minutes;\r\n\r\n return hours + ':' + minutes;\r\n }\r\n\r\n isValidDate(d) {\r\n if (Object.prototype.toString.call(d) === '[object Date]' && isFinite(d)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // isValidDate(d) {\r\n // if (Object.prototype.toString.call(d) === '[object Date]') {\r\n // // it is a date\r\n // if (isNaN(d.getTime())) { // d.valueOf() could also work\r\n // return false; // date is not valid\r\n // } else {\r\n // return true; // date is valid\r\n // }\r\n // } else {\r\n // return false; // not a date\r\n // }\r\n // }\r\n\r\n saveClick() { // save auto-run settings\r\n\r\n // if is existing autorun and user wants to delte it, no validation necessary\r\n\r\n if (this.selectedReport.AutoRunReport) {\r\n\r\n System.forceUpdateValidity(this.autorunForm);\r\n // this.TimePicker.validate();\r\n // System.forceUpdateValidity(this.TimePicker.timePickerForm);\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(this.selectedReport.AutoRunFrequency);\r\n // console.log(this.selectedReport.AutoRunDate);\r\n // console.log(this.AutoRunHour_2);\r\n // console.log(this.AutoRunMinute_2);\r\n // console.log(this.AutoRunPeriod_2);\r\n // }\r\n // set & convert time from timePicker\r\n // debugger;\r\n switch (this.selectedReport.AutoRunFrequency) {\r\n case 0: // Weekly\r\n if (!System.isValid(this.selectedReport.AutoRunDay) || !System.isValid(this.AutoRunHour_0) || !System.isValid(this.AutoRunMinute_0) || !System.isValid(this.AutoRunPeriod_0)) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('System.isValid(this.selectedReport.AutoRunDay)');\r\n console.log(System.isValid(this.selectedReport.AutoRunDay));\r\n console.log('System.isValid(this.AutoRunHour_0)');\r\n console.log(System.isValid(this.AutoRunHour_0));\r\n console.log('System.isValid(this.AutoRunMinute_0)');\r\n console.log(System.isValid(this.AutoRunMinute_0));\r\n console.log('System.isValid(this.AutoRunHour_0)');\r\n console.log(System.isValid(this.AutoRunPeriod_0));\r\n }\r\n\r\n return;\r\n\r\n } else {\r\n\r\n this.autoRunTime = this.AutoRunHour_0 + ':' + this.AutoRunMinute_0 + ' ' + this.AutoRunPeriod_0;\r\n }\r\n\r\n break;\r\n\r\n case 1: // Daily\r\n if (!System.isValid(this.AutoRunHour_1) || !System.isValid(this.AutoRunMinute_1) || !System.isValid(this.AutoRunPeriod_1)) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n\r\n console.log('System.isValid(this.AutoRunHour_1)');\r\n console.log(System.isValid(this.AutoRunHour_1));\r\n console.log('System.isValid(this.AutoRunMinute_1)');\r\n console.log(System.isValid(this.AutoRunMinute_1));\r\n console.log('System.isValid(this.AutoRunPeriod_1)');\r\n console.log(System.isValid(this.AutoRunPeriod_1));\r\n }\r\n\r\n return;\r\n\r\n } else {\r\n this.autoRunTime = this.AutoRunHour_1 + ':' + this.AutoRunMinute_1 + ' ' + this.AutoRunPeriod_1;\r\n }\r\n\r\n break;\r\n\r\n case 2: // Once\r\n // System.roundDateDown(this.selectedReport.AutoRunDate);\r\n // if (!this.isValidDate(this.selectedReport.AutoRunDate) || !System.isValid(this.AutoRunHour_2) || !System.isValid(this.AutoRunMinute_2) || !System.isValid(this.AutoRunPeriod_2)) {\r\n if (!(System.isValid(this.selectedReport.AutoRunDate) || this.isValidDate(this.selectedReport.AutoRunDate) || !System.isValid(this.AutoRunHour_2) || !System.isValid(this.AutoRunMinute_2) || !System.isValid(this.AutoRunPeriod_2))) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('Once');\r\n console.log('System.isValid(this.selectedReport.AutoRunDate)');\r\n console.log(System.isValid(this.selectedReport.AutoRunDate));\r\n console.log(this.selectedReport.AutoRunDate);\r\n console.log('System.isValid(this.AutoRunHour_2)');\r\n console.log(System.isValid(this.AutoRunHour_2));\r\n console.log('System.isValid(this.AutoRunMinute_2)');\r\n console.log(System.isValid(this.AutoRunMinute_2));\r\n console.log('System.isValid(this.AutoRunPeriod_2)');\r\n console.log(System.isValid(this.AutoRunPeriod_2));\r\n }\r\n\r\n return;\r\n\r\n } else {\r\n\r\n this.autoRunTime = this.AutoRunHour_2 + ':' + this.AutoRunMinute_2 + ' ' + this.AutoRunPeriod_2;\r\n }\r\n\r\n break;\r\n } // end switch\r\n\r\n // this.autoRunTime = this.TimePicker.AutoRunHour + ':' + this.TimePicker.AutoRunMinute + ' ' + this.TimePicker.AutoRunPeriod;\r\n this.reportService.SelectedReport.AutoRunTime = this.convertTime12to24(this.autoRunTime);\r\n\r\n } // end validation\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('passed validation');\r\n }\r\n\r\n\r\n this.reportService.saveReportAutoRunSettings().subscribe(res => {\r\n this.thisDialogRef.close('Auto Run Saved');\r\n\r\n\r\n });\r\n // const selectedFolderIds: number[] = [];\r\n // for (let i = 0; i < this.reportFolders.length; i++) {\r\n // if (this.reportFolders[i].ReportInFolder) {\r\n // selectedFolderIds.push(this.reportFolders[i].Id);\r\n // }\r\n // }\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('saveClick()');\r\n // console.log(selectedFolderIds);\r\n // }\r\n\r\n // this.saveFolderReports(selectedFolderIds);\r\n\r\n // void SaveFolderReports(int loginId, int reportId, System.Collections.Generic.List folderIds);\r\n\r\n }\r\n\r\n deleteClick() {\r\n\r\n this.selectedReport.AutoRunReport = false;\r\n this.reportService.saveReportAutoRunSettings().subscribe(res => {\r\n this.thisDialogRef.close('Auto Run Saved - delete');\r\n\r\n });\r\n }\r\n\r\n saveFolderReports(selectedFolderIds: number[]) {\r\n\r\n // first we need to save auto run settings\r\n this.reportService.saveReportAutoRunSettings().subscribe(res => {\r\n\r\n // now we need to save the report folders\r\n this.reportService.saveFolderReports(this.reportService.login_ID, this.selectedReport.Id, selectedFolderIds).subscribe(results => {\r\n this.thisDialogRef.close('Folders Saved');\r\n });\r\n\r\n });\r\n\r\n // this.reportService.saveFolderReports(this.reportService.login_ID, this.selectedReport.Id, selectedFolderIds).subscribe(results => {\r\n // this.thisDialogRef.close('Folders Saved');\r\n // });\r\n\r\n }\r\n\r\n\r\n setSelectedFolders() {\r\n\r\n let reportIsInAllFolders = false;\r\n let reportIsInThisFolder = false;\r\n let folderCount = 0;\r\n for (let f = 0; f < this.reportFolders.length; f++) {\r\n for (let r = 0; r < this.reportFolders[f].Reports.length; r++) {\r\n if (this.reportFolders[f].Reports[r].Id == this.selectedReport.Id) {\r\n this.reportFolders[f].ReportInFolder = true;\r\n reportIsInThisFolder = true;\r\n folderCount += 1;\r\n break;\r\n }\r\n }\r\n if (!reportIsInThisFolder) {\r\n this.reportFolders[f].ReportInFolder = false;\r\n }\r\n }\r\n if (folderCount == this.reportFolders.length) {\r\n reportIsInAllFolders = true;\r\n this.foldersChkAll = true;\r\n this.noFolderSelected = false;\r\n }\r\n else {\r\n this.foldersChkAll = false;\r\n }\r\n if (folderCount == 0) {\r\n this.noFolderSelected = true;\r\n }\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('report-setting-autorun.setSelectedFolders()');\r\n console.log(this.reportFolders);\r\n console.log('foldersChkAll:');\r\n console.log(this.foldersChkAll);\r\n console.log('folderCount');\r\n console.log(folderCount);\r\n }\r\n\r\n }\r\n\r\n\r\n cancelClick() {\r\n this.checkIsDirty();\r\n if (this.reportService.inDebugMode) {\r\n console.log('isDirty: ' + this.isDirty.toString());\r\n }\r\n\r\n if (this.isDirty) {\r\n\r\n const dialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n disableClose: true,\r\n data: {\r\n errors: []\r\n }\r\n });\r\n\r\n dialog.componentInstance.dialogBox = dialog;\r\n dialog.afterClosed().subscribe(result => {\r\n console.log(result);\r\n switch (result) {\r\n case 1: { // determine if edit or new folder > save and continue\r\n this.saveClick();\r\n break;\r\n }\r\n case 0: { // continue without save\r\n this.thisDialogRef.close(false);\r\n break;\r\n }\r\n case -1: { // cancel\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n });\r\n\r\n }\r\n else { // no unsaved changes\r\n this.thisDialogRef.close(); // true to refreshFolders\r\n }\r\n\r\n }\r\n\r\n autoRunReportClick() {\r\n }\r\n\r\n\r\n checkAllFolders(foldersChkAll: boolean) {\r\n\r\n this.foldersChkAll = foldersChkAll; // this.isChecked;\r\n this.noFolderSelected = !foldersChkAll; // this.isChecked;\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => checkAllFolders( ' + foldersChkAll + ')');\r\n console.log(this.reportFolders);\r\n console.log(this.foldersChkAll);\r\n console.log(this.noFolderSelected);\r\n }\r\n\r\n\r\n for (let i = 0; i < this.reportFolders.length; i++) {\r\n if (this.foldersChkAll) {\r\n this.reportFolders[i].ReportInFolder = true;\r\n }\r\n\r\n else {\r\n this.reportFolders[i].ReportInFolder = false;\r\n }\r\n\r\n }\r\n if (this.noFolderSelected == true) {\r\n this.selectedReport.AutoRunReport = false;\r\n }\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('ReportSettingsComponent => checkAllFolders( ' + foldersChkAll + ')');\r\n // console.log(this.reportFolders);\r\n // }\r\n\r\n }\r\n\r\n chkFolder(folder: ReportFolder) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => chkFolder( ' + folder + ')');\r\n console.log(this.reportFolders);\r\n }\r\n\r\n // this.setSelectedFolders();\r\n\r\n // this.noFolderSelected = true;\r\n let reportInFolderCount = 0;\r\n\r\n for (let x = 0; x < this.reportFolders.length; x++) {\r\n if (this.reportFolders[x].ReportInFolder == true) {\r\n reportInFolderCount += 1;\r\n }\r\n }\r\n\r\n\r\n if (reportInFolderCount < this.reportFolders.length) {\r\n this.foldersChkAll = false;\r\n return;\r\n }\r\n\r\n if (reportInFolderCount == this.reportFolders.length) {\r\n this.checkAllFolders(true);\r\n return;\r\n }\r\n\r\n if (reportInFolderCount == 0) {\r\n this.selectedReport.AutoRunReport = false;\r\n this.checkAllFolders(false);\r\n this.noFolderSelected = true;\r\n return;\r\n }\r\n\r\n // this.reportService.ReportFolders = this.reportFolders; // ??\r\n\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => chkFolder( ' + folder + ')');\r\n }\r\n\r\n }\r\n\r\n setFrequency(frequency) {\r\n\r\n // this.selectedReport.AutoRunFrequency = frequency;\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => setFrequency( ' + frequency + ')');\r\n }\r\n this.selectedReport.AutoRunFrequency = frequency;\r\n // this.reportService.SelectedReport.AutoRunFrequency = frequency;\r\n // this.TimePicker.selectedReport.AutoRunFrequency = frequency;\r\n }\r\n\r\n convertTime24to12(time24h: string, frequency: number) {\r\n let period = 'AM';\r\n let [hours, minutes] = time24h.split(':');\r\n\r\n if (hours > '12') {\r\n this.hoursNum = parseInt(hours, 10) - 12;\r\n hours = this.hoursNum.toString();\r\n period = 'PM';\r\n }\r\n\r\n // need to account for 12 since it was defaulting to AM\r\n\r\n if (hours == '12') {\r\n period = 'PM';\r\n }\r\n\r\n if (hours.length == 1) {\r\n hours = '0' + hours;\r\n }\r\n\r\n // to avoid error\r\n minutes = minutes;\r\n\r\n switch (frequency) {\r\n case 0:\r\n if (hours.length == 1) {\r\n this.AutoRunHour_0 = '0' + hours;\r\n\r\n } else { this.AutoRunHour_0 = hours; }\r\n this.AutoRunMinute_0 = minutes;\r\n this.AutoRunPeriod_0 = period;\r\n break;\r\n case 1:\r\n if (hours.length == 1) {\r\n this.AutoRunHour_1 = '0' + hours;\r\n\r\n } else { this.AutoRunHour_1 = hours; }\r\n this.AutoRunMinute_1 = minutes;\r\n this.AutoRunPeriod_1 = period;\r\n break;\r\n case 2:\r\n if (hours.length == 1) {\r\n this.AutoRunHour_2 = '0' + hours;\r\n\r\n } else { this.AutoRunHour_2 = hours; }\r\n this.AutoRunMinute_2 = minutes;\r\n this.AutoRunPeriod_2 = period;\r\n break;\r\n } // end switch\r\n\r\n\r\n // return hours + ':' + minutes + period;\r\n }\r\n\r\n checkIsDirty() {\r\n // compare control values against whats in report service\r\n // convert time in forms\r\n\r\n\r\n // check if user changed frequency\r\n if (this.selectedReport.AutoRunFrequency != this.reportService.SelectedReport.AutoRunFrequency) {\r\n\r\n this.isDirty = true;\r\n }\r\n\r\n switch (this.selectedReport.AutoRunFrequency) {\r\n case 0:\r\n this.autoRunTime = this.AutoRunHour_0 + ':' + this.AutoRunMinute_0 + ' ' + this.AutoRunPeriod_0;\r\n this.autoRunTime24 = this.convertTime12to24(this.autoRunTime);\r\n\r\n if (this.selectedReport.AutoRunDay != this.reportService.SelectedReport.AutoRunDay ||\r\n this.autoRunTime24 != this.reportService.SelectedReport.AutoRunTime) {\r\n\r\n this.isDirty = true;\r\n }\r\n break;\r\n\r\n case 1:\r\n this.autoRunTime = this.AutoRunHour_1 + ':' + this.AutoRunMinute_1 + ' ' + this.AutoRunPeriod_1;\r\n this.autoRunTime24 = this.convertTime12to24(this.autoRunTime);\r\n\r\n if (this.autoRunTime24 != this.reportService.SelectedReport.AutoRunTime) {\r\n\r\n this.isDirty = true;\r\n }\r\n break;\r\n case 2:\r\n this.autoRunTime = this.AutoRunHour_2 + ':' + this.AutoRunMinute_2 + ' ' + this.AutoRunPeriod_2;\r\n this.autoRunTime24 = this.convertTime12to24(this.autoRunTime);\r\n\r\n if (this.selectedReport.AutoRunDate != this.reportService.SelectedReport.AutoRunDate ||\r\n this.autoRunTime24 != this.reportService.SelectedReport.AutoRunTime) {\r\n\r\n this.isDirty = true;\r\n }\r\n break;\r\n } // end switch\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => checkIsDirty()');\r\n console.log(this.selectedReport.AutoRunFrequency);\r\n console.log(this.selectedReport.AutoRunDate);\r\n console.log(this.selectedReport.AutoRunDay);\r\n console.log(this.autoRunTime24);\r\n console.log('checkIsDirty() > report service');\r\n\r\n console.log(this.reportService.SelectedReport.AutoRunFrequency);\r\n console.log(this.reportService.SelectedReport.AutoRunDate);\r\n console.log(this.reportService.SelectedReport.AutoRunDay);\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n // open(){\r\n // // this.open = function ($event, index) {\r\n // // $event.preventDefault();\r\n // // $event.stopPropagation();\r\n // // this.opened.forEach(function (item, index) { this.opened[index] = false; });\r\n // // this.opened[index] = true;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('ReportSettingsComponent => open( ' + '' + ')');\r\n // }\r\n // }\r\n\r\n\r\n} // end class\r\n\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { AutoRunSnapshot } from '../models/auto-run-report-snapshots.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'DeleteSnapshot',\r\n templateUrl: './confirm-delete-snapshot.component.html',\r\n styleUrls: ['./confirm-delete-snapshot.component.css']\r\n})\r\n\r\nexport class ConfirmDeleteSnapshotComponent implements OnDestroy {\r\n\r\n // private reportService: ReportingService;\r\n\r\n // @Output() deleteSnapshotEvent: EventEmitter = new EventEmitter();\r\n\r\n private snapshotToDelete: AutoRunSnapshot;\r\n\r\n private _reportName: string;\r\n private _autoRunDate: Date;\r\n\r\n get reportName(): string {\r\n return this._reportName;\r\n }\r\n\r\n set reportName(value: string) {\r\n this._reportName = value;\r\n }\r\n\r\n get autoRunDate(): Date {\r\n return this._autoRunDate;\r\n }\r\n\r\n set autoRunDate(value: Date) {\r\n this._autoRunDate = value;\r\n }\r\n\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef\r\n ) {\r\n\r\n this.snapshotToDelete = reportService.autoRunSnapshot;\r\n\r\n this.autoRunDate = this.snapshotToDelete.TimeStamp;\r\n this.reportName = this.snapshotToDelete.ReportName;\r\n }\r\n\r\n okClick() {\r\n\r\n const snapshotId = this.snapshotToDelete.AutoRunReportSnapshots_ID;\r\n\r\n this.reportService.deleteReportSnapshot(snapshotId).subscribe(res => {\r\n\r\n // todo: check that the delete was successful\r\n this.reportService.autoRunSnapshot = null;\r\n // this.deleteSnapshotEvent.emit(true);\r\n\r\n // if (this.reportService.inDebugMode) {\r\n\r\n // }\r\n });\r\n\r\n // flag that a snapshot was deleted and a reload is needed after close\r\n this.reportService.snapshotDeleted = true;\r\n this.dialogRef.close(snapshotId);\r\n }\r\n\r\n cancelClick() {\r\n // this.deleteSnapshotEvent.emit(false);\r\n this.dialogRef.close();\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n}","
\r\n
Delete Snapshot
\r\n
\r\n \r\n \r\n
This will delete the snapshot of {{reportName}} taken {{autoRunDate|date:'MM/dd/yy\r\n HH:mm a'}}.\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n ","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n\r\n@Pipe({\r\n name: 'reportInFolderFilter',\r\n pure: false\r\n})\r\nexport class ReportInFolderFilter implements PipeTransform {\r\n\r\n transform(reports, reportSearch): any {\r\n if (reports != null) {\r\n return reports.filter(\r\n\r\n report =>\r\n reportSearch == undefined || reportSearch == 'All' || report.ReportFolder == reportSearch\r\n );\r\n\r\n }\r\n // console.log('reportsFilter class');\r\n }\r\n\r\n\r\n\r\n\r\n // code from angular js\r\n // return function (reports, folder) {\r\n // var filteredReports = [];\r\n // if (reports != null) {\r\n // reports.forEach(function (report) {\r\n // if (folder == null || _.findWhere(folder.Reports, { Id: report.Id }) != null) {\r\n // if (_.findWhere(filteredReports, { Id: report.Id }) == null)\r\n // filteredReports.push(report);\r\n // }\r\n // })\r\n // }\r\n // return filteredReports;\r\n // }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AutoRunSnapshot } from '../models/auto-run-report-snapshots.model';\r\n\r\n@Pipe({\r\n name: 'snapshotInFolderFilter',\r\n pure: false\r\n})\r\nexport class SnapshotInFolderFilter implements PipeTransform {\r\n\r\n transform(snapshots: AutoRunSnapshot[], folderSearch: string, reportSearch: string): AutoRunSnapshot[] {\r\n // console.log(snapshots);\r\n // console.log(folderSearch);\r\n // console.log(reportSearch);\r\n\r\n if (snapshots != null) {\r\n return snapshots.filter(\r\n\r\n snapshot =>\r\n (folderSearch == undefined || folderSearch == 'All' || snapshot.FolderName == folderSearch)\r\n && (reportSearch == undefined || reportSearch == 'All' || snapshot.ReportName == reportSearch)\r\n );\r\n\r\n }\r\n }\r\n\r\n\r\n}","

Report Snapshots

\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{Folder.Name}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{Report.Name}} \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
FolderReportSnapshot TakenErrorActions
{{Snapshot.FolderName}}{{Snapshot.ReportName}}{{Snapshot.TimeStamp|date:'MM/dd/yy\r\n HH:mm a'}}{{Snapshot.Error}}\r\n \r\n Delete\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n","import { Component, OnInit, OnDestroy, Input, Injectable } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginService } from '../../login/login.service';\r\n// import { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { Report } from '../models/report.model';\r\nimport { ReportFolder } from '../models/report-folder.model';\r\n// import { MyReportsComponent } from '../my-reports/my-reports.component';\r\nimport { AutoRunSnapshot } from '../models/auto-run-report-snapshots.model';\r\n\r\nimport { ConfirmDeleteSnapshotComponent } from './confirm-delete-snapshot.component';\r\n\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportSnapshots',\r\n templateUrl: './report-snapshots.component.html',\r\n styleUrls: ['./report-snapshots.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ReportSnapshotsComponent implements OnInit, OnDestroy {\r\n\r\n @Input() confirmDeleteSnapshot: boolean;\r\n\r\n thisDialogRef: MatDialogRef;\r\n deleteSnapshotDialogRef: MatDialogRef;\r\n\r\n selectedReport: Report;\r\n // selectedReportModuleId: number;\r\n // ReportModules: ReportModule[];\r\n IsReportSearch: boolean;\r\n allSnapshots: AutoRunSnapshot[] = [];\r\n selectedFolderId: number;\r\n selectedFolderName: string;\r\n\r\n\r\n SelectedSnapshotFolder: ReportFolder;\r\n // SelectedSnapshotReport: Report;\r\n\r\n reportFolders: ReportFolder[] = [];\r\n\r\n allReports: Report[] = [];\r\n sortedReports: Report[] = [];\r\n\r\n // get sortedDistinctReports(): Report[] {\r\n\r\n // const distinctReports: number[] = [];\r\n // const unsortedDistinctReports: Report[] = [];\r\n\r\n // for (let i = 0; i < this.allReports.length; i++) {\r\n // // if (!distinctReports.includes(this.allReports[i].IsSysGen)) {\r\n // // distinctReports.push(this.allReports[i].IsSysGen);\r\n // // unsortedDistinctReportNames.push(this.allReports[i].Name);\r\n // // }\r\n // if (this.selectedFolderName == 'All') {\r\n // if (unsortedDistinctReports.find(r => r.Name == this.allReports[i].Name) == undefined) {\r\n // unsortedDistinctReports.push(this.allReports[i]);\r\n // }\r\n // }\r\n // else {\r\n // unsortedDistinctReports.push(this.allReports[i]);\r\n // }\r\n // }\r\n\r\n // // console.log(unsortedDistinctReportNames.sort());\r\n\r\n // this.sortedReports = unsortedDistinctReports.sort(this.compare);\r\n\r\n\r\n // return this.sortedReports;\r\n // }\r\n\r\n snapshotCheckAll = false;\r\n\r\n constructor(\r\n reportSnapshotsDialogRef: MatDialogRef,\r\n private deleteSnapshotDialog: MatDialog,\r\n private reportService: ReportingService,\r\n private loginService: LoginService\r\n ) {\r\n\r\n this.thisDialogRef = reportSnapshotsDialogRef;\r\n this.selectedReport = reportService.SelectedReport;\r\n this.IsReportSearch = false;\r\n // this.allSnapshots = this.selectedReport.Snapshots;\r\n // this.reportFolders = reportService.ReportFolders;\r\n this.selectedFolderId = reportService.selectedReportFolderId;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // reset this flag when coming back to snapshots\r\n this.reportService.snapshotDeleted = false;\r\n // we need to include the 'All' folder\r\n\r\n const allFolder = new ReportFolder();\r\n allFolder.Id = 0;\r\n allFolder.Name = 'All';\r\n allFolder.Order = -1;\r\n allFolder.Reports = [];\r\n this.reportFolders.push(allFolder); // we want this one first in the array\r\n\r\n const allReport = new Report();\r\n allReport.Id = 0;\r\n allReport.Name = 'All';\r\n allReport.ReportFolder = 'All';\r\n this.allReports.push(allReport);\r\n\r\n // we only want folders with reports AND SNAPSHOTS\r\n const reportFoldersWithReports: ReportFolder[] = [];\r\n for (let f = 0; f < this.reportService.ReportFolders.length; f++) {\r\n if (this.reportService.ReportFolders[f].Reports.length > 0) {\r\n let reportHasSnapshot = false;\r\n for (let r = 0; r < this.reportService.ReportFolders[f].Reports.length; r++) {\r\n if (this.reportService.ReportFolders[f].Reports[r].Snapshots.length > 0) {\r\n reportHasSnapshot = true;\r\n }\r\n }\r\n if (reportHasSnapshot) {\r\n reportFoldersWithReports.push(this.reportService.ReportFolders[f]);\r\n }\r\n }\r\n }\r\n\r\n // this.reportFolders = this.reportFolders.concat(this.reportService.ReportFolders);\r\n this.reportFolders = this.reportFolders.concat(reportFoldersWithReports);\r\n\r\n // we need to include the 'All' report option\r\n\r\n // const allReport = new Report();\r\n // allReport.Id = 0;\r\n // allReport.Name = 'All';\r\n // allReport.ReportFolder = 'All';\r\n // this.allReports.unshift(allReport); // we want this one first in the array\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(this.reportService.ReportFolders);\r\n console.log(this.reportFolders);\r\n }\r\n\r\n // i is starting at 1 to avoid the 'All' folder\r\n for (let i = 1; i < this.reportFolders.length; i++) {\r\n if (this.reportFolders[i].Id == this.selectedFolderId) {\r\n this.SelectedSnapshotFolder = this.reportFolders[i];\r\n this.selectedFolderName = this.reportFolders[i].Name;\r\n }\r\n for (let r = 0; r < this.reportFolders[i].Reports.length; r++) {\r\n\r\n // we only want reports with saved snapshots\r\n if (this.reportFolders[i].Reports[r].Snapshots.length == 0) {\r\n continue;\r\n }\r\n\r\n // we need to add the report to the 'All' folder\r\n const report = this.reportFolders[i].Reports[r];\r\n // report.ReportFolder = 'All';\r\n // this.reportFolders[0].Reports.push(report);\r\n this.reportFolders[0].Reports.push(this.getReportForAllFolder(report));\r\n\r\n // set the folder in the reports for filtering purposes\r\n this.reportFolders[i].Reports[r].ReportFolder = this.reportFolders[i].Name;\r\n\r\n // add reports to 'All' folder\r\n this.allReports.push(this.reportFolders[i].Reports[r]);\r\n\r\n\r\n for (let s = 0; s < this.reportFolders[i].Reports[r].Snapshots.length; s++) {\r\n const snap = this.reportFolders[i].Reports[r].Snapshots[s];\r\n if (this.reportFolders[i].Reports[r].ReportFolder == this.reportFolders[i].Name) {\r\n snap.FolderName = this.reportFolders[i].Name;\r\n snap.ReportName = this.reportFolders[i].Reports[r].Name;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('this.reportFolders[' + i + '].Reports[' + r + '].Snapshots[' + s + ']');\r\n // console.log(snap);\r\n // }\r\n }\r\n this.allSnapshots.push(snap);\r\n\r\n }\r\n\r\n }\r\n // setting All as default when coming from reports menu\r\n if (this.reportService.isReportsMenu) {\r\n this.selectedFolderName = 'All';\r\n this.selectedReport = allReport;\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n // // we need to include the 'All' folder\r\n\r\n // const allFolder = new ReportFolder();\r\n // allFolder.Id = 0;\r\n // allFolder.Name = 'All';\r\n // allFolder.Order = -1;\r\n // this.reportFolders.unshift(allFolder); // we want this one first in the array\r\n\r\n // // we need to include the 'All' report option\r\n\r\n // const allReport = new Report();\r\n // allReport.Id = 0;\r\n // allReport.Name = 'All';\r\n // allReport.ReportFolder = 'All';\r\n // this.allReports.unshift(allReport); // we want this one first in the array\r\n\r\n // const allReport = new Report();\r\n // allReport.Id = 0;\r\n // allReport.Name = 'All';\r\n // allReport.ReportFolder = 'All';\r\n // this.allReports.push(allReport);\r\n\r\n // this.sortedDistinctReports = this.allReports.filter((x, i, a) => x && a.indexOf(x) === i);\r\n\r\n this.getsortedDistinctReports();\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('allSnapshots');\r\n console.log(this.allSnapshots);\r\n console.log('this.reportFolders');\r\n console.log(this.reportFolders);\r\n\r\n console.log('this.allReports');\r\n console.log(this.allReports);\r\n console.log(this.sortedReports);\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n getsortedDistinctReports(): Report[] {\r\n\r\n const distinctReports: number[] = [];\r\n const unsortedDistinctReports: Report[] = [];\r\n\r\n\r\n for (let i = 0; i < this.allReports.length; i++) {\r\n // if (!distinctReports.includes(this.allReports[i].IsSysGen)) {\r\n // distinctReports.push(this.allReports[i].IsSysGen);\r\n // unsortedDistinctReportNames.push(this.allReports[i].Name);\r\n // }\r\n\r\n // console.log(unsortedDistinctReports.find(r => r.Name == this.allReports[i].Name));\r\n\r\n if (unsortedDistinctReports.find(r => r.Name == this.allReports[i].Name)) {\r\n\r\n }\r\n else {\r\n unsortedDistinctReports.push(this.allReports[i]);\r\n }\r\n // }\r\n // else {\r\n // unsortedDistinctReports.push(this.allReports[i]);\r\n // }\r\n }\r\n\r\n // console.log(unsortedDistinctReportNames.sort());\r\n\r\n this.sortedReports = unsortedDistinctReports.sort(this.compare);\r\n\r\n\r\n return this.sortedReports;\r\n }\r\n\r\n\r\n\r\n compare(a: Report, b: Report) {\r\n return a.Name.localeCompare(b.Name);\r\n // if (a.last_nom < b.last_nom)\r\n // return -1;\r\n // if (a.last_nom > b.last_nom)\r\n // return 1;\r\n // return 0;\r\n }\r\n\r\n // objs.sort(compare);\r\n\r\n isSnapshotVisible(snap: AutoRunSnapshot): boolean {\r\n let isVisible = false;\r\n if (\r\n (snap.FolderName == this.selectedFolderName\r\n && snap.ReportName == this.selectedReport.Name)\r\n ||\r\n (this.selectedFolderName == 'All' && snap.ReportName == this.selectedReport.Name)\r\n ||\r\n (this.selectedFolderName == 'All' && this.selectedReport.Name == 'All')\r\n ) {\r\n isVisible = true;\r\n }\r\n return isVisible;\r\n }\r\n\r\n snapshotCheckAllClick(event?: boolean) {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // // console.log(event);\r\n // console.log(this.snapshotCheckAll);\r\n // console.log(this.allSnapshots);\r\n // }\r\n\r\n for (let i = 0; i < this.allSnapshots.length; i++) {\r\n\r\n // we only want to check the visible checkboxes!\r\n if (this.isSnapshotVisible(this.allSnapshots[i])) {\r\n this.allSnapshots[i].IsSelected = this.snapshotCheckAll;\r\n }\r\n else {\r\n this.allSnapshots[i].IsSelected = false;\r\n }\r\n\r\n }\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(this.allSnapshots);\r\n }\r\n }\r\n\r\n snapshotCheckClick(snap: AutoRunSnapshot, event?: boolean) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n // console.log(event);\r\n console.log(this.snapshotCheckAll);\r\n console.log(this.allSnapshots);\r\n }\r\n // uncheck the All checkbox if ANY checkbox is unselected\r\n for (let i = 0; i < this.allSnapshots.length; i++) {\r\n\r\n if (!this.allSnapshots[i].IsSelected) {\r\n this.snapshotCheckAll = false; // uncheck All\r\n break;\r\n }\r\n }\r\n\r\n // we need to check the ALL checkbox if ALL other checkboxes are checked\r\n\r\n let allCheckBoxesAreChecked = true;\r\n\r\n\r\n for (let i = 0; i < this.allSnapshots.length; i++) {\r\n if (!this.allSnapshots[i].IsSelected) {\r\n allCheckBoxesAreChecked = false;\r\n break;\r\n }\r\n }\r\n\r\n this.snapshotCheckAll = allCheckBoxesAreChecked;\r\n\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('snapshotCheckClick() END:');\r\n console.log(this.snapshotCheckAll);\r\n }\r\n\r\n }\r\n\r\n getReportForAllFolder(report: Report) {\r\n let newReport: Report;\r\n newReport = report;\r\n report.ReportFolder = 'All';\r\n return newReport;\r\n }\r\n\r\n\r\n selectedFolderChanged() {\r\n if (this.reportService.inDebugMode) {\r\n console.log(this.SelectedSnapshotFolder);\r\n console.log(this.selectedFolderName);\r\n console.log(this.allReports);\r\n }\r\n\r\n // default the reports to All??\r\n for (let i = 0; i < this.allReports.length; i++) {\r\n if (this.allReports[i].Name == 'All') {\r\n this.selectedReport = this.allReports[i];\r\n }\r\n }\r\n\r\n if (this.selectedFolderName == 'All') {\r\n // this.currencies = curr.filter((x, i, a) => x && a.indexOf(x) === i);\r\n }\r\n }\r\n\r\n getReportSnapshot(snap: AutoRunSnapshot) {\r\n\r\n this.reportService.getReportSnapshot(snap.AutoRunReportSnapshots_ID).subscribe(res => {\r\n\r\n // allow user to download the PDF\r\n ReportingService.saveFile(res, 'application/pdf', snap.ReportName + '.pdf');\r\n // dataBase64\r\n\r\n });\r\n\r\n }\r\n\r\n // deleteSelectedSnapshotsClick() {\r\n\r\n // }\r\n\r\n snapshotDeleteClick(snap: AutoRunSnapshot) {\r\n\r\n // todo: confirm delete\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('snapshotDeleteClick()');\r\n console.log(this.confirmDeleteSnapshot);\r\n }\r\n\r\n this.reportService.autoRunSnapshot = snap;\r\n this.deleteSnapshotDialogRef = this.deleteSnapshotDialog.open(ConfirmDeleteSnapshotComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n\r\n this.deleteSnapshotDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('deleteSnapshotAfterClosed()');\r\n console.log(result);\r\n console.log(this.selectedReport);\r\n\r\n }\r\n\r\n // now lets remove it from our array\r\n for (let i = 0; i < this.allSnapshots.length; i++) {\r\n if (this.allSnapshots[i].AutoRunReportSnapshots_ID == result) {\r\n this.allSnapshots.splice(i, 1);\r\n }\r\n }\r\n });\r\n\r\n\r\n // this.reportService.deleteReportSnapshot(snap.AutoRunReportSnapshots_ID).subscribe(res => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n\r\n // }\r\n // });\r\n\r\n\r\n\r\n }\r\n\r\n deleteSnapshotAfterClosed() {\r\n\r\n this.deleteSnapshotDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('deleteSnapshotAfterClosed()');\r\n console.log(result);\r\n console.log(this.selectedReport);\r\n }\r\n });\r\n }\r\n\r\n // snapshotFilter() {\r\n\r\n // }\r\n\r\n // getReportModules() {\r\n\r\n // }\r\n\r\n\r\n closeClick() {\r\n this.thisDialogRef.close(this.reportService.snapshotDeleted);\r\n }\r\n\r\n} // end class","
\r\n
\r\n\r\n
\r\n Setup Necessary\r\n
\r\n\r\n
\r\n {{Report.Name}} must be added to a report folder before being scheduled for Auto-Run. \r\n
\r\n\r\n
\r\n Scheduling Auto-Run reports is disabled.
\r\n Please contact your system administrator for more information.\r\n
\r\n\r\n
\r\n Auto-Run is disabled for {{Report.Name}}.
\r\n Please contact your system administrator for more information.\r\n
\r\n\r\n
\r\n {{Report.Name}} can not be removed from all report folders.
\r\n Please disable scheduled auto-runs first.\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Report } from '../models/report.model';\r\nimport { ReportFolder } from '../models/report-folder.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportParametersComponent } from '../parameters/report-parameters.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportAutoRunMessage',\r\n templateUrl: './report-autorun-message.component.html'\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\nexport class ReportAutoRunMessageComponent implements OnInit, OnDestroy {\r\n\r\n thisDialogRef: MatDialogRef;\r\n\r\n // loginSettings: LoginSettings;\r\n allowAutoRunReport: boolean;\r\n reportFolders: ReportFolder[] = [];\r\n // //ReportParameters: ReportParameter[]; //??\r\n\r\n Report: Report;\r\n // reportSettingsDialogRef: MatDialogRef;\r\n\r\n reportsMode: number; // enum: MyReports = 1, AllReports = 2\r\n inDebugMode: boolean;\r\n selectedFolderIds: number[] = [];\r\n reportParametersDialogRef: MatDialogRef;\r\n\r\n constructor(\r\n reportAutoRunMessageDialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n // private myReportsComponent: MyReportsComponent,\r\n // private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private reportParametersDialog: MatDialog,\r\n // private allReportsComponent: AllReportsComponent\r\n\r\n ) {\r\n\r\n this.thisDialogRef = reportAutoRunMessageDialogRef;\r\n // this.allowAutoRunReport = this.loginService.LoginSettings.AllowAutoRunReport;\r\n // this.loginSettings = loginService.LoginSettings;\r\n this.allowAutoRunReport = this.reportService.allowAutoRunReport;\r\n this.inDebugMode = reportService.inDebugMode;\r\n this.Report = this.reportService.SelectedReport;\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // only needs called if in all reports\r\n this.selectedFolderIds = this.reportService.selectedFolderIds;\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.reportService.isForSchedule = false;\r\n }\r\n\r\n closeClick() {\r\n\r\n this.thisDialogRef.close();\r\n\r\n }\r\n\r\n} // end class\r\n","\r\n
Report Folders
\r\n\r\n\r\n\r\n\r\n
Include {{selectedReport.Name}} in the\r\n following folders:
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n Folder\r\n \r\n Description\r\n
\r\n \r\n \r\n {{Folder.Name}}\r\n \r\n {{Folder.Description}}\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n\r\n\r\n\r\n \r\n","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\n// import { LoginService } from '../../login/login.service';\r\n// import { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { Report } from '../models/report.model';\r\nimport { ReportFolder } from '../models/report-folder.model';\r\n// import { ReportParametersComponent } from '../parameters/report-parameters.component';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { CheckForErrorsMessageComponent } from '../../../shared-components/guards/check-for-errors/check-for-errors-message/check-for-errors-message.component';\r\nimport { ReportParametersComponent } from '../parameters/report-parameters.component';\r\nimport { System } from '../../../shared-components/System';\r\nimport { ReportAutoRunMessageComponent } from './report-autorun-message.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportSettings',\r\n templateUrl: './report-settings.folders.component.html',\r\n styleUrls: ['./report-settings.folders.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\nexport class ReportSettingsFoldersComponent implements OnInit, OnDestroy {\r\n @ViewChild(ReportAutoRunMessageComponent) myReportAutoRunMessageComponent: ReportAutoRunMessageComponent;\r\n\r\n thisDialogRef: MatDialogRef;\r\n\r\n // loginSettings: LoginSettings;\r\n allowAutoRunReport: boolean;\r\n reportFolders: ReportFolder[] = [];\r\n // //ReportParameters: ReportParameter[]; //??\r\n\r\n selectedReport: Report;\r\n // reportSettingsDialogRef: MatDialogRef;\r\n\r\n reportsMode: number; // enum: MyReports = 1, AllReports = 2\r\n foldersChkAll: boolean;\r\n noFolderSelected: boolean;\r\n isChecked: boolean;\r\n inDebugMode: boolean;\r\n MaximumSnapshots: number;\r\n\r\n reportParametersDialogRef: MatDialogRef;\r\n isDirty: boolean;\r\n onLoad_FolderIds: number[] = [];\r\n current_FolderIds: number[] = [];\r\n reportAutoRunMessageDialogRef: MatDialogRef;\r\n\r\n constructor(\r\n reportSettingsDialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n // private myReportsComponent: MyReportsComponent\r\n // private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private reportParametersDialog: MatDialog,\r\n private reportAutoRunMessageDialog: MatDialog,\r\n\r\n ) {\r\n\r\n this.thisDialogRef = reportSettingsDialogRef;\r\n this.selectedReport = reportService.SelectedReport;\r\n this.reportFolders = reportService.ReportFolders;\r\n // this.allowAutoRunReport = this.loginService.LoginSettings.AllowAutoRunReport;\r\n // this.loginSettings = loginService.LoginSettings;\r\n this.allowAutoRunReport = this.reportService.allowAutoRunReport;\r\n this.inDebugMode = reportService.inDebugMode;\r\n // https://fdvm1sisapp1.tylertech.com/ClientTierN/AppApi/TylerSis/Student/GetReportParameters?userId=72646¶mId=-1&ayIdentifier=1819&schoolId=10&forSchedule=true\r\n // https://fdvm1sisapp1.tylertech.com/ClientTierN/AppApi/TylerSis/Student/GetReportParameters?userId=72646¶mId=-1&ayIdentifier=1819&schoolId=10&forSchedule=true\r\n\r\n\r\n }\r\n\r\n ngOnInit() {\r\n // call getMyReportFolders() conditionally somehow?\r\n // only needs called if change made in all reports\r\n // this.getMyReportFolders();\r\n // this.reportFolders = this.reportService.ReportFolders;\r\n this.isDirty = false;\r\n\r\n if (this.inDebugMode) {\r\n console.log(this.reportFolders);\r\n console.log(this.reportService.ReportFolders);\r\n }\r\n\r\n this.reportService.isForSchedule = true;\r\n\r\n // if (this.selectedReport.AutoRunDate == '0001-01-01T00:00:00') {\r\n // this.selectedReport.AutoRunDate = '11/6/2018';\r\n // }\r\n\r\n let reportIsInAllFolders = false;\r\n let reportIsInThisFolder = false;\r\n let folderCount = 0;\r\n\r\n for (let f = 0; f < this.reportFolders.length; f++) {\r\n for (let r = 0; r < this.reportFolders[f].Reports.length; r++) {\r\n if (this.reportFolders[f].Reports[r].Id == this.selectedReport.Id) {\r\n this.reportFolders[f].ReportInFolder = true;\r\n reportIsInThisFolder = true;\r\n folderCount += 1;\r\n break;\r\n }\r\n else {\r\n this.reportFolders[f].ReportInFolder = false;\r\n reportIsInThisFolder = false;\r\n }\r\n }\r\n }\r\n if (folderCount == this.reportFolders.length) {\r\n reportIsInAllFolders = true;\r\n this.foldersChkAll = true;\r\n this.noFolderSelected = false;\r\n }\r\n else {\r\n this.foldersChkAll = false;\r\n }\r\n if (folderCount == 0) {\r\n this.noFolderSelected = true;\r\n }\r\n\r\n if (this.inDebugMode) {\r\n console.log(this.reportFolders);\r\n console.log('foldersChkAll:');\r\n console.log(this.foldersChkAll);\r\n console.log('folderCount');\r\n console.log(folderCount);\r\n }\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(this.selectedReport);\r\n console.log(this.reportFolders);\r\n\r\n // this.loginService.MaximumSnapshots\r\n\r\n }\r\n\r\n this.MaximumSnapshots = this.reportService.maxReportSnapshotAllowed;\r\n\r\n this.setSelectedFolders();\r\n this.getReportParameters();\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.reportService.isForSchedule = false;\r\n }\r\n\r\n getMyReportFolders(): void {\r\n this.reportService.getMyReportFolders().subscribe(reportFolders => {\r\n this.reportFolders = reportFolders;\r\n this.reportService.ReportFolders = this.reportFolders;\r\n // this.showNoFoldersMessage = this.reportService.showNoFoldersMessage;\r\n });\r\n }\r\n\r\n\r\n openAutorunDefaultParametersDialog() {\r\n this.reportParametersDialogRef = this.reportParametersDialog.open(ReportParametersComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n // this.reportsDialogRef.beforeClose().subscribe(result => {\r\n // console.log('shared/HeaderComponent =>reportsDialogRef.beforeClose()');\r\n // });\r\n\r\n\r\n this.reportParametersDialogRef.afterClosed().subscribe(result => {\r\n this.reportService.SelectedReport = null;\r\n this.reportService.autoRunSnapshot = null;\r\n this.reportService.isForSchedule = false;\r\n\r\n if (this.reportService.inDebugMode) {\r\n\r\n }\r\n });\r\n }\r\n\r\n // openReportParametersWindow() {\r\n\r\n\r\n\r\n // }\r\n\r\n getReportParameters() {\r\n // todo: forschedule = true!!!\r\n this.reportService.getReportParameters(-1, this.selectedReport, true).subscribe(report => {\r\n // GetReportParameters?userId=72646¶mId=-1&ayIdentifier=1819&schoolId=10&forSchedule=true\r\n if (this.reportService.inDebugMode) {\r\n console.log(report);\r\n }\r\n\r\n this.selectedReport = report;\r\n this.reportService.SelectedReport = report;\r\n // this.openReportParametersWindow();\r\n\r\n });\r\n }\r\n\r\n SelectedReportToConsole() {\r\n console.log(this.selectedReport);\r\n }\r\n\r\n saveClick() {\r\n const selectedFolderIds: number[] = [];\r\n for (let i = 0; i < this.reportFolders.length; i++) {\r\n if (this.reportFolders[i].ReportInFolder) {\r\n selectedFolderIds.push(this.reportFolders[i].Id);\r\n }\r\n }\r\n\r\n this.reportService.selectedFolderIds = selectedFolderIds;\r\n \r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('saveClick()');\r\n console.log(selectedFolderIds);\r\n }\r\n\r\n // if autorun is turned on, do not allow remove from folder\r\n if (this.selectedReport.AutoRun == 'Y' && selectedFolderIds.length < 1) {\r\n //pop up message and block save action\r\n this.reportAutoRunMessageDialogRef = this.reportAutoRunMessageDialog.open(ReportAutoRunMessageComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n return;\r\n }\r\n\r\n this.saveFolderReports(selectedFolderIds);\r\n\r\n // void SaveFolderReports(int loginId, int reportId, System.Collections.Generic.List folderIds);\r\n\r\n }\r\n\r\n saveFolderReports(selectedFolderIds: number[]) {\r\n\r\n // first we need to save auto run settings\r\n this.reportService.saveReportAutoRunSettings().subscribe(res => {\r\n\r\n // now we need to save the report folders\r\n this.reportService.saveFolderReports(this.reportService.login_ID, this.selectedReport.Id, selectedFolderIds).subscribe(results => {\r\n this.thisDialogRef.close('Folders Saved');\r\n });\r\n\r\n });\r\n\r\n\r\n // this.reportService.saveFolderReports(this.reportService.login_ID, this.selectedReport.Id, selectedFolderIds).subscribe(results => {\r\n // this.thisDialogRef.close('Folders Saved');\r\n // });\r\n\r\n }\r\n\r\n\r\n\r\n /*\r\n\r\n SaveReportAutoRunSettings(int loginId, Sis.OneSis.Client.UI.Portal.StudentServices.ReportsDTO myReport)\r\n\r\n // Save Click\r\n $scope.SaveClick = function () {\r\n var selectedFolderIds = [];\r\n for (var i = 0; i < $scope.ReportFolders.length; i++) {\r\n if ($scope.ReportFolders[i].ReportInFolder)\r\n selectedFolderIds.push($scope.ReportFolders[i].Id);\r\n }\r\n if ($scope.SelectedReportSettings.AutoRunReport) {\r\n $scope.validateFields();\r\n if ($scope.ReportSettingsErrorCount == 0) {\r\n if ($scope.SelectedReportSettings.AutoRunFrequency == 0)\r\n $scope.SelectedReportSettings.AutoRunTime = $scope.SelectedReportSettings.WeeklyTime;\r\n else if ($scope.SelectedReportSettings.AutoRunFrequency == 1)\r\n $scope.SelectedReportSettings.AutoRunTime = $scope.SelectedReportSettings.DailyTime;\r\n else if ($scope.SelectedReportSettings.AutoRunFrequency == 2)\r\n $scope.SelectedReportSettings.AutoRunTime = $scope.SelectedReportSettings.SingleTime;\r\n $scope.SelectedReportSettings.AutoRunDate = $scope.AutoRunDate;\r\n }\r\n }\r\n\r\n if ($scope.ReportSettingsErrorCount == 0) {\r\n $scope.isReportsBusy = true;\r\n // Promise Chaining\r\n $q.all([sisService.saveFolderReports($scope.SelectedReportSettings.Id, selectedFolderIds), sisService.saveReportAutoRunSettings($scope.SelectedReportSettings)])\r\n .then(function (results) {\r\n $scope.isReportsBusy = false;\r\n getMyReports(false);\r\n $scope.getReportModules()\r\n });\r\n $uibModalInstance.dismiss('Save was clicked.');\r\n }\r\n }\r\n */\r\n\r\n setSelectedFolders() {\r\n\r\n let reportIsInAllFolders = false;\r\n let reportIsInThisFolder = false;\r\n let folderCount = 0;\r\n for (let f = 0; f < this.reportFolders.length; f++) {\r\n for (let r = 0; r < this.reportFolders[f].Reports.length; r++) {\r\n if (this.reportFolders[f].Reports[r].Id == this.selectedReport.Id) {\r\n this.reportFolders[f].ReportInFolder = true;\r\n reportIsInThisFolder = true;\r\n folderCount += 1;\r\n break;\r\n }\r\n }\r\n if (!reportIsInThisFolder) {\r\n this.reportFolders[f].ReportInFolder = false;\r\n }\r\n }\r\n if (folderCount == this.reportFolders.length) {\r\n reportIsInAllFolders = true;\r\n this.foldersChkAll = true;\r\n this.noFolderSelected = false;\r\n }\r\n else {\r\n this.foldersChkAll = false;\r\n }\r\n if (folderCount == 0) {\r\n this.noFolderSelected = true;\r\n }\r\n\r\n\r\n for (let i = 0; i < this.reportFolders.length; i++) {\r\n if (this.reportFolders[i].ReportInFolder) {\r\n this.onLoad_FolderIds.push(this.reportFolders[i].Id);\r\n }\r\n }\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(this.reportFolders);\r\n console.log('foldersChkAll:');\r\n console.log(this.foldersChkAll);\r\n console.log('folderCount');\r\n console.log(folderCount);\r\n }\r\n\r\n }\r\n\r\n\r\n cancelClick() {\r\n this.checkIsDirty();\r\n if (this.reportService.inDebugMode) {\r\n console.log('isDirty: ' + this.isDirty.toString());\r\n }\r\n\r\n if (this.isDirty) {\r\n\r\n const dialog = this.dialog.open(CheckForErrorsMessageComponent, {\r\n disableClose: true,\r\n data: {\r\n errors: []\r\n }\r\n });\r\n\r\n dialog.componentInstance.dialogBox = dialog;\r\n dialog.afterClosed().subscribe(result => {\r\n console.log(result);\r\n switch (result) {\r\n case 1: { // determine if edit or new folder > save and continue\r\n this.saveClick();\r\n break;\r\n }\r\n case 0: { // continue without save\r\n this.thisDialogRef.close(false);\r\n break;\r\n }\r\n case -1: { // cancel\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n });\r\n\r\n }\r\n else { // no unsaved changes\r\n this.thisDialogRef.close(); // true to refreshFolders\r\n }\r\n }\r\n\r\n autoRunReportClick() {\r\n\r\n }\r\n\r\n\r\n checkAllFolders(foldersChkAll: boolean) {\r\n\r\n this.foldersChkAll = foldersChkAll; // this.isChecked;\r\n this.noFolderSelected = !foldersChkAll; // this.isChecked;\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => checkAllFolders( ' + foldersChkAll + ')');\r\n console.log(this.reportFolders);\r\n console.log(this.foldersChkAll);\r\n console.log(this.noFolderSelected);\r\n }\r\n\r\n\r\n for (let i = 0; i < this.reportFolders.length; i++) {\r\n if (this.foldersChkAll) {\r\n this.reportFolders[i].ReportInFolder = true;\r\n }\r\n\r\n else {\r\n this.reportFolders[i].ReportInFolder = false;\r\n }\r\n\r\n }\r\n if (this.noFolderSelected == true) {\r\n this.selectedReport.AutoRunReport = false;\r\n }\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('ReportSettingsComponent => checkAllFolders( ' + foldersChkAll + ')');\r\n // console.log(this.reportFolders);\r\n // }\r\n\r\n }\r\n\r\n chkFolder(folder: ReportFolder) {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => chkFolder( ' + folder + ')');\r\n console.log(this.reportFolders);\r\n }\r\n\r\n // this.setSelectedFolders();\r\n\r\n // this.noFolderSelected = true;\r\n let reportInFolderCount = 0;\r\n\r\n for (let x = 0; x < this.reportFolders.length; x++) {\r\n if (this.reportFolders[x].ReportInFolder == true) {\r\n reportInFolderCount += 1;\r\n }\r\n }\r\n\r\n\r\n if (reportInFolderCount < this.reportFolders.length) {\r\n this.foldersChkAll = false;\r\n return;\r\n }\r\n\r\n if (reportInFolderCount == this.reportFolders.length) {\r\n this.checkAllFolders(true);\r\n return;\r\n }\r\n\r\n if (reportInFolderCount == 0) {\r\n this.selectedReport.AutoRunReport = false;\r\n this.checkAllFolders(false);\r\n this.noFolderSelected = true;\r\n return;\r\n }\r\n\r\n // this.reportService.ReportFolders = this.reportFolders; // ??\r\n\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => chkFolder( ' + folder + ')');\r\n }\r\n\r\n }\r\n\r\n setFrequency(frequency) {\r\n\r\n // this.selectedReport.AutoRunFrequency = frequency;\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportSettingsComponent => setFrequency( ' + frequency + ')');\r\n }\r\n this.selectedReport.AutoRunFrequency = frequency;\r\n }\r\n\r\n checkIsDirty() {\r\n\r\n for (let i = 0; i < this.reportFolders.length; i++) {\r\n if (this.reportFolders[i].ReportInFolder) {\r\n this.current_FolderIds.push(this.reportFolders[i].Id);\r\n }\r\n }\r\n\r\n if (System.isEqual(this.current_FolderIds, this.onLoad_FolderIds)) {\r\n\r\n this.isDirty = false;\r\n } else {\r\n this.isDirty = true;\r\n }\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('checkIsDirty()');\r\n console.log(this.current_FolderIds);\r\n console.log(this.onLoad_FolderIds);\r\n }\r\n\r\n }\r\n\r\n // open(){\r\n // // this.open = function ($event, index) {\r\n // // $event.preventDefault();\r\n // // $event.stopPropagation();\r\n // // this.opened.forEach(function (item, index) { this.opened[index] = false; });\r\n // // this.opened[index] = true;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('ReportSettingsComponent => open( ' + '' + ')');\r\n // }\r\n // }\r\n\r\n\r\n} // end class\r\n\r\n"," \r\n
\r\n

{{report.Description}}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Print Student absences already entered\r\n \r\n
\r\n \r\n Teacher signature line\r\n \r\n
\r\n \r\n Print w/Grey\r\n Headings\r\n \r\n
\r\n \r\n Skip Line\r\n Between Student\r\n \r\n
\r\n
\r\n \r\n \r\n
Display Weeks of:\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{result.Code}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{result.LongDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Title {{element.AbbreviatedTitle}} Teacher Name{{element.TeacherName}} Per {{element.Period}} Term {{element.TermCode}} Dept {{element.DepartmentCode}} Subject {{element.SubjectCode}}Sec{{element.Section}} Room{{element.RoomNumber}} Days{{element.DaysGroupDescription}}
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n","import { Component, OnInit, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { UserPreferencesService } from '../../../../shared-components/user-preferences/user-preferences.service';\r\nimport { SchoolYearSettings } from '../../../../shared-components/year/school-year-settings.model';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { formatDate } from '@angular/common';\r\nimport { CourseTerm } from '../../../../student360/student-schedule/course-term.model';\r\nimport * as moment from 'moment';\r\nimport { ReportV9 } from '../../models/report-v9.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { StudentAttachment } from '../../../student-attachment/student-attachment.model';\r\nimport { System } from '../../../../shared-components/System';\r\nimport { ReportQueueComponent } from '../../report-queue/report-queue.component';\r\nimport { ReportParameterV9 } from '../../models/report-parameter-v9.model';\r\nimport { TeacherPreview } from '../../models/teacher-preview.model';\r\nimport { Observable, forkJoin } from 'rxjs';\r\nimport { Lookup } from '../../../../shared-components/lookup/lookup.model';\r\n\r\n@Component({\r\n selector: 'app-manual-entry-rosters',\r\n templateUrl: './manual-entry-rosters.component.html',\r\n styleUrls: ['./manual-entry-rosters.component.css'],\r\n})\r\nexport class ManualEntryRostersComponent implements OnInit, OnDestroy {\r\n schoolYearSettings: SchoolYearSettings;\r\n userPreferences: any;\r\n reportParameter = new ReportParameterV9();\r\n thisDialogRef: MatDialogRef;\r\n term: CourseTerm;\r\n dataSource: MatTableDataSource;\r\n gridColumns: string[] = ['SelectAll', 'AbbreviatedTitle', 'TeacherName', 'Period', 'TermCode', 'DepartmentCode', 'SubjectCode', 'Section', 'RoomNumber', 'DaysGroupDescription'];\r\n report: ReportV9;\r\n ErrorCount: 0;\r\n parameters = [];\r\n param = [];\r\n // ERROR HANDLING\r\n // form: Form;\r\n errors: ErrorList[] = [];\r\n public numberMask = {};\r\n @ViewChild('Week1Date', { read: ElementRef, static: true }) week1Date: ElementRef;\r\n @ViewChild('Week2Date', { read: ElementRef, static: true }) week2Date: ElementRef;\r\n @ViewChild('Select', { read: ElementRef }) select: ElementRef;\r\n @ViewChild('FromPeriod', { read: ElementRef, static: true }) fromPeriod: ElementRef;\r\n @ViewChild('ToPeriod', { read: ElementRef, static: true }) toPeriod: ElementRef;\r\n isDataExist = false;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ManualEntryRostersDialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private reportingService: ReportingService\r\n ) {\r\n this.thisDialogRef = ManualEntryRostersDialogRef;\r\n this.report = data.Report;\r\n }\r\n\r\n ngOnInit() {\r\n this.numberMask = this.reportingService.getNumberMask();\r\n this.initialize();\r\n\r\n }\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n initialize() {\r\n const serverCalls: Observable = forkJoin(\r\n this.userPreferencesService.getUserPreferences(0, '/ManualEntryRosters.aspx'),\r\n this.reportingService.getTermsforCourses(0, this.yearService.defaultYear.SiteYearId),\r\n this.reportingService.getDynamicPagesReadForStudentLookup(false),\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID)\r\n );\r\n\r\n serverCalls.subscribe(results => {\r\n if (results[0] != null) {\r\n if (results[0].length == 1) {\r\n this.getUserPreferences(results[0][0]);\r\n }\r\n }\r\n if (results[1] != null) {\r\n this.getTerms(results[1]);\r\n }\r\n if (results[2] != null) {\r\n this.getDynamicPagesReadForStudentLookup(results[2]);\r\n }\r\n if (results[3] != null) {\r\n this.getSchoolYearSettings(results[3]);\r\n }\r\n });\r\n }\r\n\r\n getUserPreferences(userPreferences: string) {\r\n this.userPreferences = JSON.parse(userPreferences);\r\n if (this.userPreferences != null) {\r\n this.reportParameter.radValue = (this.userPreferences.pub_blnPrintNoField ? 'radNoField' : (this.userPreferences.pub_blnPrintStudentId ? 'radPrintStudentID' : 'radOtherField'));\r\n this.reportParameter.SkipLineBetweenStudent = this.userPreferences.pub_blnSkipLinesBetweenStudent;\r\n this.reportParameter.PrintWithGreyHeading = this.userPreferences.pub_blnPrintWithGreyHeadings;\r\n this.reportParameter.PrintStudentAbsencesAlreadyEntered = this.userPreferences.pub_blnPrintStudentAbsencesAlreadyEntered;\r\n this.reportParameter.PrintTeacherSignatureLine = this.userPreferences.pub_blnPrintTeacherSignatureLine;\r\n if (this.reportParameter.OtherFields != null && this.userPreferences.pub_strOtherField != '') {\r\n this.reportParameter.OtherField = this.userPreferences.pub_strOtherField;\r\n }\r\n }\r\n }\r\n getTerms(terms: CourseTerm[]) {\r\n this.reportParameter.Terms = terms.filter(function (element) { return (element.TermTypeId != 2); });\r\n this.term = new CourseTerm();\r\n this.term.Id = -1;\r\n this.term.LongDescription = ' Today\\'s Only';\r\n this.reportParameter.Terms.push(this.term);\r\n this.term = new CourseTerm();\r\n this.term.Id = 0;\r\n this.term.LongDescription = ' All Terms';\r\n this.reportParameter.Terms.push(this.term);\r\n }\r\n getDynamicPagesReadForStudentLookup(otherFields: Lookup[]) {\r\n this.reportParameter.OtherFields = otherFields;\r\n if (otherFields.length > 0) {\r\n this.reportParameter.OtherField = otherFields[0].Id;\r\n if (this.userPreferences != null) {\r\n if (this.userPreferences.pub_strOtherField != '') {\r\n this.reportParameter.OtherField = this.userPreferences.pub_strOtherField.toString();\r\n }\r\n }\r\n }\r\n }\r\n getSchoolYearSettings(schoolYearSettings: SchoolYearSettings) {\r\n this.schoolYearSettings = schoolYearSettings;\r\n this.reportParameter.isValueChange = false;\r\n this.reportParameter.isReportList = false;\r\n this.reportParameter.PrintDate = formatDate(new Date, 'MM/dd/yyyy', 'en-US');\r\n this.reportParameter.AttendanceDate = moment(this.yearService.defaultYear.CurrentAttendanceDate).format('MM/DD/YYYY');\r\n this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n const weekDay = moment.utc(this.reportParameter.AttendanceDate, 'MM/DD/YYYY').toDate().getDay();\r\n this.reportParameter.Week1Date = moment(this.yearService.defaultYear.CurrentAttendanceDate).subtract(weekDay, 'days').format('MM/DD/YYYY');\r\n this.reportParameter.Week2Date = moment(this.yearService.defaultYear.CurrentAttendanceDate).add(-weekDay + 7, 'days').format('MM/DD/YYYY');\r\n this.setReportTitle();\r\n this.reportParameter.TermId = -1;\r\n this.refreshGrid();\r\n }\r\n setReportTitle() {\r\n if (this.loginService.LoginSettings.State != 'CA') {\r\n if (moment(this.reportParameter.Week1Date).isValid() && moment(this.reportParameter.Week2Date).isValid()) {\r\n this.reportParameter.ReportTitle = 'Weeks of: ' + moment.utc(this.reportParameter.Week1Date).format('MM/DD/YYYY') + ' and ' + moment.utc(this.reportParameter.Week2Date).format('MM/DD/YYYY');\r\n }\r\n } else {\r\n this.reportParameter.ReportTitle = 'Attendance Roster Verification';\r\n }\r\n }\r\n\r\n changeValue() {\r\n this.reportParameter.isValueChange = true;\r\n if (this.reportParameter.FromPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.FromPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n }\r\n if (this.reportParameter.ToPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.ToPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n }\r\n }\r\n cancelShowReportParameters() {\r\n this.thisDialogRef.close();\r\n }\r\n\r\n refreshGrid() {\r\n this.errors = [];\r\n if ((this.reportParameter.FromPeriod == undefined || this.reportParameter.FromPeriod == 0 || this.reportParameter.FromPeriod == null) && $.isNumeric(this.reportParameter.FromPeriod) == false) {\r\n this.errors.push({\r\n fieldName: 'From Period',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.fromPeriod\r\n });\r\n }\r\n if ((this.reportParameter.ToPeriod == undefined || this.reportParameter.ToPeriod == 0 || this.reportParameter.ToPeriod == null) && $.isNumeric(this.reportParameter.ToPeriod) == false) {\r\n this.errors.push({\r\n fieldName: 'To Period',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.toPeriod\r\n });\r\n }\r\n if (this.errors.length == 0) {\r\n this.reportParameter.ReportGridData = [];\r\n this.reportingService.getTeacherPreviewGridData(this.yearService.defaultYear.SiteYearId, this.reportParameter.TermId, moment.utc(this.reportParameter.AttendanceDate, 'MM-DD-YYYY HH:mm a').toDate(), this.reportParameter.FromPeriod, this.reportParameter.ToPeriod).subscribe(results => {\r\n this.reportParameter.ReportGridData = results;\r\n if (this.reportParameter.ReportGridData.length > 0) {\r\n this.isDataExist = true;\r\n }\r\n else {\r\n this.isDataExist = false;\r\n }\r\n this.reportParameter.isValueChange = false;\r\n this.dataSource = new MatTableDataSource(this.reportParameter.ReportGridData);\r\n this.reportParameter.selectAllReportGridData = true;\r\n this.selectAll(true);\r\n });\r\n }\r\n }\r\n\r\n selectAll(value) {\r\n this.reportParameter.ReportGridData.forEach(o => {\r\n o.Select = value;\r\n }\r\n );\r\n }\r\n\r\n selectClass() {\r\n const result = this.reportParameter.ReportGridData.filter(o => o.Select == false);\r\n if (result.length > 0) {\r\n this.reportParameter.selectAllReportGridData = false;\r\n }\r\n else if (result.length == 0) {\r\n this.reportParameter.selectAllReportGridData = true;\r\n }\r\n }\r\n\r\n runClick() {\r\n let backgroundColor = '';\r\n this.errors = [];\r\n if (this.reportParameter.PrintWithGreyHeading) {\r\n backgroundColor = '#bbbec1';\r\n }\r\n const selectedGridData = this.reportParameter.ReportGridData.filter(o => o.Select);\r\n if (selectedGridData.length == 0) {\r\n this.errors.push({\r\n fieldName: '',\r\n errorMsg: 'No Rosters Selected!',\r\n fieldRef: this.select\r\n });\r\n }\r\n if (this.reportParameter.isValueChange) {\r\n this.errors.push({\r\n fieldName: '',\r\n errorMsg: 'Selection Criteria Changed Please click Update Display button again!',\r\n fieldRef: null\r\n });\r\n }\r\n if (this.reportParameter.Week1Date == undefined || this.reportParameter.Week1Date == '' || this.reportParameter.Week1Date == null) {\r\n this.errors.push({\r\n fieldName: 'Week1',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.week1Date\r\n });\r\n }\r\n\r\n if (this.reportParameter.Week2Date == undefined || this.reportParameter.Week2Date == '' || this.reportParameter.Week2Date == null) {\r\n this.errors.push({\r\n fieldName: 'Week2',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.week2Date\r\n });\r\n }\r\n if (this.errors.length == 0) {\r\n let sectionIds = '';\r\n selectedGridData.forEach((el, i) => {\r\n if (sectionIds == '') {\r\n sectionIds += selectedGridData[i].SiteSectionId;\r\n } else {\r\n sectionIds = sectionIds + ',' + selectedGridData[i].SiteSectionId;\r\n }\r\n });\r\n\r\n\r\n let workflowReport = false;\r\n if (selectedGridData.length >= 5) {\r\n workflowReport = true;\r\n }\r\n this.saveUserPreferences();\r\n this.parameters = [];\r\n this.param = [];\r\n this.param.push({ ParamName: 'strReportDate', ParamStringValue: this.reportParameter.PrintDate });\r\n this.param.push({ ParamName: 'strReportSiteHeader', ParamStringValue: this.yearService.defaultYear.SchoolName });\r\n this.param.push({ ParamName: 'strReportTitle', ParamStringValue: this.reportParameter.ReportTitle });\r\n this.param.push({ ParamName: 'strSiteYearCode', ParamStringValue: this.yearService.defaultYear.SchoolCode + '' + this.yearService.defaultYear.AYIdentifier });\r\n this.param.push({ ParamName: 'lngSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n this.param.push({ ParamName: 'strSiteSectionIds', ParamStringValue: sectionIds });\r\n this.param.push({ ParamName: 'datWeek1', ParamStringValue: moment.utc(this.reportParameter.Week1Date).format('MM/DD/YYYY') });\r\n this.param.push({ ParamName: 'datWeek2', ParamStringValue: moment.utc(this.reportParameter.Week2Date).format('MM/DD/YYYY') });\r\n this.param.push({ ParamName: 'blnPrintStudentId', ParamStringValue: (this.reportParameter.radValue == 'radPrintStudentID' ? true : false) });\r\n this.param.push({ ParamName: 'strOtherField', ParamStringValue: (this.reportParameter.radValue == 'radOtherField' ? this.reportParameter.OtherField : '') });\r\n this.param.push({ ParamName: 'blnSkipLinesBetweenStudent', ParamStringValue: this.reportParameter.SkipLineBetweenStudent });\r\n this.param.push({ ParamName: 'blnPrintGray', ParamStringValue: this.reportParameter.PrintWithGreyHeading });\r\n this.param.push({ ParamName: 'strBackgroundColor', ParamStringValue: backgroundColor });\r\n this.param.push({ ParamName: 'blnPrintStudentAbsencesAlreadyEntered', ParamStringValue: this.reportParameter.PrintStudentAbsencesAlreadyEntered });\r\n this.param.push({ ParamName: 'blnPrintTeacherSignatureLine', ParamStringValue: this.reportParameter.PrintTeacherSignatureLine });\r\n this.param.push({ ParamName: 'blnViewSSN', ParamStringValue: true });\r\n this.param.push({ ParamName: 'blnViewStudentPortalId', ParamStringValue: true });\r\n this.param.push({ ParamName: 'blnViewReleaseAlert', ParamStringValue: true });\r\n this.param.push({ ParamName: 'blnViewLunchStatus', ParamStringValue: true });\r\n this.param.push({ ParamName: 'blnViewStudentFields', ParamStringValue: true });\r\n this.parameters.push(JSON.stringify(this.param));\r\n if (workflowReport) {\r\n this.reportingService.runV9Report(this.report.ReportName, this.report.ReportType, workflowReport, this.parameters).subscribe(response => {\r\n setTimeout(() => {\r\n this.reportQueueList();\r\n }, 500);\r\n }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n } else {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: 0,\r\n DocumentName: this.report.ReportName,\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: '',\r\n ReportParameters: this.parameters,\r\n ReportType: this.report.ReportType\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n this.thisDialogRef.close();\r\n }\r\n }\r\n saveUserPreferences() {\r\n const UserPreferencesObj = this.userPreferences;\r\n UserPreferencesObj.pub_blnPrintNoField = (this.reportParameter.radValue == 'radNoField' ? true : false);\r\n UserPreferencesObj.pub_blnPrintStudentId = (this.reportParameter.radValue == 'radPrintStudentID' ? true : false);\r\n UserPreferencesObj.pub_blnPrintOtherField = (this.reportParameter.radValue == 'radOtherField' ? true : false);\r\n if (this.reportParameter.OtherField != '') {\r\n UserPreferencesObj.pub_strOtherField = this.reportParameter.OtherField;\r\n }\r\n UserPreferencesObj.pub_blnSkipLinesBetweenStudent = this.reportParameter.SkipLineBetweenStudent;\r\n UserPreferencesObj.pub_blnPrintWithGreyHeadings = this.reportParameter.PrintWithGreyHeading;\r\n UserPreferencesObj.pub_blnPrintStudentAbsencesAlreadyEntered = this.reportParameter.PrintStudentAbsencesAlreadyEntered;\r\n UserPreferencesObj.pub_blnPrintTeacherSignatureLine = this.reportParameter.PrintTeacherSignatureLine;\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(UserPreferencesObj));\r\n this.userPreferencesService.saveUserPreferences(0, '/ManualEntryRosters.aspx', xmlStream, 0, '').subscribe(response => { }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n }\r\n reportQueueList() {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n }\r\n}","import { Component, OnInit, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { UserPreferencesService } from '../../../../shared-components/user-preferences/user-preferences.service';\r\nimport { SchoolYearSettings } from '../../../../shared-components/year/school-year-settings.model';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CourseTerm } from '../../../../student360/student-schedule/course-term.model';\r\nimport { ReportV9 } from '../../models/report-v9.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { StudentAttachment } from '../../../student-attachment/student-attachment.model';\r\nimport { System } from '../../../../shared-components/System';\r\nimport { ReportQueueComponent } from '../../report-queue/report-queue.component';\r\nimport { ReportParameterV9 } from '../../models/report-parameter-v9.model';\r\nimport { User } from '../../../../shared-components/user/user.model';\r\nimport { UserService } from '../../../../shared-components/user/user.service';\r\n\r\n\r\n@Component({\r\n selector: 'class-list-all',\r\n templateUrl: './class-list-all.component.html',\r\n styleUrls: ['./class-list-all.component.css'],\r\n})\r\nexport class ClassListAllComponent implements OnInit, OnDestroy {\r\n schoolYearSettings: SchoolYearSettings;\r\n userPreferences: any;\r\n currentUser: User;\r\n reportParameter = new ReportParameterV9();\r\n thisDialogRef: MatDialogRef;\r\n term: CourseTerm;\r\n report: ReportV9;\r\n ErrorCount: 0;\r\n parameters = [];\r\n param = [];\r\n // ERROR HANDLING\r\n // form: Form;\r\n errors: ErrorList[] = [];\r\n public numberMask = {};\r\n teacherUserId = 0;\r\n // @ViewChild('Week1Date', { read: ElementRef }) week1Date: ElementRef;\r\n // @ViewChild('Week2Date', { read: ElementRef }) week2Date: ElementRef;\r\n @ViewChild('Select', { read: ElementRef }) select: ElementRef;\r\n // @ViewChild('FromPeriod', { read: ElementRef }) fromPeriod: ElementRef;\r\n // @ViewChild('ToPeriod', { read: ElementRef }) toPeriod: ElementRef;\r\n isDataExist = false;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ClassListAllDialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private reportingService: ReportingService,\r\n private userService: UserService,\r\n ) {\r\n this.thisDialogRef = ClassListAllDialogRef;\r\n this.report = data.Report;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.reportParameter.ReportTitle = 'Class List - All';\r\n this.reportParameter.PrintDate = new Date().toISOString().substring(0, 10);\r\n this.numberMask = this.reportingService.getNumberMask();\r\n this.currentUser = this.userService.currentUser;\r\n // this.getUserPreferences(); // no preferences for this report in DTO so I commented this for now\r\n this.getSchoolYearSettings();\r\n // this.getDynamicPagesReadForStudentLookup();\r\n\r\n }\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n getUser() {\r\n\r\n this.loginService.getUser()\r\n }\r\n getSchoolYearSettings() {\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(data => {\r\n this.schoolYearSettings = data;\r\n this.reportParameter.isValueChange = false;\r\n this.reportParameter.isReportList = false;\r\n // this.setReportTitle();\r\n this.reportParameter.TermId = -1;\r\n });\r\n }\r\n getUserPreferences() {\r\n this.userPreferencesService.getUserPreferences(0, '/ClassListAll.aspx').subscribe(results => {\r\n this.userPreferences = JSON.parse(results[0]);\r\n if (this.userPreferences != null) {\r\n this.reportParameter.ReportTitle = this.userPreferences.ReportTitle;\r\n this.reportParameter.PrintDate = this.userPreferences.PrintDate;\r\n }\r\n\r\n });\r\n }\r\n\r\n getDynamicPagesReadForStudentLookup() {\r\n this.reportingService.getDynamicPagesReadForStudentLookup(false).subscribe(results => {\r\n this.reportParameter.OtherFields = results;\r\n if (results.length > 0) {\r\n this.reportParameter.OtherField = results[0].Id;\r\n if (this.userPreferences != null) {\r\n if (this.userPreferences.pub_strOtherField != '') {\r\n this.reportParameter.OtherField = this.userPreferences.pub_strOtherField.toString();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n // setReportTitle() {\r\n // if (this.loginService.LoginSettings.State != 'CA') {\r\n // if (moment(this.reportParameter.Week1Date).isValid() && moment(this.reportParameter.Week2Date).isValid()) {\r\n // this.reportParameter.ReportTitle = 'Weeks of: ' + moment.utc(this.reportParameter.Week1Date).format('MM/DD/YYYY') + ' and ' + moment.utc(this.reportParameter.Week2Date).format('MM/DD/YYYY');\r\n // }\r\n // } else {\r\n // this.reportParameter.ReportTitle = 'Attendance Roster Verification';\r\n // }\r\n // }\r\n\r\n changeValue() {\r\n this.reportParameter.isValueChange = true;\r\n if (this.reportParameter.FromPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.FromPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n }\r\n if (this.reportParameter.ToPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.ToPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n }\r\n }\r\n cancelShowReportParameters() {\r\n this.thisDialogRef.close();\r\n }\r\n\r\n\r\n runClick() {\r\n\r\n this.errors = [];\r\n if (typeof this.reportParameter.ReportTitle == 'undefined') {\r\n this.errors.push({\r\n fieldName: 'Title',\r\n errorMsg: ' Please add a Report Title!',\r\n fieldRef: null\r\n });\r\n }\r\n if (typeof this.reportParameter.PrintDate == 'undefined') {\r\n this.errors.push({\r\n fieldName: 'Date',\r\n errorMsg: ' Please add a Report Date!',\r\n fieldRef: null\r\n });\r\n }\r\n\r\n if (this.errors.length == 0) {\r\n\r\n\r\n\r\n const workflowReport = false;\r\n\r\n // if user is teacher then set Id\r\n if (this.currentUser.UserIsTeacher) {\r\n this.teacherUserId = this.currentUser.Id;\r\n }\r\n\r\n // this.saveUserPreferences();\r\n this.parameters = [];\r\n this.param = [];\r\n this.param.push({ ParamName: 'strReportDate', ParamStringValue: this.reportParameter.PrintDate });\r\n this.param.push({ ParamName: 'strReportSiteHeader', ParamStringValue: this.yearService.defaultYear.SchoolName });\r\n this.param.push({ ParamName: 'strReportTitle', ParamStringValue: this.reportParameter.ReportTitle });\r\n this.param.push({ ParamName: 'strSiteYearCode', ParamStringValue: this.yearService.defaultYear.SchoolCode + '' + this.yearService.defaultYear.AYIdentifier });\r\n this.param.push({ ParamName: 'strReportOutputFile', ParamStringValue: 'NOFILE' });\r\n this.param.push({ ParamName: 'lngSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n this.param.push({ ParamName: 'lngTeacherUserId', ParamStringValue: this.teacherUserId });\r\n this.param.push({ ParamName: 'bytStartPeriod', ParamStringValue: '0' });\r\n this.param.push({ ParamName: 'bytEndPeriod', ParamStringValue: '12' });\r\n this.param.push({ ParamName: 'blnOnlyUnMarked', ParamStringValue: false }); // not sure if this needs to be passed\r\n this.param.push({ ParamName: 'intSortOrder', ParamStringValue: 3 });\r\n\r\n\r\n this.parameters.push(JSON.stringify(this.param));\r\n if (workflowReport) {\r\n this.reportingService.runV9Report(this.report.ReportName, this.report.ReportType, workflowReport, this.parameters).subscribe(response => {\r\n setTimeout(() => {\r\n this.reportQueueList();\r\n }, 500);\r\n }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n } else {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: 0,\r\n DocumentName: this.report.ReportName,\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: '',\r\n ReportParameters: this.parameters,\r\n ReportType: this.report.ReportType\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n this.thisDialogRef.close();\r\n }\r\n }\r\n\r\n saveUserPreferences() {\r\n const UserPreferencesObj = this.userPreferences;\r\n UserPreferencesObj.pub_blnPrintNoField = (this.reportParameter.radValue == 'radNoField' ? true : false);\r\n UserPreferencesObj.pub_blnPrintStudentId = (this.reportParameter.radValue == 'radPrintStudentID' ? true : false);\r\n UserPreferencesObj.pub_blnPrintOtherField = (this.reportParameter.radValue == 'radOtherField' ? true : false);\r\n if (this.reportParameter.OtherField != '') {\r\n UserPreferencesObj.pub_strOtherField = this.reportParameter.OtherField;\r\n }\r\n UserPreferencesObj.pub_blnSkipLinesBetweenStudent = this.reportParameter.SkipLineBetweenStudent;\r\n UserPreferencesObj.pub_blnPrintWithGreyHeadings = this.reportParameter.PrintWithGreyHeading;\r\n UserPreferencesObj.pub_blnPrintStudentAbsencesAlreadyEntered = this.reportParameter.PrintStudentAbsencesAlreadyEntered;\r\n UserPreferencesObj.pub_blnPrintTeacherSignatureLine = this.reportParameter.PrintTeacherSignatureLine;\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(UserPreferencesObj));\r\n this.userPreferencesService.saveUserPreferences(0, '/ManualEntryRosters.aspx', xmlStream, 0, '').subscribe(response => { }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n }\r\n reportQueueList() {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n }\r\n} // end class"," \r\n
\r\n

{{report.Description}}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n"," \r\n
\r\n

{{report.Description}}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Print Address and Telephone on ADDs to Class\r\n \r\n
\r\n \r\n Print Attendance Comments\r\n \r\n
\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n {{term.LongDescription}}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Title {{element.AbbreviatedTitle}} Teacher Name{{element.TeacherName}} Per {{element.Period}} Term {{element.TermCode}} Dept {{element.DepartmentCode}} Subject {{element.SubjectCode}}Sec{{element.Section}} Room{{element.RoomNumber}} Days{{element.DaysGroupDescription}}
\r\n
\r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n","import { Component, OnInit, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { UserPreferencesService } from '../../../../shared-components/user-preferences/user-preferences.service';\r\nimport { SchoolYearSettings } from '../../../../shared-components/year/school-year-settings.model';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { CourseTerm } from '../../../../student360/student-schedule/course-term.model';\r\nimport * as moment from 'moment';\r\nimport { ReportV9 } from '../../models/report-v9.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { StudentAttachment } from '../../../student-attachment/student-attachment.model';\r\nimport { System } from '../../../../shared-components/System';\r\nimport { ReportQueueComponent } from '../../report-queue/report-queue.component';\r\nimport { ReportParameterV9 } from '../../models/report-parameter-v9.model';\r\nimport { User } from '../../../../shared-components/user/user.model';\r\nimport { UserService } from '../../../../shared-components/user/user.service';\r\nimport { ReportParameters } from '../gradebook-statistical-analysis-report/gradebook-statistical-analysis-report.model';\r\nimport { TeacherPreview } from '../../models/teacher-preview.model';\r\n\r\n\r\n@Component({\r\n selector: 'teacher-summary-preview',\r\n templateUrl: './teacher-summary-preview.component.html',\r\n styleUrls: ['./teacher-summary-preview.component.css'],\r\n})\r\nexport class TeacherSummaryPreviewComponent implements OnInit, OnDestroy {\r\n schoolYearSettings: SchoolYearSettings;\r\n userPreferences: any;\r\n currentUser: User;\r\n reportParameter = new ReportParameterV9();\r\n ReportParameters = new ReportParameters();\r\n dataSource: MatTableDataSource;\r\n thisDialogRef: MatDialogRef;\r\n terms: CourseTerm[] = [];\r\n selectedTerm = new CourseTerm();\r\n report: ReportV9;\r\n ErrorCount: 0;\r\n parameters = [];\r\n param = [];\r\n gridColumns: string[] = ['SelectAll', 'AbbreviatedTitle', 'TeacherName', 'Period', 'TermCode', 'DepartmentCode', 'SubjectCode', 'Section', 'RoomNumber', 'DaysGroupDescription'];\r\n // ERROR HANDLING\r\n // form: Form;\r\n errors: ErrorList[] = [];\r\n public numberMask = {};\r\n teacherUserId = 0;\r\n // @ViewChild('Week1Date', { read: ElementRef }) week1Date: ElementRef;\r\n // @ViewChild('Week2Date', { read: ElementRef }) week2Date: ElementRef;\r\n @ViewChild('Select', { read: ElementRef }) select: ElementRef;\r\n @ViewChild('FromPeriod', { read: ElementRef, static: true }) fromPeriod: ElementRef;\r\n @ViewChild('ToPeriod', { read: ElementRef, static: true }) toPeriod: ElementRef;\r\n isDataExist = false;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n TeacherSummaryPreviewDialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private reportingService: ReportingService,\r\n private userService: UserService,\r\n ) {\r\n this.thisDialogRef = TeacherSummaryPreviewDialogRef;\r\n this.report = data.Report;\r\n }\r\n\r\n ngOnInit() {\r\n this.numberMask = this.reportingService.getNumberMask();\r\n this.currentUser = this.userService.currentUser;\r\n // this.getUserPreferences(); // no preferences for this report in JS app\r\n this.getSchoolYearSettings();\r\n\r\n // set defaults\r\n this.reportParameter.ToPeriod = 9;\r\n this.reportParameter.FromPeriod = 0;\r\n const today = new Date();\r\n const todayDate = moment(today).format('MM/DD/YYYY');\r\n this.reportParameter.AttendanceDate = todayDate;\r\n this.reportParameter.ReportTitle = 'Teacher Summary Preview: ' + todayDate;\r\n this.reportParameter.PrintDate = todayDate;\r\n\r\n }\r\n ngOnDestroy() {\r\n\r\n }\r\n changeTerm(term: CourseTerm) {\r\n\r\n this.selectedTerm = term;\r\n this.reportParameter.TermId = this.selectedTerm.Id;\r\n }\r\n\r\n getTermsforCourses() {\r\n this.terms = [];\r\n this.reportingService.getTermsforCourses(0, this.yearService.defaultYear.SiteYearId).subscribe(results => {\r\n\r\n // userModel.defaultUserSchoolYear.SchoolYearId\r\n\r\n this.terms = results.filter(function (element) { return (element.TermTypeId != 2); });\r\n this.terms.push({ $id: null, EndDate: '', Id: -1, LongDescription: \"Today's Only\", MediumDescription: '', ParentId: null, Sequence: null, ShortDescription: null, StartDate: null, TermTypeId: null, Code: '' });\r\n this.terms.push({ $id: null, EndDate: '', Id: 0, LongDescription: 'All Terms', MediumDescription: '', ParentId: null, Sequence: null, ShortDescription: null, StartDate: null, TermTypeId: null, Code: '' });\r\n // set default to today's\r\n this.selectedTerm = this.terms.find(o => o.Id == -1);\r\n this.refreshGrid();\r\n // })\r\n // .error(function () {\r\n // })\r\n // .then(function () {\r\n // });\r\n });\r\n }\r\n\r\n\r\n getUser() {\r\n\r\n this.loginService.getUser()\r\n }\r\n getSchoolYearSettings() {\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(data => {\r\n this.schoolYearSettings = data;\r\n this.reportParameter.isValueChange = false;\r\n this.reportParameter.isReportList = false;\r\n // this.setReportTitle();\r\n this.reportParameter.TermId = -1;\r\n this.reportParameter.PrintComment = false;\r\n this.reportParameter.PrintAdds = false;\r\n this.getTermsforCourses();\r\n // this.refreshGrid();\r\n });\r\n }\r\n getUserPreferences() {\r\n this.userPreferencesService.getUserPreferences(0, '/ClassListAll.aspx').subscribe(results => {\r\n this.userPreferences = JSON.parse(results[0]);\r\n if (this.userPreferences != null) {\r\n this.reportParameter.radValue = (this.userPreferences.pub_blnPrintNoField ? 'radNoField' : (this.userPreferences.pub_blnPrintStudentId ? 'radPrintStudentID' : 'radOtherField'));\r\n this.reportParameter.SkipLineBetweenStudent = this.userPreferences.pub_blnSkipLinesBetweenStudent;\r\n this.reportParameter.PrintWithGreyHeading = this.userPreferences.pub_blnPrintWithGreyHeadings;\r\n this.reportParameter.PrintStudentAbsencesAlreadyEntered = this.userPreferences.pub_blnPrintStudentAbsencesAlreadyEntered;\r\n this.reportParameter.PrintTeacherSignatureLine = this.userPreferences.pub_blnPrintTeacherSignatureLine;\r\n if (this.reportParameter.OtherFields != null && this.userPreferences.pub_strOtherField != '') {\r\n this.reportParameter.OtherField = this.userPreferences.pub_strOtherField;\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n getDynamicPagesReadForStudentLookup() {\r\n this.reportingService.getDynamicPagesReadForStudentLookup(false).subscribe(results => {\r\n this.reportParameter.OtherFields = results;\r\n if (results.length > 0) {\r\n this.reportParameter.OtherField = results[0].Id;\r\n if (this.userPreferences != null) {\r\n if (this.userPreferences.pub_strOtherField != '') {\r\n this.reportParameter.OtherField = this.userPreferences.pub_strOtherField.toString();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n // setReportTitle() {\r\n // if (this.loginService.LoginSettings.State != 'CA') {\r\n // if (moment(this.reportParameter.Week1Date).isValid() && moment(this.reportParameter.Week2Date).isValid()) {\r\n // this.reportParameter.ReportTitle = 'Weeks of: ' + moment.utc(this.reportParameter.Week1Date).format('MM/DD/YYYY') + ' and ' + moment.utc(this.reportParameter.Week2Date).format('MM/DD/YYYY');\r\n // }\r\n // } else {\r\n // this.reportParameter.ReportTitle = 'Attendance Roster Verification';\r\n // }\r\n // }\r\n\r\n changeValue() {\r\n this.reportParameter.isValueChange = true;\r\n if (this.reportParameter.FromPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.FromPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n }\r\n if (this.reportParameter.ToPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.ToPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n }\r\n }\r\n cancelShowReportParameters() {\r\n this.thisDialogRef.close();\r\n }\r\n\r\n refreshGrid() {\r\n this.errors = [];\r\n if ((this.reportParameter.FromPeriod == undefined || this.reportParameter.FromPeriod == 0 || this.reportParameter.FromPeriod == null) && $.isNumeric(this.reportParameter.FromPeriod) == false) {\r\n this.errors.push({\r\n fieldName: 'From Period',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.fromPeriod\r\n });\r\n }\r\n if ((this.reportParameter.ToPeriod == undefined || this.reportParameter.ToPeriod == 0 || this.reportParameter.ToPeriod == null) && $.isNumeric(this.reportParameter.ToPeriod) == false) {\r\n this.errors.push({\r\n fieldName: 'To Period',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.toPeriod\r\n });\r\n }\r\n if (this.errors.length == 0) {\r\n this.reportParameter.ReportGridData = [];\r\n\r\n // var attDate = new Date(this.reportParameter.AttendanceDate)\r\n // attDate.toString();\r\n this.reportParameter.AttendanceDate = moment(this.reportParameter.AttendanceDate).format('MM/DD/YYYY');\r\n\r\n\r\n this.reportingService.getTeacherPreviewGridData(this.yearService.defaultYear.SiteYearId, this.reportParameter.TermId, moment.utc(this.reportParameter.AttendanceDate, 'MM-DD-YYYY HH:mm a').toDate(), this.reportParameter.FromPeriod, this.reportParameter.ToPeriod).subscribe(results => {\r\n this.reportParameter.ReportGridData = results;\r\n if (this.reportParameter.ReportGridData.length > 0) {\r\n this.isDataExist = true;\r\n }\r\n else {\r\n this.isDataExist = false;\r\n }\r\n this.reportParameter.isValueChange = false;\r\n this.dataSource = new MatTableDataSource(this.reportParameter.ReportGridData);\r\n this.reportParameter.selectAllReportGridData = true;\r\n this.selectAll(true);\r\n });\r\n }\r\n }\r\n\r\n selectAll(value) {\r\n this.reportParameter.ReportGridData.forEach(o => {\r\n o.Select = value;\r\n }\r\n );\r\n }\r\n\r\n selectClass() {\r\n const result = this.reportParameter.ReportGridData.filter(o => o.Select == false);\r\n if (result.length > 0) {\r\n this.reportParameter.selectAllReportGridData = false;\r\n }\r\n else if (result.length == 0) {\r\n this.reportParameter.selectAllReportGridData = true;\r\n }\r\n }\r\n\r\n runClick() {\r\n const selectedGridData = this.reportParameter.ReportGridData.filter(o => o.Select);\r\n if (selectedGridData.length == 0) {\r\n this.errors.push({\r\n fieldName: '',\r\n errorMsg: 'No Rosters Selected!',\r\n fieldRef: this.select\r\n });\r\n }\r\n if (this.reportParameter.isValueChange) {\r\n this.errors.push({\r\n fieldName: '',\r\n errorMsg: 'Selection Criteria Changed Please click Update Display button again!',\r\n fieldRef: null\r\n });\r\n }\r\n if (this.errors.length == 0) {\r\n let sectionIds = '';\r\n selectedGridData.forEach((el, i) => {\r\n if (sectionIds == '') {\r\n sectionIds += selectedGridData[i].SiteSectionId;\r\n } else {\r\n sectionIds = sectionIds + ',' + selectedGridData[i].SiteSectionId;\r\n }\r\n this.ReportParameters.SiteSectionIds = sectionIds;\r\n });\r\n\r\n let workflowReport = false;\r\n\r\n // if user is teacher then set Id\r\n if (this.currentUser.UserIsTeacher) {\r\n this.teacherUserId = this.currentUser.Id;\r\n }\r\n\r\n // this.reportParameter.PrintDate = moment.utc(this.reportParameter.PrintDate, 'MM-DD-YYYY').toString();\r\n\r\n // this.saveUserPreferences();\r\n this.parameters = [];\r\n this.param = [];\r\n this.param.push({ ParamName: 'strReportDate', ParamStringValue: this.reportParameter.PrintDate });\r\n this.param.push({ ParamName: 'strReportSiteHeader', ParamStringValue: this.yearService.defaultYear.SchoolName });\r\n this.param.push({ ParamName: 'strReportTitle', ParamStringValue: this.reportParameter.ReportTitle });\r\n this.param.push({ ParamName: 'strSiteYearCode', ParamStringValue: this.yearService.defaultYear.SchoolCode + '' + this.yearService.defaultYear.AYIdentifier });\r\n this.param.push({ ParamName: 'lngSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n\r\n this.param.push({ ParamName: 'strSiteSectionIds', ParamStringValue: this.ReportParameters.SiteSectionIds });\r\n this.param.push({ ParamName: 'datCurrentAttendanceDate', ParamStringValue: this.reportParameter.AttendanceDate }); // get from parameter\r\n this.param.push({ ParamName: 'blnPrintAdds', ParamStringValue: this.reportParameter.PrintAdds });\r\n this.param.push({ ParamName: 'blnPrintComment', ParamStringValue: this.reportParameter.PrintComment });\r\n\r\n\r\n this.parameters.push(JSON.stringify(this.param));\r\n if (workflowReport) {\r\n this.reportingService.runV9Report(this.report.ReportName, this.report.ReportType, workflowReport, this.parameters).subscribe(response => {\r\n setTimeout(() => {\r\n this.reportQueueList();\r\n }, 500);\r\n }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n } else {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: 0,\r\n DocumentName: this.report.ReportName,\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: '',\r\n ReportParameters: this.parameters,\r\n ReportType: this.report.ReportType\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n this.thisDialogRef.close();\r\n }\r\n } // end run click\r\n\r\n saveUserPreferences() {\r\n const UserPreferencesObj = this.userPreferences;\r\n UserPreferencesObj.pub_blnPrintNoField = (this.reportParameter.radValue == 'radNoField' ? true : false);\r\n UserPreferencesObj.pub_blnPrintStudentId = (this.reportParameter.radValue == 'radPrintStudentID' ? true : false);\r\n UserPreferencesObj.pub_blnPrintOtherField = (this.reportParameter.radValue == 'radOtherField' ? true : false);\r\n if (this.reportParameter.OtherField != '') {\r\n UserPreferencesObj.pub_strOtherField = this.reportParameter.OtherField;\r\n }\r\n UserPreferencesObj.pub_blnSkipLinesBetweenStudent = this.reportParameter.SkipLineBetweenStudent;\r\n UserPreferencesObj.pub_blnPrintWithGreyHeadings = this.reportParameter.PrintWithGreyHeading;\r\n UserPreferencesObj.pub_blnPrintStudentAbsencesAlreadyEntered = this.reportParameter.PrintStudentAbsencesAlreadyEntered;\r\n UserPreferencesObj.pub_blnPrintTeacherSignatureLine = this.reportParameter.PrintTeacherSignatureLine;\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(UserPreferencesObj));\r\n this.userPreferencesService.saveUserPreferences(0, '/ManualEntryRosters.aspx', xmlStream, 0, '').subscribe(response => { }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n }\r\n reportQueueList() {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n }\r\n} // end class\r\n","import { Component, OnInit, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { UserPreferencesService } from '../../../../shared-components/user-preferences/user-preferences.service';\r\nimport { SchoolYearSettings } from '../../../../shared-components/year/school-year-settings.model';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CourseTerm } from '../../../../student360/student-schedule/course-term.model';\r\nimport { ReportV9 } from '../../models/report-v9.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { StudentAttachment } from '../../../student-attachment/student-attachment.model';\r\nimport { System } from '../../../../shared-components/System';\r\nimport { ReportQueueComponent } from '../../report-queue/report-queue.component';\r\nimport { ReportParameterV9 } from '../../models/report-parameter-v9.model';\r\nimport { User } from '../../../../shared-components/user/user.model';\r\nimport { UserService } from '../../../../shared-components/user/user.service';\r\n\r\n\r\n@Component({\r\n selector: 'class-list-all-attendance-not-marked',\r\n templateUrl: './class-list-all-attendance-not-marked.component.html',\r\n styleUrls: ['./class-list-all-attendance-not-marked.component.css'],\r\n})\r\nexport class ClassListAllAttendanceNotMarkedComponent implements OnInit, OnDestroy {\r\n schoolYearSettings: SchoolYearSettings;\r\n userPreferences: any;\r\n currentUser: User;\r\n reportParameter = new ReportParameterV9();\r\n thisDialogRef: MatDialogRef;\r\n term: CourseTerm;\r\n report: ReportV9;\r\n ErrorCount: 0;\r\n parameters = [];\r\n param = [];\r\n // ERROR HANDLING\r\n // form: Form;\r\n errors: ErrorList[] = [];\r\n public numberMask = {};\r\n teacherUserId = 0;\r\n // @ViewChild('Week1Date', { read: ElementRef }) week1Date: ElementRef;\r\n // @ViewChild('Week2Date', { read: ElementRef }) week2Date: ElementRef;\r\n @ViewChild('Select', { read: ElementRef }) select: ElementRef;\r\n // @ViewChild('FromPeriod', { read: ElementRef }) fromPeriod: ElementRef;\r\n // @ViewChild('ToPeriod', { read: ElementRef }) toPeriod: ElementRef;\r\n isDataExist = false;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ClassListAllDialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private reportingService: ReportingService,\r\n private userService: UserService,\r\n ) {\r\n this.thisDialogRef = ClassListAllDialogRef;\r\n this.report = data.Report;\r\n }\r\n\r\n ngOnInit() {\r\n this.reportParameter.ReportTitle = 'Class List - Attendance Not Marked';\r\n this.reportParameter.PrintDate = new Date().toISOString().substring(0, 10);\r\n this.numberMask = this.reportingService.getNumberMask();\r\n this.currentUser = this.userService.currentUser;\r\n // this.getUserPreferences(); // no preferences to parse so I commented this for now\r\n this.getSchoolYearSettings();\r\n // this.getDynamicPagesReadForStudentLookup();\r\n\r\n }\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n getUser() {\r\n\r\n this.loginService.getUser();\r\n }\r\n getSchoolYearSettings() {\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(data => {\r\n this.schoolYearSettings = data;\r\n this.reportParameter.isValueChange = false;\r\n this.reportParameter.isReportList = false;\r\n // this.setReportTitle();\r\n this.reportParameter.TermId = -1;\r\n });\r\n }\r\n getUserPreferences() {\r\n this.userPreferencesService.getUserPreferences(0, '/ClassListAll.aspx').subscribe(results => {\r\n this.userPreferences = JSON.parse(results[0]);\r\n if (this.userPreferences != null) {\r\n this.reportParameter.radValue = (this.userPreferences.pub_blnPrintNoField ? 'radNoField' : (this.userPreferences.pub_blnPrintStudentId ? 'radPrintStudentID' : 'radOtherField'));\r\n this.reportParameter.SkipLineBetweenStudent = this.userPreferences.pub_blnSkipLinesBetweenStudent;\r\n this.reportParameter.PrintWithGreyHeading = this.userPreferences.pub_blnPrintWithGreyHeadings;\r\n this.reportParameter.PrintStudentAbsencesAlreadyEntered = this.userPreferences.pub_blnPrintStudentAbsencesAlreadyEntered;\r\n this.reportParameter.PrintTeacherSignatureLine = this.userPreferences.pub_blnPrintTeacherSignatureLine;\r\n if (this.reportParameter.OtherFields != null && this.userPreferences.pub_strOtherField != '') {\r\n this.reportParameter.OtherField = this.userPreferences.pub_strOtherField;\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n getDynamicPagesReadForStudentLookup() {\r\n this.reportingService.getDynamicPagesReadForStudentLookup(false).subscribe(results => {\r\n this.reportParameter.OtherFields = results;\r\n if (results.length > 0) {\r\n this.reportParameter.OtherField = results[0].Id;\r\n if (this.userPreferences != null) {\r\n if (this.userPreferences.pub_strOtherField != '') {\r\n this.reportParameter.OtherField = this.userPreferences.pub_strOtherField.toString();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n // setReportTitle() {\r\n // if (this.loginService.LoginSettings.State != 'CA') {\r\n // if (moment(this.reportParameter.Week1Date).isValid() && moment(this.reportParameter.Week2Date).isValid()) {\r\n // this.reportParameter.ReportTitle = 'Weeks of: ' + moment.utc(this.reportParameter.Week1Date).format('MM/DD/YYYY') + ' and ' + moment.utc(this.reportParameter.Week2Date).format('MM/DD/YYYY');\r\n // }\r\n // } else {\r\n // this.reportParameter.ReportTitle = 'Attendance Roster Verification';\r\n // }\r\n // }\r\n\r\n changeValue() {\r\n this.reportParameter.isValueChange = true;\r\n if (this.reportParameter.FromPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.FromPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n }\r\n if (this.reportParameter.ToPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.ToPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n }\r\n }\r\n cancelShowReportParameters() {\r\n this.thisDialogRef.close();\r\n }\r\n\r\n\r\n runClick() {\r\n this.errors = [];\r\n if (typeof this.reportParameter.ReportTitle == 'undefined') {\r\n this.errors.push({\r\n fieldName: 'Title',\r\n errorMsg: ' Please add a Report Title!',\r\n fieldRef: null\r\n });\r\n }\r\n if (typeof this.reportParameter.PrintDate == 'undefined') {\r\n this.errors.push({\r\n fieldName: 'Date',\r\n errorMsg: ' Please add a Report Date!',\r\n fieldRef: null\r\n });\r\n }\r\n\r\n if (this.errors.length == 0) {\r\n\r\n\r\n const workflowReport = false;\r\n\r\n // if user is teacher then set Id\r\n if (this.currentUser.UserIsTeacher) {\r\n this.teacherUserId = this.currentUser.Id;\r\n }\r\n\r\n // this.saveUserPreferences();\r\n this.parameters = [];\r\n this.param = [];\r\n this.param.push({ ParamName: 'strReportDate', ParamStringValue: this.reportParameter.PrintDate });\r\n this.param.push({ ParamName: 'strReportSiteHeader', ParamStringValue: this.yearService.defaultYear.SchoolName });\r\n this.param.push({ ParamName: 'strReportTitle', ParamStringValue: this.reportParameter.ReportTitle });\r\n this.param.push({ ParamName: 'strSiteYearCode', ParamStringValue: this.yearService.defaultYear.SchoolCode + '' + this.yearService.defaultYear.AYIdentifier });\r\n this.param.push({ ParamName: 'strReportOutputFile', ParamStringValue: 'NOFILE' });\r\n this.param.push({ ParamName: 'lngSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n this.param.push({ ParamName: 'lngTeacherUserId', ParamStringValue: this.teacherUserId });\r\n this.param.push({ ParamName: 'bytStartPeriod', ParamStringValue: '0' });\r\n this.param.push({ ParamName: 'bytEndPeriod', ParamStringValue: '12' });\r\n this.param.push({ ParamName: 'blnOnlyUnMarked', ParamStringValue: true }); // not sure if this needs to be passed\r\n this.param.push({ ParamName: 'intSortOrder', ParamStringValue: 3 });\r\n\r\n\r\n this.parameters.push(JSON.stringify(this.param));\r\n if (workflowReport) {\r\n this.reportingService.runV9Report(this.report.ReportName, this.report.ReportType, workflowReport, this.parameters).subscribe(response => {\r\n setTimeout(() => {\r\n this.reportQueueList();\r\n }, 500);\r\n }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n } else {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: 0,\r\n DocumentName: this.report.ReportName,\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: '',\r\n ReportParameters: this.parameters,\r\n ReportType: this.report.ReportType\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n this.thisDialogRef.close();\r\n }\r\n }\r\n\r\n saveUserPreferences() {\r\n const UserPreferencesObj = this.userPreferences;\r\n UserPreferencesObj.pub_blnPrintNoField = (this.reportParameter.radValue == 'radNoField' ? true : false);\r\n UserPreferencesObj.pub_blnPrintStudentId = (this.reportParameter.radValue == 'radPrintStudentID' ? true : false);\r\n UserPreferencesObj.pub_blnPrintOtherField = (this.reportParameter.radValue == 'radOtherField' ? true : false);\r\n if (this.reportParameter.OtherField != '') {\r\n UserPreferencesObj.pub_strOtherField = this.reportParameter.OtherField;\r\n }\r\n UserPreferencesObj.pub_blnSkipLinesBetweenStudent = this.reportParameter.SkipLineBetweenStudent;\r\n UserPreferencesObj.pub_blnPrintWithGreyHeadings = this.reportParameter.PrintWithGreyHeading;\r\n UserPreferencesObj.pub_blnPrintStudentAbsencesAlreadyEntered = this.reportParameter.PrintStudentAbsencesAlreadyEntered;\r\n UserPreferencesObj.pub_blnPrintTeacherSignatureLine = this.reportParameter.PrintTeacherSignatureLine;\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(UserPreferencesObj));\r\n this.userPreferencesService.saveUserPreferences(0, '/ManualEntryRosters.aspx', xmlStream, 0, '').subscribe(response => { }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n }\r\n reportQueueList() {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n }\r\n} // end class"," \r\n
\r\n

{{report.Description}}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n","import { Lookup } from '../../../../shared-components/lookup/lookup.model';\r\n\r\n\r\nexport class AttendanceHistoryByClassReport {\r\n SiteSectionId: number;\r\n DistrictSubjectId: number;\r\n TermDescription: string;\r\n Course: string;\r\n StartPeriod: number;\r\n SubjectTitle: string;\r\n TeacherName: string;\r\n RoomNumber: string;\r\n StudentCount: number;\r\n Selected = false;\r\n}\r\n\r\n// export enum ShowTotalHoursOption {\r\n// IncludeAllAbsences = 0,\r\n// IncludeSelectedAbsences = 1,\r\n// }\r\n\r\n// export enum PeriodsToTallyOption {\r\n// OnlyPeriodsforEachSection = 0,\r\n// AllPeriodsForEachStudent = 1,\r\n// }\r\n\r\nexport class ReportParameters {\r\n\r\n // enum showTotalHoursSelection {\r\n // includeAllAbsences,\r\n // }\r\n\r\n // select on history dates\r\n SelectHistoryDates: boolean;\r\n HistoryFrom: Date;\r\n HistoryTo: Date; // string; // Date;\r\n\r\n // select on residency codes\r\n SelectResidencyCodes: boolean;\r\n ResidencyCodeFrom: string; // pub_strResidencyCodeFrom\r\n ResidencyCodeTo: string; // pub_strResidencyCodeTo\r\n ResidencyCodes: Lookup[] = [];\r\n\r\n // select on category codes\r\n SelectCategoryCodes: boolean;\r\n CategoryCodes: Lookup[] = [];\r\n CategoryCodeFrom: string; // pub_strCategoryCodeFrom\r\n CategoryCodeTo: string; // pub_strCategoryCodeTo\r\n\r\n // select on grade levels\r\n SelectGradeLevels: boolean;\r\n // pub_strGradeLevelRankFrom\r\n // pub_strGradeLevelRankTo\r\n GradeLevels: Lookup[] = [];\r\n GradeLevelFrom: string;\r\n GradeLevelTo: string;\r\n\r\n GradeLevelRankFrom: string;\r\n GradeLevelRankTo: string;\r\n\r\n AttendanceCodes: Lookup[] = [];\r\n\r\n // history codes to tally\r\n HistoryCodesToTally: string; // pub_strHistoryCodesToTally\r\n\r\n // show total hours\r\n // ShowTotalHours: number;\r\n // IncludeAbsences: string;\r\n IncludeAllAbsences: boolean;\r\n IncludeSelectedAbsences: boolean;\r\n\r\n HistoryMinMax: boolean;\r\n\r\n\r\n // periods to tally\r\n TallyTardies: boolean;\r\n // PeriodsToTally: number;\r\n HistoryCountMin: string; // number;\r\n HistoryCountMax: string; // number;\r\n\r\n OnlyPeriodsforEachSection: boolean;\r\n\r\n Count1Day: boolean;\r\n SplitABDays: boolean;\r\n\r\n\r\n\r\n // tally tardies\r\n\r\n // days (full/half) select codes\r\n // pub_strDayFullHalfCode\r\n\r\n DaysFullHalf: boolean;\r\n FullDay: boolean;\r\n HalfDay: boolean;\r\n\r\n // todays current codes tally\r\n\r\n CurrentMinMax: boolean;\r\n CurrentCodesTallyCountMin: string; // number;\r\n CurrentCodesTallyCountMax: string; // number;\r\n\r\n TodaysCurrentTally: boolean; // pub_blnTodaysCurrentTally = this.reportParameters.TodaysCurrentTally;\r\n DaysCodes: string;\r\n\r\n DaysCountMin: string; // number;\r\n DaysCountMax: string; // number;\r\n\r\n\r\n\r\n\r\n // checkboxes\r\n DoubleSpaceAfterStudentName: boolean;\r\n ShowHistoryRecords: boolean;\r\n ShowOnlySelectedRecords: boolean;\r\n ShowComments: boolean;\r\n IgnoreAttendance: boolean;\r\n\r\n}\r\n\r\nexport class AttendanceHistoryByStudentPreferences {\r\n // pub_intReportType: number;\r\n // pub_blnParentInfo: boolean;\r\n // pub_strStudentSelectionStatus: string;\r\n // pub_blnSelectHistoryDates: boolean;\r\n // pub_datHistoryFrom: Date;\r\n // pub_datHistoryTo: Date;\r\n // pub_blnSelectResidencyCodes: boolean;\r\n // pub_strResidencyCodeFrom: string;\r\n // pub_strResidencyCodeTo: string;\r\n // pub_blnSelectCategoryCodes: boolean;\r\n // pub_strCategoryCodeFrom: string;\r\n // pub_strCategoryCodeTo: string;\r\n // pub_blnSelectGradeLevels: boolean;\r\n // pub_strGradeLevelRankFrom: string;\r\n // pub_strGradeLevelRankTo: string;\r\n // pub_strHistoryCodesToTallyIds: string;\r\n // pub_strHistoryCodesToTally: string;\r\n // pub_blnCount1PerDay: boolean;\r\n // pub_blnSplitABDays: boolean;\r\n // pub_strHistoryPeriodsToTally: string;\r\n // pub_blnOnlyPeriodsforEachSection: boolean;\r\n // pub_blnSelectHistoryCountMinMax: boolean;\r\n // pub_intHistoryCountMin: number;\r\n // pub_intHistoryCountMax: number;\r\n // pub_blnTallyTardies: boolean;\r\n // pub_strTallyTardiesCodesIds: string;\r\n // pub_strTallyTardiesCodes: string;\r\n // pub_blnDaysFullHalfSelect: boolean;\r\n // pub_blnFullDay: boolean;\r\n // pub_blnHalfDay: boolean;\r\n // pub_strDayFullHalfCode: string;\r\n // pub_intDaysCountMin: number;\r\n // pub_intDaysCountMax: number;\r\n // pub_blnTodaysCurrentTally: boolean;\r\n // pub_strTodaysCodesToTallyIds: string;\r\n // pub_strTodaysCodesToTally: string;\r\n // pub_blnCurrentMinMax: boolean;\r\n // pub_intCurrentCodesTallyCountMin: number;\r\n // pub_intCurrentCodesTallyCountMax: number;\r\n // pub_blnDoubleSpaceAfterStudentName: boolean;\r\n // pub_blnShowHistoryRecords: boolean;\r\n // pub_blnShowOnlySelectedRecords: boolean;\r\n // pub_blnShowComments: boolean;\r\n // pub_blnShowCurrentAtndSteps: boolean;\r\n // pub_blnIgnoreAttendance: boolean;\r\n // pub_blnNotEnrolled: boolean;\r\n // pub_blnIncludeAllAbsences: boolean;\r\n // pub_blnConsecutiveDays: boolean;\r\n\r\n pub_intReportType: number;\r\n pub_strStudentSelectionStatus: string;\r\n pub_blnSelectHistoryDates: boolean;\r\n pub_datHistoryTo: Date;\r\n pub_blnSelectResidencyCodes: boolean;\r\n pub_strResidencyCodeFrom: string;\r\n pub_strResidencyCodeTo: string;\r\n pub_blnSelectCategoryCodes: boolean;\r\n pub_strCategoryCodeFrom: string;\r\n pub_strCategoryCodeTo: string;\r\n pub_blnSelectGradeLevels: boolean;\r\n pub_strGradeLevelRankFrom: string;\r\n pub_strGradeLevelRankTo: string;\r\n pub_blnSplitABDays: boolean;\r\n pub_blnOnlyPeriodsforEachSection: boolean;\r\n pub_blnSelectHistoryCountMinMax: boolean;\r\n pub_intHistoryCountMin: string; // number;\r\n pub_intHistoryCountMax: string; // number;\r\n pub_blnTallyTardies: boolean;\r\n pub_blnDaysFullHalfSelect: boolean;\r\n pub_blnFullDay: boolean;\r\n pub_blnHalfDay: boolean;\r\n pub_intDaysCountMin: string; // number;\r\n pub_intDaysCountMax: string; // number;\r\n pub_blnTodaysCurrentTally: boolean;\r\n pub_blnCurrentMinMax: boolean;\r\n pub_intCurrentCodesTallyCountMin = '1';\r\n pub_intCurrentCodesTallyCountMax = '999';\r\n pub_blnDoubleSpaceAfterStudentName: boolean;\r\n pub_blnShowHistoryRecords: boolean;\r\n pub_blnShowOnlySelectedRecords: boolean;\r\n pub_blnShowComments: boolean;\r\n pub_blnShowCurrentAtndSteps: boolean;\r\n pub_blnNotEnrolled: boolean;\r\n pub_blnIncludeAllAbsences: boolean;\r\n pub_blnParentInfo: boolean;\r\n pub_blnCount1PerDay: boolean;\r\n pub_strHistoryCodesToTally: string;\r\n pub_strTallyTardiesCodes: string;\r\n pub_strTodaysCodesToTally: string;\r\n pub_strDayFullHalfCode: string;\r\n pub_strReportTitle: string;\r\n\r\n // NOT IN USER PREFERENCES DTO\r\n pub_datHistoryFrom: Date;\r\n pub_strTallyTardiesCodesIds: string;\r\n pub_strHistoryCodesToTallyIds: string;\r\n pub_strTodaysCodesToTallyIds: string;\r\n pub_blnIgnoreAttendance: boolean;\r\n pub_strHistoryPeriodsToTally: string;\r\n pub_blnConsecutiveDays: boolean;\r\n}\r\n\r\n/*\r\n\r\nOnlyPeriodsforEachSection\r\n\r\nhistoryCodesToTallyIds\r\nhistoryCodesToTally\r\ntallyTardiesCodesIds\r\ntallyTardiesCodes\r\ndayFullHalfCode\r\n\r\ntodayCodesToTallyIds\r\ntodayCodesToTally\r\n\r\n pub_intReportType = this.Report.ReportType;\r\n pub_blnParentInfo = false;\r\n pub_strStudentSelectionStatus = 'Active';\r\n pub_blnSelectHistoryDates = this.reportParameters.SelectHistoryDates;\r\n pub_datHistoryFrom = this.reportParameters.HistoryFrom\r\n pub_datHistoryTo = this.reportParameters.HistoryTo\r\n pub_blnSelectResidencyCodes = this.reportParameters.SelectResidencyCodes\r\n pub_strResidencyCodeFrom = this.reportParameters.ResidencyCodeFrom\r\n pub_strResidencyCodeTo = this.reportParameters.ResidencyCodeTo\r\n pub_blnSelectCategoryCodes = this.reportParameters.SelectCategoryCodes\r\n pub_strCategoryCodeFrom = this.reportParameters.CategoryCodeFrom\r\n pub_strCategoryCodeTo = this.reportParameters.CategoryCodeTo\r\n pub_blnSelectGradeLevels = this.reportParameters.SelectGradeLevels\r\n pub_strGradeLevelRankFrom = this.reportParameters.GradeLevelRankFrom\r\n pub_strGradeLevelRankTo = this.reportParameters.GradeLevelRankTo\r\n pub_strHistoryCodesToTallyIds = this.historyCodesToTallyIds;\r\n pub_strHistoryCodesToTally = this.historyCodesToTally;\r\n\r\n pub_blnCount1PerDay = this.reportParameters.Count1Day;\r\n pub_blnSplitABDays = this.reportParameters.SplitABDays;\r\n pub_strHistoryPeriodsToTally = \"\";\r\n pub_blnOnlyPeriodsforEachSection = this.reportParameters.OnlyPeriodsforEachSection;\r\n\r\n pub_blnSelectHistoryCountMinMax = this.reportParameters.HistoryMinMax;\r\n pub_intHistoryCountMin = this.reportParameters.SelectHistoryCountMin;\r\n pub_intHistoryCountMax = this.reportParameters.SelectHistoryCountMax;\r\n\r\n pub_blnTallyTardies = this.reportParameters.TallyTardies;\r\n pub_strTallyTardiesCodesIds = this.tallyTardiesCodesIds;\r\n pub_strTallyTardiesCodes = this.tallyTardiesCodes;\r\n\r\n pub_blnDaysFullHalfSelect = this.reportParameters.DaysFullHalf;\r\n pub_blnFullDay = this.reportParameters.FullDay;\r\n pub_blnHalfDay = this.reportParameters.HalfDay;\r\n pub_strDayFullHalfCode = dayFullHalfCode;\r\n pub_intDaysCountMin = this.reportParameters.DaysCountMin;\r\n pub_intDaysCountMax = this.reportParameters.DaysCountMax;\r\n pub_blnTodaysCurrentTally = this.reportParameters.TodaysCurrentTally;\r\n pub_strTodaysCodesToTallyIds = todayCodesToTallyIds;\r\n pub_strTodaysCodesToTally = todayCodesToTally;\r\n pub_blnCurrentMinMax = this.reportParameters.CurrentMinMax;\r\n pub_intCurrentCodesTallyCountMin = this.reportParameters.CurrentCodesTallyCountMin;\r\n pub_intCurrentCodesTallyCountMax = this.reportParameters.CurrentCodesTallyCountMax;\r\n pub_blnDoubleSpaceAfterStudentName = this.reportParameters.DoubleSpaceAfterStudentName\r\n pub_blnShowHistoryRecords = this.reportParameters.ShowHistoryRecords;\r\n pub_blnShowOnlySelectedRecords = this.reportParameters.OnlySelectedRecords;\r\n pub_blnShowComments = this.reportParameters.ShowComments\r\n pub_blnShowCurrentAtndSteps = this.reportParameters.ShowCurrentAtndSteps;\r\n pub_blnIgnoreAttendance = this.reportParameters.IgnoreAttendance;\r\n pub_blnNotEnrolled = this.reportParameters.MarkNoEnrollment;\r\n pub_blnIncludeAllAbsences = this.reportParameters.IncludeAllAbsences;\r\n pub_blnConsecutiveDays = false;\r\n\r\n\r\n*/","\r\n
\r\n

{{report.Description}}

\r\n
\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{result.LongDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Per {{element.Period}} Term {{element.TermCode}} Subject {{element.SubjectCode}}Sec{{element.Section}} Title {{element.AbbreviatedTitle}} Teacher Name{{element.TeacherName}} #Std{{element.StudentCount}} Days{{element.DaysGroupDescription}}
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
Selection & Options:
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
From:To:
\r\n \r\n \r\n Select on History Dates\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Select on Residency Codes\r\n \r\n \r\n \r\n \r\n \r\n {{residencyCode.CodeDescription}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{residencyCode.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Select on Category Codes\r\n \r\n \r\n \r\n \r\n {{categoryCode.CodeDescription}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{categoryCode.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n Select on Grade Levels\r\n \r\n \r\n \r\n \r\n {{gradelevel.CodeDescription}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{gradelevel.CodeDescription}}\r\n \r\n \r\n \r\n \r\n
\r\n History Codes to Tally\r\n \r\n \r\n
\r\n \r\n \r\n {{attCode.TextField}}\r\n \r\n
\r\n
\r\n Show Total Hours\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n Include all absences on days that have selected codes\r\n \r\n \r\n Only include absences that match selected codes\r\n \r\n \r\n\r\n \r\n
\r\n Periods to Tally\r\n \r\n
\r\n \r\n \r\n \r\n Only Periods for Each Class‑Section\r\n \r\n \r\n All Periods for Each Student\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Count 1/day\r\n \r\n \r\n Split A/B Days\r\n \r\n\r\n
\r\n \r\n Select on Min/Max for above Tally\r\n \r\n \r\n \r\n \r\n \r\n To\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Tally Tardies\r\n \r\n
\r\n \r\n \r\n {{attCode.TextField}}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Days (Full/Half) Select Codes\r\n \r\n \r\n
\r\n \r\n {{attCode.TextField}}\r\n \r\n
\r\n\r\n
\r\n \r\n FullDay\r\n \r\n HalfDay\r\n \r\n \r\n \r\n \r\n To\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Today's Current Codes Tally\r\n \r\n \r\n
\r\n \r\n {{attCode.TextField}}\r\n \r\n
\r\n
\r\n \r\n Select on Min/Max for above Tally\r\n \r\n \r\n \r\n \r\n \r\n To\r\n \r\n \r\n \r\n
\r\n \r\n Double‑space (after Student Name)\r\n \r\n \r\n
\r\n \r\n Show History Records\r\n \r\n \r\n \r\n Only for Selected Records\r\n \r\n
\r\n \r\n Show Comments\r\n \r\n \r\n\r\n
\r\n \r\n Ignore Attendance prior to Student's current ReInstate Date\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n \r\n \r\n\r\n","import { Component, OnInit, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { UserPreferencesService } from '../../../../shared-components/user-preferences/user-preferences.service';\r\nimport { SchoolYearSettings } from '../../../../shared-components/year/school-year-settings.model';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { formatDate } from '@angular/common';\r\nimport { CourseTerm } from '../../../../student360/student-schedule/course-term.model';\r\nimport * as moment from 'moment';\r\nimport { ReportV9 } from '../../models/report-v9.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { ReportQueueComponent } from '../../report-queue/report-queue.component';\r\nimport { ReportParameterV9 } from '../../models/report-parameter-v9.model';\r\nimport { LookupService } from '../../../../shared-components/lookup/lookup.service';\r\nimport { DataSource } from '../../models/data-source.model';\r\nimport { AttendanceHistoryByStudentPreferences, ReportParameters } from './attendance-history-by-class.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-attendance-history-by-class',\r\n templateUrl: './attendance-history-by-class.component.html',\r\n styleUrls: ['./attendance-history-by-class.component.css'],\r\n})\r\nexport class AttendanceHistoryByClassComponent implements OnInit, OnDestroy {\r\n subscriptions: Subscription[] = [];\r\n schoolYearSettings: SchoolYearSettings;\r\n userPreferences: AttendanceHistoryByStudentPreferences;\r\n reportParameter = new ReportParameterV9();\r\n dialogRef: MatDialogRef;\r\n term: CourseTerm;\r\n dataSource: MatTableDataSource;\r\n gridColumns: string[] = ['SelectAll', 'Period', 'TermCode', 'SubjectCode', 'Section', 'AbbreviatedTitle', 'TeacherName', 'StudentCount', 'DaysGroupDescription'];\r\n report: ReportV9;\r\n ErrorCount: 0;\r\n parameters = [];\r\n param = [];\r\n reportParameters = new ReportParameters();\r\n // ERROR HANDLING\r\n // form: Form;\r\n errors: ErrorList[] = [];\r\n public numberMask = {};\r\n showRun = false;\r\n reportType: number;\r\n reportName: string;\r\n workflowReport = false;\r\n inDebugMode = false;\r\n\r\n @ViewChild('ReportTitle', { read: ElementRef }) reportTitle: ElementRef;\r\n @ViewChild('Select', { read: ElementRef }) select: ElementRef;\r\n @ViewChild('FromPeriod', { read: ElementRef }) fromPeriod: ElementRef;\r\n @ViewChild('ToPeriod', { read: ElementRef }) toPeriod: ElementRef;\r\n @ViewChild('HistoryFrom', { read: ElementRef }) historyFrom: ElementRef;\r\n @ViewChild('HistoryTo', { read: ElementRef }) historyTo: ElementRef;\r\n @ViewChild('ResidencyCodeFrom', { read: ElementRef }) residencyCodeFrom: ElementRef;\r\n @ViewChild('ResidencyCodeTo', { read: ElementRef }) residencyCodeTo: ElementRef;\r\n @ViewChild('CategoryCodeFrom', { read: ElementRef }) categoryCodeFrom: ElementRef;\r\n @ViewChild('CategoryCodeTo', { read: ElementRef }) categoryCodeTo: ElementRef;\r\n @ViewChild('GradeLevelFrom', { read: ElementRef }) gradeLevelFrom: ElementRef;\r\n @ViewChild('GradeLevelTo', { read: ElementRef }) gradeLevelTo: ElementRef;\r\n @ViewChild('HistoryCountMin', { read: ElementRef }) historyCountMin: ElementRef;\r\n @ViewChild('HistoryCountMax', { read: ElementRef }) historyCountMax: ElementRef;\r\n @ViewChild('CurrentCodesTallyCountMin', { read: ElementRef }) currentCodesTallyCountMin: ElementRef;\r\n @ViewChild('CurrentCodesTallyCountMax', { read: ElementRef }) currentCodesTallyCountMax: ElementRef;\r\n @ViewChild('FullDay', { read: ElementRef }) fullDay: ElementRef;\r\n @ViewChild('DaysCountMin', { read: ElementRef }) daysCountMin: ElementRef;\r\n @ViewChild('DaysCountMax', { read: ElementRef }) daysCountMax: ElementRef;\r\n\r\n isDataExist = false;\r\n\r\n historyCodesToTally: DataSource[] = [];\r\n tallyTardiesCodes: DataSource[] = [];\r\n todaysCodesToTally: DataSource[] = [];\r\n daysCodes: DataSource[] = [];\r\n\r\n historyCodesToTallyIds = ''; // string; // number[] = [];\r\n tallyTardiesCodesIds: string; // number[] = [];\r\n todaysCodesToTallyIds: string; // number[] = [];\r\n siteSectionIds = '';\r\n\r\n dayFullHalfCode: string;\r\n userPreferencePageName: string; // must match what's in UserPreferences DTO\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n AttendanceHistoryByClassDialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private reportingService: ReportingService,\r\n private lookupService: LookupService,\r\n ) {\r\n this.dialogRef = AttendanceHistoryByClassDialogRef;\r\n this.report = data.Report;\r\n }\r\n\r\n ngOnInit() {\r\n // NOTE: this is a C1 report and if user selects > 5 classes it will go to workflow, otherwise it will be a student attachment\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.report);\r\n // }\r\n\r\n this.inDebugMode = this.reportingService.inDebugMode;\r\n this.report.ReportName = this.reportName;\r\n this.numberMask = this.reportingService.getNumberMask();\r\n this.reportName = 'CreateAttendanceHistoryByClass';\r\n this.userPreferencePageName = '/HistoryByClassCO.aspx'; // '/AttendanceHistoryByClass.aspx'; // must match what's in UserPreferences DTO\r\n this.reportParameter.ReportTitle = 'Attendance History By Class';\r\n this.reportType = 2; // this.userPreferences.pub_intReportType;\r\n this.getLookups(); // DEV NOTE: GETTING PREFERENCES IN getLookups()\r\n this.getSchoolYearSettings();\r\n this.getTerms();\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n getLookups() {\r\n\r\n this.subscriptions.push(\r\n // Residency Codes\r\n this.reportingService.getResidencyCodesLookup().subscribe(lookups => {\r\n this.reportParameters.ResidencyCodes = lookups;\r\n })\r\n\r\n );\r\n\r\n this.subscriptions.push(\r\n // Category Codes\r\n this.reportingService.getEnrollmentCategoriesLookup().subscribe(lookups => {\r\n this.reportParameters.CategoryCodes = lookups;\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n // Grade Levels\r\n this.reportingService.getAllGradeLevelsLookup().subscribe(lookups => {\r\n this.reportParameters.GradeLevels = lookups;\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n // Attendance Codes\r\n this.reportingService.getAttendanceCodesLookup(false, 0).subscribe(lookups => {\r\n this.reportParameters.AttendanceCodes = lookups;\r\n this.getUserPreferences(); // we need to get the attendance code lookups before calling this\r\n\r\n this.reportingService.populateDataSourceFromLookup(this.historyCodesToTally, this.reportParameters.AttendanceCodes);\r\n this.reportingService.populateDataSourceFromLookup(this.tallyTardiesCodes, this.reportParameters.AttendanceCodes);\r\n this.reportingService.populateDataSourceFromLookup(this.daysCodes, this.reportParameters.AttendanceCodes);\r\n this.reportingService.populateDataSourceFromLookup(this.todaysCodesToTally, this.reportParameters.AttendanceCodes);\r\n })\r\n\r\n );\r\n\r\n }\r\n\r\n getSchoolYearSettings() {\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(data => {\r\n this.schoolYearSettings = data;\r\n this.reportParameter.isValueChange = false;\r\n this.reportParameter.isReportList = false;\r\n this.reportParameter.PrintDate = formatDate(new Date, 'MM/dd/yyyy', 'en-US');\r\n this.reportParameter.AttendanceDate = moment(this.yearService.defaultYear.CurrentAttendanceDate).format('MM/DD/YYYY');\r\n this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n // const weekDay = moment.utc(this.reportParameter.AttendanceDate, 'MM/DD/YYYY').toDate().getDay();\r\n\r\n this.reportParameter.TermId = 0; // Default to All\r\n this.refreshGrid();\r\n });\r\n }\r\n\r\n getUserPreferences() {\r\n this.userPreferencesService.getUserPreferences(0, this.userPreferencePageName).subscribe(results => {\r\n\r\n if (!results) {\r\n return;\r\n }\r\n\r\n this.userPreferences = JSON.parse(results[0]);\r\n\r\n // if (this.reportingService.hasStringValueNotEmpty(this.userPreferences.pub_strReportTitle)) {\r\n // this.reportParameter.ReportTitle = this.userPreferences.pub_strReportTitle;\r\n // }\r\n\r\n // SELECT ON HISTORY DATES\r\n this.reportParameters.SelectHistoryDates = this.userPreferences.pub_blnSelectHistoryDates;\r\n if (this.userPreferences.pub_datHistoryFrom != null && this.userPreferences.pub_datHistoryFrom != undefined) {\r\n this.reportParameters.HistoryFrom = this.reportingService.getMonthDayYear(this.userPreferences.pub_datHistoryFrom);\r\n }\r\n\r\n if (this.userPreferences.pub_datHistoryTo != null && this.userPreferences.pub_datHistoryTo != undefined) {\r\n this.reportParameters.HistoryTo = this.reportingService.getMonthDayYear(this.userPreferences.pub_datHistoryTo);\r\n }\r\n else {\r\n this.reportParameters.HistoryTo = this.reportingService.getMonthDayYear(new Date());\r\n }\r\n\r\n\r\n // SELECT ON RESIDENCY CODES\r\n this.reportParameters.SelectResidencyCodes = this.userPreferences.pub_blnSelectResidencyCodes;\r\n if (this.reportParameters.SelectResidencyCodes) {\r\n this.reportParameters.ResidencyCodeFrom = this.userPreferences.pub_strResidencyCodeFrom;\r\n this.reportParameters.ResidencyCodeTo = this.userPreferences.pub_strResidencyCodeTo;\r\n }\r\n\r\n // SELECT ON CATEGORY CODES\r\n this.reportParameters.SelectCategoryCodes = this.userPreferences.pub_blnSelectCategoryCodes;\r\n if (this.reportParameters.SelectCategoryCodes) {\r\n this.reportParameters.CategoryCodeFrom = this.userPreferences.pub_strCategoryCodeFrom;\r\n this.reportParameters.CategoryCodeTo = this.userPreferences.pub_strCategoryCodeTo;\r\n }\r\n\r\n this.reportParameters.SelectGradeLevels = this.userPreferences.pub_blnSelectGradeLevels;\r\n this.reportParameters.GradeLevelRankFrom = this.userPreferences.pub_strGradeLevelRankFrom;\r\n this.reportParameters.GradeLevelRankTo = this.userPreferences.pub_strGradeLevelRankTo;\r\n\r\n this.setGradeLevelFrom();\r\n this.setGradeLevelTo();\r\n\r\n // ******* HISTORY CODES TO TALLY ******************************************\r\n this.reportingService.setSelectedItemsFromUserPrefereneces(this.userPreferences.pub_strHistoryCodesToTally, this.historyCodesToTally);\r\n this.reportParameters.HistoryMinMax = this.userPreferences.pub_blnSelectHistoryCountMinMax;\r\n this.reportParameters.HistoryCountMin = this.userPreferences.pub_intHistoryCountMin.toString();\r\n this.reportParameters.HistoryCountMax = this.userPreferences.pub_intHistoryCountMax.toString();\r\n\r\n\r\n this.reportParameters.TallyTardies = this.userPreferences.pub_blnTallyTardies;\r\n this.tallyTardiesCodesIds = this.userPreferences.pub_strTallyTardiesCodesIds;\r\n\r\n if (this.userPreferences.pub_blnIncludeAllAbsences) {\r\n this.reportParameters.IncludeAllAbsences = true;\r\n }\r\n else {\r\n this.reportParameters.IncludeAllAbsences = false;\r\n }\r\n\r\n\r\n\r\n // PERIODS TO TALLY\r\n\r\n if (this.userPreferences.pub_blnOnlyPeriodsforEachSection) {\r\n this.reportParameters.OnlyPeriodsforEachSection = true;\r\n }\r\n else {\r\n this.reportParameters.OnlyPeriodsforEachSection = false;\r\n }\r\n\r\n this.reportParameters.Count1Day = this.userPreferences.pub_blnCount1PerDay;\r\n this.reportParameters.SplitABDays = this.userPreferences.pub_blnSplitABDays;\r\n\r\n // TALLY TARDIES\r\n\r\n this.historyCodesToTallyIds = this.userPreferences.pub_strHistoryCodesToTallyIds;\r\n this.reportingService.setSelectedItemsFromUserPrefereneces(this.userPreferences.pub_strTallyTardiesCodes, this.tallyTardiesCodes);\r\n\r\n\r\n // ******* DAYS FULL/HALF SELECT CODES ******************************************\r\n\r\n if (this.userPreferences.pub_blnDaysFullHalfSelect) {\r\n this.reportParameters.DaysFullHalf = this.userPreferences.pub_blnDaysFullHalfSelect;\r\n this.reportingService.setSelectedItemsFromUserPrefereneces(this.userPreferences.pub_strDayFullHalfCode, this.daysCodes);\r\n this.reportParameters.FullDay = this.userPreferences.pub_blnFullDay;\r\n this.reportParameters.HalfDay = this.userPreferences.pub_blnHalfDay;\r\n this.dayFullHalfCode = this.userPreferences.pub_strDayFullHalfCode;\r\n }\r\n else {\r\n this.reportParameters.DaysFullHalf = false;\r\n this.reportParameters.FullDay = false;\r\n this.reportParameters.HalfDay = false;\r\n }\r\n this.reportParameters.DaysCountMin = this.userPreferences.pub_intDaysCountMin;\r\n this.reportParameters.DaysCountMax = this.userPreferences.pub_intDaysCountMax;\r\n\r\n // ******* TODAY'S CURRENT CODES TALLY ******************************************\r\n\r\n if (this.userPreferences.pub_blnTodaysCurrentTally) {\r\n this.reportParameters.TodaysCurrentTally = this.userPreferences.pub_blnTodaysCurrentTally;\r\n this.reportingService.setSelectedItemsFromUserPrefereneces(this.userPreferences.pub_strTodaysCodesToTally, this.todaysCodesToTally);\r\n this.todaysCodesToTallyIds = this.userPreferences.pub_strTodaysCodesToTallyIds;\r\n }\r\n else {\r\n this.reportParameters.TodaysCurrentTally = false;\r\n }\r\n\r\n this.reportParameters.CurrentMinMax = this.userPreferences.pub_blnCurrentMinMax;\r\n this.reportParameters.CurrentCodesTallyCountMin = this.userPreferences.pub_intCurrentCodesTallyCountMin;\r\n this.reportParameters.CurrentCodesTallyCountMax = this.userPreferences.pub_intCurrentCodesTallyCountMax;\r\n\r\n\r\n // ******* CHECKBOXES AT END ******************************************\r\n this.reportParameters.DoubleSpaceAfterStudentName = this.userPreferences.pub_blnDoubleSpaceAfterStudentName;\r\n this.reportParameters.ShowHistoryRecords = this.userPreferences.pub_blnShowHistoryRecords;\r\n this.reportParameters.ShowOnlySelectedRecords = this.userPreferences.pub_blnShowOnlySelectedRecords;\r\n this.reportParameters.ShowComments = this.userPreferences.pub_blnShowComments;\r\n if (this.userPreferences.pub_blnIgnoreAttendance) {\r\n this.reportParameters.IgnoreAttendance = true;\r\n }\r\n else {\r\n this.reportParameters.IgnoreAttendance = false;\r\n }\r\n\r\n });\r\n }\r\n\r\n saveUserPreferences() {\r\n\r\n const UserPreferencesObj = this.userPreferences;\r\n UserPreferencesObj.pub_strReportTitle = this.reportParameter.ReportTitle;\r\n UserPreferencesObj.pub_intReportType = this.reportType; // C1\r\n UserPreferencesObj.pub_blnParentInfo = false;\r\n UserPreferencesObj.pub_strStudentSelectionStatus = 'Active';\r\n UserPreferencesObj.pub_blnSelectHistoryDates = this.reportParameters.SelectHistoryDates;\r\n if (this.reportParameters.SelectHistoryDates) {\r\n UserPreferencesObj.pub_datHistoryFrom = this.reportParameters.HistoryFrom;\r\n UserPreferencesObj.pub_datHistoryTo = this.reportParameters.HistoryTo;\r\n }\r\n else {\r\n UserPreferencesObj.pub_datHistoryFrom = null;\r\n UserPreferencesObj.pub_datHistoryTo = null;\r\n }\r\n UserPreferencesObj.pub_blnSelectResidencyCodes = this.reportParameters.SelectResidencyCodes;\r\n UserPreferencesObj.pub_strResidencyCodeFrom = this.reportParameters.ResidencyCodeFrom;\r\n UserPreferencesObj.pub_strResidencyCodeTo = this.reportParameters.ResidencyCodeTo;\r\n UserPreferencesObj.pub_blnSelectCategoryCodes = this.reportParameters.SelectCategoryCodes;\r\n UserPreferencesObj.pub_strCategoryCodeFrom = this.reportParameters.CategoryCodeFrom;\r\n UserPreferencesObj.pub_strCategoryCodeTo = this.reportParameters.CategoryCodeTo;\r\n UserPreferencesObj.pub_blnSelectGradeLevels = this.reportParameters.SelectGradeLevels;\r\n UserPreferencesObj.pub_strGradeLevelRankFrom = this.reportParameters.GradeLevelRankFrom;\r\n UserPreferencesObj.pub_strGradeLevelRankTo = this.reportParameters.GradeLevelRankTo;\r\n UserPreferencesObj.pub_strHistoryCodesToTallyIds = this.historyCodesToTallyIds;\r\n UserPreferencesObj.pub_strHistoryCodesToTally = this.reportingService.getSelectedItemsAsDelimitedString(this.historyCodesToTally, true, '', true);\r\n\r\n UserPreferencesObj.pub_blnCount1PerDay = this.reportParameters.Count1Day;\r\n UserPreferencesObj.pub_blnSplitABDays = this.reportParameters.SplitABDays;\r\n UserPreferencesObj.pub_strHistoryPeriodsToTally = '';\r\n UserPreferencesObj.pub_blnOnlyPeriodsforEachSection = this.reportParameters.OnlyPeriodsforEachSection;\r\n\r\n UserPreferencesObj.pub_blnSelectHistoryCountMinMax = this.reportParameters.HistoryMinMax;\r\n UserPreferencesObj.pub_intHistoryCountMin = this.reportParameters.HistoryCountMin;\r\n UserPreferencesObj.pub_intHistoryCountMax = this.reportParameters.HistoryCountMax;\r\n\r\n UserPreferencesObj.pub_blnTallyTardies = this.reportParameters.TallyTardies;\r\n UserPreferencesObj.pub_strTallyTardiesCodesIds = this.tallyTardiesCodesIds;\r\n UserPreferencesObj.pub_strTallyTardiesCodes = this.reportingService.getSelectedItemsAsDelimitedString(this.tallyTardiesCodes, true, '', true);\r\n\r\n UserPreferencesObj.pub_blnDaysFullHalfSelect = this.reportParameters.DaysFullHalf;\r\n UserPreferencesObj.pub_blnFullDay = this.reportParameters.FullDay;\r\n UserPreferencesObj.pub_blnHalfDay = this.reportParameters.HalfDay;\r\n UserPreferencesObj.pub_strDayFullHalfCode = this.dayFullHalfCode;\r\n UserPreferencesObj.pub_intDaysCountMin = this.reportParameters.DaysCountMin;\r\n UserPreferencesObj.pub_intDaysCountMax = this.reportParameters.DaysCountMax;\r\n UserPreferencesObj.pub_blnTodaysCurrentTally = this.reportParameters.TodaysCurrentTally;\r\n UserPreferencesObj.pub_strTodaysCodesToTallyIds = this.reportingService.hasStringValueNotEmpty(this.todaysCodesToTallyIds) ? this.todaysCodesToTallyIds : '';\r\n UserPreferencesObj.pub_strTodaysCodesToTally = this.reportingService.getSelectedItemsAsDelimitedString(this.todaysCodesToTally, true, '', true);\r\n UserPreferencesObj.pub_blnCurrentMinMax = this.reportParameters.CurrentMinMax;\r\n UserPreferencesObj.pub_intCurrentCodesTallyCountMin = this.reportParameters.CurrentCodesTallyCountMin;\r\n UserPreferencesObj.pub_intCurrentCodesTallyCountMax = this.reportParameters.CurrentCodesTallyCountMax;\r\n UserPreferencesObj.pub_blnDoubleSpaceAfterStudentName = this.reportParameters.DoubleSpaceAfterStudentName;\r\n UserPreferencesObj.pub_blnShowHistoryRecords = this.reportParameters.ShowHistoryRecords;\r\n UserPreferencesObj.pub_blnShowOnlySelectedRecords = this.reportParameters.ShowOnlySelectedRecords;\r\n UserPreferencesObj.pub_blnShowComments = this.reportParameters.ShowComments;\r\n UserPreferencesObj.pub_blnShowCurrentAtndSteps = false;\r\n UserPreferencesObj.pub_blnIgnoreAttendance = this.reportParameters.IgnoreAttendance;\r\n UserPreferencesObj.pub_blnNotEnrolled = false;\r\n UserPreferencesObj.pub_blnIncludeAllAbsences = this.reportParameters.IncludeAllAbsences;\r\n UserPreferencesObj.pub_blnConsecutiveDays = false;\r\n\r\n const xmlStream: string[] = [];\r\n xmlStream.push(JSON.stringify(UserPreferencesObj));\r\n\r\n this.userPreferencesService.saveUserPreferences(0, this.userPreferencePageName, xmlStream, 0, '').subscribe(response => { }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n\r\n }\r\n\r\n getTerms() {\r\n this.reportingService.getTermsforCourses(0, this.yearService.defaultYear.SiteYearId).subscribe(data => {\r\n this.reportParameter.Terms = data.filter(function (element) { return (element.TermTypeId != 2); });\r\n this.term = new CourseTerm();\r\n this.term.Id = 0;\r\n this.term.LongDescription = ' All Terms';\r\n this.reportParameter.Terms.push(this.term);\r\n });\r\n }\r\n\r\n\r\n changeValue() {\r\n this.reportParameter.isValueChange = true;\r\n if (this.reportParameter.FromPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.FromPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n }\r\n if (this.reportParameter.ToPeriod > this.schoolYearSettings.MaximumPeriodsPerDay || this.reportParameter.ToPeriod < this.schoolYearSettings.MinumumPeriodPerDay) {\r\n this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n }\r\n }\r\n\r\n cancelShowReportParameters() {\r\n this.dialogRef.close();\r\n }\r\n\r\n refreshGrid() {\r\n this.errors = [];\r\n if ((this.reportParameter.FromPeriod == undefined || this.reportParameter.FromPeriod == 0 || this.reportParameter.FromPeriod == null) && $.isNumeric(this.reportParameter.FromPeriod) == false) {\r\n this.errors.push({\r\n fieldName: 'From Period',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.fromPeriod\r\n });\r\n }\r\n if ((this.reportParameter.ToPeriod == undefined || this.reportParameter.ToPeriod == 0 || this.reportParameter.ToPeriod == null) && $.isNumeric(this.reportParameter.ToPeriod) == false) {\r\n this.errors.push({\r\n fieldName: 'To Period',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.toPeriod\r\n });\r\n }\r\n\r\n\r\n if (this.errors.length == 0) {\r\n this.reportParameter.ReportGridData = [];\r\n this.reportingService.getTeacherPreviewGridData(this.yearService.defaultYear.SiteYearId, this.reportParameter.TermId, moment.utc(this.reportParameter.AttendanceDate, 'MM-DD-YYYY HH:mm a').toDate(), this.reportParameter.FromPeriod, this.reportParameter.ToPeriod).subscribe(results => {\r\n\r\n // console.log(results);\r\n\r\n this.reportParameter.ReportGridData = results;\r\n if (this.reportParameter.ReportGridData.length > 0) {\r\n this.isDataExist = true;\r\n }\r\n else {\r\n this.isDataExist = false;\r\n }\r\n this.reportParameter.isValueChange = false;\r\n this.dataSource = new MatTableDataSource(this.reportParameter.ReportGridData);\r\n this.reportParameter.selectAllReportGridData = true;\r\n this.selectAll(true);\r\n });\r\n }\r\n }\r\n\r\n selectAll(value) {\r\n this.reportParameter.ReportGridData.forEach(o => {\r\n o.Select = value;\r\n }\r\n );\r\n }\r\n\r\n selectClass() {\r\n const result = this.reportParameter.ReportGridData.filter(o => o.Select == false);\r\n if (result.length > 0) {\r\n this.reportParameter.selectAllReportGridData = false;\r\n }\r\n else if (result.length == 0) {\r\n this.reportParameter.selectAllReportGridData = true;\r\n }\r\n }\r\n\r\n checkErrors() {\r\n this.errors = [];\r\n\r\n const selectedGridData = this.reportParameter.ReportGridData.filter(o => o.Select);\r\n if (selectedGridData.length == 0) {\r\n this.errors.push({\r\n fieldName: '',\r\n errorMsg: 'No Classes Selected!',\r\n fieldRef: this.select\r\n });\r\n }\r\n\r\n if (selectedGridData.length > 0) { // change back to > 5 if issue with student attachment is addressed, JS always went to workflow\r\n this.workflowReport = true;\r\n }\r\n // else {\r\n // this.workflowReport = false;\r\n // }\r\n\r\n if (this.reportParameter.isValueChange) {\r\n this.errors.push({\r\n fieldName: '',\r\n errorMsg: 'Selection Criteria Changed Please click Update Display button again!',\r\n fieldRef: null\r\n });\r\n }\r\n\r\n // Report Title\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameter.ReportTitle)) {\r\n this.errors.push({\r\n fieldName: 'Report Title',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.reportTitle\r\n });\r\n }\r\n\r\n // History Dates\r\n\r\n if (this.reportParameters.SelectHistoryDates && (this.reportParameters.HistoryFrom == undefined || this.reportParameters.HistoryFrom == null)) {\r\n this.errors.push({\r\n fieldName: 'History From',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.historyFrom\r\n });\r\n }\r\n\r\n if (this.reportParameters.SelectHistoryDates && (this.reportParameters.HistoryTo == undefined || this.reportParameters.HistoryTo == null)) {\r\n this.errors.push({\r\n fieldName: 'History To',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.historyTo\r\n });\r\n }\r\n\r\n // Residency Codes\r\n\r\n if (this.reportParameters.SelectResidencyCodes) {\r\n if (this.reportParameters.ResidencyCodeFrom == undefined || this.reportParameters.ResidencyCodeFrom.trim() == '' || this.reportParameters.ResidencyCodeFrom == null) {\r\n this.errors.push({\r\n fieldName: 'Residency Code From',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.residencyCodeFrom\r\n });\r\n }\r\n if (this.reportParameters.ResidencyCodeTo == undefined || this.reportParameters.ResidencyCodeTo.trim() == '' || this.reportParameters.ResidencyCodeTo == null) {\r\n this.errors.push({\r\n fieldName: 'Residency Code To',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.residencyCodeTo\r\n });\r\n }\r\n }\r\n\r\n // Category Codes\r\n\r\n if (this.reportParameters.SelectCategoryCodes) {\r\n if (this.reportParameters.CategoryCodeFrom == undefined || this.reportParameters.CategoryCodeFrom.trim() == '' || this.reportParameters.CategoryCodeFrom == null) {\r\n this.errors.push({\r\n fieldName: 'Category Code From',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.categoryCodeFrom\r\n });\r\n }\r\n if (this.reportParameters.CategoryCodeTo == undefined || this.reportParameters.CategoryCodeTo.trim() == '' || this.reportParameters.CategoryCodeTo == null) {\r\n this.errors.push({\r\n fieldName: 'Category Code To',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.categoryCodeTo\r\n });\r\n }\r\n }\r\n\r\n // Grade Levels\r\n\r\n if (this.reportParameters.SelectGradeLevels) {\r\n if (this.reportParameters.GradeLevelFrom == undefined || this.reportParameters.GradeLevelFrom.trim() == '' || this.reportParameters.GradeLevelFrom == null) {\r\n this.errors.push({\r\n fieldName: 'Grade Level From',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.gradeLevelFrom\r\n });\r\n }\r\n if (this.reportParameters.GradeLevelTo == undefined || this.reportParameters.GradeLevelTo.trim() == '' || this.reportParameters.GradeLevelTo == null) {\r\n this.errors.push({\r\n fieldName: 'Grade Level To',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.gradeLevelTo\r\n });\r\n }\r\n }\r\n\r\n // Tally Tardies\r\n\r\n if (this.reportParameters.TallyTardies) {\r\n if (this.reportingService.getSelectedItemsAsDelimitedString(this.tallyTardiesCodes, true, '', true) == '') {\r\n this.errors.push({\r\n fieldName: null,\r\n errorMsg: 'You must select at least one code for Tally Tardies',\r\n fieldRef: null\r\n });\r\n }\r\n }\r\n\r\n // history min/max\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('this.reportParameters.HistoryMinMax');\r\n // console.log(this.reportParameters.HistoryMinMax);\r\n // console.log('this.reportParameters.HistoryCountMin');\r\n // console.log(this.reportParameters.HistoryCountMin);\r\n // console.log('this.reportParameters.HistoryCountMax');\r\n // console.log(this.reportParameters.HistoryCountMax);\r\n\r\n // }\r\n\r\n if (this.reportParameters.HistoryMinMax) {\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameters.HistoryCountMin)) {\r\n this.errors.push({\r\n fieldName: 'History Count Min',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.historyCountMin\r\n });\r\n }\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameters.HistoryCountMax)) {\r\n this.errors.push({\r\n fieldName: 'History Count Max',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.historyCountMax\r\n });\r\n }\r\n\r\n if (this.reportingService.minIsGreaterThanMax(this.reportParameters.HistoryCountMin, this.reportParameters.HistoryCountMax)) {\r\n this.errors.push({\r\n fieldName: 'History Count Min',\r\n errorMsg: 'Min must not be greater than Max',\r\n fieldRef: this.historyCountMin\r\n });\r\n\r\n }\r\n\r\n } // END history min/max\r\n\r\n // Days (Full/Half)\r\n\r\n if (this.reportParameters.DaysFullHalf) {\r\n if (this.reportingService.getSelectedItemsAsDelimitedString(this.daysCodes, true, '', true) == '') {\r\n this.errors.push({\r\n fieldName: null, // 'Days (Full/Half)',\r\n errorMsg: 'You must select at least one code for Days (Full/Half)',\r\n fieldRef: null // this.daysFullHalfSelect\r\n });\r\n }\r\n }\r\n\r\n\r\n if (this.reportParameters.DaysFullHalf) {\r\n\r\n if (this.reportParameters.FullDay == false && this.reportParameters.HalfDay == false) {\r\n this.errors.push({\r\n fieldName: 'FullDay/HalfDay',\r\n errorMsg: 'Select FullDay or HalfDay',\r\n fieldRef: this.fullDay\r\n });\r\n }\r\n\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameters.DaysCountMin)) {\r\n this.errors.push({\r\n fieldName: 'Days Count Min',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.daysCountMin\r\n });\r\n }\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameters.DaysCountMax)) {\r\n this.errors.push({\r\n fieldName: 'Days Count Max',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.daysCountMax\r\n });\r\n }\r\n\r\n\r\n if (this.reportingService.minIsGreaterThanMax(this.reportParameters.DaysCountMin, this.reportParameters.DaysCountMax)) {\r\n this.errors.push({\r\n fieldName: 'Days Count Min',\r\n errorMsg: 'Min must not be greater than Max',\r\n fieldRef: this.daysCountMin\r\n });\r\n\r\n // }\r\n\r\n } // END current tally min/max\r\n\r\n // Today's Current Codes Tally\r\n\r\n if (this.reportParameters.TodaysCurrentTally) {\r\n if (this.reportingService.getSelectedItemsAsDelimitedString(this.todaysCodesToTally, true, '', true) == '') {\r\n this.errors.push({\r\n fieldName: null,\r\n errorMsg: 'You must select at least one code for Today`s Current Codes Tally',\r\n fieldRef: null\r\n });\r\n }\r\n }\r\n\r\n if (this.reportParameters.CurrentMinMax) {\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameters.CurrentCodesTallyCountMin)) {\r\n this.errors.push({\r\n fieldName: 'Tally Count Min',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.currentCodesTallyCountMin\r\n });\r\n }\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameters.CurrentCodesTallyCountMax)) {\r\n this.errors.push({\r\n fieldName: 'Tally Count Max',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.currentCodesTallyCountMax\r\n });\r\n }\r\n\r\n if (this.reportingService.minIsGreaterThanMax(this.reportParameters.CurrentCodesTallyCountMin, this.reportParameters.CurrentCodesTallyCountMax)) {\r\n this.errors.push({\r\n fieldName: 'Tally Count Min',\r\n errorMsg: 'Min must not be greater than Max',\r\n fieldRef: this.currentCodesTallyCountMin\r\n });\r\n\r\n }\r\n\r\n } // END current tally min/max\r\n }\r\n }\r\n\r\n setReportParameters() {\r\n this.reportParameter.PrintDate = this.reportingService.getMonthDayYear(new Date()).toString();\r\n\r\n this.parameters = [];\r\n this.param = [];\r\n this.param.push({ ParamName: 'strReportSiteHeader', ParamStringValue: this.yearService.defaultYear.SchoolName });\r\n this.param.push({ ParamName: 'strReportSiteAddress', ParamStringValue: '' });\r\n this.param.push({ ParamName: 'strReportDate', ParamStringValue: ((new Date().getMonth() + 1) + '/' + new Date().getDate() + '/' + new Date().getFullYear()) });\r\n this.param.push({ ParamName: 'strReportTitle', ParamStringValue: this.reportParameter.ReportTitle });\r\n this.param.push({ ParamName: 'strSiteYearCode', ParamStringValue: this.yearService.defaultYear.SchoolCode + '' + this.yearService.defaultYear.AYIdentifier });\r\n this.param.push({ ParamName: 'strSiteTypeCode', ParamStringValue: 'HS' });\r\n this.param.push({ ParamName: 'lngSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n this.param.push({ ParamName: 'intSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n this.param.push({ ParamName: 'strUserName', ParamStringValue: ' ' + this.reportingService.currentUser.UserName });\r\n this.param.push({ ParamName: 'datCurrentAttendanceDate', ParamStringValue: ((new Date().getMonth() + 1) + '/' + new Date().getDate() + '/' + new Date().getFullYear()) });\r\n this.param.push({ ParamName: 'bytReportType', ParamStringValue: this.reportType });\r\n this.param.push({ ParamName: 'strStudentSelectionStatus', ParamStringValue: 'Active' });\r\n\r\n const selectedGridData = this.reportParameter.ReportGridData.filter(o => o.Select);\r\n let selectedSectionIds = '';\r\n for (let x = 0; x < selectedGridData.length; x++) {\r\n if (selectedSectionIds == '') {\r\n selectedSectionIds += selectedGridData[x].SiteSectionId;\r\n } else {\r\n selectedSectionIds = selectedSectionIds + ',' + selectedGridData[x].SiteSectionId;\r\n }\r\n }\r\n this.siteSectionIds = selectedSectionIds;\r\n\r\n if (this.siteSectionIds != '') {\r\n this.param.push({ ParamName: 'strSiteSectionIds', ParamStringValue: this.siteSectionIds });\r\n }\r\n\r\n // residency codes\r\n\r\n if (this.reportingService.hasStringValueNotEmpty(this.reportParameters.ResidencyCodeFrom)) {\r\n this.param.push({ ParamName: 'strResidencyCodeFrom', ParamStringValue: this.reportParameters.ResidencyCodeFrom });\r\n }\r\n\r\n if (this.reportingService.hasStringValueNotEmpty(this.reportParameters.ResidencyCodeTo)) {\r\n this.param.push({ ParamName: 'strResidencyCodeTo', ParamStringValue: this.reportParameters.ResidencyCodeTo });\r\n }\r\n\r\n // category codes\r\n\r\n if (this.reportingService.hasStringValueNotEmpty(this.reportParameters.CategoryCodeFrom)) {\r\n this.param.push({ ParamName: 'strCategoryCodeFrom', ParamStringValue: this.reportParameters.CategoryCodeFrom });\r\n }\r\n\r\n if (this.reportingService.hasStringValueNotEmpty(this.reportParameters.CategoryCodeTo)) {\r\n this.param.push({ ParamName: 'strCategoryCodeTo', ParamStringValue: this.reportParameters.CategoryCodeTo });\r\n }\r\n\r\n\r\n // grade levels\r\n\r\n if (this.reportParameters.SelectGradeLevels && this.reportingService.hasStringValueNotEmpty(this.reportParameters.GradeLevelFrom)) {\r\n this.param.push({ ParamName: 'strGradeLevelCodeFrom', ParamStringValue: this.reportParameters.GradeLevelFrom });\r\n\r\n const gradeLevelRankFrom = this.reportParameters.GradeLevelRankFrom.split(',')[0];\r\n this.param.push({ ParamName: 'strGradeLevelRankFrom', ParamStringValue: gradeLevelRankFrom });\r\n // param = param + \", {ParamName: 'strGradeLevelCodeFrom', ParamStringValue: '\" + this.reportParameters.GradeLevelsRankFrom.Code + \"'}\";\r\n // param = param + \", {ParamName: 'strGradeLevelRankFrom', ParamStringValue: '\" + this.reportParameters.GradeLevelsRankFrom.Ranking + \"'}\";\r\n }\r\n\r\n if (this.reportParameters.SelectGradeLevels && this.reportingService.hasStringValueNotEmpty(this.reportParameters.GradeLevelTo)) {\r\n this.param.push({ ParamName: 'strGradeLevelCodeTo', ParamStringValue: this.reportParameters.GradeLevelTo });\r\n const gradeLevelRankTo = this.reportParameters.GradeLevelRankTo.split(',')[0];\r\n this.param.push({ ParamName: 'strGradeLevelRankTo', ParamStringValue: gradeLevelRankTo });\r\n // param = param + \", {ParamName: 'strGradeLevelCodeTo', ParamStringValue: '\" + this.reportParameters.GradeLevelsRankTo.Code + \"'}\";\r\n // param = param + \", {ParamName: 'strGradeLevelRankTo', ParamStringValue: '\" + this.reportParameters.GradeLevelsRankTo.Ranking + \"'}\";\r\n }\r\n\r\n\r\n // select history dates\r\n\r\n if (this.reportParameters.SelectHistoryDates) {\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.reportParameters.HistoryFrom);\r\n // console.log(this.reportParameters.HistoryTo);\r\n // }\r\n\r\n // this.param.push({ ParamName: 'datHistoryDateFrom', ParamStringValue: this.reportingService.getMonthDayYear(this.reportParameters.HistoryFrom) });\r\n this.param.push({ ParamName: 'datHistoryDateFrom', ParamStringValue: ((this.reportParameters.HistoryFrom.getMonth() + 1) + '/' + this.reportParameters.HistoryFrom.getDate() + '/' + this.reportParameters.HistoryFrom.getFullYear()) });\r\n\r\n\r\n this.param.push({ ParamName: 'datHistoryDateTo', ParamStringValue: ((this.reportParameters.HistoryTo.getMonth() + 1) + '/' + this.reportParameters.HistoryTo.getDate() + '/' + this.reportParameters.HistoryTo.getFullYear()) });\r\n // this.param.push({ ParamName: 'datHistoryDateTo', ParamStringValue: this.reportParameters.HistoryTo });\r\n }\r\n\r\n this.param.push({ ParamName: 'strAttndHistoryCodesToTally', ParamStringValue: this.historyCodesToTallyIds });\r\n this.param.push({ ParamName: 'blnOnlyPeriodsEachSection', ParamStringValue: this.reportParameters.OnlyPeriodsforEachSection });\r\n this.param.push({ ParamName: 'blnCount1PerDay', ParamStringValue: this.reportParameters.Count1Day });\r\n\r\n\r\n if (this.reportParameters.HistoryMinMax && this.reportParameters.HistoryCountMin != undefined && this.reportParameters != null) {\r\n this.param.push({ ParamName: 'intHistoryCountMin', ParamStringValue: this.reportParameters.HistoryCountMin });\r\n }\r\n\r\n if (this.reportParameters.HistoryMinMax && this.reportParameters.HistoryCountMax != undefined && this.reportParameters != null) {\r\n this.param.push({ ParamName: 'intHistoryCountMax', ParamStringValue: this.reportParameters.HistoryCountMax });\r\n }\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.tallyTardiesCodesIds)) {\r\n this.tallyTardiesCodesIds = '';\r\n }\r\n\r\n this.param.push({ ParamName: 'strTardiesCodesToTally', ParamStringValue: (this.reportParameters.TallyTardies ? this.tallyTardiesCodesIds : '') });\r\n this.param.push({ ParamName: 'blnFullDay', ParamStringValue: (this.reportParameters.DaysFullHalf ? this.reportParameters.FullDay : false) });\r\n this.param.push({ ParamName: 'blnHalfDay', ParamStringValue: (this.reportParameters.DaysFullHalf ? this.reportParameters.HalfDay : false) });\r\n\r\n if (this.reportParameters.DaysFullHalf && this.dayFullHalfCode != '') {\r\n this.dayFullHalfCode = this.reportingService.getSelectedItemsAsDelimitedString(this.daysCodes, true, ',', true);\r\n this.param.push({ ParamName: 'strDayFullHalfCodes', ParamStringValue: this.dayFullHalfCode });\r\n }\r\n\r\n // days count\r\n\r\n if (this.reportParameters.DaysFullHalf && this.reportParameters.DaysCountMin != undefined && this.reportParameters.DaysCountMin != null) {\r\n this.param.push({ ParamName: 'intDaysCountMin', ParamStringValue: this.reportParameters.DaysCountMin });\r\n }\r\n\r\n if (this.reportParameters.DaysFullHalf && this.reportParameters.DaysCountMax != undefined && this.reportParameters.DaysCountMax != null) {\r\n this.param.push({ ParamName: 'intDaysCountMax', ParamStringValue: this.reportParameters.DaysCountMax });\r\n }\r\n\r\n // todays\r\n\r\n this.param.push({ ParamName: 'strTodayCodesToTally', ParamStringValue: (this.reportParameters.TodaysCurrentTally ? this.todaysCodesToTallyIds : '') });\r\n\r\n\r\n if (this.reportParameters.CurrentMinMax && this.reportParameters.CurrentCodesTallyCountMin != undefined && this.reportParameters.CurrentCodesTallyCountMin != null) {\r\n this.param.push({ ParamName: 'intTodayCountMin', ParamStringValue: this.reportParameters.CurrentCodesTallyCountMin });\r\n }\r\n if (this.reportParameters.CurrentMinMax && this.reportParameters.CurrentCodesTallyCountMax != undefined && this.reportParameters.CurrentCodesTallyCountMax != null) {\r\n this.param.push({ ParamName: 'intTodayCountMax', ParamStringValue: this.reportParameters.CurrentCodesTallyCountMax });\r\n }\r\n\r\n // checkboxes\r\n this.param.push({ ParamName: 'blnDoubleSpaceAfterStudentName', ParamStringValue: this.reportParameters.DoubleSpaceAfterStudentName });\r\n this.param.push({ ParamName: 'blnSplitABDays', ParamStringValue: this.reportParameters.SplitABDays });\r\n this.param.push({ ParamName: 'blnShowHistoryRecords', ParamStringValue: this.reportParameters.ShowHistoryRecords });\r\n this.param.push({ ParamName: 'blnShowOnlySelectedRecords', ParamStringValue: this.reportParameters.ShowOnlySelectedRecords });\r\n this.param.push({ ParamName: 'blnShowComments', ParamStringValue: this.reportParameters.ShowComments });\r\n this.param.push({ ParamName: 'blnShowCurrentAttndSteps', ParamStringValue: false });\r\n this.param.push({ ParamName: 'blnIgnoreAttendancePrior', ParamStringValue: this.reportParameters.IgnoreAttendance });\r\n this.param.push({ ParamName: 'blnIncludeAllAbsences', ParamStringValue: this.reportParameters.IncludeAllAbsences });\r\n this.param.push({ ParamName: 'blnExport', ParamStringValue: false });\r\n this.param.push({ ParamName: 'blnParentInfo', ParamStringValue: false });\r\n\r\n const stringifiedParameters = JSON.stringify(this.param);\r\n this.parameters = [];\r\n this.parameters.push(stringifiedParameters);\r\n }\r\n\r\n runClick() {\r\n this.checkErrors();\r\n if (this.errors.length == 0) {\r\n // Mayur\r\n this.getSelectedIdsAsCommaDelimitedString();\r\n this.setReportParameters();\r\n this.saveUserPreferences();\r\n if (this.workflowReport) {\r\n this.addToReportQueue();\r\n } else {\r\n this.openStudentAttachment();\r\n }\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n setGradeLevelFrom() {\r\n if (this.reportParameters.SelectGradeLevels && this.reportParameters.GradeLevelRankFrom.includes(',')) {\r\n this.reportParameters.GradeLevelFrom = this.reportParameters.GradeLevelRankFrom.split(',')[1];\r\n }\r\n }\r\n\r\n setGradeLevelTo() {\r\n if (this.reportParameters.SelectGradeLevels && this.reportParameters.GradeLevelRankTo.includes(',')) {\r\n this.reportParameters.GradeLevelTo = this.reportParameters.GradeLevelRankTo.split(',')[1];\r\n }\r\n }\r\n\r\n setGradeLevelRankFrom() {\r\n if (this.reportParameters.SelectGradeLevels && this.reportingService.hasStringValueNotEmpty(this.reportParameters.GradeLevelFrom)) {\r\n for (let x = 0; x < this.reportParameters.GradeLevels.length; x++) {\r\n if (this.reportParameters.GradeLevelFrom == this.reportParameters.GradeLevels[x].Code) {\r\n this.reportParameters.GradeLevelRankFrom = this.reportParameters.GradeLevels[x].Id + ',' + this.reportParameters.GradeLevels[x].Code;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setGradeLevelRankTo() {\r\n if (this.reportParameters.SelectGradeLevels && this.reportingService.hasStringValueNotEmpty(this.reportParameters.GradeLevelTo)) {\r\n for (let x = 0; x < this.reportParameters.GradeLevels.length; x++) {\r\n if (this.reportParameters.GradeLevelTo == this.reportParameters.GradeLevels[x].Code) {\r\n this.reportParameters.GradeLevelRankTo = this.reportParameters.GradeLevels[x].Id + ',' + this.reportParameters.GradeLevels[x].Code;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n addToReportQueue() {\r\n this.reportingService.runV9Report(this.reportName, this.reportType, this.workflowReport, this.parameters).subscribe(response => {\r\n setTimeout(() => {\r\n this.openReportQueueList();\r\n }, 500);\r\n }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n }\r\n\r\n openStudentAttachment() {\r\n this.reportingService.openStudentAttachmentReport(0, this.reportName, '', '', '', this.parameters, this.reportType);\r\n }\r\n\r\n\r\n\r\n handleCheckboxAll(attCode: DataSource, event: boolean, dataSourceArray: DataSource[]) {\r\n this.reportingService.handleCheckboxAll(attCode, dataSourceArray);\r\n }\r\n\r\n nextClick() {\r\n this.showRun = true;\r\n }\r\n\r\n prevClick() {\r\n this.showRun = false;\r\n }\r\n\r\n openReportQueueList() {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n }\r\n\r\n getSelectedIdsAsCommaDelimitedString() {\r\n this.historyCodesToTallyIds = this.reportingService.getSelectedItemsAsDelimitedString(this.historyCodesToTally, true, ',', true);\r\n this.tallyTardiesCodesIds = this.reportingService.getSelectedItemsAsDelimitedString(this.tallyTardiesCodes, true, ',', true);\r\n this.todaysCodesToTallyIds = this.reportingService.getSelectedItemsAsDelimitedString(this.todaysCodesToTally, true, ',', true);\r\n this.dayFullHalfCode = this.reportingService.getSelectedItemsAsDelimitedString(this.daysCodes, true, '', true);\r\n }\r\n}"," \r\n
\r\n

{{reportTitleInSystem}}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{result.LongDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n {{department.TextField}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n {{course.TextField}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{teacher.TextField}}\r\n \r\n \r\n \r\n
Note: Set Teacher field to All to allow selecting Department
\r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n","import { Component, OnInit, OnDestroy, ViewChild, ElementRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\nimport { UserPreferencesService } from '../../../../shared-components/user-preferences/user-preferences.service';\r\nimport { SchoolYearSettings } from '../../../../shared-components/year/school-year-settings.model';\r\nimport { ReportingService } from '../../reporting.service';\r\nimport { LoginService } from '../../../../shared-modules/login/login.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { CourseTerm } from '../../../../student360/student-schedule/course-term.model';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { StudentAttachment } from '../../../student-attachment/student-attachment.model';\r\nimport { System } from '../../../../shared-components/System';\r\nimport { ReportQueueComponent } from '../../report-queue/report-queue.component';\r\nimport { ReportParameterV9 } from '../../models/report-parameter-v9.model';\r\n// import { TeacherPreview } from '../../models/teacher-preview.model';\r\n\r\nimport { LookupService } from '../../../../shared-components/lookup/lookup.service';\r\n\r\n\r\nimport { DataSource } from '../../models/data-source.model';\r\nimport { v9ReportParameterName } from '../../reporting.service';\r\nimport { ClassroomSummary } from '../../../../classroom360/classroom-summary/models/classroom-summary.model';\r\n\r\n@Component({\r\n selector: 'app-gradebook-assignments-by-standard',\r\n templateUrl: './gradebook-assignments-by-standard.component.html',\r\n styleUrls: ['./gradebook-assignments-by-standard.component.css'],\r\n})\r\nexport class GradebookAssignmentsByStandardComponent implements OnInit, OnDestroy {\r\n dialogRef: MatDialogRef;\r\n subscriptions: Subscription[] = [];\r\n schoolYearSettings: SchoolYearSettings;\r\n reportParameter = new ReportParameterV9();\r\n term: CourseTerm;\r\n ErrorCount: 0;\r\n parameters = [];\r\n param = [];\r\n errors: ErrorList[] = [];\r\n numberMask = {};\r\n showRunButton = true;\r\n reportType: number;\r\n reportName: string;\r\n // reportTitle: string;\r\n reportTitleInSystem: string;\r\n // userPreferencePageName = '/GradebookAssignmentsByStandard.aspx'; // must match what's in UserPreferences DTO\r\n workflowReport = false;\r\n inDebugMode = false;\r\n siteSectionIds = '';\r\n siteYearId: number;\r\n courses: DataSource[] = [];\r\n selectedCourse: string;\r\n departments: DataSource[] = [];\r\n selectedDepartment: string;\r\n teacher: string;\r\n allCourses: ClassroomSummary[] = [];\r\n // userPreferences: AttendanceHistoryByStudentPreferences; // AttendanceHistoryByClassPreferences;\r\n\r\n // field refs\r\n\r\n @ViewChild('ReportTitle', { read: ElementRef, static: true }) reportTitle: ElementRef;\r\n @ViewChild('Select', { read: ElementRef }) select: ElementRef;\r\n @ViewChild('FromPeriod', { read: ElementRef }) fromPeriod: ElementRef;\r\n @ViewChild('ToPeriod', { read: ElementRef }) toPeriod: ElementRef;\r\n @ViewChild('UpdateDisplay', { read: ElementRef }) updateDisplay: ElementRef;\r\n\r\n // grid\r\n gridDataExists: boolean;\r\n dataSource: MatTableDataSource;\r\n gridColumns: string[] = ['selectAllCourses', 'Period', 'TermCode', 'SubjectCode', 'Section', 'AbbreviatedTitle', 'TeacherName', 'StudentCount', 'DaysGroupDescription'];\r\n\r\n\r\n // enums\r\n\r\n v9parameterName = v9ReportParameterName; // parameter name enum\r\n selectedTeacher: string;\r\n teachers: DataSource[] = [];\r\n\r\n filteredCourses: DataSource[] = [];\r\n showDepartment = false;\r\n userIsTeacher: boolean;\r\n selectedFacultyStaffId: number;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n gradebookAssignmentsByStandardDialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private reportingService: ReportingService,\r\n private lookupService: LookupService,\r\n ) {\r\n this.dialogRef = gradebookAssignmentsByStandardDialogRef;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.inDebugMode = this.reportingService.inDebugMode;\r\n this.numberMask = this.reportingService.getNumberMask();\r\n\r\n this.siteYearId = this.yearService.defaultYear.SiteYearId;\r\n\r\n // report specific settings\r\n this.reportType = 2;\r\n this.reportName = 'CreateGradebookAssignmentsByObjectiveReport';\r\n this.reportTitleInSystem = 'Gradebook Assignments By Standard';\r\n this.reportParameter.ReportTitle = this.reportTitleInSystem;\r\n\r\n this.reportParameter.TermId = 0;\r\n\r\n this.showDepartment = false;\r\n this.userIsTeacher = this.reportingService.currentUser.UserIsTeacher;\r\n if (this.userIsTeacher) {\r\n this.showDepartment = false;\r\n this.selectedTeacher = this.reportingService.currentUser.LastName + ', ' + this.reportingService.currentUser.FirstName;\r\n } else {\r\n this.showDepartment = true;\r\n }\r\n\r\n this.populateParameters();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe\r\n\r\n }\r\n\r\n selectTeacher(teacher: DataSource) {\r\n this.getFilteredCourses();\r\n\r\n if (this.reportingService.inDebugMode) {\r\n console.log(teacher);\r\n }\r\n\r\n if (teacher.ValueField == '') {\r\n this.showDepartment = true;\r\n } else {\r\n this.showDepartment = false;\r\n }\r\n\r\n // if (this.selectedTeacher == '') {\r\n // this.showDepartment = false;\r\n // } else {\r\n // this.showDepartment = true;\r\n // }\r\n }\r\n\r\n selectDepartment(dept: any) {\r\n this.getFilteredCourses();\r\n }\r\n\r\n termChanged() {\r\n this.getMyClasses();\r\n }\r\n\r\n getFilteredCourses() {\r\n\r\n this.filteredCourses = [];\r\n // Add 'All' for courses\r\n const dataSourceAll = new DataSource();\r\n dataSourceAll.TextField = ' All';\r\n dataSourceAll.ValueField = '0';\r\n dataSourceAll.Id = '0';\r\n this.filteredCourses.push(dataSourceAll);\r\n\r\n if (this.selectedTeacher == undefined || this.selectedTeacher == null || this.selectedTeacher == '') {\r\n return; // we only populate course dropdown if a teacher is selected\r\n }\r\n\r\n for (let x = 0; x < this.allCourses.length; x++) {\r\n // if (this.allCourses[x].Instructor == 'Mathman, Jim') {\r\n // console.log(this.allCourses[x]);\r\n // }\r\n if (this.reportParameter.TermId > 0 && this.allCourses[x].TermId != this.reportParameter.TermId) {\r\n continue;\r\n }\r\n if (this.selectedTeacher > '') {\r\n if (this.allCourses[x].Instructor != this.selectedTeacher) {\r\n continue;\r\n }\r\n }\r\n // if (this.selectedDepartment > '' && this.selectedDepartment != '0' ) {\r\n // if (this.allCourses[x]. != this.selectedDepartment) {\r\n // continue;\r\n // }\r\n // }\r\n const course = new DataSource();\r\n course.TextField = this.allCourses[x].SubjectCode + '-' + this.allCourses[x].Course;\r\n course.ValueField = this.allCourses[x].SubjectId.toString();\r\n course.Id = this.allCourses[x].Id.toString();\r\n this.selectedFacultyStaffId = this.allCourses[x].TeacherId;\r\n this.filteredCourses.push(course);\r\n\r\n }\r\n\r\n }\r\n\r\n populateParameters() {\r\n\r\n this.getSchoolYearSettings();\r\n this.getLookups();\r\n this.getTerms();\r\n // this.getMyClasses();\r\n if (!this.reportingService.currentUser.UserIsTeacher) {\r\n this.getDepartments();\r\n }\r\n // this.getFilteredCourses();\r\n }\r\n\r\n getSchoolYearSettings() {\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID).subscribe(data => {\r\n this.schoolYearSettings = data;\r\n // this.reportParameter.isValueChange = false;\r\n // this.reportParameter.isReportList = false;\r\n // this.reportParameter.PrintDate = formatDate(new Date, 'MM/dd/yyyy', 'en-US');\r\n // this.reportParameter.AttendanceDate = moment(this.yearService.defaultYear.CurrentAttendanceDate).format('MM/DD/YYYY');\r\n // this.reportParameter.FromPeriod = this.schoolYearSettings.MinumumPeriodPerDay;\r\n // this.reportParameter.ToPeriod = this.schoolYearSettings.MaximumPeriodsPerDay;\r\n\r\n // this.reportParameter.TermId = 0; // Default to All\r\n // this.refreshGrid();\r\n });\r\n }\r\n\r\n getLookups() {\r\n\r\n // this.subscriptions.push(\r\n // this.reportingService.getResidencyCodesLookup().subscribe(lookups => {\r\n // this.reportParameters.ResidencyCodes = lookups;\r\n // })\r\n\r\n // );\r\n\r\n }\r\n\r\n getDepartments() {\r\n this.reportingService.getDistrictDepartmentsReadForGradebookAssignmentsLookup(this.siteYearId).subscribe(departments => {\r\n\r\n this.departments = [];\r\n\r\n for (let x = 0; x < departments.length; x++) {\r\n const dataSource = new DataSource();\r\n dataSource.TextField = departments[x].CodeDescription;\r\n dataSource.ValueField = departments[x].Code;\r\n dataSource.Id = departments[x].Id.toString();\r\n this.departments.push(dataSource);\r\n }\r\n\r\n if (this.departments.length > 0) {\r\n this.selectedDepartment = departments[0].Code;\r\n }\r\n\r\n\r\n // const dataSourceAll = new DataSource();\r\n // dataSourceAll.TextField = ' All';\r\n // dataSourceAll.ValueField = '0';\r\n // dataSourceAll.Id = '0';\r\n // this.departments.push(dataSourceAll);\r\n\r\n // this.selectedDepartment = '0'; // default to All });\r\n });\r\n }\r\n\r\n getTerms() {\r\n this.reportingService.getTermsforCourses(0, this.yearService.defaultYear.SiteYearId).subscribe(data => {\r\n this.reportParameter.Terms = data; // .filter(function (element) { return (element.TermTypeId != 2); });\r\n // this.term = new CourseTerm();\r\n // this.term.Id = 0;\r\n // this.term.LongDescription = ' All Terms';\r\n // this.reportParameter.Terms.push(this.term);\r\n\r\n this.reportParameter.AddTermAll();\r\n // this.term.Id = 0;\r\n\r\n // if (this.inDebugMode) {\r\n // console.log(this.reportParameter.Terms);\r\n // }\r\n\r\n // termId: number, viewId: number, isTeacher: boolean, includeAllCourses: boolean, dateItem: Date\r\n\r\n this.getMyClasses();\r\n });\r\n }\r\n\r\n getMyClasses() {\r\n // const termId = 0;\r\n\r\n // console.log(this.reportParameter.TermId);\r\n\r\n const currentDate = this.yearService.defaultYear.CurrentAttendanceDate;\r\n\r\n this.reportingService.getMyClasses(this.reportParameter.TermId, 0, this.reportingService.currentUser.UserIsTeacher, true, currentDate).subscribe(courses => {\r\n\r\n // console.log(courses);\r\n courses = this.getUniqueCourses(courses);\r\n // console.log(courses);\r\n // console.log(this.selectedTeacher);\r\n\r\n if (this.selectedTeacher != null || this.selectedTeacher != undefined && this.selectedTeacher > '') { // we are only populating course dropdown if a teacher is selected\r\n for (let x = 0; x < courses.length; x++) {\r\n // console.log('ADDING COURSES');\r\n const dataSource = new DataSource();\r\n dataSource.TextField = courses[x].SubjectCode + '-' + courses[x].Course;\r\n dataSource.ValueField = courses[x].SubjectId.toString();\r\n dataSource.Id = courses[x].Id.toString();\r\n\r\n this.courses.push(dataSource);\r\n }\r\n }\r\n\r\n // Add 'All' for courses\r\n const dataSourceAll = new DataSource();\r\n dataSourceAll.TextField = ' All';\r\n dataSourceAll.ValueField = '0';\r\n dataSourceAll.Id = '0';\r\n this.courses.push(dataSourceAll);\r\n\r\n this.selectedCourse = '0'; // default to All\r\n\r\n // termId: number, viewId: number, isTeacher: boolean, includeAllCourses: boolean, dateItem: Date\r\n\r\n this.teachers = [];\r\n if (!this.reportingService.currentUser.UserIsTeacher) {\r\n const ds = new DataSource();\r\n ds.TextField = 'All'; // '';\r\n ds.ValueField = ''; // = courses[x].Instructor;\r\n this.teachers.push(ds);\r\n this.selectedTeacher = '';\r\n }\r\n\r\n for (let x = 0; x < courses.length; x++) {\r\n\r\n if (courses[x].Instructor > '') {\r\n\r\n // for (let y = 0; y < this.teachers.length; y++) {\r\n const tempUsers = this.teachers.find(t => t.TextField == courses[x].Instructor);\r\n if (tempUsers == null || tempUsers == undefined) {\r\n // this.teachers.push(this.ReportBatches[x].AddedByName);\r\n const dataSource = new DataSource();\r\n dataSource.TextField = courses[x].Instructor;\r\n dataSource.ValueField = courses[x].Instructor;\r\n this.teachers.push(dataSource);\r\n }\r\n // }\r\n // const dataSource = new DataSource();\r\n // dataSource.TextField = courses[x].Instructor;\r\n // dataSource.ValueField = courses[x].Instructor;\r\n // this.teachers.push(dataSource);\r\n }\r\n }\r\n\r\n this.allCourses = courses;\r\n this.getFilteredCourses();\r\n\r\n if (this.reportingService.currentUser.UserIsTeacher) {\r\n this.selectedTeacher = this.reportingService.currentUser.LastName + ', ' + this.reportingService.currentUser.FirstName;\r\n // console.log(this.selectedTeacher);\r\n }\r\n });\r\n }\r\n\r\n // teacherChanged(teach: DataSource) {\r\n // this.selectedTeacher = teach.ValueField;\r\n // if (this.selectedTeacher == '') {\r\n // this.showDepartment = false;\r\n // } else {\r\n // this.showDepartment = true;\r\n // }\r\n // }\r\n\r\n getUniqueCourses(origArr) {\r\n // return origArr;\r\n\r\n const newArr = [];\r\n const origLen = origArr.length;\r\n // found, x, y;\r\n\r\n for (let x = 0; x < origLen; x++) {\r\n // if (origArr[x].Instructor == 'Mathman, Jim') {\r\n // console.log(origArr[x]);\r\n // }\r\n // let found = false; // = undefined;\r\n\r\n const rec = newArr.find(c => c.SubjectCode == origArr[x].SubjectCode && c.Course == origArr[x].Course && c.Instructor == origArr[x].Instructor);\r\n // if (origArr[x].Instructor == 'Mathman, Jim') {\r\n // console.log(rec);\r\n // }\r\n if (rec == null || rec == undefined) {\r\n newArr.push(origArr[x]);\r\n }\r\n // for (let y = 0; y < newArr.length; y++) {\r\n // if (origArr[x].SubjectCode === newArr[y].SubjectCode && origArr[x].Course === newArr[y].Course) {\r\n // // if (origArr[x].SubjectCode === newArr[y].SubjectCode && origArr[x].Course === newArr[y].Course) {\r\n // found = true;\r\n // break;\r\n // }\r\n // }\r\n // if (!found) {\r\n // if (origArr[x].Instructor == 'Mathman, Jim') {\r\n // console.log(origArr[x]);\r\n // }\r\n // newArr.push(origArr[x]);\r\n // }\r\n }\r\n return newArr;\r\n }\r\n\r\n\r\n runReportClick() {\r\n this.checkErrors();\r\n\r\n if (this.errors.length == 0) {\r\n this.setReportParameters();\r\n this.saveUserPreferences();\r\n\r\n if (this.workflowReport) {\r\n this.addToReportQueue();\r\n } else {\r\n this.openStudentAttachment();\r\n }\r\n\r\n this.dialogRef.close();\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n checkErrors() {\r\n this.errors = [];\r\n\r\n\r\n // Report Title\r\n\r\n if (!this.reportingService.hasStringValueNotEmpty(this.reportParameter.ReportTitle)) {\r\n this.errors.push({\r\n fieldName: 'Report Title',\r\n errorMsg: 'Field is required',\r\n fieldRef: this.reportTitle\r\n });\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n setReportParameters() {\r\n // this.reportParameter.PrintDate = this.reportingService.getMonthDayYear(new Date()).toString();\r\n\r\n this.param = [];\r\n this.addCoreParameters();\r\n\r\n\r\n // report specific parameters\r\n\r\n // lngDistrictDepartmentId\r\n // strDepartmentDesc\r\n // lngDistrictSubjectId\r\n // strSubjectDesc\r\n\r\n let dept = '0';\r\n if (this.selectedTeacher == '') {\r\n dept = this.selectedDepartment;\r\n this.param.push({ ParamName: 'strStaffUserName', ParamStringValue: this.reportingService.currentUser.LastName + ', ' + this.reportingService.currentUser.FirstName });\r\n this.param.push({ ParamName: 'lngFacultyStaffId', ParamStringValue: 0 }); // TeacherId\r\n }\r\n else {\r\n this.param.push({ ParamName: 'strStaffUserName', ParamStringValue: this.selectedTeacher });\r\n this.param.push({ ParamName: 'lngFacultyStaffId', ParamStringValue: this.selectedFacultyStaffId }); // TeacherId\r\n\r\n }\r\n\r\n\r\n // this.param.push({ ParamName: 'lngDistrictDepartmentId', ParamStringValue: dept });\r\n this.param.push({ ParamName: 'lngDistrictDepartmentId', ParamStringValue: 0 });\r\n this.param.push({ ParamName: 'strDepartmentDesc', ParamStringValue: '' });\r\n this.param.push({ ParamName: 'lngDistrictSubjectId', ParamStringValue: this.selectedCourse });\r\n\r\n if (this.selectedCourse == '0') {\r\n this.param.push({ ParamName: 'strSubjectDesc', ParamStringValue: 'All' });\r\n }\r\n else {\r\n const course = this.courses.find(c => c.ValueField == this.selectedCourse);\r\n\r\n this.param.push({ ParamName: 'strSubjectDesc', ParamStringValue: course.TextField });\r\n }\r\n\r\n if (this.reportingService.inDebugMode) {\r\n console.log(this.param);\r\n }\r\n\r\n\r\n this.parameters = [];\r\n this.parameters.push(JSON.stringify(this.param));\r\n\r\n }\r\n\r\n\r\n addCoreParameters() {\r\n this.reportingService.addCoreParametersV9\r\n (\r\n this.param,\r\n this.reportParameter.ReportTitle,\r\n this.reportType,\r\n // core parameter flags ()\r\n /* tslint:disable:no-bitwise */\r\n this.v9parameterName.strReportDate |\r\n this.v9parameterName.strReportSiteHeader |\r\n this.v9parameterName.strReportTitle |\r\n this.v9parameterName.strSiteYearCode |\r\n this.v9parameterName.lngSiteYearId |\r\n // this.v9parameterName.strStaffUserName_LNFN |\r\n this.v9parameterName.strOutputFile_NOFILE |\r\n this.v9parameterName.strReportTime\r\n /* tslint:enable:no-bitwise */\r\n );\r\n\r\n }\r\n\r\n saveUserPreferences() {\r\n\r\n // const UserPreferencesObj = this.userPreferences;\r\n // UserPreferencesObj.pub_strReportTitle = this.reportParameter.ReportTitle;\r\n // UserPreferencesObj.pub_intReportType = this.reportType; // C1\r\n\r\n }\r\n\r\n addToReportQueue() {\r\n // this.reportingService.runV9Report(this.reportName, this.reportType, this.workflowReport, this.parameters).subscribe(response => {\r\n this.reportingService.runV9Report(this.reportName, this.reportType, this.workflowReport, this.parameters).subscribe(response => {\r\n setTimeout(() => {\r\n this.openReportQueueList();\r\n }, 500);\r\n }\r\n , err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n }\r\n\r\n openReportQueueList() {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n }\r\n\r\n\r\n\r\n openStudentAttachment() {\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log(this.parameters);\r\n // }\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: 0,\r\n DocumentName: this.reportName,\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: '',\r\n ReportParameters: this.parameters,\r\n ReportType: this.reportType\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n\r\n","\r\n\r\n\r\n \r\n
\r\n

My Reports

\r\n
\r\n

My Reports

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n In this area you can create, view, and maintain your own set of report folders to\r\n organize reports and\r\n identify\r\n the reports you use most often for quick access.
The first step is to select the Add\r\n Entry icon in\r\n the bottom\r\n bar to create your first report folder.\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ReportFolders.Name}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ReportSnapshotsAuto-RunActions
\r\n {{Report.Name}}\r\n \r\n \r\n {{Report.Snapshots.length}}\r\n \r\n \r\n {{Report.AutoRun}}\r\n \r\n \r\n \r\n
\r\n \"Actions\"\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{Report.Description}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{rpt.Description}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { LoginService } from '../../login/login.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { LoginSettings } from '../../login/LoginSetting.model';\r\n\r\nimport { Report } from '../models/report.model';\r\nimport { ReportFolder } from '../models/report-folder.model';\r\nimport { ReportParametersComponent } from '../parameters/report-parameters.component';\r\nimport { ReportSettingsFoldersComponent } from '../report-settings/report-settings.folders.component';\r\nimport { ReportSnapshotsComponent } from '../report-snapshots/report-snapshots.component';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\n\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { ReportSettingsAutoRunComponent } from '../report-settings/report-settings-autorun.component';\r\nimport { ReportOptionsComponent } from '../definitions/report-options.component';\r\nimport { ReportAutoRunMessageComponent } from '../report-settings/report-autorun-message.component';\r\nimport { ReportV9 } from '../models/report-v9.model';\r\nimport { ManualEntryRostersComponent } from '../V9/manual-entry-rosters/manual-entry-rosters.component';\r\nimport { ClassListAllComponent } from '../V9/class-list-all/class-list-all.component';\r\nimport { TeacherSummaryPreviewComponent } from '../V9/teacher-summary-preview/teacher-summary-preview.component';\r\nimport { GradebookProgessReportComponent } from '../V9/gradebook-progress-report/gradebook-progress-report.component';\r\nimport { ClassListAllAttendanceNotMarkedComponent } from '../V9/class-list-all-attendance-not-marked/class-list-all-attendance-not-marked.component';\r\nimport { AttendanceHistoryByClassComponent } from '../V9/attendance-history-by-class/attendance-history-by-class.component'; // ONE-4251\r\nimport { GradebookAssignmentsByStandardComponent } from '../V9/gradebook-assignments-by-standard/gradebook-assignments-by-standard.component';\r\nimport { v9ReportParameterName } from '../reporting.service';\r\nimport { ReportTemplateClassListComponent } from '../V9/report-template-class-list/report-template-class-list.component';\r\nimport { GradebookByClassGridComponent } from '../V9/gradebook-by-class-grid/gradebook-by-class-grid.component';\r\nimport { System } from '../../../shared-components/System';\r\nimport { V9ReportParametersComponent } from '../V9/parameters/v9-report-parameters.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'myReports',\r\n templateUrl: './my-reports.component.html',\r\n styleUrls: ['./my-reports.component.css'],\r\n // Animation for when the detail row is expanded or collapsed\r\n animations: [detailExpand]\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\nexport class MyReportsComponent implements OnInit, OnDestroy {\r\n\r\n @Input() expandAllFolders: boolean;\r\n @Input() refreshedReportFolders: boolean;\r\n\r\n // @Output() public expandAllEvent = new EventEmitter(); // to send to report settings component\r\n\r\n loginSettings: LoginSettings;\r\n yearService: YearService;\r\n utilizeDistributebyEmail: boolean;\r\n allowAutoRunReport: boolean;\r\n angularMatData = new TylerMatTableDataSource;\r\n columnsToDisplay: string[] = ['More', 'ReportFolderName'];\r\n columnsToDisplayDetailRow: string[] = ['ReportFolderName', 'ReportName', 'ReportSnapshotsLength', 'AutoRun', 'Actions'];\r\n useReportDefinitions: boolean;\r\n reportOptionsDialogRef: MatDialogRef;\r\n manualEntryRostersDialogRef: MatDialogRef;\r\n ClassListAllDialogRef: MatDialogRef;\r\n ClassListAllAttendanceNotMarkedDialogRef: MatDialogRef;\r\n TeacherSummaryPreviewDialogRef: MatDialogRef;\r\n GradebookProgessReportDialogRef: MatDialogRef; \r\n attendanceHistoryByClassDialogRef: MatDialogRef; // ONE-4251\r\n gradebookAssignmentsByStandardDialogRef: MatDialogRef; // ONE-4254\r\n reportTemplateClassListDialogRef: MatDialogRef;\r\n gradebookByClassGridDialogRef: MatDialogRef;\r\n isForSchedule: boolean;\r\n\r\n private _showNoFoldersMessage: boolean;\r\n\r\n get showNoFoldersMessage(): boolean {\r\n return this._showNoFoldersMessage;\r\n // return this.reportingService.showNoFoldersMessage;\r\n }\r\n\r\n set showNoFoldersMessage(value: boolean) {\r\n this._showNoFoldersMessage = value;\r\n this.reportingService.showNoFoldersMessage = value;\r\n }\r\n // expandedRows: number[] = [];\r\n ReportFolders: ReportFolder[] = [];\r\n Reports: ReportV9[] = [];\r\n ReportModules: ReportV9[] = [];\r\n // rowDetailExpand: [number[], boolean];\r\n\r\n\r\n SelectedReport: Report;\r\n reportParametersDialogRef: MatDialogRef;\r\n reportSettingsDialogRef: MatDialogRef;\r\n reportSettingsAutoRunDialogRef: MatDialogRef;\r\n reportSnapshotsDialogRef: MatDialogRef;\r\n reportAutoRunMessageDialogRef: MatDialogRef;\r\n\r\n // enums\r\n v9parameterName = v9ReportParameterName; // parameter name enum\r\n\r\n\r\n constructor(\r\n private reportingService: ReportingService,\r\n private loginService: LoginService,\r\n private reportParametersDialog: MatDialog,\r\n private reportSettingsDialog: MatDialog,\r\n private reportSettingsAutoRunDialog: MatDialog,\r\n private reportSnapshotsDialog: MatDialog,\r\n private reportOptionsDialog: MatDialog,\r\n private reportAutoRunMessageDialog: MatDialog,\r\n private manualEntryRostersDialog: MatDialog,\r\n private classListAllDialog: MatDialog,\r\n private classListAllAttendanceNotMarkedDialog: MatDialog,\r\n private TeacherSummaryPreviewDialog: MatDialog,\r\n private ReportCardDialog: MatDialog,\r\n private attendanceHistoryByClassDialog: MatDialog, // ONE-4251\r\n private gradebookAssignmentsByStandardDialog: MatDialog, // ONE-4254\r\n private dialog: MatDialog\r\n\r\n ) {\r\n this.loginSettings = loginService.LoginSettings;\r\n this.allowAutoRunReport = this.reportingService.allowAutoRunReport;\r\n this.angularMatData = new TylerMatTableDataSource(this.ReportFolders);\r\n this.useReportDefinitions = reportingService.useReportDefinitions;\r\n this.isForSchedule = this.reportingService.isForSchedule;\r\n\r\n // this.utilizeDistributebyEmail = this.loginSettings.UtilizeDistributebyEmail;\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('MyReportsComponent constructor');\r\n // console.log(this.reportingService.showNoFoldersMessage);\r\n // }\r\n\r\n // this.getMyReportFolders();\r\n\r\n } // end constructor\r\n\r\n ngOnInit() {\r\n if (this.loginSettings.V10 == true) {\r\n this.getMyReportFolders();\r\n } else {\r\n this.getMyV9Reports();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('MyReportsComponent => ngOnDestroy');\r\n // }\r\n }\r\n\r\n loadReportData(): void {\r\n // load data into Angular Material table\r\n this.angularMatData.data = this.ReportFolders;\r\n\r\n // default to expand all folders\r\n this.angularMatData.expandAll(true);\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('loadReportData()');\r\n // }\r\n }\r\n\r\n\r\n expandAllFoldersClick(expandAll: boolean) {\r\n this.expandAllFolders = expandAll;\r\n this.expandAllRows(-1, expandAll);\r\n\r\n // send emitted property to the Angular Material function\r\n this.expandAll(expandAll);\r\n\r\n\r\n // console.log('expandAllFoldersClick: ' + expandAll);\r\n // console.log(this.ReportFolders);\r\n // console.log('expandAllFoldersClick -- END');\r\n\r\n }\r\n\r\n getMyReportFolders(): void {\r\n this.reportingService.getMyReportFolders().subscribe(reportFolders => {\r\n this.ReportFolders = reportFolders;\r\n this.reportingService.ReportFolders = this.ReportFolders;\r\n\r\n if (this.ReportFolders.length > 0) {\r\n this.showNoFoldersMessage = false;\r\n this.reportingService.showNoFoldersMessage = false;\r\n }\r\n else {\r\n this.showNoFoldersMessage = true;\r\n this.reportingService.showNoFoldersMessage = true;\r\n }\r\n\r\n // this.showNoFoldersMessage = this.reportingService.showNoFoldersMessage;\r\n\r\n this.expandAllRows(-1, true);\r\n\r\n this.loadReportData();\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('MyReportsComponent => angularMatData');\r\n // console.log(this.angularMatData);\r\n // console.log('MyReportsComponent => SelectFolders length: ' + this.ReportFolders.length);\r\n // console.log(this.ReportFolders);\r\n // console.log(this.showNoFoldersMessage);\r\n // }\r\n\r\n\r\n\r\n\r\n });\r\n\r\n\r\n // this.showNoFoldersMessage = this.reportingService.showNoFoldersMessage;\r\n }\r\n\r\n getMyV9Reports(): void {\r\n this.reportingService.getV9Reports('TeacherMenu').subscribe(rpt => {\r\n\r\n if (this.reportingService.inDebugMode) {\r\n console.log(rpt);\r\n }\r\n\r\n // remove progress report for now, can only get to it from the gradebook\r\n let i = 0;\r\n rpt.forEach(f => {\r\n const ri = f.ReportsList.filter(r => r.ReportName != 'GradeBookProgressReport');\r\n if (i >= 0) {\r\n rpt[i].ReportsList = System.convert(ri, new Array());\r\n }\r\n i++;\r\n }\r\n );\r\n\r\n this.Reports = System.convert(rpt, new Array());\r\n\r\n const IsReportsList: boolean = rpt.filter(x => x.ReportsList.length > 0).length > 0;\r\n if (IsReportsList == true) {\r\n this.ReportModules = rpt.filter(x => x.ParentId == 0);\r\n } else {\r\n this.Reports = [];\r\n const obj = new ReportV9();\r\n obj.Id = 0;\r\n obj.ReportsList = rpt;\r\n this.Reports.push(obj);\r\n }\r\n });\r\n }\r\n\r\n expandAllRows(folderID: number, expandAll: boolean) {\r\n\r\n if (folderID == -1) {\r\n // -1 is ALL folders\r\n for (let f = 0; f < this.ReportFolders.length; f++) {\r\n this.ReportFolders[f].IsDetailRowExpanded = expandAll;\r\n\r\n // this.expandedRows.push(this.ReportFolders[f].Id);\r\n }\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('expandedRows: ' + this. expandedRows);\r\n // }\r\n }\r\n\r\n }\r\n\r\n expandCollapseFolder(reportFolder: ReportFolder) {\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('MyReportsComponent => expandCollapseFolder()');\r\n // console.log(reportFolder);\r\n // }\r\n reportFolder.IsDetailRowExpanded = !reportFolder.IsDetailRowExpanded;\r\n // this.reportingService.ReportFolders[reportFolder.Id].IsDetailRowExpanded = reportFolder.IsDetailRowExpanded;\r\n // this.ReportFolders[folderID].IsDetailRowExpanded = !this.ReportFolders[folderID].IsDetailRowExpanded;\r\n\r\n }\r\n\r\n reportClicked(report) {\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('MyReportsComponent => reportClicked(' + report.Name + ', IsSysGen=' + report.IsSysGen + ')');\r\n // }\r\n\r\n this.reportingService.isFromMenu = false;\r\n\r\n this.reportingService.getReportParameters(-1, report).subscribe(selectedReport => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log(selectedReport);\r\n // }\r\n\r\n this.reportingService.SelectedReport = selectedReport;\r\n this.openReportParametersWindow();\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n openReportParametersWindow() {\r\n this.reportParametersDialogRef = this.reportParametersDialog.open(ReportParametersComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n // this.reportsDialogRef.beforeClose().subscribe(result => {\r\n // console.log('shared/HeaderComponent =>reportsDialogRef.beforeClose()');\r\n // });\r\n\r\n\r\n this.reportParametersDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('myReportsComponent =>reportParametersDialogRef.afterClosed()');\r\n // console.log('reportService.isForSchedule: ' + this.reportingService.isForSchedule.toString());\r\n // console.log('this.isForSchedule: ' + this.isForSchedule.toString());\r\n // }\r\n\r\n if (result > '' && this.isForSchedule == true) {\r\n this.getMyReportFolders();\r\n\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n reportSettingsClick(report: Report) {\r\n this.reportingService.SelectedReport = report;\r\n this.reportingService.ReportFolders = this.ReportFolders;\r\n this.reportSettingsDialogRef = this.reportSettingsDialog.open(ReportSettingsFoldersComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.reportSettingsDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('myReportsComponent =>reportSettingsDialogRef.afterClosed()');\r\n // }\r\n\r\n if (result > '') {\r\n this.getMyReportFolders();\r\n }\r\n\r\n });\r\n }\r\n\r\n autorunSettingsClick(report: Report) {\r\n\r\n this.reportingService.SelectedReport = report;\r\n this.reportingService.ReportFolders = this.ReportFolders;\r\n this.reportingService.isForSchedule = true;\r\n this.isForSchedule = true;\r\n\r\n // check that allowAutoRunReport (system) and AllowAutoRun(report and that report is in a folder\r\n // if not, show message\r\n if (this.allowAutoRunReport == false || report.AllowAutoRun == false || report.ReportFolder == '') {\r\n this.reportAutoRunMessageDialogRef = this.reportAutoRunMessageDialog.open(ReportAutoRunMessageComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n return;\r\n }\r\n // call report params load and pop up and show autorun setting within\r\n\r\n // we will need to determine if this is a new or existing autorun when populating parameters\r\n\r\n let isExistingAutorun = false;\r\n if (report.AutoRunSchedule_ID > 0) {\r\n // pull saved parameters\r\n isExistingAutorun = true;\r\n }\r\n\r\n this.reportingService.getReportParameters(-1, report, isExistingAutorun).subscribe(selectedReport => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log(selectedReport);\r\n // }\r\n\r\n this.reportingService.SelectedReport = selectedReport;\r\n this.openReportParametersWindow();\r\n\r\n });\r\n\r\n\r\n // this.reportParametersDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('myReportsComponent =>reportParametersDialogRef.afterClosed()');\r\n // }\r\n\r\n // if (result > '') {\r\n // this.getMyReportFolders();\r\n // }\r\n // });\r\n\r\n // this.reportSettingsAutoRunDialogRef = this.reportSettingsAutoRunDialog.open(ReportSettingsAutoRunComponent, {\r\n // panelClass: 'tyl-mat-dialog',\r\n // disableClose: true\r\n // });\r\n\r\n // this.reportSettingsAutoRunDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('myReportsComponent =>reportSettingsAutoRunDialogRef.afterClosed()');\r\n // }\r\n\r\n // if (result > '') {\r\n // this.getMyReportFolders();\r\n // }\r\n\r\n // });\r\n\r\n }\r\n\r\n reportOptionsClick(report: Report) {\r\n this.reportingService.SelectedReport = report;\r\n this.reportingService.isFromMenu = true;\r\n // this.reportingService.ReportFolders = this.myReportFolders;\r\n\r\n this.reportOptionsDialogRef = this.reportOptionsDialog.open(ReportOptionsComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.reportOptionsDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('AllReportsComponent =>reportOptionsDialogRef.afterClosed()');\r\n // }\r\n\r\n // if (result > '') {\r\n // this.getMyReportFolders();\r\n // }\r\n\r\n });\r\n\r\n }\r\n\r\n reportSnapshotsClick(report: Report, folderId: number) {\r\n\r\n // console.log('HEY, IN reportSnapshotsClick()');\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('reportSnapshotsClick()');\r\n // console.log(this.ReportFolders);\r\n // console.log('this.reportingService.ReportFolders');\r\n // console.log(this.reportingService.ReportFolders);\r\n // }\r\n\r\n this.reportingService.SelectedReport = report;\r\n this.reportingService.ReportFolders = this.ReportFolders;\r\n this.reportingService.selectedReportFolderId = folderId;\r\n this.reportSnapshotsDialogRef = this.reportSnapshotsDialog.open(ReportSnapshotsComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.reportSnapshotsDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportingService.inDebugMode) {\r\n // console.log('myReportsComponent =>reportSnapshotsDialogRef.afterClosed()');\r\n // }\r\n\r\n if (result == true) {\r\n this.getMyReportFolders();\r\n }\r\n\r\n });\r\n }\r\n\r\n reportSettingsV9Click(rpt) {\r\n this.reportingService.SelectedReport = rpt;\r\n\r\n if (this.reportingService.inDebugMode) {\r\n console.log('REPORT CLICKED!');\r\n console.log(rpt);\r\n }\r\n\r\n if (rpt.ReportName == 'ManualEntryRosters') {\r\n this.manualEntryRostersDialogRef = this.manualEntryRostersDialog.open(ManualEntryRostersComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: { Report: rpt },\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n }\r\n else if (rpt.ReportName == 'CreateCurrentDayAttendanceByClass' && rpt.ReportTitle == 'Class List - All') {\r\n this.ClassListAllDialogRef = this.classListAllDialog.open(ClassListAllComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: { Report: rpt },\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n }\r\n else if (rpt.ReportName == 'CreateCurrentDayAttendanceByClass' && rpt.ReportTitle == 'Class List - Attendance Not Marked') {\r\n this.ClassListAllAttendanceNotMarkedDialogRef = this.classListAllAttendanceNotMarkedDialog.open(ClassListAllAttendanceNotMarkedComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: { Report: rpt },\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n }\r\n else if (rpt.ReportName == 'AttendancePreviewByTeacher') {\r\n this.TeacherSummaryPreviewDialogRef = this.TeacherSummaryPreviewDialog.open(TeacherSummaryPreviewComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: { Report: rpt },\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n } \r\n else if (rpt.ReportName == 'CreateAttendanceHistoryByClass' || rpt.Description == 'Attendance History by Class') {\r\n this.attendanceHistoryByClassDialogRef = this.attendanceHistoryByClassDialog.open(AttendanceHistoryByClassComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: { Report: rpt },\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n }\r\n else if (rpt.ReportName == 'GradeCommentList') {\r\n\r\n /*\r\n\r\n Public Class pub_clsReportCardCommentParameters\r\n 'Connection String\r\n Public strConnectionString As String = \"\"\r\n 'Report Parameters\r\n Public strReportOutputFile As String = \"\"\r\n Public strReportOutputFolderUNC As String = \"\"\r\n 'Option Based Parameters\r\n Public strReportDate As String = \"\"\r\n Public strReportSiteHeader As String = \"\"\r\n Public strReportTitle As String = \"\"\r\n Public strSiteYearCode As String = \"\"\r\n Public intSiteYearId As Integer = 0\r\n Public strStudentSelectionStatus As String = \"\"\r\n Public strStudentIds As String = \"\"\r\n Public blnPageBreakAfterEachStudent As Boolean = False\r\n End Class\r\n */\r\n\r\n const reportType = 1;\r\n const reportTitle = 'Report Card Comment List';\r\n const reportName = 'GradeCommentList'; // 'CreateReportCardCommentsReport'; // 'GradeCommentList';\r\n\r\n const param = [];\r\n /* tslint:disable:no-bitwise */\r\n this.reportingService.addCoreParametersV9\r\n (\r\n param,\r\n reportTitle,\r\n reportType,\r\n // this.v9parameterName.strReportSiteAddress |\r\n this.v9parameterName.strReportDate |\r\n this.v9parameterName.strReportSiteHeader |\r\n this.v9parameterName.strReportTitle |\r\n this.v9parameterName.strSiteYearCode |\r\n this.v9parameterName.lngSiteYearId\r\n // this.v9parameterName.intSiteYearId |\r\n // this.v9parameterName.strOutputFile_NOFILE\r\n // this.v9parameterName.bytReportType ||\r\n // this.v9parameterName.strOutputFile_NOFILE\r\n\r\n );\r\n /* tslint:enable:no-bitwise */\r\n\r\n // Public strStudentSelectionStatus As String = \"\"\r\n // Public strStudentIds As String = \"\"\r\n // Public blnPageBreakAfterEachStudent As Boolean = False\r\n\r\n const parameters = [];\r\n const stringifiedParameters = JSON.stringify(param);\r\n parameters.push(stringifiedParameters);\r\n\r\n if (this.reportingService.inDebugMode) {\r\n console.log('REPORT PARAMETERS TO BE RUN:');\r\n console.log(param);\r\n console.log('REPORT PARAMETERS STRINGIFIED:');\r\n console.log(stringifiedParameters);\r\n }\r\n\r\n this.reportingService.openStudentAttachmentReport(0, reportName, '', '', '', parameters, reportType);\r\n\r\n }\r\n else if (rpt.ReportName == 'CreateGradebookAssignmentsByObjectiveReport') {\r\n this.gradebookAssignmentsByStandardDialogRef = this.gradebookAssignmentsByStandardDialog.open(GradebookAssignmentsByStandardComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: { Report: rpt },\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n }\r\n else {\r\n const v9ReportParametersDialogRef = this.dialog.open(V9ReportParametersComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: { Report: rpt },\r\n minWidth: '50vw',\r\n maxWidth: '100vw',\r\n minHeight: '50vh',\r\n maxHeight: '100vh'\r\n });\r\n\r\n v9ReportParametersDialogRef.componentInstance.selectedReport = JSON.parse(JSON.stringify(rpt));\r\n\r\n v9ReportParametersDialogRef.afterClosed().subscribe(result => {\r\n if (result != undefined) {\r\n this.getMyV9Reports();\r\n }\r\n });\r\n }\r\n } // end reportSettingsV9Click\r\n\r\n\r\n isEven(folderId) {\r\n return (folderId % 2) === 0;\r\n }\r\n\r\n\r\n closeClick() {\r\n\r\n // this.reportingService.close();\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n // These methods are used to allow calls to the TylerMatTableDataSource methods from the html\r\n toggleExpanded(row: any) {\r\n // Toggles row between expanded and collapsed\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n // Return true if expanded and false if collapsed\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n // Expand or collapse all rows\r\n // true => expand all false => collapse all\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n} // end export class MyReports\r\n\r\n\r\n\r\n\r\n","export class ReportModule {\r\n ID: number;\r\n Description: string;\r\n IsSelected: boolean;\r\n}\r\n\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n \r\n \r\n {{reportModule.Description}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n Report\r\n Name\r\n \r\n {{Report.Name}}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n Auto-Run \r\n \r\n \r\n {{Report.AutoRun}} \r\n \r\n\r\n \r\n\r\n \r\n \r\n My Reports Folder\r\n \r\n \r\n {{Report.ReportFolder}} \r\n \r\n \r\n\r\n \r\n Actions\r\n \r\n \r\n\r\n \r\n\r\n
\r\n \"Actions\"\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { Report } from '../models/report.model';\r\nimport { ReportFolder } from '../models/report-folder.model';\r\nimport { ReportModule } from '../models/report-module.model';\r\nimport { ReportParametersComponent } from '../parameters/report-parameters.component';\r\nimport { ReportSettingsFoldersComponent } from '../report-settings/report-settings.folders.component';\r\nimport { ReportOptionsComponent } from '../definitions/report-options.component';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportSettingsAutoRunComponent } from '../report-settings/report-settings-autorun.component';\r\nimport { ReportAutoRunMessageComponent } from '../report-settings/report-autorun-message.component';\r\n\r\nexport const enum OneSisModule {\r\n All = 0\r\n // Classroom360 = 2,\r\n // Student360 = 4,\r\n // Counselor360 = 3\r\n}\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'allReports',\r\n templateUrl: './all-reports.component.html',\r\n styleUrls: ['./all-reports.component.css']\r\n\r\n // entryComponents: [\r\n // ]\r\n})\r\n\r\nexport class AllReportsComponent implements OnInit, OnDestroy {\r\n\r\n loginSettings: LoginSettings;\r\n utilizeDistributebyEmail: boolean;\r\n expandedRows: boolean[] = [];\r\n ReportFolders: ReportFolder[] = [];\r\n myReportFolders: ReportFolder[] = [];\r\n folderIds: number[] = [];\r\n reportIds: number[] = [];\r\n Reports: Report[];\r\n ReportModules: ReportModule[] = [];\r\n selectedReportModule: number;\r\n angularMatData = new MatTableDataSource;\r\n // columnsToDisplay: string[] = ['ReportName', 'Type', 'AutoRun', 'MyReports', 'Actions'];\r\n columnsToDisplay: string[] = ['ReportName', 'AutoRun', 'MyReports', 'Actions'];\r\n useReportDefinitions: boolean;\r\n SelectedReport: Report;\r\n reportParametersDialogRef: MatDialogRef;\r\n reportSettingsDialogRef: MatDialogRef;\r\n reportSettingsAutoRunDialogRef: MatDialogRef;\r\n reportOptionsDialogRef: MatDialogRef;\r\n reportAutoRunMessageDialogRef: MatDialogRef;\r\n // reportsMode: number; // enum: MyReports = 1, AllReports = 2\r\n reportSearch: string;\r\n showSearchMessage: boolean;\r\n allowAutoRunReport: boolean;\r\n\r\n selectedSchoolId: number;\r\n\r\n private _moduleId: number;\r\n filterValue: string;\r\n showReportToPDF = false;\r\n\r\n // get oneSisModules(): ReportModule[] {\r\n // return this.reportService.oneSisModules;\r\n // }\r\n\r\n // set oneSisModules(value: ReportModule[]) {\r\n // this.reportService.oneSisModules = value;\r\n // }\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private reportSettingsDialog: MatDialog,\r\n private reportSettingsAutoRunDialog: MatDialog,\r\n private reportOptionsDialog: MatDialog,\r\n private reportAutoRunMessageDialog: MatDialog,\r\n private yearService: YearService,\r\n\r\n ) {\r\n\r\n this.loginSettings = loginService.LoginSettings;\r\n this.utilizeDistributebyEmail = this.loginSettings.UtilizeDistributebyEmail;\r\n this.allowAutoRunReport = this.reportService.allowAutoRunReport;\r\n this.selectedSchoolId = this.yearService.defaultYear.SchoolID;\r\n this.useReportDefinitions = reportService.useReportDefinitions;\r\n // Load data into a DataSource object\r\n // MatTableDataSource extends DataSource to allow sorting, pagination and basic filtering\r\n // TylerMatTableDataSource extends MatTableDataSource and allows complex filtering and detail rows\r\n this.angularMatData = new MatTableDataSource(this.Reports);\r\n\r\n\r\n } // end constructor\r\n\r\n ngOnInit() {\r\n // this.populateReportModules();\r\n\r\n this.getReportModulesByRole(true);\r\n // const allReportsFolder = new ReportFolder();\r\n\r\n // allReportsFolder.Id = 0;\r\n // allReportsFolder.IsDetailRowExpanded = true;\r\n // allReportsFolder.Name = 'All Reports';\r\n // allReportsFolder.Reports = [];\r\n // this.ReportFolders.push(allReportsFolder);\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('this.selectedSchoolId:' + this.selectedSchoolId);\r\n // }\r\n\r\n this.getAllReports(OneSisModule.All, this.selectedSchoolId);\r\n\r\n // getting My reports now due to folder and auto run settings being\r\n // accessable from the all reports page\r\n // this.getMyReportFolders();\r\n\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n // filter material table\r\n applyFilter(filterValue: string) {\r\n\r\n this.angularMatData.filter = filterValue.trim().toLowerCase();\r\n\r\n // this.loadReportData()\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('applyFilter()');\r\n // console.log(this.angularMatData);\r\n // }\r\n }\r\n\r\n loadReportData(): void {\r\n // load data into Angular Material table\r\n this.angularMatData.data = this.Reports;\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('loadReportData()');\r\n // }\r\n }\r\n\r\n getReportModulesByRole(isInit: boolean) {\r\n // const selectedSchoolDomain = this.yearService.defaultYear.SchoolID;\r\n this.reportService.getReportModulesByRole(this.selectedSchoolId).subscribe(reportModules => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(reportModules);\r\n // }\r\n\r\n // clear the array\r\n this.ReportModules.length = 0;\r\n\r\n if (reportModules.length > 1) {\r\n // then need to add ALL\r\n const allReportsReportModule = new ReportModule();\r\n allReportsReportModule.ID = 0;\r\n allReportsReportModule.Description = 'All';\r\n allReportsReportModule.IsSelected = true;\r\n reportModules.unshift(allReportsReportModule); // push it to the fromt of the array\r\n }\r\n\r\n // for (let i; i < reportModules.length; i++) {\r\n // this.ReportModules.push(reportModules[i]);\r\n // }\r\n\r\n if (reportModules.length > 0) {\r\n reportModules[0].IsSelected = true;\r\n this.selectedReportModule = reportModules[0].ID;\r\n }\r\n // this.selectedReportModule = OneSisModule.All;\r\n\r\n this.ReportModules = reportModules;\r\n // this.reportService.oneSisModules = reportModules;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(reportModules);\r\n // console.log(this.ReportModules);\r\n\r\n // }\r\n\r\n // this.ReportModules = this.oneSisModules;\r\n\r\n if (isInit) {\r\n this.getMyReportFolders();\r\n }\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n // private populateReportModules() {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('In populateReportModules()');\r\n // }\r\n\r\n // // const enum reportModule {\r\n // // All = 0,\r\n // // Classroom360 = 1,\r\n // // Student360 = 2\r\n // // }\r\n\r\n // this.showReportToPDF = false; // ????\r\n\r\n\r\n // // const allReportsReportModule = new ReportModule();\r\n // // allReportsReportModule.ID = OneSisModule.All;\r\n // // allReportsReportModule.Description = 'All';\r\n // // allReportsReportModule.IsSelected = true;\r\n // // this.ReportModules.push(allReportsReportModule);\r\n\r\n // // const classroom360ReportModule = new ReportModule();\r\n // // classroom360ReportModule.ID = OneSisModule.Classroom360;\r\n // // classroom360ReportModule.Description = 'Classroom';\r\n // // classroom360ReportModule.IsSelected = false;\r\n // // this.ReportModules.push(classroom360ReportModule);\r\n\r\n // // const student360ReportModule = new ReportModule();\r\n // // student360ReportModule.ID = OneSisModule.Student360;\r\n // // student360ReportModule.Description = 'Student';\r\n // // student360ReportModule.IsSelected = false;\r\n // // this.ReportModules.push(student360ReportModule);\r\n\r\n // // const counselor360ReportModule = new ReportModule();\r\n // // counselor360ReportModule.ID = OneSisModule.Counselor360;\r\n // // counselor360ReportModule.Description = 'Counselor';\r\n // // counselor360ReportModule.IsSelected = false;\r\n // // this.ReportModules.push(counselor360ReportModule);\r\n\r\n // // this.ReportModules = this.reportService.oneSisModules;\r\n\r\n // // this.selectedReportModule = OneSisModule.All; // defaults to ALL\r\n // }\r\n\r\n\r\n reportSettingsClick(report: Report) {\r\n this.reportService.SelectedReport = report;\r\n this.reportService.ReportFolders = this.myReportFolders;\r\n\r\n this.reportSettingsDialogRef = this.reportSettingsDialog.open(ReportSettingsFoldersComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.reportSettingsDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (result > '') {\r\n\r\n // refresh folder list for next use of report folder settings\r\n this.getMyReportFolders();\r\n\r\n // refresh folder list on all reports page\r\n this.getAllReports(OneSisModule.All, this.selectedSchoolId);\r\n // this.ReportFolders = this.reportService.ReportFolders;\r\n }\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportsComponent =>reportSettingsDialogRef.afterClosed()');\r\n // }\r\n });\r\n }\r\n\r\n autorunSettingsClick(report: Report) {\r\n this.reportService.SelectedReport = report;\r\n this.reportService.ReportFolders = this.ReportFolders;\r\n this.reportService.isForSchedule = true;\r\n\r\n // check that allowAutoRunReport (system) and AllowAutoRun(report and that report is in a folder\r\n // if not, show message\r\n if (this.allowAutoRunReport == false || report.AllowAutoRun == false || report.ReportFolder == '') {\r\n this.reportAutoRunMessageDialogRef = this.reportAutoRunMessageDialog.open(ReportAutoRunMessageComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n return;\r\n }\r\n\r\n\r\n // call report params load and pop up and show autorun setting within\r\n\r\n // we will need to determine if this is a new or existing autorun when populating parameters\r\n\r\n let isExistingAutorun = false;\r\n if (report.AutoRunSchedule_ID > 0) {\r\n // pull saved parameters\r\n isExistingAutorun = true;\r\n }\r\n\r\n this.reportService.getReportParameters(-1, report, isExistingAutorun).subscribe(selectedReport => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(selectedReport);\r\n // }\r\n\r\n this.reportService.SelectedReport = selectedReport;\r\n this.openReportParametersWindow();\r\n\r\n });\r\n }\r\n\r\n reportOptionsClick(report: Report) {\r\n this.reportService.SelectedReport = report;\r\n this.reportService.isFromMenu = true;\r\n // this.reportService.ReportFolders = this.myReportFolders;\r\n\r\n this.reportOptionsDialogRef = this.reportOptionsDialog.open(ReportOptionsComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.reportOptionsDialogRef.afterClosed().subscribe(result => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportsComponent =>reportOptionsDialogRef.afterClosed()');\r\n // }\r\n\r\n // if (result > '') {\r\n // this.getMyReportFolders();\r\n // }\r\n\r\n });\r\n\r\n }\r\n\r\n getMyReportFolders(): void {\r\n this.reportService.getMyReportFolders().subscribe(reportFolders => {\r\n this.reportService.ReportFolders = reportFolders;\r\n this.myReportFolders = reportFolders;\r\n\r\n // this.expandAllRows(-1, true);\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportsComponent => reportService.ReportFolders: ' + this.reportService.ReportFolders.length);\r\n // console.log('AllReportsComponent => getMyReportFolders() - Report Folder(s) below');\r\n // console.log(this.reportService.ReportFolders);\r\n // }\r\n });\r\n }\r\n\r\n\r\n getAllReports(moduleId: number, schoolId: number): void {\r\n schoolId = this.selectedSchoolId;\r\n this.reportService.getAllReports(moduleId, schoolId).subscribe(reports => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(reports);\r\n // console.log(this.ReportFolders);\r\n // }\r\n\r\n\r\n // this.ReportFolders[0].Reports = reports;\r\n this.Reports = reports;\r\n this.reportService.ReportFolders = this.ReportFolders;\r\n\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportsComponent => SelectFolders length: ' + this.reportService.ReportFolders.length);\r\n // console.log('AllReportsComponent => folderIds: ' + this.folderIds);\r\n // console.log('AllReportsComponent => reportIds: ' + this.reportIds);\r\n // console.log(this.ReportFolders);\r\n\r\n\r\n\r\n\r\n // }\r\n\r\n this.loadReportData();\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportsComponent => angularMatData');\r\n // console.log(this.angularMatData);\r\n\r\n // }\r\n });\r\n }\r\n\r\n selectFolder(folderID) {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportsComponent => selectFolder(' + folderID + ')');\r\n // }\r\n\r\n }\r\n\r\n reportClicked(report) {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportsComponent => reportClicked(' + report.Name + ', IsSysGen=' + report.IsSysGen + ')');\r\n // }\r\n\r\n this.reportService.isFromMenu = false;\r\n\r\n this.reportService.getReportParameters(-1, report).subscribe(selectedReport => {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(selectedReport);\r\n // }\r\n\r\n this.reportService.SelectedReport = selectedReport;\r\n this.openReportParametersWindow();\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n openReportParametersWindow() {\r\n this.reportParametersDialogRef = this.dialog.open(ReportParametersComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n // this.reportParametersDialogRef.beforeClose().subscribe(result => {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('shared/HeaderComponent =>reportsDialogRef.beforeClose()');\r\n // }\r\n // });\r\n\r\n // this.reportParametersDialogRef.afterClosed().subscribe(result => {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('shared/HeaderComponent =>reportsDialogRef.afterClosed()');\r\n // }\r\n // });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n isEven(folderId) {\r\n return (folderId % 2) === 0;\r\n }\r\n\r\n\r\n closeClick() {\r\n\r\n // this.reportParametersDialogRef.close();\r\n // this.reportService.close();\r\n }\r\n\r\n\r\n\r\n getReports(moduleId: number) {\r\n\r\n // console.log(moduleId);\r\n this.getAllReports(moduleId, this.selectedSchoolId);\r\n\r\n\r\n }\r\n\r\n filterReports(report) {\r\n if (this.reportSearch == '' || this.reportSearch == '%') {\r\n return true;\r\n }\r\n else {\r\n if (this.reportSearch.charAt(0) == '\"' && this.reportSearch.charAt(this.reportSearch.length - 1) == '\"') {\r\n return this.reportSearch.toLowerCase().substring(1, this.reportSearch.length - 1) == report.Name.toLowerCase();\r\n }\r\n else {\r\n const searchTerm = this.reportSearch + '%';\r\n return new RegExp('^' + searchTerm.toLowerCase().split('%').join('.*') + '$').test(report.Name.toLowerCase());\r\n }\r\n }\r\n\r\n }\r\n\r\n setSearchMessageVisible(showSearchMessage: boolean) {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('setSearchMessageVisible');\r\n // console.log(showSearchMessage);\r\n // }\r\n this.showSearchMessage = !this.showSearchMessage;\r\n }\r\n\r\n\r\n\r\n\r\n searchReport() {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log();\r\n // }\r\n\r\n this.showSearchMessage = !this.showSearchMessage;\r\n\r\n\r\n }\r\n\r\n\r\n clearSearchReport() {\r\n // this.reportFilter.reportSearch = '';\r\n // this.searchReport();\r\n // this.IsReportSearch = false;\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportComponent.ts => clearSearchReport()');\r\n // }\r\n }\r\n\r\n expandAll(expand) {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('AllReportComponent.ts => expandAllClick( ' + expand + ')');\r\n // console.log('ReportFolders: ' + this.ReportFolders);\r\n // console.log('expandedRows: ' + this.expandedRows);\r\n // }\r\n\r\n\r\n\r\n }\r\n\r\n} // end export class MyReports\r\n\r\n\r\n\r\n\r\n","\r\nexport class Element {\r\n\r\n Element_ID: number;\r\n ElementArea_ID: number;\r\n ElementAreaName: string;\r\n ElementSubAreaName: string;\r\n ElementSubAreas: string[] = [];\r\n ElementName: string;\r\n ControlName: string;\r\n XPath: string;\r\n ParameterName: string;\r\n ParameterValue: string;\r\n Action: string;\r\n Actions: string[] = [];\r\n}\r\n\r\nexport class ElementAction {\r\n Element: Element;\r\n Action: string;\r\n}\r\n\r\nexport enum AutomatedTestStatus {\r\n InProgress = 0,\r\n ReadyForReview = 1,\r\n Approved = 2,\r\n IsObsolete = 3\r\n}\r\n\r\nexport class AutomatedTest {\r\n Test_ID: number;\r\n TestArea_ID: number;\r\n TestAreaName: string;\r\n TestSubAreaName: string;\r\n TestName: string;\r\n TestOrder: number;\r\n InProgress: boolean;\r\n ReadyForReview: boolean;\r\n Approved: boolean;\r\n IsObsolete: boolean;\r\n IsSubTestOnly: boolean;\r\n IsInsertedStep = false;\r\n SubTestElement_ID: number;\r\n Parameter: AutomatedTestParameter;\r\n SelectedStatus: AutomatedTestStatus;\r\n SelectedStatusDescription: string;\r\n Comments: string;\r\n CopyTestId: number;\r\n}\r\n\r\nexport class AutomatedTestStep {\r\n Test_ID: number;\r\n TestArea_ID: number;\r\n TestAreaName: string;\r\n TestSubAreaName: string;\r\n TestName: string;\r\n TestOrder: number;\r\n InProgress: boolean;\r\n ReadyForReview: boolean;\r\n Approved: boolean;\r\n IsSubTestOnly: boolean;\r\n Step_ID: number;\r\n StepName: string;\r\n StepOrder: number;\r\n Elements: Element[] = [];\r\n Element: Element;\r\n Element_ID: number;\r\n ElementArea_ID: number;\r\n ElementAreaName: string;\r\n ElementSubAreaName: string;\r\n ElementSubAreas: string[] = [];\r\n ElementName: string;\r\n PageTitle: string;\r\n XPath: string;\r\n ControlName: string;\r\n Action_ID: number;\r\n ActionName = '';\r\n Parameter_ID: number;\r\n ParameterName: string;\r\n ParameterValue: string;\r\n InnerTest_ID: number;\r\n InnerTestName: string;\r\n Comments: string;\r\n}\r\n\r\nexport class AutomatedTestArea {\r\n Area_ID: number;\r\n AreaName: string;\r\n SubAreaName: string;\r\n}\r\n\r\nexport class AutomatedTestParameter {\r\n ID: number;\r\n ParameterName: string;\r\n ParameterValue: string;\r\n Test_ID: number;\r\n}\r\n\r\nexport class SubTestDependentTest {\r\n Area_ID: number;\r\n AreaName: string;\r\n SubAreaName: string;\r\n Test_ID: number;\r\n TestName: string;\r\n StepOrder: number;\r\n}\r\n\r\nexport class AutomatedTestStepQuickView {\r\n Test_ID: number;\r\n TestArea_ID: number;\r\n TestAreaName: string;\r\n TestSubAreaName: string;\r\n TestName: string;\r\n TestOrder: number;\r\n InProgress: boolean;\r\n ReadyForReview: boolean;\r\n Approved: boolean;\r\n IsSubTestOnly: boolean;\r\n Step_ID: number;\r\n StepName: string;\r\n StepOrder: number;\r\n Elements: Element[] = [];\r\n Element: Element;\r\n Element_ID: number;\r\n ElementArea_ID: number;\r\n ElementAreaName: string;\r\n ElementSubAreaName: string;\r\n ElementName: string;\r\n PageTitle: string;\r\n XPath: string;\r\n ControlName: string;\r\n Action_ID: number;\r\n ActionName = '';\r\n Parameter_ID: number;\r\n ParameterName: string;\r\n ParameterValue: string;\r\n InnerTest_ID: number;\r\n InnerTestName: string;\r\n TestComments: string;\r\n StepComments: string;\r\n}\r\n\r\n\r\n\r\n","

{{title}}

\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
Parameter NameParameter Value
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n
ModulePortalTest NameTest Order
\r\n \r\n \r\n \r\n {{item.AreaName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{item}}\r\n \r\n \r\n \r\n \r\n \r\n {{selectedTest.TestName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Shared Test\r\n \r\n\r\n \r\n \r\n \r\n In Progress\r\n Ready for Review\r\n Approved\r\n Obsolete\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n\r\n
\r\n Comments
\r\n \r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n","import { Component, OnInit, OnDestroy, Inject, } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { AutomatedTest, AutomatedTestArea, AutomatedTestParameter, AutomatedTestStatus } from '../models/ast-element.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'automatedTestingModal',\r\n templateUrl: './automated-testing-modal.component.html',\r\n styleUrls: ['./automated-testing-modal.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\n\r\n\r\nexport class AutomatedTestingModalComponent implements OnInit, OnDestroy {\r\n\r\n\r\n\r\n thisDialogRef: MatDialogRef;\r\n\r\n // testAreas: string[];\r\n // testArea = '';\r\n\r\n // testSubAreas: string[];\r\n // testSubArea = '';\r\n\r\n // elementAreas: string[];\r\n // elementArea = '';\r\n\r\n // elementSubAreas: string[];\r\n // elementSubArea = '';\r\n\r\n // tests: AutomatedTest[] = [];\r\n // test: AutomatedTest;\r\n\r\n\r\n // testSteps: AutomatedTestStep[] = [];\r\n\r\n // allElements: Element[];\r\n // elements: Element[];\r\n // // element: Element;\r\n\r\n // // elementActions: ElementAction[];\r\n\r\n // identifiers: string[];\r\n\r\n // actions: string[];\r\n\r\n // action = '';\r\n // controlName = '';\r\n // identifier = '';\r\n // dataInput = '';\r\n // testText = '';\r\n // testData = '';\r\n\r\n // elementListItems: DataSource[] = [];\r\n // allElementsListItems: DataSource[] = [];\r\n\r\n // showTests = true;\r\n // showTestSteps = false;\r\n\r\n action: string;\r\n title: string;\r\n\r\n editTest = false;\r\n addTest = false;\r\n addSubTest = false;\r\n\r\n test: AutomatedTest;\r\n tests: AutomatedTest[] = [];\r\n testsInArea: AutomatedTest[] = [];\r\n // selectedTest: AutomatedTest;\r\n\r\n testAreas: string[] = [];\r\n testArea = '';\r\n\r\n allAreas: AutomatedTestArea[] = [];\r\n distinctAreas: AutomatedTestArea[] = [];\r\n distinctTestAreas: AutomatedTestArea[] = [];\r\n\r\n selectedArea: string; // AutomatedTestArea;\r\n\r\n testSubAreas: string[] = [];\r\n testSubArea = '';\r\n\r\n testOrder: number;\r\n stepOrder: number;\r\n\r\n insertStep = false;\r\n insertStepType = '';\r\n\r\n addStep = false;\r\n addStepType = '';\r\n addParameter = false;\r\n editParameter = false;\r\n\r\n parameterName: string;\r\n parameterValue: string;\r\n\r\n\r\n parameter: AutomatedTestParameter;\r\n\r\n copyTestId: number;\r\n copyTest = false;\r\n parentTest_ID: number;\r\n inDebugMode = true;\r\n\r\n // addStepComment = false;\r\n // editStepComment = false;\r\n // step: AutomatedTestStep;\r\n\r\n\r\n constructor(\r\n automatedTestingModalDialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n\r\n ) {\r\n\r\n this.inDebugMode = false;\r\n\r\n this.thisDialogRef = automatedTestingModalDialogRef;\r\n\r\n if (data.parameter == null || data.parameter == undefined) {\r\n this.parameter = new AutomatedTestParameter();\r\n this.parameterName = '';\r\n this.parameterValue = '';\r\n }\r\n else {\r\n this.parameter = data.parameter;\r\n this.parameterName = this.parameter.ParameterName;\r\n this.parameterValue = this.parameter.ParameterValue;\r\n }\r\n\r\n this.title = data.title;\r\n\r\n\r\n\r\n // console.log(this.parameter);\r\n\r\n\r\n this.testAreas = data.testAreas;\r\n this.testSubAreas = data.testSubAreas;\r\n this.testOrder = data.testOrder;\r\n this.stepOrder = data.stepOrder;\r\n this.parentTest_ID = data.parentTest_ID;\r\n this.tests = data.tests.filter(t => t.Test_ID != this.parentTest_ID); // we want to exclude the test we are coming from\r\n // console.log(this.tests);\r\n // console.log(this.parentTest_ID);\r\n\r\n this.allAreas = data.allAreas;\r\n // this.step = data.step;\r\n\r\n this.distinctAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n\r\n if (this.data.action == 'copyTest') {\r\n this.copyTest = true;\r\n this.copyTestId = data.copyTestId;\r\n } else {\r\n this.copyTest = false;\r\n this.copyTestId = 0;\r\n }\r\n\r\n if (this.data.action == 'editTest' || this.data.action == 'addParameter' || this.data.action == 'editParameter') {\r\n this.test = data.test;\r\n this.selectedArea = this.test.TestAreaName;\r\n this.testSubArea = this.test.TestSubAreaName;\r\n this.testArea = this.test.TestAreaName;\r\n }\r\n\r\n if (this.data.action == 'editTest') {\r\n this.editTest = true;\r\n }\r\n\r\n const tst = this.tests.filter(t => t.Test_ID != this.parentTest_ID);\r\n // console.log(tst);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // console.log(this.data);\r\n\r\n for (let x = 0; x < this.distinctAreas.length; x++) {\r\n // we only want top level portals for tests\r\n // if (this.distinctAreas[x].AreaName == 'Classroom360' || this.distinctAreas[x].AreaName == 'Student360' || this.distinctAreas[x].AreaName == 'Practice360' || this.distinctAreas[x].AreaName == 'Portal') {\r\n // this.distinctTestAreas.push(this.distinctAreas[x]);\r\n // }\r\n\r\n this.distinctTestAreas.push(this.distinctAreas[x]);\r\n }\r\n\r\n if (this.data.action == 'editTest' || this.data.action == 'addParameter' || this.data.action == 'editParameter') {\r\n // console.log(this.data.action);\r\n } else {\r\n this.test = new AutomatedTest();\r\n this.test.Test_ID = 0;\r\n\r\n this.test.InProgress = true;\r\n this.test.ReadyForReview = false;\r\n this.test.Approved = false;\r\n this.test.IsObsolete = false;\r\n this.test.SelectedStatus = AutomatedTestStatus.InProgress;\r\n }\r\n\r\n\r\n if (this.data.action == 'copyTest') {\r\n this.test.CopyTestId = this.copyTestId;\r\n }\r\n\r\n if (this.data.action == 'addTest' || this.data.action == 'copyTest') {\r\n this.addTest = true;\r\n this.test.TestOrder = this.testOrder;\r\n\r\n // // console.log(this.testOrder);\r\n }\r\n\r\n if (this.data.action == 'addSubTest') {\r\n this.addSubTest = true;\r\n // this.test.TestOrder = this.testOrder;\r\n\r\n // // console.log(this.tests);\r\n }\r\n\r\n if (this.data.action == 'insertStep') {\r\n this.insertStep = true;\r\n this.addSubTest = true;\r\n this.insertStepType = 'Regular Step';\r\n // this.test.TestOrder = this.testOrder;\r\n\r\n }\r\n\r\n if (this.data.action == 'addParameter') {\r\n this.addParameter = true;\r\n }\r\n\r\n if (this.data.action == 'editParameter') {\r\n this.editParameter = true;\r\n }\r\n\r\n // if (this.data.action == 'editStepComment') {\r\n // this.editStepComment = true;\r\n // }\r\n\r\n // if (this.data.action == 'addStepComment') {\r\n // this.addStepComment = true;\r\n // }\r\n\r\n\r\n // console.log(this.insertStepType);\r\n\r\n // for (let x = 0; x < this.allAreas.length; x++) {\r\n // if (this.allAreas[x].AreaName == this.selectedArea && this.allAreas[x].SubAreaName == this.testSubArea) {\r\n // this.test.TestArea_ID = this.allAreas[x].Area_ID;\r\n // }\r\n // }\r\n\r\n\r\n if (this.test.IsSubTestOnly == null || this.test.IsSubTestOnly == undefined) {\r\n this.test.IsSubTestOnly = false;\r\n }\r\n\r\n // console.log(this.test);\r\n // console.log(this.parameter);\r\n\r\n\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n\r\n\r\n toggleStepType() {\r\n\r\n // console.log('BEFORE:');\r\n // console.log(this.insertStepType);\r\n if (this.insertStepType == 'Regular Step') {\r\n this.insertStepType = 'Shared Test';\r\n } else {\r\n this.insertStepType = 'Regular Step';\r\n }\r\n\r\n // console.log('AFTER:');\r\n // console.log(this.insertStepType);\r\n }\r\n\r\n saveClick() {\r\n if (this.addParameter || this.editParameter) {\r\n\r\n // Parameter_ID: number;\r\n // ParameterName: string;\r\n // ParameterValue: string;\r\n\r\n // console.log('HERE!!!!');\r\n\r\n if (this.parameter.ParameterName == null || this.parameter.ParameterName == undefined || this.parameter.ParameterName == '') {\r\n // doing this until I wire up required checks\r\n return;\r\n }\r\n\r\n if (this.parameter.ParameterValue == null || this.parameter.ParameterValue == undefined) {\r\n this.parameter.ParameterValue = '';\r\n }\r\n\r\n\r\n // console.log(this.parameter);\r\n\r\n this.test.Parameter = this.parameter;\r\n\r\n this.reportService.saveAutomatedTestParameter(this.test.Test_ID, this.parameter).subscribe(results => {\r\n // console.log(results);\r\n\r\n // if (this.test.Parameter.ID == 0) {\r\n // this.test.Parameter.ID = results;\r\n // }\r\n this.thisDialogRef.close('addParameter');\r\n });\r\n\r\n // this.thisDialogRef.close(this.test);\r\n\r\n } else {\r\n\r\n this.test.TestSubAreaName = this.testSubArea;\r\n this.test.TestAreaName = this.testArea; // ??\r\n\r\n if (this.inDebugMode) {\r\n console.log(this.test);\r\n console.log(this.testArea);\r\n console.log(this.testSubArea);\r\n console.log(this.selectedArea);\r\n console.table(this.allAreas);\r\n }\r\n\r\n\r\n for (let x = 0; x < this.allAreas.length; x++) {\r\n if (this.allAreas[x].AreaName == this.selectedArea && this.allAreas[x].SubAreaName == this.testSubArea) {\r\n this.test.TestArea_ID = this.allAreas[x].Area_ID;\r\n }\r\n }\r\n\r\n\r\n this.reportService.saveAutomatedTest(this.test.Test_ID, this.test).subscribe(results => {\r\n // console.log(results);\r\n\r\n if (this.test.Test_ID == 0) {\r\n this.test.Test_ID = results;\r\n }\r\n this.thisDialogRef.close(this.test);\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n\r\n closeClick() {\r\n this.thisDialogRef.close();\r\n }\r\n\r\n okClick() {\r\n // console.log(this.insertStep);\r\n // console.log(this.insertStepType);\r\n // console.log(this.addStepComment);\r\n // console.log(this.editStepComment);\r\n\r\n // if (this.addStepComment || this.editStepComment) {\r\n // console.log(this.step);\r\n // this.thisDialogRef.close(this.step);\r\n // return;\r\n // }\r\n\r\n this.test.IsInsertedStep = false;\r\n if (this.insertStep && this.insertStepType == 'Regular Step') {\r\n this.thisDialogRef.close(this.insertStepType);\r\n } else {\r\n\r\n if (this.insertStep && this.insertStepType == 'Shared Test') {\r\n this.test.IsInsertedStep = true;\r\n }\r\n\r\n if (this.inDebugMode) {\r\n console.log(this.test);\r\n }\r\n // console.log(this.test);\r\n this.thisDialogRef.close(this.test);\r\n }\r\n }\r\n\r\n testAreaChanged() {\r\n\r\n // console.log(this.test);\r\n // console.log(this.selectedArea);\r\n\r\n\r\n this.testSubAreas = [];\r\n for (let x = 0; x < this.allAreas.length; x++) {\r\n if (this.allAreas[x].AreaName == this.selectedArea) {\r\n this.testSubAreas.push(this.allAreas[x].SubAreaName);\r\n }\r\n }\r\n // // console.log(this.tests);\r\n\r\n this.testsInArea = [];\r\n for (let x = 0; x < this.tests.length; x++) {\r\n this.testsInArea.push(this.tests[x]);\r\n // if (this.tests[x].TestAreaName == this.testArea && this.tests[x].TestSubAreaName == this.testSubArea) {\r\n // this.testsInArea.push(this.tests[x]);\r\n // }\r\n }\r\n\r\n\r\n }\r\n\r\n testSubAreaChanged(event: any) {\r\n this.testsInArea = [];\r\n // // console.log(event);\r\n // console.table(this.tests);\r\n for (let x = 0; x < this.tests.length; x++) {\r\n // // console.log(this.testArea);\r\n // // console.log(this.testSubArea);\r\n\r\n if (this.tests[x].TestAreaName == this.testArea && this.tests[x].TestSubAreaName == this.testSubArea) {\r\n this.testsInArea.push(this.tests[x]);\r\n }\r\n }\r\n }\r\n\r\n testChanged() {\r\n\r\n }\r\n\r\n setTestArea(area: AutomatedTestArea) {\r\n // // console.log(area);\r\n this.testArea = area.AreaName;\r\n // // console.log(this.testArea);\r\n }\r\n\r\n setTestSubArea(subarea: string) {\r\n // // console.log(subarea);\r\n this.testSubArea = subarea;\r\n }\r\n\r\n copyTestClick() {\r\n\r\n }\r\n\r\n testStatusChange(theTest: AutomatedTest, event: number) {\r\n\r\n theTest.InProgress = false;\r\n theTest.ReadyForReview = false;\r\n theTest.Approved = false;\r\n theTest.IsObsolete = false;\r\n if (event == AutomatedTestStatus.InProgress) {\r\n theTest.InProgress = true;\r\n }\r\n if (event == AutomatedTestStatus.ReadyForReview) {\r\n theTest.ReadyForReview = true;\r\n }\r\n if (event == AutomatedTestStatus.Approved) {\r\n theTest.Approved = true;\r\n }\r\n if (event == AutomatedTestStatus.IsObsolete) {\r\n theTest.IsObsolete = true;\r\n }\r\n\r\n // console.log(theTest);\r\n // console.log(event);\r\n\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","
{{PageTitle}}
\r\n\r\n\r\n \r\n\r\n
\r\n

Changes have been entered but not saved.

\r\n
\r\n\r\n
\r\n {{Message}}\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n","import { Component, OnDestroy, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'ConfirmModal',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.css']\r\n})\r\n\r\nexport class ConfirmModalComponent implements OnDestroy, OnInit {\r\n\r\n PageTitle: string;\r\n Message: string;\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n ) {\r\n this.PageTitle = data.PageTitle;\r\n this.Message = data.Message;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n okClick() {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n continueWithoutSavingClick() {\r\n this.dialogRef.close('ContinueWithoutSaving');\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n\r\n}\r\n","
{{PageTitle}}
\r\n\r\n \r\n \r\n
\r\n {{Message}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Module NamePortal NameTest NameStep
\r\n {{test.AreaName}}\r\n \r\n {{test.SubAreaName}}\r\n \r\n {{test.TestName}}\r\n \r\n #{{test.StepOrder}}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
Parameters
{{param.ParameterName}}{{param.ParameterValue}}
\r\n
 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
Steps
Shared TestPageTab/ViewElement NameControlActionData InputStep Comments
\r\n #{{step.StepOrder}}\r\n \r\n {{step.TestName}}\r\n \r\n {{step.ElementAreaName}}\r\n \r\n {{step.ElementSubAreaName}}\r\n \r\n {{step.ElementName}} \r\n \r\n {{step.ControlName}}\r\n \r\n {{step.ActionName}}
\r\n
\r\n {{step.ParameterValue}}\r\n \r\n {{step.StepComments}}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n ","import { Component, OnDestroy, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { AutomatedTest, SubTestDependentTest, AutomatedTestStepQuickView, AutomatedTestParameter } from '../models/ast-element.model';\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'ASTQuickView',\r\n templateUrl: './quickview.component.html',\r\n styleUrls: ['./quickview.component.css']\r\n})\r\n\r\nexport class QuickViewModalComponent implements OnDestroy, OnInit {\r\n\r\n PageTitle: string;\r\n Message: string;\r\n Test: AutomatedTest;\r\n dependentTests: SubTestDependentTest[] = [];\r\n ActionToTake: string;\r\n viewDependentTests = false;\r\n showTestSteps = false;\r\n testSteps: AutomatedTestStepQuickView[] = [];\r\n parameters: AutomatedTestParameter[] = [];\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n ) {\r\n this.PageTitle = data.PageTitle;\r\n this.Message = data.Message;\r\n this.Test = data.Test;\r\n this.viewDependentTests = data.viewDependentTests;\r\n this.showTestSteps = data.showTestSteps;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (this.viewDependentTests) {\r\n this.reportService.getSubTestDependentTests(this.Test.Test_ID).subscribe(dependentTests => {\r\n // console.log(dependentTests);\r\n this.dependentTests = dependentTests;\r\n });\r\n }\r\n\r\n if (this.showTestSteps) {\r\n this.reportService.getAutomatedTestQuickView(this.Test.Test_ID).subscribe(testSteps => {\r\n // console.log(testSteps);\r\n this.testSteps = testSteps;\r\n\r\n this.reportService.getAutomatedTestParameters(this.Test.Test_ID, 0).subscribe(res => {\r\n // console.log(res);\r\n this.parameters = res;\r\n\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n // showComments(comments: string) {\r\n // console.log(comments);\r\n // }\r\n\r\n // okClick() {\r\n\r\n\r\n\r\n // this.dialogRef.close(true);\r\n // }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n}","
{{ PageTitle }}
\r\n\r\n \r\n \r\n
\r\n {{ Message }}\r\n \r\n \r\n Page Name
\r\n \r\n \r\n {{ item.AreaName }}\r\n \r\n \r\n \r\n \r\n Tab / View
\r\n \r\n \r\n {{ item }}\r\n \r\n \r\n \r\n \r\n Element Name
\r\n \r\n \r\n \r\n XPath
\r\n \r\n \r\n \r\n Control Type
\r\n \r\n \r\n {{ item }}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n \r\n
\r\n {{ Message }}\r\n \r\n \r\n Module | Page Name
\r\n \r\n \r\n {{ item.AreaName }}\r\n \r\n \r\n \r\n \r\n Portal | Tab / View
\r\n \r\n \r\n {{ item }}\r\n \r\n \r\n \r\n \r\n Element Name
\r\n \r\n \r\n \r\n XPath
\r\n \r\n \r\n \r\n Control Type
\r\n \r\n \r\n {{ item }}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n","import { Component, OnDestroy, OnInit, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { Element, AutomatedTestArea } from '../models/ast-element.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { MenuItem } from '../../../shared-components/controls/menus/menu-item.model';\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'ElementAddEditModalComponent',\r\n templateUrl: './element-add-edit-modal.component.html',\r\n styleUrls: ['./element-add-edit-modal.component.css']\r\n})\r\n\r\nexport class ElementAddEditModalComponent implements OnDestroy, OnInit {\r\n\r\n PageTitle: string;\r\n Message: string;\r\n\r\n dataSource: TylerMatTableDataSource;\r\n\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n\r\n allElements: Element[] = [];\r\n allAreas: AutomatedTestArea[] = [];\r\n distinctTestAreas: AutomatedTestArea[] = [];\r\n distinctElements: Element[] = [];\r\n selectedArea: AutomatedTestArea[] = []; // This is used to set the Area ID\r\n selection: string;\r\n\r\n elemAreas: string[] = [];\r\n elemSubAreas: string[] = [];\r\n allControlNames: string[] = [];\r\n\r\n elementArea: string;\r\n elementSubArea: string;\r\n elementControlName: string;\r\n newModuleName: string;\r\n newPortalName: string;\r\n elementId: number;\r\n areaId: number;\r\n\r\n elementName: string;\r\n @ViewChild('NewElementName') name: ElementRef;\r\n\r\n elementXPath: string;\r\n @ViewChild('NewElementXPath') xpath: ElementRef;\r\n\r\n @ViewChild('NewAreaName') module: ElementRef;\r\n\r\n @ViewChild('NewPortalName') portal: ElementRef;\r\n\r\n newElement: Element = {\r\n Element_ID: 0,\r\n ElementArea_ID: 0,\r\n ElementName: '',\r\n ElementAreaName: '',\r\n ElementSubAreaName: '',\r\n ElementSubAreas: [],\r\n ControlName: '',\r\n XPath: '',\r\n ParameterName: '',\r\n ParameterValue: '',\r\n Action: '',\r\n Actions: []\r\n };\r\n\r\n newArea: AutomatedTestArea = {\r\n Area_ID: 0,\r\n AreaName: '',\r\n SubAreaName: ''\r\n };\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay: string[] = []\r\n subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n ) {\r\n this.PageTitle = data.PageTitle;\r\n this.Message = data.Message;\r\n\r\n this.elementArea = data.elementArea;\r\n this.elementSubArea = data.elementSubArea;\r\n this.elementName = data.elementName;\r\n this.elementXPath = data.elementXPath;\r\n this.elementControlName = data.elementControlName;\r\n this.elementId = data.elementId;\r\n }\r\n\r\n ngOnInit() {\r\n this.getTestAreas();\r\n this.getControlTypes();\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n okClick() {\r\n switch (this.PageTitle) {\r\n case 'Create New Element':\r\n this.createNewElement();\r\n break;\r\n case 'Update Element':\r\n this.updateElement();\r\n break;\r\n default:\r\n alert('This functionality not yet implemented.');\r\n break;\r\n }\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n setElementArea(area: AutomatedTestArea) {\r\n this.elementArea = area.AreaName;\r\n }\r\n\r\n setElementSubArea(subarea: string) {\r\n this.elementSubArea = subarea;\r\n }\r\n\r\n setElementName() {\r\n this.elementName = this.name.nativeElement.value;\r\n }\r\n\r\n setElementXPath() {\r\n this.elementXPath = this.xpath.nativeElement.value;\r\n }\r\n\r\n setElementControl(controlname: string) {\r\n this.elementControlName = controlname;\r\n }\r\n\r\n getTestAreas() {\r\n this.reportService.getAutomatedTestAreas(0).subscribe(myAreas => {\r\n this.allAreas = myAreas;\r\n this.distinctTestAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n this.distinctTestAreas.sort((a, b) => a.AreaName > b.AreaName ? 1 : -1);\r\n });\r\n }\r\n\r\n getElements(area: AutomatedTestArea) {\r\n // get elements for test\r\n this.reportService.getAutomatedTestElements(0).subscribe(elem => {\r\n this.allElements = elem;\r\n this.allElements = this.allElements.filter(e => e.ElementAreaName == area.AreaName);\r\n this.allElements.sort((a, b) => a.ElementName > b.ElementName ? 1 : -1);\r\n });\r\n }\r\n\r\n getSubAreas(areaName: string) {\r\n const filteredAreas = this.allAreas.filter(a => a.AreaName === areaName).sort((a, b) => a.SubAreaName > b.SubAreaName ? 1 : -1);\r\n\r\n for (const item of filteredAreas) {\r\n this.elemSubAreas.push(item.SubAreaName);\r\n }\r\n }\r\n\r\n createNewElement() {\r\n // Assemble the new element from the information that has been input by the user\r\n this.setElementName();\r\n this.setElementXPath();\r\n\r\n this.newElement.ElementAreaName = this.elementArea;\r\n this.newElement.ElementSubAreaName = this.elementSubArea;\r\n this.newElement.ElementName = this.elementName;\r\n this.newElement.XPath = this.elementXPath;\r\n this.newElement.ControlName = this.elementControlName;\r\n\r\n if (this.elementArea === undefined\r\n || this.elementSubArea === undefined\r\n || this.elementName === undefined\r\n || this.elementName === ''\r\n || this.elementXPath === undefined\r\n || this.elementXPath === ''\r\n || this.elementControlName === undefined) {\r\n alert('Please make sure that all of the fields are populated.');\r\n } else {\r\n // Save the new element to the AST_Elements table\r\n this.reportService.saveAutomatedTestElement(this.newElement).subscribe(results => { });\r\n\r\n alert(`New element ${ this.elementName } successfully created.`);\r\n\r\n this.dialogRef.close(true);\r\n }\r\n }\r\n\r\n updateElement() {\r\n this.setElementName();\r\n this.setElementXPath();\r\n this.newElement.ElementAreaName = this.elementArea;\r\n this.newElement.ElementSubAreaName = this.elementSubArea;\r\n this.newElement.ElementName = this.elementName;\r\n this.newElement.XPath = this.elementXPath;\r\n this.newElement.ControlName = this.elementControlName;\r\n\r\n if (this.elementArea === undefined\r\n || this.elementSubArea === undefined\r\n || this.elementName === undefined\r\n || this.elementName === ''\r\n || this.elementXPath === undefined\r\n || this.elementXPath === ''\r\n || this.elementControlName === undefined\r\n ) {\r\n alert('Please make sure that all of the fields are populated.');\r\n } else if (this.elementId === undefined) {\r\n alert(\"Ain't got no legs, Lieutenant Dan.\");\r\n } else {\r\n // Save the new element to the AST_Elements table\r\n this.reportService.updateAutomatedTestElement(this.elementId, this.newElement).subscribe(results => { });\r\n\r\n alert(`Element ${ this.elementName } successfully updated.`);\r\n\r\n this.dialogRef.close(true);\r\n }\r\n }\r\n\r\n getControlTypes() {\r\n // get elements to pull control types from\r\n this.reportService.getAutomatedTestElements(0).subscribe(elem => {\r\n this.allElements = elem;\r\n\r\n for (const item of this.allElements) {\r\n if (!(this.allControlNames.includes(item.ControlName, 0))) {\r\n this.allControlNames.push(item.ControlName);\r\n this.allControlNames.sort((a, b) => a > b ? 1 : -1);\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","
{{ PageTitle }}
\r\n\r\n\r\n \r\n
\r\n {{ Message }}\r\n\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n Page Name\r\n \r\n \r\n {{ element.ElementAreaName }}\r\n \r\n \r\n \r\n Tab / View\r\n \r\n \r\n {{ element.ElementSubAreaName }}\r\n \r\n \r\n \r\n Element Name\r\n \r\n \r\n {{ element.ElementName }}\r\n \r\n \r\n \r\n XPath \r\n \r\n \r\n {{ element.XPath }}\r\n \r\n \r\n \r\n Control Type\r\n \r\n \r\n {{ element.ControlName }}\r\n \r\n \r\n \r\n Action\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n","import { Component, OnDestroy, OnInit, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { Element, AutomatedTestArea } from '../models/ast-element.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { MenuItem } from '../../../shared-components/controls/menus/menu-item.model';\r\nimport { ElementAddEditModalComponent } from './element-add-edit-modal.component';\r\n\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'ElementListModalComponent',\r\n templateUrl: './element-list.component.html',\r\n styleUrls: ['./element-list.component.css']\r\n})\r\n\r\nexport class ElementListModalComponent implements OnDestroy, OnInit {\r\n\r\n PageTitle: string;\r\n Message: string;\r\n\r\n dataSource: TylerMatTableDataSource;\r\n\r\n elementAddEditDialogRef: MatDialogRef;\r\n\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n\r\n topActionMenuItems: string[] = ['Update'];\r\n\r\n\r\n allElements: Element[] = [];\r\n allAreas: AutomatedTestArea[] = [];\r\n distinctTestAreas: AutomatedTestArea[] = [];\r\n distinctElements: Element[] = [];\r\n selectedArea: AutomatedTestArea[] = []; // This is used to set the Area ID\r\n selection: string;\r\n\r\n elementProperties: string[] = [];\r\n\r\n elementArea: string;\r\n elementSubArea: string;\r\n elementControlName: string;\r\n newModuleName: string;\r\n newPortalName: string;\r\n elementId: number;\r\n areaId: number;\r\n\r\n elementName: string;\r\n @ViewChild('NewElementName') name: ElementRef;\r\n\r\n elementXPath: string;\r\n @ViewChild('NewElementXPath') xpath: ElementRef;\r\n\r\n @ViewChild('NewPortalName') portal: ElementRef;\r\n\r\n newElement: Element = {\r\n Element_ID: 0,\r\n ElementArea_ID: 0,\r\n ElementName: '',\r\n ElementAreaName: '',\r\n ElementSubAreaName: '',\r\n ElementSubAreas: [],\r\n ControlName: '',\r\n XPath: '',\r\n ParameterName: '',\r\n ParameterValue: '',\r\n Action: '',\r\n Actions: []\r\n };\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay: string[] = []\r\n subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n _elementAddEditDialogRef: MatDialogRef,\r\n private _elementAddEditDialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n ) {\r\n this.PageTitle = data.PageTitle;\r\n this.Message = data.Message;\r\n }\r\n\r\n ngOnInit() {\r\n this. columnsToDisplay = ['ElementAreaName', 'ElementSubAreaName', 'ElementName', 'XPath', 'ControlType', 'Action'];\r\n this.getAllElements();\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n cancelClick() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n setElementArea(area: AutomatedTestArea) {\r\n this.elementArea = area.AreaName;\r\n }\r\n\r\n setElementAreaForUpdate(area: string) {\r\n this.elementArea = area;\r\n }\r\n\r\n setElementSubArea(subarea: string) {\r\n this.elementSubArea = subarea;\r\n }\r\n\r\n setElementName() {\r\n this.elementName = this.name.nativeElement.value;\r\n }\r\n\r\n setElementNameForUpdate(elementName: string) {\r\n this.elementName = elementName;\r\n }\r\n\r\n setElementXPath() {\r\n this.elementXPath = this.xpath.nativeElement.value;\r\n }\r\n\r\n setElementXPathForUpdate(xpath: string) {\r\n this.elementXPath = xpath;\r\n }\r\n\r\n setElementControl(controlname: string) {\r\n this.elementControlName = controlname;\r\n }\r\n\r\n setElementId(id: number) {\r\n this.elementId = id;\r\n }\r\n\r\n // This method is used for getting all of the elements for the Element List page.\r\n getAllElements() {\r\n this.reportService.getAutomatedTestElements(0).subscribe(elem => {\r\n // Get and sort all elements; filter out tests.\r\n this.allElements = elem;\r\n this.allElements.sort((a, b) => a.ElementAreaName > b.ElementAreaName ? 1: -1)\r\n this.allElements = this.allElements.filter(e => e.ControlName !== \"Test\");\r\n\r\n // Populate table and paginate. Filtering will need to be implemented.\r\n this.dataSource = new TylerMatTableDataSource(this.allElements);\r\n this.dataSource.paginator = this.paginator;\r\n });\r\n }\r\n\r\n // This will display the dialog for adding new elements\r\n showElementAdd() {\r\n\r\n this.elementAddEditDialogRef = this._elementAddEditDialog.open(ElementAddEditModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Create New Element',\r\n Message: 'Create a new element.',\r\n }\r\n });\r\n\r\n }\r\n\r\n // This will display the dialog for updating existing elements upon clicking the 'Update' Action button\r\n showElementEdit() {\r\n\r\n this.elementAddEditDialogRef = this._elementAddEditDialog.open(ElementAddEditModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Update Element',\r\n Message: 'Update an existing element.',\r\n elementArea: this.elementArea,\r\n elementSubArea: this.elementSubArea,\r\n elementName: this.elementName,\r\n elementXPath: this.elementXPath,\r\n elementControlName: this.elementControlName,\r\n elementId: this.elementId,\r\n }\r\n });\r\n\r\n this.elementAddEditDialogRef.afterClosed().subscribe( res => {\r\n this.ngOnInit();\r\n })\r\n\r\n }\r\n\r\n // Table-related methods --------------------------------\r\n\r\n getAriaRow(row: any): string {\r\n return '';\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n actionMenuClick(menuItem: MenuItem) {\r\n // const data: ElementsAndAreasModalComponent = menuItem.data;\r\n console.log(this.elementId);\r\n\r\n // this.elementProperties = [this.elementArea, this.elementSubArea, this.elementName, this.elementXPath, this.elementControlName];\r\n\r\n switch (menuItem.itemName) {\r\n case 'Update':\r\n this.showElementEdit();\r\n break;\r\n }\r\n }\r\n\r\n\r\n}\r\n","
{{ PageTitle }}
\r\n\r\n\r\n \r\n
\r\n {{ Message }}\r\n \r\n Module
\r\n \r\n \r\n {{ item.AreaName }}\r\n \r\n \r\n \r\n \r\n Portal
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n {{ Message }}\r\n \r\n Page Name
\r\n \r\n \r\n \r\n Tab / View
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n {{ Message }}\r\n \r\n Module
\r\n \r\n \r\n {{ item.AreaName }}\r\n \r\n \r\n \r\n \r\n Portal
\r\n \r\n \r\n
\r\n\r\n\r\n \r\n
\r\n {{ Message }}\r\n \r\n Page Name
\r\n \r\n \r\n \r\n Tab / View
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n","import { Component, OnDestroy, OnInit, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { AutomatedTestArea } from '../models/ast-element.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'AreaAddEditModal',\r\n templateUrl: './area-add-edit-modal.component.html',\r\n styleUrls: ['./area-add-edit-modal.component.css']\r\n})\r\n\r\nexport class AreaAddEditModalComponent implements OnDestroy, OnInit {\r\n\r\n PageTitle: string;\r\n Message: string;\r\n\r\n dataSource: TylerMatTableDataSource;\r\n\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n\r\n topActionMenuItems: string[] = ['Update'];\r\n\r\n allAreas: AutomatedTestArea[] = [];\r\n distinctTestAreas: AutomatedTestArea[] = [];\r\n selectedArea: AutomatedTestArea[] = []; // This is used to set the Area ID\r\n selection: string;\r\n\r\n elementArea: string;\r\n elemAreas: string[] = [];\r\n elemSubAreas: string[] = [];\r\n\r\n newModuleName: string;\r\n newPortalName: string;\r\n areaId: number;\r\n\r\n areaName: string;\r\n subAreaName: string;\r\n\r\n @ViewChild('NewAreaName') module: ElementRef;\r\n\r\n @ViewChild('NewPortalName') portal: ElementRef;\r\n\r\n newArea: AutomatedTestArea = {\r\n Area_ID: 0,\r\n AreaName: '',\r\n SubAreaName: ''\r\n };\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay: string[] = []\r\n subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n ) {\r\n this.PageTitle = data.PageTitle;\r\n this.Message = data.Message;\r\n this.distinctTestAreas = data.distinctTestAreas;\r\n this.areaId = data.areaId;\r\n this.areaName = data.areaName;\r\n this.subAreaName = data.subAreaName;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n okClick() {\r\n switch (this.PageTitle) {\r\n case 'Add Portal':\r\n this.createNewArea();\r\n break;\r\n case 'Add Page and/or Tab / View':\r\n this.createNewArea();\r\n break;\r\n case 'Update Portal':\r\n this.updateArea();\r\n break;\r\n case 'Update Page and / or Tab / View':\r\n this.updateArea();\r\n break;\r\n default:\r\n alert('This functionality not yet implemented.');\r\n break;\r\n }\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n\r\n setModuleName() {\r\n this.newModuleName = this.module.nativeElement.value;\r\n }\r\n\r\n setPortalName() {\r\n this.newPortalName = this.portal.nativeElement.value;\r\n }\r\n\r\n setAreaId(subarea: string) {\r\n this.reportService.getAutomatedTestAreas(0).subscribe(myAreas => {\r\n this.allAreas = myAreas;\r\n this.selectedArea = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n this.selectedArea = this.allAreas.filter(a => a.SubAreaName === subarea && a.AreaName === this.elementArea);\r\n this.areaId = this.selectedArea[0].Area_ID;\r\n });\r\n }\r\n\r\n setAreaName(areaName: string) {\r\n this.newModuleName = areaName;\r\n console.log(this.newModuleName);\r\n }\r\n\r\n getTestAreas() {\r\n this.reportService.getAutomatedTestAreas(0).subscribe(myAreas => {\r\n this.allAreas = myAreas;\r\n this.distinctTestAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n this.distinctTestAreas.sort((a, b) => a.AreaName > b.AreaName ? 1 : -1);\r\n });\r\n }\r\n\r\n getSubAreas(areaName: string) {\r\n const filteredAreas = this.allAreas.filter(a => a.AreaName === areaName).sort((a, b) => a.SubAreaName > b.SubAreaName ? 1 : -1);\r\n\r\n for (const item of filteredAreas) {\r\n this.elemSubAreas.push(item.SubAreaName);\r\n }\r\n }\r\n\r\n createNewArea() {\r\n // Assemble the new area from the information that has been input by the user\r\n if(this.newModuleName === '' || this.newModuleName === undefined){\r\n this.setModuleName();\r\n }\r\n this.setPortalName();\r\n\r\n console.log(this.newModuleName);\r\n console.log(this.newPortalName);\r\n\r\n this.newArea.AreaName = this.newModuleName;\r\n this.newArea.SubAreaName = this.newPortalName;\r\n\r\n if (this.newModuleName === '' || this.newModuleName === undefined) {\r\n alert('Please make sure that there is an area name.');\r\n } else {\r\n // Save the new area to the AST_Areas table\r\n this.reportService.saveAutomatedTestArea(this.newArea).subscribe(results => { });\r\n\r\n alert(`New module / portal ${ this.newModuleName } / ${ this.newPortalName } successfully created.`);\r\n\r\n this.dialogRef.close(true);\r\n }\r\n }\r\n\r\n // This method is executed upon clicking 'Update' in the Action menu; it will display the Module /Portal Update Tool if an area has been selected.\r\n showUpdateAreaWindow() {\r\n if (this.areaId === undefined) {\r\n alert('Please make sure that all of the fields are populated.');\r\n } else {\r\n this.PageTitle = 'Module / Portal Update Tool';\r\n this.Message = `Update the Module / Portal ${ this.elementArea } by entering new information below. Please note these changes cannot currently be undone. `;\r\n }\r\n }\r\n\r\n updateArea() {\r\n // Assemble the new area from the information that has been input by the user\r\n if(this.newModuleName === '' || this.newModuleName === undefined){\r\n this.setModuleName();\r\n }\r\n\r\n this.setPortalName();\r\n this.newArea.AreaName = this.newModuleName;\r\n this.newArea.SubAreaName = this.newPortalName;\r\n\r\n if (this.newModuleName === '' || this.newModuleName === undefined) {\r\n alert('Please make sure that there is a Module or Page name.');\r\n } else {\r\n // Save the new area to the AST_Areas table\r\n this.reportService.updateAutomatedTestArea(this.areaId, this.newArea).subscribe(results => { });\r\n\r\n alert(`${ this.newModuleName} / ${ this.newPortalName } successfully updated.`);\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n }\r\n\r\n}\r\n","
{{ PageTitle }}
\r\n\r\n\r\n \r\n
\r\n {{ Message }}\r\n\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n Module\r\n Page\r\n \r\n \r\n {{ area.AreaName }}\r\n \r\n \r\n \r\n Portal\r\n Tab / View\r\n \r\n \r\n {{ area.SubAreaName }}\r\n \r\n \r\n \r\n Action\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n","import { Component, OnDestroy, OnInit, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { AutomatedTestArea } from '../models/ast-element.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { MenuItem } from '../../../shared-components/controls/menus/menu-item.model';\r\nimport { AreaAddEditModalComponent } from './area-add-edit-modal.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'AreaListModal',\r\n templateUrl: './area-list.component.html',\r\n styleUrls: ['./area-list.component.css']\r\n})\r\n\r\nexport class AreaListModalComponent implements OnDestroy, OnInit {\r\n\r\n PageTitle: string;\r\n Message: string;\r\n\r\n areaAddEditDialogRef: MatDialogRef;\r\n\r\n dataSource: TylerMatTableDataSource;\r\n\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n\r\n topActionMenuItems: string[] = ['Update'];\r\n\r\n areaToggle = 1;\r\n\r\n allAreas: AutomatedTestArea[] = [];\r\n distinctTestAreas: AutomatedTestArea[] = [];\r\n selectedArea: AutomatedTestArea[] = []; // This is used to set the Area ID\r\n\r\n elemAreas: string[] = [];\r\n elemSubAreas: string[] = [];\r\n allControlNames: string[] = [];\r\n\r\n elementArea: string;\r\n elementSubArea: string;\r\n elementControlName: string;\r\n newModuleName: string;\r\n newPortalName: string;\r\n areaId: number;\r\n areaName: string;\r\n subAreaName: string;\r\n\r\n\r\n @ViewChild('NewAreaName') module: ElementRef;\r\n\r\n @ViewChild('NewPortalName') portal: ElementRef;\r\n\r\n newArea: AutomatedTestArea = {\r\n Area_ID: 0,\r\n AreaName: '',\r\n SubAreaName: ''\r\n };\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay: string[] = []\r\n subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private dialogRef: MatDialogRef,\r\n _areaAddEditDialogRef: MatDialogRef,\r\n private _areaAddEditDialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n ) {\r\n this.PageTitle = data.PageTitle;\r\n this.Message = data.Message;\r\n }\r\n\r\n ngOnInit() {\r\n this. columnsToDisplay = ['AreaName', 'SubAreaName', 'Action'];\r\n switch(this.PageTitle) {\r\n\r\n case 'Module / Portal List': {\r\n this.getAllModulesAndPortals();\r\n break;\r\n }\r\n\r\n case 'Page & Tab / View List': {\r\n this.getAllPagesAndTabs();\r\n break;\r\n }\r\n\r\n default:{\r\n alert(\"Mistakes have been made.\");\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n cancelClick() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n setModuleName() {\r\n this.newModuleName = this.module.nativeElement.value;\r\n }\r\n\r\n setPortalName() {\r\n this.newPortalName = this.portal.nativeElement.value;\r\n }\r\n\r\n setAreaId(id: number) {\r\n this.areaId = id;\r\n }\r\n\r\n setAreaName(areaName: string){\r\n this.areaName = areaName;\r\n }\r\n\r\n setSubAreaName(subAreaName: string){\r\n this.subAreaName = subAreaName;\r\n }\r\n\r\n getAllPagesAndTabs() {\r\n this.reportService.getAutomatedTestAreas(0).subscribe(myAreas => {\r\n this.allAreas = myAreas;\r\n\r\n this.allAreas = this.allAreas.filter(a => a.AreaName !== \"Classroom360\"\r\n && a.AreaName !== \"Student360\"\r\n && a.AreaName !== \"General\"\r\n && a.AreaName !== \"AcademicHistory\"\r\n && a.AreaName !== \"Practice360\"\r\n && a.AreaName !== \"Behavior\");\r\n\r\n // this.allAreas.sort((a, b) => a.SubAreaName > b.SubAreaName ? 1 : -1);\r\n this.allAreas.sort((a, b) => a.AreaName > b.AreaName ? 1 : -1);\r\n\r\n this.dataSource = new TylerMatTableDataSource(this.allAreas);\r\n this.dataSource.paginator = this.paginator;\r\n });\r\n }\r\n\r\n getAllModulesAndPortals() {\r\n this.reportService.getAutomatedTestAreas(0).subscribe(myAreas => {\r\n this.allAreas = myAreas;\r\n\r\n this.allAreas = this.allAreas.filter(a => a.AreaName === \"Classroom360\"\r\n || a.AreaName === \"Student360\"\r\n || a.AreaName === \"General\"\r\n || a.AreaName === \"AcademicHistory\"\r\n || a.AreaName === \"Practice360\"\r\n || a.AreaName === \"Behavior\");\r\n\r\n // this.allAreas.sort((a, b) => a.SubAreaName > b.SubAreaName ? 1 : -1);\r\n this.allAreas.sort((a, b) => a.AreaName > b.AreaName ? 1 : -1);\r\n\r\n this.dataSource = new TylerMatTableDataSource(this.allAreas);\r\n this.dataSource.paginator = this.paginator;\r\n });\r\n }\r\n\r\n getSubAreas(areaName: string) {\r\n const filteredAreas = this.allAreas.filter(a => a.AreaName === areaName).sort((a, b) => a.SubAreaName > b.SubAreaName ? 1 : -1);\r\n\r\n for (const item of filteredAreas) {\r\n this.elemSubAreas.push(item.SubAreaName);\r\n }\r\n }\r\n\r\n createNewArea() {\r\n // Assemble the new area from the information that has been input by the user\r\n this.setModuleName();\r\n this.setPortalName();\r\n\r\n this.newArea.AreaName = this.newModuleName;\r\n this.newArea.SubAreaName = this.newPortalName;\r\n\r\n if (this.newModuleName === '' || this.newModuleName === undefined) {\r\n alert('Please make sure that there is a Module name.');\r\n } else {\r\n // Save the new area to the AST_Areas table\r\n this.reportService.saveAutomatedTestArea(this.newArea).subscribe(results => { });\r\n\r\n alert(`New module / portal ${ this.newModuleName } / ${ this.newPortalName } successfully created.`);\r\n\r\n this.dialogRef.close(true);\r\n }\r\n }\r\n\r\n\r\n // This method is executed when clicking the 'Add Portal' button on the Module / Portal List page.\r\n showPortalAddWindow() {\r\n\r\n this.distinctTestAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n\r\n this.areaAddEditDialogRef = this._areaAddEditDialog.open(AreaAddEditModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Add Portal',\r\n Message: 'Create a new portal.',\r\n distinctTestAreas: this.distinctTestAreas,\r\n }\r\n });\r\n\r\n this.areaAddEditDialogRef.afterClosed().subscribe( res => {\r\n this.ngOnInit();\r\n })\r\n }\r\n\r\n // This method is executed when clicking the 'Add Portal' button on the Module / Portal List page.\r\n showPageTabAddWindow() {\r\n\r\n this.distinctTestAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n\r\n this.areaAddEditDialogRef = this._areaAddEditDialog.open(AreaAddEditModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Add Page and/or Tab / View',\r\n Message: 'Create a new page and/or tab / view.',\r\n distinctTestAreas: this.distinctTestAreas,\r\n }\r\n });\r\n\r\n this.areaAddEditDialogRef.afterClosed().subscribe( res => {\r\n this.ngOnInit();\r\n })\r\n }\r\n\r\n // This method is executed upon clicking 'Update' in the Action menu; it will display the Module /Portal Update Tool if an area has been selected.\r\n showUpdatePortalWindow() {\r\n this.distinctTestAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n\r\n if (this.areaId === undefined) {\r\n alert('Please make sure that all of the fields are populated.');\r\n } else {\r\n this.areaAddEditDialogRef = this._areaAddEditDialog.open(AreaAddEditModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Update Portal',\r\n Message: 'Update an existing portal.',\r\n distinctTestAreas: this.distinctTestAreas,\r\n areaId: this.areaId,\r\n areaName: this.areaName,\r\n subAreaName: this.subAreaName,\r\n }\r\n });\r\n\r\n\r\n this.areaAddEditDialogRef.afterClosed().subscribe( res => {\r\n this.ngOnInit();\r\n })\r\n }\r\n }\r\n\r\n\r\n // This method is executed upon clicking 'Update' in the Action menu; it will display the Module /Portal Update Tool if an area has been selected.\r\n showUpdatePageTabViewWindow() {\r\n this.distinctTestAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n\r\n if (this.areaId === undefined) {\r\n alert('Please make sure that all of the fields are populated.');\r\n } else {\r\n this.areaAddEditDialogRef = this._areaAddEditDialog.open(AreaAddEditModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Update Page and / or Tab / View',\r\n Message: 'Update an existing page, tab, or view.',\r\n distinctTestAreas: this.distinctTestAreas,\r\n areaId: this.areaId,\r\n areaName: this.areaName,\r\n subAreaName: this.subAreaName,\r\n }\r\n });\r\n\r\n\r\n this.areaAddEditDialogRef.afterClosed().subscribe( res => {\r\n this.ngOnInit();\r\n })\r\n }\r\n }\r\n\r\n updateArea() {\r\n // Assemble the new area from the information that has been input by the user\r\n this.setModuleName();\r\n this.setPortalName();\r\n this.newArea.AreaName = this.newModuleName;\r\n this.newArea.SubAreaName = this.newPortalName;\r\n\r\n if (this.newModuleName === '' || this.newModuleName === undefined) {\r\n alert('Please make sure that there is a Module or Page name.');\r\n } else {\r\n // Save the new area to the AST_Areas table\r\n this.reportService.updateAutomatedTestArea(this.areaId, this.newArea).subscribe(results => { });\r\n\r\n alert(`${ this.newModuleName} / ${ this.newPortalName } successfully updated.`);\r\n\r\n this.dialogRef.close(true);\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n // Table-related methods --------------------------------\r\n\r\n getAriaRow(row: any): string {\r\n return '';\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n actionMenuClick(menuItem: MenuItem) {\r\n // const data: ElementsAndAreasModalComponent = menuItem.data;\r\n switch (menuItem.itemName) {\r\n case 'Update':\r\n if(this.PageTitle === 'Module / Portal List') {\r\n this.showUpdatePortalWindow();\r\n } else {\r\n this.showUpdatePageTabViewWindow();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n

{{test.TestName}} - Steps

\r\n

{{test.TestName}} - Steps (Shared Test)

\r\n\r\n Test Results \r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Module\r\n \r\n \r\n \r\n \r\n {{element.TestAreaName}}\r\n \r\n \r\n \r\n \r\n Portal\r\n \r\n \r\n \r\n \r\n {{element.TestSubAreaName}}\r\n \r\n \r\n \r\n Test Name\r\n \r\n \r\n \r\n {{element.TestName}}\r\n \r\n \r\n \r\n Shared Test\r\n \r\n \r\n \r\n {{element.IsSubTestOnly ? 'Y' : ''}}\r\n \r\n \r\n\r\n \r\n \r\n Status\r\n \r\n \r\n \r\n \r\n {{element.InProgress ? 'In Progress' : ''}}\r\n {{element.Approved ? 'Approved' : ''}}\r\n {{element.IsObsolete ? 'Obsolete' : ''}}\r\n {{element.ReadyForReview ? 'Ready for Review' : ''}}\r\n \r\n \r\n\r\n \r\n\r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n

Parameters - {{test.TestName}}

\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
Parameter NameParameter ValueActions
{{thisParameter.ParameterName}}\r\n \r\n {{thisParameter.ParameterValue}}\r\n \r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n
Page NameTab/View NameObject NameActionData InputInsertCommentsDelete
\r\n #{{testStep.StepOrder}}\r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n {{item.AreaName}}\r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n {{item}}\r\n \r\n \r\n \r\n \r\n \r\n {{item.ElementName}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{item}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n\r\n","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport {Element, AutomatedTest, AutomatedTestStep, AutomatedTestArea, AutomatedTestParameter, AutomatedTestStatus } from '../models/ast-element.model';\r\nimport { AutomatedTestingModalComponent } from './automated-testing-modal.component';\r\nimport { ConfirmModalComponent } from './confirm.component';\r\nimport {TylerMatTableDataSource} from '../../../shared-components/angular-material/extended.class';\r\nimport { ReportLegendComponent } from '../report-legend/report-legend.component';\r\nimport { QuickViewModalComponent } from './quickview.component';\r\nimport { ElementListModalComponent } from './element-list.component';\r\nimport { AreaListModalComponent } from './area-list.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'automatedTestingSetup',\r\n templateUrl: './automated-testing-setup.component.html',\r\n styleUrls: ['./automated-testing-setup.component.css']\r\n\r\n // entryComponents: [\r\n // ReportParametersComponent\r\n // ]\r\n})\r\n\r\n\r\n\r\nexport class AutomatedTestingSetupComponent implements OnInit, OnDestroy {\r\n\r\n\r\n\r\n thisDialogRef: MatDialogRef;\r\n\r\n modalDialogRef: MatDialogRef;\r\n confirmDialogRef: MatDialogRef;\r\n reportLegendDialogRef: MatDialogRef;\r\n elementListDialogRef: MatDialogRef;\r\n areaListDialogRef: MatDialogRef;\r\n quickViewDialogRef: MatDialogRef;\r\n\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n testAreas: string[];\r\n testArea = '';\r\n\r\n testSubAreas: string[];\r\n testSubArea = '';\r\n\r\n elementAreas: string[];\r\n elementArea = '';\r\n\r\n elementSubAreas: string[];\r\n elementSubArea = '';\r\n\r\n tests: AutomatedTest[] = [];\r\n test = new AutomatedTest();\r\n\r\n\r\n testSteps: AutomatedTestStep[] = [];\r\n\r\n allElements: Element[] = [];\r\n elements: Element[] = [];\r\n // element: Element;\r\n\r\n allAreas: AutomatedTestArea[] = [];\r\n distinctAreas: AutomatedTestArea[] = [];\r\n selectedArea: AutomatedTestArea = new AutomatedTestArea();\r\n\r\n // elementActions: ElementAction[];\r\n\r\n identifiers: string[] = [];\r\n\r\n actions: string[] = [];\r\n\r\n actionName: string;\r\n\r\n action = '';\r\n controlName = '';\r\n identifier = '';\r\n dataInput = '';\r\n testText = '';\r\n testData = '';\r\n\r\n dataSource: TylerMatTableDataSource;\r\n columnsToDisplay: string[] = [];\r\n showFilter = false;\r\n checkAllIsSubTestOnly = false;\r\n\r\n // elementListItems: DataSource[] = [];\r\n // allElementsListItems: DataSource[] = [];\r\n\r\n showTests = true;\r\n showTestSteps = false;\r\n\r\n insertStepType = '';\r\n insertStepNumber = 0;\r\n\r\n parameters: AutomatedTestParameter[] = [];\r\n parameter: AutomatedTestParameter;\r\n showParameters = false;\r\n\r\n testSaved = false;\r\n\r\n inDebugMode = false;\r\n\r\n isFiltered = false;\r\n\r\n V10: boolean;\r\n // step: AutomatedTestStep;\r\n\r\n constructor(\r\n automatedTestingSetupDialogRef: MatDialogRef,\r\n automatedTestingModalDialogRef: MatDialogRef,\r\n private modalDialog: MatDialog,\r\n private reportLegendDialog: MatDialog,\r\n\r\n _elementListDialogRef: MatDialogRef,\r\n private _elementListDialog: MatDialog,\r\n\r\n _areaListDialogRef: MatDialogRef,\r\n private _areaListDialog: MatDialog,\r\n\r\n _confirmDialogRef: MatDialogRef,\r\n private _confirmDialog: MatDialog,\r\n\r\n private reportService: ReportingService,\r\n // private myReportsComponent: MyReportsComponent\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private quickViewDialog: MatDialog,\r\n ) {\r\n\r\n this.thisDialogRef = automatedTestingSetupDialogRef;\r\n this.modalDialogRef = automatedTestingModalDialogRef;\r\n this.confirmDialogRef = _confirmDialogRef;\r\n this.elementListDialogRef = _elementListDialogRef;\r\n }\r\n\r\n ngOnInit() {\r\n this.inDebugMode = false;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n\r\n if (this.reportService.inDebugMode) {\r\n this.inDebugMode = true;\r\n\r\n }\r\n\r\n // this.columnsToDisplay = ['TestAreaName', 'TestSubAreaName', 'TestName', 'IsSubTestOnly', 'Approved', 'TestStatus', 'Actions'];\r\n this.columnsToDisplay = ['TestAreaName', 'TestSubAreaName', 'TestName', 'IsSubTestOnly', 'TestStatus', 'Actions'];\r\n\r\n // let tests: any;\r\n this.getAutomatedTests(0); // 0 to get only the tests, not the steps\r\n\r\n // this.getAutomatedTestParameters(0, 0);\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n // openConfirmPopup(title: string, message: string): boolean {\r\n\r\n // this.confirmDialogRef = this._confirmDialog.open(\r\n // ConfirmModalComponent,\r\n // {\r\n // data: {\r\n // PageTitle: title,\r\n // Message: message\r\n // },\r\n // panelClass: 'tyl-mat-dialog',\r\n // disableClose: true,\r\n\r\n // });\r\n\r\n // this.confirmDialogRef.afterClosed().subscribe(result => {\r\n\r\n // return result;\r\n\r\n\r\n // });\r\n\r\n // }\r\n\r\n checkIsSubTestOnly(element: AutomatedTest, checked: boolean) {\r\n\r\n // // console.log(element);\r\n // // console.log(checked);\r\n\r\n }\r\n\r\n allIsSubTestOnlyChecked() {\r\n this.checkAllIsSubTestOnly = !this.checkAllIsSubTestOnly;\r\n }\r\n\r\n allEventChecked() {\r\n // this.selectedEvents = [];\r\n for (const item of this.dataSource.data) {\r\n item.IsSubTestOnly = this.checkAllIsSubTestOnly;\r\n\r\n\r\n }\r\n }\r\n\r\n editTestClick(theTest: AutomatedTest) {\r\n this.test = theTest;\r\n this.openModalPopup('editTest');\r\n }\r\n\r\n viewTestStepsClick(thisTest: AutomatedTest) {\r\n this.testSaved = true;\r\n // console.log(thisTest);\r\n this.test = thisTest;\r\n this.showTests = false;\r\n this.showTestSteps = true;\r\n this.getAutomatedTestSteps(thisTest.Test_ID);\r\n this.getAutomatedTestParameters(thisTest.Test_ID, 0);\r\n }\r\n\r\n viewDependentTests(thisTest: AutomatedTest) {\r\n console.log(thisTest);\r\n\r\n this.quickViewDialogRef = this.quickViewDialog.open(QuickViewModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: thisTest.TestAreaName + ' - ' + thisTest.TestSubAreaName + ' - ' + thisTest.TestName,\r\n Test: thisTest,\r\n Message: 'The following tests are dependent on this shared test',\r\n viewDependentTests: true,\r\n showTestSteps: false,\r\n },\r\n\r\n });\r\n }\r\n\r\n showQuickView(thisTest: AutomatedTest) {\r\n\r\n // console.log(thisTest);\r\n\r\n this.quickViewDialogRef = this.quickViewDialog.open(QuickViewModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: thisTest.TestAreaName + ' - ' + thisTest.TestSubAreaName + ' - ' + thisTest.TestName,\r\n Test: thisTest,\r\n Message: thisTest.Comments,\r\n viewDependentTests: false,\r\n showTestSteps: true,\r\n },\r\n\r\n });\r\n }\r\n\r\n copyTestClick (thisTest: AutomatedTest) {\r\n this.test = this.test = thisTest;\r\n this.openModalPopup('copyTest');\r\n\r\n // console.log(thisTest);\r\n // this.test = thisTest;\r\n // this.showTests = false;\r\n // this.showTestSteps = true;\r\n // this.getAutomatedTestSteps(thisTest.Test_ID);\r\n // this.getAutomatedTestParameters(thisTest.Test_ID, 0);\r\n }\r\n\r\n\r\n toggleExpanded(row: any) {\r\n this.dataSource.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.dataSource.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.dataSource.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.dataSource.rowKeyPress(event, row);\r\n }\r\n\r\n showFilterClick() {\r\n this.showFilter = !this.showFilter;\r\n }\r\n\r\n clearFilter() {\r\n // this.clearFilterEvent.emit();\r\n this.dataSource.removeAllFilters();\r\n // this.communicationLogFilter.clearFilter();\r\n }\r\n\r\n trackByFn(item: AutomatedTest, index: number) {\r\n // POST: returns a value to track an item by so we can avoid change detection\r\n return item.Test_ID;\r\n }\r\n\r\n openModalPopup(actionToTake: string) {\r\n\r\n // console.log(this.test);\r\n // console.log(this.parameter);\r\n\r\n\r\n // console.log(actionToTake);\r\n const testOrder = this.tests.length + 1;\r\n\r\n let pageTitle: string;\r\n let copyTestId: number;\r\n\r\n if (actionToTake == 'copyTest') {\r\n pageTitle = 'Add New Test - Copy Steps from: ' + this.test.TestName;\r\n copyTestId = this.test.Test_ID;\r\n this.test = new AutomatedTest();\r\n this.parameter = null; // ??\r\n // parentTest_ID: this.test.Test_ID,\r\n }\r\n\r\n\r\n if (actionToTake == 'addTest') {\r\n pageTitle = 'Add New Test';\r\n this.test = new AutomatedTest();\r\n this.test.Test_ID = null;\r\n }\r\n\r\n if (actionToTake == 'addSubTest') {\r\n pageTitle = 'Add Shared Test';\r\n }\r\n\r\n if (actionToTake == 'editTest') {\r\n pageTitle = 'Edit Test';\r\n }\r\n\r\n if (actionToTake == 'insertStep') {\r\n pageTitle = 'Insert Step';\r\n }\r\n\r\n if (actionToTake == 'addParameter') {\r\n pageTitle = 'Add Parameter';\r\n }\r\n\r\n if (actionToTake == 'editParameter') {\r\n pageTitle = 'Edit Parameter';\r\n }\r\n\r\n // if (actionToTake == 'addStepComment') {\r\n // pageTitle = 'Add Step #' + this.step.StepOrder + ' Comment';\r\n // }\r\n\r\n // if (actionToTake == 'editStepComment') {\r\n // pageTitle = 'Edit Step #' + this.step.StepOrder + ' Comment';\r\n // }\r\n\r\n\r\n // console.log(this.parameter);\r\n\r\n this.modalDialogRef = this.modalDialog.open(\r\n AutomatedTestingModalComponent,\r\n {\r\n data: {\r\n action: actionToTake,\r\n title: pageTitle,\r\n testAreas: this.testAreas,\r\n testSubAreas: this.testSubAreas,\r\n testOrder: testOrder,\r\n tests: this.tests,\r\n allAreas: this.allAreas,\r\n test: this.test,\r\n parameter: this.parameter,\r\n parentTest_ID: this.test.Test_ID,\r\n copyTestId: copyTestId,\r\n // step: this.step,;\r\n },\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n\r\n });\r\n\r\n this.modalDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.inDebugMode) {\r\n console.log('HERE');\r\n console.log(result);\r\n }\r\n\r\n // return;\r\n\r\n if (result == undefined || result == null) {\r\n return;\r\n }\r\n\r\n\r\n if (result == undefined || result == null || actionToTake == 'editParameter' || actionToTake == 'addParameter') {\r\n\r\n // console.log(result);\r\n\r\n this.reportService.getAutomatedTestParameters(this.test.Test_ID, 0).subscribe(res => {\r\n this.parameters = res;\r\n if (this.inDebugMode) {\r\n console.log(this.parameters);\r\n }\r\n // console.log(this.parameters);\r\n this.showParameterGrid(false);\r\n\r\n if (this.inDebugMode) {\r\n console.log('HERE');\r\n }\r\n return;\r\n });\r\n }\r\n\r\n\r\n if (result == undefined || result == null || actionToTake == 'editParameter' || actionToTake == 'addParameter') {\r\n return;\r\n }\r\n\r\n if (this.inDebugMode) {\r\n console.log('HERE');\r\n }\r\n\r\n if (actionToTake === 'addTest' && result !== undefined) {\r\n this.test = result;\r\n // this.getAutomatedTestSteps(this.test.Test_ID); // This is an alternative fix.\r\n this.testSteps = [];\r\n this.showTests = false;\r\n this.showTestSteps = true;\r\n return;\r\n }\r\n\r\n // console.log(this.insertStepType);\r\n\r\n // if (result instanceof AutomatedTestStep) {\r\n // this.step.Comments = result.Comments;\r\n // // this.insertStepType = 'Regular Step';\r\n // console.log(this.testSteps);\r\n // return;\r\n // }\r\n\r\n // console.log(this.step);\r\n\r\n if (result == 'Regular Step') {\r\n // // console.log(result);\r\n this.insertStepType = 'Regular Step';\r\n this.addStep(false);\r\n return;\r\n\r\n } else if (this.insertStepType) {\r\n // .log(result);\r\n\r\n let t: AutomatedTest;\r\n t = result;\r\n // // console.log(t);\r\n\r\n this.insertStepType = 'Shared Test';\r\n // this.addStep(true);\r\n return;\r\n }\r\n\r\n if (actionToTake === 'editTest') {\r\n //this.resetPageForShowingTests();\r\n return;\r\n }\r\n\r\n // if (actionToTake == 'editParameter' || actionToTake == 'addParameter') {\r\n\r\n // // console.log(result);\r\n\r\n // this.reportService.getAutomatedTestParameters(this.test.Test_ID, 0).subscribe(res => {\r\n // this.parameters = res;\r\n // // console.log(this.parameters);\r\n // this.showParameterGrid(false);\r\n\r\n // });\r\n // }\r\n\r\n this.insertStepType = '';\r\n\r\n this.reportService.getAutomatedTestAreas(0).subscribe(myAreas => {\r\n\r\n this.allAreas = myAreas;\r\n\r\n // // // // console.log(myAreas);\r\n\r\n // get tests only\r\n this.reportService.getAutomatedTests(0).subscribe(results => {\r\n\r\n // // console.log(results);\r\n\r\n this.tests = results;\r\n this.setTestStatus();\r\n if (this.tests == null || this.tests == undefined) {\r\n this.tests = [];\r\n }\r\n\r\n this.dataSource = new TylerMatTableDataSource(this.tests);\r\n this.getTestAreas();\r\n });\r\n\r\n\r\n });\r\n\r\n // console.log('HERE');\r\n // console.log(result);\r\n\r\n if (result != undefined) {\r\n // // // // console.log(result);\r\n\r\n let subTest: AutomatedTest;\r\n subTest = result;\r\n\r\n const newStep = new AutomatedTestStep();\r\n newStep.Test_ID = 0; // this.test.Test_ID;\r\n\r\n newStep.ElementAreaName = subTest.TestAreaName;\r\n newStep.ElementSubAreaName = subTest.TestSubAreaName;\r\n\r\n newStep.ElementName = subTest.TestName;\r\n newStep.InnerTest_ID = subTest.Test_ID;\r\n newStep.StepOrder = this.testSteps.length + 1;\r\n\r\n // if this is an inserted step, adjust step orders\r\n\r\n if (subTest.IsInsertedStep) {\r\n newStep.StepOrder = this.insertStepNumber;\r\n\r\n for (let x = this.insertStepNumber - 1; x < this.testSteps.length; x++) {\r\n this.testSteps[x].StepOrder++;\r\n }\r\n }\r\n\r\n const elem = new Element();\r\n elem.ElementName = subTest.TestName;\r\n elem.ElementAreaName = subTest.TestAreaName;\r\n elem.ElementSubAreaName = subTest.TestSubAreaName;\r\n\r\n elem.Actions.push('Execute Steps');\r\n elem.Action = 'Execute Steps';\r\n\r\n newStep.ActionName = 'Execute Steps';\r\n\r\n newStep.Element = elem;\r\n newStep.Elements.push(elem);\r\n\r\n this.testSteps.push(newStep);\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n getBackgroundColor(step: AutomatedTestStep): string {\r\n if (step.InnerTest_ID > 0) {\r\n // indicates it is a shared test\r\n if (step.Approved) {\r\n return 'AliceBlue';\r\n } else {\r\n return 'LavenderBlush';\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n getAutomatedTests(testId: number) {\r\n\r\n this.reportService.getAutomatedTestAreas(testId).subscribe(myAreas => {\r\n\r\n this.allAreas = myAreas;\r\n\r\n this.distinctAreas = this.allAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.AreaName === thing.AreaName) === i\r\n );\r\n\r\n // // // // console.log(myAreas);\r\n\r\n if (testId == 0 ) {\r\n // get tests only\r\n this.reportService.getAutomatedTests(testId).subscribe(results => {\r\n\r\n this.tests = results;\r\n\r\n if (this.inDebugMode) {\r\n console.log(this.tests);\r\n }\r\n\r\n this.setTestStatus();\r\n this.getTestAreas();\r\n\r\n // get elements for test\r\n this.reportService.getAutomatedTestElements(testId).subscribe(elem => {\r\n\r\n this.allElements = elem;\r\n\r\n // handle filters\r\n this.dataSource = new TylerMatTableDataSource(this.tests);\r\n\r\n this.dataSource.sortingDataAccessor = (item: AutomatedTest, property: string) => {\r\n switch (property) {\r\n case 'TestStatus':\r\n return item.InProgress ? 'In Progress' : (item.Approved ? 'Approved' : (item.ReadyForReview ? 'Ready For Review' : (item.IsObsolete ? 'Is Obsolete' : ' ')));\r\n case 'IsSubTestOnly':\r\n return item.IsSubTestOnly ? 'Y' : '';\r\n default:\r\n return this.dataSource.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n\r\n // Handle sorting\r\n this.dataSource.sort = this.sort;\r\n\r\n const sortState: Sort = {active: 'TestAreaName', direction: 'asc'};\r\n this.sort.active = sortState.active;\r\n this.sort.direction = sortState.direction;\r\n this.sort.sortChange.emit(sortState);\r\n\r\n // // console.log(this.dataSource);\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n showTestsClick() {\r\n\r\n // If the test isn't saved, put up a confirm dialog.\r\n if (this.testSaved === false) {\r\n\r\n this.confirmDialogRef = this._confirmDialog.open(\r\n ConfirmModalComponent,\r\n {\r\n data: {\r\n PageTitle: 'WARNING',\r\n Message: 'If you continue without saving, the changes will be lost.'\r\n },\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n\r\n this.confirmDialogRef.afterClosed().subscribe(result => {\r\n\r\n // user clicked OK\r\n if (result === 'ContinueWithoutSaving') {\r\n this.resetPageForShowingTests();\r\n return;\r\n }\r\n\r\n if (result === true) {\r\n this.saveTestStepsClick();\r\n this.resetPageForShowingTests();\r\n } else if (result === false) {\r\n return;\r\n }\r\n\r\n });\r\n }\r\n\r\n else if (this.testSaved === true) {\r\n // testSubAreas: string[];\r\n // testSubArea = '';\r\n this.resetPageForShowingTests();\r\n }\r\n }\r\n\r\n getAutomatedTestSteps(testId: number) {\r\n this.testSteps = [];\r\n\r\n this.reportService.getAutomatedTestSteps(testId).subscribe(steps => {\r\n // console.log(steps);\r\n\r\n // get test steps\r\n // this.allElements = [];\r\n\r\n // // // // console.log(this.testAreas);\r\n // // // // console.log(this.allAreas);\r\n\r\n\r\n\r\n if (steps == undefined || steps == null || steps.length == 0) {\r\n\r\n return;\r\n }\r\n\r\n\r\n for (let x = 0; x < steps.length; x++) {\r\n if (steps[x].Test_ID > 0) {\r\n this.testSteps.push(steps[x]);\r\n }\r\n\r\n const elem = new Element();\r\n elem.ElementArea_ID = steps[x].ElementArea_ID;\r\n elem.ElementAreaName = steps[x].ElementAreaName;\r\n elem.ElementSubAreaName = steps[x].ElementSubAreaName;\r\n elem.ControlName = steps[x].ControlName;\r\n elem.Element_ID = steps[x].Element_ID;\r\n elem.ElementName = steps[x].ElementName;\r\n elem.XPath = steps[x].XPath;\r\n elem.ParameterName = steps[x].ParameterName;\r\n elem.ParameterValue = steps[x].ParameterValue;\r\n this.allElements.push(elem);\r\n }\r\n\r\n // // // // console.log(this.allElements);\r\n\r\n // const distinctTests = this.testSteps.filter(\r\n // (thing, i, arr) => arr.findIndex(t => t.Test_ID === thing.Test_ID) === i\r\n // );\r\n\r\n // this.tests = [];\r\n // let thisTest: AutomatedTest;\r\n // for (let x = 0; x < distinctTests.length; x++) {\r\n\r\n\r\n // if (distinctTests[x].Test_ID == null || distinctTests[x].Test_ID == undefined) {\r\n // continue;\r\n // }\r\n\r\n // // // // // // // console.log(distinctTests[x]);\r\n\r\n // thisTest = new AutomatedTest();\r\n // thisTest.Test_ID = distinctTests[x].Test_ID;\r\n // thisTest.TestName = distinctTests[x].TestName;\r\n // thisTest.TestArea_ID = distinctTests[x].TestArea_ID;\r\n // thisTest.TestAreaName = distinctTests[x].TestAreaName;\r\n // thisTest.TestSubAreaName = distinctTests[x].TestSubAreaName;\r\n // thisTest.Approved = distinctTests[x].Approved;\r\n // thisTest.InProgress = distinctTests[x].InProgress;\r\n // thisTest.ReadyForReview = distinctTests[x].ReadyForReview;\r\n\r\n // this.tests.push(thisTest);\r\n // }\r\n\r\n // this.getTestAreas();\r\n\r\n\r\n this.getElementAreas();\r\n\r\n // console.log(this.testSteps);\r\n });\r\n\r\n\r\n }\r\n\r\n addTest() {\r\n\r\n this.openModalPopup('addTest');\r\n }\r\n\r\n // This block is reused, so it has been converted into a method.\r\n resetPageForShowingTests() {\r\n this.showParameters = false;\r\n\r\n this.elementAreas = [];\r\n this.elementArea = '';\r\n this.elementSubAreas = [];\r\n this.elementSubArea = '';\r\n this.tests = [];\r\n this.test = null;\r\n this.testSteps = [];\r\n // this.allElements = [];\r\n this.elements = [];\r\n\r\n this.testSaved = false;\r\n\r\n this.showTests = true;\r\n this.showTestSteps = false;\r\n\r\n this.getAutomatedTests(0);\r\n }\r\n\r\n getAllElements() {\r\n // this.allElements = [];\r\n // for (let x = 0; x < this.testSteps.length; x++) {\r\n // const elem = new Element();\r\n // elem.ElementArea_ID = this.testSteps[x].ElementArea_ID;\r\n // elem.ElementAreaName = this.testSteps[x].ElementAreaName;\r\n // elem.ElementSubAreaName = this.testSteps[x].ElementSubAreaName;\r\n // elem.ControlName = this.testSteps[x].ControlName;\r\n // elem.Element_ID = this.testSteps[x].Element_ID;\r\n // elem.ElementName = this.testSteps[x].ElementName;\r\n // elem.XPath = this.testSteps[x].XPath;\r\n // elem.ParameterName = this.testSteps[x].ParameterName;\r\n // elem.ParameterValue = this.testSteps[x].ParameterValue;\r\n // this.testSteps[x].Element = elem;\r\n // this.allElements.push(elem);\r\n\r\n // let listItem: DataSource;\r\n // listItem = new DataSource();\r\n // listItem.TextField = elem.ElementName;\r\n // listItem.ValueField = elem.Element_ID.toString();\r\n // listItem.IsSelected = false;\r\n\r\n // if (elem.Element_ID == this.testSteps[x].Element_ID) {\r\n // listItem.IsSelected = true;\r\n // }\r\n\r\n\r\n // this.elementListItems.push(listItem);\r\n // // this.allElementsListItems.push\r\n // }\r\n\r\n // // // // // // // console.log(this.elementListItems);\r\n }\r\n\r\n getTestAreas() {\r\n\r\n const distinctTestAreas = this.tests.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.TestArea_ID === thing.TestArea_ID) === i\r\n );\r\n\r\n // // // // console.log(distinctTestAreas);\r\n\r\n this.testAreas = [];\r\n for (let x = 0; x < distinctTestAreas.length; x++) {\r\n\r\n if (distinctTestAreas[x].TestArea_ID != null) {\r\n // right now for tests we only want the Portals in the automation DB\r\n\r\n\r\n if (distinctTestAreas[x].TestAreaName == 'Classroom360' || distinctTestAreas[x].TestAreaName == 'Student360' || distinctTestAreas[x].TestAreaName == 'Practice360' || distinctTestAreas[x].TestAreaName == 'Portal') {\r\n this.testAreas.push(distinctTestAreas[x].TestAreaName);\r\n }\r\n }\r\n\r\n }\r\n\r\n const distinctSubAreas = distinctTestAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.TestSubAreaName === thing.TestSubAreaName) === i\r\n );\r\n\r\n this.testSubAreas = [];\r\n for (let x = 0; x < distinctSubAreas.length; x++) {\r\n if (distinctSubAreas[x].TestSubAreaName != null) {\r\n this.testSubAreas.push(distinctSubAreas[x].TestSubAreaName);\r\n }\r\n\r\n }\r\n\r\n // // // // // // console.log(this.testAreas);\r\n // // // // // // console.log(this.testSubAreas);\r\n\r\n if (this.testSubAreas.length > 0) {\r\n this.testSubArea = this.testSubAreas[0];\r\n }\r\n\r\n if (this.testAreas.length > 0) {\r\n this.testArea = this.testAreas[0];\r\n }\r\n\r\n // if (this.tests.length > 0) {\r\n // this.test = this.tests[0];\r\n // }\r\n\r\n\r\n // this.areas.push()\r\n }\r\n\r\n getSubAreas(testStep: AutomatedTestStep) {\r\n console.log(testStep);\r\n // this.testSubAreas = [];\r\n // for (let x = 0; x < distinctSubAreas.length; x++) {\r\n // if (distinctSubAreas[x].TestSubAreaName != null) {\r\n // this.testSubAreas.push(distinctSubAreas[x].TestSubAreaName);\r\n // }\r\n\r\n // }\r\n\r\n }\r\n\r\n // testClick(thisTest: AutomatedTest) {\r\n // this.test = thisTest;\r\n // this.showTests = false;\r\n // this.showTestSteps = true;\r\n // this.getAutomatedTestSteps(thisTest.Test_ID);\r\n // }\r\n\r\n getElementAreas() {\r\n // // // // // // console.log('getElementAreas()');\r\n // // // // // // console.log(this.elementAreas);\r\n // // // // // // console.log(this.elementArea);\r\n // // // // // // console.log(this.testSteps);\r\n\r\n const distinctElementAreas = this.allElements.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.ElementArea_ID === thing.ElementArea_ID) === i\r\n );\r\n\r\n this.elementAreas = [];\r\n for (let x = 0; x < distinctElementAreas.length; x++) {\r\n\r\n if (distinctElementAreas[x].ElementArea_ID != null) {\r\n this.elementAreas.push(distinctElementAreas[x].ElementAreaName);\r\n }\r\n\r\n }\r\n\r\n // this.elementArea = this.elementAreas[0]; // TODO:???\r\n // // // // // // console.log(this.elementArea);\r\n\r\n // const distinctSubAreas = distinctElementAreas.filter(\r\n // (thing, i, arr) => arr.findIndex(t => t.ElementSubAreaName === thing.ElementSubAreaName) === i\r\n // );\r\n\r\n // this.elementSubAreas = [];\r\n // for (let x = 0; x < distinctSubAreas.length; x++) {\r\n // if (distinctSubAreas[x].ElementSubAreaName != null) {\r\n // this.elementSubAreas.push(distinctSubAreas[x].ElementSubAreaName);\r\n // }\r\n\r\n // }\r\n\r\n\r\n // // // // // // console.log(this.elementArea);\r\n // // // // // // console.log(this.elementSubArea);\r\n\r\n for (let x = 0; x < this.testSteps.length; x++) {\r\n if (this.elementArea == null || this.elementArea == undefined || this.elementArea == '') {\r\n this.elementArea = this.testSteps[x].ElementAreaName;\r\n }\r\n if (this.elementSubArea == null || this.elementSubArea == undefined || this.elementSubArea == '') {\r\n this.elementSubArea = this.testSteps[x].ElementSubAreaName;\r\n }\r\n this.elementAreaChanged(this.testSteps[x]);\r\n }\r\n\r\n // this.getElements();\r\n\r\n\r\n // this.areas.push()\r\n }\r\n\r\n testAreaChanged() {\r\n\r\n this.testSubAreas = [];\r\n for (let x = 0; x < this.allAreas.length; x++) {\r\n if (this.allAreas[x].AreaName == this.selectedArea.AreaName) {\r\n this.testSubAreas.push(this.allAreas[x].SubAreaName);\r\n }\r\n }\r\n // // // // console.log(this.testSubAreas);\r\n\r\n }\r\n\r\n elementAreaChanged(testStep: AutomatedTestStep) {\r\n\r\n // // // console.log(testStep);\r\n // testStep.ElementAreaName = this.elementArea; // ??\r\n // testStep.ElementSubAreaName = this.elementSubArea; // ??\r\n\r\n // const distinctSubAreas = this.distinctAreas.filter(\r\n // (thing, i, arr) => arr.findIndex(t => t.SubAreaName === thing.SubAreaName) === i\r\n // );\r\n\r\n // testStep.Element.ElementSubAreas = [];\r\n\r\n // testStep.ElementSubAreas = []; // ??\r\n // for (let x = 0; x < this.allAreas.length; x++) {\r\n // if (this.allAreas[x].AreaName == testStep.ElementAreaName) {\r\n // testStep.ElementSubAreas.push(this.allAreas[x].SubAreaName);\r\n // }\r\n\r\n // }\r\n\r\n const unsortedElementSubAreas: string[] = []; // ??\r\n for (let x = 0; x < this.allAreas.length; x++) {\r\n if (this.allAreas[x].AreaName == testStep.ElementAreaName) {\r\n unsortedElementSubAreas.push(this.allAreas[x].SubAreaName);\r\n }\r\n\r\n }\r\n\r\n // sort the sub areas\r\n const sortedElementSubAreas = unsortedElementSubAreas.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\r\n\r\n testStep.ElementSubAreas = sortedElementSubAreas.filter(\r\n (thing, i, arr) => arr.findIndex(t => t === thing) === i\r\n );\r\n\r\n // if (this.inDebugMode) {\r\n // console.log('HERE NOW');\r\n // console.table(testStep.ElementSubAreas);\r\n // }\r\n\r\n // // TODO: REMOVE\r\n // this.elementSubAreas = [];\r\n // for (let x = 0; x < this.allAreas.length; x++) {\r\n // if (this.allAreas[x].AreaName == testStep.ElementAreaName) {\r\n // this.elementSubAreas.push(this.allAreas[x].SubAreaName);\r\n // }\r\n\r\n // }\r\n\r\n // // // // // console.log(testStep);\r\n // // // // // console.log(this.elementArea);\r\n // // // // console.log('sup?');\r\n // // // // console.log(this.elementSubAreas);\r\n\r\n this.getElements(testStep);\r\n\r\n testStep.Elements = this.elements; // ??\r\n\r\n // testStep.Element = new Element(); // ??\r\n\r\n }\r\n\r\n // elementSubAreaChanged() {\r\n // // // // // // console.log('elementSub-AreaChanged()');\r\n // this.getElements();\r\n // }\r\n\r\n // getTestSteps() {\r\n // // // // // // // console.log(this.test);\r\n // // // // // // // console.log(this.testSteps);\r\n // // this.getElements();\r\n\r\n // }\r\n\r\n getElements(step: AutomatedTestStep) {\r\n this.elements = [];\r\n // this.elements = this.allElements.filter(e => e.ElementAreaName == this.testArea);\r\n // this.elements = this.allElements.filter(e => e.ElementAreaName == this.elementArea && (e.ElementSubAreaName == null || e.ElementSubAreaName == undefined || e.ElementSubAreaName == this.elementSubArea));\r\n this.elements = this.allElements.filter(e => e.ElementAreaName === step.ElementAreaName && e.ElementSubAreaName === step.ElementSubAreaName);\r\n\r\n // Filter the elements so that only distinct elements appear in the drop-down.\r\n this.elements = this.elements.filter(\r\n (thing, i, arr) => arr.findIndex(t => t.ElementName === thing.ElementName) === i\r\n );\r\n // const E = this.elements.filter(e => e.ElementAreaName == 'Classroom Summary' && e.ElementSubAreaName == 'Side Menu')\r\n\r\n // Sort elements in alphabetical order\r\n this.elements.sort((a, b) => a.ElementName > b.ElementName ? 1 : -1);\r\n\r\n step.Elements = this.elements;\r\n\r\n // // console.log(E);\r\n // // console.log(step);\r\n\r\n // // // // // console.log(this.allElements);\r\n // // // // // console.log(this.allAreas);\r\n // // // // // console.log(this.elementArea);\r\n // // // // // console.log(this.elementSubArea);\r\n\r\n // // // // // console.log(this.elements);\r\n // // // // // console.log('here');\r\n\r\n // // // // // console.log(step.Element);\r\n // // // // console.log(step);\r\n\r\n\r\n // if (step.Element == null || step.Element == undefined) {\r\n // step.Element = this.getElementByElement_ID(step.Element_ID);\r\n // }\r\n\r\n // if (step.Element == null || step.Element == undefined) {\r\n // step.Elements = this.elements;\r\n // step.Element_ID = this.elements[0].Element_ID;\r\n // step.Element = this.elements[0];\r\n // }\r\n\r\n // // // // // // // console.log(step.Element);\r\n // // // // // // // console.log(step);\r\n\r\n\r\n this.getActions(step.Element, step);\r\n\r\n\r\n }\r\n\r\n getElementByElement_ID(element_ID: number): Element {\r\n const tempElements = this.allElements.filter(e => e.Element_ID == element_ID);\r\n return tempElements[0];\r\n }\r\n\r\n // getStepByStep_ID(step_ID: number): AutomatedTestStep {\r\n // const tempItems = this.testSteps.filter(e => e.Test_ID == element_ID);\r\n // return tempElements[0];\r\n // }\r\n\r\n getActions(item: Element, step: AutomatedTestStep) {\r\n\r\n // // // console.log(item);\r\n // // // console.log(step);\r\n\r\n // this.actions = [];\r\n\r\n step.Element = item;\r\n\r\n // // // // // console.log(item);\r\n // // // // // console.log(step);\r\n // // // // // // console.log(step.Element);\r\n\r\n if (step.Element == null || step.Element == undefined) {\r\n step.Element = this.getElementByElement_ID(step.Element_ID);\r\n // // // // console.log('here');\r\n // // // // console.log(step.Element);\r\n }\r\n\r\n if (step.Element_ID == 0) {\r\n if (step.Element != null && step.Element != undefined) {\r\n step.Element_ID = step.Element.Element_ID;\r\n }\r\n }\r\n step.Element.Action = '';\r\n step.Element.Actions = [];\r\n\r\n // // // // // // // console.log(step.Element.ElementName);\r\n\r\n // // // // // // console.log(item);\r\n\r\n // const tempElements = this.allElements.filter(e => e.Element_ID.toString() == item.ValueField);\r\n // if (tempElements.length > 0) {\r\n // // this.element = tempElements[0];\r\n\r\n // // // // // // // console.log(tempElements);\r\n // // step.Element = tempElements[0];\r\n\r\n // // // // // // // console.log(this.testSteps);\r\n\r\n // const tempSteps = this.testSteps.filter(e => e.Step_ID == step.Step_ID);\r\n\r\n // // // // // // // console.log(tempSteps);\r\n\r\n // const element_ID = Number(item.ValueField);\r\n\r\n // const myElement = this.getElementByElement_ID(element_ID);\r\n // // // // // // // console.log(myElement);\r\n\r\n // if (tempSteps[0] !== null) {\r\n // tempSteps[0].Element = myElement;\r\n\r\n // // tempSteps[0].Element = step.Element;\r\n // tempSteps[0].Element_ID = myElement.Element_ID; // step.Element.Element_ID;\r\n // tempSteps[0].ElementName = myElement.ElementName;\r\n // tempSteps[0].ElementArea_ID = myElement.ElementArea_ID;\r\n // tempSteps[0].ElementAreaName = myElement.ElementAreaName;\r\n // tempSteps[0].ElementSubAreaName = myElement.ElementSubAreaName;\r\n // }\r\n\r\n\r\n\r\n\r\n // // tempSteps[0].Element = step.Element;\r\n // // tempSteps[0].Element_ID = step.Element.Element_ID;\r\n // // tempSteps[0].ElementName = step.Element.ElementName;\r\n // // tempSteps[0].ElementArea_ID = step.Element.ElementArea_ID;\r\n // // tempSteps[0].ElementAreaName = step.Element.ElementAreaName;\r\n // // tempSteps[0].ElementSubAreaName = step.Element.ElementSubAreaName;\r\n // // }\r\n // // const tempItems = this.elementListItems.filter(e => e.ValueField == this.element.Element_ID.toString());\r\n // // for (let x = 0; x < tempItems.length; x++) {\r\n\r\n // // // // // // // // console.log(tempItems[x]);\r\n\r\n // // if (tempItems[x].ValueField = item.ValueField) {\r\n // // tempItems[x].IsSelected = true;\r\n // // step.Element.ElementName = tempItems[x].TextField;\r\n // // step.Element.Element_ID = Number(item.ValueField);\r\n // // } else {\r\n // // tempItems[x].IsSelected = false;\r\n // // }\r\n // // }\r\n // // // // // // // console.log(tempItems);\r\n // }\r\n\r\n // // // // // // // console.log(this.testSteps);\r\n // // // for (let x = 0; x < this.testSteps.length; x++) {\r\n // // // // // // // console.log (this.testSteps[x].Element);\r\n // // // }\r\n // // // // // // // // console.log(tempElements);\r\n\r\n // // // // // // // // console.log(item);\r\n\r\n // // // // // // // // console.log(this.element);\r\n // // // // // // // // console.log('here now');\r\n // // // // // // // // console.log(event);\r\n // // // // // // // // console.log(this.test);\r\n\r\n // // if (this.element == null || this.element == undefined) {\r\n // // return;\r\n // // }\r\n\r\n\r\n if (step.Element.ControlName == 'Test') {\r\n step.Element.Actions.push('Execute Steps'); // (@TextToEnter)\r\n }\r\n else {\r\n step.Element.Actions.push('Validate Value');\r\n step.Element.Actions.push('Verify Exists');\r\n\r\n if (step.Element.ControlName == 'Table Cell') {\r\n step.Element.Actions.push('Click Cell');\r\n step.Element.Actions.push('Click Cell By Row Number');\r\n step.Element.Actions.push('Validate Value By Row Number');\r\n } else if (step.Element.ControlName == 'Table Row') {\r\n step.Element.Actions.push('Click Row Number');\r\n }\r\n else {\r\n // most controls\r\n step.Element.Actions.push('Click');\r\n }\r\n\r\n }\r\n\r\n\r\n if (step.Element.ControlName == 'Text Box') {\r\n step.Element.Actions.push('Enter Text'); // (@TextToEnter)\r\n step.Element.Actions.push('Clear');\r\n }\r\n\r\n if (step.Element.ControlName == 'Button') {\r\n // step.Element.Actions.push('Click');\r\n }\r\n\r\n if (step.Element.ControlName === 'Sort Button') {\r\n step.Element.Actions.push('Click Sort Button By Column And Row'); // Column !NAME! and Row !NUMBER!\r\n }\r\n\r\n if (step.Element.ControlName == 'Combo Box') {\r\n step.Element.Actions.push('Select Combo Box Item');\r\n step.Element.Actions.push('Select Combo Box Value');\r\n }\r\n\r\n if (step.Element.ControlName == 'Drop Down List') {\r\n // step.Element.Actions.push('Click');\r\n }\r\n\r\n // if (step.Element.ControlName == 'Table Cell') {\r\n // step.Element.Actions.push('Click Cell'); // (@CellValue)\r\n // }\r\n\r\n if (step.Element.ControlName == 'Table Row') {\r\n // step.Element.Actions.push('Click'); // (@TextToEnter)\r\n }\r\n\r\n for (let x = 0; x < step.Element.Actions.length; x++) {\r\n if (step.Element.Actions[x] == step.ActionName) {\r\n step.Element.Action = step.Element.Actions[x];\r\n }\r\n }\r\n\r\n // // // console.log(step);\r\n // if (this.actions != null && this.actions != undefined) {\r\n // this.action = this.actions[0];\r\n // }\r\n\r\n // step.Element.Actions = this.actions;\r\n // step.Element.Action = this.action;\r\n\r\n // // // // // // console.log(this.actions);\r\n // // // // // // console.log(this.action);\r\n\r\n // // // // console.log(step.Element);\r\n // // // // console.log(step.Element.Actions);\r\n // // // // console.log(step.Element.Action);\r\n\r\n // // this.getDataInputs();\r\n\r\n }\r\n\r\n getDataInputs() {\r\n\r\n // // // // // // // console.log('here');\r\n // // // // // // // console.log(this.action);\r\n // // // // // // // console.log(this.element);\r\n // this.dataInput = '';\r\n\r\n\r\n // if (this.action == 'Enter Text') {\r\n\r\n // this.dataInput = this.element.parameterName + ' = ' + this.element.parameterValue;\r\n\r\n // }\r\n\r\n }\r\n\r\n\r\n addStep(isSubTest: boolean) {\r\n\r\n this.testSaved = false;\r\n // // // // // // console.log(this.elementArea);\r\n // // // // // // console.log(this.elementSubArea);\r\n // // // // // // console.log('addStep()');\r\n\r\n // console.log('HERE');\r\n\r\n // console.log(this.insertStepNumber);\r\n // console.log(this.insertStepType);\r\n\r\n\r\n if (this.insertStepType == 'Shared Test') {\r\n this.insertStepType = '';\r\n // this.addTest();\r\n }\r\n\r\n let stepOrder = this.testSteps.length + 1;\r\n\r\n if (this.insertStepType == 'Regular Step') { // (this.insertStepNumber > 0) {\r\n stepOrder = this.insertStepNumber - 1;\r\n // bump up the remaining step orders\r\n // for (let x = this.insertStepNumber - 1; x < this.testSteps.length; x++) {\r\n // this.testSteps[x].StepOrder++;\r\n // }\r\n }\r\n\r\n // for (let x = 0; x < this.testSteps.length; x++) {\r\n // this.testSteps[x].StepOrder = x + 1;\r\n // }\r\n\r\n // console.log(stepOrder);\r\n\r\n const newStep = new AutomatedTestStep();\r\n newStep.StepOrder = stepOrder;\r\n newStep.Step_ID = 0;\r\n newStep.Elements = [];\r\n newStep.Element = new Element();\r\n\r\n\r\n\r\n // // // // // // console.log(this.testArea);\r\n // // // // // // console.log(this.testSubArea);\r\n\r\n\r\n if (isSubTest) {\r\n\r\n this.openModalPopup('addSubTest'); // we need to select sub test\r\n\r\n // newStep.Test_ID = 0; // this.test.Test_ID;\r\n\r\n // newStep.ElementAreaName = this.testArea;\r\n // newStep.ElementSubAreaName = this.testSubArea;\r\n\r\n // newStep.ElementName = this.test.TestName;\r\n\r\n // const elem = new Element();\r\n // elem.ElementName = this.test.TestName;\r\n // elem.ElementAreaName = this.testArea;\r\n // elem.ElementSubAreaName = this.testSubArea;\r\n\r\n // elem.Actions.push('Execute Steps');\r\n // elem.Action = 'Execute Steps';\r\n // newStep.Element = elem;\r\n // newStep.Elements.push(elem);\r\n }\r\n else {\r\n // regular step\r\n newStep.Test_ID = this.test.Test_ID;\r\n\r\n newStep.ElementAreaName = ''; // this.elementArea;\r\n newStep.ElementSubAreaName = ''; // this.elementSubArea;\r\n\r\n // this.getElements(newStep);\r\n // newStep.ElementName = this.elements[0].ElementName;\r\n\r\n // // // // console.log(newStep.Elements);\r\n // // // // console.log(newStep.Element);\r\n // // // // console.log(newStep.ActionName);\r\n // // // // console.log(newStep.Element.Action);\r\n // // // // console.log(newStep.Element.Actions);\r\n\r\n // // // // console.log(newStep);\r\n\r\n\r\n // this.testStep = step;\r\n\r\n // console.log(stepOrder);\r\n\r\n if (this.insertStepType == 'Regular Step') {\r\n // this.testSteps.unshift(newStep); // push to beginning of array\r\n this.testSteps.splice(stepOrder, 0, newStep); // push to beginning of array\r\n } else {\r\n this.testSteps.push(newStep); // push to end of array\r\n\r\n }\r\n\r\n }\r\n\r\n this.insertStepType = '';\r\n\r\n\r\n // const sortedSteps = this.testSteps.sort((a, b) => a.StepOrder < b.StepOrder ? -1 : a.StepOrder > b.StepOrder ? 1 : 0);\r\n\r\n // console.log(this.testSteps);\r\n // // console.log(sortedSteps);\r\n\r\n // reorder steps\r\n for (let x = 0; x < this.testSteps.length; x++) {\r\n this.testSteps[x].StepOrder = x + 1;\r\n }\r\n\r\n // console.log(this.testSteps);\r\n\r\n\r\n // for (let x = 0; x < sortedSteps.length; x++) {\r\n\r\n // }\r\n\r\n\r\n // // // // // // // console.log(this.area);\r\n // // // // // // // console.log(this.element);\r\n // // // // // // // console.log(this.action);\r\n // // // // // // // console.log(this.actions);\r\n\r\n // let tempAction = this.action;\r\n // if (this.action == 'EnterText(@TextToEnter)') {\r\n // if (this.element.ElementName == 'UserName') {\r\n // tempAction = 'EnterText(@UserName)';\r\n // }\r\n // else if (this.element.ElementName == 'Password') {\r\n // tempAction = 'EnterText(@Password)';\r\n // }\r\n // else if (this.element.ElementName == 'StudentFirstName') {\r\n // tempAction = 'EnterText(@StudentFirstName)';\r\n // }\r\n // else if (this.element.ElementName == 'StudentLastName') {\r\n // tempAction = 'EnterText(@StudentLastName)';\r\n // }\r\n // else if (this.element.ElementName == 'StudentNumber') {\r\n // tempAction = 'EnterText(@StudentNumber)';\r\n // }\r\n // }\r\n\r\n // if (this.action == 'ClickCell(@CellValue)') {\r\n // this.testText += '\\n' + 'set @TableHeaderText= StudentNumber';\r\n // tempAction = 'ClickCell(@TableHeaderText, @StudentNumber)';\r\n // }\r\n\r\n\r\n // this.testText += '\\n' + this.testArea + '_' + this.element.ElementName + '.' + tempAction;\r\n\r\n }\r\n\r\n deleteStep(step: AutomatedTestStep) {\r\n // // // // // console.log(step);\r\n\r\n this.confirmDialogRef = this._confirmDialog.open(\r\n ConfirmModalComponent,\r\n {\r\n data: {\r\n PageTitle: 'Confirm Delete Step',\r\n Message: 'Are you sure you want to DELETE this STEP?'\r\n },\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n\r\n this.confirmDialogRef.afterClosed().subscribe(result => {\r\n\r\n // user clicked OK\r\n if (result == true) {\r\n\r\n // console.log(step);\r\n\r\n this.reportService.deleteAutomatedTestStep(step.Step_ID).subscribe(res => {\r\n });\r\n\r\n this.testSteps = this.testSteps.filter(obj => obj !== step);\r\n\r\n for (let x = 0; x < this.testSteps.length; x++) {\r\n this.testSteps[x].StepOrder--;\r\n }\r\n\r\n // reorder steps\r\n for (let x = 0; x < this.testSteps.length; x++) {\r\n this.testSteps[x].StepOrder = x + 1;\r\n }\r\n }\r\n\r\n\r\n });\r\n\r\n\r\n // this.reportService.deleteAutomatedTestStep(step.Step_ID).subscribe(res => {\r\n // });\r\n\r\n // this.testSteps = this.testSteps.filter(obj => obj !== step);\r\n }\r\n\r\n saveTest(test: AutomatedTest) {\r\n // // console.log(test);\r\n this.reportService.saveAutomatedTest(test.Test_ID, test).subscribe(results => {\r\n\r\n });\r\n\r\n }\r\n\r\n setIsSubTestOnly(thisTest: AutomatedTest, checked: boolean) {\r\n // thisTest.IsSubTestOnly = !thisTest.IsSubTestOnly;\r\n // // // console.log('checked');\r\n // // // console.log(checked);\r\n if (checked) {\r\n thisTest.IsSubTestOnly = true;\r\n } else {\r\n thisTest.IsSubTestOnly = false;\r\n }\r\n\r\n // // console.log(thisTest);\r\n\r\n this.saveTest(thisTest);\r\n }\r\n\r\n setApproved(thisTest: AutomatedTest, checked: boolean) {\r\n // thisTest.Approved = !thisTest.Approved;\r\n // // // console.log('checked');\r\n // // // console.log(checked);\r\n if (checked) {\r\n thisTest.Approved = true;\r\n } else {\r\n thisTest.Approved = false;\r\n }\r\n // // console.log(thisTest);\r\n this.saveTest(thisTest);\r\n }\r\n\r\n saveTestStepsClick() {\r\n\r\n\r\n // for (let x = 0; x < this.testSteps.length; x++) {\r\n // this.testSteps[x].Element_ID = this.testSteps[x].Element.Element_ID;\r\n // this.testSteps[x].ActionName = this.testSteps[x].Element.Action;\r\n // this.testSteps[x].ElementArea_ID = this.testSteps[x].Element.ElementArea_ID;\r\n // if (this.testSteps[x].InnerTest_ID == null || this.testSteps[x].InnerTest_ID == undefined) {\r\n // this.testSteps[x].InnerTest_ID = 0;\r\n // }\r\n // }\r\n\r\n for (let x = 0; x < this.testSteps.length; x++) {\r\n // if (this.testSteps[x].Element_ID == 0 || this.testSteps[x].Element_ID == null || this.testSteps[x].Element_ID == undefined) {\r\n if (this.testSteps[x].Element != null && this.testSteps[x].Element != undefined) {\r\n this.testSteps[x].Element_ID = this.testSteps[x].Element.Element_ID;\r\n }\r\n // }\r\n }\r\n\r\n\r\n // // console.log(this.testSteps);\r\n // // console.log('here');\r\n\r\n this.reportService.saveAutomatedTestSteps(this.test.Test_ID, this.testSteps).subscribe(res => {\r\n\r\n // // // // // console.log(res);\r\n\r\n\r\n this.getAutomatedTests(0);\r\n\r\n this.testSaved = true;\r\n\r\n // this.testSteps = [];\r\n // this.showTests = true;\r\n // this.showTestSteps = false;\r\n });\r\n\r\n }\r\n\r\n actionClicked(testStep: AutomatedTestStep, event: any) {\r\n // console.log(event);\r\n // testStep.ActionName = this.actionName;\r\n // console.log(testStep);\r\n // // // // console.log(this.testSteps);\r\n }\r\n\r\n // deleteTest(test_ID: number) {\r\n // this.reportService.deleteAutomatedTest(test_ID).subscribe(res => {\r\n // });\r\n // this.testSteps = [];\r\n // this.getAutomatedTests(0);\r\n // // this.tests = this.tests.filter(obj => obj.Test_ID !== test_ID);\r\n // }\r\n\r\n\r\n insertStep(step: AutomatedTestStep) {\r\n // new step will have step order of step clicked\r\n\r\n this.insertStepNumber = step.StepOrder;\r\n\r\n this.openModalPopup('insertStep');\r\n\r\n // the remaining steps after this new step need their order bumped up by one\r\n // // console.log(step);\r\n // for (let x = 0; x < this.testSteps.length; x++) {\r\n // if (this.testSteps[x].StepOrder == step.StepOrder - 1) {\r\n // this.testSteps[x].StepOrder = step.StepOrder;\r\n // step.StepOrder = step.StepOrder - 1;\r\n // }\r\n // }\r\n\r\n }\r\n\r\n\r\n deleteTest(theTest: AutomatedTest) {\r\n // // // // // console.log(step);\r\n\r\n const test_ID = theTest.Test_ID;\r\n\r\n this.confirmDialogRef = this._confirmDialog.open(\r\n ConfirmModalComponent,\r\n {\r\n data: {\r\n PageTitle: 'Confirm Delete Test - ' + theTest.TestName,\r\n Message: 'Are you sure you want to DELETE this TEST?'\r\n },\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n\r\n this.confirmDialogRef.afterClosed().subscribe(result => {\r\n\r\n // user clicked OK\r\n if (result == true) {\r\n\r\n this.reportService.deleteAutomatedTest(test_ID).subscribe(res => {\r\n this.testSteps = [];\r\n this.getAutomatedTests(0);\r\n });\r\n // this.testSteps = [];\r\n // this.getAutomatedTests(0);\r\n }\r\n\r\n\r\n });\r\n\r\n\r\n // this.reportService.deleteAutomatedTestStep(step.Step_ID).subscribe(res => {\r\n // });\r\n\r\n // this.testSteps = this.testSteps.filter(obj => obj !== step);\r\n }\r\n\r\n legendClick() {\r\n this.reportLegendDialogRef = this.reportLegendDialog.open(ReportLegendComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n legendItem_1: 'Shared Test',\r\n legendItem_2: 'Unapproved'\r\n\r\n },\r\n\r\n });\r\n\r\n }\r\n\r\n getBackgroundColorForTest(element: any) {\r\n if (element.IsSubTestOnly && element.Approved) {\r\n return 'AliceBlue';\r\n }\r\n if (!element.Approved) {\r\n return 'LavenderBlush';\r\n }\r\n // console.log(element);\r\n }\r\n\r\n\r\n\r\n closeClick() {\r\n this.thisDialogRef.close();\r\n }\r\n\r\n testChanged() {\r\n\r\n }\r\n\r\n getAutomatedTestParameters(testId: number, paramId: number) { // testId, int paramId)\r\n\r\n this.reportService.getAutomatedTestParameters(testId, paramId).subscribe(res => {\r\n this.parameters = res;\r\n // console.log(this.parameters);\r\n\r\n });\r\n }\r\n\r\n // saveAutomatedTestParameter(testId: number, paramId: number) { // testId, int paramId)\r\n\r\n // // this.reportService.saveAutomatedTestParameter(testId, paramId).subscribe(res => {\r\n\r\n // // });\r\n\r\n // }\r\n\r\n showParameterGrid(show: boolean) {\r\n\r\n this.showParameters = show;\r\n this.showTestSteps = !show;\r\n this.showTests = false;\r\n\r\n // this.reportService.getAutomatedTestParameters(this.test.Test_ID, 0).subscribe(res => {\r\n // this.parameters = res;\r\n // // console.log(this.parameters);\r\n // });\r\n\r\n }\r\n\r\n editParameterClick(param: AutomatedTestParameter) {\r\n this.parameter = param;\r\n this.openModalPopup('editParameter');\r\n }\r\n\r\n addParameter() {\r\n\r\n this.parameter = new AutomatedTestParameter;\r\n this.parameter.ParameterValue = '';\r\n this.openModalPopup('addParameter');\r\n }\r\n\r\n deleteParameter(param: AutomatedTestParameter) {\r\n this.confirmDialogRef = this._confirmDialog.open(\r\n ConfirmModalComponent,\r\n {\r\n data: {\r\n PageTitle: 'Confirm Delete Parameter ' + param.ParameterName,\r\n Message: 'Are you sure you want to DELETE this PARAMETER?'\r\n },\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n\r\n this.confirmDialogRef.afterClosed().subscribe(result => {\r\n\r\n // user clicked OK\r\n if (result == true) {\r\n\r\n this.reportService.deleteAutomatedTestParameter(param.Test_ID, param.ID).subscribe(success => {\r\n\r\n this.reportService.getAutomatedTestParameters(0, 0).subscribe(res => {\r\n this.parameters = res;\r\n // console.log(this.parameters);\r\n this.showParameterGrid(false);\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n });\r\n\r\n\r\n // this.reportService.deleteAutomatedTestStep(step.Step_ID).subscribe(res => {\r\n // });\r\n\r\n // this.testSteps = this.testSteps.filter(obj => obj !== step);\r\n}\r\n\r\nsetTestStatus() {\r\n for (let x = 0; x < this.tests.length; x++) {\r\n\r\n this.tests[x].SelectedStatus = AutomatedTestStatus.InProgress; // default\r\n this.tests[x].SelectedStatusDescription = 'In Progress';\r\n\r\n if (this.tests[x].IsObsolete) {\r\n this.tests[x].SelectedStatus = AutomatedTestStatus.IsObsolete;\r\n this.tests[x].SelectedStatusDescription = 'Obsolete';\r\n }\r\n else if (this.tests[x].InProgress) {\r\n this.tests[x].SelectedStatus = AutomatedTestStatus.InProgress;\r\n this.tests[x].SelectedStatusDescription = 'In Progress';\r\n }\r\n else if (this.tests[x].Approved) {\r\n this.tests[x].SelectedStatus = AutomatedTestStatus.Approved;\r\n this.tests[x].SelectedStatusDescription = 'Approved';\r\n }\r\n else if (this.tests[x].ReadyForReview) {\r\n this.tests[x].SelectedStatus = AutomatedTestStatus.ReadyForReview;\r\n this.tests[x].SelectedStatusDescription = 'Ready for Review';\r\n\r\n }\r\n\r\n // in case all bit flags are false\r\n if (this.tests[x].SelectedStatus == AutomatedTestStatus.InProgress) {\r\n this.tests[x].InProgress = true;\r\n }\r\n }\r\n // console.log(this.tests);\r\n}\r\n\r\n showElementList() {\r\n\r\n this.elementListDialogRef = this._elementListDialog.open(ElementListModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Element List',\r\n Message: 'A list of all the elements. You may click the Action button to interact with the element.',\r\n }\r\n });\r\n\r\n }\r\n\r\n showModulePortalList() {\r\n\r\n this.areaListDialogRef = this._areaListDialog.open(AreaListModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Module / Portal List',\r\n Message: 'A list of all the Modules and Portals. You may click the Action button to interact with the Portal.',\r\n }\r\n });\r\n\r\n }\r\n\r\n showPageTabList() {\r\n\r\n this.areaListDialogRef = this._areaListDialog.open(AreaListModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n PageTitle: 'Page & Tab / View List',\r\n Message: 'A list of all the pages and their tabs and views. You may click the Action button to interact with the page / tab / view.',\r\n }\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","
\r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n
\r\n","import { Component, OnInit, AfterViewInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ReportingService } from '../reporting.service';\r\n\r\nimport { LoginService } from '../../login/login.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { LoginSettings } from '../../login/LoginSetting.model';\r\nimport { AllReportsComponent } from '../all-reports/all-reports.component';\r\n\r\nimport { ReportFoldersComponent } from '../report-folders/report-folders.component';\r\nimport { AddReportFolderComponent } from '../report-folders/add-folder/add-folder.component';\r\n\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { ReportQueueComponent } from '../report-queue/report-queue.component';\r\nimport { ArchiveProcessComponent } from '../archive-report/archive-process.component';\r\nimport { AutomatedTestingSetupComponent } from '../automated-testing-setup/automated-testing-setup.component';\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'reportFooter',\r\n templateUrl: './report-footer.component.html',\r\n styleUrls: ['./report-footer.component.css']\r\n})\r\nexport class ReportFooterComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n automatedTestingSetupDialogRef: MatDialogRef;\r\n\r\n loginSettings: LoginSettings;\r\n // ExpandCollapseButtonsComponent: ExpandCollapseButtonsComponent;\r\n // ReportFolders: ReportFolder[];\r\n // Reports: Report[];\r\n AllReportsDialogRef: MatDialogRef;\r\n ReportFoldersDialogRef: MatDialogRef;\r\n\r\n addReportFolderDialogRef: MatDialogRef; // for Add Entry in My Reports if no report folders exist\r\n\r\n\r\n\r\n @Input() hideFoldersButton: boolean;\r\n\r\n expandedRows: boolean[] = [];\r\n @Output() expandAllFolders: EventEmitter = new EventEmitter();\r\n // @Output() isMyReports: EventEmitter = new EventEmitter();\r\n @Output() refreshedReportFolders: EventEmitter = new EventEmitter();\r\n\r\n archiveProcessDialogRef: MatDialogRef;\r\n hideReportToArchiveButton: boolean;\r\n\r\n showAutomatedTestsButton = false;\r\n\r\n // @Input() private _IsMyReports: boolean;\r\n // @Input() private _IsAllReports: boolean;\r\n\r\n // get IsMyReports() {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('GET IsMyReports()');\r\n // console.log(this._IsMyReports);\r\n // }\r\n // return this._IsMyReports;\r\n // }\r\n\r\n // @Input()\r\n // set IsMyReports(value) {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('SET IsMyReports(value)');\r\n // console.log(value);\r\n // }\r\n // this._IsMyReports = value;\r\n // }\r\n\r\n\r\n // get IsAllReports() {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('GET IsAllReports()');\r\n // console.log(this._IsAllReports);\r\n // }\r\n // return this._IsMyReports;\r\n // }\r\n\r\n // @Input()\r\n // set IsAllReports(value) {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('set IsAllReports(value)');\r\n // console.log(value);\r\n // }\r\n // this._IsAllReports = value;\r\n // }\r\n\r\n private _showNoFoldersMessage: boolean;\r\n\r\n get showNoFoldersMessage(): boolean {\r\n // return this._showNoFoldersMessage;\r\n return this.reportService.showNoFoldersMessage;\r\n }\r\n\r\n // set showNoFoldersMessage(value: boolean) {\r\n // //this._showNoFoldersMessage = value;\r\n // this.reportService.showNoFoldersMessage = value;\r\n // }\r\n\r\n\r\n // public IsMyReports: boolean;\r\n // public IsAllReports: boolean;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private reportService: ReportingService,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private dialog: MatDialog,\r\n\r\n private addReportFolderDialog: MatDialog,\r\n private archiveProcessDialog: MatDialog,\r\n\r\n private automatedTestingSetupDialog: MatDialog,\r\n\r\n // private allReportsDialogRef: MatDialogRef\r\n\r\n // public expandAll : ExpandCollapseButtonsComponent\r\n\r\n ) {\r\n this.loginSettings = loginService.LoginSettings;\r\n // this.userCanAutoRunReports = this.reportService.userCanAutoRunReports;\r\n\r\n\r\n } // end constructor\r\n\r\n ngOnInit() {\r\n\r\n if (this.reportService.reportingConfigurationSettings == null || this.reportService.reportingConfigurationSettings == undefined) {\r\n this.reportService.getReportingConfigurationSettings(this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.AYIdentifier)\r\n .subscribe(settings => {\r\n this.reportService.reportingConfigurationSettings = settings;\r\n this.hideReportToArchiveButton = this.reportService.reportingConfigurationSettings.HideReportToArchiveButton;\r\n });\r\n }\r\n\r\n if (this.reportService.currentUser.UserName.toLowerCase() == 'tyleradmin' || this.reportService.currentUser.UserName.toLowerCase() == 'sdmadmin') {\r\n this.showAutomatedTestsButton = true;\r\n } else {\r\n this.showAutomatedTestsButton = false;\r\n }\r\n\r\n\r\n // this.userCanAutoRunReports = this.reportService.userCanAutoRunReports;\r\n }\r\n\r\n ngAfterViewInit() {\r\n // this.userCanAutoRunReports = this.reportService.userCanAutoRunReports;\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n\r\n openAutomatedTestingSetup() {\r\n // confirm they want to archive the report\r\n this.automatedTestingSetupDialogRef = this.automatedTestingSetupDialog.open(AutomatedTestingSetupComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n\r\n this.automatedTestingSetupDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(result);\r\n }\r\n\r\n if (result == true) {\r\n\r\n\r\n\r\n // this.reportService.getReportBatches();\r\n\r\n\r\n\r\n // this.dialogRef.close(true);\r\n }\r\n });\r\n }\r\n\r\n\r\n addMyReportsEntryClick() {\r\n // add report folder\r\n\r\n this.addReportFolderDialogRef = this.addReportFolderDialog.open(AddReportFolderComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n\r\n this.addReportFolderDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('addReportFolderDialogRef.afterClosed()');\r\n console.log(result);\r\n\r\n }\r\n\r\n if (result == true) {\r\n // we need to refresh report folders\r\n\r\n // this.reportService.getMyReportFolders();\r\n this.getMyReportFolders();\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n getMyReportFolders(): void {\r\n this.reportService.getMyReportFolders().subscribe(reportFolders => {\r\n // this.ReportFolders = reportFolders;\r\n this.reportService.ReportFolders = reportFolders;\r\n // this.reportService.reportFoldersChanged(true);\r\n\r\n // this.refreshedReportFolders.emit(true);\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // // console.log('MyReportsComponent => SelectFolders length: ' + this.reportService.ReportFolders.length);\r\n // }\r\n });\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n // console.log('ReportFooterComponent.ts => closeClick()');\r\n // this.allReportsDialogRef.close();\r\n }\r\n\r\n openReportFoldersWindow() {\r\n // console.log('ReportFooterComponent.ts => openAllReportsWindow()');\r\n\r\n this.ReportFoldersDialogRef = this.dialog.open(ReportFoldersComponent, {\r\n panelClass: 'tyl-mat-dialog', disableClose: true\r\n // disableClose = true\r\n });\r\n\r\n this.ReportFoldersDialogRef.afterClosed().subscribe(result => {\r\n\r\n // this.reportService.reportFoldersChanged(true);\r\n\r\n this.refreshedReportFolders.emit(result);\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log('ReportFoldersDialogRef.afterClosed()');\r\n console.log(result);\r\n }\r\n\r\n });\r\n\r\n\r\n // this.reportFolders\r\n\r\n }\r\n\r\n // openReportArchivesWindow() {\r\n\r\n // }\r\n\r\n openArchiveProcess() {\r\n // confirm they want to archive the report\r\n this.archiveProcessDialogRef = this.archiveProcessDialog.open(ArchiveProcessComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n minWidth: '85vw',\r\n maxWidth: '100vw',\r\n minHeight: '85vh',\r\n maxHeight: '100vh'\r\n });\r\n\r\n this.archiveProcessDialogRef.afterClosed().subscribe(result => {\r\n\r\n if (this.reportService.inDebugMode) {\r\n console.log(result);\r\n }\r\n\r\n if (result == true) {\r\n\r\n\r\n\r\n // this.reportService.getReportBatches();\r\n\r\n\r\n\r\n // this.dialogRef.close(true);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n // expandAll(expand) {\r\n\r\n // // //loop to get folder names and set to value of expand\r\n // for (let i = 0; i < this.ReportFolders.length; i++) {\r\n // this.expandedRows[this.ReportFolders[i].Name] = expand;\r\n\r\n // }\r\n\r\n\r\n reportModeIsAllReports(): boolean {\r\n return this.reportService.isAllReports;\r\n }\r\n\r\n reportModeIsMyReports(): boolean {\r\n return this.reportService.isMyReports;\r\n }\r\n\r\n showMyReportsComponent() {\r\n this.reportService.isMyReports = true;\r\n this.reportService.isAllReports = false;\r\n // this.isMyReports.emit(true);\r\n // this.isAllReports.emit(false);\r\n }\r\n\r\n showAllReportsComponent() {\r\n this.reportService.isMyReports = false;\r\n this.reportService.isAllReports = true;\r\n // this.isAllReports.emit(true);\r\n // this.isMyReports.emit(false);\r\n }\r\n\r\n showReportFoldersDialog() {\r\n\r\n }\r\n\r\n\r\n expandAll(expand: boolean) {\r\n if (this.expandAllFolders != null) {\r\n this.expandAllFolders.emit(expand);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n openQueueList() {\r\n const reportQueueDialogRef = this.dialog.open(ReportQueueComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n }\r\n\r\n\r\n\r\n // console.log('MyReportComponent.ts => expandAllClick( ' + expand + ')');\r\n // console.log(this.ReportFolders);\r\n\r\n\r\n\r\n // }\r\n\r\n\r\n\r\n} // end export class ReportFooterComponent\r\n","
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
","import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ViewChild } from '@angular/core';\r\n// import { MatDialogRef } from '@angular/material';\r\nimport { ReportingService } from './reporting.service';\r\n\r\nimport { LoginService } from '../login/login.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginSettings } from '../login/LoginSetting.model';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\n\r\nimport { ClassroomSummaryService } from '../../classroom360/classroom-summary/classroom-summary.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\n\r\nimport { MyReportsComponent } from './my-reports/my-reports.component';\r\nimport { SecurityService } from '../../shared-components/security/security.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'report',\r\n templateUrl: './reporting.component.html'\r\n})\r\n\r\nexport class ReportingComponent implements OnInit, OnDestroy {\r\n @ViewChild(MyReportsComponent) myReportsComponent: MyReportsComponent;\r\n // @ViewChild(AllReportsComponent) allReportsComponent: AllReportsComponent;\r\n\r\n loginSettings: LoginSettings;\r\n // expandAllFolders: boolean;\r\n\r\n // for expanding/collapsing MyReports folders\r\n @Output() expandAllFolders: EventEmitter = new EventEmitter();\r\n @Output() hideFoldersButton: EventEmitter = new EventEmitter(); // for footer\r\n\r\n @Input() refreshedReportFolders: boolean; // from footer after adding first folder?\r\n\r\n // get foldersWereFreshed\r\n\r\n private _isMyReports: boolean;\r\n private _isAllReports: boolean;\r\n private _userCanAutoRunReports: boolean;\r\n\r\n // @Input() showAllReports: boolean;\r\n // @Input() showMyReports: boolean;\r\n\r\n get isMyReports(): boolean {\r\n // return _isMyReports;\r\n return this.reportService.isMyReports;\r\n }\r\n\r\n set isMyReports(value: boolean) {\r\n this.reportService.isMyReports = value;\r\n // _isMyReports = value;\r\n }\r\n\r\n get isAllReports(): boolean {\r\n return this.reportService.isAllReports;\r\n }\r\n\r\n set isAllReports(value: boolean) {\r\n this.reportService.isAllReports = value;\r\n }\r\n\r\n get userCanAutoRunReports(): boolean {\r\n return this._userCanAutoRunReports;\r\n }\r\n\r\n set userCanAutoRunReports(value: boolean) {\r\n this._userCanAutoRunReports = value;\r\n this.reportService.userCanAutoRunReports = value;\r\n }\r\n\r\n private _showNoFoldersMessage: boolean;\r\n\r\n get showNoFoldersMessage(): boolean {\r\n // return this._showNoFoldersMessage;\r\n return this.reportService.showNoFoldersMessage;\r\n }\r\n\r\n set showNoFoldersMessage(value: boolean) {\r\n this._showNoFoldersMessage = value;\r\n this.reportService.showNoFoldersMessage = value;\r\n }\r\n\r\n // get oneSisModules(): ReportModule[] {\r\n // return this.reportService.oneSisModules;\r\n // }\r\n\r\n // set oneSisModules(value: ReportModule[]) {\r\n // this.reportService.oneSisModules = value;\r\n // }\r\n\r\n showAllReportsComponent: boolean;\r\n\r\n // userPermissions: UserPermission[];\r\n\r\n // userRoles: UserRole[] = [];\r\n\r\n hasClassroom360Role: boolean;\r\n hasStudent360Role: boolean;\r\n hasCounselor360Role: boolean;\r\n\r\n allowArchiveReportPDF: boolean;\r\n utilizeTranscriptTracking: boolean;\r\n\r\n\r\n\r\n constructor(\r\n private reportService: ReportingService,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n // private classroomSummaryService: ClassroomSummaryService,\r\n private classroomSummaryService: ClassroomSummaryService,\r\n private studentService: StudentService,\r\n private securityService: SecurityService\r\n ) {\r\n this.loginSettings = loginService.LoginSettings;\r\n\r\n } // end constructor\r\n\r\n\r\n ngOnInit() {\r\n this.reportService.isMyReports = true; // defaults to my reports\r\n this.reportService.isAllReports = false;\r\n\r\n this.isMyReports = this.reportService.isMyReports;\r\n this.isAllReports = this.reportService.isAllReports;\r\n\r\n this.showAllReportsComponent = false;\r\n this.getUserPermissions();\r\n this.reportService.maxReportSnapshotAllowed = this.loginService.LoginSettings.MaxReportSnapshotAllowed;\r\n this.reportService.defaultAcademicYear = this.yearService.defaultYear.AYIdentifier;\r\n // this.getUserRoles();\r\n // this.getReportModulesByRole();\r\n\r\n\r\n\r\n // if (!this.isForSchedule) {\r\n this.reportService.selectedCourse = this.classroomSummaryService.selectedCourse;\r\n this.reportService.selectedStudent = this.studentService.selectedStudent;\r\n // }\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('this.reportService.useReportDefinitions: ' + this.reportService.useReportDefinitions);\r\n // console.log(this.reportService.selectedCourse);\r\n // console.log(this.reportService.selectedStudent );\r\n // }\r\n\r\n this.reportService.getReportingConfigurationSettings(this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.AYIdentifier)\r\n .subscribe(settings => {\r\n this.reportService.reportingConfigurationSettings = settings;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('ngOnDestroy()');\r\n // }\r\n\r\n // do any necessary cleanup here for instance properties in the reporting service\r\n this.reportService.autoRunSnapshot = null;\r\n this.reportService.SelectedReport = null;\r\n this.reportService.ReportFolders = null;\r\n this.reportService.ReportFolderToEdit = null;\r\n // this.reportService.reportMode = null;\r\n }\r\n\r\n getUserPermissions() {\r\n\r\n this.userCanAutoRunReports = this.loginService.LoginSettings.AllowAutoRunReport;\r\n\r\n this.utilizeTranscriptTracking = this.loginService.LoginSettings.UtilizeTranscriptTracking;\r\n\r\n this.allowArchiveReportPDF = this.loginService.LoginSettings.AllowArchiveReportPDF;\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('this.userCanAutoRunReports: ' + this.userCanAutoRunReports);\r\n // console.log('utilizeTranscripttracking: ' + this.utilizeTranscriptTracking);\r\n // console.log('allowArchiveReportPDFs: ' + this.allowArchiveReportPDF);\r\n // }\r\n\r\n\r\n // userHasPrivilegeAddEditDistrictReportDefinitions\r\n\r\n // POST: obtains the permissions from the server\r\n const permissions = this.securityService.userPermissions;\r\n\r\n // Add/Edit & Autorun Report Configuration & AddEditAutorunConfiguration\r\n // if (permissions.find(permission => permission.PrivilegeId == 2325 /* Report Definition Options */)) {\r\n // this.reportService.userHasPrivilegeAddEditDistrictReportDefinitions = true;\r\n // }\r\n if (permissions.find(permission => permission.PermissionName == 'Report Definition Options')) {\r\n this.reportService.userHasPrivilegeAddEditDistrictReportDefinitions = true;\r\n }\r\n else {\r\n this.reportService.userHasPrivilegeAddEditDistrictReportDefinitions = false;\r\n }\r\n\r\n // report archive permissions\r\n if (permissions.find(permission => permission.PermissionName == 'View Archive Processes From All Users')) {\r\n this.reportService.viewArchiveProcessesFromAllUsers = true;\r\n }\r\n else {\r\n this.reportService.viewArchiveProcessesFromAllUsers = false;\r\n }\r\n\r\n if (permissions.find(permission => permission.PermissionName == 'Allow Cancel Archive Processes')) {\r\n this.reportService.allowCancelArchiveProcesses = true;\r\n }\r\n else {\r\n this.reportService.allowCancelArchiveProcesses = false;\r\n }\r\n\r\n if (permissions.find(permission => permission.PermissionName == 'Allow Delete Archived Reports')) {\r\n this.reportService.allowDeleteArchivedReports = true;\r\n }\r\n else {\r\n this.reportService.allowDeleteArchivedReports = false;\r\n }\r\n\r\n // this.reportService.getReportingConfigurationSettings(this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.AYIdentifier)\r\n // .subscribe(settings => {\r\n // this.reportService.reportingConfigurationSettings = settings;\r\n // });\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('viewArchiveProcessesFromAllUsers: ' + this.reportService.viewArchiveProcessesFromAllUsers);\r\n // console.log('allowCancelArchiveProcesses: ' + this.reportService.allowCancelArchiveProcesses);\r\n // console.log('allowDeleteArchivedReports: ' + this.reportService.allowDeleteArchivedReports);\r\n // }\r\n\r\n }\r\n\r\n // getReportModulesByRole() {\r\n // const selectedSchoolDomain = this.yearService.defaultYear.SchoolID;\r\n // this.reportService.getReportModulesByRole(selectedSchoolDomain).subscribe(reportModules => {\r\n // if (this.reportService.inDebugMode) {\r\n // console.log(reportModules);\r\n // }\r\n\r\n // // clear the array\r\n // this.oneSisModules.length = 0;\r\n\r\n // if (reportModules.length > 1) {\r\n // // then need to add ALL\r\n // const allReportsReportModule = new ReportModule();\r\n // allReportsReportModule.ID = 0;\r\n // allReportsReportModule.Description = 'All';\r\n // allReportsReportModule.IsSelected = true;\r\n // this.oneSisModules.push(allReportsReportModule);\r\n // }\r\n\r\n // for (let i; i < reportModules.length; i++) {\r\n // this.oneSisModules.push(reportModules[i]);\r\n // }\r\n\r\n // if (reportModules.length > 0) {\r\n // reportModules[0].IsSelected = true;\r\n // }\r\n\r\n\r\n // });\r\n // }\r\n\r\n // getUserRoles() {\r\n // const selectedSchoolDomain = this.yearService.defaultYear.SchoolID;\r\n // this.userService.getUserRoles(\r\n // this.yearService.defaultYear.Id\r\n // ).subscribe(roles => {\r\n // // Classroom 360\r\n // if (roles.find(role => role.School_Domain == selectedSchoolDomain && (role.RoleName == 'My Classes' || role.RoleName == 'Gradebook'))) {\r\n // }\r\n // else {\r\n // this.hasClassroom360Role = false;\r\n // }\r\n\r\n // // Student 360\r\n // if (roles.find(role => role.School_Domain == selectedSchoolDomain && (role.RoleName == 'My Students'))) {\r\n // this.hasStudent360Role = true;\r\n // }\r\n // else {\r\n // this.hasStudent360Role = false;\r\n // }\r\n\r\n // // Counselor 360\r\n // if (roles.find(role => role.School_Domain == selectedSchoolDomain && (role.RoleName == 'Academic Management' || role.RoleName == 'Counselor Functions' || role.RoleName == 'Scheduling Utility Administrator'))) {\r\n // this.hasCounselor360Role = true;\r\n // }\r\n // else {\r\n // this.hasCounselor360Role = false;\r\n // }\r\n\r\n\r\n\r\n\r\n // // if (this.userPermissions.find(permission\r\n\r\n // if (this.reportService.inDebugMode) {\r\n // console.log('hasClassroom360Role:' + this.hasClassroom360Role);\r\n // console.log('hasStudent360Role:' + this.hasStudent360Role);\r\n // console.log('hasCounselor360Role:' + this.hasCounselor360Role);\r\n // console.log('selectedSchoolDomain:' + selectedSchoolDomain);\r\n // console.log(roles);\r\n\r\n\r\n // }\r\n\r\n // // // Add/Edit & Autorun Report Configuration & AddEditAutorunConfiguration\r\n // // if (this.userPermissions.find(permission => permission.PermissionName == 'Add/Edit & Autorun Report Configuration' || permission.PermissionName == 'AddEditAutorunConfiguration')) {\r\n // // this.userCanAutoRunReports = true;\r\n // // } else {\r\n // // this.userCanAutoRunReports = false;\r\n // // this.isAllReports = true;\r\n // // this.isMyReports = false;\r\n // // }\r\n // // this.hideFoldersButton.emit(!this.userCanAutoRunReports);\r\n\r\n // });\r\n // }\r\n\r\n // ngOnChanges() { }\r\n\r\n expandAllFoldersClick(expand: boolean) {\r\n // this.expandAllFolders = expandAll;\r\n\r\n // console.log('expandAllFoldersClick: ' + expand);\r\n\r\n this.myReportsComponent.expandAllFoldersClick(expand);\r\n\r\n\r\n if (expand != null) {\r\n this.expandAllFolders.emit(expand);\r\n }\r\n }\r\n\r\n reportFoldersRefreshed(wereRefreshed: boolean) {\r\n // this.expandAllFolders = expandAll;\r\n\r\n // console.log('reportFoldersRefreshed()');\r\n\r\n // this.myReportsComponent.ReportFolders = this.reportService.ReportFolders;\r\n if (wereRefreshed == true) {\r\n this.myReportsComponent.getMyReportFolders();\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n} // end export class ReportingComponent\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SharedComponentsModule } from '../../shared-components/shared-components.module';\r\nimport { ReportingComponent } from './reporting.component';\r\n\r\nimport { ReportHeaderComponent } from './header/report-header.component';\r\nimport { MyReportsComponent } from './my-reports/my-reports.component';\r\n\r\nimport { ReportFooterComponent } from './footer/report-footer.component';\r\nimport { ReportParametersComponent } from './parameters/report-parameters.component';\r\nimport { AllReportsComponent } from './all-reports/all-reports.component';\r\nimport { ReportsFilter } from './all-reports/all-reports.reportsFilter';\r\nimport { ReportSettingsFoldersComponent } from './report-settings/report-settings.folders.component';\r\nimport { ReportSnapshotsComponent } from './report-snapshots/report-snapshots.component';\r\nimport { ReportFoldersComponent } from './report-folders/report-folders.component';\r\nimport { ReportOptionsComponent } from './definitions/report-options.component';\r\nimport { AddReportFolderComponent } from './report-folders/add-folder/add-folder.component';\r\nimport { DeleteReportFolderComponent } from './report-folders/delete-folder/delete-folder.component';\r\nimport { ConfirmDeleteSnapshotComponent } from './report-snapshots/confirm-delete-snapshot.component';\r\nimport { ReportInFolderFilter } from './filters/report-in-folder-filter';\r\nimport { SnapshotInFolderFilter } from './filters/snapshot-in-folder-filter';\r\n\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { ReportSettingsAutoRunComponent } from './report-settings/report-settings-autorun.component';\r\nimport { ReportLegendComponent } from './report-legend/report-legend.component';\r\nimport { ReportAutoRunMessageComponent } from './report-settings/report-autorun-message.component';\r\nimport { ConfirmReportToEmailComponent } from './parameters/confirm-report-to-email.component';\r\nimport { ReportOptionsHowToComponent } from './definitions/report-options-how-to.component';\r\n\r\nimport { ArchiveReportModalComponent } from './archive-report/archive-report-modal.component';\r\nimport { PortfolioService } from '../../student360/portfolio/portfolio.service';\r\nimport { ConfirmArchiveReportComponent } from './archive-report/confirm-archive-report.component';\r\nimport { ReportQueueComponent } from './report-queue/report-queue.component';\r\nimport { DatePipe } from '@angular/common';\r\nimport { ManualEntryRostersComponent } from './V9/manual-entry-rosters/manual-entry-rosters.component';\r\nimport { GradebookStatisticalAnalysisReportComponent } from './V9/gradebook-statistical-analysis-report/gradebook-statistical-analysis-report.component';\r\nimport { ClassListAllComponent } from './V9/class-list-all/class-list-all.component';\r\nimport { ClassListAllAttendanceNotMarkedComponent } from './V9/class-list-all-attendance-not-marked/class-list-all-attendance-not-marked.component';\r\nimport { TeacherSummaryPreviewComponent } from './V9/teacher-summary-preview/teacher-summary-preview.component';\r\nimport { GradebookProgessReportComponent } from './V9/gradebook-progress-report/gradebook-progress-report.component';\r\nimport { AttendanceHistoryByClassComponent } from './V9/attendance-history-by-class/attendance-history-by-class.component';\r\nimport { GradebookAssignmentsByStandardComponent } from './V9/gradebook-assignments-by-standard/gradebook-assignments-by-standard.component';\r\nimport { ReportTemplateClassListComponent } from './V9/report-template-class-list/report-template-class-list.component';\r\nimport { StudentGradebookIDsComponent } from './V9/student-gradebook-ids/student-gradebook-ids.component';\r\nimport { GenericReportComponent } from './V9/generic-report/generic-report.component';\r\nimport { GradebookByClassGridComponent } from './V9/gradebook-by-class-grid/gradebook-by-class-grid.component';\r\nimport { GenericListSelectorComponent } from '../../shared-components/generic-list-selector/generic-list-selector.component';\r\nimport { ArchiveProcessComponent } from './archive-report/archive-process.component';\r\nimport { ConfirmCancelArchiveReportComponent } from './archive-report/confirm-cancel-archive.component';\r\nimport { LetterPrintOptionComponent } from './V9/letter-print-option/letter-print-option.component';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { V9ReportParametersComponent } from './V9/parameters/v9-report-parameters.component';\r\n\r\nimport { AutomatedTestingSetupComponent } from './automated-testing-setup/automated-testing-setup.component';\r\nimport { AutomatedTestingModalComponent } from './automated-testing-setup/automated-testing-modal.component';\r\nimport { ConfirmModalComponent } from './automated-testing-setup/confirm.component';\r\nimport { QuickViewModalComponent } from './automated-testing-setup/quickview.component';\r\n\r\nimport { V9LetterReportParametersComponent } from './V9/parameters/v9-letter-report-parameters/v9-letter-report-parameters.component';\r\nimport { V9ReportParameterTabsFilterPipe } from './V9/parameters/v9-report-parameter-tabs-filter.pipe';\r\nimport { ElementListModalComponent } from './automated-testing-setup/element-list.component';\r\nimport { ElementAddEditModalComponent } from './automated-testing-setup/element-add-edit-modal.component';\r\nimport { AreaListModalComponent } from './automated-testing-setup/area-list.component';\r\nimport { AreaAddEditModalComponent } from './automated-testing-setup/area-add-edit-modal.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ReportingComponent,\r\n ReportHeaderComponent,\r\n MyReportsComponent,\r\n ReportParametersComponent,\r\n AllReportsComponent,\r\n ReportFooterComponent,\r\n ReportOptionsComponent,\r\n ReportsFilter,\r\n ReportSettingsFoldersComponent,\r\n ReportSnapshotsComponent,\r\n ConfirmDeleteSnapshotComponent,\r\n ReportInFolderFilter,\r\n SnapshotInFolderFilter,\r\n ReportFoldersComponent,\r\n AddReportFolderComponent,\r\n DeleteReportFolderComponent,\r\n ReportSettingsAutoRunComponent,\r\n ReportLegendComponent,\r\n ReportAutoRunMessageComponent,\r\n ConfirmReportToEmailComponent,\r\n ReportOptionsHowToComponent,\r\n ArchiveReportModalComponent,\r\n ConfirmArchiveReportComponent,\r\n ManualEntryRostersComponent,\r\n ClassListAllComponent,\r\n ClassListAllAttendanceNotMarkedComponent,\r\n ReportQueueComponent,\r\n GradebookStatisticalAnalysisReportComponent,\r\n TeacherSummaryPreviewComponent,\r\n GradebookProgessReportComponent,\r\n GradebookAssignmentsByStandardComponent,\r\n ReportTemplateClassListComponent,\r\n AttendanceHistoryByClassComponent,\r\n StudentGradebookIDsComponent,\r\n GenericReportComponent,\r\n GradebookByClassGridComponent,\r\n GenericListSelectorComponent,\r\n ArchiveProcessComponent,\r\n ConfirmCancelArchiveReportComponent,\r\n LetterPrintOptionComponent,\r\n V9ReportParametersComponent,\r\n AutomatedTestingSetupComponent,\r\n AutomatedTestingModalComponent,\r\n ConfirmModalComponent,\r\n V9LetterReportParametersComponent,\r\n V9ReportParameterTabsFilterPipe,\r\n ElementListModalComponent,\r\n ElementAddEditModalComponent,\r\n AreaListModalComponent,\r\n AreaAddEditModalComponent,\r\n QuickViewModalComponent,\r\n ],\r\n imports: [\r\n SharedComponentsModule,\r\n MatDialogModule,\r\n FormsModule,\r\n ScrollingModule,\r\n ],\r\n providers: [PortfolioService, DatePipe, V9ReportParameterTabsFilterPipe]\r\n}) // end @NgModule\r\n\r\nexport class ReportingModule {\r\n} // end export class ReportingModule\r\n","export class ReportDefinition {\r\n HasReportDefinition: number;\r\n HasReportParameterDefined: number;\r\n HasParameterValueDefined: number;\r\n IsSysGen: number;\r\n School_Domain: number;\r\n AllowUserSaveReport: boolean;\r\n AllowUserHideReport: boolean;\r\n IsSystem: boolean;\r\n AllowUserSaveParameter: boolean;\r\n AllowUserHideParameter: boolean;\r\n HiddenByDefault: boolean;\r\n AlwaysHidden: boolean;\r\n ReportParameter_ID: number;\r\n ParameterName_ID: number;\r\n ParameterName: String;\r\n ParameterValue_ID: number;\r\n Login_ID: number;\r\n // Value: String;\r\n Value: any;\r\n IsHidden: boolean;\r\n CanSave: boolean;\r\n RC_ID: number;\r\n Control: String;\r\n DataType: String;\r\n ShowAll: boolean;\r\n ShowOptionsVertically: boolean;\r\n IsDistrictDefinedParameter: boolean;\r\n IsUserDefinedParameter: boolean;\r\n SaveChecked: boolean;\r\n HideChecked: boolean;\r\n BackgroundColorForSavedDefinition: string;\r\n ParameterLabel: string;\r\n }\r\n","import { ReportDefinition } from './report-definition.model';\r\nimport { NameValueBool } from './name-value-bool.model';\r\nimport { DataSource } from './data-source.model';\r\n\r\n\r\nexport class ReportParameter {\r\n Id: number;\r\n RC_ID: number;\r\n Name: string;\r\n ColumnName: string;\r\n ParameterName: string;\r\n ShowAll: boolean;\r\n IsParent: boolean;\r\n Value: any; // parameter values can bes strings, dates, bools, etc.\r\n DataType: string;\r\n ControlType: string;\r\n DataSource: DataSource[];\r\n MultiValue: string[];\r\n MaxLength: number;\r\n ParameterReportDefinition: ReportDefinition;\r\n ParameterOptions: NameValueBool[];\r\n //////////////////////////////\r\n RowNumberInTable: number;\r\n ColumnNumberInTableCell: number;\r\n Colspan: number;\r\n HighlightParameter: boolean; // when coming from other areas such as a selected student or course\r\n SetBackgroundColorForSavedDefinition: boolean;\r\n\r\n // ONE-2400 - groups/sorting\r\n\r\n ParameterHasBeenAddedToRow: boolean;\r\n\r\n OrdinalPosition: number; // we will set this to the Id (zero based consecutive) for now since the sp (spOneSIS_GetProcedureParameters) for pulling parameters returns them by OrdinalPosition\r\n SortOrder: number; // this is the order we will display parameters\r\n IsInGroup: boolean;\r\n Group_ID: number;\r\n IncludeGroupLabel: boolean;\r\n GroupLabel: string; // only set on first parameter in group\r\n // GroupName: string; // unnecessary for now\r\n IncludeLineAtStartOfGroup: boolean;\r\n IncludeLineAtEndOfGroup: boolean;\r\n GroupSortOrder: number; // this is at GROUP level and NOT parameter in group level\r\n // GroupParameterSortOrder: number;\r\n IsStartOfVisibleGroup: boolean;\r\n IsEndOfVisibleGroup: boolean;\r\n EntireGroupIsHidden: boolean;\r\n\r\n // ONE-2400 - formatting options\r\n\r\n HasFormatting: boolean;\r\n NoWrap: boolean;\r\n ShowOptionsVertically: boolean;\r\n SpanEntireRow: boolean;\r\n SpanNumberOfColumns: number;\r\n IsVisible: boolean;\r\n IsSystemHiddenParameter: boolean;\r\n\r\n // IsFromGradeBook: boolean;\r\n // IsEmailDistributionParameter: boolean;\r\n // IsHiddenParameterPassedFromApp: boolean;\r\n\r\n\r\n\r\n getMultiValue_Labels(): string[] {\r\n const labels: string[] = [];\r\n for (let d = 0; d < this.DataSource.length; d++) {\r\n labels.push(this.DataSource[d].TextField);\r\n }\r\n return labels;\r\n }\r\n\r\n getMultiValue_StringValues(): string[] {\r\n const values: string[] = [];\r\n for (let d = 0; d < this.DataSource.length; d++) {\r\n values.push(this.DataSource[d].ValueField);\r\n }\r\n return values;\r\n }\r\n\r\n getMultiValue_BoolValues(): boolean[] {\r\n const values: boolean[] = [];\r\n for (let d = 0; d < this.DataSource.length; d++) {\r\n values.push(this.DataSource[d].IsSelected);\r\n }\r\n return values;\r\n }\r\n\r\n\r\n getMultiValue_Ids(): string[] {\r\n const ids: string[] = [];\r\n for (let d = 0; d < this.DataSource.length; d++) {\r\n ids.push('MultiVal_' + this.Id + '_' + d.toString());\r\n }\r\n return ids;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","export class ReportingConfigurationSettings {\r\n\r\n HideReportToArchiveButton: boolean;\r\n}","import { Injectable } from '@angular/core';\r\nimport { System } from './../../shared-components/System';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { LoginService } from '../login/login.service';\r\nimport { Report } from './models/report.model';\r\nimport { ReportFolder } from './models/report-folder.model';\r\nimport { ReportDefinition } from './models/report-definition.model';\r\nimport { AutoRunSnapshot } from './models/auto-run-report-snapshots.model';\r\nimport { ReportParameter } from './models/report-parameter.model';\r\nimport { ReportModule } from './models/report-module.model';\r\nimport { ClassroomSummaryService } from '../../classroom360/classroom-summary/classroom-summary.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { LoginSettings } from '../login/LoginSetting.model';\r\nimport { Lookup } from '../../shared-components/lookup/lookup.model';\r\nimport { CourseTerm } from '../../student360/student-schedule/course-term.model';\r\nimport { ReportV9 } from './models/report-v9.model';\r\nimport { formatDate } from '@angular/common';\r\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask';\r\nimport { ReportsQueue } from './models/reports-queue.model';\r\nimport { TeacherPreview } from './models/teacher-preview.model';\r\nimport {\r\n GradebookStatisticalAnalysisReport,\r\n GradeBookAssignmentTypeBySiteSectionIds\r\n} from './V9/gradebook-statistical-analysis-report/gradebook-statistical-analysis-report.model';\r\nimport { SchoolYearSettings } from '../../shared-components/year/school-year-settings.model';\r\nimport { DataSource } from '../reporting/models/data-source.model';\r\nimport { StudentAttachment } from '../student-attachment/student-attachment.model';\r\nimport { ReportLogos } from './models/report-logos.model';\r\nimport { Assignment } from '../../classroom360/gradebook/v9/models/assignment.model';\r\nimport { ReportBatch } from './models/report-batch.model';\r\nimport { Category } from '../../classroom360/gradebook/shared/models/category.model';\r\nimport { ReportingConfigurationSettings } from './models/reporting-configuration-settings.model';\r\nimport { V9ReportParameter } from './models/v9-report-parameter.model';\r\n\r\nimport { AutomatedTest, AutomatedTestStep, AutomatedTestArea, Element, AutomatedTestParameter, SubTestDependentTest, AutomatedTestStepQuickView } from './models/ast-element.model';\r\n\r\nexport enum v9ReportParameterName {\r\n strReportDate = 2 ** 1,\r\n strReportSiteHeader = 2 ** 2,\r\n strReportTitle = 2 ** 3,\r\n bytReportType = 2 ** 4,\r\n strSiteYearCode = 2 ** 5,\r\n lngSiteYearId = 2 ** 6,\r\n strStaffUserName_LNFN = 2 ** 7,\r\n strOutputFile_NOFILE = 2 ** 8,\r\n strReportTime = 2 ** 9,\r\n strReportSiteAddress = 2 ** 10,\r\n intSiteYearId = 2 ** 11,\r\n}\r\n\r\nexport enum V9ReportName {\r\n AssignmentListing = 'GradeBookAssignmentListByClass',\r\n AttendanceHistoryByClass = 'CreateAttendanceHistoryByClass',\r\n CommunicationLog = 'CreateContactLog',\r\n DisciplineReferralList = 'ReferralListOneSIS',\r\n GradebookAssignmentsByStandard = 'CreateGradebookAssignmentsByObjectiveReport',\r\n GradeBookByClassListGridReport = 'GradeBookByClassListGridReport',\r\n ReportCardGradeCalculationReport = 'GradeBookFormulaCalculationReport',\r\n StudentGradebookIDs = 'GradeBookSISInternalIndex'\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class ReportingService {\r\n\r\n // Properties\r\n inDebugMode = false;\r\n SelectedReport: Report;\r\n ReportFolders: ReportFolder[] = [];\r\n login_ID: number;\r\n userEmail: string;\r\n selectedReportFolderId: number;\r\n showNoFoldersMessage = false;\r\n snapshotDeleted = false;\r\n reportFolderIdToDelete: number;\r\n reportFolderNameToDelete: string;\r\n isFolderEdit = false;\r\n ReportFolderToEdit: ReportFolder;\r\n selectedFolderIds: number[] = [];\r\n isMyReports = false;\r\n isAllReports = false;\r\n isForSchedule = false;\r\n isFromMenu = false;\r\n allowAutoRunReport: boolean;\r\n maxReportSnapshotAllowed: number;\r\n currentUserSubscription: Subscription;\r\n public currentUser: User;\r\n public LoginSettings: LoginSettings;\r\n deleteReportSnapshot_ID: number;\r\n showReportToPDF = false;\r\n autoRunSnapshot: AutoRunSnapshot;\r\n userCanAutoRunReports: boolean;\r\n userHasPrivilegeAddEditDistrictReportDefinitions: boolean;\r\n useReportDefinitions = false;\r\n backgroundColorForDistrictDefinedDefinition: string; // set in constuctor if report options are turned on\r\n backgroundColorForUserDefinedDefinition: string; // set in constuctor if report options are turned on\r\n selectedCourse: ClassroomSummary;\r\n selectedStudent: Student;\r\n isReportsMenu: boolean;\r\n documentTypes: Lookup[] = []; // student digital content\r\n defaultAcademicYear: string; // = this.yearService.defaultYear.AYIdentifier;\r\n useParameterGroups: boolean; // so I can turn off this functionality until I get all of the parts into place -- ONE-2400\r\n useParameterFormatting: boolean; // so I can turn off this functionality until I get all of the parts into place -- ONE-2400\r\n utilizeDistributebyEmail: boolean; // ONE-4387\r\n isDistributebyEmail: boolean; // ONE-4387\r\n distributeByEmailOption_StudentSelected: boolean;\r\n distributeByEmailOption_PrimaryContactSelected: boolean;\r\n distributeByEmailOption_AllElectronicContactsSelected: boolean;\r\n removeArchivedFiles: boolean;\r\n // report archive permissions\r\n viewArchiveProcessesFromAllUsers: boolean;\r\n allowCancelArchiveProcesses: boolean;\r\n allowDeleteArchivedReports: boolean;\r\n dateFormat = /-?\\d+/;\r\n v9parameterName = v9ReportParameterName; // parameter name enum\r\n v9ReportName = V9ReportName;\r\n skipRunningReportWhileInDebugMode = false;\r\n isTylerAdmin = false;\r\n isDebugModeInProduction = false;\r\n reportingConfigurationSettings: ReportingConfigurationSettings;\r\n\r\n reportBatch: ReportBatch;\r\n\r\n\r\n static saveFile(dataBase64, fileType, fileName) {\r\n // PRE: a base64, a file type, and a file name to set up a download\r\n // POST: downloads the file from the browser\r\n const byteCharacters = atob(dataBase64);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: fileType });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.style.display = 'none';\r\n document.body.appendChild(a);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n\r\n // Class Functions\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n // private userPreferencesService: UserPreferencesService,\r\n private classroomSummaryService: ClassroomSummaryService,\r\n private studentService: StudentService,\r\n private sharedService: SharedService,\r\n // private gradebookV9Service: GradebookV9Service,\r\n\r\n ) {\r\n this.inDebugMode = false; // isDevMode(); // to disable in production for now\r\n this.skipRunningReportWhileInDebugMode = false; // this.inDebugMode;\r\n this.useParameterGroups = true;\r\n this.useParameterFormatting = true;\r\n\r\n\r\n this.currentUserSubscription = this.userService.observableCurrentUserStream$\r\n .subscribe(user => {\r\n this.currentUser = user;\r\n this.login_ID = this.currentUser.Id;\r\n this.userEmail = this.currentUser.Email;\r\n\r\n if (userService.currentUser.UserName.toLowerCase() == 'tyleradmin') {\r\n this.isTylerAdmin = true;\r\n } else {\r\n this.isTylerAdmin = false;\r\n }\r\n\r\n this.allowAutoRunReport = this.loginService.LoginSettings.AllowAutoRunReport;\r\n this.utilizeDistributebyEmail = this.loginService.LoginSettings.UtilizeDistributebyEmail;\r\n this.maxReportSnapshotAllowed = this.loginService.LoginSettings.MaxReportSnapshotAllowed;\r\n if (this.loginService.LoginSettings.ReportDefinitionsOption > 0) {\r\n this.useReportDefinitions = true;\r\n }\r\n\r\n this.backgroundColorForDistrictDefinedDefinition = 'lavenderblush';\r\n this.backgroundColorForUserDefinedDefinition = 'aliceblue';\r\n\r\n if (!this.allowAutoRunReport) {\r\n this.isMyReports = false;\r\n this.isAllReports = true;\r\n } else {\r\n this.isMyReports = true;\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n // Methods\r\n\r\n getReportingConfigurationSettings(schoolId: number, AYIdentifier: string): Observable {\r\n\r\n return this.http.get(System.apiURL.Student + 'getReportingConfigurationSettings?schoolId=' + schoolId + '&AYIdentifier=' + AYIdentifier).pipe(\r\n map(results => {\r\n results = System.convert(results, new ReportingConfigurationSettings());\r\n return results;\r\n })\r\n );\r\n\r\n }\r\n\r\n getDateWithoutTime(): Date {\r\n return new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), 0, 0, 0);\r\n }\r\n\r\n distributeByEmail(): Observable {\r\n return this.http.post(System.apiURL.Student + 'DistributeByEmail?loginId=' + this.login_ID, this.SelectedReport);\r\n }\r\n\r\n\r\n getEmailRegexp() {\r\n return System.mailRegexp;\r\n }\r\n\r\n saveFolderReports(loginId: number, reportId: number, folderIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'SaveFolderReports?loginId=' + loginId + '&reportid=' + reportId, folderIds);\r\n }\r\n\r\n deleteReportFolder(folderId: number): Observable {\r\n return this.http.get(System.apiURL.Student + 'DeleteReportFolder?folderId=' + folderId);\r\n }\r\n\r\n saveReportAutoRunSettings() { // SelectedReportSettings: any\r\n return this.http.post(System.apiURL.Student + 'saveReportAutoRunSettings?loginId=' + this.login_ID, this.SelectedReport);\r\n }\r\n\r\n getReportSnapshot(snapshotId: number) {\r\n return this.http.get(System.apiURL.Student + 'getReportSnapshot?snapshotId=' + snapshotId);\r\n }\r\n\r\n deleteReportSnapshot(snapshotId: number) {\r\n return this.http.post(System.apiURL.Student + 'DeleteReportSnapshot?snapId=' + snapshotId, null);\r\n }\r\n\r\n getReportDefinitions(getUnsavedDefinitions: boolean): Observable {\r\n let Login_ID_Parameter = this.login_ID;\r\n if (getUnsavedDefinitions && this.SelectedReport.IsDistrictReportDefinitions) {\r\n Login_ID_Parameter = -1;\r\n }\r\n return this.http.get(System.apiURL.Student + 'GetReportDefinitions?loginId=' + Login_ID_Parameter + '&reportid=' + this.SelectedReport.Id + '&getUnsavedDefinitions=' + getUnsavedDefinitions);\r\n }\r\n\r\n saveReportOptions(parameterDefinitions: ReportDefinition[], saveHideSaveOptions: boolean): Observable {\r\n let Login_ID_Parameter = this.login_ID;\r\n\r\n if (saveHideSaveOptions && this.SelectedReport.IsDistrictReportDefinitions) {\r\n Login_ID_Parameter = -1;\r\n }\r\n\r\n return this.http.post(System.apiURL.Student + 'SaveReportDefinitions?loginId=' + Login_ID_Parameter + '&reportid=' + this.SelectedReport.Id + '&isDistrict=' + this.SelectedReport.IsDistrictReportDefinitions + '&saveHideSaveOptions=' + saveHideSaveOptions, parameterDefinitions);\r\n }\r\n\r\n\r\n saveReportFolder(folder: ReportFolder): Observable {\r\n return this.http.get(System.apiURL.Student + 'saveReportFolder?userId=' + this.login_ID + '&id=' + folder.Id + '&name=' + folder.Name + '&description=' + folder.Description);\r\n\r\n }\r\n\r\n getMyReportFolders(): Observable {\r\n\r\n return this.http.get(System.apiURL.Student + 'GetmyReports?loginId=' + this.login_ID).pipe(\r\n map(results => {\r\n results = System.convert(results, new Array());\r\n // if no report folders, if has permissions to add folders, show message to add a folder\r\n const folders: ReportFolder[] = results;\r\n if (folders == null || folders.length == 0) {\r\n this.showNoFoldersMessage = true;\r\n } else {\r\n this.showNoFoldersMessage = false;\r\n }\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n getReportModulesByRole(schoolId: number): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetReportModulesByRole?loginId=' + this.login_ID + '&schoolId=' + schoolId).pipe(\r\n map(topLevelmodules => {\r\n topLevelmodules = System.convert(topLevelmodules, new Array());\r\n return topLevelmodules;\r\n })\r\n );\r\n }\r\n\r\n\r\n getAllReports(moduleId: number, schoolId: number): Observable {\r\n\r\n return this.http.get(System.apiURL.Student + 'GetReports?moduleId=' + moduleId + '&loginId=' + this.login_ID + '&schoolId=' + schoolId).pipe(\r\n map(reports => {\r\n reports = System.convert(reports, new Array());\r\n return reports;\r\n })\r\n );\r\n }\r\n\r\n\r\n getReportByIsSysGen(isSysGen: number): Observable {\r\n\r\n return this.http.get(System.apiURL.Student + 'GetReportByIsSysGen?loginId=' + this.login_ID + '&isSysGen=' + isSysGen).pipe(\r\n map(reports => {\r\n reports = System.convert(reports, new Report());\r\n return reports;\r\n })\r\n );\r\n }\r\n\r\n getReportParameters(paramId: number, report: Report, forSchedule?: boolean): Observable {\r\n\r\n if (forSchedule == undefined || forSchedule == null) {\r\n forSchedule = false;\r\n }\r\n\r\n report.UseParameterGroups = this.useParameterGroups;\r\n report.UseParameterFormatting = this.useParameterFormatting;\r\n\r\n let selectedSubjectId = 0;\r\n let selectedSectionId = 0;\r\n let selectedStudentId = 0;\r\n let selectedSubjectCode = '';\r\n let selectedSectionName = '';\r\n let selectedStudentNumber = '';\r\n\r\n if (this.selectedCourse != null && this.selectedCourse != undefined) {\r\n selectedSubjectId = this.selectedCourse.SubjectId;\r\n selectedSubjectCode = this.selectedCourse.SubjectCode;\r\n selectedSectionId = this.selectedCourse.SSEC_ID;\r\n if (this.selectedCourse.ReportingSectionName != null && this.selectedCourse.ReportingSectionName != undefined) {\r\n // I'm doing this check to be safe, this new field ReportingSectionName (really just the SubjectSection.SSecName) was added by Mat for ONE-5843\r\n selectedSectionName = this.selectedCourse.ReportingSectionName;\r\n } else {\r\n selectedSectionName = this.selectedCourse.Section;\r\n }\r\n }\r\n\r\n if (this.selectedStudent != null && this.selectedStudent != undefined) {\r\n selectedStudentId = this.selectedStudent.Id;\r\n selectedStudentNumber = this.selectedStudent.StudentNumber;\r\n }\r\n\r\n const urlArgs =\r\n '?userId=' + this.login_ID +\r\n '¶mId=' + paramId +\r\n '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier +\r\n '&schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&forSchedule=' + forSchedule +\r\n '&selectedSubjectId=' + selectedSubjectId +\r\n '&selectedSubjectCode=' + selectedSubjectCode +\r\n '&selectedSectionId=' + selectedSectionId +\r\n '&selectedSectionName=' + selectedSectionName +\r\n '&selectedStudentId=' + selectedStudentId +\r\n '&selectedStudentNumber=' + selectedStudentNumber;\r\n\r\n\r\n return this.http.post(System.apiURL.Student + 'GetReportParameters' + urlArgs, report).pipe(\r\n map(results => {\r\n results = System.convert(results, new Report());\r\n for (let i = 0; i < results.Parameters.length; i++) {\r\n results.Parameters[i] = System.convert(results.Parameters[i], new ReportParameter());\r\n results.Parameters[i].ParameterReportDefinition = System.convert(results.Parameters[i].ParameterReportDefinition, new ReportDefinition());\r\n }\r\n\r\n return results;\r\n })\r\n );\r\n\r\n\r\n }\r\n\r\n\r\n runReport(): Observable {\r\n let results;\r\n results = this.http.post(System.apiURL.Student + 'RunReport', this.SelectedReport);\r\n return results;\r\n }\r\n\r\n\r\n runManualReport(isSysGen: number, queryString: string): Observable {\r\n let results;\r\n results = this.http.get(System.apiURL.Student + 'RunManualReport?isSysGen=' + isSysGen + '&queryString=' + queryString);\r\n return results;\r\n }\r\n\r\n\r\n runReportToEmail(): Observable {\r\n let results;\r\n results = this.http.post(System.apiURL.Student + 'SendReportPdfToEmails', this.SelectedReport);\r\n return results;\r\n }\r\n\r\n handleCheckboxAll(checkedDataSource: DataSource, dataSourceArray: DataSource[]) {\r\n // check/uncheck when All is changed\r\n if (checkedDataSource.TextField == 'All' && checkedDataSource.ValueField == '-1') { // -1 is All\r\n // set the others to match All\r\n for (let i = 0; i < dataSourceArray.length; i++) {\r\n dataSourceArray[i].IsSelected = checkedDataSource.IsSelected;\r\n }\r\n }\r\n\r\n let firstCheckBoxIsAll = false;\r\n let allItemsAreChecked = true;\r\n\r\n if (dataSourceArray[0].TextField == 'All' && dataSourceArray[0].ValueField == '-1') {\r\n firstCheckBoxIsAll = true;\r\n }\r\n\r\n // uncheck the All checkbox if ANY checkbox is unselected\r\n if (firstCheckBoxIsAll) {\r\n for (let i = 1; i < dataSourceArray.length; i++) { // starting at index 1 instead of 0 to skip looking at All\r\n\r\n if (!dataSourceArray[i].IsSelected) {\r\n dataSourceArray[0].IsSelected = false; // uncheck All\r\n allItemsAreChecked = false;\r\n break;\r\n }\r\n }\r\n // check the All checkbox if ALL checkboxes are selected\r\n if (allItemsAreChecked) {\r\n dataSourceArray[0].IsSelected = true;\r\n }\r\n }\r\n }\r\n\r\n populateDataSourceFromLookup(dataSourceArray: DataSource[], lookups: Lookup[]) {\r\n dataSourceArray.length = 0;\r\n let dataSource: DataSource; // = new DataSource();\r\n dataSource = new DataSource();\r\n dataSource.TextField = 'All';\r\n dataSource.ValueField = '-1';\r\n dataSource.Id = '-1';\r\n dataSourceArray.push(dataSource);\r\n // let myLookup: Lookup;\r\n for (let i = 0; i < lookups.length; i++) {\r\n if (lookups[i].CodeDescription == '' || lookups[i].CodeDescription == undefined) {\r\n continue;\r\n }\r\n dataSource = new DataSource();\r\n dataSource.TextField = lookups[i].CodeDescription; // lookups[i].CodeDescription;\r\n dataSource.ValueField = lookups[i].Code; // lookups[i].Code;\r\n // dataSource.IsSelected = true;\r\n dataSource.Id = lookups[i].Id;\r\n dataSourceArray.push(dataSource);\r\n }\r\n }\r\n\r\n hasStringValueNotEmpty(stringToCheck: string): boolean {\r\n if (stringToCheck != undefined && stringToCheck != '' && stringToCheck != null) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n minIsGreaterThanMax(min: string, max: string) {\r\n if (parseInt(min, 10) > parseInt(max, 10)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n getMonthDayYear(date) {\r\n return new Date(parseInt((this.dateFormat.exec(date.toString()))[0], 10));\r\n }\r\n\r\n getSelectedItemsAsDelimitedString(datasourceArray: DataSource[], getTextField: boolean, delimiter: string, hasShowAll: boolean): string {\r\n let delimitedString = '';\r\n if (delimiter == null || delimiter == undefined) {\r\n delimiter = ','; // defaults to comma\r\n }\r\n let startIndex = 0;\r\n if (hasShowAll) {\r\n startIndex = 1;\r\n }\r\n for (let x = startIndex; x < datasourceArray.length; x++) {\r\n if (!datasourceArray[x].IsSelected) {\r\n continue;\r\n }\r\n if (getTextField) {\r\n delimitedString = delimitedString + datasourceArray[x].TextField + delimiter;\r\n } else {\r\n delimitedString = delimitedString + datasourceArray[x].ValueField + delimiter;\r\n }\r\n }\r\n if (delimitedString.endsWith(',')) {\r\n delimitedString = delimitedString.replace(/,\\s*$/, ''); // remove trailing comma\r\n }\r\n return delimitedString;\r\n }\r\n\r\n setSelectedItemsFromUserPrefereneces(codesFromPreferences: string, dataSourceArray: DataSource[]) {\r\n const attCodesFromPreferences = codesFromPreferences.split('');\r\n let selectedCount = 0;\r\n for (let k = 0; k < attCodesFromPreferences.length; k++) {\r\n for (let i = 1; i < dataSourceArray.length; i++) {\r\n\r\n if (attCodesFromPreferences[k] == dataSourceArray[i].TextField) {\r\n dataSourceArray[i].IsSelected = true;\r\n selectedCount++;\r\n } else {\r\n if (dataSourceArray[i].IsSelected == undefined) {\r\n dataSourceArray[i].IsSelected = false;\r\n }\r\n }\r\n }\r\n }\r\n if (selectedCount > 0 && selectedCount == dataSourceArray.length - 1) { // -1 to handle All checkbox\r\n dataSourceArray[0].IsSelected = true; // NEED TO SELECT THE ALL CHECKBOX\r\n }\r\n\r\n }\r\n\r\n getMyClasses(termId: number, viewId: number, isTeacher: boolean, includeAllCourses: boolean, dateItem: Date): Observable {\r\n // TODO: Fix Duplicate Service Call\r\n const currentDate = new Date();\r\n const dateString = (currentDate.getUTCMonth() + 1) + '/' + currentDate.getDate() + '/' + currentDate.getUTCFullYear();\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&termId=' + termId +\r\n '&viewId=' + viewId +\r\n '&isTeacher=' + isTeacher +\r\n '&dateItem=' + dateItem +\r\n '&includeAllCourses=' + includeAllCourses +\r\n '¤tDate=' + dateString;\r\n return this.http.get\r\n (System.apiURL.Classroom + 'GetMyClasses' + queryString);\r\n }\r\n\r\n\r\n getV9Reports(pageName: string): Observable {\r\n const urlArgs = '?pageName=' + pageName + '&yearId=' + this.yearService.defaultYear.Id + '&schoolId=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.get(System.apiURL.Student + 'GetV9Reports' + urlArgs).pipe(\r\n map(results => {\r\n results = System.convert(results, new Array());\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n getTermsforCourses(termDefinitionId: number, siteYearId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetTermsforCourses?termDefinitionId=' + termDefinitionId + '&siteYearId=' + siteYearId);\r\n }\r\n\r\n getGradebookTermsBySiteSectionId(siteSectionId: number, tgsId: number, showTermOnly: boolean, yearId: number, schoolId: number, userId: number): Observable {\r\n // TODO: Fix Duplicate Service Call\r\n const apiCallString = System.apiURL.Classroom + 'GetGradebookTermsBySiteSectionId?siteSectionId=' + siteSectionId\r\n + '&tgsId=' + tgsId\r\n + '&showTermOnly=' + showTermOnly\r\n + '&yearId=' + yearId\r\n + '&schoolId=' + schoolId\r\n + '&userId=' + userId;\r\n return this.http.get(apiCallString);\r\n }\r\n\r\n\r\n getDistrictDepartmentsReadForGradebookAssignmentsLookup(siteYearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetDistrictDepartmentsReadForGradebookAssignmentsLookup?siteYearId=' + siteYearId);\r\n }\r\n\r\n\r\n getDynamicPagesReadForStudentLookup(userIsTeacher: boolean): Observable {\r\n // TODO: Fix Duplicate Service Call\r\n return this.http.get(System.apiURL.Classroom + 'GetDynamicPagesReadForStudentLookup?userIsTeacher=' + userIsTeacher);\r\n }\r\n\r\n getResidencyCodesLookup(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetResidencyCodeLookup');\r\n }\r\n\r\n getEnrollmentCategoriesLookup(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetEnrollmentCategoryLookup');\r\n }\r\n\r\n getAllGradeLevelsLookup(): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetAllGradeLevels?yearId=' + this.yearService.defaultYear.Id + '&qrFamily=false&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier);\r\n }\r\n\r\n getAttendanceCodesLookup(isTeacher: boolean, schoolId: number): Observable {\r\n // TODO: Fix Duplicate Service Call\r\n return this.http.get(System.apiURL.Counselor + 'GetAttendanceCodeLookup?IsTeacher=' + isTeacher + '&schoolId= ' + schoolId);\r\n }\r\n\r\n getGradebookAssignmentTypesLookup(siteSectionIds: string): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetGradeBookAssignmentTypeBySiteSectionIdsLookup', siteSectionIds);\r\n }\r\n\r\n getGradebookAssignmentType(courseId: number, courseIds: string): Observable {\r\n // TODO: Fix Duplicate Service Call\r\n const apiCallString = System.apiURL.Classroom + 'GetGradebookAssignmentType?isTeacherUser=' + this.currentUser.UserIsTeacher // userId=' + this.currentUser.Id\r\n + '&courseId=' + courseId\r\n + '&courseList=' + courseIds;\r\n return this.http.get(apiCallString).pipe(\r\n map(assignmentTypes => {\r\n assignmentTypes = System.convert(assignmentTypes, new Array());\r\n for (let x = 0; x < assignmentTypes.length; x++) {\r\n assignmentTypes[x].isSelected = false;\r\n }\r\n return assignmentTypes;\r\n })\r\n );\r\n\r\n }\r\n\r\n getGradebookAssignments(siteSectionId: number, assignmentTypeId: number, gradebookUnitId: number, termId: number, gradebookAssignmentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteSectionId=' + siteSectionId +\r\n '&termId=' + termId +\r\n '&assignmentTypeId=' + assignmentTypeId +\r\n '&gradebookUnitId=' + gradebookUnitId +\r\n '&gradebookAssignmentId=' + gradebookAssignmentId;\r\n return this.http.get(System.apiURL.Classroom + 'GetGradebookV9Assignments' + queryString);\r\n }\r\n\r\n addCoreParametersV9(parameters: any[], reportTitle: string, reportType: number, parameterNameFlags: number) {\r\n const flags = v9ReportParameterName;\r\n\r\n /* tslint:disable:no-bitwise */\r\n if (flags.strReportSiteHeader & parameterNameFlags) {\r\n parameters.push({\r\n ParamName: 'strReportSiteHeader',\r\n ParamStringValue: this.yearService.defaultYear.SchoolName\r\n });\r\n }\r\n\r\n if (flags.strReportSiteAddress & parameterNameFlags) {\r\n parameters.push({ ParamName: 'strReportSiteAddress', ParamStringValue: '' });\r\n }\r\n\r\n if (flags.strReportDate & parameterNameFlags) {\r\n parameters.push({\r\n ParamName: 'strReportDate',\r\n ParamStringValue: ((new Date().getMonth() + 1) + '/' + new Date().getDate() + '/' + new Date().getFullYear())\r\n });\r\n }\r\n\r\n if (flags.strReportTitle & parameterNameFlags) {\r\n parameters.push({ ParamName: 'strReportTitle', ParamStringValue: reportTitle });\r\n }\r\n\r\n if (flags.strSiteYearCode & parameterNameFlags) {\r\n parameters.push({\r\n ParamName: 'strSiteYearCode',\r\n ParamStringValue: this.yearService.defaultYear.SchoolCode + '' + this.yearService.defaultYear.AYIdentifier\r\n });\r\n }\r\n\r\n if (flags.lngSiteYearId & parameterNameFlags) {\r\n parameters.push({ ParamName: 'lngSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n }\r\n\r\n if (flags.bytReportType & parameterNameFlags) {\r\n parameters.push({ ParamName: 'bytReportType', ParamStringValue: reportType });\r\n }\r\n\r\n if (flags.strStaffUserName_LNFN & parameterNameFlags) {\r\n parameters.push({\r\n ParamName: 'strStaffUserName',\r\n ParamStringValue: this.currentUser.LastName + ', ' + this.currentUser.FirstName\r\n });\r\n }\r\n\r\n if (flags.strOutputFile_NOFILE & parameterNameFlags) {\r\n parameters.push({ ParamName: 'strOutputFile', ParamStringValue: 'NOFILE' });\r\n }\r\n\r\n if (flags.strReportTime & parameterNameFlags) {\r\n parameters.push({ ParamName: 'strReportTime', ParamStringValue: new Date().toTimeString().split(' ')[0] });\r\n }\r\n\r\n if (flags.intSiteYearId & parameterNameFlags) {\r\n parameters.push({ ParamName: 'intSiteYearId', ParamStringValue: this.yearService.defaultYear.SiteYearId });\r\n }\r\n }\r\n\r\n getTodaysDate() {\r\n const today = new Date();\r\n return (today.getMonth() + 1) + '/' + today.getDate() + '/' + new Date().getFullYear();\r\n }\r\n\r\n getSelectedIdsAsCommaDelimitedString(dataSourceArray: DataSource[]): string {\r\n let selectedIds = '';\r\n for (let x = 0; x < dataSourceArray.length; x++) {\r\n if (dataSourceArray[x].TextField == 'All' && dataSourceArray[x].ValueField == '-1') {\r\n continue; // skip All checkbox\r\n }\r\n if (dataSourceArray[x].IsSelected) {\r\n selectedIds = selectedIds + ',' + dataSourceArray[x].Id;\r\n }\r\n if (selectedIds.startsWith(',')) {\r\n selectedIds = selectedIds.slice(1);\r\n }\r\n }\r\n return selectedIds;\r\n }\r\n\r\n openStudentAttachmentReport(documentId: number, reportName: string, documentBase64: string, documentMimeType: string, documentModuleName: string, reportParameters: any[], reportType: number) {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: documentId,\r\n DocumentName: reportName,\r\n DocumentBase64: documentBase64,\r\n DocumentMimeType: documentMimeType,\r\n DocumentModuleName: documentModuleName,\r\n ReportParameters: reportParameters,\r\n ReportType: reportType\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n window.open(System.baseUrl + 'studentattachment', '_blank');\r\n }\r\n\r\n getTeacherPreviewGridData(siteYearId: number, termDefinitionId: number, currentAttendanceDate: Date, startPeriod: number, endPeriod: number): Observable {\r\n const currentAttDate = formatDate(currentAttendanceDate, 'MM/dd/yyyy', 'en-US');\r\n return this.http.get(System.apiURL.Student + 'GetTeacherPreviewGridData?siteYearId=' + siteYearId + '&termDefinitionId=' + termDefinitionId + '¤tAttendanceDate=' + currentAttDate + '&startPeriod=' + startPeriod + '&endPeriod=' + endPeriod);\r\n }\r\n\r\n runV9Report(reportName: string, reportType: number, workflowReport: boolean, reportParameters): Observable {\r\n return this.http.post(System.apiURL.Student + 'RunV9Report?reportName=' + reportName + '&reportType=' + reportType + '&workflowReport=' + workflowReport, reportParameters);\r\n }\r\n\r\n getNumberMask() {\r\n return {\r\n guide: true,\r\n mask: createNumberMask({\r\n prefix: '',\r\n includeThousandsSeparator: false,\r\n integerLimit: 2,\r\n allowDecimal: false,\r\n decimalLimit: false\r\n })\r\n };\r\n }\r\n\r\n getReportsQueue(showAllUsers: boolean = false, schoolId = this.yearService.defaultYear.SchoolID, yearId = this.yearService.defaultYear.Id,): Observable {\r\n const urlArgs = '?schoolId=' + schoolId + '&yearId=' + yearId + '&showAllUsers=' + showAllUsers;\r\n return this.http.get(System.apiURL.Student + 'GetReportsQueue' + urlArgs).pipe(\r\n map(results => {\r\n results = System.convert(results, new Array());\r\n return results;\r\n })\r\n );\r\n }\r\n\r\n deleteReportsQueue(ReportQueueIds: number[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'DeleteReportsQueue', ReportQueueIds);\r\n }\r\n\r\n public GetGradeBookSectionListReadbyTeacherId(siteYearId: number, allClasses: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + siteYearId +\r\n '&allClasses=' + allClasses;\r\n return this.http.get(System.apiURL.Student + 'GetGradeBookSectionListReadbyTeacherId' + queryString);\r\n }\r\n\r\n public GetGradeBookAssignmentTypeBySiteSectionIdsLookup(siteSectionIds: any[]): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetGradeBookAssignmentTypeBySiteSectionIdsLookup', siteSectionIds);\r\n }\r\n\r\n public getGradeCyclesReadBySiteYearIdLookup(siteYearId: number): Observable {\r\n\r\n return this.http.get(System.apiURL.Student + 'GetGradeCyclesReadBySiteYearIdLookup' + '?siteYearId=' + siteYearId);\r\n }\r\n\r\n public getTermGradeCycleHeaderRead(siteYearId: number, termGradeCycleId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + siteYearId +\r\n '&termGradeCycleId=' + termGradeCycleId;\r\n return this.http.get(System.apiURL.Student + 'getTermGradeCycleHeaderRead' + queryString);\r\n }\r\n\r\n public getReportCardAttendanceCodesReadBySiteYearIdLookup(siteYearId: number, tardy: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + siteYearId +\r\n '&tardy=' + tardy;\r\n return this.http.get(System.apiURL.Student + 'getReportCardAttendanceCodesReadBySiteYearIdLookup' + queryString);\r\n }\r\n\r\n public updateGradingOptionsTemplate(userId: number, schoolYearSettings: SchoolYearSettings): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + userId +\r\n '&schoolYearSettingsDTO=' + schoolYearSettings;\r\n return this.http.get(System.apiURL.Student + 'updateGradingOptionsTemplate' + queryString);\r\n }\r\n\r\n public getReportLogos(userId: number, schoolId: number): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + userId +\r\n '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Student + 'getReportLogos' + queryString);\r\n }\r\n\r\n // REPORT BATCH\r\n\r\n public addReportBatch(batch: ReportBatch): Observable {\r\n this.SelectedReport.ReportBatch = batch;\r\n if (this.inDebugMode) {\r\n console.log(this.SelectedReport.ReportBatch);\r\n }\r\n\r\n // this.reportBatch = batch;\r\n\r\n // map(b => {\r\n // this.SelectedReport.ReportBatch = System.convert(batch, new ReportBatch());\r\n\r\n // });\r\n\r\n let queryString = '';\r\n queryString += '?AyIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n queryString += '&schoolDomain=' + this.yearService.defaultYear.SchoolID;\r\n return this.http.post(System.apiURL.Student + 'AddReportBatch' + queryString, this.SelectedReport);\r\n }\r\n\r\n public getReportBatches(): Observable {\r\n let userId: number;\r\n if (this.viewArchiveProcessesFromAllUsers) {\r\n userId = -1;\r\n } else {\r\n userId = this.currentUser.Id;\r\n }\r\n let queryString = '';\r\n queryString += '?userId=' + userId;\r\n queryString += '&schoolID=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.get(System.apiURL.Student + 'GetReportBatches' + queryString);\r\n }\r\n\r\n public startReportBatch(report: Report): Observable {\r\n\r\n report.ReportBatch = this.reportBatch;\r\n\r\n let queryString = '';\r\n queryString += '?userId=' + this.currentUser.Id;\r\n queryString += '&schoolID=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.post(System.apiURL.Student + 'StartReportBatch' + queryString, report);\r\n }\r\n\r\n public cancellingReportBatch(batch: ReportBatch): Observable {\r\n let queryString = '';\r\n queryString += '?batchId=' + batch.Id;\r\n queryString += '&userId=' + this.currentUser.Id;\r\n queryString += '&schoolID=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.post(System.apiURL.Student + 'CancellingReportBatch' + queryString, batch);\r\n }\r\n\r\n\r\n public startCancelReportBatchCleanupProcess(batch: ReportBatch): Observable {\r\n let queryString = '';\r\n queryString += '?batchId=' + batch.Id;\r\n return this.http.get(System.apiURL.Student + 'StartCancelReportBatchCleanupProcess' + queryString);\r\n }\r\n\r\n public deleteReportBatch(batch: ReportBatch): Observable {\r\n let queryString = '';\r\n queryString += '?batchId=' + batch.Id;\r\n queryString += '&userId=' + this.currentUser.Id;\r\n queryString += '&schoolID=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&ayIdentifier=' + this.yearService.defaultYear.AYIdentifier;\r\n return this.http.post(System.apiURL.Student + 'DeleteReportBatch' + queryString, batch);\r\n }\r\n\r\n public getCurrentUserName_FNLN(): string {\r\n return this.currentUser.FirstName + ' ' + this.currentUser.LastName;\r\n }\r\n\r\n public getCurrentUserName_LNFN(): string {\r\n return this.currentUser.LastName + ' - ' + this.currentUser.FirstName;\r\n }\r\n\r\n public getCurrentUserId(): number {\r\n return this.currentUser.Id;\r\n }\r\n\r\n public getReportQueueQuery(report: Report): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetReportQueueQuery', this.SelectedReport);\r\n }\r\n\r\n getV9ReportParameters(reportId: number, siteSectionId: number, studentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n queryString += '&reportId=' + reportId;\r\n queryString += '&siteSectionId=' + siteSectionId;\r\n queryString += '&studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetV9ReportParameters' + queryString);\r\n }\r\n\r\n runV9ReportByParameter(schoolId: number, yearId: number, siteSectionId: number, studentId: number, report: ReportV9): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + schoolId;\r\n queryString += '&yearId=' + yearId;\r\n queryString += '&siteSectionId=' + siteSectionId;\r\n queryString += '&studentId=' + studentId;\r\n System.removeIdFields(report.ReportParameters);\r\n return this.http.post(System.apiURL.Student + 'RunV9ReportByParameter' + queryString, report);\r\n }\r\n\r\n getV9ReportParameterValidation(report: ReportV9): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n System.removeIdFields(report.ReportParameters);\r\n return this.http.post(System.apiURL.Student + 'GetV9ReportParameterValidationMessage' + queryString, report);\r\n }\r\n\r\n getV9ReportParameterStudentNameFormat(siteSectionId: number): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n queryString += '&siteSectionId=' + siteSectionId;\r\n return this.http.get(System.apiURL.Student + 'GetV9ReportParameterStudentNameFormat' + queryString);\r\n }\r\n\r\n saveReportCardMessage(report: ReportV9): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveReportCardMessage' + queryString, report);\r\n }\r\n\r\n getV9ReportParameterBtnRefreshData(keyWordValue: string, report: ReportV9): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n queryString += '&siteYearId=' + this.yearService.defaultYear.SiteYearId;\r\n queryString += '&keyWordValue=' + keyWordValue;\r\n System.removeIdFields(report.ReportParameters);\r\n return this.http.post(System.apiURL.Student + 'GetV9ReportParameterBtnRefreshData' + queryString, report);\r\n }\r\n\r\n getAutomatedTests(testId: number): Observable {\r\n let queryString = '';\r\n queryString += '?testId=' + testId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Reporting + 'GetAutomatedTests' + queryString);\r\n }\r\n\r\n getAutomatedTestSteps(testId: number): Observable {\r\n let queryString = '';\r\n queryString += '?testId=' + testId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Reporting + 'GetAutomatedTestSteps' + queryString);\r\n }\r\n\r\n saveAutomatedTest(testId: number, test: AutomatedTest): Observable {\r\n // console.log(test);\r\n let queryString = '';\r\n queryString += '?testId=' + testId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.post(System.apiURL.Reporting + 'SaveAutomatedTest' + queryString, test);\r\n }\r\n\r\n saveAutomatedTestSteps(testId: number, testSteps: AutomatedTestStep[]): Observable {\r\n let queryString = '';\r\n queryString += '?testId=' + testId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.post(System.apiURL.Reporting + 'SaveAutomatedTestSteps' + queryString, testSteps);\r\n }\r\n\r\n saveAutomatedTestElement(element: Element): Observable {\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.post(System.apiURL.Reporting + 'SaveAutomatedTestElement', element);\r\n }\r\n\r\n saveAutomatedTestArea(area: AutomatedTestArea): Observable {\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.post(System.apiURL.Reporting + 'SaveAutomatedTestArea', area);\r\n }\r\n\r\n updateAutomatedTestElement(elementId: number, element: Element): Observable {\r\n let queryString = '';\r\n queryString += '?elementId=' + elementId;\r\n return this.http.post(System.apiURL.Reporting + 'UpdateAutomatedTestElement' + queryString, element);\r\n }\r\n\r\n updateAutomatedTestArea(areaId: number, area: AutomatedTestArea): Observable {\r\n let queryString = '';\r\n queryString += '?areaId=' + areaId;\r\n return this.http.post(System.apiURL.Reporting + 'UpdateAutomatedTestArea' + queryString, area);\r\n }\r\n\r\n getAutomatedTestAreas(testId: number): Observable {\r\n let queryString = '';\r\n queryString += '?testId=' + testId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Reporting + 'GetAutomatedTestAreas' + queryString);\r\n }\r\n\r\n\r\n getAutomatedTestElements(testId: number): Observable {\r\n let queryString = '';\r\n queryString += '?testId=' + testId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Reporting + 'GetAutomatedTestElements' + queryString);\r\n }\r\n\r\n deleteAutomatedTest(testId: number): Observable {\r\n let queryString = '';\r\n queryString += '?testId=' + testId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Reporting + 'DeleteAutomatedTest' + queryString);\r\n }\r\n\r\n deleteAutomatedTestStep(stepId: number): Observable {\r\n let queryString = '';\r\n queryString += '?stepId=' + stepId;\r\n // queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n return this.http.get(System.apiURL.Reporting + 'DeleteAutomatedTestStep' + queryString);\r\n }\r\n\r\n getV9ReportParameterSelectionByLookupName(reportParameterId: number, siteSectionId: number, reportParameterParentValueId: string, lookupProcedureName: string, studentId: number, controlType: string): Observable {\r\n let queryString = '';\r\n queryString += '?schoolId=' + this.yearService.defaultYear.SchoolID;\r\n queryString += '&yearId=' + this.yearService.defaultYear.Id;\r\n queryString += '&reportParameterId=' + reportParameterId;\r\n queryString += '&siteSectionId=' + siteSectionId;\r\n queryString += '&reportParameterParentValue=' + reportParameterParentValueId;\r\n queryString += '&lookupProcedureName=' + lookupProcedureName;\r\n queryString += '&studentId=' + studentId;\r\n queryString += '&controlType=' + controlType;\r\n return this.http.get(System.apiURL.Student + 'GetV9ReportParameterSelectionByLookupName' + queryString);\r\n }\r\n\r\n\r\n getAutomatedTestParameters(testId: number, paramId: number): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + this.login_ID;\r\n queryString += '&testId=' + testId;\r\n queryString += '¶mId=' + paramId;\r\n return this.http.get(System.apiURL.Reporting + 'GetAutomatedTestParameters' + queryString);\r\n }\r\n\r\n saveAutomatedTestParameter(testId: number, parameter: AutomatedTestParameter): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + this.login_ID;\r\n queryString += '&testId=' + testId;\r\n queryString += '¶mId=' + parameter;\r\n return this.http.post(System.apiURL.Reporting + 'SaveAutomatedTestParameter' + queryString, parameter);\r\n }\r\n\r\n deleteAutomatedTestParameter(testId: number, paramId: number): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + this.login_ID;\r\n queryString += '&testId=' + testId;\r\n queryString += '¶mId=' + paramId;\r\n return this.http.get(System.apiURL.Reporting + 'DeleteAutomatedTestParameter' + queryString);\r\n }\r\n\r\n getSubTestDependentTests(testId: number): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + this.login_ID;\r\n queryString += '&testId=' + testId;\r\n return this.http.get(System.apiURL.Reporting + 'GetSubTestDependentTests' + queryString);\r\n }\r\n\r\n getAutomatedTestQuickView(testId: number): Observable {\r\n let queryString = '';\r\n queryString += '?userId=' + this.login_ID;\r\n queryString += '&testId=' + testId;\r\n return this.http.get(System.apiURL.Reporting + 'GetAutomatedTestQuickView' + queryString);\r\n }\r\n\r\n\r\n} // end class ReportingService\r\n","import { Attachment } from '../../shared-components/models/attachment.model';\r\n\r\nexport class EmailAttachment extends Attachment {\r\n\r\n // Server Properties\r\n IsFileUpload: boolean;\r\n Base64String: string; // Please don't ask why we use 5 different variables for the same exact data...\r\n\r\n // Local Properties\r\n size: number;\r\n}\r\n","import { EmailAttachment } from './email-attachment.model';\r\n\r\nexport class MailDetail {\r\n\r\n // Properties\r\n toSelectedMailId = '';\r\n CCSelectedMailId = '';\r\n CCDisplayMailId = '';\r\n BCCSelectedMailId = '';\r\n BCCDisplayMailId = '';\r\n toMailId = '';\r\n CCMailId = '';\r\n BCCMailId = '';\r\n peopleIds = '';\r\n subject = '';\r\n message = '';\r\n attachments: EmailAttachment[] = [];\r\n personCodeMother: number;\r\n personCodeFather: number;\r\n\r\n // Constructor\r\n constructor() {\r\n for (let i = 0; i < 5; i++) {\r\n this.attachments.push(new EmailAttachment());\r\n }\r\n }\r\n}","import { EmailAttachment } from './email-attachment.model';\r\n\r\nexport class MailParameters {\r\n userId = -1;\r\n EmailFrom = '';\r\n EmailTo = '';\r\n DisplayEmailToOnComment = '';\r\n DisplayEmailCcOnComment = '';\r\n DisplayEmailBccOnComment = '';\r\n EmailToCc = '';\r\n EmailToBcc = '';\r\n Subject = '';\r\n Body = '';\r\n AddEmailToParentContactLog = false;\r\n PeopleIds = '';\r\n ToMemIds: number[] = [];\r\n CCMemIds: number[] = [];\r\n BCCMemIds: number[] = [];\r\n PersonCode: number;\r\n Attachments: EmailAttachment[] = [];\r\n HtmlBody: boolean;\r\n}\r\n","import { MatDialogRef } from '@angular/material/dialog';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'option-not-available',\r\n templateUrl: './option-not-available-dialog.component.html',\r\n styleUrls: [\r\n './option-not-available-dialog.component.css'\r\n ]\r\n})\r\nexport class OptionNotAvailableDialogComponent {\r\n\r\n // Properties\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef\r\n ) {}\r\n\r\n // Event Functions\r\n ok() {\r\n // PRE: the ok button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n}","\r\n

\r\n Option Not Available\r\n

\r\n\r\n\r\n\r\n This option is not available because there is no email
\r\n address on file for you. Please contact the school
\r\n and provide the neccesary information.\r\n
\r\n\r\n\r\n\r\n \r\n \r\n","\r\n
\r\n\r\n \r\n
\r\n
\r\n WARNING\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n This email has no subject.\r\n
\r\n
\r\n This email has no content.\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'send-email-warning',\r\n templateUrl: './send-email-warning-dialog.component.html',\r\n styleUrls: [\r\n './send-email-warning-dialog.component.css'\r\n ]\r\n})\r\nexport class SendEmailWarningDialogComponent implements OnInit {\r\n\r\n // Injected Properties\r\n noSubject = true;\r\n noContent = true;\r\n\r\n // Class Functions\r\n constructor (\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) {}\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected dialog data with the injected properties\r\n // POST: initializes the data\r\n this.noSubject = this.data.noSubject;\r\n this.noContent = this.data.noContent;\r\n }\r\n\r\n sendAnyway() {\r\n // PRE: the send anyway button is clicked\r\n // POST: closes the dialog box with true\r\n this.dialogBox.close(true);\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: closes the dialog box with false\r\n this.dialogBox.close(false);\r\n }\r\n\r\n // Methods\r\n}","\r\n

\r\n Attachments\r\n

\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n \r\n\r\n","import { EmailAttachment } from '../email-attachment.model';\r\nimport { Component, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\n\r\n// FileName: null,\r\n// Base64String: null,\r\n// IsFileUpload: false,\r\n// FileType: null,\r\n// OriginalFileName: null,\r\n// FileExtension: null\r\n@Component({\r\n selector: 'add-attachments',\r\n templateUrl: './add-attachments-dialog.component.html',\r\n styleUrls: [\r\n './add-attachments-dialog.component.css'\r\n ]\r\n})\r\nexport class AddAttachmentsDialogComponent implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n originalAttachments: EmailAttachment[];\r\n attachments: EmailAttachment[];\r\n totalAttachmentSize = 10485760;\r\n maxAttachmentSize = 10485760;\r\n errors: ErrorList[] = [];\r\n\r\n // Class Functions\r\n constructor (\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef\r\n ) {}\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected data with a list of attachments\r\n // POST: initializes the data\r\n this.attachments = this.data.attachments;\r\n this.originalAttachments = [];\r\n this.attachments.forEach(attachment => {\r\n this.originalAttachments.push(Object.assign(new EmailAttachment(), attachment));\r\n });\r\n console.log(this.originalAttachments);\r\n this.determineMaxFileSize();\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: sets the original names of the files\r\n this.attachments.forEach(attachment => {\r\n attachment.OriginalFileName = attachment.FileName;\r\n });\r\n }\r\n\r\n setFileSize(attachment: EmailAttachment, size: number) {\r\n // PRE: the file is changed\r\n // POST: sets this attachments size and the size of all of our attachments\r\n\r\n // Setting this particular attachments size\r\n attachment.size = size;\r\n\r\n // Determining the size of all of our attachments\r\n this.determineMaxFileSize();\r\n }\r\n\r\n printAttachments(index: number, attachment: EmailAttachment) {\r\n console.log(index);\r\n console.log(attachment);\r\n console.log(this.attachments);\r\n }\r\n\r\n ok() {\r\n this.errors = [];\r\n for (let attachment of this.attachments.filter(a => a.Base64String)) {\r\n if (attachment.FileExtension.toLowerCase() != 'pdf' &&\r\n attachment.FileExtension.toLowerCase() != 'jpg' &&\r\n attachment.FileExtension.toLowerCase() != 'png' &&\r\n attachment.FileExtension.toLowerCase() != 'txt' &&\r\n attachment.FileExtension.toLowerCase() != 'doc' &&\r\n attachment.FileExtension.toLowerCase() != 'docx' &&\r\n attachment.FileExtension.toLowerCase() != 'xls' &&\r\n attachment.FileExtension.toLowerCase() != 'xlsx') {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'Only .txt, .doc(x), .xls(x), .pdf, .jpg, and .png files can be uploaded.'\r\n });\r\n break;\r\n }\r\n }\r\n\r\n if (this.errors.length == 0)\r\n this.dialogBox.close(true);\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: restores the attachments and closes the dialog box\r\n\t\tfor (let i = 0; i < this.attachments.length; i++) {\r\n\t\t\tif (!this.originalAttachments[i].Base64String) {\r\n\t\t\t\tthis.deleteAttachment(this.attachments[i]);\r\n\t\t\t} else {\r\n\t\t\t\tObject.assign(this.attachments[i], this.originalAttachments[i]);\r\n\t\t\t}\r\n\t\t}\r\n this.dialogBox.close(false);\r\n }\r\n\r\n // Methods\r\n determineMaxFileSize() {\r\n // POST: sets the maximum file zie\r\n let currentAttachmentSize = 0;\r\n for (let i = 0; i < this.attachments.length; i++) {\r\n if (this.attachments[i] && this.attachments[i].size) {\r\n currentAttachmentSize += this.attachments[i].size;\r\n }\r\n }\r\n this.maxAttachmentSize = this.totalAttachmentSize - currentAttachmentSize;\r\n }\r\n\r\n deleteAttachment(attachment: EmailAttachment) {\r\n // PRE: an attachment to delete\r\n // POST: clears the content of that attachment\r\n attachment.FileName = null;\r\n attachment.Base64String = null;\r\n attachment.FileType = null;\r\n attachment.FileExtension = null;\r\n attachment.OriginalFileName = null;\r\n attachment.IsFileUpload = undefined;\r\n }\r\n}\r\n","import { MatDialogRef } from '@angular/material/dialog';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'recipient-change-warning',\r\n templateUrl: './recipient-change-warning-dialog.component.html',\r\n styleUrls: [\r\n './recipient-change-warning-dialog.component.css'\r\n ]\r\n})\r\nexport class RecipientChangeWarningDialogComponent {\r\n\r\n // Properties\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef\r\n ) {}\r\n\r\n // Event Functions\r\n ok() {\r\n // PRE: the okay button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n}","\r\n

\r\n Recipient Change\r\n

\r\n\r\n\r\n\r\n In order to prevent contacts from seeing each
\r\n other's email addresses, when more than one
\r\n parent/contact recipient is selected, they can only
\r\n be marked as BCC.\r\n
\r\n\r\n\r\n\r\n \r\n \r\n","export class Recipient {\r\n $id: number;\r\n CourseList?: string[];\r\n Email: string;\r\n FirstName: string;\r\n GradeLevel?: any;\r\n Id: number;\r\n LastName: string;\r\n MiddleName: string;\r\n Name: string;\r\n NickName: string;\r\n Relationship: string;\r\n Section?: string;\r\n SiteYearID: number;\r\n StudentContacts?: any;\r\n StudentNumber?: any;\r\n SubjectCode?: string;\r\n SubjectSections?: any;\r\n TeacherName: string;\r\n Term?: string;\r\n UserType: number;\r\n RelationshiptCourseList?: string[];\r\n}","\r\n

\r\n Select Recipients\r\n

\r\n\r\n\r\n\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
List teachers for
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n Also list\r\n
\r\n
\r\n \r\n All Advisors\r\n \r\n \r\n All Co-Teachers\r\n \r\n \r\n All Counselors\r\n \r\n \r\n All Principals\r\n \r\n \r\n All Site Administrators\r\n \r\n \r\n All District Administrators\r\n \r\n \r\n All Nurses\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n To\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n CC\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n BCC\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Name\r\n \r\n \r\n {{recipient.Name}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Relationship\r\n \r\n \r\n
\r\n \r\n
\r\n Teacher - {{course}}\r\n
\r\n
\r\n
\r\n {{recipient.Relationship}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{course}}\r\n
\r\n
\r\n {{recipient.Relationship}}\r\n
\r\n
\r\n
\r\n {{recipient.Relationship}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n\r\n","import { RecipientChangeWarningDialogComponent } from '../recipient-change-warning-dialog/recipient-change-warning-dialog.component';\r\nimport { SendEmailService } from '../send-email.service';\r\nimport { Recipient } from '../recipient.model';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { MailDetail } from '../mail-detail';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport { Component, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\n\r\n/**\r\n * DO\r\n * NOT\r\n * CHANGE\r\n * THE\r\n * REFERENCES\r\n * FOR\r\n * TOSELECTIONS\r\n * CCSELECTIONS\r\n * BCCSELECTIONS\r\n */\r\n@Component({\r\n selector: 'change-recipients',\r\n templateUrl: './change-recipients-dialog.component.html',\r\n styleUrls: [\r\n './change-recipients-dialog.component.css'\r\n ]\r\n})\r\nexport class ChangeRecipientsDialogComponent implements OnInit, OnDestroy {\r\n\r\n // Injected Properties\r\n private _viewOption = 3;\r\n mailDetail: MailDetail;\r\n teacherEmailAddress: string;\r\n userEmailAddress: string;\r\n\r\n // Local Properties\r\n private _allAdvisors = false;\r\n private _allPrincipals = false;\r\n private _allCounselors = false;\r\n private _allSiteAdministrators = false;\r\n private _allDistrictAdministrators = false;\r\n private _allCoTeachers = true;\r\n private _allNurses = false;\r\n errors: ErrorList[] = [];\r\n V10: boolean;\r\n toSelections: number[] = []; // DO NOT CHANGE THIS REFERENCE\r\n originalToSelections: number[] = [];\r\n CCSelections: number[] = []; // DO NOT CHANGE THIS REFERENCE\r\n originalCCSelections: number[] = [];\r\n BCCSelections: number[] = []; // DO NOT CHANGE THIS REFERENCE\r\n originalBCCSelections: number[] = [];\r\n _recipients: Recipient[] = [];\r\n subscriptions: Subscription[] = [];\r\n tableData: TylerMatTableDataSource;\r\n columns = ['to', 'CC', 'BCC', 'name', 'relationship'];\r\n userType: number;\r\n disableCCTo = false;\r\n CCDisabledEmailId: number;\r\n getRecipientSubscription: Subscription;\r\n obtainingRecipients = false;\r\n toSelected = false;\r\n\r\n // Class Functions\r\n constructor(\r\n private dialogBox: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private loginService: LoginService,\r\n private sendEmailService: SendEmailService,\r\n private userService: UserService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n get allAdvisors(): boolean {\r\n return this._allAdvisors;\r\n }\r\n\r\n set allAdvisors(value: boolean) {\r\n this._allAdvisors = value;\r\n this.getRecipients();\r\n }\r\n\r\n get allPrincipals(): boolean {\r\n return this._allPrincipals;\r\n }\r\n\r\n set allPrincipals(value: boolean) {\r\n this._allPrincipals = value;\r\n this.getRecipients();\r\n }\r\n\r\n get allCounselors(): boolean {\r\n return this._allCounselors;\r\n }\r\n\r\n set allCounselors(value: boolean) {\r\n this._allCounselors = value;\r\n this.getRecipients();\r\n }\r\n\r\n get allSiteAdministrators(): boolean {\r\n return this._allSiteAdministrators;\r\n }\r\n\r\n set allSiteAdministrators(value: boolean) {\r\n this._allSiteAdministrators = value;\r\n this.getRecipients();\r\n }\r\n\r\n get allDistrictAdministrators(): boolean {\r\n return this._allDistrictAdministrators;\r\n }\r\n\r\n set allDistrictAdministrators(value: boolean) {\r\n this._allDistrictAdministrators = value;\r\n this.getRecipients();\r\n }\r\n\r\n get viewOption(): number {\r\n return this._viewOption;\r\n }\r\n\r\n set viewOption(value: number) {\r\n this._viewOption = value;\r\n this.getRecipients(true);\r\n }\r\n\r\n get allCoTeachers(): boolean {\r\n return this._allCoTeachers;\r\n }\r\n\r\n set allCoTeachers(value: boolean) {\r\n this._allCoTeachers = value;\r\n this.getRecipients();\r\n }\r\n\r\n get allNurses(): boolean {\r\n return this._allNurses;\r\n }\r\n\r\n set allNurses(value: boolean) {\r\n this._allNurses = value;\r\n this.getRecipients();\r\n }\r\n\r\n\r\n recipients: Recipient[];\r\n\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // PRE: injected dialog data with the injected properties\r\n // POST: initializes the data\r\n\r\n // Checking injected data members\r\n this._viewOption = this.data.viewOption;\r\n this.mailDetail = this.data.mailDetail;\r\n this.teacherEmailAddress = this.data.teacherEmailAddress;\r\n this.userEmailAddress = this.data.userEmailAddress;\r\n if (this.data.toSelections) {\r\n this.toSelections = this.data.toSelections;\r\n this.originalToSelections = Object.assign([], this.data.toSelections);\r\n }\r\n if (this.data.CCSelections) {\r\n this.CCSelections = this.data.CCSelections;\r\n this.originalCCSelections = Object.assign([], this.data.CCSelections);\r\n }\r\n if (this.data.BCCSelections) {\r\n this.BCCSelections = this.data.BCCSelections;\r\n this.originalBCCSelections = Object.assign([], this.data.BCCSelections);\r\n }\r\n\r\n // Initializing local data members\r\n this._allAdvisors = this.sendEmailService.allAdvisors;\r\n this._allCounselors = this.sendEmailService.allCounselors;\r\n this._allPrincipals = this.sendEmailService.allPrincipals;\r\n this._allSiteAdministrators = this.sendEmailService.allSiteAdmin;\r\n this._allDistrictAdministrators = this.sendEmailService.allDistrictAdmin;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.userType = this.userService.currentUser.UserType;\r\n this.subscriptions.push(\r\n this.sendEmailService.observableRecipientsStream$.subscribe(recipients => {\r\n this.recipients = recipients;\r\n if (this.V10 == false && this.recipients.length != 0) {\r\n const currentUserRecipientId = this.recipients.find(x => x.Email == this.userService.currentUser.Email).Id;\r\n if (currentUserRecipientId == null || this.CCSelections.indexOf(currentUserRecipientId) < 0) {\r\n this.CCSelections.splice(0, this.CCSelections.length);\r\n this.CCSelections.push(this.recipients.find(x => x.Email == this.userService.currentUser.Email).Id);\r\n }\r\n }\r\n this.tableData = new TylerMatTableDataSource(this.recipients);\r\n })\r\n );\r\n if (this.recipients.length == 0) {\r\n this.getRecipients();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: unsubscribes to all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n ok() {\r\n // PRE: the ok button is clicked\r\n // POST: closes the dialogBox\r\n\r\n // Checking for errors\r\n if (this.toSelections.length == 0 && this.userType != 1) {\r\n this.errors = [];\r\n this.errors.push({\r\n fieldName: null,\r\n fieldRef: null,\r\n errorMsg: 'At least one To recipient must be selected.'\r\n });\r\n }\r\n\r\n // Continuing with save\r\n else {\r\n\r\n // Adjusting the mail details\r\n this.mailDetail.peopleIds = '';\r\n this.mailDetail.personCodeMother = 0;\r\n this.mailDetail.personCodeFather = 0;\r\n this.mailDetail.toSelectedMailId = '';\r\n this.mailDetail.CCSelectedMailId = '';\r\n this.mailDetail.CCDisplayMailId = '';\r\n this.mailDetail.BCCSelectedMailId = '';\r\n this.mailDetail.BCCDisplayMailId = '';\r\n this.toSelected = undefined;\r\n\r\n // Adjusting the To selections\r\n this.recipients.forEach(recipient => {\r\n if (recipient.Id != null && this.toSelections.length > 0) {\r\n this.toSelected = true;\r\n if (this.toSelections.indexOf(recipient.Id) > -1) {\r\n let addedRecipient = recipient.Name;\r\n if (recipient.UserType == 1 || this.userService.currentUser.UserType == 1) {\r\n addedRecipient += ' <' + recipient.Email + '>';\r\n }\r\n if (this.mailDetail.toSelectedMailId.length == 0) {\r\n this.mailDetail.toSelectedMailId = addedRecipient;\r\n this.mailDetail.toMailId = recipient.Email;\r\n }\r\n else {\r\n this.mailDetail.toSelectedMailId = this.mailDetail.toSelectedMailId + '; ' + addedRecipient;\r\n this.mailDetail.toMailId = this.mailDetail.toMailId + ';' + recipient.Email;\r\n }\r\n\r\n if (this.mailDetail.peopleIds == '') {\r\n this.mailDetail.peopleIds = recipient.Id + '||' + recipient.Relationship;\r\n } else {\r\n this.mailDetail.peopleIds = this.mailDetail.peopleIds + ',' + recipient.Id + '|| ';\r\n }\r\n\r\n if (recipient.Relationship == 'Mother' || recipient.Relationship == 'Step Mother') {\r\n this.mailDetail.personCodeMother = 1;\r\n }\r\n if (recipient.Relationship == 'Father' || recipient.Relationship == 'Step Father') {\r\n this.mailDetail.personCodeFather = 2;\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Adjusting the CC selections\r\n this.recipients.forEach(recipient => {\r\n if (recipient.Id != null && this.CCSelections.length > 0) {\r\n if (this.CCSelections.indexOf(recipient.Id) > -1) {\r\n let addedRecipient = recipient.Name;\r\n if (recipient.UserType == 1 || this.userService.currentUser.UserType == 1) {\r\n addedRecipient += ' <' + recipient.Email + '>';\r\n }\r\n if (this.mailDetail.CCDisplayMailId.length == 0) {\r\n this.mailDetail.CCDisplayMailId = addedRecipient;\r\n } else {\r\n this.mailDetail.CCDisplayMailId = this.mailDetail.CCDisplayMailId + '; ' + addedRecipient;\r\n }\r\n if (this.mailDetail.CCSelectedMailId.length == 0) {\r\n this.mailDetail.CCSelectedMailId = addedRecipient;\r\n this.mailDetail.CCMailId = recipient.Email;\r\n }\r\n else {\r\n this.mailDetail.CCSelectedMailId = this.mailDetail.CCSelectedMailId + addedRecipient + ' ';\r\n this.mailDetail.CCMailId = this.mailDetail.CCMailId + ';' + recipient.Email;\r\n }\r\n\r\n if (this.mailDetail.peopleIds == '') {\r\n this.mailDetail.peopleIds = recipient.Id + '||' + recipient.Relationship;\r\n } else {\r\n this.mailDetail.peopleIds = this.mailDetail.peopleIds + ',' + recipient.Id + '|| ';\r\n }\r\n\r\n if (recipient.Relationship == 'Mother' || recipient.Relationship == 'Step Mother') {\r\n this.mailDetail.personCodeMother = 1;\r\n }\r\n if (recipient.Relationship == 'Father' || recipient.Relationship == 'Step Father') {\r\n this.mailDetail.personCodeFather = 2;\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Adjusting the BCC selections\r\n this.recipients.forEach(recipient => {\r\n if (recipient.Id != null && this.BCCSelections.length > 0) {\r\n if (this.BCCSelections.indexOf(recipient.Id) > -1) {\r\n let addedRecipient = recipient.Name;\r\n if (recipient.UserType == 1 || this.userService.currentUser.UserType == 1) {\r\n addedRecipient += ' <' + recipient.Email + '>';\r\n }\r\n if (this.mailDetail.BCCDisplayMailId.length == 0) {\r\n this.mailDetail.BCCDisplayMailId = addedRecipient;\r\n } else {\r\n this.mailDetail.BCCDisplayMailId = this.mailDetail.BCCDisplayMailId + '; ' + addedRecipient;\r\n }\r\n if (this.mailDetail.BCCSelectedMailId.length == 0) {\r\n this.mailDetail.BCCSelectedMailId = addedRecipient + ' ';\r\n this.mailDetail.BCCMailId = recipient.Email;\r\n }\r\n else {\r\n this.mailDetail.BCCSelectedMailId = this.mailDetail.BCCSelectedMailId + addedRecipient + ' ';\r\n this.mailDetail.BCCMailId = this.mailDetail.BCCMailId + ';' + recipient.Email;\r\n }\r\n\r\n if (this.mailDetail.peopleIds == '') {\r\n this.mailDetail.peopleIds = recipient.Id + '||' + recipient.Relationship;\r\n } else {\r\n this.mailDetail.peopleIds = this.mailDetail.peopleIds + ',' + recipient.Id + '|| ';\r\n }\r\n\r\n if (recipient.Relationship == 'Mother' || recipient.Relationship == 'Step Mother') {\r\n this.mailDetail.personCodeMother = 1;\r\n }\r\n if (recipient.Relationship == 'Father' || recipient.Relationship == 'Step Father') {\r\n this.mailDetail.personCodeFather = 2;\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Closing the dialog box\r\n this.dialogBox.close(true);\r\n }\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: resets the data and closes the dialog box\r\n // NOTE: we don't just use filter because we want to keep the reference\r\n if (this.mailDetail.toSelectedMailId == '') {\r\n this.toSelected = undefined;\r\n }\r\n for (let i = 0; i < this.toSelections.length; i++) {\r\n if (!this.originalToSelections.includes(this.toSelections[i])) {\r\n this.toSelections.splice(i, 1);\r\n i -= 1;\r\n }\r\n }\r\n for (let i = 0; i < this.CCSelections.length; i++) {\r\n if (!this.originalCCSelections.includes(this.CCSelections[i])) {\r\n this.CCSelections.splice(i, 1);\r\n i -= 1;\r\n }\r\n }\r\n for (let i = 0; i < this.BCCSelections.length; i++) {\r\n if (!this.originalBCCSelections.includes(this.BCCSelections[i])) {\r\n this.BCCSelections.splice(i, 1);\r\n i -= 1;\r\n }\r\n }\r\n this.dialogBox.close(false);\r\n }\r\n\r\n deselectAll() {\r\n // PRE: the deselect all button is clicked\r\n // POST: unselects all checkboxes\r\n // NOTE: WE MUST MAINTAIN THE REFERENCES, DO NOT RESET THEM TO EMPTY ARRAYS\r\n this.disableCCTo = false;\r\n this.toSelections.splice(0, this.toSelections.length);\r\n this.CCSelections.splice(0, this.CCSelections.length);\r\n this.BCCSelections.splice(0, this.BCCSelections.length);\r\n\r\n // Parent is always selected\r\n if (this.CCDisabledEmailId) {\r\n this.CCSelections.push(this.CCDisabledEmailId);\r\n }\r\n }\r\n\r\n // Methods\r\n changeTerm(term: number) {\r\n // PRE: a new term is selected\r\n // POST: resets the data for the selected term\r\n // NOTE: WE MUST MAINTAIN THE REFERENCES, DO NOT RESET THEM TO EMPTY ARRAYS\r\n this.disableCCTo = false;\r\n this.viewOption = term;\r\n // this.value = term;\r\n this.toSelections.splice(0, this.toSelections.length);\r\n this.CCSelections.splice(0, this.CCSelections.length);\r\n this.BCCSelections.splice(0, this.BCCSelections.length);\r\n this.getRecipients();\r\n }\r\n\r\n getRecipients(force = false) {\r\n // POST: obtains the student recipients\r\n\r\n // Ensuring that the send email service's properties are synced\r\n const differences = this.allAdvisors != this.sendEmailService.allAdvisors\r\n || this.allCounselors != this.sendEmailService.allCounselors\r\n || this.allPrincipals != this.sendEmailService.allPrincipals\r\n || this.allSiteAdministrators != this.sendEmailService.allSiteAdmin\r\n || this.allDistrictAdministrators != this.sendEmailService.allDistrictAdmin\r\n || this.allCoTeachers != this.sendEmailService.allCoTeachers\r\n || this.allNurses != this.sendEmailService.allNurses;\r\n this.sendEmailService.allAdvisors = this.allAdvisors;\r\n this.sendEmailService.allCounselors = this.allCounselors;\r\n this.sendEmailService.allPrincipals = this.allPrincipals;\r\n this.sendEmailService.allSiteAdmin = this.allSiteAdministrators;\r\n this.sendEmailService.allDistrictAdmin = this.allDistrictAdministrators;\r\n this.sendEmailService.allCoTeachers = this.allCoTeachers;\r\n this.sendEmailService.allNurses = this.allNurses;\r\n\r\n // Only run the call if the properties are different or we haven't gotten them yet\r\n if (!this.getRecipientSubscription || differences || force) {\r\n\r\n // Ensuring we only ever have one recipient subscription\r\n if (this.getRecipientSubscription) {\r\n this.getRecipientSubscription.unsubscribe();\r\n }\r\n\r\n // Running the subscription\r\n this.getRecipientSubscription = this.sendEmailService.getStudentRecipients(this.viewOption).subscribe((recipients) => {\r\n if (this.V10 && recipients.filter(r => r.Id == this.userService.currentUser.MemberId).length == 0) {\r\n const currentRecipient = new Recipient();\r\n currentRecipient.Email = this.userService.currentUser.Email;\r\n currentRecipient.Id = this.userService.currentUser.MemberId;\r\n currentRecipient.Name = this.userService.currentUser.LastName + ', ' + this.userService.currentUser.FirstName;\r\n currentRecipient.TeacherName = currentRecipient.Name;\r\n currentRecipient.UserType = currentRecipient.UserType;\r\n recipients.push(currentRecipient);\r\n }\r\n this.checkDefaultMails();\r\n });\r\n this.subscriptions.push(this.getRecipientSubscription);\r\n }\r\n }\r\n\r\n canSendTo(recipient: Recipient) {\r\n // PRE: a recipient to check\r\n // POST: returns true if you can send mail to the recipient\r\n return this.userType == 1 ||\r\n recipient.UserType == 1 ||\r\n recipient.Relationship == 'Teacher' ||\r\n recipient.Relationship == 'Counselor' ||\r\n recipient.Relationship == 'Principal' ||\r\n recipient.Relationship == 'Assistant Principal' ||\r\n recipient.Relationship == 'Site Administrator' ||\r\n recipient.Relationship == 'Advisor';\r\n }\r\n\r\n canCCTo(recipient: Recipient) {\r\n // PRE: a recipient to check\r\n // POST: returns true if you can CC mail to the recipient\r\n let canCC = false;\r\n if (this.BCCSelections.filter(s => s == recipient.Id).length > 0) {\r\n canCC = true;\r\n }\r\n else if ((recipient.UserType != 2 || this.disableCCTo != true) && recipient.Id != this.CCDisabledEmailId) {\r\n canCC = true;\r\n }\r\n return canCC;\r\n }\r\n\r\n toggleSelection(recipient: Recipient, idArray: Array, forceValidation = false, checkBCC = false) {\r\n // PRE: a recipient to toggle and an id array to toggle within\r\n // POST: removes the recipient if that recipient is in the array. Otherwise, adds the recipient to that array.\r\n // Also, performs validation sometimes (???)\r\n const index = idArray.indexOf(recipient.Id);\r\n if (index > -1) {\r\n idArray.splice(index, 1);\r\n } else {\r\n idArray.push(recipient.Id);\r\n }\r\n if (this.userType == 1 || forceValidation) {\r\n this.validateSelections();\r\n }\r\n if (checkBCC && recipient.UserType == 2) {\r\n let BCCParentContactCount = 0;\r\n for (let i = 0; i < this.BCCSelections.length; i++) {\r\n const BCCRecipient = this.recipients.find(r => r.Id == this.BCCSelections[i]);\r\n if (BCCRecipient && BCCRecipient.UserType == 2) {\r\n BCCParentContactCount = BCCParentContactCount + 1;\r\n }\r\n }\r\n if (BCCParentContactCount < 2) {\r\n this.disableCCTo = false;\r\n }\r\n }\r\n if (checkBCC) {\r\n // This is logically unnecessary because it literally does nothing\r\n // Also, DO NOT CHANGE THE REFERENCE\r\n // if (this.CCSelections.filter(s => s == recipient.Id)[0] != undefined) {\r\n // this.CCSelections = this.CCSelections.filter(s => s != recipient.Id);\r\n // }\r\n if (this.CCDisabledEmailId == recipient.Id && this.BCCSelections.filter(s => s == recipient.Id).length == 0 && this.CCSelections.filter(s => s == recipient.Id).length == 0) {\r\n this.CCSelections.push(recipient.Id);\r\n }\r\n }\r\n }\r\n\r\n validateSelections() {\r\n // POST: performs validation on a selection to show warning modal\r\n // This shows if more than 1 parent has been selected\r\n const selectionMoreThanOne = [];\r\n\r\n // Validating To selections\r\n if (this.toSelections != undefined && this.toSelections != null) {\r\n for (let i = 0; i < this.toSelections.length; i++) {\r\n const toSelection = this.recipients.find(recipient => recipient.Id == this.toSelections[i]);\r\n if (toSelection != undefined && toSelection != null && toSelection.UserType == 2) {\r\n selectionMoreThanOne.push(toSelection.Id);\r\n }\r\n }\r\n }\r\n\r\n // Validating CC selections\r\n if (this.CCSelections != undefined && this.CCSelections != null && this.CCSelections.length > 0) {\r\n\r\n // Determining how many people we have CCed\r\n let ccCount = 0;\r\n for (let i = 0; i < this.CCSelections.length; i++) {\r\n const CCSelection = this.recipients.find(recipient => recipient.Id == this.CCSelections[i]);\r\n if (CCSelection.UserType == 2) {\r\n ccCount += 1;\r\n }\r\n }\r\n\r\n // Determining if we've selected more than one CC\r\n if (ccCount > 1) {\r\n for (let i = 0; i < this.CCSelections.length; i++) {\r\n const CCSelection = this.recipients.find(recipient => recipient.Id == this.CCSelections[i]);\r\n const index = selectionMoreThanOne.indexOf(this.CCSelections[i]);\r\n if (CCSelection != undefined && CCSelection != null && CCSelection.UserType == 2 && index == -1) {\r\n selectionMoreThanOne.push(CCSelection.Id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Validing BCC selections\r\n if (this.BCCSelections != undefined && this.BCCSelections != null && this.BCCSelections.length > 0 && selectionMoreThanOne.length > 0) {\r\n for (let i = 0; i < this.BCCSelections.length; i++) {\r\n const BCCselection = this.recipients.find(recipient => recipient.Id == this.BCCSelections[i]);\r\n const index = selectionMoreThanOne.indexOf(this.BCCSelections[i]);\r\n if (BCCselection != undefined && BCCselection != null && BCCselection.UserType == 2 && index == -1) {\r\n selectionMoreThanOne.push(BCCselection.Id);\r\n }\r\n }\r\n }\r\n\r\n // Check validity\r\n if (selectionMoreThanOne != undefined && selectionMoreThanOne != null && selectionMoreThanOne.length > 1) {\r\n\r\n // Showing warning\r\n const dialogBox = this.dialog.open(RecipientChangeWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n\r\n // Upon warning close, resolve errors\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(() => {\r\n this.disableCCTo = false;\r\n\r\n // Ensuring there are selections to copy from\r\n if (this.CCSelections != undefined && this.CCSelections != null && this.CCSelections.length > 0 || this.toSelections != undefined && this.toSelections != null && this.toSelections.length > 0) {\r\n\r\n // Ensuring there are BCC selections to copy to\r\n if (this.BCCSelections == undefined || this.BCCSelections == null) {\r\n this.BCCSelections.splice(0, this.BCCSelections.length); // DO NOT CHANGE THE REFERENCE\r\n }\r\n\r\n // If this is a teacher, copy over all to selections\r\n if (this.userType == 1) {\r\n for (let i = 0; i < this.toSelections.length; i++) {\r\n const toSelection = this.recipients.find(recipient => recipient.Id == this.toSelections[i]);\r\n if (toSelection && toSelection.UserType == 2) {\r\n if (this.BCCSelections.indexOf(this.toSelections[i]) == -1) {\r\n this.BCCSelections.push(this.toSelections[i]);\r\n }\r\n const index = this.toSelections.indexOf(this.toSelections[i]);\r\n if (index > -1) {\r\n this.toSelections.splice(index, 1);\r\n i--;\r\n }\r\n this.disableCCTo = true;\r\n }\r\n }\r\n }\r\n\r\n // for both teachers and parents, copy over all CC selections\r\n for (let i = 0; i < this.CCSelections.length; i++) {\r\n const CCSelection = this.recipients.find(recipient => recipient.Id == this.CCSelections[i]);\r\n if (CCSelection && CCSelection.UserType == 2) {\r\n if (this.BCCSelections.indexOf(this.CCSelections[i]) == -1) {\r\n this.BCCSelections.push(this.CCSelections[i]);\r\n }\r\n if (CCSelection.Id != this.CCDisabledEmailId) {\r\n const index = this.CCSelections.indexOf(this.CCSelections[i]);\r\n if (index > -1) {\r\n this.CCSelections.splice(index, 1);\r\n i--;\r\n }\r\n this.disableCCTo = true;\r\n }\r\n }\r\n }\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n checkDefaultMails() {\r\n // PRE: the recipients must be set\r\n // POST: checks the default emails\r\n // NOTE: WE MUST MAINTAIN THE REFERENCES, DO NOT RESET THEM TO EMPTY ARRAYS\r\n // this.toSelections.splice(0, this.toSelections.length);\r\n const existingMail = this.mailDetail.BCCMailId.split(';');\r\n const mail = existingMail.find(o => o == this.teacherEmailAddress);\r\n this.recipients.forEach(recipient => {\r\n if (recipient.Email == this.teacherEmailAddress) {\r\n if (mail == undefined || (mail != this.teacherEmailAddress) || this.mailDetail.toSelectedMailId) {\r\n if (recipient.Id) {\r\n const index = this.toSelections.indexOf(recipient.Id);\r\n if (index == -1) {\r\n this.toSelections.push(recipient.Id);\r\n }\r\n }\r\n }\r\n }\r\n if (recipient.Email == this.userEmailAddress) {\r\n if (recipient.Id) {\r\n this.CCDisabledEmailId = recipient.Id;\r\n const index = this.CCSelections.indexOf(recipient.Id);\r\n if (index == -1) {\r\n let BCCParentContactCount = 0;\r\n this.BCCSelections.forEach(BCCSelect => {\r\n if (this.recipients.find(recipient2 => recipient2.Id == BCCSelect).UserType == 2) {\r\n BCCParentContactCount += 1;\r\n }\r\n });\r\n this.CCSelections.forEach(CCSelect => {\r\n if (this.recipients.find(recipient2 => recipient2.Id == CCSelect).UserType == 2) {\r\n BCCParentContactCount += 1;\r\n }\r\n });\r\n if (BCCParentContactCount < 1) {\r\n this.CCSelections.push(recipient.Id);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n getScreenHeight() {\r\n return window.innerHeight - 100;\r\n }\r\n}\r\n","import { StudentService } from '../../../shared-components/student/student.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'enrollment-warning',\r\n templateUrl: './enrollment-warning-dialog.component.html',\r\n styleUrls: [\r\n './enrollment-warning-dialog.component.css'\r\n ]\r\n})\r\nexport class EnrollmentWarningDialogComponent implements OnInit {\r\n\r\n // Properties\r\n selectedStudent: Student;\r\n\r\n // Class Functions\r\n constructor (\r\n private studentService: StudentService,\r\n private dialogBox: MatDialogRef\r\n ) {}\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n }\r\n\r\n ok() {\r\n // PRE: the ok button is clicked\r\n // POST: closes the dialog box\r\n this.dialogBox.close();\r\n }\r\n\r\n // Methods\r\n}","\r\n

\r\n Select Recipients\r\n

\r\n\r\n\r\n\r\n
\r\n {{selectedStudent.FirstName}} {{selectedStudent.LastName}} - Not Enrolled in This School Year\r\n
\r\n
\r\n Select a different year using the Year button in the top bar.\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n","\r\n \r\n \r\n\r\n
\r\n {{banner}}\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n {{noReplyEmail}}\r\n \r\n \r\n\r\n \r\n \r\n {{currentUser.LastName}}, {{currentUser.FirstName}} <{{currentUser.Email}}>\r\n \r\n \r\n {{currentUser.LastName}} {{currentUser.FirstName ? currentUser.FirstName.substring(0, 1) : ''}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{teacherName}} {{teacherEmailAddress ? '<' + teacherEmailAddress + '>' : ''}}\r\n \r\n \r\n {{selectedEmailName}} {{emailAddress ? '<' + emailAddress + '>' : ''}}\r\n \r\n \r\n {{mailDetail.toSelectedMailId}}\r\n \r\n
\r\n
\r\n \r\n \r\n {{teacherName}} {{teacherEmailAddress ? '<' + teacherEmailAddress + '>' : ''}}\r\n \r\n \r\n {{selectedEmailName}} {{emailAddress ? '<' + emailAddress + '>' : ''}}\r\n \r\n \r\n {{mailDetail.toSelectedMailId}}\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n {{mailDetail.CCDisplayMailId}}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n {{mailDetail.BCCDisplayMailId}}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{attachment.FileName}}\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n","import { AfterViewInit, Component, ElementRef, HostListener, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { Enrollment } from '../../shared-components/student/enrollment.model';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { GeneralPreferences } from '../../shared-components/user-preferences/general-preferences.model';\r\nimport { MassEmailPreferences } from '../../shared-components/user-preferences/mass-email-preferences.model';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginService } from '../login/login.service';\r\nimport { AddAttachmentsDialogComponent } from './add-attachments-dialog/add-attachments-dialog.component';\r\nimport { ChangeRecipientsDialogComponent } from './change-recipients-dialog/change-recipients-dialog.component';\r\nimport { EnrollmentWarningDialogComponent } from './enrollment-warning-dialog/enrollment-warning-dialog.component';\r\nimport { MailDetail } from './mail-detail';\r\nimport { MailParameters } from './mail-paremeters';\r\nimport { OptionNotAvailableDialogComponent } from './option-not-available-dialog/option-not-available-dialog.component';\r\nimport { Recipient } from './recipient.model';\r\nimport { SendEmailWarningDialogComponent } from './send-email-warning-dialog/send-email-warning-dialog.component';\r\nimport { SendEmailService } from './send-email.service';\r\n\r\n@Component({\r\n selector: 'send-email',\r\n templateUrl: './send-email.component.html',\r\n styleUrls: [\r\n './send-email.component.css'\r\n ]\r\n})\r\nexport class SendEmailComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // Properties\r\n currentUser: User;\r\n teacherName: string;\r\n teacherEmailAddress: string;\r\n mailDetail = new MailDetail();\r\n subscriptions: Subscription[] = [];\r\n studentEnrollment: Enrollment;\r\n errors: ErrorList[] = [];\r\n recipients: Recipient[] = [];\r\n toSelections: number[] = [];\r\n CCSelections: number[] = [];\r\n BCCSelections: number[] = [];\r\n optionNotAvailable = false;\r\n viewOption = 3;\r\n createCommLogEntry = false;\r\n V10: boolean;\r\n yearSettings: any;\r\n selectedStudent: Student;\r\n @ViewChild('bodyContainer', { read: ElementRef }) bodyContainer: ElementRef;\r\n bodyHeight: number;\r\n emailChanged = false;\r\n emailAddress: string;\r\n selectedEmailName: string;\r\n staffUser = false;\r\n loginYear: Year;\r\n massEmailPreferences: MassEmailPreferences;\r\n modal = false;\r\n banner = '';\r\n maxTotalFileSize = 10485760;\r\n generalPreferences: GeneralPreferences;\r\n noReplyEmail = '';\r\n toSelected = false;\r\n\r\n // Class Functions\r\n constructor(\r\n private sharedService: SharedService,\r\n private router: Router,\r\n private userService: UserService,\r\n private sendEmailService: SendEmailService,\r\n private studentService: StudentService,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n private userPreferencesService: UserPreferencesService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) { }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data and shows initial warnings\r\n\r\n // Setting up local data\r\n this.currentUser = this.userService.currentUser;\r\n this.mailDetail.toMailId = this.teacherEmailAddress;\r\n this.mailDetail.toMailId = this.emailAddress;\r\n this.mailDetail.CCMailId = this.currentUser.Email;\r\n if (this.currentUser.UserType == 1) {\r\n this.mailDetail.CCDisplayMailId = this.currentUser.LastName + ', ' + this.currentUser.FirstName + ' <' + this.currentUser.Email + '>';\r\n } else {\r\n this.mailDetail.CCDisplayMailId = this.currentUser.LastName + ' ' + (this.currentUser.FirstName ? this.currentUser.FirstName.substring(0, 1) : '');\r\n }\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.staffUser = this.userService.userType == 1;\r\n this.loginYear = this.yearService.loginYear;\r\n this.noReplyEmail = this.loginService.LoginSettings.DefaultEmailReplyToAddress;\r\n\r\n // Setting injected data\r\n if (this.data) {\r\n if (this.data.modal) {\r\n this.modal = this.data.modal;\r\n }\r\n if (this.data.banner) {\r\n this.banner = this.data.banner;\r\n }\r\n }\r\n\r\n // Show option not available if the user doesn't have an email\r\n if (!this.currentUser.Email) {\r\n this.optionNotAvailable = true;\r\n this.dialog.open(OptionNotAvailableDialogComponent, {\r\n disableClose: true\r\n });\r\n }\r\n\r\n // Setting up subscriptions\r\n this.subscriptions.push(\r\n\r\n // Checking for recipient changes\r\n this.sendEmailService.observableRecipientsStream$.subscribe(recipients => {\r\n this.recipients = recipients;\r\n\r\n if (this.toSelections.length == 0 && (this.teacherName != null || this.teacherEmailAddress != null)) {\r\n for (let i = 0; i < this.recipients.length; i++) {\r\n if ((this.teacherName != null && this.recipients[i].Name.toLowerCase() === this.teacherName.toLowerCase()) ||\r\n (this.teacherEmailAddress != null && this.recipients[i].Email.toLowerCase() === this.teacherEmailAddress.toLowerCase())) {\r\n this.toSelections.push(this.recipients[i].Id);\r\n }\r\n }\r\n this.mailDetail.toMailId = this.teacherEmailAddress;\r\n }\r\n }),\r\n\r\n // Checking for selected student change\r\n // Note, this is called immediately as this is a behavior subject\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n\r\n // If there is a student, change recipient/sender\r\n if (this.studentService.selectedStudent || this.modal) {\r\n this.mailDetail = new MailDetail();\r\n this.teacherName = this.sendEmailService.teacherName;\r\n this.teacherEmailAddress = this.sendEmailService.teacherEmailAddress;\r\n if (!this.modal) {\r\n if (this.selectedStudent != null && this.selectedStudent.Id != this.studentService.selectedStudent.Id) {\r\n this.toSelections.splice(0, this.toSelections.length);\r\n this.CCSelections.splice(0, this.CCSelections.length);\r\n this.BCCSelections.splice(0, this.BCCSelections.length);\r\n }\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n }\r\n this.mailDetail.CCMailId = (this.mailDetail.CCMailId == undefined) ? this.currentUser.Email : this.mailDetail.CCMailId;\r\n if (this.currentUser.UserType == 1) {\r\n this.mailDetail.CCDisplayMailId = this.currentUser.LastName + ', ' + this.currentUser.FirstName + ' <' + this.currentUser.Email + '>';\r\n } else {\r\n this.mailDetail.CCDisplayMailId = this.currentUser.LastName + ' ' + (this.currentUser.FirstName ? this.currentUser.FirstName.substring(0, 1) : '');\r\n }\r\n if (this.V10 && this.CCSelections.filter(s => s == this.currentUser.MemberId).length == 0) {\r\n this.CCSelections.push(this.currentUser.MemberId);\r\n }\r\n else if (!this.V10 && this.CCSelections.filter(s => s == this.currentUser.Id).length == 0) {\r\n this.CCSelections.push(this.currentUser.Id);\r\n }\r\n this.sendEmailService.recipients = [];\r\n if (this.studentEnrollment || this.modal) {\r\n if (!this.optionNotAvailable && !this.teacherEmailAddress && (!this.emailAddress || this.emailAddress.length < 1)) {\r\n this.changeRecipients();\r\n }\r\n } else {\r\n this.dialog.open(EnrollmentWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n }\r\n }\r\n // If there is no student, return to summary\r\n else {\r\n this.emailChanged = false;\r\n if (this.userService.userType == 1) {\r\n this.router.navigateByUrl('classroom360/cards');\r\n } else {\r\n this.router.navigateByUrl('student360/studentSummary');\r\n }\r\n }\r\n })\r\n );\r\n\r\n // If this is a teacher and we're not in V10, check the year settings\r\n if (this.currentUser.UserType == 1 && !this.V10) {\r\n this.subscriptions.push(\r\n this.yearService.getSchoolYearSettings(\r\n this.yearService.loginYear.Id,\r\n this.yearService.loginYear.SchoolID\r\n ).subscribe(yearSettings => {\r\n this.yearSettings = yearSettings;\r\n this.createCommLogEntry = this.yearSettings.AutoAddEmail;\r\n })\r\n );\r\n }\r\n\r\n // Applying the signature\r\n if (this.userService.userType == 1) {\r\n this.getPreferences();\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n ngAfterViewInit() {\r\n // POST: sets the initial height to the body\r\n // NOTE: the -50 has to do with Angular padding and margins\r\n setTimeout(() => {\r\n if (this.bodyContainer) {\r\n this.bodyHeight = this.bodyContainer.nativeElement.offsetHeight - 50;\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n send() {\r\n // PRE: the send button is clicked\r\n // POST: sends the email\r\n\r\n // Checking for errors\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n\r\n // Checking for warnings\r\n if (!this.mailDetail.subject || !this.mailDetail.message) {\r\n const dialogBox = this.dialog.open(SendEmailWarningDialogComponent, {\r\n data: {\r\n noSubject: !this.mailDetail.subject,\r\n noContent: !this.mailDetail.message\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(sendAnyway => {\r\n if (sendAnyway) {\r\n this.sendMail();\r\n }\r\n })\r\n );\r\n }\r\n\r\n // Sending mail\r\n else {\r\n this.sendMail();\r\n }\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n\r\n cancel() {\r\n // PRE: the cancel button is clicked\r\n // POST: navigates to the previous URL\r\n // NOTE: this was depreciated since this was made a page. It might be changed to a modal in the future.\r\n this.router.navigateByUrl(this.sharedService.previousUrl);\r\n }\r\n\r\n // Methods\r\n getPreferences() {\r\n // POST: obtains the preferences, specifically for the signature\r\n this.subscriptions.push(\r\n this.userPreferencesService.getUserPreferences(0, '/OneSISMassEmail').subscribe(results => {\r\n this.userPreferencesService.massEmailPreferences = JSON.parse(results[0]);\r\n this.massEmailPreferences = JSON.parse(JSON.stringify(this.userPreferencesService.massEmailPreferences));\r\n if (this.massEmailPreferences.Signature != '' && this.mailDetail.message == '') {\r\n this.mailDetail.message = this.mailDetail.message + '




' + this.massEmailPreferences.Signature;\r\n }\r\n }),\r\n this.userPreferencesService.getGeneralPreferences().subscribe(result => {\r\n this.generalPreferences = result;\r\n })\r\n );\r\n }\r\n\r\n changeRecipients() {\r\n // POST: opens the change recipients dialog\r\n if (this.studentEnrollment) {\r\n const dialogIndex = this.dialog.openDialogs.findIndex(dialog => dialog.componentInstance instanceof ChangeRecipientsDialogComponent);\r\n if (dialogIndex == -1) {\r\n const dialogBox = this.dialog.open(ChangeRecipientsDialogComponent, {\r\n data: {\r\n viewOption: this.viewOption,\r\n mailDetail: this.mailDetail,\r\n toSelections: this.toSelections,\r\n CCSelections: this.CCSelections,\r\n BCCSelections: this.BCCSelections,\r\n teacherEmailAddress: this.teacherEmailAddress,\r\n userEmailAddress: this.currentUser.Email\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(changed => {\r\n this.viewOption = dialogBox.componentInstance.viewOption;\r\n if (changed) {\r\n this.toSelected = dialogBox.componentInstance.toSelected;\r\n this.emailChanged = changed;\r\n }\r\n })\r\n );\r\n }\r\n } else {\r\n this.dialog.open(EnrollmentWarningDialogComponent);\r\n }\r\n }\r\n\r\n addAttachment() {\r\n // POST: shows the add attachments dialog\r\n const dialogBox = this.dialog.open(AddAttachmentsDialogComponent, {\r\n data: {\r\n attachments: this.mailDetail.attachments\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(changed => {\r\n if (changed) {\r\n this.emailChanged = changed;\r\n }\r\n })\r\n );\r\n }\r\n\r\n validate() {\r\n // POST: sets the errors\r\n this.errors = [];\r\n\r\n const mailFormat = System.mailRegexp;\r\n\r\n // The email must have something for content\r\n let attachments = false;\r\n for (let i = 0; i < this.mailDetail.attachments.length; i++) {\r\n if (this.mailDetail.attachments[i].Base64String) {\r\n attachments = true;\r\n break;\r\n }\r\n }\r\n if (attachments) {\r\n let attachmentSize = 0;\r\n for (let j = 0; j < this.mailDetail.attachments.length; j++) {\r\n if (this.mailDetail.attachments[j].Base64String != undefined && this.mailDetail.attachments[j].Base64String != null && this.mailDetail.attachments[j].Base64String != '') {\r\n attachmentSize = attachmentSize + (window.atob(this.mailDetail.attachments[j].Base64String).length / (1024 * 1024));\r\n }\r\n }\r\n if (attachmentSize > 10) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: '',\r\n errorMsg: 'The total size of the files you have attached exceeds the 10 MB limit.'\r\n });\r\n }\r\n }\r\n\r\n if (!this.mailDetail.subject && !this.mailDetail.message && !attachments) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: '',\r\n errorMsg: 'Email has no content, subject, or attachment.'\r\n });\r\n }\r\n\r\n if (this.modal && this.mailDetail.CCMailId) {\r\n let validEmails = true;\r\n\r\n if (!this.mailDetail.CCMailId.match(mailFormat)) {\r\n const splitEmails: string[] = this.mailDetail.CCMailId.split(';');\r\n splitEmails.forEach(email => {\r\n if (!email.match(mailFormat) && email != '') {\r\n validEmails = false;\r\n }\r\n });\r\n }\r\n\r\n if (!validEmails) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: '',\r\n errorMsg: 'Invalid email address(es) in the CC field'\r\n });\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n sendMail() {\r\n // POST: sends the email\r\n\r\n // Removed for ONE-10154 as it was replacing spaces with % on the Mass Email Log page\r\n // // Determining the subject\r\n // const subject = encodeURIComponent(this.mailDetail.subject).replace(/[!'()]/g, escape).replace(/\\*/g, '%2A');\r\n\r\n // Organizing the parameters\r\n const params = new MailParameters();\r\n params.userId = this.currentUser.Id;\r\n params.EmailFrom = this.generalPreferences && this.generalPreferences.EmailFrom.toLowerCase() == 'no reply' ? this.noReplyEmail : this.currentUser.Email;\r\n params.EmailTo = this.mailDetail.toMailId;\r\n params.DisplayEmailToOnComment = 'To: ' + this.mailDetail.toSelectedMailId;\r\n if (this.modal) {\r\n params.DisplayEmailCcOnComment = 'CC: ' + this.mailDetail.CCMailId;\r\n }\r\n else if (this.mailDetail.CCSelectedMailId && this.mailDetail.CCSelectedMailId.length > 0) {\r\n params.DisplayEmailCcOnComment = 'CC: ' + this.mailDetail.CCSelectedMailId;\r\n } else if (this.currentUser.Email) {\r\n params.DisplayEmailCcOnComment = 'CC: ' + this.currentUser.FirstName + ' ' + this.currentUser.LastName + '<' + this.currentUser.Email + '> ';\r\n }\r\n else {\r\n params.DisplayEmailBccOnComment = 'BCC: ' + this.mailDetail.BCCSelectedMailId;\r\n }\r\n if (this.mailDetail.BCCSelectedMailId && this.mailDetail.BCCSelectedMailId.length > 0) {\r\n params.DisplayEmailBccOnComment = 'BCC: ' + this.mailDetail.BCCSelectedMailId;\r\n }\r\n params.EmailToCc = this.mailDetail.CCMailId;\r\n params.EmailToBcc = this.mailDetail.BCCMailId;\r\n params.Subject = this.mailDetail.subject;\r\n params.Body = this.mailDetail.message;\r\n params.HtmlBody = true;\r\n params.AddEmailToParentContactLog = this.createCommLogEntry;\r\n params.PeopleIds = this.mailDetail.peopleIds;\r\n if (this.V10) {\r\n params.ToMemIds = this.toSelections;\r\n params.CCMemIds = this.CCSelections;\r\n params.BCCMemIds = this.BCCSelections;\r\n }\r\n if (this.mailDetail.personCodeMother > 0) {\r\n params.PersonCode = this.mailDetail.personCodeMother;\r\n } else {\r\n params.PersonCode = this.mailDetail.personCodeFather;\r\n }\r\n\r\n // Adding the attachments\r\n params.Attachments = [];\r\n this.mailDetail.attachments.forEach(attachment => {\r\n if (attachment.Base64String) {\r\n params.Attachments.push(attachment);\r\n }\r\n });\r\n\r\n // Sending the email\r\n this.subscriptions.push(\r\n this.sendEmailService.sendEmail(params, 'Single Student', this.modal).subscribe(\r\n (result) => {\r\n if (result) {\r\n this.sharedService.showGoodSnackbar('Email sent');\r\n this.emailChanged = false;\r\n if (this.sharedService.previousUrl && !this.userService.studentInformationView) {\r\n this.router.navigateByUrl(this.sharedService.previousUrl);\r\n }\r\n if (this.modal || this.userService.studentInformationView == true) {\r\n this.dialogRef.close('Email sent.');\r\n }\r\n } else {\r\n this.sharedService.showBadSnackbar('Email failed to send');\r\n }\r\n },\r\n () => {\r\n this.sharedService.showBadSnackbar('Email failed to send');\r\n }\r\n )\r\n );\r\n }\r\n\r\n viewFile = (base64: string, fileType: string, fileName: string) => {\r\n System.viewFileFromBase(base64, fileType, fileName);\r\n }\r\n}\r\n","import { MailParameters } from './mail-paremeters';\r\nimport { Recipient } from './recipient.model';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { map } from 'rxjs/operators';\r\nimport { LoginService } from '../login/login.service';\r\n\r\n@Injectable()\r\nexport class SendEmailService {\r\n\r\n // Properties\r\n private _teacherName: string;\r\n private _teacherEmailAddress: string;\r\n allAdvisors = false;\r\n allCounselors = false;\r\n allPrincipals = false;\r\n allSiteAdmin = false;\r\n allDistrictAdmin = false;\r\n allCoTeachers = false;\r\n allNurses = false;\r\n from360Portal = false;\r\n from360Email: string;\r\n\r\n private _recipients: Recipient[] = [];\r\n private observableRecipients = new BehaviorSubject(this._recipients);\r\n observableRecipientsStream$ = this.observableRecipients.asObservable();\r\n\r\n // Class Functions\r\n constructor(\r\n private http: HttpClient,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService\r\n ) {}\r\n\r\n get recipients(): Recipient[] {\r\n return this._recipients;\r\n }\r\n\r\n set recipients(value: Recipient[]) {\r\n this._recipients = value;\r\n this.observableRecipients.next(this._recipients);\r\n }\r\n\r\n get teacherName(): string {\r\n // This makes it so the teacher name can only be obtained once\r\n const name = this._teacherName;\r\n this._teacherName = '';\r\n return name;\r\n }\r\n\r\n set teacherName(value: string) {\r\n this._teacherName = value;\r\n }\r\n\r\n get teacherEmailAddress(): string {\r\n // This makes it so the teacher email address can only be obtained once\r\n const email = this._teacherEmailAddress;\r\n this._teacherEmailAddress = '';\r\n return email;\r\n }\r\n\r\n set teacherEmailAddress(value: string) {\r\n this._teacherEmailAddress = value;\r\n }\r\n\r\n // Methods\r\n getStudentRecipients (viewOption: number): Observable {\r\n // PRE: a view option\r\n // POST: returns the recipients for the view option\r\n const queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '&yearId=' + this.yearService.defaultYear.Id +\r\n '&siteYearId=' + this.studentService.studentEnrollment.SiteYearId +\r\n '&viewOption=' + viewOption +\r\n '&allAdvisors=' + this.allAdvisors +\r\n '&allCounselors=' + this.allCounselors +\r\n '&allPrincipals=' + this.allPrincipals +\r\n '&allSiteAdmin=' + this.allSiteAdmin +\r\n '&allDistrictAdmin=' + this.allDistrictAdmin +\r\n '&allCoTeachers=' + this.allCoTeachers +\r\n '&allNurses=' + this.allNurses\r\n ;\r\n return this.http.get(System.apiURL.Student + 'GetStudentRecipients' + queryString).pipe(\r\n map(recipients => {\r\n this.recipients = recipients;\r\n return this.recipients;\r\n })\r\n );\r\n }\r\n\r\n sendEmail(parameters: MailParameters, area: string, noStudent: boolean = false): Observable {\r\n // PRE: a list of parameters for the email and an area to send it from\r\n // POST: sends the email from the server\r\n const schoolId = this.yearService.defaultYear.SchoolID > 0 ? this.yearService.defaultYear.SchoolID : 0;\r\n const studentId = noStudent ? 0 : this.studentService.selectedStudent.Id;\r\n\r\n const queryString = '?yearId=' + this.yearService.defaultYear.Id +\r\n '&studentId=' + studentId +\r\n '&schoolId=' + schoolId +\r\n '&area=' + area;\r\n return this.http.post(System.apiURL.Student + 'SendEmail' + queryString, parameters);\r\n }\r\n}\r\n","export class StudentAttachment {\r\n DocumentId: number;\r\n DocumentName: string;\r\n DocumentBase64: string;\r\n DocumentMimeType: string;\r\n DocumentModuleName: string;\r\n ReportParameters = [];\r\n ReportType: number;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'yesNo'\r\n})\r\nexport class YesNoPipe implements PipeTransform {\r\n\r\n transform(value: boolean, args?: string[]): any {\r\n let trueValue = 'Yes';\r\n let falseValue = 'No';\r\n if (args && args.length == 2) {\r\n trueValue = args[0];\r\n falseValue = args[1];\r\n }\r\n return value == true ? trueValue : falseValue;\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n 0\">\r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n 0 && academicHistorySummary.V9Flag == false && (userType == 1 || academicHistorySummary.S360ClassRank)\" >\r\n \r\n \r\n \r\n 0 && academicHistorySummary.V9Flag == false && (userType == 1 || academicHistorySummary.S360ClassRank)\" >\r\n \r\n \r\n \r\n
Unweighted GPA: {{academicHistorySummary.UnWeightedGPA}}
Weighted GPA: {{academicHistorySummary.WeightedGPA}}
Class Rank: {{academicHistorySummary.ClassRankIn}} out of {{academicHistorySummary.ClassRankOut}}
Rank Calculated: {{getFormattedDate(academicHistorySummary.RankCalculatedOn)}}
\r\n
\r\n
\r\n
\r\n
\r\n
No Academic History data exists for student.
\r\n
No HS Transcript data exists for this student.
\r\n
0\">\r\n \r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Academic Year\r\n \r\n \r\n {{AH.AcademicYear}} \r\n \r\n \r\n \r\n School\r\n \r\n \r\n {{AH.School}} \r\n \r\n \r\n \r\n Grade Level\r\n \r\n \r\n {{AH.Gradelevel}} \r\n \r\n \r\n \r\n Course Name\r\n \r\n \r\n {{AH.Course}} \r\n \r\n \r\n \r\n Attempted Credits\r\n \r\n \r\n {{AH.AttemptedCredit}} \r\n \r\n \r\n \r\n Earned Credits\r\n \r\n \r\n {{AH.EarnedCredit}} \r\n \r\n \r\n S{{i+1}}\r\n \r\n \r\n \r\n \r\n \r\n {{ahSem.Grade}} \r\n \r\n \r\n \r\n \r\n \r\n Final\r\n \r\n \r\n {{AH.Final}} \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Course-Section{{AH.Subject}}-{{AH.Section}}Include In GPA{{AH.IncludeInGPA | yesNo}}
Teacher{{AH.Teacher}}Transferred From{{AH.TransferredFrom}}
Course Complete{{AH.CourseComplete | yesNo}}
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\t\r\n \r\n
\r\n","import { Component, OnInit, AfterViewInit, ViewChild, EventEmitter, OnDestroy, ChangeDetectorRef, HostBinding, Host, ViewChildren, QueryList } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { AcademicHistory } from '../../shared-components/student/academic-history.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { FilterComponent } from '../../shared-components/controls/filter/filter.component';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../shared-components/directives/aria.directive';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\n\r\n// -------Angular Material------------------------------------\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { AcademicHistorySummary } from '../../shared-components/student/academic-history-summary.model';\r\nimport { formatDate } from '@angular/common';\r\n\r\n\r\n@Component({\r\n selector: 'academic-history',\r\n templateUrl: './academic-history.component.html',\r\n styleUrls: ['./academic-history.component.css'],\r\n // Animation for when the detail row is expanded or collapsed\r\n animations: [detailExpand],\r\n})\r\nexport class AcademicHistoryComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n @HostBinding('class.sis-app-root') sisAppRoot: Host = true;\r\n // ------------Academic History Data---------------------------\r\n student360YearSubscription: Subscription;\r\n s360Year: Year;\r\n selectedStudentSubscription: Subscription;\r\n selectedStudent: Student;\r\n academicHistory: AcademicHistory[] = [];\r\n academicHistorySummary: AcademicHistorySummary = new AcademicHistorySummary();\r\n semesters: string[] = [];\r\n // ------------Selection/Flags-----------------------------------\r\n V10: boolean;\r\n isShowHSTranscript = false;\r\n isBusy = false;\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n columnsToDisplay: string[] = ['More', 'AcademicYear', 'School', 'Gradelevel', 'Course', 'AttemptedCredit', 'EarnedCredit', 'Final'];\r\n columnsToDisplayDetailRow: string[] = ['CourseSection', 'IncludeInGPA', 'Teacher', 'TransferredFrom', 'CourseComplete'];\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n filterReset = '';\r\n @ViewChildren(FilterComponent) filterRef: QueryList;\r\n clearFilterEvent = new EventEmitter();\r\n userType: number;\r\n // --------------LifeCycle---------------------------------------\r\n\r\n constructor(private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n public cdRef: ChangeDetectorRef) {\r\n // Subscribe to services so that the component will be notified any time the value is changed by another component\r\n // When the value has changed the inner code will be executed\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n // Reload student data when the selected student is changed (Student button in the header)\r\n this.loadStudentInfo(studentId);\r\n });\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n s60Year => {\r\n // Reload AcademicHistory when the selected year is changed\r\n this.getAcademicHistory();\r\n }\r\n );\r\n\r\n // Load data into a DataSource object\r\n // MatTableDataSource extends DataSource to allow sorting, pagination and basic filtering\r\n // TylerMatTableDataSource extends MatTableDataSource and allows complex filtering and detail rows\r\n this.angularMatData.data = this.academicHistory;\r\n\r\n // Copy flag from service to local variable\r\n // This prevents having to directly call a service from the html, keeping the view loosely coupled\r\n this.V10 = userService.currentUser.V10;\r\n this.userType = this.userService.userType;\r\n }\r\n\r\n ngOnInit() {\r\n // Initial data load\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Call any methods that require data to already be available\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // Remove all subscriptions when user navigates to a different page\r\n this.selectedStudentSubscription.unsubscribe();\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n // ------------Academic History Data---------------------------\r\n\r\n loadStudentInfo(studentId: number) {\r\n if (this.studentService.studentEnrollment) {\r\n this.clearStudentData();\r\n this.checkStudentGradeLevel(this.studentService.studentEnrollment.GradeLevel);\r\n this.selectedStudent = this.studentService.students.filter(function (student) {\r\n return student.Id == studentId;\r\n })[0];\r\n this.getAcademicHistory();\r\n this.getAcademicHistorySummary();\r\n }\r\n }\r\n\r\n getAcademicHistory() {\r\n this.isBusy = true;\r\n this.angularMatData.data = [];\r\n setTimeout(() => {\r\n this.studentService.getAcademicHistory(this.selectedStudent.Id, this.yearService.student360Year.Id, this.isShowHSTranscript).subscribe(data => {\r\n this.academicHistory = data;\r\n this.loadAcademicHistory();\r\n this.generateSemesterColumns();\r\n });\r\n }, 0);\r\n }\r\n\r\n getAcademicHistorySummary() {\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.studentService.getAcademicHistorySummary(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.academicHistorySummary = data;\r\n });\r\n }, 0);\r\n }\r\n\r\n generateSemesterColumns() {\r\n // Dynamically generates the semester columns based on data returned from the server\r\n\r\n // Remove 'Final' column from array\r\n // Makes the array simpler to work with as the semester columns are now at the end of the array\r\n let index = this.columnsToDisplay.indexOf('Final');\r\n if (index != -1) {\r\n this.columnsToDisplay.splice(index, 1);\r\n }\r\n\r\n\r\n for (let i = 0; i < this.semesters.length; i++) {\r\n index = this.columnsToDisplay.indexOf(this.semesters[i]);\r\n if (index != -1) {\r\n this.columnsToDisplay.splice(index, 1);\r\n }\r\n }\r\n\r\n this.semesters = [];\r\n\r\n for (let academicHistory of this.academicHistory) {\r\n for (let semester of academicHistory.AHSemester.filter(s => s.Description != 'Final')) {\r\n if (this.semesters.indexOf(semester.Description) == -1) {\r\n this.semesters.push(semester.Description);\r\n this.columnsToDisplay.push(semester.Description);\r\n }\r\n }\r\n }\r\n\r\n if (this.V10) {\r\n this.columnsToDisplay.push('Final');\r\n }\r\n }\r\n\r\n private loadAcademicHistory(): void {\r\n // load data into Angular Material table\r\n this.angularMatData.data = this.academicHistory;\r\n this.angularMatData.useFilterDataAccessor = true;\r\n\r\n setTimeout(() => {\r\n // Custom sorting for case here Academic Year starts with letters\r\n // Extracts last two characters and returns the resulting substring if it is a number\r\n this.angularMatData.sortingDataAccessor = (item: any, property: string) => {\r\n if (property == 'AcademicYear') {\r\n if (isNaN(parseInt(item.AcademicYear, 10))) {\r\n const subStrAcademicYear: string = item.AcademicYear.substr(item.AcademicYear.length - 2);\r\n if (!isNaN(parseInt(subStrAcademicYear, 10))) {\r\n return subStrAcademicYear;\r\n }\r\n }\r\n return item[property];\r\n }\r\n // Custom sorting for dynamic columns S1, S2, etc\r\n else if (property.startsWith('Sem')) {\r\n const index: number = parseInt(property.substr(property.length - 1), 10);\r\n if (item.AHSemester[index]) {\r\n const semValue = parseInt(item.AHSemester[index].Grade, 10);\r\n if (!isNaN(semValue)) {\r\n return semValue;\r\n }\r\n else {\r\n return item.AHSemester[index].Grade;\r\n }\r\n }\r\n }\r\n else if (property == 'Final') {\r\n const finalValue = parseInt(item.Final, 10);\r\n if (!isNaN(finalValue)) {\r\n return finalValue;\r\n }\r\n else {\r\n return item.Final;\r\n }\r\n }\r\n // Default sorting\r\n else {\r\n return this.angularMatData.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n\r\n this.isBusy = false;\r\n }\r\n\r\n checkStudentGradeLevel(gradeLevel: string) {\r\n if (gradeLevel == '09' || gradeLevel == '10' || gradeLevel == '11' || gradeLevel == '12') {\r\n this.isShowHSTranscript = true;\r\n } else {\r\n this.isShowHSTranscript = false;\r\n }\r\n }\r\n\r\n clearStudentData() {\r\n\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n\r\n getAriaRow(row: AcademicHistory): string {\r\n // Returns string for a given row's data\r\n // reads each column header name and then the cell data for that column\r\n const colList: string[] = ['Academic Year',\r\n 'School',\r\n 'Grade Level',\r\n 'Course Name',\r\n 'Attempted Credits',\r\n 'Earned Credits'];\r\n\r\n this.semesters.forEach(element => {\r\n colList.push(element);\r\n });\r\n\r\n colList.push('Final');\r\n\r\n const dataList: string[] = [row.AcademicYear,\r\n row.School,\r\n row.Gradelevel,\r\n row.Course,\r\n row.AttemptedCredit.toString(),\r\n row.EarnedCredit.toString()];\r\n row.AHSemester.forEach(element => {\r\n dataList.push(element.Grade);\r\n });\r\n\r\n dataList.push(row.Final);\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList) + ' Expand for more details';\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n // These methods are used to allow calls to the TylerMatTableDataSource methods from the html\r\n toggleExpanded(row: any) {\r\n // Toggles row between expanded and collapsed\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n // Return true if expanded and false if collapsed\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n // Expand or collapse all rows\r\n // true => expand all false => collapse all\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n getFormattedDate(date) {\r\n return formatDate(date, 'MM/dd/yy', 'en-US');\r\n }\r\n\r\n}","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-add-assessment-scores',\r\n templateUrl: './add-assessment-scores.component.html',\r\n styleUrls: ['./add-assessment-scores.component.css']\r\n})\r\nexport class AddAssessmentScoresComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}","

\r\n add-assessment-scores works!\r\n

\r\n","\r\n\r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Test\r\n \r\n \r\n \r\n {{dataCategory.fullTitle}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n Add Scores\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n","import { AssessmentDataCategory } from './../assessment-data-category';\r\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSort } from '@angular/material/sort';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { Subscription } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { AddAssessmentScoresComponent } from './add-assessment-scores/add-assessment-scores.component';\r\n\r\n@Component({\r\n selector: 'assessment-data-category-table',\r\n templateUrl: './assessment-data-category-table.component.html',\r\n styleUrls: ['./assessment-data-category-table.component.css'],\r\n animations: [detailExpand],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AssessmentDataCategoryTableComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n\r\n // Properties\r\n private _sort: MatSort;\r\n @Input() data: TylerMatTableDataSource;\r\n @Input() tabIndex: number;\r\n @Output() detailOpened = new EventEmitter();\r\n @Input() showChildFilters = true;\r\n @Input() triggerChanges: EventEmitter;\r\n triggerChangeSubscription: Subscription;\r\n selectedRow: AssessmentDataCategory;\r\n headerColumns: string[] = ['More', 'fullTitle', 'action'];\r\n\r\n // Class Functions\r\n constructor(\r\n private dialog: MatDialog,\r\n private changeDetector: ChangeDetectorRef,\r\n private router: Router\r\n ) {\r\n if (this.router.url.toLowerCase().indexOf('registrationenrollment') == -1)\r\n this.headerColumns = this.headerColumns.filter(c => c != 'action');\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n @ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n this._sort = value;\r\n if (this.data) {\r\n this.data.sort = this._sort;\r\n }\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: subscribes to manual changes\r\n if (this.triggerChanges) {\r\n this.triggerChangeSubscription = this.triggerChanges.subscribe(() => {\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // POST: sets the sort of the data\r\n if (this.data && this.sort) {\r\n this.data.sort = this.sort;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n // POST: sets the sort of the data\r\n if (this.data && this.sort) {\r\n this.data.sort = this.sort;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: unsubscribes from manual changes\r\n if (this.triggerChangeSubscription) {\r\n this.triggerChangeSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n rowClick(row: AssessmentDataCategory) {\r\n // PRE: a row is clicked\r\n // POST: toggles that row and detects changes\r\n this.data.toggleExpanded(row);\r\n this.detailOpened.emit(row);\r\n this.selectedRow = row;\r\n setTimeout(() => {\r\n this.triggerChanges.emit();\r\n }, 0);\r\n }\r\n\r\n addScores(event) {\r\n event.stopPropagation();\r\n this.dialog.open(AddAssessmentScoresComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n }\r\n\r\n}","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{field}}\r\n \r\n \r\n \r\n \r\n \r\n {{field}}\r\n \r\n \r\n \r\n {{assessmentData[field]}}\r\n \r\n \r\n \r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n","import {TylerMatTableDataSource} from './../../../shared-components/angular-material/extended.class';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy, ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges, OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport {Subscription} from 'rxjs';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'assessment-data-table',\r\n templateUrl: './assessment-data-table.component.html',\r\n styleUrls: [\r\n './assessment-data-table.component.css'\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AssessmentDataTableComponent implements OnInit, AfterViewInit, OnChanges {\r\n\r\n // Properties\r\n private _sort: MatSort;\r\n @Input() data: TylerMatTableDataSource;\r\n @Input() fields: string[];\r\n @Input() minTableWidth: number;\r\n @Input() showFilters = true;\r\n @Input() triggerChanges: EventEmitter;\r\n triggerChangeSubscription: Subscription;\r\n\r\n // Class Functions\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private router: Router\r\n ) {}\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n @ViewChild(MatSort, { static: true }) set sort(value: MatSort) {\r\n this._sort = value;\r\n if (this.data) {\r\n this.data.sort = this._sort;\r\n this.setSorting();\r\n }\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: subscribes to manual changes\r\n if (this.triggerChanges) {\r\n this.triggerChangeSubscription = this.triggerChanges.subscribe(() => {\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n if (this.router.url.toLowerCase().indexOf('registrationenrollment') > -1 && this.fields.indexOf('action') == -1)\r\n this.fields.push('actions');\r\n }\r\n\r\n ngAfterViewInit() {\r\n // POST: sets the table data's sort\r\n this.setSorting();\r\n }\r\n\r\n ngOnChanges() {\r\n // POST: unsubscribes to manual changes and sets the table data's sort\r\n if (this.triggerChangeSubscription) {\r\n this.triggerChangeSubscription.unsubscribe();\r\n }\r\n this.setSorting();\r\n }\r\n\r\n // Methods\r\n setSorting () {\r\n // PRE: table data\r\n // POST: sets the table data's sort\r\n if (this.data && this.sort) {\r\n this.data.sort = this.sort;\r\n this.data.sortingDataAccessor = (data: any, sortHeaderId: string): string|number => {\r\n let value = data[sortHeaderId];\r\n const dateRegex = /\\d{2}\\/\\d{2}\\/\\d{2}/y;\r\n if (value) {\r\n if (dateRegex.test(value)) {\r\n value = new Date(value);\r\n return value.getTime();\r\n } else {\r\n return this.data.defaultSortingAccessor(data, sortHeaderId);\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n this.sort.sort({\r\n id: this.fields[0],\r\n start: 'asc',\r\n disableClear: true\r\n });\r\n }\r\n }\r\n\r\n fieldTrackBy(index: number, item: string) {\r\n return item + index;\r\n }\r\n}\r\n","import { TylerMatTableDataSource } from './../../shared-components/angular-material/extended.class';\r\n\r\n// This class exists purely for making the data work with the mattable\r\nexport class AssessmentDataCategory {\r\n\r\n\t// Properties\r\n\tcategory: string;\r\n\ttestName: string;\r\n\tfullTitle: string;\r\n\tfields: string[] = [];\r\n data: object[] = [];\r\n subTableData: TylerMatTableDataSource;\r\n instanceId: number;\r\n\r\n // Methods\r\n createSubTableData() {\r\n // POST: constructs the sub-table data source from the data\r\n this.subTableData = new TylerMatTableDataSource(this.data);\r\n }\r\n\r\n\tminTableWidth() {\r\n\t\t// POST: gives you the minimum width for the corresponding table\r\n\t\treturn (this.fields.length * 150) + 50;\r\n\t}\r\n\r\n\tcontains (checkedDatum: {[key: string]: string}): boolean {\r\n\t\t// PRE: a dictionary to check\r\n\t\t// POST: returns true if the checked dictionary is in the data\r\n\t\tfor (let i = 0; i < this.data.length; i++) {\r\n\t\t\tconst datum = this.data[i];\r\n\t\t\tlet equivalent = true;\r\n\t\t\tfor (let j = 0; j < this.fields.length; j++) {\r\n\t\t\t\tconst field = this.fields[j];\r\n\t\t\t\tif (datum[field] != checkedDatum[field]) {\r\n\t\t\t\t\tequivalent = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (equivalent) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tsort(field: string, object = null, direction = 'desc') {\r\n\t\t// POST: sorts the data in order of a specified field\r\n\t\tif (this.fields.includes(field)) {\r\n\t\t\tthis.data.sort((a, b) => {\r\n\t\t\t\tif (object) {\r\n\t\t\t\t\tconst objectA = object.__proto__.constructor(a);\r\n\t\t\t\t\tconst objectB = object.__proto__.constructor(b);\r\n\t\t\t\t\tif ((objectA < objectB && direction == 'desc') ||\r\n\t\t\t\t\t\t(objectA > objectB && direction == 'asc')) {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t} else if ((objectB < objectA && direction == 'desc') ||\r\n\t\t\t\t\t\t\t (objectB > objectA && direction == 'asc')) {\r\n\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ((a[field] < b[field] && direction == 'desc') ||\r\n\t\t\t\t\t\t(a[field] > b[field] && direction == 'asc')) {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t} else if ((b[field] < a[field] && direction == 'desc') ||\r\n\t\t\t\t\t\t\t (b[field] > a[field] && direction == 'asc')) {\r\n\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn 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"," 0 ? dataCategoriesV10[0].minTableWidth() : 0\">\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n 0 && !processingTabs\" [tabNames]=\"tabNames\"\r\n (selectionsChangeIndex)=\"selectionChange($event)\">\r\n\r\n \r\n
\r\n No assessment scores exist for this student.\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n {{tab.DESCRIPTION}}\r\n - {{tab.FULLTITLE}}\r\n
\r\n\r\n \r\n
i\">\r\n = 1\"\r\n [showChildFilters]=\"tab.DESCRIPTION != 'Best Of'\" [data]=\"tableDataV9[i]\" [tabIndex]=\"i\"\r\n [triggerChanges]=\"triggerChanges\">\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n {{tab.DESCRIPTION}}\r\n - {{tab.FULLTITLE}}\r\n
\r\n\r\n \r\n i && dataCategoriesV10 != null && dataCategoriesV10.length > i\">\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
","import {AssessmentDataCategory} from './assessment-data-category';\r\nimport {TylerMatTableDataSource} from './../../shared-components/angular-material/extended.class';\r\nimport { ChangeDetectorRef, Component, EventEmitter, OnDestroy, OnInit} from '@angular/core';\r\nimport {Assessment} from './assessment.model';\r\nimport {AssessmentService} from './assessment.service';\r\nimport {Subscription} from 'rxjs';\r\nimport {StudentService} from '../../shared-components/student/student.service';\r\nimport {UserService} from '../../shared-components/user/user.service';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport {Student} from '../../shared-components/student/student.model';\r\nimport {SpinnerService} from '../../shared-components/spinner/spinner.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n\tselector: 'assessment',\r\n\ttemplateUrl: './assessment.component.html',\r\n styleUrls: ['./assessment.component.css']\r\n})\r\nexport class AssessmentComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\tV10: boolean;\r\n\ttabs: Assessment[];\r\n\tassessments: Assessment[];\r\n\tsubscriptions: Subscription[] = [];\r\n\ttabNames: string[];\r\n\ttableDataV9: TylerMatTableDataSource[] = [];\r\n\topenDetailRows: Array = new Array();\r\n\ttableDataV10: TylerMatTableDataSource[] = [];\r\n\tdataCategoriesV10: AssessmentDataCategory[];\r\n\tselectionIndex = 0;\r\n\ttoggleAllRows: EventEmitter = new EventEmitter();\r\n selectedRow: AssessmentDataCategory;\r\n assessmentAndTabSubscriptions: Subscription[] = [];\r\n selectedStudent: Student;\r\n selectedTabName = '';\r\n previousTabSelection = '';\r\n processingTabs = false;\r\n\ttriggerChanges = new EventEmitter();\r\n\r\n\t// Class Functions\r\n\tconstructor (\r\n\t\tprivate assessmentService: AssessmentService,\r\n\t\tprivate studentService: StudentService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate yearService: YearService,\r\n\t\tprivate changeDetector: ChangeDetectorRef,\r\n private spinnerService: SpinnerService,\r\n private router: Router\r\n\t) { }\r\n\r\n\tget filtered(): boolean {\r\n\t\tif (this.V10 && this.tableDataV10[this.selectionIndex]) {\r\n\t\t\treturn this.tableDataV10[this.selectionIndex].isFiltered();\r\n\t\t} else if (this.tableDataV9[this.selectionIndex]) {\r\n\t\t\tlet filtered = this.tableDataV9[this.selectionIndex].isFiltered();\r\n\t\t\tfor (let i = 0; i < this.tableDataV9[this.selectionIndex].data.length; i++) {\r\n\t\t\t\tconst subTable = this.tableDataV9[this.selectionIndex].data[i];\r\n\t\t\t\tif (subTable instanceof AssessmentDataCategory && subTable.subTableData.isFiltered()) {\r\n\t\t\t\t\tfiltered = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn filtered;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: subscribing to the necessary services\r\n\t\tthis.V10 = this.userService.currentUser.V10;\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.studentService.selectedStudentStream$.subscribe(() => {\r\n if (this.selectedStudent != this.studentService.selectedStudent) {\r\n \tthis.previousTabSelection = this.selectedTabName;\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n this.getAssessmentsAndTabs();\r\n }\r\n\t\t\t}),\r\n\t\t\tthis.yearService.observableStudent360YearStream$.subscribe(() => {\r\n\t\t\t\tthis.previousTabSelection = this.selectedTabName;\r\n\t\t\t\tthis.getAssessmentsAndTabs();\r\n\t\t\t}),\r\n\t\t\tthis.toggleAllRows.subscribe(toggle => {\r\n if (!this.V10) {\r\n this.tableDataV9[this.selectionIndex].expandAll(toggle);\r\n this.triggerChanges.emit();\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n\t\t// POST: ends all subscriptions\r\n\t\tthis.subscriptions.forEach(subscription => {\r\n\t\t\tsubscription.unsubscribe();\r\n });\r\n this.assessmentAndTabSubscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n\t}\r\n\r\n\tselectionChange(selectionIndex: number) {\r\n\t\t// PRE: the tab selection changes and this is passed the index of the tab\r\n\t\t// POST: sets the current tab\r\n this.spinnerService.showSpinner = true;\r\n setTimeout(() => {\r\n this.selectionIndex = selectionIndex;\r\n this.selectedTabName = this.tabNames[selectionIndex];\r\n setTimeout(() => {\r\n this.spinnerService.showSpinner = false;\r\n }, 100);\r\n }, 500);\r\n\t}\r\n\r\n\tclearFilter() {\r\n\t\t// POST: clears the filters from the current tab's table\r\n\t\tif (this.V10 && this.tableDataV10[this.selectionIndex]) {\r\n\t\t\tthis.tableDataV10[this.selectionIndex].removeAllFilters();\r\n\t\t} else if (this.tableDataV9[this.selectionIndex]) {\r\n\t\t\tthis.tableDataV9[this.selectionIndex].removeAllFilters();\r\n\t\t\tfor (let i = 0; i < this.tableDataV9[this.selectionIndex].data.length; i++) {\r\n\t\t\t\tconst subTable = this.tableDataV9[this.selectionIndex].data[i];\r\n\t\t\t\tif (subTable instanceof AssessmentDataCategory) {\r\n\t\t\t\t\tsubTable.subTableData.removeAllFilters();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Methods\r\n\tgetAssessmentsAndTabs() {\r\n // POST: obtains the assessments and tabs, setting tab names and assessments\r\n\r\n\t\t// Preparing for processing\r\n\t\tthis.processingTabs = true;\r\n this.assessmentAndTabSubscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n this.assessmentAndTabSubscriptions = [];\r\n let yearId = (!this.regEnrollMode) ? this.studentService.studentEnrollment.SiteYearId : this.yearService.defaultYear.Id;\r\n\r\n // Obtaining data\r\n\t\tthis.assessmentAndTabSubscriptions.push(\r\n\r\n\t\t\t// Obtaining tabs\r\n\t\t\tthis.assessmentService.getStudentAssessmentTabs(yearId).subscribe(tabs => {\r\n\t\t\t\tthis.tabNames = [];\r\n\t\t\t\ttabs.forEach(tab => {\r\n\t\t\t\t\tthis.tabNames.push(tab.DESCRIPTION);\r\n\t\t\t\t});\r\n\t\t\t\tthis.tabs = tabs;\r\n\r\n\t\t\t\t// Changing to the first tab\r\n\t\t\t\tthis.selectionIndex = 0;\r\n\t\t\t\tthis.selectedTabName = this.tabNames[0];\r\n\r\n\t\t\t\t// Obtaining assessments\r\n\t\t\t\tthis.assessmentAndTabSubscriptions.push(\r\n\t\t\t\t\tthis.assessmentService.getStudentAssessments(tabs).subscribe(assessments => {\r\n\t\t\t\t\t\tthis.assessments = assessments;\r\n\t\t\t\t\t\tthis.arrangeTabs();\r\n\t\t\t\t\t\tthis.processingTabs = false;\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\tarrangeTabs() {\r\n // PRE: the tabs and data are obtained\r\n // POST: arranges the data for display and sets the initial grid size\r\n\t\tif (this.V10) {\r\n\t\t\tthis.arrangeTabsV10();\r\n\t\t} else {\r\n\t\t\tthis.arrangeTabsV9();\r\n }\r\n\r\n\t\t// If this is V9 and the first tab, we expand all\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (!this.V10 && this.selectionIndex == 0) {\r\n\t\t\t\tthis.toggleAllRows.emit(true);\r\n\t\t\t}\r\n\t\t}, 10);\r\n\r\n\t\t// Running change detection manually because we made a ton of changes\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n\r\n\tarrangeTabsV9 () {\r\n\t\t// PRE: Your user MUST be in V9, or this doesn't make sense\r\n\t\t// POST: finds the tabs and arranges the data for each tab\r\n\t\tthis.tableDataV9 = [];\r\n\t\tconst dataArrays: Array> = new Array>();\r\n\r\n\t\t// Creating a data category for each tab\r\n\t\tfor (let i = 0; i < this.tabNames.length; i++) {\r\n\t\t\tdataArrays.push(new Array());\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.assessments.length; i++) {\r\n\r\n\t\t\t// Only operating on the assessment if we should display this\r\n\t\t\tif (this.assessments[i].Display) {\r\n\r\n\t\t\t\t// Determining where to place this data\r\n\t\t\t\tconst tableIndex = this.tabNames.indexOf(this.assessments[i].FULLTITLE);\r\n\t\t\t\tconst dataCategories = dataArrays[tableIndex];\r\n\t\t\t\tlet categoryExists = false;\r\n\t\t\t\tlet categoryIndex = -1;\r\n\t\t\t\tfor (let j = 0; j < dataCategories.length; j++) {\r\n\t\t\t\t\tif (categoryIndex < 0 &&\r\n\t\t\t\t\t\tdataCategories[j].category == this.assessments[i].DESCRIPTION &&\r\n\t\t\t\t\t\tdataCategories[j].testName == this.assessments[i].FULLTITLE) {\r\n\t\t\t\t\t\tcategoryExists = true;\r\n\t\t\t\t\t\tcategoryIndex = j;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst bestOfTableIndex = this.tabNames.indexOf('Best Of');\r\n\t\t\t\tconst bestOfCategories = bestOfTableIndex >= 0 ? dataArrays[bestOfTableIndex] : null;\r\n\t\t\t\tlet bestOfCategoryExists = false;\r\n\t\t\t\tlet bestOfIndex = -1;\r\n\t\t\t\tif (bestOfCategories && this.assessments[i].BESTOF) {\r\n\t\t\t\t\tfor (let j = 0; j < bestOfCategories.length; j++) {\r\n\t\t\t\t\t\tif (bestOfIndex < 0 &&\r\n\t\t\t\t\t\t\tbestOfCategories[j].category == this.assessments[i].DESCRIPTION &&\r\n\t\t\t\t\t\t\tbestOfCategories[j].testName == this.assessments[i].FULLTITLE) {\r\n\t\t\t\t\t\t\tbestOfCategoryExists = true;\r\n\t\t\t\t\t\t\tbestOfIndex = j;\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// If not place was found, creating a new category for it\r\n\t\t\t\tif (!categoryExists) {\r\n\t\t\t\t\tdataCategories.push(new AssessmentDataCategory());\r\n categoryIndex = dataCategories.length - 1;\r\n let assessment = this.assessments[i];\r\n\t\t\t\t\tdataCategories[categoryIndex].category = assessment.DESCRIPTION;\r\n\t\t\t\t\tdataCategories[categoryIndex].testName = assessment.FULLTITLE;\r\n dataCategories[categoryIndex].fullTitle = assessment.DESCRIPTION;\r\n let dataFields = assessment.AssessmentDataField;\r\n if (dataFields != null && dataFields.length > 0)\r\n dataCategories[categoryIndex].instanceId = dataFields[0].TestInstanceId;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.assessments[i].BESTOF && !bestOfCategoryExists) {\r\n\t\t\t\t\tbestOfCategories.push(new AssessmentDataCategory());\r\n\t\t\t\t\tbestOfIndex = bestOfCategories.length - 1;\r\n let assessment = this.assessments[i];\r\n\t\t\t\t\tbestOfCategories[bestOfIndex].category = this.assessments[i].DESCRIPTION;\r\n\t\t\t\t\tbestOfCategories[bestOfIndex].testName = this.assessments[i].FULLTITLE;\r\n\t\t\t\t\tbestOfCategories[bestOfIndex].fullTitle = this.assessments[i].FULLTITLE + ' - ' + this.assessments[i].DESCRIPTION;\r\n let dataFields = assessment.AssessmentDataField;\r\n if (dataFields != null && dataFields.length > 0)\r\n bestOfCategories[categoryIndex].instanceId = dataFields[0].TestInstanceId;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Ensuring the correct category names\r\n\t\t\t\tthis.assessments[i].AssessmentDataField.forEach(field => {\r\n\t\t\t\t\tif (!dataCategories[categoryIndex].fields.includes(field.strFieldName)) {\r\n\t\t\t\t\t\tdataCategories[categoryIndex].fields.push(field.strFieldName);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.assessments[i].BESTOF) {\r\n\t\t\t\t\t\tif (!bestOfCategories[bestOfIndex].fields.includes(field.strFieldName)) {\r\n\t\t\t\t\t\t\tbestOfCategories[bestOfIndex].fields.push(field.strFieldName);\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// Iterating through the data rows\r\n\t\t\t\tthis.assessments[i].AssessmentsDataRows.forEach(dataRow => {\r\n\r\n\t\t\t\t\t// Creating dictionary for each data row\r\n\t\t\t\t\tconst dictionaryData: {[key: string]: string} = {};\r\n\t\t\t\t\tdataRow.AssessmentData.forEach(data => {\r\n\t\t\t\t\t\tdictionaryData[data.strFieldName] = data.strFieldData;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Adding it to our categories if it's not there (preventing duplicates)\r\n\t\t\t\t\tif (!dataCategories[categoryIndex].contains(dictionaryData)) {\r\n\t\t\t\t\t\tdataCategories[categoryIndex].data.push(dictionaryData);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.assessments[i].BESTOF) {\r\n\t\t\t\t\t\tif (!bestOfCategories[bestOfIndex].contains(dictionaryData)) {\r\n\t\t\t\t\t\t\tbestOfCategories[bestOfIndex].data.push(dictionaryData);\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 // Making data arrays MatTableDataSources\r\n\t\tdataArrays.forEach(dataArray => {\r\n\r\n\t\t\t// Sorting them alphabetically initially\r\n\t\t\tdataArray.sort((a, b) => {\r\n\t\t\t\tif (a.fullTitle < b.fullTitle) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else if (b.fullTitle < a.fullTitle) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Sorting each one by date\r\n\t\t\tdataArray.forEach(dataCategory => {\r\n\t\t\t\tdataCategory.sort('Test Date', new Date());\r\n });\r\n\r\n // Constructing the subtable data\r\n dataArray.forEach(data => {\r\n data.createSubTableData();\r\n });\r\n\r\n\t\t\t// Inserting into table data\r\n\t\t\tthis.tableDataV9.push(new TylerMatTableDataSource(dataArray));\r\n\t\t});\r\n\t}\r\n\r\n\tarrangeTabsV10() {\r\n\t\t// PRE: Your user MUST be in V10, or this doesn't make sense\r\n\t\t// POST: finds the tabs and arranges the data for each tab\r\n\t\tthis.tableDataV10 = [];\r\n\t\tthis.dataCategoriesV10 = new Array();\r\n\r\n\t\t// Creating a data category for each tab\r\n\t\tfor (let i = 0; i < this.tabs.length; i++) {\r\n\t\t\tthis.dataCategoriesV10.push(new AssessmentDataCategory());\r\n\t\t\tthis.dataCategoriesV10[this.dataCategoriesV10.length - 1].category = this.tabs[i].DESCRIPTION;\r\n\t\t\tthis.dataCategoriesV10[this.dataCategoriesV10.length - 1].fullTitle = this.tabs[i].FULLTITLE;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.assessments.length; i++) {\r\n\r\n\t\t\t// Determining where to place this\r\n\t\t\tconst categoryIndex = this.tabNames.indexOf(this.assessments[i].DESCRIPTION);\r\n\t\t\tconst dataCategory = this.dataCategoriesV10[categoryIndex];\r\n\r\n\t\t\t// Ensuring the correct field names\r\n\t\t\tthis.assessments[i].AssessmentDataField.forEach(field => {\r\n\t\t\t\tif (!dataCategory.fields.includes(field.strFieldName)) {\r\n\t\t\t\t\tdataCategory.fields.push(field.strFieldName);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Iterating through data rows\r\n\t\t\tthis.assessments[i].AssessmentsDataRows.forEach(dataRow => {\r\n\r\n\t\t\t\t// Creating dictionary for each data row\r\n\t\t\t\tconst dictionaryData: {[key: string]: string} = {};\r\n\t\t\t\tlet nonEmpty = false;\r\n\t\t\t\tdataRow.AssessmentData.forEach(data => {\r\n\t\t\t\t\tif (data.strFieldData != undefined && data.strFieldData != '') {\r\n\t\t\t\t\t\tdictionaryData[data.strFieldName] = data.strFieldData;\r\n\t\t\t\t\t\tnonEmpty = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Adding it to our categories if it's not there (preventing duplicates)\r\n\t\t\t\tif (nonEmpty && !dataCategory.contains(dictionaryData)) {\r\n\t\t\t\t\tdataCategory.data.push(dictionaryData);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Making each dataCategory a MatDataSource\r\n\t\tthis.dataCategoriesV10.forEach(dataCategory => {\r\n\r\n\t\t\t// Sorting them\r\n\t\t\tdataCategory.sort('Test Year', null, 'asc');\r\n\r\n\t\t\t// Passing in the data to the table\r\n\t\t\tthis.tableDataV10.push(new TylerMatTableDataSource(dataCategory.data));\r\n\t\t});\r\n\t}\r\n\r\n\ttabTrackBy(index: number, item: string) {\r\n\t return item + index;\r\n }\r\n\r\n regEnrollMode() {\r\n return this.router.url.toLowerCase().indexOf('registrationenrollment') > -1;\r\n }\r\n}","import { Observable } from 'rxjs';\r\nimport { System } from './../../shared-components/System';\r\nimport {Injectable} from '@angular/core';\r\nimport {StudentService} from '../../shared-components/student/student.service';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport { Assessment, TestMasterLayoutVersion, AssessmentField } from './assessment.model';\r\nimport {UserService} from '../../shared-components/user/user.service';\r\nimport { Router } from '@angular/router';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\n\r\n@Injectable()\r\nexport class AssessmentService {\r\n\r\n\t// Properties\r\n\r\n\t// Class Functions\r\n\tconstructor (\r\n\t\tprivate studentService: StudentService,\r\n\t\tprivate userService: UserService,\r\n private yearService: YearService,\r\n private router: Router,\r\n\t\tprivate http: HttpClient\r\n\t) {}\r\n\r\n\t// Event Functions\r\n\r\n\t// Methods\r\n\tgetStudentAssessmentTabs(yearId: number): Observable {\r\n\t\tconst queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n\t\t\t'&loginId=' + this.userService.currentUser.Id +\r\n\t\t\t'&SiteYearId=' + yearId;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentAssessmentsTab' + queryString);\r\n\t}\r\n\r\n\tgetStudentAssessments(tabs: Assessment[]): Observable {\r\n\t\t// PRE: there is a selected student in the student service,\r\n\t\t// \t\ta siteYearId in the year service,\r\n\t\t// \t\tand a loginId in the login service\r\n\t\t// POST: gets the students assessments for this particular year and login\r\n let siteYearId = this.router.url.indexOf('registrationEnroll') == -1 ? this.studentService.studentEnrollment.SiteYearId : this.yearService.defaultYear.SiteYearId;\r\n\t\tconst queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n\t\t\t'&SiteYearId=' + siteYearId +\r\n\t\t\t'&loginId=' + this.userService.currentUser.Id;\r\n\t\treturn this.http.post(System.apiURL.Student + 'GetStudentAssessments' + queryString, tabs);\r\n\t}\r\n\r\n\tgetTestMasterLayoutVersion(): Observable {\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetTestMasterLayoutVersion');\r\n\t}\r\n\r\n\tgetAssessmentFieldsReadByInstIdOrVersionId(instanceId: number, testMasterVersionId: number): Observable {\r\n\t\tconst queryString = '?instanceId=' + instanceId +\r\n\t\t\t'&testMasterVersionId=' + testMasterVersionId;\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetAssessmentFieldsReadByInstIdOrVersionId' + queryString);\r\n\t}\r\n\r\n\tsaveAssessment(studentId: number, instanceId: number, versionId: number, assessmentDate: string, printOnTranscript: boolean, isImportedData: boolean, assessmentFields: AssessmentField[]): Observable {\r\n\t\tconst queryString = '?studentId=' + studentId +\r\n\t\t\t'&instanceId=' + instanceId +\r\n\t\t\t'&versionId=' + versionId +\r\n\t\t\t'&assessmentDate=' + assessmentDate +\r\n\t\t\t'&printOnTranscript=' + printOnTranscript +\r\n\t\t\t'&isImportedData=' + isImportedData;\r\n\t\treturn this.http.post(System.apiURL.Student + 'SaveAssessment' + queryString, assessmentFields);\r\n\t}\r\n\r\n\tdeleteAssessmentById(instanceId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `DeleteAssessmentById?instanceId=${instanceId}`);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AssignmentsDTO } from './assignment.model';\r\nimport { AssignmentFilterParam } from './assignment-filter-param';\r\n\r\n@Pipe({\r\n name: 'assignmentFilter'\r\n})\r\nexport class AssignmentFilterPipe implements PipeTransform {\r\n\r\n transform(data: AssignmentsDTO[], filter: AssignmentFilterParam, v10: boolean): AssignmentsDTO[] {\r\n return data.filter(\r\n x =>\r\n (!filter.FromDueDate || new Date(x.DueDate) >= filter.FromDueDate)\r\n && (!filter.ToDueDate || new Date(x.DueDate) <= filter.ToDueDate)\r\n && (!filter.FromAssignedDate || new Date(x.AssignedDate) >= filter.FromAssignedDate)\r\n && (!filter.ToAssignedDate || new Date(x.AssignedDate) <= filter.ToAssignedDate)\r\n && (!filter.FromPercentage || (v10 ? x.PercentageValue : x.Percentage) >= filter.FromPercentage)\r\n && (!filter.ToPercentage || (v10 ? x.PercentageValue : x.Percentage) <= filter.ToPercentage)\r\n && (!filter.Category || x.Category.toLowerCase().startsWith(filter.Category.toLowerCase()) || (filter.Category.startsWith('%') && x.Category.toLowerCase().indexOf(filter.Category.toLowerCase().substring(1)) > -1))\r\n && (!filter.Grade || x.Grade.toLowerCase().startsWith(filter.Grade.toLowerCase()) || (filter.Grade.startsWith('%') && x.Grade.toLowerCase().indexOf(filter.Grade.toLowerCase().substring(1)) > -1))\r\n && (!filter.Course || x.Course === filter.Course)\r\n && (!filter.Term || x.Term === filter.Term)\r\n );\r\n }\r\n\r\n}\r\n","import {System} from '../../shared-components/System';\r\n\r\nexport class AssignmentFilterParam {\r\n\r\n\t// Properties\r\n private _FromDueDate?: Date;\r\n private _ToDueDate?: Date;\r\n private _FromAssignedDate?: Date;\r\n private _ToAssignedDate?: Date;\r\n FromPercentage?: number;\r\n ToPercentage?: number;\r\n Course?: string;\r\n Term?: string;\r\n Category?: string;\r\n Grade?: string;\r\n\r\n // Class Functions\r\n constructor() {\r\n }\r\n\r\n isFilterApplied(): boolean {\r\n return (!!this.FromDueDate || !!this.ToDueDate || !!this.FromAssignedDate || !!this.ToAssignedDate || !!this.FromPercentage || !!this.ToPercentage || !!this.Category || !!this.Grade);\r\n }\r\n\r\n get FromDueDate(): Date {\r\n \treturn this._FromDueDate;\r\n\t}\r\n\r\n\tset FromDueDate(value: Date) {\r\n \tSystem.roundDateDown(value);\r\n \tthis._FromDueDate = value;\r\n\t}\r\n\r\n\tget ToDueDate(): Date {\r\n \treturn this._ToDueDate;\r\n\t}\r\n\r\n\tset ToDueDate(value: Date) {\r\n \tSystem.roundDateUp(value);\r\n \tthis._ToDueDate = value;\r\n\t}\r\n\r\n\tget FromAssignedDate(): Date {\r\n \treturn this._FromAssignedDate;\r\n\t}\r\n\r\n\tset FromAssignedDate(value: Date) {\r\n \tSystem.roundDateDown(value);\r\n \tthis._FromAssignedDate = value;\r\n\t}\r\n\r\n\tget ToAssignedDate(): Date {\r\n \treturn this._ToAssignedDate;\r\n\t}\r\n\r\n\tset ToAssignedDate(value: Date) {\r\n \tSystem.roundDateUp(value);\r\n \tthis._ToAssignedDate = value;\r\n\t}\r\n}","
\r\n \r\n Category Weights for [{{course.Course}}]\r\n \r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n {{period.ShortDescription}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Category\r\n \r\n Weight\r\n
\r\n {{category.Description}}\r\n \r\n {{category.Weight}}%\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n","import { Component, AfterViewInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { Category } from '../../../classroom360/gradebook/shared/models/category.model';\r\nimport { AssignmentService } from '../assignment.service';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { GradingPeriod } from '../../../classroom360/gradebook/v10/models/grading-period.model';\r\nimport { CourseTerm } from '../../../shared-components/student/course-term.model';\r\nimport { System } from '../../../shared-components/System';\r\n\r\n@Component({\r\n selector: 'app-category-weights',\r\n templateUrl: './category-weights.component.html'\r\n})\r\nexport class CategoryWeightsComponent implements AfterViewInit {\r\n\r\n course: CourseSchedule;\r\n gradingPeriods: CourseTerm[];\r\n selectedGradingPeriod: GradingPeriod;\r\n allCategories: Category[];\r\n categories: Category[];\r\n\r\n constructor(\r\n private matDialog: MatDialogRef,\r\n private assignmentService: AssignmentService\r\n ) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.gradingPeriods = this.course.CourseTerms;\r\n this.assignmentService.getCategories(false, this.course.Id, '').subscribe((categories) => {\r\n this.allCategories = categories;\r\n this.categories = categories.filter(c => c.TermId == this.selectedGradingPeriod.Id);\r\n });\r\n }\r\n\r\n periodChanged() {\r\n this.categories = this.allCategories.filter(c => c.TermId == this.selectedGradingPeriod.Id);\r\n }\r\n\r\n isEven(index: number) {\r\n return System.isEven(index);\r\n }\r\n\r\n closeClick() {\r\n this.matDialog.close();\r\n }\r\n\r\n}\r\n","
\r\n
Standards
\r\n
{{course.Course}} - {{teacherName}}
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n Assignment Type (A-Z)\r\n Assignment Type (Z-A)\r\n Date (Newest First)\r\n Date (Oldest First)\r\n \r\n \r\n  \r\n \r\n \r\n All\r\n \r\n {{course.LongDescription}}\r\n \r\n \r\n \r\n
\r\n\r\n
0\" style=\"padding-top: 10px; overflow-x: auto; width: 100%;\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Standards\r\n {{SH.Standard}}
\r\n {{SH.StandardDate|date:'MM/dd/yy'}}\r\n
{{GO.Standard}}\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Standards\r\n \r\n {{assignment.AssignmentShortName}}
\r\n \r\n {{assignment.AssignedDate|date:'MM/dd/yy'}}\r\n \r\n
\r\n {{standard.Standard}}\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { GradeBookStandards, AssignmentsDTO, GradeBookObjectives } from '../assignment.model';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { AssignmentService } from '../assignment.service';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-standards-based-scores',\r\n templateUrl: './standards-based-scores.component.html',\r\n styles: []\r\n})\r\nexport class StandardsBasedScoresComponent implements OnInit {\r\n\r\n siteSectionId: number;\r\n course: CourseSchedule;\r\n teacherName: string;\r\n startDate: Date;\r\n endDate: Date;\r\n termId: number;\r\n gradebookStandard: GradeBookStandards[];\r\n standardsBasedHeader: any = {};\r\n studentAssignments: AssignmentsDTO[] = [];\r\n gradebookObjectives: GradeBookObjectives[] = [];\r\n V10Flag = false;\r\n selectedOrderByOption = 3;\r\n assignmentSortBy = '-StandardDate';\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n private assignmentService: AssignmentService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private loginService: LoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.V10Flag = this.loginService.LoginSettings.V10;\r\n this.siteSectionId = this.data.siteSectionId;\r\n this.teacherName = this.data.teacherName;\r\n this.course = this.data.course;\r\n this.termId = this.data.termId;\r\n this.startDate = this.data.startDate;\r\n this.endDate = this.data.endDate;\r\n this.studentAssignments = this.data.studentAssignments;\r\n this.getStandardsBasedHeader();\r\n }\r\n\r\n getStandardsBasedHeader() {\r\n this.assignmentService.getStandardsBasedHeader(this.siteSectionId, this.startDate, this.endDate, this.termId).subscribe(data => {\r\n this.gradebookStandard = data;\r\n this.gradebookStandard.sort();\r\n this.getGradebookObjective(this.studentAssignments);\r\n });\r\n }\r\n\r\n getGradebookObjective(studentAssignments: AssignmentsDTO[]) {\r\n this.gradebookObjectives = [];\r\n if (studentAssignments.length > 0) {\r\n studentAssignments.filter(o => o.ShowStandardBasedScore == true).forEach(obj => {\r\n if (obj.GradeBookObjectives != null) {\r\n const gradebookObj = obj.GradeBookObjectives;\r\n gradebookObj.forEach(grd => {\r\n if (this.gradebookObjectives.length == 0) {\r\n this.gradebookObjectives.push(grd);\r\n }\r\n else if (this.gradebookObjectives.filter(o => o.Id == grd.Id).length == 0) {\r\n this.gradebookObjectives.push(grd);\r\n }\r\n if (this.gradebookStandard.filter(o => o.GradeBookAssignmentId == grd.AssignmentId).length == 0) {\r\n this.gradebookStandard = [];\r\n this.standardsBasedHeader = {};\r\n this.standardsBasedHeader.CurriculumCourseObjectiveId = grd.Id;\r\n this.standardsBasedHeader.GradeBookAssignmentId = obj.AssignmentId;\r\n this.standardsBasedHeader.Id = obj.Assignment;\r\n this.standardsBasedHeader.ParentId = -1;\r\n this.standardsBasedHeader.Score = 0;\r\n this.standardsBasedHeader.Standard = obj.AssignmentShortName;\r\n this.standardsBasedHeader.StandardDate = obj.DueDate;\r\n this.gradebookStandard.push(this.standardsBasedHeader);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n this.dialogBox.close();\r\n }\r\n\r\n getCellValues(gradebookObj: GradeBookObjectives, standard: GradeBookStandards) {\r\n let scores = '';\r\n if (this.studentAssignments.filter(o => o.AssignmentId == standard.GradeBookAssignmentId).length > 0) {\r\n const gradebookObjectiveRow = this.studentAssignments.filter(o => o.AssignmentId == standard.GradeBookAssignmentId)[0].GradeBookObjectives;\r\n if (gradebookObjectiveRow != null && gradebookObjectiveRow.filter(x => x.Id == gradebookObj.Id).length > 0) {\r\n const standardsBasedScore = gradebookObjectiveRow.filter(x => x.Id == gradebookObj.Id)[0].StandardsBasedScores;\r\n if (this.V10Flag) {\r\n if (standardsBasedScore != null && standardsBasedScore.filter(a => a.CurriculumCourseObjectiveId == gradebookObj.Id && a.GradeBookAssignmentId == standard.GradeBookAssignmentId).length > 0) {\r\n scores = standardsBasedScore.filter(a => a.CurriculumCourseObjectiveId == gradebookObj.Id && a.GradeBookAssignmentId == standard.GradeBookAssignmentId)[0].V10Score;\r\n }\r\n }\r\n else {\r\n if (standardsBasedScore != null && standardsBasedScore.filter(a => a.CurriculumCourseObjectiveId == gradebookObj.Id && a.Id == standard.Id).length > 0) {\r\n if (standardsBasedScore.filter(a => a.CurriculumCourseObjectiveId == gradebookObj.Id && a.Id == standard.Id)[0].Score != '-1') {\r\n scores = standardsBasedScore.filter(a => a.CurriculumCourseObjectiveId == gradebookObj.Id && a.Id == standard.Id)[0].Score.toString();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return scores;\r\n }\r\n\r\n getV10Score(standard, assignment) {\r\n let assignmentStandard = assignment.GradeBookObjectives.filter(s => s.Id == standard.Id)[0];\r\n if (assignmentStandard) {\r\n let score = assignmentStandard.StandardsBasedScores[0];\r\n return (score) ? score.V10Score : '';\r\n }\r\n }\r\n\r\n selectedTermChange() {\r\n this.studentAssignments = [];\r\n this.gradebookObjectives = [];\r\n if (this.termId == 0) {\r\n this.startDate = this.course.CourseTerms[0].StartDate;\r\n this.endDate = this.course.CourseTerms[this.course.CourseTerms.length - 1].EndDate;\r\n }\r\n else {\r\n this.startDate = this.course.CourseTerms.filter(o => o.Id == this.termId)[0].StartDate;\r\n this.endDate = this.course.CourseTerms.filter(o => o.Id == this.termId)[0].EndDate;\r\n }\r\n this.assignmentService.getStudentAssignments(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id, this.siteSectionId, this.startDate, this.endDate, this.termId, this.studentService.studentEnrollment.SiteYearId).subscribe(data => {\r\n this.studentAssignments = data;\r\n data.forEach(obj => {\r\n this.studentAssignments.push(obj);\r\n });\r\n this.getStandardsBasedHeader();\r\n this.getGradebookObjective(this.studentAssignments);\r\n });\r\n }\r\n\r\n selectedOrderByOptionChanged() {\r\n switch (this.selectedOrderByOption) {\r\n case 1:\r\n this.assignmentSortBy = 'Standard';\r\n break;\r\n case 2:\r\n this.assignmentSortBy = '-Standard';\r\n break;\r\n case 3:\r\n this.assignmentSortBy = '-StandardDate';\r\n break;\r\n case 4:\r\n this.assignmentSortBy = 'StandardDate';\r\n break;\r\n default:\r\n this.assignmentSortBy = 'StandardDate';\r\n break;\r\n }\r\n }\r\n}\r\n","import * as moment from 'moment';\r\nimport { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { System } from '../../shared-components/System';\r\nimport { StudentAttachment } from '../../shared-modules/student-attachment/student-attachment.model';\r\nexport class Utility {\r\n\r\n static IsValid(text: any): boolean {\r\n if (text != null) {\r\n if (text.length != null) {\r\n if (text.length > 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static addDays(daysToAdd: number): Date {\r\n const today = new Date();\r\n today.setDate(today.getDate() + daysToAdd);\r\n return today;\r\n }\r\n\r\n static getAssignmentStatusClass(assignmentStatus: number) {\r\n switch (assignmentStatus) {\r\n case 1: {\r\n return 'assignmentStatusDue';\r\n }\r\n case 3: {\r\n return 'assignmentStatusMissing';\r\n }\r\n default: {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n static objectiveLevelClass = function (BytLevel) {\r\n switch (BytLevel) {\r\n case 2:\r\n return ('objPaddingLevel2');\r\n case 3:\r\n return ('objPaddingLevel3');\r\n case 4:\r\n return ('objPaddingLevel4');\r\n case 5:\r\n return ('objPaddingLevel5');\r\n case 6:\r\n return ('objPaddingLevel6');\r\n case 7:\r\n return ('objPaddingLevel7');\r\n case 8:\r\n return ('objPaddingLevel8');\r\n case 9:\r\n return ('objPaddingLevel9');\r\n case 10:\r\n return ('objPaddingLevel10');\r\n default:\r\n break;\r\n }\r\n };\r\n static getDateString(value: Date): any {\r\n return moment(value).format('L');\r\n }\r\n\r\n static saveFile(attachment:Attachment) {\r\n if (attachment.DocumentBase64 != null && attachment.DocumentBase64.length > 0) {\r\n System.saveFile(attachment.DocumentBase64, attachment.DocumentMimeType, attachment.DocumentName);\r\n }\r\n else if ((attachment.Id != null && attachment.Id > 0) || (attachment.AttachmentId != null && attachment.AttachmentId > 0)) {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: (attachment.Id != null && attachment.Id > 0) ? attachment.Id : attachment.AttachmentId,\r\n DocumentName: attachment.FileName,\r\n DocumentBase64: attachment.DocumentBase64,\r\n DocumentMimeType: attachment.DocumentMimeType,\r\n DocumentModuleName: 'Assignment',\r\n ReportParameters: [],\r\n ReportType: 0\r\n };\r\n \r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n const win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n win.focus();\r\n }\r\n }\r\n}","
\r\n No assignments exist for this student\r\n
\r\n
0\"\r\n style=\"margin-top:15px;min-width: 1375px;\">\r\n
\r\n \r\n \r\n \r\n {{ course.Course }} : {{course.Term}}\r\n {{ course.Course }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{gp.LongDescription}}\r\n {{ (gp.OverrideGradingTerm != null && gp.OverrideGradingTerm != '') ? gp.OverrideGradingTerm : gp.LongDescription }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IDTeacherGradeSchoolCourse-Section     
{{courseInfo?.AssignmentId}}{{courseInfo?.TeacherName}}\r\n {{courseInfo?.GradeParentGrid}}\r\n {{courseInfo?.SiteName}}{{courseInfo?.Course}}\r\n Email Teacher\r\n \r\n Standards\r\n Based Scores\r\n Class Information\r\n Teacher Profile\r\n Course Description
\r\n
\r\n
\r\n No assignments exist for the selected class and grading period.\r\n No assignments exist for the selected class and term.\r\n
\r\n
\r\n 0\" [dataSource]=\"angularMatData\" multiTemplateDataRows\r\n matSortDisableClear #sort=\"matSort\" matSort id=\"StudentAssignmentDataTable\" matSortActive=\"DueDate\"\r\n matSortDirection=\"desc\" aria-label=\"Student Assignment Table\" tabindex=\"0\">\r\n\r\n ]\r\n \r\n More\r\n \r\n \r\n \r\n \r\n ]\r\n \r\n \r\n
\r\n {{getAssignmentStatus(SA.AssignmentStatus, SA.DueDate)}}\r\n
\r\n
\r\n
\r\n ]\r\n \r\n Due\r\n \r\n \r\n \r\n {{SA.DueDate | date:'MM/dd/yy'}}\r\n \r\n \r\n ]\r\n \r\n \r\n {{SA.AssignedDate | date:'E'}}\r\n \r\n \r\n ]\r\n \r\n Assigned\r\n \r\n \r\n \r\n \r\n {{SA.AssignedDate | date:'MM/dd/yy'}}\r\n \r\n \r\n ]\r\n Assignment\r\n \r\n \r\n \r\n \r\n
{{SA.Assignment}}\r\n
\r\n
\r\n
\r\n ]\r\n \r\n \r\n Category-ID\r\n \r\n \r\n Category\r\n \r\n \r\n \r\n \r\n {{SA.Category}}\r\n \r\n \r\n ]\r\n \r\n Points
Possible
\r\n \r\n \r\n
\r\n \r\n \r\n {{SA.Possible}}\r\n \r\n \r\n
\r\n ]\r\n \r\n Points
Earned
\r\n \r\n \r\n
\r\n \r\n \r\n {{SA.Earned}}\r\n \r\n \r\n {{SA.EarnedValue}}\r\n \r\n \r\n
\r\n ]\r\n \r\n Percentage\r\n \r\n \r\n \r\n \r\n \r\n {{SA.Percentage}}\r\n \r\n \r\n {{SA.PercentageValue}}\r\n \r\n \r\n \r\n ]\r\n \r\n Special Mark\r\n \r\n \r\n \r\n \r\n {{SA.SpecialMark}}\r\n \r\n \r\n ]\r\n \r\n Effective
Score
\r\n \r\n \r\n
\r\n \r\n {{SA.Effective}}\r\n \r\n
\r\n ]\r\n \r\n Grade\r\n \r\n \r\n {{SA.Grade}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n 0\">\r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Average Score{{SA.AverageScore}}\r\n Highest Score{{SA.HighestScore}}\r\n
Comments
\r\n \r\n
Summary
{{SA.Summary}}
Details
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IDStandardsScore
{{GO.Standard}}\r\n
\r\n {{ getSBSScore(SBS)}}\r\n
\r\n
\r\n
\r\n
Attachments
\r\n {{attachment.DocumentName}}\r\n {{attachment.DocumentType}}
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { formatDate } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { CourseDescriptionDialogComponent } from '../../../shared-components/course-description-dialog/course-description-dialog.component';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { ProfileViewerDialogComponent } from '../../../shared-components/profile-viewer-dialog/profile-viewer-dialog.component';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { SchoolYearSettings } from '../../../shared-components/year/school-year-settings.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/loginSetting.model';\r\nimport { SendEmailService } from '../../../shared-modules/send-email/send-email.service';\r\nimport { AssignmentFilterParam } from '../assignment-filter-param';\r\nimport { AssignmentFilterPipe } from '../assignment-filter.pipe';\r\nimport { AssignmentsDTO } from '../assignment.model';\r\nimport { AssignmentService } from '../assignment.service';\r\nimport { StandardsBasedScoresComponent } from '../standards-based-scores/standards-based-scores.component';\r\nimport { Utility } from '../Utility';\r\n\r\n@Component({\r\n selector: 'by-course',\r\n templateUrl: './by-course.component.html',\r\n styleUrls: ['./by-course.component.css'],\r\n animations: [detailExpand],\r\n})\r\nexport class ByCourseComponent implements OnInit, OnDestroy {\r\n\r\n student360YearSubscription: Subscription;\r\n selectedStudentSubscription: Subscription;\r\n studentSchedules: CourseSchedule[];\r\n studentAssignments: AssignmentsDTO[] = [];\r\n studentAttachments: Attachment[] = [];\r\n courseInfo: AssignmentsDTO;\r\n subscriptions: Subscription[] = [];\r\n loginSettings: LoginSettings;\r\n selectedViewOption = 3; // This Term\r\n selectedCourse: CourseSchedule;\r\n selectedGP: any = { Id: -1 };\r\n showStandardBasedScore = false;\r\n schoolYearSettings: SchoolYearSettings;\r\n local_filterParam = new AssignmentFilterParam();\r\n gradeDisplayType = '';\r\n constructing = true;\r\n canSendEmail: boolean;\r\n showCategoryWeights: boolean;\r\n\r\n public utilityClass = Utility;\r\n\r\n @Input() shown: boolean;\r\n @Output() schoolYearSettingsChange = new EventEmitter();\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n columnsToDisplay: string[] = [];\r\n v9Columns: string[] = [];\r\n @Input() clearFilterEvent: EventEmitter;\r\n\r\n // ------------Element references--------------------------------\r\n @ViewChild('divControls') divControls: ElementRef;\r\n @ViewChild('divCourseInfo') divCourseInfo: ElementRef;\r\n\r\n V10: boolean;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private assignmentService: AssignmentService,\r\n private userService: UserService,\r\n private dialog: MatDialog,\r\n private assignmentFilterPipe: AssignmentFilterPipe,\r\n private router: Router,\r\n private sendEmailService: SendEmailService\r\n\r\n ) {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n if (this.V10) {\r\n this.columnsToDisplay = ['More', 'DueDateDay', 'DueDate', 'AssignedDateDay', 'AssignedDate', 'Assignment', 'Category', 'Possible', 'EarnedPoints', 'Percentage', 'Grade'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['More', 'DueDateDay', 'DueDate', 'AssignedDateDay', 'AssignedDate', 'Assignment', 'Category', 'Possible', 'EarnedPoints', 'Percentage', 'SpecialMark', 'Effective', 'Grade'];\r\n }\r\n\r\n this.canSendEmail = (this.userService.userType == 2 || this.userService.userType === 3) ? this.loginSettings.AllowParentStudentEmail : true;\r\n\r\n this.subscriptions.push(studentService.selectedStudentStream$.subscribe(studentId => {\r\n this.init();\r\n }));\r\n\r\n this.subscriptions.push(yearService.observableStudent360YearStream$.subscribe(student360Year => {\r\n this.init();\r\n }));\r\n\r\n this.subscriptions.push(this.assignmentService.filterChange.subscribe(() => {\r\n if (this.assignmentService.ShowByClass) {\r\n this.applyFilter();\r\n }\r\n }));\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.assignmentService.studentAssignmentsUPMG = [];\r\n this.getSchoolYearSettings(false);\r\n if (this.clearFilterEvent) {\r\n this.subscriptions.push(\r\n this.clearFilterEvent.subscribe(() => {\r\n if (this.shown) {\r\n this.angularMatData.removeAllFilters();\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n\r\n this.assignmentService.filterbyCard = false;\r\n }\r\n\r\n loadFilterParam() {\r\n this.assignmentService.filterParam = this.local_filterParam;\r\n }\r\n\r\n course_change() {\r\n // if (this.assignmentService.selectedGP == null) {\r\n // this.assignmentService.selectedCourse = this.selectedCourse;\r\n // }\r\n // this.assignmentService.selectedSectionId = this.selectedCourse.SiteSectionId;\r\n // this.assignmentService.studentAssignmentsUPMG = [];\r\n if (!this.loginSettings.V10 && this.selectedCourse.CourseTerms.length > 0) {\r\n const schoolYearSettings: SchoolYearSettings = this.schoolYearSettings;\r\n const term = this.selectedCourse;\r\n let CourseTerms = [];\r\n CourseTerms = term.CourseTerms.filter(function (element) {\r\n return ((schoolYearSettings.UsingFinalGrade && element.ShortDescription.indexOf('Y') > -1)\r\n || (schoolYearSettings.UsingSemesterGrades && element.ShortDescription.indexOf('S') > -1)\r\n || (schoolYearSettings.UsingTermGrades && element.ShortDescription.indexOf('T') > -1)\r\n || (schoolYearSettings.UsingProgressGrades && element.ShortDescription.indexOf('P') > -1));\r\n });\r\n this.selectedCourse.CourseTerms = Object.assign(CourseTerms);\r\n }\r\n this.selectTermByDates();\r\n this.gradingPeriod_Change();\r\n }\r\n\r\n gradingPeriod_Change() {\r\n // console.log(JSON.stringify(this.selectedGP_ID));\r\n if (this.selectedGP == -1) {\r\n this.courseInfo = null;\r\n this.angularMatData.data = [];\r\n this.studentAssignments = [];\r\n this.studentAttachments = [];\r\n }\r\n else if (this.selectedCourse != null) {\r\n this.angularMatData.data = [];\r\n setTimeout(() => {\r\n return forkJoin([this.assignmentService.getStudentAssignments(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.student360Year.Id,\r\n this.selectedCourse.SiteSectionId,\r\n this.selectedGP.StartDate,\r\n this.selectedGP.EndDate,\r\n this.selectedGP.Id,\r\n this.studentService.studentEnrollment.SiteYearId\r\n ),\r\n this.assignmentService.getStudentAttachment(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.student360Year.Id,\r\n this.selectedCourse.SiteSectionId,\r\n this.selectedGP.StartDate,\r\n this.selectedGP.EndDate,\r\n this.selectedGP.Id,\r\n this.studentService.studentEnrollment.SiteYearId\r\n )]).subscribe(results => {\r\n if (results[0].length > 0) {\r\n this.showStandardBasedScore = results[0].findIndex(x => x.ShowStandardBasedScore === true) >= 0;\r\n if (this.V10) {\r\n this.courseInfo = results[0].filter(x => x.Assignment == null)[0];\r\n }\r\n else {\r\n this.courseInfo = results[0].filter(x => x.SystemGrade == true)[0];\r\n }\r\n this.showCategoryWeights = this.courseInfo.ShowCategoryWeights;\r\n this.studentAssignments = results[0].filter(x => x.ShowOnPortal === true && x.SystemGrade === false);\r\n if (!this.loginSettings.V10) {\r\n this.studentAssignments.forEach(obj => {\r\n obj.EarnedV9 = obj.Earned;\r\n obj.EffectiveScoreV9 = obj.Effective;\r\n obj.PercentageV9 = obj.Percentage;\r\n if (this.utilityClass.IsValid(obj.Grade)) {\r\n if (obj.Earned == 0) {\r\n obj.EarnedV9 = -1;\r\n }\r\n if (obj.Percentage == 0) {\r\n obj.PercentageV9 = -1;\r\n }\r\n if (obj.Effective == 0) {\r\n obj.EffectiveScoreV9 = -1;\r\n }\r\n } else {\r\n if (obj.Earned == 0 && !this.utilityClass.IsValid(obj.Grade)) {\r\n obj.EarnedV9 = -2;\r\n }\r\n if (obj.Effective == 0 && !this.utilityClass.IsValid(obj.Grade)) {\r\n obj.EffectiveScoreV9 = -2;\r\n }\r\n if (obj.Percentage == 0 && !this.utilityClass.IsValid(obj.Grade)) {\r\n obj.PercentageV9 = -2;\r\n }\r\n }\r\n });\r\n }\r\n this.applyFilter();\r\n this.angularMatData.sortingDataAccessor = (item: AssignmentsDTO, property: string) => {\r\n if (property == 'Assignment') {\r\n return item.Assignment ? item.Assignment.toLowerCase() : '';\r\n }\r\n if (property == 'EarnedPoints') {\r\n if (this.V10) {\r\n return +item.EarnedValue;\r\n } else {\r\n return item.EarnedV9;\r\n }\r\n } else if (property == 'Percentage') {\r\n if (this.V10) {\r\n return +item.PercentageValue;\r\n } else {\r\n return item.PercentageV9;\r\n }\r\n } else if (property == 'Effective') {\r\n if (this.V10) {\r\n return +item.Effective;\r\n } else {\r\n return item.EffectiveScoreV9;\r\n }\r\n }\r\n else {\r\n return this.angularMatData.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n setTimeout(() => this.angularMatData.sort = this.sort, 0);\r\n }\r\n this.studentAttachments = results[1];\r\n });\r\n }, 700);\r\n }\r\n }\r\n\r\n init() {\r\n this.angularMatData.data = [];\r\n this.courseInfo = null;\r\n this.studentAssignments = [];\r\n this.studentAttachments = [];\r\n if (!this.constructing) {\t\t// We only need to reset the variables after initial construction\r\n this.selectedCourse = null;\r\n this.selectedGP = { Id: -1 };\r\n this.assignmentService.selectedCourse = null;\r\n this.local_filterParam = new AssignmentFilterParam();\r\n } else {\r\n this.constructing = false;\r\n }\r\n if (!this.V10 && this.assignmentService.selectedView != undefined) {\r\n this.selectedViewOption = this.assignmentService.selectedView;\r\n }\r\n\r\n this.loadStudentSchedules();\r\n this.getSchoolPolicies();\r\n this.getSchoolYearSettings(true);\r\n }\r\n\r\n loadStudentSchedules() {\r\n this.studentService.getStudentSchedule(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.student360Year.Id,\r\n this.selectedViewOption, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined\r\n ).subscribe(data => {\r\n this.studentSchedules = data.filter(x => x.UsedForGrading === true);\r\n this.selectedCourse = this.studentSchedules.find(studentSchedule => (studentSchedule.SubjectCode + '-' + studentSchedule.Section) == this.assignmentService.selectedCourseSection);\r\n\r\n // **************** ONE-12288 *******************\r\n if (this.assignmentService.selectedGP != null) {\r\n if (this.assignmentService.filterbyCard == true && !this.V10 && this.selectedCourse.CourseTerms != null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms.filter(o => o.LongDescription == this.assignmentService.selectedGP)[0];\r\n }\r\n else {\r\n if (this.selectedCourse.CourseTerms != null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms.filter(o => o.ShortDescription == this.assignmentService.selectedGP)[0];\r\n }\r\n }\r\n if (this.selectedGP == null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[0];\r\n }\r\n }\r\n else if (this.assignmentService.selectedGP == undefined && this.assignmentService.selectedSectionId != undefined && this.assignmentService.filterbyCard == false) {\r\n this.selectTermByDates();\r\n }\r\n setTimeout(() => {\r\n this.gradingPeriod_Change();\r\n }, 500);\r\n\r\n // **************** ONE-12288 ************************\r\n\r\n if (this.selectedCourse) {\t// We do this to ensure the references for the HTML selector are the sames\r\n\r\n if (this.assignmentService.filterbyCard == true) {\r\n if (this.V10) {\r\n this.selectedCourse = this.studentSchedules.find(studentSchedule => studentSchedule.Course == this.assignmentService.selectedCoursebyCard);\r\n } else {\r\n this.selectedCourse = this.studentSchedules.find(studentSchedule => (studentSchedule.SubjectCode + '-' + studentSchedule.Section) == this.assignmentService.selectedCourseSection);\r\n }\r\n }\r\n else {\r\n if (this.V10) {\r\n this.selectedCourse = this.studentSchedules.find(studentSchedule => studentSchedule.Id == this.selectedCourse.Id);\r\n } else {\r\n if (this.selectedCourse.SiteSectionId > 0) {\r\n this.selectedCourse = this.studentSchedules.find(studentSchedule => studentSchedule.SiteSectionId == this.selectedCourse.SiteSectionId);\r\n if (this.selectedCourse != null) {\r\n if (this.selectedCourse.CourseTerms.length > 0) {\r\n const schoolYearSettings: SchoolYearSettings = this.schoolYearSettings;\r\n const term = this.selectedCourse;\r\n let CourseTerms = [];\r\n CourseTerms = term.CourseTerms.filter(function (element) {\r\n return ((schoolYearSettings.UsingFinalGrade && element.ShortDescription.indexOf('Y') > -1)\r\n || (schoolYearSettings.UsingSemesterGrades && element.ShortDescription.indexOf('S') > -1)\r\n || (schoolYearSettings.UsingTermGrades && element.ShortDescription.indexOf('T') > -1)\r\n || (schoolYearSettings.UsingProgressGrades && element.ShortDescription.indexOf('P') > -1));\r\n });\r\n this.selectedCourse.CourseTerms = Object.assign(CourseTerms);\r\n }\r\n }\r\n }\r\n else {\r\n this.selectedCourse = this.studentSchedules.find(studentSchedule => studentSchedule.Course == this.selectedCourse.Course);\r\n }\r\n }\r\n }\r\n\r\n if (this.assignmentService.selectedGP != null) {\r\n if (this.assignmentService.filterbyCard == true && !this.V10 && this.selectedCourse.CourseTerms != null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms.filter(o => o.LongDescription == this.assignmentService.selectedGP)[0];\r\n }\r\n else {\r\n if (this.selectedCourse.CourseTerms != null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms.filter(o => o.ShortDescription == this.assignmentService.selectedGP)[0];\r\n }\r\n }\r\n if (this.selectedGP == null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[0];\r\n }\r\n }\r\n else if (this.assignmentService.selectedGP == undefined && this.assignmentService.selectedSectionId != undefined && this.assignmentService.filterbyCard == false) {\r\n this.selectTermByDates();\r\n }\r\n this.assignmentService.selectedGP = null;\r\n if (this.assignmentService.filterbyCard == true) { this.course_change(); }\r\n }\r\n if (this.loginSettings.ParentPortalAssignmentsDisplayProfiles) {\r\n this.studentSchedules.forEach(s => s.Course = s.Course + '-' + s.Section);\r\n }\r\n else {\r\n this.studentSchedules.forEach(s => s.Course = s.Course + ' - ' + (s.Term === 'Year' ? 'Yr' : s.Term));\r\n }\r\n });\r\n this.assignmentService.selectedView = undefined;\r\n }\r\n\r\n getStudentAssignments(): void {\r\n this.angularMatData.data = [];\r\n\r\n setTimeout(() => {\r\n this.assignmentService.getStudentAssignments(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.student360Year.Id,\r\n this.selectedCourse.SiteSectionId,\r\n this.selectedGP.StartDate,\r\n this.selectedGP.EndDate,\r\n this.selectedGP.Id,\r\n this.studentService.studentEnrollment.SiteYearId\r\n ).subscribe(data => {\r\n if (data.length > 0) {\r\n this.showStandardBasedScore = data.findIndex(x => x.ShowStandardBasedScore === true) >= 0;\r\n if (this.V10) {\r\n this.courseInfo = data.filter(x => x.Assignment == null)[0];\r\n }\r\n else {\r\n this.courseInfo = data.filter(x => x.SystemGrade == true)[0];\r\n }\r\n this.studentAssignments = data.filter(x => x.ShowOnPortal === true && x.SystemGrade === false);\r\n this.studentAssignments.forEach(x => {\r\n if (this.utilityClass.IsValid(x.Comment)) {\r\n x.Comment = x.Comment.replace('\\n', '
');\r\n }\r\n });\r\n this.applyFilter();\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n }\r\n });\r\n }, 0);\r\n }\r\n\r\n getStudentAttachments(): void {\r\n setTimeout(() => {\r\n this.assignmentService.getStudentAttachment(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.student360Year.Id,\r\n this.selectedCourse.SiteSectionId,\r\n this.selectedGP.StartDate,\r\n this.selectedGP.EndDate,\r\n this.selectedGP.Id,\r\n this.studentService.studentEnrollment.SiteYearId\r\n ).subscribe(data => this.studentAttachments = data);\r\n }, 0);\r\n }\r\n\r\n applyFilter() {\r\n if (this.assignmentService.filterParam) {\r\n this.local_filterParam = Object.assign(new AssignmentFilterParam(), this.assignmentService.filterParam);\r\n this.angularMatData.data = this.assignmentFilterPipe.transform(this.studentAssignments, this.assignmentService.filterParam, this.V10);\r\n }\r\n else {\r\n this.angularMatData.data = this.studentAssignments;\r\n }\r\n\r\n setTimeout(() => this.angularMatData.sort = this.sort, 100);\r\n }\r\n\r\n // ------------Assignment Grid Methods ---------------------------\r\n selectTermByDates() {\r\n const currDate = new Date();\r\n if (this.selectedCourse != null && (!this.selectedGP || this.selectedGP.Id == -1)) {\r\n const filteredTerms = this.selectedCourse.CourseTerms.filter(x => currDate <= new Date(x.EndDate) && currDate >= new Date(x.StartDate));\r\n if (filteredTerms.length > 0) {\r\n if (this.loginSettings.V10 == false) {\r\n const sortedTerms = _.orderBy(filteredTerms, ['EndDate', 'TermTypeId'], ['asc', 'desc']);\r\n this.selectedGP = sortedTerms[0];\r\n }\r\n else {\r\n this.selectedGP = filteredTerms[0];\r\n }\r\n\r\n if (!this.selectedGP && this.selectedCourse.CourseTerms.length > 0) {\r\n const lastIndex = this.selectedCourse.CourseTerms.length - 1;\r\n\r\n if (currDate > new Date(this.selectedCourse.CourseTerms[lastIndex].EndDate)) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[lastIndex];\r\n }\r\n else {\r\n this.selectedGP = this.selectedCourse.CourseTerms[0];\r\n }\r\n }\r\n }\r\n else { // term is preselected\r\n if (this.selectedCourse.CourseTerms) {\r\n let index = this.selectedCourse.CourseTerms.findIndex(x => x.MediumDescription === this.selectedGP.MediumDescription);\r\n if (index >= 0) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[index];\r\n }\r\n else {\r\n index = this.selectedCourse.CourseTerms.length - 1;\r\n if (currDate > new Date(this.selectedCourse.CourseTerms[index].EndDate)) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[index];\r\n }\r\n else {\r\n this.selectedGP = this.selectedCourse.CourseTerms[0];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (this.selectedCourse != null) { // term is preselected\r\n if (this.selectedCourse.CourseTerms) {\r\n let index = this.selectedCourse.CourseTerms.findIndex(x => x.MediumDescription === this.selectedGP.MediumDescription);\r\n if (index >= 0) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[index];\r\n }\r\n else {\r\n index = this.selectedCourse.CourseTerms.length - 1;\r\n if (currDate > new Date(this.selectedCourse.CourseTerms[index].EndDate)) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[index];\r\n }\r\n else {\r\n this.selectedGP = this.selectedCourse.CourseTerms[0];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n showToggleIcon(row: AssignmentsDTO): boolean {\r\n let toggle = true;\r\n\r\n if (this.loginSettings.V10) {\r\n toggle = (!!row.Comment) || (!!row.AttachmentDetail) || this.isAttachmentExists(row.AssignmentId) || (row.GradeBookObjectives ? row.GradeBookObjectives.length : 0) > 0;\r\n }\r\n else { // v9\r\n toggle = this.canSendEmail || (!!row.Comment) || (!!row.Summary) || (!!row.AttachmentDetail) || this.isAttachmentExists(row.AssignmentId) || (row.GradeBookObjectives ? row.GradeBookObjectives.length : 0) > 0;\r\n }\r\n\r\n return toggle;\r\n }\r\n\r\n isAttachmentExists(assignmentId: number): boolean {\r\n return this.studentAttachments.findIndex(x => x.AssignmentId === assignmentId) >= 0;\r\n }\r\n\r\n getStudentAttachmentByAssignmentId(assignmentId: number): Attachment[] {\r\n return this.studentAttachments.filter(x => x.AssignmentId === assignmentId);\r\n }\r\n\r\n getSBSScore(sbs: any) {\r\n return this.loginSettings.V10 ? sbs.V10Score : (sbs.Score == -1 ? '' : sbs.Score);\r\n }\r\n\r\n getAssignmentStatus(status: number, dueDate: Date) {\r\n switch (status) {\r\n case 1:\r\n return 'Today ';\r\n case 3:\r\n return 'Missing ';\r\n case 5:\r\n return 'Tomorrow ';\r\n default:\r\n return formatDate(dueDate, 'E', 'en-us');\r\n }\r\n }\r\n\r\n // --------- Toggle Row ----------------------------\r\n\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n // ------------ Popups --------------------------------\r\n\r\n courseDescription_click() {\r\n // PRE: the user clicks on a course description link under a course\r\n // POST: shows a modal for the course's description\r\n this.dialog.open(CourseDescriptionDialogComponent, {\r\n data: {\r\n course: this.selectedCourse.Course,\r\n courseSection: this.selectedCourse.SubjectCode + '-' + this.selectedCourse.Section,\r\n teacherName: this.selectedCourse.TeacherName,\r\n schoolName: this.selectedCourse.SchoolName,\r\n curriculum: this.selectedCourse.Curriculum,\r\n dDescription: this.selectedCourse.Description\r\n }\r\n });\r\n }\r\n\r\n classInformation_click() {\r\n // PRE: the user clicks on a class information link under a course\r\n // POST: shows a modal for that class' profile\r\n const dialogBox = this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n courseSSEC_ID: this.selectedCourse.SiteSectionId,\r\n courseName: this.selectedCourse.Course,\r\n courseSection: this.selectedCourse.SubjectCode + '-' + this.selectedCourse.Section,\r\n teacherName: this.selectedCourse.TeacherName,\r\n school: this.selectedCourse.SchoolName,\r\n profiles: this.selectedCourse.CourseProfile,\r\n showTeacherProfileLink: this.selectedCourse.TeacherProfile && this.selectedCourse.TeacherProfile.length > 0\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.componentInstance.teacherProfileClick.subscribe(() => {\r\n this.teacherProfile_click();\r\n })\r\n );\r\n }\r\n\r\n teacherProfile_click() {\r\n // PRE: the user clicks on a teacher profile link under a couse\r\n // POST: shows a modal for that teacher's profile\r\n this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n teacherId: this.selectedCourse.TeacherId,\r\n profiles: this.selectedCourse.TeacherProfile,\r\n teacherName: this.selectedCourse.TeacherName,\r\n school: this.selectedCourse.SchoolName\r\n }\r\n });\r\n }\r\n\r\n ShowStandardBasedScore(teacherName) {\r\n const dialogBox = this.dialog.open(StandardsBasedScoresComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '80vw',\r\n height: '85vh',\r\n disableClose: true,\r\n data: {\r\n teacherName: teacherName,\r\n course: this.selectedCourse,\r\n siteSectionId: this.selectedCourse.SiteSectionId,\r\n startDate: this.selectedGP.StartDate,\r\n endDate: this.selectedGP.EndDate,\r\n termId: this.selectedGP.Id,\r\n studentAssignments: this.studentAssignments\r\n },\r\n });\r\n }\r\n\r\n sendEmail() {\r\n this.sendEmailService.teacherName = this.courseInfo.TeacherName;\r\n this.sendEmailService.teacherEmailAddress = this.courseInfo.TeacherEmail;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/sendEmail');\r\n }\r\n }\r\n\r\n getSchoolPolicies() {\r\n if (this.loginSettings.V10) {\r\n this.userService.getUserSchoolYearPolicies(this.studentService.studentEnrollment.SiteYearId, this.studentService.studentEnrollment.SchoolId).subscribe(data => {\r\n this.gradeDisplayType = data.DisplayReportCardGrades;\r\n if (this.gradeDisplayType == 'Both') {\r\n this.columnsToDisplay = ['More', 'DueDateDay', 'DueDate', 'AssignedDateDay', 'AssignedDate', 'Assignment', 'Category', 'Possible', 'EarnedPoints', 'Percentage', 'Grade'];\r\n }\r\n else if (this.gradeDisplayType == 'Numeric') {\r\n this.columnsToDisplay = ['More', 'DueDateDay', 'DueDate', 'AssignedDateDay', 'AssignedDate', 'Assignment', 'Category', 'Possible', 'EarnedPoints', 'Percentage'];\r\n }\r\n else if (this.gradeDisplayType == 'Letter') {\r\n this.columnsToDisplay = ['More', 'DueDateDay', 'DueDate', 'AssignedDateDay', 'AssignedDate', 'Assignment', 'Category', 'Possible', 'EarnedPoints', 'Grade'];\r\n }\r\n });\r\n }\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getAriaRow(row: AssignmentsDTO): string {\r\n const colList: string[] = ['Due Date', 'Assigned Date', 'Assignment', 'Category', 'Possible Points', 'Earned Points', 'Percentage', 'Grade'];\r\n\r\n const dataList: string[] = [\r\n moment(row.DueDate).format('MM/dd/yy'),\r\n moment(row.AssignedDate).format('MM/dd/yy'),\r\n row.AssignmentShortName,\r\n row.Category,\r\n row.Possible.toString(),\r\n row.EarnedValue != null ? row.EarnedValue : '',\r\n row.PercentageValue != null ? row.PercentageValue : '',\r\n row.Grade\r\n ];\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n getSchoolYearSettings(fromInitMethod: boolean) {\r\n this.yearService.getSchoolYearSettings(this.yearService.defaultYear.Id, this.studentService.studentEnrollment.SchoolId).subscribe(data => {\r\n this.schoolYearSettings = data;\r\n this.schoolYearSettingsChange.emit(this.schoolYearSettings);\r\n\r\n if (!fromInitMethod) {\r\n if (this.assignmentService.selectedCourse != null && this.assignmentService.selectedCourse != undefined) {\r\n this.selectedCourse = _.cloneDeep(this.assignmentService.selectedCourse);\r\n if (this.assignmentService.filterbyCard == true) {\r\n this.loadStudentSchedules();\r\n }\r\n this.assignmentService.selectedCourse = null;\r\n if (this.assignmentService.filterbyCard == false) {\r\n if (this.studentSchedules && this.studentSchedules.length > 0) {\t// We do this to ensure the references for the HTML selector are the same\r\n this.selectedCourse = this.studentSchedules.find(studentSchedule => studentSchedule.Id == this.selectedCourse.Id);\r\n }\r\n if (this.assignmentService.selectedGP != null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms.filter(o => o.ShortDescription == this.assignmentService.selectedGP)[0];\r\n if (this.selectedGP == null) {\r\n this.selectedGP = this.selectedCourse.CourseTerms[0];\r\n }\r\n }\r\n this.course_change();\r\n }\r\n }\r\n }\r\n\r\n if (this.V10 == false) {\r\n this.columnsToDisplay = ['More', 'DueDateDay', 'DueDate', 'AssignedDateDay', 'AssignedDate', 'Assignment', 'Category', 'Possible', 'EarnedPoints', 'Percentage', 'SpecialMark', 'Effective', 'Grade'];\r\n if (this.schoolYearSettings.HideS360AssignmentPercentageColumn) {\r\n this.columnsToDisplay = this.columnsToDisplay.filter(o => o != 'Percentage');\r\n }\r\n if (this.schoolYearSettings.HideS360AssignmentEffectiveScoreColumn) {\r\n this.columnsToDisplay = this.columnsToDisplay.filter(o => o != 'Effective');\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n No upcoming/missing assignments exist for this student\r\n
\r\n
0\" style=\"overflow:auto;flex-grow:1;min-width: 1220px;\">\r\n \r\n ]\r\n More\r\n \r\n \r\n \r\n \r\n \r\n ]\r\n \r\n Course Name\r\n \r\n \r\n {{SA.Course}}\r\n \r\n ]\r\n \r\n Term\r\n Grading Period\r\n \r\n \r\n \r\n {{SA.Term}}\r\n {{SA.OverrideGradingTerm != null? SA.OverrideGradingTerm:SA.Term}}\r\n \r\n \r\n ]\r\n \r\n \r\n \r\n
\r\n {{getAssignmentStatus(SA.AssignmentStatus, SA.DueDate)}}\r\n
\r\n
\r\n
\r\n ]\r\n \r\n Due\r\n \r\n \r\n \r\n {{SA.DueDate | date:'MM/dd/yy'}}\r\n \r\n \r\n ]\r\n \r\n \r\n {{SA.AssignedDate | date:'E'}}\r\n \r\n \r\n ]\r\n \r\n Assigned\r\n \r\n \r\n \r\n {{SA.AssignedDate | date:'MM/dd/yy'}}\r\n \r\n \r\n ]\r\n Assignment\r\n \r\n \r\n \r\n
{{SA.Assignment}}\r\n
\r\n
\r\n
\r\n ]\r\n \r\n Category-ID\r\n Category\r\n \r\n \r\n \r\n {{SA.Category}}\r\n \r\n \r\n ]\r\n Points Possible\r\n \r\n \r\n \r\n \r\n {{SA.Possible}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n 0\">\r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Email\r\n Teacher\r\n
Comments
\r\n \r\n
Summary
{{SA.Summary}}
Details
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IDStandardsScore
{{GO.Standard}}\r\n
\r\n {{ getSBSScore(SBS)}}\r\n
\r\n
\r\n
\r\n
Attachments
\r\n {{attachment.DocumentName}}\r\n {{attachment.DocumentType}}
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit, ViewChild, Input, OnDestroy, EventEmitter, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { AssignmentService } from '../assignment.service';\r\nimport { AssignmentsDTO } from '../assignment.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoginSettings } from '../../../shared-modules/login/loginSetting.model';\r\nimport { Utility } from '../Utility';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { AssignmentFilterPipe } from '../assignment-filter.pipe';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { AssignmentFilterParam } from '../assignment-filter-param';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { Router } from '@angular/router';\r\nimport { SendEmailService } from '../../../shared-modules/send-email/send-email.service';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'upcoming-missing',\r\n templateUrl: './upcoming-missing.component.html',\r\n styleUrls: ['./upcoming-missing.component.css'],\r\n animations: [detailExpand],\r\n})\r\nexport class UpcomingMissingComponent implements OnInit, OnDestroy {\r\n\r\n local_filterParam = new AssignmentFilterParam();\r\n\r\n @Input() shown: boolean;\r\n @Output() missingRetrieved = new EventEmitter();\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData: TylerMatTableDataSource;\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n if (this.angularMatData) {\r\n this.angularMatData.sort = value; {\r\n this.angularMatData.sortingDataAccessor = (item: AssignmentsDTO, property: string) => {\r\n if (property == 'Assignment') {\r\n return item.Assignment.toLowerCase();\r\n }\r\n else {\r\n return this.angularMatData.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n }\r\n }\r\n }\r\n columnsToDisplay: string[] = ['More', 'Course', 'Term', 'DueDateDay', 'DueDate', 'AssignedDateDay', 'AssignedDate', 'Assignment', 'Category', 'Possible'];\r\n canSendEmail: boolean;\r\n public utilityClass = Utility;\r\n @Input() clearFilterEvent: EventEmitter;\r\n\r\n subscriptions: Subscription[] = [];\r\n loginSettings: LoginSettings;\r\n studentAttachments: Attachment[] = [];\r\n studentLoaded = false;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private assignmentService: AssignmentService,\r\n private assignmentFilterPipe: AssignmentFilterPipe,\r\n private router: Router,\r\n private sendEmailService: SendEmailService\r\n\r\n ) {\r\n\r\n this.loginSettings = this.loginService.LoginSettings;\r\n\r\n if (!this.loginSettings.ParentPortalAssignmentsShowEffectiveScore) {\r\n this.columnsToDisplay = this.columnsToDisplay.filter(x => x !== 'EffectiveScores');\r\n }\r\n this.canSendEmail = (this.userService.userType == 2 || this.userService.userType === 3) ? this.loginSettings.AllowParentStudentEmail : true;\r\n\r\n this.subscriptions.push(studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.assignmentService.studentAssignmentsUPMG = [];\r\n this.refresh(); \r\n }));\r\n\r\n this.subscriptions.push(yearService.observableStudent360YearStream$.subscribe(\r\n student360Year => {\r\n this.assignmentService.studentAssignmentsUPMG = [];\r\n this.refresh();\r\n }));\r\n\r\n this.subscriptions.push(this.assignmentService.filterChange.subscribe(() => {\r\n if (!this.assignmentService.ShowByClass) {\r\n this.applyFilter();\r\n }\r\n }\r\n ));\r\n }\r\n\r\n ngOnInit() {\r\n if (this.clearFilterEvent) {\r\n this.subscriptions.push(\r\n this.clearFilterEvent.subscribe(() => {\r\n if (this.shown) {\r\n this.angularMatData.removeAllFilters();\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n\r\n refresh() {\r\n this.local_filterParam.FromDueDate = this.utilityClass.addDays(-30);\r\n this.local_filterParam.ToDueDate = this.utilityClass.addDays(30);\r\n\r\n if (!this.assignmentService.studentAssignmentsUPMG || this.assignmentService.studentAssignmentsUPMG.length === 0) {\r\n this.getStudentAssignmentUPMG();\r\n this.getStudentAttachments();\r\n }\r\n\r\n }\r\n\r\n loadFilterParam() {\r\n this.assignmentService.filterParam = this.local_filterParam;\r\n this.applyFilter();\r\n }\r\n\r\n getStudentAssignmentUPMG(): void {\r\n setTimeout(() => {\r\n this.assignmentService.getStudentAssignments(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.student360Year.Id,\r\n this.assignmentService.selectedSectionId,\r\n Utility.getDateString(this.local_filterParam.FromDueDate),\r\n Utility.getDateString(this.local_filterParam.ToDueDate),\r\n -1,\r\n this.studentService.studentEnrollment.SiteYearId\r\n ).subscribe(data => {\r\n this.angularMatData = new TylerMatTableDataSource();\r\n this.angularMatData.data = [];\r\n if (data.length > 0) {\r\n this.assignmentService.studentAssignmentsUPMG = data.filter(x => x.ShowOnPortal === true && x.SystemGrade === false);\r\n this.angularMatData.data = this.assignmentFilterPipe.transform(this.assignmentService.studentAssignmentsUPMG, this.local_filterParam, this.loginSettings.V10);\r\n if (this.angularMatData.data.length > 0 && !this.studentLoaded && !this.assignmentService.preventTabSwitch) {\r\n this.missingRetrieved.emit();\r\n this.studentLoaded = true;\r\n }\r\n else {\r\n this.assignmentService.preventTabSwitch = undefined;\r\n }\r\n }\r\n });\r\n }, 0);\r\n }\r\n\r\n getStudentAttachments(): void {\r\n setTimeout(() => {\r\n this.assignmentService.getStudentAttachment(\r\n this.studentService.selectedStudent.Id,\r\n this.yearService.student360Year.Id,\r\n this.assignmentService.selectedSectionId,\r\n Utility.getDateString(this.local_filterParam.FromDueDate),\r\n Utility.getDateString(this.local_filterParam.ToDueDate),\r\n -1,\r\n this.studentService.studentEnrollment.SiteYearId\r\n ).subscribe(data => setTimeout(() => this.studentAttachments = data, 0));\r\n }, 0);\r\n }\r\n\r\n applyFilter() {\r\n if (this.assignmentService.filterParam) {\r\n Object.assign(this.local_filterParam, this.assignmentService.filterParam);\r\n this.angularMatData.data = this.assignmentFilterPipe.transform(this.assignmentService.studentAssignmentsUPMG, this.assignmentService.filterParam, this.loginSettings.V10);\r\n }\r\n else {\r\n this.angularMatData.data = this.assignmentService.studentAssignmentsUPMG;\r\n }\r\n }\r\n\r\n showToggleIcon(row: AssignmentsDTO): boolean {\r\n let toggle = true;\r\n\r\n if (this.loginSettings.V10) {\r\n toggle = (!!row.Comment) || (!!row.AttachmentDetail) || this.isAttachmentExists(row.AssignmentId) || (row.GradeBookObjectives ? row.GradeBookObjectives.length : 0) >= 0;\r\n }\r\n else { // v9\r\n toggle = this.canSendEmail || (!!row.Comment) || (!!row.Summary) || (!!row.AttachmentDetail) || this.isAttachmentExists(row.AssignmentId) || (row.GradeBookObjectives ? row.GradeBookObjectives.length : 0) >= 0;\r\n }\r\n\r\n return toggle;\r\n }\r\n\r\n isAttachmentExists(assignmentId: number): boolean {\r\n return this.studentAttachments.findIndex(x => x.AssignmentId === assignmentId) >= 0;\r\n }\r\n\r\n getStudentAttachmentByAssignmentId(assignmentId: number): Attachment[] {\r\n return this.studentAttachments.filter(x => x.AssignmentId === assignmentId);\r\n }\r\n\r\n getSBSScore(sbs: any) {\r\n return this.loginSettings.V10 ? sbs.V10Score : (sbs.Score == -1 ? '' : sbs.Score);\r\n }\r\n\r\n sendEmail(teacherName: string, teacherEmail: string) {\r\n this.sendEmailService.teacherName = teacherName;\r\n this.sendEmailService.teacherEmailAddress = teacherEmail;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/sendEmail');\r\n }\r\n }\r\n\r\n getAssignmentStatus(status: number, dueDate: string) {\r\n switch (status) {\r\n case 1:\r\n return 'Today ';\r\n case 3:\r\n return 'Missing ';\r\n case 5:\r\n return 'Tomorrow ';\r\n default:\r\n return formatDate(dueDate, 'E', 'en-US');\r\n }\r\n }\r\n\r\n // --------- Toggle Row ----------------------------\r\n\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getAriaRow(row: AssignmentsDTO): string {\r\n const colList: string[] = ['Course', 'Grading Period', 'Due Date', 'Assigned Date', 'Assignment', 'Category'];\r\n\r\n const dataList: string[] = [\r\n row.Course,\r\n row.Term,\r\n moment(row.DueDate).format('MM/dd/yy'),\r\n moment(row.AssignedDate).format('MM/dd/yy'),\r\n row.AssignmentShortName,\r\n row.Category\r\n ];\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n}\r\n","
\r\n Filter\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{ course }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{ gp }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
","import { Component, OnInit, Input, Output, EventEmitter, TemplateRef, ViewChild, OnDestroy, OnChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AssignmentFilterParam } from '../assignment-filter-param';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { AssignmentService } from '../assignment.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { SchoolYearSettings } from '../../../shared-components/year/school-year-settings.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'assignment-filter',\r\n templateUrl: './assignment-filter.component.html',\r\n styleUrls: ['./assignment-filter.component.css']\r\n})\r\nexport class AssignmentFilterComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n filterParam: AssignmentFilterParam;\r\n @Output() filterChange = new EventEmitter();\r\n @Output() filterClose = new EventEmitter();\r\n @Input() clearFilterEvent: EventEmitter;\r\n @Input() ShowByClass: boolean;\r\n @Input() schoolYearSettings: SchoolYearSettings;\r\n\r\n @ViewChild('AssignmentFilterTemplate') assignmentFilterTemplate: TemplateRef;\r\n previousFilterParam = new AssignmentFilterParam();\r\n showFilterSubscription: Subscription;\r\n courses: any = [];\r\n courseTerms: any = [];\r\n v10: boolean;\r\n showPercentage = true;\r\n\r\n constructor(\r\n private assignmentService: AssignmentService,\r\n private loginService: LoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.filterParam = this.assignmentService.filterParam;\r\n\r\n Object.assign(this.previousFilterParam, this.filterParam);\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.v10 == false && this.schoolYearSettings != null && this.schoolYearSettings.HideS360AssignmentPercentageColumn) {\r\n this.showPercentage = false;\r\n }\r\n else {\r\n this.showPercentage = true;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n filterChangeByModel() {\r\n this.assignmentService.filterParam = this.filterParam;\r\n this.filterChange.emit();\r\n }\r\n\r\n clearFilter() {\r\n this.filterParam = new AssignmentFilterParam();\r\n this.previousFilterParam = new AssignmentFilterParam();\r\n this.filterChangeByModel();\r\n }\r\n\r\n closeFilter() {\r\n this.filterChangeByModel();\r\n this.filterClose.emit();\r\n }\r\n\r\n loadCourseAndTerms() {\r\n this.courses = this.assignmentService.getCoursesFromUPComingAssignments();\r\n this.courseTerms = this.assignmentService.getTermsFromUPComingAssignments();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n
","import { Component, EventEmitter, Host, HostBinding, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Subscription } from 'rxjs';\r\nimport { OverrideCode } from '../../classroom360/gradebook/v10/models/override-code.model';\r\nimport { GradeOverrideLegendComponent } from '../../shared-components/controls/grade-override-legend/grade-override-legend.component';\r\nimport { TabsComponent } from '../../shared-components/controls/tabs/tabs.component';\r\nimport { SchoolYearSettings } from '../../shared-components/year/school-year-settings.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { AssignmentFilterParam } from './assignment-filter-param';\r\nimport { AssignmentFilterComponent } from './assignment-filter/assignment-filter.component';\r\nimport { AssignmentService } from './assignment.service';\r\nimport { ByCourseComponent } from './by-course/by-course.component';\r\nimport { CategoryWeightsComponent } from './category-weights/category-weights.component';\r\nimport { UpcomingMissingComponent } from './upcoming-missing/upcoming-missing.component';\r\n\r\n@Component({\r\n selector: 'app-assignment',\r\n templateUrl: './assignment.component.html',\r\n styleUrls: ['./assignment.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AssignmentComponent implements OnInit, OnDestroy {\r\n @HostBinding('class.sis-app-root') sisAppRoot: Host = true;\r\n\r\n tabNames: string[] = ['By Course', 'Upcoming/Missing'];\r\n selectedTab: string;\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n ShowByClass: boolean;\r\n subscriptions: Subscription[] = [];\r\n showFilter = false;\r\n categoryWeightDialog: MatDialogRef;\r\n overrideLegendDialog: MatDialogRef;\r\n schoolYearSettings: SchoolYearSettings;\r\n\r\n // ------------Element references--------------------------------\r\n @ViewChild('byCourse', { static: true }) byCourse: ByCourseComponent;\r\n @ViewChild('upcomingMissing', { static: true }) upcomingMissing: UpcomingMissingComponent;\r\n @ViewChild('assignmentFilter', { static: true }) assignmentFilter: AssignmentFilterComponent;\r\n @ViewChild(TabsComponent, { static: true }) tabComponent: TabsComponent;\r\n\r\n // ------------------ filter -------------------------\r\n isFiltered: boolean;\r\n filterParam = new AssignmentFilterParam();\r\n v10: boolean;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private assignmentService: AssignmentService,\r\n private loginService: LoginService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.assignmentService.filterParam = this.filterParam;\r\n this.tabChange('By Course');\r\n this.subscriptions.push(\r\n this.toggleAllRows.subscribe(toggle => {\r\n if (this.ShowByClass) {\r\n this.byCourse.expandAll(toggle);\r\n } else {\r\n this.upcomingMissing.expandAll(toggle);\r\n }\r\n })\r\n );\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n getSelectedTabIndex() {\r\n return this.tabNames.indexOf(this.selectedTab);\r\n }\r\n\r\n schoolYearSettingsChange(schoolYearSettings: SchoolYearSettings) {\r\n this.schoolYearSettings = schoolYearSettings;\r\n }\r\n\r\n tabChange(tab) {\r\n this.selectedTab = tab;\r\n this.ShowByClass = tab === 'By Course';\r\n this.assignmentService.ShowByClass = this.ShowByClass;\r\n if (this.ShowByClass) {\r\n this.byCourse.loadFilterParam();\r\n }\r\n else {\r\n this.upcomingMissing.loadFilterParam();\r\n }\r\n this.assignmentFilter.loadCourseAndTerms();\r\n this.assignmentFilter.filterParam = this.assignmentService.filterParam;\r\n this.isFiltered = this.assignmentService.filterParam.isFilterApplied();\r\n }\r\n\r\n missingRetrieved() {\r\n if (this.assignmentService.filterbyCard == false) {\r\n this.tabChange('Upcoming/Missing');\r\n this.tabComponent.clickTabWithoutEvents('Upcoming/Missing');\r\n }\r\n }\r\n\r\n filterChange() {\r\n this.isFiltered = this.assignmentService.filterParam.isFilterApplied();\r\n this.assignmentService.filterChange.emit();\r\n }\r\n\r\n showFilterClick() {\r\n this.showFilter = !this.showFilter;\r\n }\r\n\r\n clearFilterClick() {\r\n this.assignmentFilter.clearFilter();\r\n }\r\n\r\n showCategoryWeights() {\r\n return this.loginService.LoginSettings.V10 && this.ShowByClass && this.byCourse.selectedCourse && this.byCourse && this.byCourse.showCategoryWeights;\r\n }\r\n\r\n categoryWeightsClick() {\r\n this.categoryWeightDialog = this.dialog.open(CategoryWeightsComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n this.categoryWeightDialog.componentInstance.course = this.byCourse.selectedCourse;\r\n this.categoryWeightDialog.componentInstance.selectedGradingPeriod = this.byCourse.selectedGP;\r\n }\r\n\r\n showLegends() {\r\n return this.loginService.LoginSettings.V10 || (this.ShowByClass && this.byCourse && this.byCourse.selectedCourse && this.byCourse.studentAssignments.filter(x => x.SpecialMark !== '').length > 0);\r\n }\r\n\r\n legendClick() {\r\n if (this.v10) {\r\n this.overrideLegendDialog = this.dialog.open(GradeOverrideLegendComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n this.overrideLegendDialog.componentInstance.forAssignments = true;\r\n } else {\r\n const overrideCodes: OverrideCode[] = [];\r\n this.byCourse.studentAssignments.forEach(function (element) {\r\n if ((element.SpecialMark !== '') && ((overrideCodes.map(function (e) { return e.Code; }).indexOf(element.SpecialMark) == -1))) {\r\n overrideCodes.push({ 'Id': 0, 'Code': element.SpecialMark, 'Description': element.SpecialMarkDescription, 'AssignmentCalcOptions': '', 'GradePos': 0, 'ForGradeReporting': false, 'ForAssignments': false, 'SetSubsequentGPGrades': false, 'ExcludeFromCalculation': false, 'SetToZero': false });\r\n }\r\n });\r\n\r\n this.overrideLegendDialog = this.dialog.open(GradeOverrideLegendComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n this.overrideLegendDialog.componentInstance.overrideCodes = overrideCodes;\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { EventEmitter, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { OverrideCode } from '../../classroom360/gradebook/v10/models/override-code.model';\r\nimport { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { CourseSchedule } from '../../shared-components/student/course-schedule.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { AssignmentFilterParam } from './assignment-filter-param';\r\nimport { AssignmentsDTO, GradeBookStandards } from './assignment.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AssignmentService {\r\n\r\n selectedCourse: CourseSchedule;\r\n selectedSectionId = -1;\r\n selectedGP: string;\r\n studentAssignmentsUPMG: AssignmentsDTO[] = [];\r\n preventTabSwitch: boolean;\r\n ShowByClass = true;\r\n filterParam: AssignmentFilterParam;\r\n filterChange = new EventEmitter();\r\n filterbyCard = false;\r\n selectedCoursebyCard: string;\r\n viewOptions = [\r\n { name: 'Today\\'s Only', value: '1' },\r\n { name: 'This Term', value: '2' },\r\n { name: 'All', value: '3' }\r\n ];\r\n selectedCourseSection: string;\r\n selectedView: number;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private studentService: StudentService,\r\n private sharedService: SharedService\r\n ) {\r\n }\r\n\r\n getStudentAssignments(studentId: number, yearId: number, siteSectionID: number, startDate: Date, endDate: Date, termId: number, SiteYearId: number): Observable {\r\n const queryString = '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&siteSectionID=' + siteSectionID +\r\n '&startDate=' + startDate +\r\n '&endDate=' + endDate +\r\n '&TermId=' + termId +\r\n '&SiteYearId=' + SiteYearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentAssignments' + queryString);\r\n }\r\n\r\n\r\n getStudentAttachment(studentId: number, yearId: number, siteSectionID: number, startDate: Date, endDate: Date, termId: number, SiteYearId: number): Observable {\r\n const queryString = '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&siteSectionID=' + siteSectionID +\r\n '&startDate=' + startDate +\r\n '&endDate=' + endDate +\r\n '&TermId=' + termId +\r\n '&SiteYearId=' + SiteYearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentAttachment' + queryString);\r\n }\r\n\r\n getTermsFromUPComingAssignments() {\r\n let matches: any = [];\r\n const reducer = (array, item) => array.concat(item['Term']);\r\n matches = this.studentAssignmentsUPMG.reduce(reducer, []);\r\n // to get unique values\r\n return Array.from(new Set(matches));\r\n }\r\n\r\n getCoursesFromUPComingAssignments() {\r\n let matches: any = [];\r\n const reducer = (array, item) => array.concat(item['Course']);\r\n matches = this.studentAssignmentsUPMG.reduce(reducer, []);\r\n // to get unique values\r\n return Array.from(new Set(matches));\r\n }\r\n\r\n getStandardsBasedHeader(siteSectionId: number, startDate: Date, endDate: Date, termId: number): Observable {\r\n const queryString = '?siteSectionId=' + siteSectionId +\r\n '&startDate=' + startDate +\r\n '&endDate=' + endDate +\r\n '&TermId=' + termId;\r\n return this.http.get(System.apiURL.Student + 'GetStandardsBasedHeader' + queryString);\r\n }\r\n\r\n getCategories(isTeacherUser: boolean, courseId: number, courseIds: string): Observable {\r\n return this.sharedService.getCategories(isTeacherUser, courseId, courseIds);\r\n }\r\n\r\n getOverrideCodes() {\r\n return this.http.get(System.apiURL.Student + 'GetGradeOverrideCodes?yearId=' + this.studentService.studentEnrollment.SiteYearId + '&schoolId=' + this.studentService.studentEnrollment.SchoolId);\r\n }\r\n}\r\n","\r\n \r\n Meets\r\n {{detail.Meets}}\r\n \r\n \r\n Period\r\n {{detail.PeriodCode}}\r\n \r\n \r\n Dropped\r\n {{detail.Dropped}}\r\n \r\n \r\n Term\r\n {{detail.Term}}\r\n \r\n \r\n Course-Section\r\n {{detail.SubjectCode}}-{{detail.Section}}\r\n \r\n \r\n Course Name\r\n {{detail.Course}}\r\n \r\n \r\n Code\r\n {{detail.AttendanceCode}}\r\n \r\n \r\n Type\r\n {{detail.AttendanceType}}\r\n \r\n \r\n Description\r\n {{detail.AttendanceCodeDescription}}\r\n \r\n \r\n Comment\r\n {{detail.Comment}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { AttendanceDetails } from '../../../shared-components/student/attendance-details.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'by-date-details',\r\n templateUrl: './by-date-details.component.html'\r\n})\r\nexport class ByDateDetailsComponent implements OnInit, OnDestroy {\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay = [];\r\n @Input() attendanceDetails: AttendanceDetails[];\r\n @Input() calendarUseAttendanceTypes: boolean;\r\n V10: boolean;\r\n constructor(\r\n private loginService: LoginService\r\n ) {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnInit() {\r\n this.angularMatData.data = this.attendanceDetails;\r\n\r\n // Custom sorting for case here Academic Year starts with letters\r\n // Extracts last two characters and returns the resulting substring if it is a number\r\n this.angularMatData.sortingDataAccessor = (item: any, property: string) => {\r\n if (property == 'Course-Section') {\r\n return item['SubjectCode'] + item['Section'];\r\n }\r\n // Default sorting\r\n else {\r\n return this.angularMatData.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n\r\n this.angularMatData.sort = this.sort;\r\n\r\n if (this.loginService.LoginSettings.S360HideAttendanceComments == false) {\r\n if (this.V10 == false) {\r\n if (this.calendarUseAttendanceTypes) {\r\n this.columnsToDisplay = ['Meets', 'PeriodCode', 'Term', 'Course-Section', 'Course', 'AttendanceCode', 'AttendanceType', 'AttendanceCodeDescription' , 'Comment'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['Meets', 'PeriodCode', 'Term', 'Course-Section', 'Course', 'AttendanceCode', 'AttendanceCodeDescription' , 'Comment'];\r\n }\r\n }\r\n else {\r\n this.columnsToDisplay = ['Meets', 'PeriodCode', 'Dropped', 'Term', 'Course-Section', 'Course', 'AttendanceCode', 'Comment'];\r\n }\r\n }\r\n else {\r\n if (this.V10 == false) {\r\n if (this.calendarUseAttendanceTypes) {\r\n this.columnsToDisplay = ['Meets', 'PeriodCode', 'Term', 'Course-Section', 'Course', 'AttendanceCode', 'AttendanceType' , 'AttendanceCodeDescription'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['Meets', 'PeriodCode', 'Term', 'Course-Section', 'Course', 'AttendanceCode', 'AttendanceCodeDescription'];\r\n }\r\n }\r\n else {\r\n this.columnsToDisplay = ['Meets', 'PeriodCode', 'Dropped', 'Term', 'Course-Section', 'Course', 'AttendanceCode'];\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n }\r\n\r\n getAriaDetailRowByDate(row: AttendanceDetails): string {\r\n const colList: string[] = ['Meets',\r\n 'Dropped',\r\n 'Term',\r\n 'Course-Section',\r\n 'Course Name',\r\n 'Code',\r\n 'Comment'];\r\n\r\n const dataList: string[] = [row.Meets,\r\n row.Dropped,\r\n row.Term,\r\n row.SubjectCode.concat('-', row.Section),\r\n row.AttendanceCode,\r\n row.Comment];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n}\r\n","\r\n \r\n More\r\n \r\n \r\n 0\" aria-label=\"Expand row for more details\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{attend.AttendanceDate | date:'EEE'}}\r\n \r\n \r\n \r\n \r\n Date\r\n \r\n \r\n \r\n {{attend.AttendanceDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n \r\n Type\r\n \r\n \r\n \r\n {{attend.Type}}\r\n \r\n \r\n \r\n \r\n Duration\r\n \r\n \r\n {{attend.Duration}}\r\n \r\n \r\n \r\n Codes\r\n \r\n \r\n {{attend.Codes}}\r\n \r\n\r\n \r\n \r\n Days\r\n \r\n \r\n {{attend.Days}}\r\n \r\n\r\n \r\n \r\n Hours\r\n \r\n \r\n {{attend.Hours}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n 0 ? 'expanded' : 'collapsed'\"\r\n (@detailExpand.start)=\"$event.toState == 'expanded' ? angularMatData.setVisible(row, true) : null\"\r\n (@detailExpand.done)=\"$event.toState == 'collapsed' ? angularMatData.setVisible(row, false) : null\"\r\n style=\"overflow: hidden\"\r\n class=\"mat-detail-row\">\r\n \r\n\r\n\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { Attendance } from '../../../shared-components/student/attendance.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'by-date-table',\r\n templateUrl: './by-date-table.component.html',\r\n animations: [detailExpand],\r\n})\r\nexport class ByDateTableComponent implements OnInit, OnDestroy {\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplayAttend = ['More', 'AttendanceDay', 'AttendanceDate', 'Type', 'Duration', 'Codes', 'Days', 'Hours'];\r\n @Input() attendance: Attendance[];\r\n @Input() calendarUseAttendanceTypes: boolean;\r\n clearFilterEvent = new EventEmitter();\r\n\r\n constructor(\r\n private sharedService: SharedService,\r\n private loginService: LoginService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.angularMatData.data = this.attendance;\r\n\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.sharedService.updateShowSpinner(true);\r\n setTimeout(() => {\r\n this.angularMatData.expandAll(expand);\r\n this.sharedService.updateShowSpinner(false);\r\n }, 100);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n\r\n }\r\n\r\n getAriaRowByDate(row: Attendance): string {\r\n const colList: string[] = ['Date',\r\n 'Type',\r\n 'Duration',\r\n 'Codes'];\r\n\r\n const dataList: string[] = [new Date(row.AttendanceDate).toDateString(),\r\n row.Type,\r\n row.Duration,\r\n row.Codes];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList) + (row.AttendanceDetails.length > 0 ? ' Expand for more details' : ' No additional details');\r\n }\r\n}\r\n","\r\n \r\n \r\n {{detail.AttendanceDate | date: 'EEE'}}\r\n \r\n \r\n Date\r\n {{detail.AttendanceDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n Period\r\n {{detail.Meets}}\r\n \r\n \r\n Period\r\n {{detail.PeriodCode}}\r\n \r\n \r\n Code\r\n {{detail.AttendanceCode}}\r\n *\r\n \r\n \r\n \r\n Type\r\n {{detail.AttendanceType}}\r\n \r\n \r\n Description\r\n {{detail.AttendanceCodeDescription}}\r\n \r\n \r\n \r\n Type\r\n {{detail.Type}}\r\n \r\n \r\n Comment\r\n {{detail.Comment}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { AttendanceDetails } from '../../../shared-components/student/attendance-details.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'by-schedule-details',\r\n templateUrl: './by-schedule-details.component.html'\r\n})\r\nexport class ByScheduleDetailsComponent implements OnInit, OnDestroy {\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay = [];\r\n @Input() attendanceDetails: AttendanceDetails[];\r\n @Input() calendarUseAttendanceTypes: boolean;\r\n V10: boolean;\r\n constructor(private loginService: LoginService) {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.loginService.LoginSettings.S360HideAttendanceComments == false) {\r\n if (!this.V10) {\r\n if (this.calendarUseAttendanceTypes) {\r\n this.columnsToDisplay = ['Day', 'AttendanceDate', 'Meets', 'AttendanceCode', 'AttendanceType', 'AttendanceCodeDescription', 'Comment'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['Day', 'AttendanceDate', 'Meets', 'AttendanceCode', 'AttendanceCodeDescription', 'Comment'];\r\n }\r\n }\r\n else {\r\n this.columnsToDisplay = ['Day', 'PeriodCode', 'AttendanceDate', 'AttendanceCode', 'AttendanceCodeDescription', 'Type', 'Comment'];\r\n }\r\n } else {\r\n if (!this.V10) {\r\n if (this.calendarUseAttendanceTypes) {\r\n this.columnsToDisplay = ['Day', 'AttendanceDate', 'Meets', 'AttendanceCode', 'AttendanceType', 'AttendanceCodeDescription'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['Day', 'AttendanceDate', 'Meets', 'AttendanceCode', 'AttendanceCodeDescription'];\r\n }\r\n }\r\n else {\r\n this.columnsToDisplay = ['Day', 'PeriodCode', 'AttendanceDate', 'AttendanceCode', 'AttendanceCodeDescription', 'Type'];\r\n }\r\n }\r\n this.angularMatData.data = this.attendanceDetails;\r\n\r\n // Custom sorting for case here Academic Year starts with letters\r\n // Extracts last two characters and returns the resulting substring if it is a number\r\n this.angularMatData.sortingDataAccessor = (item: any, property: string) => {\r\n if (property == 'Course-Section') {\r\n return item['SubjectCode'] + item['Section'];\r\n }\r\n // Default sorting\r\n else {\r\n return this.angularMatData.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n\r\n }\r\n\r\n getAriaDetailRowByCourse(row: AttendanceDetails): string {\r\n let colList: string[] = [];\r\n let dataList: string[] = [];\r\n if (this.V10) {\r\n colList = ['Date',\r\n 'Code',\r\n 'Description',\r\n 'Type',\r\n 'Comment'];\r\n\r\n dataList = [new Date(row.AttendanceDate).toDateString(),\r\n row.AttendanceCode,\r\n row.AttendanceCodeDescription,\r\n row.Type,\r\n row.Comment];\r\n }\r\n else {\r\n colList = ['Date',\r\n 'Meets',\r\n 'Code',\r\n 'Description',\r\n 'Type',\r\n 'Comment'];\r\n\r\n dataList = [new Date(row.AttendanceDate).toDateString(),\r\n row.Meets,\r\n row.AttendanceCode,\r\n row.AttendanceCodeDescription,\r\n row.Type,\r\n row.Comment];\r\n }\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n}\r\n","\r\n \r\n More\r\n \r\n 0\" aria-label=\"Expand row for more details\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n Meets\r\n \r\n \r\n {{attend.Meets}}\r\n \r\n \r\n Dropped\r\n {{attend.Dropped}}\r\n \r\n \r\n \r\n Term\r\n \r\n \r\n {{attend.Term}}\r\n \r\n \r\n Course-Section\r\n \r\n \r\n {{attend.SubjectCode}}-{{attend.Section}}\r\n \r\n \r\n \r\n Course Name\r\n \r\n \r\n {{attend.Course}}\r\n \r\n \r\n \r\n Teacher\r\n \r\n \r\n {{attend.TeacherName}}\r\n \r\n \r\n A\r\n \r\n \r\n \r\n {{attend.Absences}}\r\n \r\n \r\n \r\n T\r\n \r\n \r\n \r\n {{attend.Tardies}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n 0 ? 'expanded' : 'collapsed'\"\r\n (@detailExpand.start)=\"$event.toState == 'expanded' ? angularMatData.setVisible(row, true) : null\"\r\n (@detailExpand.done)=\"$event.toState == 'collapsed' ? angularMatData.setVisible(row, false) : null\" style=\"overflow: hidden\"\r\n class=\"mat-detail-row\">\r\n \r\n
\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Router } from '@angular/router';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { SendEmailService } from '../../../shared-modules/send-email/send-email.service';\r\n\r\n@Component({\r\n selector: 'by-schedule-table',\r\n templateUrl: './by-schedule-table.component.html',\r\n animations: [detailExpand],\r\n})\r\nexport class ByScheduleTableComponent implements OnInit, OnDestroy {\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplayCourse: string[] = ['More', 'Meets', 'Dropped', 'Term', 'Course-Section', 'Course', 'TeacherName', 'Absences', 'Tardies'];\r\n @Input() courseSchedules: CourseSchedule[];\r\n @Input() calendarUseAttendanceTypes: boolean;\r\n clearFilterEvent = new EventEmitter();\r\n @Input() V10: boolean;\r\n\r\n constructor(\r\n private sharedService: SharedService,\r\n private sendEmailService: SendEmailService,\r\n private studentService: StudentService,\r\n private userService: UserService,\r\n private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n this.angularMatData.data = this.courseSchedules;\r\n if (!this.V10) {\r\n this.columnsToDisplayCourse = ['More', 'Meets', 'Term', 'Course-Section', 'Course', 'TeacherName', 'Absences', 'Tardies'];\r\n }\r\n\r\n // Custom sorting for case here Academic Year starts with letters\r\n // Extracts last two characters and returns the resulting substring if it is a number\r\n this.angularMatData.sortingDataAccessor = (item: any, property: string) => {\r\n if (property == 'Course-Section') {\r\n return item['SubjectCode'] + item['Section'];\r\n }\r\n // Default sorting\r\n else {\r\n return this.angularMatData.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.studentService.selectedCourse.SubjectCode != undefined) {\r\n const course = this.courseSchedules.filter(o => o.SubjectCode == this.studentService.selectedCourse.SubjectCode)[0];\r\n this.angularMatData.toggleExpanded(course);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n sendEmail(teacherName: string, teacherEmail: string) {\r\n this.sendEmailService.teacherName = teacherName;\r\n this.sendEmailService.teacherEmailAddress = teacherEmail;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/sendEmail');\r\n }\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.sharedService.updateShowSpinner(true);\r\n setTimeout(() => {\r\n this.angularMatData.expandAll(expand);\r\n this.sharedService.updateShowSpinner(false);\r\n }, 100);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n\r\n }\r\n\r\n getAriaRowByCourse(row: CourseSchedule): string {\r\n const colList: string[] = ['Meets',\r\n 'Dropped',\r\n 'Term',\r\n 'Course-Section',\r\n 'Course Name',\r\n 'Teacher',\r\n 'Absences',\r\n 'Tardies'];\r\n\r\n const dataList: string[] = [row.Meets,\r\n row.Dropped,\r\n row.Term,\r\n row.SubjectCode.concat('-', row.Section),\r\n row.Course,\r\n row.TeacherName,\r\n row.Absences.toString(),\r\n row.Tardies.toString()];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList) + (row.AttendanceDetails.length > 0 ? ' Expand for more details' : ' No additional details');\r\n }\r\n\r\n}\r\n","
No Special Additional Attendance data exists for student
\r\n
0 \">\r\n
\r\n
\r\n
{{school.SiteName}}
\r\n
1\">{{school.SiteName}}
\r\n \r\n \r\n Date\r\n \r\n \r\n {{att.Date|date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n Minutes
Attended
\r\n \r\n
\r\n {{att.MinutesAttended}}\r\n
\r\n \r\n \r\n Minutes
Possible
\r\n \r\n
\r\n {{att.MinutesPossible}}\r\n
\r\n \r\n Reason Code\r\n \r\n \r\n {{att.ReasonCode}}\r\n \r\n \r\n Comment\r\n \r\n \r\n {{att.Comment}}\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, ViewChild, EventEmitter } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { SpecialAdditionalAttendance, AttendanceSchools } from '../../../shared-components/student/attendance.model';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\n\r\n@Component({\r\n selector: 'by-special-additional',\r\n templateUrl: './by-special-additional.component.html'\r\n})\r\nexport class BySpecialAdditionalComponent implements OnInit {\r\n\r\n studentSpecialAttendance: SpecialAdditionalAttendance[] = [];\r\n specialAdditionalAttendanceSchools: AttendanceSchools[] = [];\r\n columnsToDisplaySpecialAdditional = ['Date', 'MinutesAttended', 'MinutesPossible', 'ReasonCode', 'Comment'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n isBusy = true;\r\n specialAdditionalAttendanceAngularMatData = new TylerMatTableDataSource();\r\n clearFilterEvent = new EventEmitter();\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.getSpecialAttendance();\r\n }\r\n\r\n getSpecialAttendance() {\r\n this.isBusy = true;\r\n this.studentService.getSpecialAttendance(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.studentSpecialAttendance = data;\r\n this.getSpecialAttendanceSchools();\r\n if (this.studentSpecialAttendance.length == 0) {\r\n this.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n getSpecialAttendanceSchools() {\r\n for (const att of this.studentSpecialAttendance) {\r\n if (this.specialAdditionalAttendanceSchools.filter(o => o.SiteId == att.SiteId).length == 0) {\r\n const school: AttendanceSchools = {\r\n SiteId: att.SiteId,\r\n SiteName: att.SiteName,\r\n PrimarySchool: att.PrimarySchool\r\n };\r\n this.specialAdditionalAttendanceSchools.push(school);\r\n }\r\n }\r\n }\r\n\r\n\r\n getSpecialAttendanceDataSource(siteId: number): TylerMatTableDataSource {\r\n this.specialAdditionalAttendanceAngularMatData = new TylerMatTableDataSource();\r\n this.specialAdditionalAttendanceAngularMatData.data = this.studentSpecialAttendance.filter(o => o.SiteId == siteId);\r\n this.specialAdditionalAttendanceAngularMatData.sort = this.sort;\r\n if (this.specialAdditionalAttendanceAngularMatData.data.length > 0) {\r\n this.isBusy = true;\r\n }\r\n else { this.isBusy = false; }\r\n return this.specialAdditionalAttendanceAngularMatData;\r\n }\r\n\r\n getSpecialAdditionalAriaRow(row: SpecialAdditionalAttendance): string {\r\n const colList: string[] = ['Date', 'MinutesAttended', 'MinutesPossible', 'ReasonCode', 'Comment'];\r\n\r\n const dataList: string[] = [row.Date.toString(),\r\n row.MinutesAttended.toString(),\r\n row.MinutesPossible.toString(),\r\n row.ReasonCode,\r\n row.Comment];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n {{detail.date | date: 'EEE'}}\r\n \r\n \r\n Date\r\n {{detail.date | date: 'MM/dd/yy'}}\r\n \r\n \r\n Code\r\n {{detail.attCode}}\r\n \r\n \r\n Description\r\n {{detail.attDescription}}\r\n \r\n \r\n \r\n Type\r\n {{detail.type}}\r\n \r\n \r\n AM/PM\r\n {{detail.ampm}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { StudentTeamAttendanceDetails } from '../../../shared-components/student/attendance.model';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\n\r\n@Component({\r\n selector: 'app-by-team-details',\r\n templateUrl: './by-team-details.component.html'\r\n})\r\nexport class ByTeamDetailsComponent implements OnInit {\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay = ['Day', 'date', 'attCode', 'attDescription', 'type', 'ampm'];\r\n @Input() attendanceDetails: StudentTeamAttendanceDetails[];\r\n V10: boolean;\r\n constructor(private loginService: LoginService,) {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnInit() {\r\n this.angularMatData.data = this.attendanceDetails;\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n getAriaDetailRowByTeamAttendanceDetails(row: StudentTeamAttendanceDetails): string {\r\n let colList: string[] = [];\r\n let dataList: string[] = [];\r\n if (this.V10) {\r\n colList = ['date',\r\n 'attCode',\r\n 'attDescription',\r\n 'type',\r\n 'ampm'];\r\n\r\n dataList = [new Date(row.date).toDateString(),\r\n row.attCode,\r\n row.attDescription,\r\n row.type,\r\n row.ampm];\r\n }\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}","\r\n \r\n More\r\n \r\n 0\" aria-label=\"Expand row for more details\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n Team Name\r\n \r\n \r\n {{teamAttend.stName}}\r\n\r\n\r\n \r\n Staff\r\n \r\n \r\n {{teamAttend.staffName}}\r\n\r\n\r\n \r\n A\r\n \r\n \r\n {{teamAttend.aCount}}\r\n\r\n\r\n \r\n T\r\n \r\n \r\n {{teamAttend.tCount}}\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n 0 ? 'expanded' : 'collapsed'\"\r\n (@detailExpand.start)=\"$event.toState == 'expanded' ? angularMatData.setVisible(row, true) : null\"\r\n (@detailExpand.done)=\"$event.toState == 'collapsed' ? angularMatData.setVisible(row, false) : null\" style=\"overflow: hidden\"\r\n class=\"mat-detail-row\">\r\n \r\n
","import { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { StudentTeamAttendance } from '../../../shared-components/student/attendance.model';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { Router } from '@angular/router';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\n\r\n\r\n@Component({\r\n selector: 'by-team-table',\r\n templateUrl: './by-team-table.component.html',\r\n animations: [detailExpand]\r\n})\r\nexport class ByTeamTableComponent implements OnInit {\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplayTeamAttendance: string[] = ['More', 'stName', 'staffName', 'aCount', 'tCount'];\r\n @Input() teamAttendance: StudentTeamAttendance[];\r\n\r\n constructor(\r\n private sharedService: SharedService,\r\n private studentService: StudentService,\r\n private userService: UserService,\r\n private router: Router) {\r\n}\r\n\r\n ngOnInit() {\r\n this.angularMatData.data = this.teamAttendance;\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.sharedService.updateShowSpinner(true);\r\n setTimeout(() => {\r\n this.angularMatData.expandAll(expand);\r\n this.sharedService.updateShowSpinner(false);\r\n }, 100);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n\r\n }\r\n\r\n getAriaRowByTeamAttendance(row: StudentTeamAttendance): string {\r\n const colList: string[] = ['stName', \r\n 'staffName', \r\n 'aCount', \r\n 'tCount'];\r\n\r\n const dataList: string[] = [row.stName,\r\n row.staffName,\r\n row.aCount,\r\n row.tCount\r\n ];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList) + (row.StudentTeamAttendanceDetails.length > 0 ? ' Expand for more details' : ' No additional details');\r\n }\r\n}","
No Excessive Absences data exists for student
\r\n\r\n
0 \">\r\n
\r\n 0\">\r\n \r\n \r\n {{eaOption.Description}}\r\n \r\n \r\n\r\n 0\">\r\n \r\n {{tgOption.Description}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n {{School.Code}}
\r\n
1\">{{School.Code}}
\r\n\r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Meets\r\n \r\n \r\n {{att.Meets}}\r\n \r\n \r\n \r\n Step\r\n \r\n \r\n \r\n {{att.Steps}}\r\n \r\n \r\n \r\n Points\r\n \r\n \r\n \r\n {{att.Points}}\r\n \r\n \r\n \r\n Appeal Status\r\n \r\n \r\n {{att.AppealedStatus}}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n Term\r\n Course-Section\r\n Course Name\r\n Teacher\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{att.Term}}\r\n {{att.Subject}}-{{att.Section}}{{att.Course}}{{att.Teacher}}
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, ViewChild, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { ExcessiveAttendance, AttendanceSchools, Attendance } from '../../../shared-components/student/attendance.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\n\r\n@Component({\r\n selector: 'app-by-view-excessive',\r\n templateUrl: './by-view-excessive.component.html',\r\n animations: [detailExpand],\r\n})\r\nexport class ByViewExcessiveComponent implements OnInit {\r\n\r\n selectedExcessiveAttendanceOption = 0;\r\n columnsToDisplayExcessiveAttendance = ['Steps', 'Points', 'AppealedStatus'];\r\n excessiveAttendanceAngularMatData = new TylerMatTableDataSource();\r\n @Input() selectionIndex: number;\r\n viewTrackingGroupsOptions: any[] = [];\r\n studentExcessiveAttendance: ExcessiveAttendance[] = [];\r\n selectedTrackingGroupOption = 0;\r\n excessiveAttendanceSchools: AttendanceSchools[] = [];\r\n selectedStudent: Student;\r\n viewExcessiveAttendanceOptions: any[] = [];\r\n @ViewChild(MatSort) sort: MatSort;\r\n attendance: Attendance[] = [];\r\n courseSchedules: CourseSchedule[] = [];\r\n selected = 'By Date';\r\n @Input() showAllCodes: boolean;\r\n isBusy = true;\r\n @Output() selectedExcessiveAttendanceOptionValueChange = new EventEmitter();\r\n clearFilterEvent = new EventEmitter();\r\n constructor(\r\n private sharedService: SharedService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.getExcessiveAttendance();\r\n if (this.selectedExcessiveAttendanceOption == 1) {\r\n this.columnsToDisplayExcessiveAttendance = ['More', 'Meets', 'Steps', 'Points', 'AppealedStatus'];\r\n }\r\n else {\r\n this.columnsToDisplayExcessiveAttendance = ['Steps', 'Points', 'AppealedStatus'];\r\n }\r\n }\r\n\r\n getExcessiveAttendanceAriaRow(row: ExcessiveAttendance): string {\r\n const colList: string[] = ['Meets', 'Steps', 'Points', 'AppealedStatus'];\r\n const dataList: string[] = [row.Meets,\r\n row.Steps.toString(),\r\n row.Points.toString(),\r\n row.AppealedStatus\r\n ];\r\n return AriaDirective.concatAriaStrings(colList, dataList) + (this.selectedExcessiveAttendanceOption == 1 ? ' Expand for more details' : ' No additional details');\r\n }\r\n\r\n selectedViewOptionChange() {\r\n this.expandAll(false);\r\n\r\n if (this.selectedExcessiveAttendanceOption == 1) {\r\n this.columnsToDisplayExcessiveAttendance = ['More', 'Meets', 'Steps', 'Points', 'AppealedStatus'];\r\n }\r\n else {\r\n this.columnsToDisplayExcessiveAttendance = ['Steps', 'Points', 'AppealedStatus'];\r\n }\r\n\r\n this.viewTrackingGroupsOptions = [];\r\n for (const att of this.studentExcessiveAttendance.filter(o => o.TrackingType == this.selectedExcessiveAttendanceOption)) {\r\n if (this.viewTrackingGroupsOptions.filter(o => o.Value == att.AttendanceStepsDefinitionId).length == 0) {\r\n const option: any = {\r\n Value: att.AttendanceStepsDefinitionId,\r\n Description: att.Description,\r\n TrackingId: att.TrackingType\r\n };\r\n\r\n this.viewTrackingGroupsOptions.push(option);\r\n }\r\n }\r\n this.selectedExcessiveAttendanceOptionValueChange.emit(this.selectedExcessiveAttendanceOption);\r\n if (this.viewTrackingGroupsOptions.length > 0) {\r\n this.selectedTrackingGroupOption = this.viewTrackingGroupsOptions[0].Value;\r\n }\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n if (this.selectedExcessiveAttendanceOption == 1) {\r\n this.sharedService.updateShowSpinner(true);\r\n setTimeout(() => {\r\n this.excessiveAttendanceAngularMatData.expandAll(expand);\r\n this.sharedService.updateShowSpinner(false);\r\n }, 100);\r\n }\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n if (this.selectedExcessiveAttendanceOption == 1) {\r\n this.excessiveAttendanceAngularMatData.toggleExpanded(row);\r\n }\r\n }\r\n\r\n checkExpandedExcessiveAttendance(row: any): boolean {\r\n return this.excessiveAttendanceAngularMatData.checkExpanded(row);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n if (this.selectedExcessiveAttendanceOption == 1) {\r\n this.excessiveAttendanceAngularMatData.rowKeyPress(event, row);\r\n }\r\n }\r\n\r\n getExcessiveAttendance() {\r\n this.isBusy = true;\r\n this.studentService.getExcessiveAttendance(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.studentExcessiveAttendance = data;\r\n if (this.studentExcessiveAttendance.length > 0) {\r\n this.getExcessiveAttendanceSchools();\r\n this.getExcessiveAttendanceSchoolsViewOptions();\r\n this.excessiveAttendanceAngularMatData = new TylerMatTableDataSource(this.studentExcessiveAttendance);\r\n }\r\n else {\r\n this.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n getExcessiveAttendanceSchools() {\r\n for (const att of this.studentExcessiveAttendance) {\r\n if (this.excessiveAttendanceSchools.filter(o => o.SiteId == att.SiteId).length == 0) {\r\n const school: AttendanceSchools = {\r\n SiteId: att.SiteId,\r\n SiteName: att.SiteName,\r\n PrimarySchool: att.PrimarySchool\r\n };\r\n this.excessiveAttendanceSchools.push(school);\r\n }\r\n }\r\n }\r\n\r\n getExcessiveAttendanceSchoolsViewOptions() {\r\n if (this.studentExcessiveAttendance.filter(o => o.TrackingType == 0).length > 0) {\r\n const option: any = {\r\n Value: 0,\r\n Description: 'Days'\r\n };\r\n this.viewExcessiveAttendanceOptions.push(option);\r\n }\r\n if (this.studentExcessiveAttendance.filter(o => o.TrackingType == 1).length > 0) {\r\n const option: any = {\r\n Value: 1,\r\n Description: 'Individual Period'\r\n };\r\n this.viewExcessiveAttendanceOptions.push(option);\r\n }\r\n if (this.studentExcessiveAttendance.filter(o => o.TrackingType == 2).length > 0) {\r\n const option: any = {\r\n Value: 2,\r\n Description: 'Total Period'\r\n };\r\n this.viewExcessiveAttendanceOptions.push(option);\r\n }\r\n\r\n if (this.viewExcessiveAttendanceOptions.length > 0) {\r\n this.selectedExcessiveAttendanceOption = this.viewExcessiveAttendanceOptions[0].Value;\r\n this.selectedViewOptionChange();\r\n }\r\n }\r\n\r\n getExcessiveAttendanceDataSource(siteId: number): TylerMatTableDataSource {\r\n let excessiveAttendance: ExcessiveAttendance[];\r\n excessiveAttendance = this.studentExcessiveAttendance.filter(o => o.SiteId == siteId && o.TrackingType == this.selectedExcessiveAttendanceOption && o.AttendanceStepsDefinitionId == this.selectedTrackingGroupOption);\r\n this.excessiveAttendanceAngularMatData.data = excessiveAttendance;\r\n this.excessiveAttendanceAngularMatData.sort = this.sort;\r\n if (this.excessiveAttendanceAngularMatData.data.length > 0) {\r\n this.isBusy = true;\r\n }\r\n else { this.isBusy = false; }\r\n return this.excessiveAttendanceAngularMatData;\r\n }\r\n\r\n getStudentAttendanceInfo() {\r\n if (this.selected == 'By Date') {\r\n this.studentService.getStudentAttendance(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id, this.showAllCodes).subscribe(data => {\r\n this.attendance = data;\r\n });\r\n }\r\n else {\r\n this.studentService.getStudentSchedule(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id, parseInt(this.selected, 10), true, false, false, -1, true, false, false, this.showAllCodes).subscribe(data => {\r\n this.courseSchedules = data;\r\n });\r\n }\r\n }\r\n\r\n}\r\n","

\r\n Attendance Code Legend\r\n

\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Code{{element.Code}}Description{{element.Description}}
\r\n
\r\n A red asterisk (*) identifies codes that will not count as an absences or\r\n tardy on the report card, but indicate the student was not in class.\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'code-legend',\r\n templateUrl: './code-legend.component.html'\r\n})\r\nexport class CodeLegendComponent implements OnInit {\r\n\r\n @Input() title: any;\r\n @Input() attendanceCodes: any;\r\n @Input() data: any;\r\n @Input() callbyAttendanceComponet = false;\r\n displayedColumns: string[] = ['code', 'description'];\r\n\r\n constructor(private dialogRef: MatDialogRef, private dialog: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n}\r\n","
No absences exist for the student.
\r\n\r\n
0\">\r\n \r\n\r\n \r\n \r\n Date\r\n \r\n \r\n \r\n {{attend.Date|date:'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n Absent Count\r\n \r\n \r\n \r\n {{attend.AbsentCount}}\r\n \r\n \r\n\r\n \r\n \r\n Code\r\n \r\n \r\n \r\n {{attend.Code}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\n\r\n@AutoUnsubscribe({includeArrays: true})\r\n@Component({\r\n selector: 'app-daily-attendance',\r\n templateUrl: './daily-attendance.component.html'\r\n})\r\nexport class DailyAttendanceComponent implements OnInit, OnDestroy {\r\n\r\n subscriptions: Subscription[] = [];\r\n dataSource: TylerMatTableDataSource;\r\n columnsToDisplay: string[] = ['Date', 'Absent Count', 'Code'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n constructor(\r\n private studentService: StudentService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.getAttendance();\r\n this.subscriptions.push(this.studentService.selectedStudentStream$.subscribe(student => {\r\n this.getAttendance();\r\n }));\r\n\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n getAttendance() {\r\n this.studentService.getStudentDailyAttendance(this.studentService.studentEnrollment.SiteYearId, this.studentService.selectedStudent.Id).subscribe((dailyAttendance) => {\r\n this.dataSource = new TylerMatTableDataSource()\r\n this.dataSource.data = dailyAttendance;\r\n this.dataSource.sort = this.sort;\r\n });\r\n }\r\n\r\n}","\r\n
\r\n \r\n
\r\n
\r\n
\r\n 0\" [tabNames]=\"tabNames\" [setIndex]=\"setIndex\"\r\n (selectionsChange)=\"selections = $event\" (selectionsChangeIndex)=\"selectionChange($event)\">\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Days\r\n {{(attendanceDaysAndHoursInfo.PossibleDays -\r\n attendanceDaysAndHoursInfo.AbsenceDays)|number:'2.2-2'}}of\r\n \r\n {{attendanceDaysAndHoursInfo.PossibleDays|number:'2.2-2'}}(\r\n {{(((attendanceDaysAndHoursInfo.PossibleDays -\r\n attendanceDaysAndHoursInfo.AbsenceDays)/(attendanceDaysAndHoursInfo.PossibleDays > 0 ?\r\n attendanceDaysAndHoursInfo.PossibleDays : 1))*100)|number:'2.2-2'}}%)
Hours\r\n {{((attendanceDaysAndHoursInfo.PossibleMinutes -\r\n attendanceDaysAndHoursInfo.AbsenceMinutes)/60)|number:'2.2-2'}}of\r\n \r\n {{attendanceDaysAndHoursInfo.PossibleMinutes/60|number:'2.2-2'}}(\r\n {{(((attendanceDaysAndHoursInfo.PossibleMinutes -\r\n attendanceDaysAndHoursInfo.AbsenceMinutes)/(attendanceDaysAndHoursInfo.PossibleMinutes > 0\r\n ? attendanceDaysAndHoursInfo.PossibleMinutes : 1))*100)|number:'2.2-2'}}%)
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n By Teams\r\n By Date (Entire Year)\r\n By Student Schedule (Today Only)\r\n By Student Schedule (This Term)\r\n By Student Schedule (All)\r\n \r\n \r\n
\r\n
\r\n
\r\n No absences or tardies exist for the student.\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n No absences or tardies exist for the student.\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n No absences or tardies exist for the student.\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\n// -------Angular Material------------------------------------\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { TabsComponent } from '../../shared-components/controls/tabs/tabs.component';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { Attendance, AttendanceSchools, ExcessiveAttendance, SpecialAdditionalAttendance, StudentTeamAttendance } from '../../shared-components/student/attendance.model';\r\nimport { CourseSchedule } from '../../shared-components/student/course-schedule.model';\r\nimport { Enrollment } from '../../shared-components/student/enrollment.model';\r\nimport { Student } from '../../shared-components/student/student.model';\r\n// ---------Shared--------------------------------------------\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { ByDateTableComponent } from './by-date-table/by-date-table.component';\r\nimport { ByScheduleTableComponent } from './by-schedule-table/by-schedule-table.component';\r\nimport { BySpecialAdditionalComponent } from './by-special-additional/by-special-additional.component';\r\nimport { ByTeamTableComponent } from './by-team-table/by-team-table.component';\r\nimport { ByViewExcessiveComponent } from './by-view-excessive/by-view-excessive.component';\r\nimport { CodeLegendComponent } from './code-legend/code-legend.component';\r\nimport { SelfCheckInOutHistoryDialogComponent } from '../../shared-components/self-check-in-out-history-dialog/self-check-in-out-history-dialog.component';\r\nimport { StudentSummaryService } from '../student-summary/student-summary.service';\r\nimport { ViewAbsentNoticeHistoryDialogComponent } from '../../shared-components/view-absent-notice-history-dialog/view-absent-notice-history-dialog.component';\r\nimport { CheckInOutViewHistoryDialogComponent } from '../../shared-components/check-in-out-view-history-dialog/check-in-out-view-history-dialog.component';\r\n\r\n@Component({\r\n selector: 'attendance',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './attendance.component.html',\r\n animations: [detailExpand],\r\n})\r\nexport class AttendanceComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // ------------Element references--------------------------------\r\n @ViewChild('appHeader') appHeaderRef: ElementRef;\r\n @ViewChild('studentHeader', { static: true }) studentHeaderRef: ElementRef;\r\n @ViewChild('tabs', { static: true }) tabsRef: ElementRef;\r\n @ViewChild('dropdown') dropdownRef: ElementRef;\r\n @ViewChild('footer', { static: true }) footerRef: ElementRef;\r\n appHeaderHeight = 0;\r\n studentHeaderHeight = 0;\r\n tabsHeight = 0;\r\n dropDownHeight = 0;\r\n footerHeight = 0;\r\n footerWidth = 0;\r\n // ------------Student Attendance Data---------------------------\r\n selectedStudentSubscription: Subscription;\r\n student360YearSubscription: Subscription;\r\n selectedStudent: Student;\r\n studentEnrollment: Enrollment;\r\n attendance: Attendance[];\r\n courseSchedules: CourseSchedule[];\r\n teamAttendance: StudentTeamAttendance[];\r\n // ------------Selection/Flags-----------------------------------\r\n AttendanceByDate = true;\r\n showAllCodes = false;\r\n selected = 'By Date';\r\n\r\n viewDailyAttendance = false;\r\n dailyAttendanceEnabled = false;\r\n\r\n V10: boolean;\r\n // -----------Grid functionality---------------------------------\r\n gridHeight = 0;\r\n // ------------Modal window--------------------------------------\r\n legendDialogRef: MatDialogRef;\r\n // ----------Angular Material------------------------------------\r\n excessiveAttendanceAngularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n initialSelection = [];\r\n allowMultiSelect = true;\r\n selection = new SelectionModel(this.allowMultiSelect, this.initialSelection);\r\n @ViewChild(ByDateTableComponent) byDateTableRef: ByDateTableComponent;\r\n @ViewChild(ByScheduleTableComponent) byScheduleTableRef: ByScheduleTableComponent;\r\n @ViewChild(ByViewExcessiveComponent) byViewExcessiveTableRef: ByViewExcessiveComponent;\r\n @ViewChild(BySpecialAdditionalComponent) BySpecialAdditionalRef: BySpecialAdditionalComponent;\r\n @ViewChild(ByTeamTableComponent) byTeamTableRef: ByTeamTableComponent;\r\n // @ViewChildren(FilterComponent) filterRef: QueryList;\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n clearFilterEvent = new EventEmitter();\r\n // -----------V9--------------------------------------------------\r\n tabNames: string[] = [];\r\n selectionIndex = 0;\r\n studentExcessiveAttendance: ExcessiveAttendance[] = [];\r\n excessiveAttendanceSchools: AttendanceSchools[] = [];\r\n studentSpecialAttendance: SpecialAdditionalAttendance[] = [];\r\n specialAdditionalAttendanceSchools: AttendanceSchools[] = [];\r\n studentTeamAttendance: StudentTeamAttendance[] = [];\r\n columnsToDisplayExcessiveAttendance = ['Steps', 'Points', 'AppealedStatus'];\r\n viewExcessiveAttendanceOptions: any[] = [];\r\n viewTrackingGroupsOptions: any[] = [];\r\n selectedExcessiveAttendanceOption = 0;\r\n selectedTrackingGroupOption = 0;\r\n attendanceDaysAndHoursInfo: any = [];\r\n setIndex = new EventEmitter();\r\n isStudentTeamExists = false;\r\n calendarUseAttendanceTypes = false;\r\n\r\n showSelfCheckButton = false;\r\n showAbsentNoticeButton = false;\r\n\r\n @ViewChild(TabsComponent) tabs: TabsComponent;\r\n // --------------Lifecycle-------------------------------------\r\n constructor(\r\n private studentService: StudentService,\r\n private sharedService: SharedService,\r\n private dialog: MatDialog,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n public changeDetector: ChangeDetectorRef,\r\n public route: ActivatedRoute,\r\n private studentSummaryService: StudentSummaryService\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n\r\n this.student360YearSubscription = this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id, true);\r\n });\r\n this.V10 = this.userService.currentUser.V10;\r\n this.dailyAttendanceEnabled = this.loginService.LoginSettings.ViewDailyAttendance;\r\n this.viewDailyAttendance = this.loginService.LoginSettings.ViewDailyAttendance;\r\n\r\n if (this.V10 == false) {\r\n this.tabNames.push('REGULAR ABSENCES');\r\n this.tabNames.push('EXCESSIVE ABSENCES');\r\n this.tabNames.push('SPECIAL ADDITIONAL');\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.studentService.selected != undefined && this.studentService.selected != null) {\r\n this.selected = this.studentService.selected;\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id, true);\r\n this.studentService.selected = null;\r\n }\r\n else {\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id, false);\r\n }\r\n\r\n if (this.userService.currentUser.V10) {\r\n this.studentService.getStudentTeams(this.selectedStudent.Id).subscribe(result => {\r\n this.isStudentTeamExists = result;\r\n if (this.isStudentTeamExists == true) {\r\n this.selected = 'By Team';\r\n this.getStudentAttendanceInfo();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.studentHeaderRef != undefined) {\r\n this.studentHeaderHeight = this.studentHeaderRef.nativeElement.offsetHeight;\r\n }\r\n if (this.tabsRef != undefined) {\r\n this.tabsHeight = this.tabsRef.nativeElement.offsetHeight;\r\n }\r\n if (this.dropdownRef != undefined) {\r\n this.dropDownHeight = this.dropdownRef.nativeElement.offsetHeight;\r\n }\r\n if (this.footerRef != undefined) {\r\n this.footerHeight = this.footerRef.nativeElement.offsetHeight;\r\n this.footerWidth = this.footerRef.nativeElement.width;\r\n }\r\n this.studentService.selectionIndex = 0;\r\n this.onResize();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.selectedStudentSubscription.unsubscribe();\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n // ------------Student Attendance Data---------------------------\r\n loadStudentInfo(studentId: number, maintainSelected = false) {\r\n this.clearStudentData();\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n if (!this.V10) {\r\n this.getCheckInOutButtnSettings(this.studentEnrollment.StudentId, this.studentEnrollment.AcademicYearID);\r\n }\r\n if (!this.V10 && !maintainSelected) {\r\n this.selected = 'By Date';\r\n setTimeout(() => {\r\n if (this.studentService.selectionIndex == 0) {\r\n this.selectionIndex = 0;\r\n }\r\n else {\r\n this.selectionIndex = this.studentService.selectionIndex;\r\n }\r\n this.setIndex.emit(this.selectionIndex);\r\n this.selectionChange(this.selectionIndex);\r\n this.tabs.selectedIndexChange(this.selectionIndex);\r\n }, 50);\r\n }\r\n\r\n this.getAttendanceDaysAndHoursInfo();\r\n this.getStudentAttendanceInfo();\r\n this.getSpecialAttendance();\r\n this.getCalendarUseAttendanceTypes();\r\n }\r\n\r\n getStudentAttendanceInfo() {\r\n if (this.selected == 'By Date') {\r\n this.attendance = undefined;\r\n this.studentService.getStudentAttendance(this.selectedStudent.Id, this.yearService.student360Year.Id, this.showAllCodes).subscribe(data => {\r\n this.attendance = [];\r\n data.forEach(element => {\r\n this.attendance.push(element);\r\n });\r\n });\r\n }\r\n else if (this.selected == 'By Team') {\r\n this.studentTeamAttendance = undefined;\r\n this.studentService.getStudentTeamAttendanceAbsentTardiesCount(this.selectedStudent.Id, this.yearService.defaultYear.SchoolID, this.yearService.student360Year.Id).subscribe(data => {\r\n this.studentTeamAttendance = [];\r\n data.forEach(element => {\r\n this.studentTeamAttendance.push(element);\r\n });\r\n });\r\n }\r\n else {\r\n this.courseSchedules = undefined;\r\n this.studentService.getStudentSchedule(this.selectedStudent.Id, this.yearService.student360Year.Id, parseInt(this.selected, 10), true, false, false, -1, true, false, false, this.showAllCodes).subscribe(data => {\r\n this.courseSchedules = [];\r\n data.forEach(element => {\r\n this.courseSchedules.push(element);\r\n });\r\n });\r\n }\r\n }\r\n\r\n getSpecialAttendance() {\r\n this.studentService.getSpecialAttendance(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.studentSpecialAttendance = data;\r\n });\r\n }\r\n\r\n getCalendarUseAttendanceTypes() {\r\n if (!this.V10) {\r\n this.sharedService.getCalendarUseAttendanceTypes(0, this.yearService.student360Year.Id, this.selectedStudent.Id).subscribe(result => {\r\n this.calendarUseAttendanceTypes = result;\r\n });\r\n }\r\n }\r\n\r\n clearStudentData() {\r\n this.attendance = undefined;\r\n this.studentExcessiveAttendance = [];\r\n this.studentSpecialAttendance = [];\r\n this.selectionIndex = 0;\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n setTimeout(() => {\r\n this.gridHeight = window.innerHeight - 67 - 30 - this.studentHeaderHeight - this.tabsHeight - this.dropDownHeight - this.footerHeight;\r\n }, 0);\r\n }\r\n\r\n // ------------Modal window-----------------------\r\n CodeLegendClick() {\r\n const codes: any[] = [];\r\n\r\n if (this.selectionIndex == 0) {\r\n if (this.selected == 'By Date') {\r\n this.attendance.forEach(function (attend) {\r\n attend.AttendanceDetails.forEach(function (details) {\r\n if (codes.map(function (e) { return e.Code; }).indexOf(details.AttendanceCode) == -1) {\r\n codes.push({ 'Code': details.AttendanceCode, 'Description': details.AttendanceCodeDescription });\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n this.courseSchedules.forEach(function (schedule) {\r\n schedule.AttendanceDetails.forEach(function (details) {\r\n if (codes.map(function (e) { return e.Code; }).indexOf(details.AttendanceCode) == -1) {\r\n codes.push({ 'Code': details.AttendanceCode, 'Description': details.AttendanceCodeDescription });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n else if (this.selectionIndex == 2) {\r\n this.studentSpecialAttendance.forEach(function (attend) {\r\n if (codes.map(function (e) { return e.Code; }).indexOf(attend.ReasonCode) == -1) {\r\n codes.push({ 'Code': attend.ReasonCode, 'Description': attend.ReasonDescription });\r\n }\r\n });\r\n }\r\n\r\n this.legendDialogRef = this.dialog.open(CodeLegendComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '450px',\r\n disableClose: true\r\n });\r\n\r\n this.legendDialogRef.componentInstance.attendanceCodes = codes.sort(this.codeSort);\r\n this.legendDialogRef.componentInstance.callbyAttendanceComponet = this.V10 == true ? false : true;\r\n this.legendDialogRef.afterClosed().subscribe(result => { });\r\n }\r\n\r\n codeSort(a, b) {\r\n if (a.Code < b.Code) {\r\n return -1;\r\n }\r\n if (a.Code > b.Code) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n clearFilter() {\r\n if (this.selected == 'By Date' && this.byDateTableRef != undefined) {\r\n this.byDateTableRef.angularMatData.removeAllFilters();\r\n }\r\n\r\n if (this.selected != 'By Date' && this.byDateTableRef != undefined) {\r\n this.byScheduleTableRef.angularMatData.removeAllFilters();\r\n }\r\n\r\n if (this.selected == 'By Team' && this.byTeamTableRef != undefined) {\r\n this.byTeamTableRef.angularMatData.removeAllFilters();\r\n }\r\n\r\n if (this.byViewExcessiveTableRef != undefined) {\r\n this.byViewExcessiveTableRef.excessiveAttendanceAngularMatData.removeAllFilters();\r\n }\r\n if (this.BySpecialAdditionalRef != undefined) {\r\n this.BySpecialAdditionalRef.specialAdditionalAttendanceAngularMatData.removeAllFilters();\r\n }\r\n }\r\n\r\n isFiltered(): boolean {\r\n let filtered: boolean;\r\n\r\n if (this.byDateTableRef != undefined) {\r\n if (this.byDateTableRef.angularMatData.isFiltered() && this.selected == 'By Date') {\r\n filtered = true;\r\n }\r\n }\r\n\r\n if (this.byScheduleTableRef != undefined) {\r\n if (this.byScheduleTableRef.angularMatData.isFiltered() && this.selected != 'By Date') {\r\n filtered = true;\r\n }\r\n }\r\n\r\n if (this.byTeamTableRef != undefined) {\r\n if (this.byTeamTableRef.angularMatData.isFiltered() && this.selected == 'By Team') {\r\n filtered = true;\r\n }\r\n }\r\n\r\n if (this.byViewExcessiveTableRef != undefined) {\r\n if (this.byViewExcessiveTableRef.excessiveAttendanceAngularMatData.isFiltered()) {\r\n filtered = true;\r\n }\r\n }\r\n if (this.BySpecialAdditionalRef != undefined) {\r\n if (this.BySpecialAdditionalRef.specialAdditionalAttendanceAngularMatData.isFiltered()) {\r\n filtered = true;\r\n }\r\n }\r\n return filtered;\r\n }\r\n\r\n // -------------V9-------------------------------------------------------\r\n selectionChange(selectionIndex: number) {\r\n this.selectionIndex = selectionIndex;\r\n this.studentService.selectionIndex = selectionIndex;\r\n this.onResize();\r\n }\r\n\r\n selectedExcessiveAttendanceChange(event) {\r\n this.selectedExcessiveAttendanceOption = event;\r\n }\r\n\r\n getAttendanceDaysAndHoursInfo() {\r\n this.studentService.getAttendanceDaysAndHoursInfo(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.attendanceDaysAndHoursInfo = data;\r\n });\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n if (this.selectionIndex == 0) {\r\n if (this.selected != 'By Date' && this.selected != 'By Team') {\r\n this.byScheduleTableRef.expandAll(expand);\r\n }\r\n else if (this.selected == 'By Date') {\r\n this.byDateTableRef.expandAll(expand);\r\n } else {\r\n this.byTeamTableRef.expandAll(expand);\r\n }\r\n }\r\n else if (this.selectionIndex == 1) {\r\n this.byViewExcessiveTableRef.expandAll(expand);\r\n }\r\n\r\n }\r\n\r\n toggleView() {\r\n this.viewDailyAttendance = !this.viewDailyAttendance;\r\n }\r\n\r\n getCheckInOutButtnSettings(studentId: number, yearId: number) {\r\n this.studentSummaryService.getCheckInOutButtonSettings(studentId, yearId).subscribe(settings => {\r\n if (settings.AllowParentEnterCheckInOut || settings.AllowParentEnterCheckInOutMobile || settings.AllowStudentEnterCheckInOut || settings.AllowStudentEnterCheckInOutMobile) {\r\n this.showSelfCheckButton = true;\r\n }\r\n\r\n if (settings.AllowParentEnterAbsentNotice || settings.AllowStudentEnterAbsentNotice) {\r\n this.showAbsentNoticeButton = true;\r\n }\r\n });\r\n }\r\n\r\n viewSelfCheckHistoryClick() {\r\n const dialogBox = this.dialog.open(SelfCheckInOutHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '60vw',\r\n maxWidth: '120vw',\r\n minHeight: '80vh',\r\n data: {\r\n studentId: this.selectedStudent.Id,\r\n selectedStudent: this.selectedStudent\r\n }\r\n });\r\n }\r\n\r\n viewAbsentNoticeClick() {\r\n const dialogBox = this.dialog.open(ViewAbsentNoticeHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '60vw',\r\n maxWidth: '60vw',\r\n minHeight: '80vh',\r\n data: {\r\n studentId: this.selectedStudent.Id\r\n }\r\n });\r\n }\r\n\r\n viewHistoryClick() {\r\n const dialogBox = this.dialog.open(CheckInOutViewHistoryDialogComponent, {\r\n disableClose: true,\r\n minWidth: '80vw',\r\n maxWidth: '80vw',\r\n minHeight: '80vh',\r\n data: {\r\n selectedStudent: this.selectedStudent,\r\n schoolId: this.studentEnrollment.SchoolId\r\n }\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from './../../shared-components/System';\r\nimport { Awards } from './awards.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AwardsService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n // getStudentAwards\r\n getStudentAwards(studentId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentAwards' + queryString);\r\n }\r\n}\r\n","\r\n\t
\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t
No Awards data exists for student.
\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\t\r\n\t\t\t\t\t\tAward\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{award.AwardName}}\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\tDetails\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{award.AwardDetails}}\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\tDate\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{award.AwardDate | date:'MM/dd/yy'}}\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\tStaff Name\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{award.StaffName}}\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\tComment\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{award.Comment}}\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\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","import { Component, OnInit, OnDestroy, ViewChild, ChangeDetectorRef, EventEmitter } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { AwardsService } from './awards.service';\r\nimport { Awards } from './awards.model';\r\n\r\n// -------Angular Material------------------------------------\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../shared-components/directives/aria.directive';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-awards',\r\n templateUrl: './awards.component.html',\r\n styles: []\r\n})\r\nexport class AwardsComponent implements OnInit, OnDestroy {\r\n\r\n selectedStudentSubscription: Subscription;\r\n student360YearSubscription: Subscription;\r\n selectedStudent: Student;\r\n awards: Awards[] = [];\r\n\r\n // ------------Selection/Flags-----------------------------------\r\n isBusy = false;\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n columnsToDisplay = ['AwardName', 'AwardDetails', 'AwardDate', 'StaffName', 'Comment'];\r\n clearFilterEvent = new EventEmitter();\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private awardsService: AwardsService,\r\n public changeDetector: ChangeDetectorRef\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.awards);\r\n\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n studentYear => {\r\n this.getStudentAwards();\r\n }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n // ------------ Awards Data ---------------------------\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) {\r\n return student.Id == studentId;\r\n })[0];\r\n\r\n this.getStudentAwards();\r\n }\r\n\r\n getStudentAwards() {\r\n this.isBusy = true;\r\n this.angularMatData.data = [];\r\n\r\n this.awardsService.getStudentAwards(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.awards = data;\r\n this.loadStudentAwards();\r\n });\r\n }\r\n\r\n loadStudentAwards() {\r\n this.angularMatData.data = this.awards;\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n this.isBusy = false;\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getAriaRow(row: Awards): string {\r\n const colList: string[] = ['Award', 'Details', 'Date', 'StaffName', 'Comment'];\r\n const dataList: string[] = [\r\n row.AwardName,\r\n row.AwardDetails,\r\n row.AwardDate.toString(),\r\n row.StaffName,\r\n row.Comment\r\n ];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}","
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

{{month | translate}} {{year}}

\r\n

{{ viewDate | calendarDate:(view + 'ViewTitle'):locale }}

\r\n

{{weekday | translate}}, {{month | translate}} {{day}}, {{year}}

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n","import {Component, Input, Output, EventEmitter, OnInit, OnChanges} from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-calendar-header',\r\n templateUrl: './calendar-header.component.html',\r\n})\r\n\r\nexport class CalendarHeaderComponent implements OnInit, OnChanges {\r\n @Input() view: string;\r\n @Input() viewDate: Date;\r\n @Input() locale: string = 'en';\r\n @Output() viewChange: EventEmitter = new EventEmitter();\r\n @Output() viewDateChange: EventEmitter = new EventEmitter();\r\n weekday: string;\r\n month: string;\r\n day: string;\r\n year: string;\r\n\r\n ngOnInit(): void {\r\n this.weekday = moment(this.viewDate).format('dddd');\r\n this.month = moment(this.viewDate).format('MMMM');\r\n this.day = moment(this.viewDate).format('D');\r\n this.year = moment(this.viewDate).format('YYYY');\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.weekday = moment(this.viewDate).format('dddd');\r\n this.month = moment(this.viewDate).format('MMMM');\r\n this.day = moment(this.viewDate).format('D');\r\n this.year = moment(this.viewDate).format('YYYY');\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n {{event.title}}\r\n
\r\n
\r\n {{event.start | date:'shortTime' }} - {{event.end | date:'shortTime'}}   Room\r\n {{event.meta.event.Room}}\r\n   {{event.meta.event.TeacherName}}\r\n
\r\n
\r\n Attendance {{attendanceStatus()}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\" style=\"height: 30px; color: #757575;\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n
Assignments Due {{eventDetails.Date | date:'MM/dd/yy'}}CategoryPossible PointsAssigned
{{assignment.Assignment}}{{assignment.Category}}{{assignment.Possible}}{{assignedDate(assignment.AssignedDate)}}
Details

Attachments

{{attachment.FileName}}\r\n ({{attachment.OriginalFileName}}\r\n ) {{attachmentDescription(attachment)}}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Details\r\n
\r\n
\r\n Location {{eventDetails.Location}}\r\n
\r\n
\r\n

{{eventDetails.EventDetails}}

\r\n
\r\n
\r\n

No description for this event

\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { System } from '../../../shared-components/System';\r\nimport { Router } from '@angular/router';\r\nimport { SendEmailService } from '../../../shared-modules/send-email/send-email.service';\r\nimport { CourseDescriptionDialogComponent } from '../../../shared-components/course-description-dialog/course-description-dialog.component';\r\nimport { ProfileViewerDialogComponent } from '../../../shared-components/profile-viewer-dialog/profile-viewer-dialog.component';\r\nimport { GradebookV9Service } from '../../../classroom360/gradebook/v9/gradebook-v9.service';\r\nimport * as moment from 'moment';\r\nimport { AssignmentService } from '../../assignment/assignment.service';\r\nimport { CalendarService } from '../calendar.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-calendar-event-modal',\r\n templateUrl: './calendar-event-modal.component.html',\r\n styleUrls: ['./calendar-event-modal.component.css']\r\n})\r\nexport class CalendarEventModalComponent implements OnInit {\r\n isV10: boolean;\r\n event: any;\r\n assignments: any[];\r\n attendanceDetails: any;\r\n eventType: any;\r\n eventDetails: any;\r\n courseInfo: any;\r\n dataBucketId: number;\r\n constructor(\r\n private gradebookV9Service: GradebookV9Service,\r\n private assignmentService: AssignmentService,\r\n private sendEmailService: SendEmailService,\r\n private calendarService: CalendarService,\r\n private router: Router,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) private data: any\r\n ) {\r\n this.event = data;\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n this.eventType = this.event.meta.eventType;\r\n this.eventDetails = this.event.meta.event;\r\n this.assignments = this.event.meta.event.Assignments;\r\n this.courseInfo = this.event.meta.courseInfo;\r\n this.dataBucketId = this.event.meta.event.DataBucket_ID;\r\n this.getTerms();\r\n if (this.isV10) {\r\n this.courseInfo.SiteSectionId = this.courseInfo.Id;\r\n } else {\r\n this.getV9Attachments();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.eventType == 'dailyScheduleEvent') {\r\n this.studentService.getStudentAttendance(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id, true).subscribe(data => {\r\n // pull out the date of interest\r\n const attendanceEvent = data.find(a => a.AttendanceDate == this.eventDetails.Date);\r\n if (!!attendanceEvent) {\r\n this.attendanceDetails = attendanceEvent.AttendanceDetails.find(a => a.SiteSectionId == this.event.id);\r\n }\r\n });\r\n }\r\n }\r\n\r\n getTerms() {\r\n if (this.dataBucketId != undefined) {\r\n this.calendarService.getTermsForCourses(this.dataBucketId, this.isV10 ? this.yearService.student360Year.Id : this.studentService.studentEnrollment.SiteYearId).subscribe(response => {\r\n if (response) {\r\n this.courseInfo.CourseTerms = response;\r\n }\r\n });\r\n }\r\n }\r\n\r\n getV9Attachments() {\r\n this.assignments.forEach(assignment => {\r\n this.gradebookV9Service.getGradebookV9Attachments(assignment.AssignmentId).subscribe(results => {\r\n assignment.Attachments = results;\r\n assignment.Attachment = results.length;\r\n });\r\n });\r\n }\r\n\r\n attendanceStatus() {\r\n if (this.attendanceDetails == undefined || this.attendanceDetails == null) {\r\n return 'Present';\r\n } else {\r\n if (this.attendanceDetails.AttendanceCode == '') {\r\n return 'Present';\r\n } else {\r\n return (this.attendanceDetails.AttendanceCode + ' - ' + this.attendanceDetails.AttendanceCodeDescription);\r\n }\r\n }\r\n }\r\n\r\n attachmentDescription(attachment) {\r\n if (!!attachment.Description) {\r\n return ('- ' + attachment.Description);\r\n }\r\n }\r\n\r\n attachmentClick(attachment) {\r\n System.saveFile(attachment.DocumentBase64, attachment.DocumentType, attachment.FileName);\r\n }\r\n\r\n route(route: string) {\r\n // Route to the appropriate location then close the modal\r\n switch (route) {\r\n case 'Assignments':\r\n this.assignmentService.selectedCourse = this.courseInfo;\r\n this.assignmentService.selectedSectionId = this.courseInfo.SiteSectionId;\r\n this.assignmentService.selectedGP = undefined;\r\n this.assignmentService.preventTabSwitch = true;\r\n if (!this.userService.studentInformationView)\r\n this.router.navigateByUrl('/student360/assignments');\r\n else\r\n this.userService.updateStudentViewRoute('/student360/assignments');\r\n this.dialogRef.close();\r\n break;\r\n case 'Attendance':\r\n if (!this.userService.studentInformationView)\r\n this.router.navigateByUrl('/student360/attendance');\r\n else\r\n this.userService.updateStudentViewRoute('/student360/attendance');\r\n this.dialogRef.close();\r\n break;\r\n case 'Grades':\r\n if (!this.userService.studentInformationView)\r\n this.router.navigateByUrl('/student360/reportCardGrades');\r\n else\r\n this.userService.updateStudentViewRoute('/student360/reportCardGrades');\r\n this.dialogRef.close();\r\n break;\r\n case 'Email Teacher':\r\n this.sendEmailService.teacherName = this.courseInfo.TeacherName;\r\n this.sendEmailService.teacherEmailAddress = this.courseInfo.TeacherEmail;\r\n if (!this.userService.studentInformationView)\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n else\r\n this.userService.updateStudentViewRoute('/student360/sendEmail');\r\n this.dialogRef.close();\r\n break;\r\n case 'Course Description':\r\n this.dialog.open(CourseDescriptionDialogComponent, {\r\n data: {\r\n course: this.courseInfo.Course,\r\n courseSection: this.courseInfo.SubjectCode + '-' + this.courseInfo.Section,\r\n teacherName: this.courseInfo.TeacherName,\r\n schoolName: this.courseInfo.SchoolName,\r\n curriculum: this.courseInfo.Curriculum,\r\n description: this.courseInfo.Description\r\n },\r\n disableClose: true\r\n });\r\n break;\r\n case 'Class Information':\r\n this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n courseSSEC_ID: this.courseInfo.Id,\r\n courseName: this.courseInfo.Course,\r\n courseSection: this.courseInfo.SubjectCode + '-' + this.courseInfo.Section,\r\n teacherName: this.courseInfo.TeacherName,\r\n school: this.courseInfo.SchoolName,\r\n profiles: this.courseInfo.CourseProfile,\r\n showTeacherProfileLink: false\r\n },\r\n disableClose: true\r\n });\r\n break;\r\n case 'Teacher Profile':\r\n this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n teacherId: this.courseInfo.TeacherMemId,\r\n teacherName: this.courseInfo.TeacherName,\r\n school: this.courseInfo.SchoolName,\r\n profiles: this.courseInfo.TeacherProfile\r\n },\r\n disableClose: true\r\n });\r\n break;\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n assignedDate(date: any) {\r\n if (date == '0001-01-01T00:00:00') {\r\n return '';\r\n } else {\r\n // Format the date and return it\r\n return moment(date, 'YYYY-MM-DDThh:mm:ss').format('MM/DD/YY');\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'districtEvent'\r\n})\r\nexport class DistrictEventPipe implements PipeTransform {\r\n\r\n transform(events: any[], args?: any): any {\r\n return events.filter(event => event.meta.eventType == 'districtEvent');\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n {{ day.date | calendarDate:'monthViewDayNumber':locale }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{event.title}}
\r\n
{{getTimeString(event)}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
{{dayEvent.event.start| date: 'shortTime'}} -\r\n {{dayEvent.event.end| date: 'shortTime'}}
\r\n
{{dayEvent.event.title}}
\r\n
\r\n
\r\n 0\" style=\"height: 15px; margin-top: 5px; margin-right: 5px;\"\r\n src=\"./assets/images/menumyclasses.png\" alt=\"\" />\r\n \"\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{getTimeString(dayEvent.event)}}\r\n
\r\n
\r\n {{dayEvent.event.title}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{dayEvent.event.title}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
{{weekEvent.event.start| date: 'shortTime'}} -\r\n {{weekEvent.event.end| date: 'shortTime'}}
\r\n
{{weekEvent.event.title}}
\r\n
\r\n
\r\n 0\" style=\"height: 15px; margin-top: 5px; margin-right: 5px;\"\r\n src=\"./assets/images/menumyclasses.png\" alt=\"\" />\r\n \"\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{getTimeString(weekEvent.event)}}\r\n
\r\n
\r\n {{weekEvent.event.title}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{weekEvent.event.title}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{ segment.date | calendarDate: 'dayViewHour':locale }}\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{ segment.date | calendarDate: 'weekViewHour':locale }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
","import { Classroom360Service } from './../../classroom360/classroom360.service';\r\nimport { Portal } from './../../shared-components/portal.model';\r\nimport { Component, OnInit, ChangeDetectionStrategy, ViewChild, OnDestroy } from '@angular/core';\r\nimport { CalendarService } from './calendar.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\nimport { CalendarDayViewComponent, CalendarEvent } from 'angular-calendar';\r\nimport { Subject } from 'rxjs';\r\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { CalendarEventModalComponent } from './calendar-event-modal/calendar-event-modal.component';\r\nimport { Student360Service } from '../student360.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { SharedGradebookService } from '../../classroom360/gradebook/shared/shared-gradebook.service';\r\n\r\n@Component({\r\n selector: 'app-calendar',\r\n templateUrl: './calendar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./calendar.component.css']\r\n})\r\nexport class CalendarComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(CalendarDayViewComponent) dayView;\r\n @ViewChild(CalendarHeaderComponent, { static: true }) calendarHeader;\r\n calendarEventDialogRef: MatDialogRef;\r\n view = 'day';\r\n viewDate: Date = new Date(); // Controls the view of the calendar\r\n events: CalendarEvent[] = [];\r\n refresh: Subject = new Subject();\r\n selectedDate: Date;\r\n currentDate: Date;\r\n attendanceCodes: any[];\r\n selectedMonth: string;\r\n selectedDay: number;\r\n selectedYear: number;\r\n dateIndex: number;\r\n selectedView: string;\r\n courses: any;\r\n studentId: number;\r\n studentCalendar: any[];\r\n scalePDF = 0.40;\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private student360Service: Student360Service,\r\n private calendarService: CalendarService,\r\n private dialog: MatDialog,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private router: Router, private userService: UserService,\r\n private loginService: LoginService,\r\n private sharedGradebookService: SharedGradebookService,\r\n private classroom360Service: Classroom360Service\r\n ) {\r\n if (!!this.student360Service.lastSelectedCalendarView) {\r\n this.selectedDate = this.student360Service.lastSelectedCalendarDate;\r\n } else {\r\n this.selectedDate = new Date();\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n const selectedView = params['selectedView'];\r\n const selectedDate = params['selectedDate'];\r\n if (selectedView) {\r\n this.view = selectedView;\r\n }\r\n if (selectedDate) {\r\n this.selectedDate = new Date(selectedDate);\r\n this.viewDate = this.selectedDate;\r\n }\r\n });\r\n }\r\n this.currentDate = new Date();\r\n this.selectedDay = this.currentDate.getDate();\r\n this.selectedYear = this.selectedDate.getFullYear();\r\n this.studentId = this.studentService.selectedStudent.Id;\r\n this.getCalendarEvents();\r\n }\r\n\r\n ngOnInit() {\r\n if (!!this.student360Service.lastSelectedCalendarView) {\r\n this.view = this.student360Service.lastSelectedCalendarView;\r\n }\r\n if (!!this.student360Service.lastSelectedCalendarDate) {\r\n if (this.selectedDate == this.student360Service.lastSelectedCalendarDate) {\r\n this.viewDate = this.student360Service.lastSelectedCalendarDate;\r\n }\r\n }\r\n this.studentService.selectedStudentStream$.subscribe(student => {\r\n if (this.studentId != this.studentService.selectedStudent.Id) {\r\n this.studentId = this.studentService.selectedStudent.Id;\r\n this.getCalendarEvents();\r\n }\r\n });\r\n this.calendarHeader.viewChange.subscribe(res => {\r\n // Do view Change stuff\r\n const previousView = _.cloneDeep(this.student360Service.lastSelectedCalendarView);\r\n if (res == 'week' && previousView == 'month') { // If navigating from month view to week view\r\n // Select the first day in the current month\r\n this.viewDate = moment(this.viewDate).startOf('month').toDate();\r\n }\r\n if (res == 'day' && previousView == 'week') { // If navigating from week view to day view\r\n // Select the first day in the current week\r\n this.viewDate = moment(this.viewDate).startOf('week').add(1, 'day').toDate();\r\n }\r\n this.calendarHeader.viewDateChange.next(this.viewDate);\r\n this.student360Service.lastSelectedCalendarDate = this.viewDate;\r\n this.student360Service.lastSelectedCalendarView = this.view;\r\n switch (res) {\r\n case 'day':\r\n this.scalePDF = 0.60;\r\n break;\r\n case 'week':\r\n this.scalePDF = 0.25;\r\n break;\r\n case 'month':\r\n this.scalePDF = 0.40;\r\n break;\r\n }\r\n });\r\n this.calendarHeader.viewDateChange.subscribe(viewDate => {\r\n // Get the date of the first event in the studentCalendar\r\n const startDate = moment(this.studentCalendar[0].Id, 'YYYY/M/D');\r\n const endDate = moment(this.studentCalendar[this.studentCalendar.length - 1].Id, 'YYYY/M/D');\r\n // check if the new view date falls in this range\r\n const inRange = moment(viewDate).isBetween(startDate, endDate);\r\n this.student360Service.lastSelectedCalendarDate = this.viewDate;\r\n this.student360Service.lastSelectedCalendarView = this.view;\r\n this.selectedDate = viewDate;\r\n if (!inRange) {\r\n this.getCalendarEvents();\r\n } else if (this.view == 'month') {\r\n this.getCalendarEvents();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n // Clean up\r\n }\r\n\r\n checkAttendance(dayEvent) {\r\n const event = dayEvent.event.meta.event;\r\n if (event.AttendanceId > 0) {\r\n if (event.AttendanceStatus == null || event.AttendanceStatus == 'Present') {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n checkAttendanceEvents(day) {\r\n let hasAttendanceEntries = false;\r\n for (let i = 0; i < day.events.length; i++) {\r\n const eventOfInterest = day.events[i].meta;\r\n if (eventOfInterest.eventType == 'dailyScheduleEvent') {\r\n // Check if it has any attendance entries\r\n if (eventOfInterest.event.AttendanceId > 0 && (eventOfInterest.event.AttendanceStatus != null || eventOfInterest.event.AttendanceStatus != 'Present')) {\r\n hasAttendanceEntries = true;\r\n }\r\n }\r\n }\r\n return hasAttendanceEntries;\r\n }\r\n\r\n checkDisciplineEvents(day) {\r\n let hasDisciplineEvents = false;\r\n for (let i = 0; i < day.events.length; i++) {\r\n const eventOfInterest = day.events[i].meta;\r\n if (eventOfInterest.eventType == 'disciplineEvent') {\r\n hasDisciplineEvents = true;\r\n }\r\n }\r\n return hasDisciplineEvents;\r\n }\r\n\r\n checkAssignmentEvents(day) {\r\n let hasAssignmentEntries = false;\r\n for (let i = 0; i < day.events.length; i++) {\r\n const eventOfInterest = day.events[i].meta;\r\n if (eventOfInterest.eventType == 'dailyScheduleEvent') {\r\n // Check if it has any Assignment entries\r\n if (eventOfInterest.event.Assignments.length > 0) {\r\n hasAssignmentEntries = true;\r\n }\r\n }\r\n }\r\n return hasAssignmentEntries;\r\n }\r\n\r\n eventClicked({ event }: { event: CalendarEvent }): void {\r\n switch (event.meta.eventType) {\r\n case 'districtEvent':\r\n this.dialog.open(CalendarEventModalComponent, {\r\n minHeight: 300,\r\n minWidth: 500,\r\n data: event,\r\n autoFocus: false\r\n });\r\n break;\r\n case 'dailyScheduleEvent':\r\n if (this.loginService.LoginSettings.V10 == false) {\r\n // We need to always open the modal even if there are no assignments\r\n this.dialog.open(CalendarEventModalComponent, {\r\n minHeight: 400,\r\n minWidth: 750,\r\n maxWidth: 750,\r\n maxHeight: 400,\r\n autoFocus: false,\r\n data: event\r\n });\r\n } else {\r\n this.dialog.open(CalendarEventModalComponent, {\r\n minHeight: 400,\r\n minWidth: 750,\r\n maxWidth: 750,\r\n maxHeight: 400,\r\n autoFocus: false,\r\n data: event\r\n });\r\n }\r\n break;\r\n case 'disciplineEvent':\r\n this.router.navigateByUrl('/student360/behavior');\r\n break;\r\n }\r\n }\r\n\r\n setFlexDirection(dayEvent) {\r\n if (dayEvent.height < 55) {\r\n return 'eventFlexRow';\r\n } else {\r\n return 'eventFlexCol';\r\n }\r\n }\r\n\r\n setEventColor(dayEvent) {\r\n switch (dayEvent.event.meta.eventType) {\r\n case 'districtEvent':\r\n if (this.view == 'day') {\r\n return 'districtEvent';\r\n } else if (this.view == 'week') {\r\n return 'districtEventWeek';\r\n }\r\n break;\r\n case 'dailyScheduleEvent':\r\n return 'dailyScheduleEvent';\r\n case 'disciplineEvent':\r\n return 'disciplineEvent';\r\n }\r\n }\r\n\r\n checkForClasses(day) {\r\n const events = day.events;\r\n let dayHasClasses = false;\r\n events.forEach((event) => {\r\n if (event.meta.eventType == 'dailyScheduleEvent') {\r\n dayHasClasses = true;\r\n }\r\n });\r\n if (!dayHasClasses) {\r\n return 'noClasses';\r\n }\r\n }\r\n\r\n eventHasTimes(event) {\r\n const e = event.event.meta.event;\r\n if (e.StartTime || e.EndTime) {\r\n return true;\r\n }\r\n }\r\n\r\n getCalendarEvents() {\r\n this.events = [];\r\n this.studentCalendar = [];\r\n const month = this.selectedDate.getUTCMonth() + 1;\r\n const year = this.selectedDate.getUTCFullYear();\r\n this.calendarService.getCalendarEvents(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id, this.userService.userId, year + '/' + month).subscribe(results => {\r\n this.studentCalendar = results;\r\n this.dateIndex = this.studentCalendar.findIndex(d => d.Id == moment(this.selectedDate, 'YYYY/M/D').format('YYYY/M/D'));\r\n // Add items from daily schedule if our school policy allows\r\n let portals: Portal[] = [];\r\n if (this.userService.userType == 1) {\r\n portals = this.classroom360Service.staffAssignedPortals;\r\n } else {\r\n portals = this.student360Service.parentAssignedPortals;\r\n }\r\n if (this.userService.userType == 1) { // If staff member\r\n // Filter out the portals based on group.\r\n const myStudentsGroup = portals.filter(p => p.GroupName == 'My Students');\r\n if (myStudentsGroup.length > 0) { // User is a teacher\r\n portals = myStudentsGroup;\r\n } else { // user is an admin\r\n portals = portals.filter(p => p.GroupName == 'Students');\r\n }\r\n }\r\n const studentSchedulePortal = portals.find((p) => p.PortalName == 'Student Schedule');\r\n if (studentSchedulePortal) {\r\n for (let i = 0; i < this.studentCalendar.length; i++) {\r\n for (let x = 0; x < this.studentCalendar[i].DailySchedule.length; x++) {\r\n const date = moment(this.studentCalendar[i].DailySchedule[x].Date);\r\n const startTime = moment(this.studentCalendar[i].DailySchedule[x].StartTime, ['h:mm A']);\r\n const endTime = moment(this.studentCalendar[i].DailySchedule[x].EndTime, ['h:mm A']);\r\n const day = this.studentCalendar.find(d => d.Id == this.studentCalendar[i].Id);\r\n const courseInfo = day.Courses.find(course => course.Id === this.studentCalendar[i].DailySchedule[x].Id);\r\n const assignmentsCourse = this.studentCalendar[i].Courses.filter(c => c.Id == this.studentCalendar[i].DailySchedule[x].Id)[0];\r\n if (assignmentsCourse != undefined && assignmentsCourse.CalendarAssignments != null && assignmentsCourse.CalendarAssignments.length > 0) {\r\n this.studentCalendar[i].DailySchedule[x].Assignments = assignmentsCourse.CalendarAssignments;\r\n }\r\n this.events.push({\r\n title: this.studentCalendar[i].DailySchedule[x].CourseName,\r\n start: moment(date).add(startTime.hour(), 'hour').add(startTime.minute(), 'minute').toDate(),\r\n end: moment(date).add(endTime.hour(), 'hour').add(endTime.minute(), 'minute').toDate(),\r\n id: this.studentCalendar[i].DailySchedule[x].Id,\r\n meta: {\r\n eventType: 'dailyScheduleEvent',\r\n event: this.studentCalendar[i].DailySchedule[x],\r\n courseInfo: courseInfo\r\n }\r\n });\r\n }\r\n }\r\n }\r\n // Add items from events\r\n for (let i = 0; i < this.studentCalendar.length; i++) {\r\n for (let x = 0; x < this.studentCalendar[i].Events.length; x++) {\r\n // Check for the event in the list of events to prevent duplication of multi day events\r\n const mEvent = this.events.find(ev => ev.id === this.studentCalendar[i].Events[x].Id && ev.title === this.studentCalendar[i].Events[x].Title);\r\n if (mEvent == undefined) {\r\n if (this.checkAllDayEvent(this.studentCalendar[i].Events[x])) {\r\n this.events.push({\r\n title: this.studentCalendar[i].Events[x].Title,\r\n start: moment(this.studentCalendar[i].Events[x].StartDate).toDate(),\r\n end: moment(this.studentCalendar[i].Events[x].EndDate).toDate(),\r\n id: this.studentCalendar[i].Events[x].Id,\r\n meta: { eventType: 'districtEvent', event: this.studentCalendar[i].Events[x] },\r\n allDay: true\r\n });\r\n } else {\r\n const startTime = moment(this.studentCalendar[i].Events[x].StartTime, ['hh:mm A']);\r\n const endTime = moment(this.studentCalendar[i].Events[x].EndTime, ['hh:mm A']);\r\n const startDate = moment(this.studentCalendar[i].Events[x].StartDate, 'YYYY-MM-DDTHH:mm:ss');\r\n const endDate = moment(this.studentCalendar[i].Events[x].EndDate, 'YYYY-MM-DDTHH:mm:ss');\r\n const start = moment(startDate).add(startTime.hour(), 'hour').add(startTime.minute(), 'minute').toDate();\r\n const end = moment(endDate).add(endTime.hour(), 'hour').add(endTime.minute(), 'minute').toDate();\r\n this.events.push({\r\n title: this.studentCalendar[i].Events[x].Title,\r\n start: start,\r\n end: end,\r\n id: this.studentCalendar[i].Events[x].Id,\r\n meta: { eventType: 'districtEvent', event: this.studentCalendar[i].Events[x] },\r\n allDay: false\r\n });\r\n }\r\n }\r\n }\r\n }\r\n // Add items from Discipline\r\n for (let i = 0; i < this.studentCalendar.length; i++) {\r\n for (let x = 0; x < this.studentCalendar[i].Discipline.length; x++) {\r\n this.events.push({\r\n title: this.studentCalendar[i].Discipline[x].Incident,\r\n start: moment(this.studentCalendar[i].Discipline[x].DateTime).toDate(),\r\n meta: { eventType: 'disciplineEvent', event: this.studentCalendar[i].Discipline[x] }\r\n });\r\n }\r\n }\r\n this.refresh.next();\r\n });\r\n }\r\n\r\n getTimeString(event) {\r\n let startTime = '';\r\n let endTime = '';\r\n if (event.meta.event.StartTime) { // If there is a start time\r\n startTime = moment(event.meta.event.StartTime, 'hh:mm A').format('h:mm A').toString();\r\n }\r\n if (event.meta.event.EndTime) { // If there is an end time\r\n endTime = moment(event.meta.event.EndTime, 'hh:mm A').format('h:mm A').toString();\r\n }\r\n if (!startTime && !endTime) { // No Start or End Time\r\n return '';\r\n }\r\n if (!startTime && endTime) { // No Start Time\r\n return 'Until ' + endTime;\r\n }\r\n if (startTime && !endTime) { // No End Time\r\n return startTime;\r\n }\r\n if (startTime && endTime) { // Start Time and End Time\r\n return startTime + ' - ' + endTime;\r\n }\r\n }\r\n\r\n checkAllDayEvent(event): boolean {\r\n // An All day event will display at the top of the calendar\r\n // If an event has a start time and an end time it is not an all day event\r\n // If an event spans multiple days then it is an all day event\r\n if (event.StartTime && event.EndTime && moment(event.StartDate).isSame(event.EndDate, 'day')) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n allDayEvent(event) {\r\n if (event.event.allDay) {\r\n return 'all-day-district-event';\r\n } else {\r\n return 'day-district-event';\r\n }\r\n }\r\n\r\n setFontSize(event, tag) {\r\n const startTime = event.start;\r\n const endTime = event.end;\r\n const d = moment.utc(moment(endTime, 'DD/MM/YYYY HH:mm:ss').diff(moment(startTime, 'DD/MM/YYYY HH:mm:ss'))).format('HH:mm:ss');\r\n if (moment.duration(d).asMinutes() <= 15) {\r\n if (tag == 'time') {\r\n return 'small-event-time-text';\r\n } else if (tag == 'title') {\r\n return 'small-event-title-text';\r\n }\r\n }\r\n }\r\n\r\n checkDayForClasses(date: any, timeSegment: boolean) {\r\n // Look through the student calendar for the date\r\n const doi = moment(date.date).format('YYYY/M/D');\r\n const day = this.studentCalendar.find(d => d.Id == doi);\r\n // If we find a the date check for classes\r\n if (day) {\r\n if (day.DailySchedule.length == 0 && !timeSegment) {\r\n return 'noClasses';\r\n }\r\n }\r\n }\r\n\r\n log(obj: any) {\r\n console.log(obj);\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {System} from '../../shared-components/System';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {CourseTerm} from '../student-schedule/course-term.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CalendarService {\r\n\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getCalendarEvents(studentId, yearId, userId, startDate): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCalendarEvents?studentId=${studentId}&yearId=${yearId}&userId=${userId}&startDate=${startDate}`);\r\n }\r\n\r\n getTermsForCourses(termDefinitionId: number, siteYearId: number): Observable {\r\n return this.http.get(System.apiURL.Counselor + 'GetTermsForCourses?termDefinitionId=' + termDefinitionId + '&siteYearId=' + siteYearId);\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n
No Behavior data exists for student.
\r\n \r\n
0\">\r\n \r\n ]\r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n ]\r\n Date/Time\r\n \r\n \r\n {{discipline.DateTime | date: 'MM/dd/yy h:mm a'}}\r\n \r\n ]\r\n Incident\r\n \r\n \r\n {{discipline.Incident}}\r\n \r\n ]\r\n Involvement\r\n \r\n \r\n {{discipline.Involvement | incidentType}}\r\n \r\n \r\n Action\r\n \r\n \r\n {{discipline.Action}}\r\n \r\n \r\n Action Date\r\n \r\n \r\n \r\n {{discipline.ActionDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n Days\r\n \r\n \r\n \r\n {{discipline.Days}}\r\n \r\n \r\n \r\n Behavior Letter\r\n \r\n \r\n \r\n 0\">\r\n \r\n Yes\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Event ID{{discipline.Event}}Reported To Police{{discipline.ReportedToPolice}}
Location{{discipline.Location}}{{!V10 ? 'Entered by' : 'Reported by'}}{{discipline.ReportedBy}}
Involving Others{{discipline.InvolvingOthers}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Event Comments\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Incident Comments\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Action Comments\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
Event Details
\r\n
\r\n
\r\n
\r\n
Event Number
\r\n
{{discipline.Event}}
\r\n
\r\n
\r\n
Event Name
\r\n
{{discipline.EventName}}
\r\n
\r\n
\r\n
Event Date/Time
\r\n
{{discipline.DateTime | date: 'medium'}}
\r\n
\r\n
\r\n
Event Location
\r\n
{{discipline.Location}}
\r\n
\r\n
\r\n
Event Comments
\r\n
{{discipline.EventComments}}
\r\n
\r\n
\r\n
Event Context
\r\n
{{discipline.DisciplineEventContext}}
\r\n
\r\n
\r\n
Involving Type
\r\n
{{discipline.Involvement}}
\r\n
\r\n
\r\n
Reported to Police
\r\n
{{discipline.ReportedToPolice}}
\r\n
\r\n
\r\n
Reported By
\r\n
{{discipline.ReportedBy}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Incident Details
\r\n
\r\n
\r\n
\r\n
Incident Code
\r\n
{{discipline.IncidentCode}}
\r\n
\r\n
\r\n
Weapon Description
\r\n
{{discipline.IncidentWeaponDescription}}
\r\n
\r\n
\r\n
Incident Comments
\r\n
{{discipline.IncidentComments}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Action Details
\r\n
\r\n
\r\n
\r\n
Action Code
\r\n
{{discipline.ActionCode}}
\r\n
\r\n
\r\n
Administered By
\r\n
{{discipline.AdministeredBy}}
\r\n
\r\n
\r\n
Day(s) Out of School Suspension
\r\n
{{discipline.OutSchoolDuration}}
\r\n
\r\n
\r\n
Action Effective Start/End Date
\r\n
{{discipline.ActionStartDate | date: 'mediumDate' }} - {{discipline.ActionEndDate | date: 'mediumDate'}}
\r\n
\r\n
\r\n
Permanent Expulsion
\r\n
{{discipline.PermanentExpulsion ? 'Yes' : 'No'}}
\r\n
\r\n
\r\n
Date of Parent/Student Notification
\r\n
{{discipline.ActionNotificationDate | date: 'mediumDate'}}
\r\n
\r\n
\r\n
Action Comments
\r\n
{{discipline.ActionComments}}
\r\n
\r\n
\r\n
Date of Disciplinary Action
\r\n
{{discipline.ActionDate | date: 'mediumDate'}}
\r\n
\r\n
\r\n
Were Services Terminated
\r\n
{{discipline.ServicesTerminated ? 'Yes' : 'No'}}
\r\n
\r\n
\r\n
Day(s) In School Suspension
\r\n
{{discipline.InSchoolDuration}}
\r\n
\r\n
\r\n
Parent/Student Notification
\r\n
{{discipline.ParentStudentNotificationCode}}
\r\n
\r\n
\r\n
Hearing Type
\r\n
{{discipline.HearingTypeCode}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\t\r\n \r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n
\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ViewEncapsulation, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { Discipline } from '../../shared-components/student/discipline.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { AriaDirective } from '../../shared-components/directives/aria.directive';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\n\r\n// -------Angular Material------------------------------------\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { BehaviorLetter } from '../../counselor360/behavior/models/behavior-letter.model';\r\nimport { System } from '../../shared-components/System';\r\nimport { EForm } from '../../shared-components/e-forms/e-form.model';\r\nimport { BehaviorService } from '../../counselor360/behavior/behavior.service';\r\nimport { EFormTemplate } from '../../shared-components/e-forms/e-form-template.model';\r\nimport { EFormService } from '../../shared-components/e-forms/e-form.service';\r\nimport { EFormDataObject } from '../../shared-components/e-forms/e-formDataObject.model';\r\nimport { EFormConfiguration, enmEFormViewModes } from '../../shared-components/e-forms/e-form-config.model';\r\nimport { BehaviorLetterViewerModalComponent } from '../../counselor360/behavior/behavior-letters/behavior-letter-viewer-modal/behavior-letter-viewer-modal.component';\r\n\r\n@Component({\r\n selector: 'discipline',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './discipline.component.html',\r\n styleUrls: ['./discipline.component.css'],\r\n animations: [detailExpand],\r\n})\r\nexport class DisciplineComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // ------------Academic History Data---------------------------\r\n student360YearSubscription: Subscription;\r\n selectedStudentSubscription: Subscription;\r\n selectedStudent: Student;\r\n disciplines: Discipline[] = [];\r\n // ------------Selection/Flags-----------------------------------\r\n selected = '0';\r\n V10: boolean;\r\n isBusy = false;\r\n useDisciplineEventModel: boolean;\r\n parentPortalDisciplineShowComments: boolean;\r\n isStaffMember = false;\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n columnsToDisplay: string[] = ['More', 'DateTime', 'Incident', 'Involvement', 'Action', 'ActionDate', 'Days'];\r\n initialSelection = [];\r\n allowMultiSelect = true;\r\n selection = new SelectionModel(this.allowMultiSelect, this.initialSelection);\r\n\r\n // --------------LifeCycle---------------------------------------\r\n\r\n constructor(private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private behaviorService: BehaviorService,\r\n private eFormService: EFormService,\r\n private dialog: MatDialog,\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n studentYear => {\r\n this.getStudentDiscipline();\r\n }\r\n );\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.disciplines);\r\n this.V10 = this.userService.currentUser.V10;\r\n this.isStaffMember = this.userService.userType == 1;\r\n this.useDisciplineEventModel = this.loginService.LoginSettings.UseDisciplineEventModel;\r\n this.parentPortalDisciplineShowComments = this.loginService.LoginSettings.ParentPortalDisciplineShowComments;\r\n // ONE-5840\r\n // ONE-6659 12/19/19 Comments are NOT to be displayed on Parent & Student Portal.\r\n if (!this.V10 && this.isStaffMember) {\r\n this.parentPortalDisciplineShowComments = true;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.V10) {\r\n this.columnsToDisplay = [];\r\n this.columnsToDisplay = ['More', 'DateTime', 'Incident', 'Involvement', 'Action', 'ActionDate', 'Days', 'BehaviorLetter'];\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.selectedStudentSubscription.unsubscribe();\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n // ------------Student Discipline Data---------------------------\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.clearStudentData();\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n this.getStudentDiscipline();\r\n }\r\n\r\n getStudentDiscipline() {\r\n this.isBusy = true;\r\n\r\n this.angularMatData.data = [];\r\n\r\n setTimeout(() => {\r\n this.studentService.getStudentDiscipline(this.selectedStudent.Id, this.yearService.student360Year.Id, this.userService.userId).subscribe(data => {\r\n this.disciplines = data;\r\n this.disciplines.forEach(element => {\r\n element.BehaviorLetter = element.BehaviorLetterId && element.BehaviorLetterId > 0 ? true : false;\r\n });\r\n this.loadStudentDiscipline();\r\n });\r\n }, 0);\r\n\r\n }\r\n\r\n private loadStudentDiscipline(): void {\r\n\r\n this.angularMatData.data = this.disciplines;\r\n\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n\r\n this.isBusy = false;\r\n }\r\n\r\n clearStudentData() {\r\n\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n\r\n getAriaRow(row: Discipline): string {\r\n const colList: string[] = ['Date/Time',\r\n 'Incident',\r\n 'Involvement',\r\n 'Action',\r\n 'Action Date',\r\n 'Days'];\r\n\r\n const dataList: string[] = [row.DateTime.toString(),\r\n row.Incident,\r\n row.Involvement,\r\n row.Action,\r\n ((row.ActionDate.toString() != '0001-01-01T00:00:00') ? new Date(row.ActionDate).toDateString() : ''),\r\n (row.Days != 0 ? row.Days.toString() : '')];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList) + ' Expand for more details';\r\n }\r\n\r\n getAriaDetailRow(row: Discipline): string {\r\n const colList: string[] = ['Event',\r\n 'Location',\r\n 'Involving Others',\r\n 'Reported To Police',\r\n 'Reported by'];\r\n\r\n const dataList: string[] = [row.Event,\r\n row.Location,\r\n row.InvolvingOthers,\r\n row.ReportedToPolice,\r\n row.ReportedBy];\r\n\r\n if (this.parentPortalDisciplineShowComments) {\r\n if (row.EventComments != null && row.EventComments != '') {\r\n colList.push('Event Comment');\r\n dataList.push(row.EventComments);\r\n }\r\n if (row.ActionComments != null && row.ActionComments != '') {\r\n colList.push('Action Comment');\r\n dataList.push(row.ActionComments);\r\n }\r\n if (row.IncidentComments != null && row.IncidentComments != '') {\r\n colList.push('Incident Comment');\r\n dataList.push(row.IncidentComments);\r\n }\r\n }\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n behaviorLetterClick(d) {\r\n // Get BehaviorLetter details by letterId\r\n const letterId = d.BehaviorLetterId;\r\n let includeEForm = false;\r\n let includePDF = false;\r\n let behaviorLetter: BehaviorLetter;\r\n let templates: EFormTemplate[];\r\n if (this.userService.userType == 1) {\r\n includeEForm = true;\r\n }\r\n else {\r\n includePDF = true;\r\n }\r\n this.behaviorService.getBehaviorLetters(this.yearService.defaultYear.Id, 0, letterId, 0, includeEForm, includePDF).subscribe(results => {\r\n if (results && results.length > 0) {\r\n behaviorLetter = results[0];\r\n // Show Letter\r\n if (this.userService.userType == 1) {\r\n // BehaviorLetterTemplate\r\n this.behaviorService.getBehaviorLetterTemplates(this.yearService.defaultYear.Id, this.yearService.defaultYear.SchoolID, 0).subscribe(r => {\r\n templates = r;\r\n this.schoolCopy(behaviorLetter, templates);\r\n });\r\n }\r\n else {\r\n this.parentCopy(behaviorLetter);\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n schoolCopy(behaviorLetter: BehaviorLetter, eFormTemplate: EFormTemplate[]) {\r\n\r\n const eForm: EForm = new EForm;\r\n\r\n eForm.FormData = behaviorLetter.FormData;\r\n eForm.Student_ID = behaviorLetter.StudentId;\r\n const template: EFormTemplate = eFormTemplate.find(o => o.ID == behaviorLetter.TemplateId);\r\n\r\n this.eFormService.selectedForm = eForm;\r\n try {\r\n this.eFormService.selectedFormData = JSON.parse(eForm.FormData);\r\n } catch (err) {\r\n this.eFormService.selectedFormData = new EFormDataObject();\r\n }\r\n const vConfig = new EFormConfiguration();\r\n vConfig.ViewMode = enmEFormViewModes.Form;\r\n vConfig.ShowSubmittedBy = false;\r\n vConfig.DisableSubmission = true;\r\n vConfig.ReadOnly = true;\r\n vConfig.UseInstance = false;\r\n vConfig.Title = behaviorLetter.TemplateName;\r\n const viewFormDialog = this.dialog.open(BehaviorLetterViewerModalComponent, {\r\n disableClose: true,\r\n height: '100vh',\r\n data: {\r\n config: vConfig,\r\n template: template\r\n }\r\n });\r\n // }));\r\n }\r\n\r\n parentCopy(behaviorLetter: BehaviorLetter) {\r\n const pdfName: string = behaviorLetter.TemplateName + ' - ' + behaviorLetter.FirstName + ' ' + behaviorLetter.LastName;\r\n\r\n if (!this.V10) {\r\n }\r\n else {\r\n System.viewFileFromBase(behaviorLetter.base64PDF, 'pdf', pdfName + '.pdf');\r\n }\r\n }\r\n}\r\n","

Select Student

\r\n\r\n
{{selectedForm.InstanceName | translate}}
\r\n
For which student are you submitting this e-Form?
\r\n\r\n \r\n {{student.FirstName}} {{student.LastName}}\r\n \r\n\r\n
\r\n\r\n \r\n \r\n\r\n","import { Component, OnInit, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { EForm } from '../../../shared-components/e-forms/e-form.model';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { EFormService } from '../../../shared-components/e-forms/e-form.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport * as _ from 'lodash';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n\r\n@AutoUnsubscribe({includeArrays: true})\r\n@Component({\r\n selector: 'app-e-form-select-student-dialog',\r\n templateUrl: './e-form-select-student-dialog.component.html',\r\n styleUrls: ['./e-form-select-student-dialog.component.css']\r\n})\r\nexport class EFormSelectStudentDialogComponent implements OnInit, OnDestroy {\r\n\r\n selectedForm: EForm;\r\n formStudents: Student[] = [];\r\n errors: ErrorList[] = [];\r\n subscriptions: Subscription[] = [];\r\n @ViewChild('refStudent', { read: ElementRef, static: true }) refStudent: ElementRef;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private eFormService: EFormService,\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService\r\n ) {\r\n this.selectedForm = _.cloneDeep(data.Form);\r\n this.formStudents = data.Students;\r\n }\r\n\r\n ngOnInit() {\r\n this.formStudents = this.formStudents.filter( student => \r\n this.studentService.students.findIndex( s => s.Id == student.Id) != -1\r\n );\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n nextClick() {\r\n this.validate();\r\n if (this.errors.length == 0) { \r\n if(!this.loginService.LoginSettings.V10){\r\n this.selectedForm.Family_ID = this.formStudents.filter(o=>o.Id == this.selectedForm.Student_ID)[0].FamilyId;\r\n }\r\n this.dialogRef.close(this.selectedForm);\r\n }\r\n }\r\n\r\n validate() {\r\n this.errors = [];\r\n if (!this.selectedForm.Student_ID || this.selectedForm.Student_ID <= 0) {\r\n this.errors.push({\r\n fieldName: 'Student',\r\n fieldRef: this.refStudent,\r\n errorMsg: 'is required.'\r\n });\r\n }\r\n }\r\n\r\n}\r\n","

\r\n Re-Opened Form\r\n Unfinished Version Exists\r\n

\r\n\r\n
\r\n
{{selectedForm.InstanceName | tylTranslate}}
\r\n
\r\n An unfinished version of this e-Form exists. It was last updated on \r\n {{lastUpdatedOn | date:'MM/dd/yy'}}\r\n by \r\n {{lastUpdatedBy}}\r\n
\r\n
\r\n This form was submitted on\r\n {{lastUpdatedOn | date:'MM/dd/yy'}}\r\n by \r\n {{lastUpdatedBy}}\r\n , but has now been re-opened.\r\n
\r\n
\r\n Do you want to continue with the unfinished version or abandon it and start over?\r\n Do you want to continue with the original form or abandon it and start over?\r\n
\r\n
\r\n \r\n
\r\n Start Over\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { EForm } from '../../../shared-components/e-forms/e-form.model';\r\nimport { EFormService } from '../../../shared-components/e-forms/e-form.service';\r\nimport * as _ from 'lodash';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-e-form-unfinished-dialog',\r\n templateUrl: './e-form-unfinished-dialog.component.html'//,\r\n //styleUrls: ['./e-form-unfinished-dialog.component.css']\r\n})\r\nexport class EFormUnfinishedDialogComponent implements OnInit, OnDestroy {\r\n\r\n selectedForm: EForm;\r\n lastUpdatedOn: Date;\r\n lastUpdatedBy: string;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private eFormService: EFormService,\r\n private loginService : LoginService,\r\n private dialogRef: MatDialogRef\r\n ) {\r\n this.selectedForm = _.cloneDeep(data.Form);\r\n }\r\n\r\n ngOnInit() {\r\n if(this.selectedForm.LastUpdatedOn) {\r\n this.lastUpdatedOn = this.selectedForm.LastUpdatedOn; \r\n this.lastUpdatedBy = this.selectedForm.LastUpdatedByName;\r\n }\r\n else {\r\n this.lastUpdatedOn = this.selectedForm.CreatedOn;\r\n this.lastUpdatedBy = this.selectedForm.CreatedByName;\r\n }\r\n // if(!this.lastUpdatedBy && !this.loginService.LoginSettings.V10){\r\n // this.lastUpdatedBy = this.selectedForm.SubmittedName;\r\n // }\r\n }\r\n\r\n continue() {\r\n this.dialogRef.close('Continue');\r\n }\r\n\r\n startOver() {\r\n this.dialogRef.close('StartOver');\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { EFormService } from '../../../shared-components/e-forms/e-form.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-e-form-critical-message-dialog',\r\n templateUrl: './e-form-critical-message-dialog.component.html',\r\n styleUrls: ['./e-form-critical-message-dialog.component.css']\r\n})\r\nexport class EFormCriticalMessageDialogComponent implements OnInit, OnDestroy {\r\n\r\n message: string = '';\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private eFormService: EFormService,\r\n private loginService : LoginService,\r\n private dialogRef: MatDialogRef\r\n ) {\r\n this.message = data.message;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","

ATTENTION

\r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n","

Select Year

\r\n\r\n
{{selectedForm.InstanceName | translate}}
\r\n
For which year are you submitting this e-Form?
\r\n\r\n \r\n {{year.Description}}\r\n \r\n\r\n
\r\n\r\n \r\n \r\n\r\n","import { Component, OnInit, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { EForm } from '../../../shared-components/e-forms/e-form.model';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { EFormService } from '../../../shared-components/e-forms/e-form.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport * as _ from 'lodash';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { Year } from '../../../shared-components/year/year.model';\r\nimport * as moment from 'moment';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\n\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-e-form-select-year-dialog',\r\n templateUrl: './e-form-select-year-dialog.component.html',\r\n styleUrls: ['./e-form-select-year-dialog.component.css']\r\n})\r\nexport class EFormSelectYearDialogComponent implements OnInit, OnDestroy {\r\n\r\n selectedForm: EForm;\r\n formStudents: Student[] = [];\r\n errors: ErrorList[] = [];\r\n subscriptions: Subscription[] = [];\r\n @ViewChild('refStudent', { read: ElementRef, static: true }) refStudent: ElementRef;\r\n\r\n // Years\r\n years: Year[] = [];\r\n selectedYear: Year;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private eFormService: EFormService,\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private userService: UserService\r\n ) {\r\n this.selectedForm = _.cloneDeep(data.Form);\r\n }\r\n\r\n ngOnInit() {\r\n if(this.loginService.LoginSettings.V10) {\r\n this.years = _.cloneDeep(this.studentService.enrollmentYears)\r\n }\r\n else {\r\n if (this.userService.currentUser.UserType == 1) {\r\n this.years = _.cloneDeep(this.yearService.yearsForC360);\r\n }\r\n else {\r\n this.years = _.cloneDeep(this.yearService.allYears.filter(o => o.SchoolID == this.yearService.student360Year.SchoolID));\r\n }\r\n }\r\n this.years = this.years.filter(year => moment(year.StartDate).isSameOrAfter(this.yearService.defaultYear.StartDate));\r\n this.selectedYear = _.cloneDeep(this.yearService.defaultYear);\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n nextClick() {\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n if (this.loginService.LoginSettings.V10) {\r\n this.selectedForm.AYIdentifier = this.selectedYear.AYIdentifier;\r\n }\r\n else {\r\n this.selectedForm.Year_ID = this.selectedYear.Id;\r\n }\r\n this.dialogRef.close(this.selectedForm);\r\n }\r\n }\r\n\r\n validate() {\r\n this.errors = [];\r\n // if (!this.selectedForm.Student_ID || this.selectedForm.Student_ID <= 0) {\r\n // this.errors.push({\r\n // fieldName: 'Student',\r\n // fieldRef: this.refStudent,\r\n // errorMsg: 'is required.'\r\n // });\r\n // }\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Year } from '../year/year.model';\r\nimport { YearService } from '../year/year.service';\r\n\r\n@Pipe({\r\n name: 'yearDescription'\r\n})\r\nexport class YearDescriptionPipe implements PipeTransform {\r\n\r\n constructor(private yearService: YearService) { }\r\n\r\n transform(yearId: number, args?: string[]): any {\r\n\r\n let year: Year = this.yearService.allYears.find(year => year.Id == yearId);\r\n\r\n return year ? year.Description : '';\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n There are no required e-Forms to be submitted.\r\n There are no optional e-Forms available.\r\n
\r\n 0\" [dataSource]=\"dataSource\" matSortDisableClear matSort id=\"tblEFormInstances\" matSortActive=\"InstanceName\"\r\n matSortDirection=\"asc\" style=\"min-width: 900px;\">\r\n \r\n \r\n Year\r\n \r\n \r\n \r\n Multiple\r\n 0)) && V10\">{{element.AYIdentifier}}\r\n 0)) && !V10\">{{element.Year_ID | yearDescription}} \r\n \r\n \r\n \r\n \r\n Name\r\n \r\n \r\n \r\n \r\n {{element.InstanceName | tylTranslate}} \r\n  - {{currentDateString}}\r\n 0 && element.CompletionDue && element.CompletionDueOption == 'OncePer' && V10\" translate> - {{element.SubmittedDate | date: 'MM/dd/yy'}}\r\n 0 && element.CompletionDue && element.CompletionDueOption == 'OncePer' && !V10\" translate> - {{element.SubmittedOn | date: 'MM/dd/yy'}}\r\n \r\n  [Create new] \r\n \r\n \r\n \r\n \r\n Type\r\n \r\n \r\n \r\n Family\r\n Student\r\n \r\n \r\n \r\n \r\n Student\r\n \r\n \r\n \r\n {{element.Student}}\r\n
\r\n
{{student}}
\r\n
\r\n
\r\n
\r\n \r\n \r\n Deadline\r\n \r\n \r\n \r\n \r\n {{element.DueDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n Due Now\r\n \r\n \r\n \r\n \r\n \r\n Submitted\r\n \r\n \r\n \r\n {{element.SubmittedDate | date: 'MM/dd/yy'}} \r\n {{element.SubmittedOn | date: 'MM/dd/yy'}} \r\n \r\n \r\n \r\n \r\n Submitted By\r\n \r\n \r\n \r\n \r\n {{element.SubmittedName}} \r\n \r\n \r\n \r\n \r\n Status\r\n \r\n \r\n \r\n {{element.Status}}\r\n \r\n \r\n\r\n \r\n \r\n id=\"tblEFormCategoriesDataRow{{i}}\" tabindex=\"0\">\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n","import { Component, OnInit, ViewChild, EventEmitter, AfterViewInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { Subscription } from 'rxjs';\r\nimport { EFormService } from '../../shared-components/e-forms/e-form.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { TabsComponent } from '../../shared-components/controls/tabs/tabs.component';\r\nimport { EFormDataObject } from '../../shared-components/e-forms/e-formDataObject.model';\r\nimport { EForm } from '../../shared-components/e-forms/e-form.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport * as moment from 'moment';\r\nimport { EFormSelectStudentDialogComponent } from './e-form-select-student-dialog/e-form-select-student-dialog.component';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport * as _ from 'lodash';\r\nimport { GeneralConfirmationComponent } from '../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { EFormUnfinishedDialogComponent } from './e-form-unfinished-dialog/e-form-unfinished-dialog.component';\r\nimport { EFormConfiguration, enmEFormViewModes } from '../../shared-components/e-forms/e-form-config.model';\r\nimport { EFormViewerModalComponent } from '../../shared-components/e-forms/e-form-viewer/e-form-viewer-modal/e-form-viewer-modal.component';\r\nimport { System } from '../../shared-components/System';\r\nimport { EFormCriticalMessageDialogComponent } from './e-form-critical-message-dialog/e-form-critical-message-dialog.component';\r\nimport { UserPermission } from '../../shared-components/user/user-permission.model';\r\nimport { PermissionEnum } from '../../shared-components/security/permissions.enums';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { EFormSelectYearDialogComponent } from './e-form-select-year-dialog/e-form-select-year-dialog.component';\r\nimport { Year } from '../../shared-components/year/year.model';\r\n\r\n@Component({\r\n selector: 'e-forms',\r\n templateUrl: './e-forms.component.html',\r\n styleUrls: ['./e-forms.component.scss'],\r\n animations: [detailExpand],\r\n})\r\nexport class EFormsComponent implements OnInit, AfterViewInit {\r\n\r\n // @ViewChild(MatSort) sort: MatSort;\r\n dataSource: TylerMatTableDataSource = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) set matSort(sort: MatSort) { this.dataSource.sort = sort; }\r\n columnsToDisplay = ['Year', 'InstanceName', 'TemplateType', 'Student', 'DueDate', 'SubmittedDate', 'SubmittedName', 'Status'];\r\n subscriptions: Subscription[] = [];\r\n showCompleted: boolean;\r\n pastYear: boolean;\r\n V10: boolean;\r\n currentDateString: string;\r\n staffPage = false;\r\n eFormPermissions: UserPermission[] = [];\r\n showYearSelector = true;\r\n\r\n eForms: EForm[];\r\n filteredEForms: EForm[];\r\n\r\n tabNames: string[] = ['REQUIRED', 'OPTIONAL'];\r\n selectionIndex = 0;\r\n reSelectStudent: boolean;\r\n setIndex = new EventEmitter();\r\n @ViewChild(TabsComponent, { static: true }) tabs: TabsComponent;\r\n\r\n constructor(\r\n private eFormService: EFormService,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private router: Router,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private route: ActivatedRoute,\r\n private studentService: StudentService\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.currentDateString = moment().format('MM/DD/YY');\r\n this.staffPage = this.route.snapshot.paramMap.get('staffPage') == ':staffPage';\r\n\r\n if (this.userService.userType == 1) {\r\n this.getEFormPermissions();\r\n this.showYearSelector = false;\r\n }\r\n else {\r\n this.getEForms();\r\n }\r\n\r\n this.subscriptions.push(\r\n this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.getEForms();\r\n }),\r\n );\r\n // ************ When selected student will change ************\r\n this.subscriptions.push(this.studentService.observableStudentEnrollmentStream$.subscribe(enrollment => {\r\n if (enrollment) {\r\n // this.studentService.selectedStudent.Id = enrollment.StudentId;\r\n if (this.reSelectStudent) {\r\n this.getEForms();\r\n }\r\n }\r\n }));\r\n // ************ ********************************** ************\r\n\r\n if (this.staffPage) {\r\n this.removeElement(this.columnsToDisplay, 'TemplateType');\r\n this.removeElement(this.columnsToDisplay, 'Student');\r\n this.showYearSelector = false;\r\n }\r\n\r\n this.dataSource.sortingDataAccessor = (eForm: EForm, property: string) => {\r\n switch (property) {\r\n case 'InstanceName':\r\n if (eForm.AllowMultiple && eForm.ID != 0) {\r\n return (eForm.InstanceName + ' ').toLocaleLowerCase();\r\n }\r\n else {\r\n return eForm.InstanceName.toLocaleLowerCase();\r\n }\r\n case 'Status':\r\n return (eForm.Status).toLocaleLowerCase();\r\n case 'Year':\r\n if(this.V10) {\r\n return eForm.AYIdentifier ? (eForm.AYIdentifier).toLocaleLowerCase() : '';\r\n }\r\n else {\r\n let year: Year = this.yearService.allYears.find(year => year.Id == eForm.Year_ID);\r\n return year ? year.Description : '';\r\n }\r\n default:\r\n // return eForm[property];\r\n if (eForm[property] || eForm[property] == '') {\r\n return this.dataSource.defaultSortingAccessor(eForm, property);\r\n }\r\n }\r\n };\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.eFormService.initialS360eFormTab != '') {\r\n if (this.eFormService.initialS360eFormTab == 'optional') {\r\n const tabIndex = this.tabNames.indexOf('OPTIONAL');\r\n this.setIndex.emit(tabIndex);\r\n }\r\n\r\n this.eFormService.initialS360eFormTab = '';\r\n // this.dataSource.sort = this.sort;\r\n }\r\n }\r\n\r\n getEForms() {\r\n this.reSelectStudent = true;\r\n\r\n if (this.showCompleted) {\r\n this.pastYear = true;\r\n }\r\n\r\n if (this.staffPage) {\r\n this.eFormService.getStaffUserEformsByLoginId().subscribe(result => {\r\n this.eForms = result;\r\n if (!this.V10) {\r\n for (let i = 0; i < this.eForms.length; i++) {\r\n if (!this.eForms[i].ID || this.eForms[i].ID == 0) {\r\n this.eForms[i].Status = '';\r\n }\r\n }\r\n }\r\n this.loadTable();\r\n });\r\n }\r\n else {\r\n this.eFormService.getStudentParentEforms().subscribe(result => {\r\n this.eForms = result;\r\n if (!this.V10) {\r\n for (let i = 0; i < this.eForms.length; i++) {\r\n if (!this.eForms[i].ID || this.eForms[i].ID == 0) {\r\n this.eForms[i].Status = '';\r\n }\r\n }\r\n }\r\n this.loadTable();\r\n });\r\n }\r\n }\r\n\r\n tabChange(e: any) {\r\n\r\n }\r\n\r\n getEFormPermissions() {\r\n this.eFormPermissions = this.eFormService.eFormPermissions;\r\n if (!this.eFormPermissions || this.eFormPermissions.length == 0) {\r\n this.subscriptions.push(this.eFormService.getEformPermissions(this.yearService.defaultYear.Id).subscribe(result => {\r\n this.eFormPermissions = result;\r\n this.eFormService.eFormPermissions = result;\r\n this.getEForms();\r\n }));\r\n }\r\n else {\r\n this.getEForms();\r\n }\r\n }\r\n\r\n loadTable() {\r\n this.filteredEForms = this.eForms;\r\n if (this.filteredEForms) {\r\n if (this.userService.userType != 1 || (!this.staffPage && this.eFormPermissions.find(o => o.PrivilegeId == PermissionEnum.eFormCompleteAllStudentForms) == null)) {\r\n\r\n this.filteredEForms = this.filteredEForms.filter(eForm =>\r\n // Students\r\n ((eForm.StudentsCanComplete) && this.userService.userType == 3) ||\r\n // Parents\r\n ((eForm.ParentsCanComplete) && this.userService.userType == 2) ||\r\n // Staff\r\n ((eForm.StaffCanComplete || (eForm.TemplateType != null && eForm.TemplateType.toLowerCase() == 'staff')) && this.userService.userType == 1)\r\n );\r\n }\r\n\r\n this.filteredEForms = this.filteredEForms.filter(eForm =>\r\n ((eForm.Required && this.selectionIndex == 0) || // required tab selected\r\n (!eForm.Required && this.selectionIndex == 1)) // optional tab selected\r\n );\r\n\r\n\r\n if (!this.showCompleted) {\r\n this.filteredEForms = this.filteredEForms.filter(eForm =>\r\n (eForm.Status != null && eForm.Status.toLowerCase() != 'complete') // hide completed when checkbox not checked\r\n );\r\n\r\n if (!this.V10) {\r\n this.filteredEForms = this.filteredEForms.filter(eForm =>\r\n ((eForm.IsInstanceActive != null && eForm.IsInstanceActive.toLowerCase() == 'active') || (eForm.Status != null && eForm.Status.toLowerCase() == 'accepted')) // Push only active Instances when checkbox not checked\r\n );\r\n }\r\n }\r\n else if (!this.V10) {\r\n this.filteredEForms = this.filteredEForms.filter(eForm =>\r\n ((eForm.IsInstanceActive != null && eForm.IsInstanceActive.toLowerCase() == 'active') || (eForm.Status != null && eForm.Status.toLowerCase() == 'complete') || (eForm.Status != null && eForm.Status.toLowerCase() == 'accepted')) // Push only active Instances when checkbox not checked\r\n );\r\n }\r\n\r\n if (this.pastYear && this.yearService.student360Year.Status != 2) {\r\n // if (this.yearService.student360Year.Status == 2 && !this.V10) {\r\n // this.dataSource.data = this.filteredEForms;\r\n // }\r\n // else {\r\n this.filteredEForms = this.filteredEForms.filter(eForm =>\r\n ((eForm.Status != null && eForm.Status.toLowerCase() != 'not submitted') // hide not submitted when past year selected in year drop down\r\n && eForm.Status != ''\r\n && eForm.Status.toLocaleLowerCase() != 'rejected'\r\n ) && (!eForm.AllowMultiple || eForm.ID != 0) // hide Multi Use forms when past year selected in year drop down\r\n );\r\n // }\r\n\r\n this.dataSource.data = this.filteredEForms;\r\n }\r\n else {\r\n let tempFilteredEForms = this.filteredEForms;\r\n tempFilteredEForms = [];\r\n\r\n for (let n = 0; n < this.filteredEForms.length; n++) {\r\n const CurrentDate: Date = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\r\n const StartDate: Date = new Date(new Date(this.filteredEForms[n].StartDate).getFullYear(), new Date(this.filteredEForms[n].StartDate).getMonth(), new Date(this.filteredEForms[n].StartDate).getDate());\r\n const EndDate: Date = new Date(new Date(this.filteredEForms[n].EndDate).getFullYear(), new Date(this.filteredEForms[n].EndDate).getMonth(), new Date(this.filteredEForms[n].EndDate).getDate());\r\n let flag = 0;\r\n if ((this.filteredEForms[n].StartDate == undefined || this.filteredEForms[n].StartDate == null\r\n || CurrentDate >= StartDate)\r\n && (this.filteredEForms[n].EndDate == undefined\r\n || this.filteredEForms[n].EndDate == null\r\n || CurrentDate <= EndDate)) {\r\n flag++;\r\n }\r\n if (this.statusDateOverrideCheck(this.filteredEForms[n].Status) || flag > 0) {\r\n tempFilteredEForms.push(this.filteredEForms[n]);\r\n }\r\n }\r\n if (tempFilteredEForms.length) {\r\n this.filteredEForms = tempFilteredEForms;\r\n this.dataSource.data = this.filteredEForms;\r\n }\r\n else {\r\n this.dataSource.data = [];\r\n }\r\n }\r\n // this.dataSource.data = this.filteredEForms;\r\n }\r\n }\r\n\r\n statusDateOverrideCheck(status: string): boolean {\r\n switch (status != null && status.toLowerCase()) {\r\n case 'approved':\r\n case 'rejected':\r\n case 'complete':\r\n case 'completed':\r\n case 'deleted': {\r\n return true;\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n selectionChange(selectionIndex: number) {\r\n this.selectionIndex = selectionIndex;\r\n this.loadTable();\r\n }\r\n\r\n showCompletedChange() {\r\n setTimeout(() => {\r\n this.loadTable();\r\n }, 0);\r\n }\r\n\r\n dueDateCheck(row: EForm): string {\r\n let highlight = '';\r\n\r\n if (row.CompletionDue && ((row.Status == '' && row.ID == 0) || (row.Status != null && row.Status.toLowerCase() == 'not submitted') || (row.Status != null && row.Status.toLowerCase() == 'rejected'))) {\r\n\r\n switch (row.CompletionDueOption != null && row.CompletionDueOption.toLowerCase()) {\r\n case 'dueby':\r\n if (row.DueDate) {\r\n const dueDate: moment.Moment = moment(row.DueDate);\r\n\r\n if (dueDate.isBefore(moment.now())) {\r\n highlight = 'red-bold-due';\r\n }\r\n else if (dueDate.subtract(3, 'days').isBefore(moment.now())) {\r\n highlight = 'red-due';\r\n }\r\n else if (dueDate.subtract(7, 'days').isBefore(moment.now())) {\r\n highlight = 'orange-due';\r\n }\r\n }\r\n break;\r\n case 'onceper':\r\n if (row.Frequency != null && row.Frequency.toLowerCase() == 'day' && row.Required) {\r\n highlight = 'red-bold-due';\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return highlight;\r\n }\r\n\r\n pastDueCheck(row: EForm): boolean {\r\n let result = false;\r\n\r\n if (row.CompletionDue && row.CompletionDueOption && ((row.Status == '' && row.ID == 0) || (row.Status != null && row.Status.toLowerCase() == 'not submitted') || (row.Status != null && row.Status.toLowerCase() == 'rejected'))) {\r\n\r\n switch (row.CompletionDueOption != null && row.CompletionDueOption.toLowerCase()) {\r\n case 'dueby':\r\n if (row.DueDate) {\r\n const dueDate: moment.Moment = moment(row.DueDate);\r\n\r\n result = dueDate.isBefore(moment.now());\r\n }\r\n break;\r\n case 'onceper':\r\n if (row.Frequency != null && row.Frequency.toLowerCase() == 'day' && row.Required) {\r\n result = true;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n formClick(eForm: EForm) {\r\n if (!this.V10 && eForm.Non_English && eForm.Status != null && eForm.Status.toLowerCase() != 'not submitted') {\r\n this.getFormDataByInstanceId('View - Translated', eForm);\r\n } else {\r\n this.eFormService.populateFormData(eForm).subscribe((populatedEForm: EForm) => {\r\n if (populatedEForm) {\r\n eForm = populatedEForm;\r\n }\r\n eForm.FormData = eForm.FormData.replace('< {\r\n let distinctStudents: Student[] = [];\r\n\r\n if (students) {\r\n students.forEach(student => {\r\n if (distinctStudents.findIndex(o => o.Id == student.Id) == -1) {\r\n distinctStudents.push(student);\r\n }\r\n });\r\n }\r\n\r\n if (distinctStudents.length == 1) {\r\n const newForm = _.cloneDeep(eForm);\r\n newForm.Student_ID = distinctStudents[0].Id;\r\n newForm.Family_ID = distinctStudents[0].FamilyId;\r\n if(newForm.ShowInAllYears) {\r\n this.openYearSelector(newForm);\r\n }\r\n else { \r\n this.openFormViewer(newForm);\r\n }\r\n }\r\n else {\r\n distinctStudents = distinctStudents.sort((a, b) => {\r\n if (a.FirstName.toLowerCase() + a.LastName.toLowerCase() < b.FirstName.toLowerCase() + a.LastName.toLowerCase()) { return -1; }\r\n if (a.FirstName.toLowerCase() + a.LastName.toLowerCase() > b.FirstName.toLowerCase() + a.LastName.toLowerCase()) { return 1; }\r\n });\r\n\r\n this.openStudentSelector(eForm, distinctStudents);\r\n }\r\n }));\r\n }\r\n else {\r\n const newForm: EForm = _.cloneDeep(eForm);\r\n if(!this.staffPage) {\r\n newForm.Student_ID = this.studentService.selectedStudent.Id;\r\n newForm.Family_ID = this.studentService.selectedStudent.FamilyId;\r\n }\r\n this.openFormViewer(newForm);\r\n }\r\n }\r\n else {\r\n // this.openFormViewer(eForm);\r\n this.checkForUnfinished(eForm);\r\n }\r\n });\r\n }\r\n }\r\n\r\n getFormDataByInstanceId(actionName: string, eForm: EForm) {\r\n this.eFormService.getFormDataByInstanceId(this.yearService.defaultYear.Id, eForm.ID, [eForm.Instance_ID]).subscribe(result => {\r\n eForm.FormData = result[0].FormData;\r\n if (actionName == 'View - Translated') {\r\n this.action_View_Translated(result[0].TranslatedPDF, eForm.InstanceName);\r\n }\r\n });\r\n }\r\n action_View_Translated(TranslatedPDF64, InstanceName) {\r\n System.viewFileFromBase(TranslatedPDF64, 'application/pdf', InstanceName);\r\n }\r\n\r\n checkForUnfinished(eForm: EForm) {\r\n if (eForm.ID > 0 && eForm.Status != null && eForm.Status.toLowerCase() == 'not submitted' && !eForm.IsLastStatusDelete) {\r\n const eFormUnfinishedDialog = this.dialog.open(EFormUnfinishedDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n Form: eForm\r\n }\r\n });\r\n\r\n eFormUnfinishedDialog.afterClosed().subscribe(result => {\r\n if (result == 'StartOver') {\r\n this.eFormService.getEFormInstance(eForm.Instance_ID).subscribe(instance => {\r\n const newEForm: EForm = _.cloneDeep(eForm);\r\n newEForm.FormData = instance.FormData;\r\n this.openFormViewer(newEForm);\r\n });\r\n }\r\n else if (result == 'Continue') {\r\n this.openFormViewer(eForm);\r\n }\r\n });\r\n }\r\n else {\r\n if (eForm.IsLastStatusDelete) {\r\n this.eFormService.getEFormInstance(eForm.Instance_ID).subscribe(instance => {\r\n const newEForm: EForm = _.cloneDeep(eForm);\r\n newEForm.FormData = instance.FormData;\r\n this.openFormViewer(newEForm);\r\n });\r\n }\r\n else {\r\n if(eForm.ShowInAllYears) {\r\n this.openYearSelector(eForm);\r\n }\r\n else { \r\n this.openFormViewer(eForm);\r\n }\r\n }\r\n }\r\n }\r\n\r\n openFormViewer(eForm: EForm) {\r\n this.subscriptions.push(this.eFormService.markInstanceAsViewed(eForm.Instance_ID).subscribe(() => { }));\r\n this.eFormService.selectedForm = eForm;\r\n try {\r\n this.eFormService.selectedFormData = JSON.parse(eForm.FormData);\r\n } catch (err) {\r\n this.eFormService.selectedFormData = new EFormDataObject();\r\n }\r\n this.subscriptions.push(this.eFormService.getEFormInstance(eForm.Instance_ID).subscribe(instance => {\r\n const config = new EFormConfiguration();\r\n config.ViewMode = enmEFormViewModes.Form;\r\n config.Title = instance ? instance.Name : '';\r\n config.ReadOnly = (eForm.Status != null && (eForm.Status.toLowerCase() == 'submitted' || eForm.Status.toLowerCase() == 'accepted' || eForm.Status.toLowerCase() == 'complete'));\r\n config.AllowInstanceSpecificText = true;\r\n config.NewForm = !eForm.ID || eForm.ID <= 0;\r\n if (config.ReadOnly && eForm.TranslatedPDF) {\r\n let formName: string = instance.Name;\r\n if (instance.TemplateType != null && instance.TemplateType.toLowerCase() == 'student') {\r\n formName += eForm.Student;\r\n }\r\n System.saveFile(eForm.TranslatedPDF, 'pdf', formName + '.pdf');\r\n }\r\n else {\r\n const viewFormDialog = this.dialog.open(EFormViewerModalComponent, {\r\n disableClose: true,\r\n height: '100vh',\r\n data: {\r\n config: config\r\n }\r\n });\r\n this.subscriptions.push(viewFormDialog.afterClosed().subscribe(action => {\r\n if (this.eFormService.showCriticalMessage) {\r\n const eFormCMDialog = this.dialog.open(EFormCriticalMessageDialogComponent, {\r\n disableClose: true,\r\n width: '700px',\r\n data: {\r\n message: eForm.CriticalMessage\r\n }\r\n });\r\n\r\n this.subscriptions.push(eFormCMDialog.afterClosed().subscribe(() => {\r\n this.getEForms();\r\n }));\r\n }\r\n else {\r\n this.getEForms();\r\n }\r\n }));\r\n }\r\n }));\r\n }\r\n\r\n openStudentSelector(eForm: EForm, students: Student[]) {\r\n const selectStudentDialog = this.dialog.open(EFormSelectStudentDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n Form: eForm,\r\n Students: students\r\n }\r\n });\r\n this.subscriptions.push(selectStudentDialog.afterClosed().subscribe((newForm: EForm) => {\r\n if (newForm) {\r\n if(newForm.ShowInAllYears) {\r\n this.openYearSelector(newForm)\r\n }\r\n else {\r\n this.openFormViewer(newForm);\r\n }\r\n }\r\n }));\r\n }\r\n\r\n openYearSelector(eForm: EForm) {\r\n const selectYearDialog = this.dialog.open(EFormSelectYearDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n Form: eForm\r\n }\r\n });\r\n this.subscriptions.push(selectYearDialog.afterClosed().subscribe((newForm: EForm) => {\r\n if (newForm) {\r\n this.openFormViewer(newForm);\r\n }\r\n }));\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n this.dataSource.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.dataSource.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.dataSource.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.dataSource.rowKeyPress(event, row);\r\n }\r\n\r\n removeElement(array: any[], element: any) {\r\n const index: number = array.indexOf(element);\r\n if (index != -1) {\r\n array.splice(index, 1);\r\n }\r\n }\r\n}\r\n","
Additional Details
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Course\r\n \r\n {{SelectedFP.Course}}\r\n
\r\n Check Number\r\n \r\n {{SelectedFP.CheckNumber}}\r\n
\r\n Check Date\r\n \r\n

{{SelectedFP.CheckDate|date:'MM/dd/yy'}}

\r\n
\r\n Name On Check\r\n \r\n {{SelectedFP.NameOnCheck}}\r\n
\r\n Due Date\r\n \r\n

{{SelectedFP.DueDate|date:'MM/dd/yy'}}

\r\n
\r\n
\r\n Comment:\r\n
\r\n
\r\n {{SelectedFP.Comments}}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FeePayment } from '../fee-payment.model';\r\n\r\n\r\n@Component({\r\n selector: 'additional-details',\r\n templateUrl: './additional-details.component.html'\r\n})\r\nexport class AdditionalDetailsComponent {\r\n\r\n v10: boolean;\r\n SelectedFP:FeePayment;\r\n dateCheck:string = '0001-01-01T00:00:00';\r\n\r\n constructor( private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) private data: any) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.SelectedFP = this.data.SelectedFP;\r\n this.v10 = this.data.v10;\r\n }\r\n\r\n closeClick(){\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n}\r\n","\r\n \r\n Date\r\n {{detail.Date|date:'MM/dd/yy'}}\r\n \r\n \r\n Description\r\n {{detail.Description}}\r\n \r\n \r\n Type\r\n {{detail.Type}}\r\n \r\n \r\n Fee\r\n \r\n {{detail.Fee != '' && detail.Fee != null && detail.Fee > 0 ? (detail.Fee|number:'1.2-2') : (detail.Fee != '' && detail.Fee != null ? (detail.Fee*-1|number:'1.2-2') : '')}}\r\n \r\n \r\n \r\n Payment\r\n \r\n {{detail.Payment != '' && detail.Payment != null && detail.Payment > 0 ? (detail.Payment|number:'1.2-2') : (detail.Payment != '' && detail.Payment != null ? (detail.Payment*-1|number:'1.2-2') : '')}}\r\n \r\n \r\n \r\n Balance\r\n \r\n {{detail.RunningBalance != '' && detail.RunningBalance != null && detail.RunningBalance > 0 ? (detail.RunningBalance|number:'1.2-2') : (detail.RunningBalance != '' && detail.RunningBalance != null ? (detail.RunningBalance*-1|number:'1.2-2') : '')}}\r\n \r\n \r\n \r\n \r\n \r\n {{detail.RunningBalance > 0 ? ' Credit' : (detail.RunningBalance < 0 ? ' Due' : '')}}\r\n \r\n \r\n \r\n Additional Details\r\n \r\n   Details\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n","import { Component, OnInit, ViewChild, Input, OnDestroy } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSort } from '@angular/material/sort';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { FeePayment } from '../fee-payment.model';\r\nimport { AdditionalDetailsComponent } from '../additional-details/additional-details.component';\r\n\r\n@Component({\r\n selector: 'fee-payment-details',\r\n styleUrls: ['./fee-payment-details.component.scss'],\r\n templateUrl: './fee-payment-details.component.html'\r\n})\r\nexport class FeePaymentDetailsComponent implements OnInit, OnDestroy {\r\n\r\n\r\n dateCheck:string = '0001-01-01T00:00:00';\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay = ['Date', 'Description', 'Type', 'Fee', 'Payment', 'RunningBalance', 'BalanceType', 'Details'];\r\n @Input() feePayments: FeePayment[];\r\n @Input() v10: boolean;\r\n //------------Modal window--------------------------------------\r\n additionalDetailsDialogRef: MatDialogRef;\r\n\r\n constructor(private dialog: MatDialog) { }\r\n\r\n ngOnInit() {\r\n this.angularMatData.data = this.feePayments;\r\n\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n\r\n }\r\n\r\n hideDetails(feePayment:FeePayment) {\r\n if ((feePayment.Course == '' || feePayment.Course == null) && (feePayment.CheckNumber == '' || feePayment.CheckNumber == null) && (feePayment.CheckDate == null || feePayment.CheckDate.toString() == this.dateCheck) &&\r\n (feePayment.NameOnCheck == '' || feePayment.NameOnCheck == null) && (feePayment.DueDate == null || feePayment.DueDate.toString() == this.dateCheck) && (feePayment.Comments == '' || feePayment.Comments == null))\r\n return false;\r\n else\r\n return true;\r\n }\r\n\r\n //------------Modal window-----------------------\r\n showDialog(feePayment: FeePayment) {\r\n this.additionalDetailsDialogRef = this.dialog.open(AdditionalDetailsComponent, {\r\n data: {\r\n SelectedFP: feePayment,\r\n v10: this.v10\r\n },\r\n });\r\n\r\n this.additionalDetailsDialogRef.afterClosed().subscribe(result => { });\r\n }\r\n\r\n getAriaDetailRowByDate(row: FeePayment): string {\r\n let colList: string[] = ['Date', 'Description', 'Type', 'Fee', 'Payment', 'RunningBalance'];\r\n\r\n let date:string = new Date(row.Date).toDateString();\r\n\r\n let dataList: string[] = [date,\r\n row.Description,\r\n row.Type,\r\n row.Fee,\r\n row.Payment,\r\n row.RunningBalance]\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Balance from Prior Year(s) ${{priorBalance != undefined && priorBalance != null &&\r\n priorBalance > 0 ? (priorBalance|number:'1.2-2') : (priorBalance != undefined &&\r\n priorBalance != null ? (priorBalance*-1|number:'1.2-2') : '')}} {{priorBalance > 0 ? 'Credit' : (priorBalance < 0 ? 'Due' :\r\n '' )}}
Balance from Future Year(s) ${{futureBalance != undefined && futureBalance != null &&\r\n futureBalance > 0 ? (futureBalance|number:'1.2-2') : (futureBalance != undefined &&\r\n futureBalance != null ? (futureBalance*-1|number:'1.2-2') : '')}} {{futureBalance > 0 ? 'Credit' : (futureBalance < 0 ? 'Due' :\r\n '' )}}
{{student360Year.AYIdentifier}} Balance\r\n  ${{aYBalance != undefined && aYBalance != null &&\r\n AYBalance > 0 ? (aYBalance|number:'1.2-2') : (aYBalance != undefined && aYBalance != null ?\r\n (aYBalance*-1|number:'1.2-2') : '')}} {{aYBalance > 0 ? 'Credit' : (aYBalance < 0 ? 'Due' : '' )}}\r\n
{{student360Year.Description}} Balance\r\n  ${{aYBalance != undefined && aYBalance != null &&\r\n aYBalance > 0 ? (aYBalance|number:'1.2-2') : (aYBalance != undefined && aYBalance != null ?\r\n (aYBalance*-1|number:'1.2-2') : '')}} {{aYBalance > 0 ? 'Credit' : (aYBalance < 0 ? 'Due' : '' )}}\r\n
Unapplied Payments ${{unappliedPayments != undefined && unappliedPayments !=\r\n null && unappliedPayments > 0 ? (unappliedPayments|number:'1.2-2') : (unappliedPayments !=\r\n undefined && unappliedPayments != null ? (UnappliedPayments*-1|number:'1.2-2') : '')}} {{unappliedPayments > 0 ? 'Credit' : (unappliedPayments < 0 ?\r\n 'Due' : '' )}}
\r\n
\r\n
Total Balance\r\n  ${{(totalBalance\r\n > 0 ? totalBalance : totalBalance*-1)|number:'1.2-2'}} {{(totalBalance * -1) > 0 ? 'Credit' : ((totalBalance * -1) <\r\n 0 ? 'Due' : '' )}}
Total Balance\r\n  ${{(totalBalance\r\n > 0 ? totalBalance : totalBalance*-1)|number:'1.2-2'}} {{totalBalance > 0 ? 'Credit' : (totalBalance < 0 ? 'Due' :\r\n '' )}}
\r\n
\r\n
\r\n
\r\n
\r\n
Fees & Billing - {{ studentname }} [#{{studentNumber}}]
\r\n
\r\n
\r\n\r\n
\r\n No Fees & Billing data exists for this student.\r\n
\r\n\r\n 0\" matSort id=\"FABdataTable\"\r\n matSortActive=\"FeeCode\" matSortDirection=\"asc\" aria-label=\"Fees And Billing Table\" tabindex=\"0\">\r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Fee Code\r\n \r\n \r\n \r\n {{FAB.FeeCode}}\r\n \r\n \r\n \r\n Description\r\n \r\n \r\n \r\n {{FAB.Description}}\r\n \r\n \r\n \r\n \r\n Balance\r\n \r\n \r\n \r\n \r\n {{(FAB.Balance != '' && FAB.Balance != null && FAB.Balance > 0 ?\r\n FAB.Balance : (FAB.Balance != '' && FAB.Balance != null ?\r\n FAB.Balance*-1 : ''))|number:'1.2-2'}}  \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{FAB.Balance > 0 ? 'Credit' : (FAB.Balance < 0 ? 'Due' : '' )}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n","import {\r\n Component,\r\n OnInit,\r\n AfterViewInit,\r\n ViewChild,\r\n EventEmitter,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n Inject\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { AriaDirective } from '../../shared-components/directives/aria.directive';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { FeesAndBilling } from './fees-and-billing.model';\r\nimport { FeesAndBillingService } from './fees-and-billing.service';\r\nimport { OnlinePaymentConfiguration } from '../online-payment/models/online-payment-config.model';\r\n\r\n// -------Angular Material------------------------------------\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { StudentHeaderComponent } from '../../shared-components/student-header/student-header.component';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'fees-and-billing',\r\n templateUrl: './fees-and-billing.component.html',\r\n styleUrls: ['./fees-and-billing.component.scss'],\r\n animations: [detailExpand]\r\n})\r\nexport class FeesAndBillingComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // ------------Fees And Billing Data---------------------------\r\n student360YearSubscription: Subscription;\r\n student360Year: Year;\r\n selectedStudentSubscription: Subscription;\r\n selectedStudent: Student;\r\n feesAndBilling: FeesAndBilling[];\r\n onlinePaymentConfiguration: OnlinePaymentConfiguration = new OnlinePaymentConfiguration();\r\n unappliedPayments: number;\r\n totalBalance: number;\r\n aYBalance: number;\r\n priorBalance: number;\r\n totalUnapplied: number;\r\n allowFutureYears = false;\r\n futureBalance = 0;\r\n // ------------Selection/Flags-----------------------------------\r\n selected = '0';\r\n v10 = false;\r\n isBusy: boolean;\r\n parentPortalShowOnlinePayment: boolean;\r\n userType: number;\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n columnsToDisplay: string[] = ['More', 'FeeCode', 'Description', 'Balance', 'BalanceType'];\r\n initialSelection = [];\r\n allowMultiSelect = true;\r\n selection = new SelectionModel(this.allowMultiSelect, this.initialSelection);\r\n clearFilterEvent = new EventEmitter();\r\n studentId: number;\r\n FeeCode: string;\r\n FeeDialog = false;\r\n studentname: string;\r\n studentNumber: string;\r\n\r\n @ViewChild(StudentHeaderComponent) studentHeader: StudentHeaderComponent;\r\n subscriptions: Subscription[] = [];\r\n // --------------LifeCycle---------------------------------------\r\n\r\n constructor(private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private router: Router,\r\n private feesAndBillingService: FeesAndBillingService,\r\n public changeDetector: ChangeDetectorRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef) {\r\n\r\n this.v10 = userService.currentUser.V10;\r\n this.parentPortalShowOnlinePayment = this.loginService.LoginSettings.ParentPortalShowOnlinePayment;\r\n this.userType = this.userService.userType;\r\n if (data != undefined && data.length != 0 && !this.v10) {\r\n this.studentId = data.onlinePayment.StudentId;\r\n this.FeeDialog = data.FeeDialog;\r\n this.FeeCode = data.onlinePayment.AccountCode;\r\n this.studentname = data.onlinePayment.StudentName;\r\n this.studentNumber = data.onlinePayment.StudentIdentifier;\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.allowFutureYears = this.loginService.LoginSettings.AllowFutureFeeBillingPayments;\r\n if (this.studentId > 0 && !this.v10 && this.FeeDialog) {\r\n this.loadStudentInfo(this.studentId);\r\n }\r\n else {\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n if (this.data != undefined && this.data.length == 0) {\r\n this.subscriptions.push(this.selectedStudentSubscription = this.studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.feesAndBilling = undefined;\r\n this.loadStudentInfo(studentId);\r\n }));\r\n }\r\n this.getOnlinePaymentConfiguration();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n // ------------Fees And Billing Data---------------------------\r\n\r\n loadStudentInfo(studentId: number) {\r\n if (studentId && studentId > 0) {\r\n this.clearStudentData();\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n if (this.v10) {\r\n // ONE-7439\r\n if (this.studentService.enrollmentYears) {\r\n this.student360Year = this.studentService.enrollmentYears.find(o => o.AYIdentifier == this.yearService.student360Year.AYIdentifier);\r\n this.getFeesAndBilling();\r\n }\r\n else {\r\n this.studentService.getStudentEnrollmentYears(studentId).subscribe(enrollmentYears => {\r\n this.studentService.enrollmentYears = enrollmentYears;\r\n this.student360Year = this.studentService.enrollmentYears.find(o => o.AYIdentifier == this.yearService.student360Year.AYIdentifier);\r\n this.getFeesAndBilling();\r\n });\r\n }\r\n }\r\n else {\r\n this.student360Year = this.yearService.student360Year;\r\n this.getFeesAndBilling();\r\n }\r\n }\r\n }\r\n\r\n getFeesAndBilling() {\r\n this.subscriptions.push(this.feesAndBillingService.getFeesAndBilling(this.selectedStudent.Id, this.student360Year.Id, this.userService.userId).subscribe(result => {\r\n\r\n this.feesAndBilling = result;\r\n this.angularMatData = new TylerMatTableDataSource(this.feesAndBilling);\r\n\r\n let summaryUnapplied: any = 0;\r\n let summaryTotalBalance: any = 0;\r\n let summaryPriorBalance = 0;\r\n let summaryAYBalance = 0;\r\n\r\n if (this.v10) {\r\n for (let i = 0; i < this.feesAndBilling.length; i++) {\r\n if (this.feesAndBilling[i].Id == -1) {\r\n summaryUnapplied = this.feesAndBilling[i].Unapplied.toFixed(2);\r\n summaryTotalBalance = parseFloat(this.feesAndBilling[i].Balance).toFixed(2);\r\n summaryPriorBalance = this.feesAndBilling[i].PriorBalance;\r\n summaryAYBalance = this.feesAndBilling[i].AYBalance;\r\n this.feesAndBilling.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n if (this.v10) {\r\n this.unappliedPayments = summaryUnapplied;\r\n this.totalBalance = summaryTotalBalance;\r\n this.aYBalance = summaryAYBalance - (summaryPriorBalance ? summaryPriorBalance : 0);\r\n this.priorBalance = summaryPriorBalance;\r\n if (this.allowFutureYears) {\r\n this.getFutureBalance();\r\n this.aYBalance = this.aYBalance - (this.futureBalance ? this.futureBalance : 0);\r\n }\r\n }\r\n else {\r\n this.calculateBalance();\r\n }\r\n\r\n this.loadFeesAndBillingData();\r\n }));\r\n }\r\n\r\n getOnlinePaymentConfiguration() {\r\n if (this.loginService.LoginSettings.ParentPortalShowOnlinePayment && this.userService.userType == 2) {\r\n this.subscriptions.push(this.studentService.getOnlinePaymentConfiguration().subscribe(result => {\r\n this.onlinePaymentConfiguration = result;\r\n }));\r\n }\r\n }\r\n\r\n private loadFeesAndBillingData(): void {\r\n if (this.FeeDialog) {\r\n this.angularMatData.data = this.feesAndBilling.filter(fee => fee.FeeCode === this.FeeCode);\r\n this.angularMatData.expandAll(true);\r\n }\r\n else {\r\n this.angularMatData.data = this.feesAndBilling;\r\n }\r\n this.angularMatData.sort = this.sort;\r\n }\r\n\r\n clearStudentData() {\r\n\r\n }\r\n\r\n calculateBalance() {\r\n this.aYBalance = 0;\r\n this.unappliedPayments = 0;\r\n this.totalBalance = 0;\r\n this.priorBalance = 0;\r\n this.totalUnapplied = 0;\r\n\r\n for (let i = 0; i < this.feesAndBilling.length; i++) {\r\n if (this.feesAndBilling[i].V10Flag) {\r\n this.totalUnapplied = this.feesAndBilling[i].Unapplied;\r\n }\r\n this.aYBalance = this.aYBalance + this.feesAndBilling[i].AYBalance;\r\n this.totalBalance = this.totalBalance + this.feesAndBilling[i].BalanceSort;\r\n for (let j = 0; j < this.feesAndBilling[i].FeePayments.length; j++) {\r\n this.unappliedPayments = this.unappliedPayments + this.feesAndBilling[i].FeePayments[j].UnappliedPayments;\r\n if (this.feesAndBilling[i].FeePayments[j].Id == -99) {\r\n this.priorBalance = this.priorBalance + parseFloat(this.feesAndBilling[i].FeePayments[j].RunningBalance);\r\n }\r\n }\r\n }\r\n this.aYBalance = Math.round(this.aYBalance * 100) / 100;\r\n this.unappliedPayments = Math.round(this.unappliedPayments * 100) / 100;\r\n this.priorBalance = this.priorBalance;\r\n this.unappliedPayments = this.unappliedPayments + this.totalUnapplied;\r\n this.totalBalance = this.totalBalance + this.unappliedPayments;\r\n }\r\n\r\n getFutureBalance() {\r\n this.futureBalance = 0;\r\n this.feesAndBilling.forEach(feeBill => {\r\n feeBill.FeePayments.forEach(p => {\r\n if (p.Id == -98) {\r\n this.futureBalance += parseFloat(p.RunningBalance);\r\n }\r\n });\r\n });\r\n // this.totalBalance = this.totalBalance - this.futureBalance;\r\n }\r\n\r\n onlinePaymentClick() {\r\n this.router.navigateByUrl('/student360/onlinePayment');\r\n }\r\n\r\n // ------------Helper methods----------------------------------\r\n\r\n removeElement(array: any[], element: any) {\r\n const index: number = array.indexOf(element);\r\n array.splice(index, 1);\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n\r\n getAriaRow(row: FeesAndBilling): string {\r\n // Returns string for a given row's data\r\n // reads each column header name and then the cell data for that column\r\n const colList: string[] = ['FeeCode', 'Description', 'Balance', 'Balance Type'];\r\n\r\n const dataList: string[] = [row.FeeCode,\r\n row.Description,\r\n row.Balance,\r\n parseInt(row.Balance, 10) > 0 ? 'Credit' : (parseInt(row.Balance, 10) < 0 ? 'Due' : '')];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n yearChange(year: Year) {\r\n this.student360Year = year;\r\n this.getFeesAndBilling();\r\n if (!this.allowFutureYears) {\r\n this.yearService.updateStudent360Year(year);\r\n }\r\n }\r\n}\r\n","import { System } from './../../shared-components/System';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { FeesAndBilling } from './fees-and-billing.model';\r\n\r\n@Injectable()\r\nexport class FeesAndBillingService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getFeesAndBilling(studentId: number, yearId: number, userId: number): Observable {\r\n let queryString = '';\r\n queryString += \"?studentId=\" + studentId +\r\n \"&yearId=\" + yearId +\r\n \"&userId=\" + userId;\r\n return this.http.get(System.apiURL.Student + 'GetFeesAndBilling' + queryString);\r\n }\r\n}\r\n","import { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\n\r\nexport class ReportCardGradesTerm {\r\n Id: number;\r\n TermGradesDetailTypeId: number;\r\n TermDefinitionId: number;\r\n GradingTerm: string;\r\n GradingTermDescription: string;\r\n Grade: string;\r\n GradeDescription: string;\r\n SSEC_ID: number;\r\n CustomOrder: number;\r\n CreditEarned: number;\r\n CreditAttempted: number;\r\n PercentGrade: string;\r\n Comment: string;\r\n Citizenship: string;\r\n CitizenshipLabel: string;\r\n Workhabits: string;\r\n DisplayGrade: string;\r\n IsGradeBookGrade: boolean;\r\n V10Flag: boolean;\r\n AY_ID: number;\r\n IsGradeBookExists: boolean;\r\n DisplayCategoryScores: boolean;\r\n IsStandardGradebook: boolean;\r\n SchoolName: string;\r\n OverrideGradingTerm: string;\r\n}\r\n\r\nexport class ReportCardGradesStandards {\r\n Id: number;\r\n StandardId: number;\r\n Standard: string;\r\n Level: number;\r\n SortBy: string;\r\n SSEC_ID: number;\r\n ReportCardGradesTerms: ReportCardGradesTerm[];\r\n}\r\n\r\nexport class CurriculumMarkTypes {\r\n Id: number;\r\n Code: string;\r\n Description: string;\r\n InActive: boolean;\r\n ImportValue: number;\r\n\r\n // Non DTO Field\r\n isGridSelected: boolean;\r\n}\r\n\r\nexport class GradesData {\r\n SiteYearId: number;\r\n SchoolName: string;\r\n Terms: ReportCardGradesTerm[];\r\n AngularMatData: TylerMatTableDataSource;\r\n}\r\n\r\nexport class GradesPreferences {\r\n ShowProgressGrades: boolean;\r\n}\r\n\r\nexport class CategoryAverage {\r\n SSEC_ID: number;\r\n CategoryName: string;\r\n CategoryAverage: number;\r\n CategoryWeight: number;\r\n TermId: number;\r\n TermName: string;\r\n}\r\n\r\nexport class GradesBehaviorSocialSkills {\r\n SiteYearId: number;\r\n SchoolName: string;\r\n behaviorSocialSkillDescription: string;\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-course-description',\r\n templateUrl: './course-description.component.html',\r\n styleUrls: ['../grades.component.css']\r\n})\r\nexport class CourseDescriptionComponent implements OnInit {\r\n course = '';\r\n subjectSection = '';\r\n teacher = '';\r\n school = '';\r\n curriculum = '';\r\n description = '';\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.course = this.data.studentSchedule.Course;\r\n this.subjectSection = this.data.studentSchedule.SubjectCode + '-' + this.data.studentSchedule.Section;\r\n this.teacher = this.data.studentSchedule.Teacher;\r\n this.school = this.data.studentSchedule.SchoolName;\r\n this.curriculum = this.data.studentSchedule.Curriculum;\r\n this.description = this.data.studentSchedule.Description;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","

Course Description

\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Course Name{{course}}
Course-Section{{subjectSection}}
Teacher{{teacher}}
School{{school}}
Curriculum{{curriculum}}
Description{{description}}
\r\n
\r\n
\r\n\r\n \r\n\r\n","

Color Legend

\r\n

{{dialogTitle}}

\r\n
\r\n Term Details -{{longDescription}}\r\n
\r\n
\r\n {{selectedCourse.Course}} - {{selectedCourse.TeacherName}}\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 && isStandardView==true && isTermSelected==false\">\r\n \r\n \r\n \r\n
Course Name{{course}}
Course-Section{{subjectSection}}
School{{school}}
Grading Period{{gradingTerm}}
Standard{{standard}}
Grade\r\n {{grade}}  \r\n 0))\"\r\n translate>Assignments\r\n
Grading Scale\r\n
\r\n \r\n \r\n \r\n \r\n
{{GS}}
\r\n
\r\n
\r\n
\r\n
\r\n
Comment
\r\n
{{comment}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{citizenshipLabel}}\r\n
\r\n
\r\n
{{citizenship}}\r\n
\r\n
\r\n
\r\n
\r\n {{behaviorLabel}}\r\n
\r\n
0\" style=\"width:100%;\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{habits}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/loginSetting.model';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { CourseTerm } from '../../../shared-components/student/course-term.model';\r\nimport { AssignmentService } from '../../assignment/assignment.service';\r\nimport { ReportCardGradesTerm } from '../grades.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\n\r\n@Component({\r\n selector: 'app-comments-and-behavior-marks',\r\n templateUrl: './comments-and-behavior-marks.component.html',\r\n styleUrls: ['../grades.component.css']\r\n})\r\nexport class CommentsAndBehaviorMarksComponent implements OnInit {\r\n\r\n gradeId: number;\r\n gradingTerm: string;\r\n gradingTermDescription: string;\r\n course = '';\r\n subjectSection = '';\r\n school = '';\r\n grade = '';\r\n comment = '';\r\n citizenship = '';\r\n citizenshipLabel = '';\r\n workhabits = '';\r\n standard: string;\r\n isGradeBookGrade: boolean;\r\n isStandardView: boolean;\r\n subjectCode: string;\r\n section: string;\r\n isTermSelected: boolean;\r\n courseName = '';\r\n teacherName = '';\r\n courseTerm: CourseTerm | string = '';\r\n gradeScale: string[] = [];\r\n studentSchedules: CourseSchedule[] = [];\r\n LoginSettings: LoginSettings;\r\n selectionIndex = -1;\r\n longDescription: string;\r\n termGrade: ReportCardGradesTerm;\r\n behaviorSkills: any[] = [];\r\n selectedCourse: CourseSchedule;\r\n behaviorLabel = 'Behavior';\r\n dialogTitle = 'Comments and Behavior Marks';\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef,\r\n private router: Router,\r\n private loginService: LoginService,\r\n private assignmentService: AssignmentService,\r\n private userService: UserService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.gradeId = this.data.selectedGradeId;\r\n this.gradingTerm = this.data.selectedGradingTerm;\r\n this.gradingTermDescription = this.data.gradingTermDesc;\r\n this.standard = this.data.selectedStandard;\r\n this.isGradeBookGrade = this.data.isGradeBookGrade;\r\n this.isStandardView = this.data.selectedIsStandardView;\r\n this.subjectCode = this.data.selectedSubjectCode;\r\n this.section = this.data.selectedSection;\r\n this.isTermSelected = this.data.isTermSelected;\r\n this.selectedCourse = this.data.course;\r\n this.termGrade = this.data.termGrade;\r\n if (this.LoginSettings.V10 == false && this.data.behaviorSocialSkillDescription != null) {\r\n this.behaviorLabel = this.data.behaviorSocialSkillDescription;\r\n this.dialogTitle = 'Comments and ' + this.data.behaviorSocialSkillDescription;\r\n }\r\n\r\n if (this.isStandardView) {\r\n if (this.selectedCourse.CourseTerms.filter(o => o.Id == this.termGrade.TermDefinitionId).length > 0) {\r\n this.longDescription = this.selectedCourse.CourseTerms.filter(o => o.Id == this.termGrade.TermDefinitionId)[0].LongDescription;\r\n }\r\n }\r\n\r\n this.gradeScale = [];\r\n if (this.data.gradingScale != null && this.data.gradingScale != '') {\r\n if (this.data.gradingScale.indexOf(',') > -1) {\r\n this.gradeScale = this.data.gradingScale.split(',');\r\n }\r\n else if (this.data.gradingScale.length > 0) {\r\n this.gradeScale.push(this.data.gradingScale);\r\n }\r\n }\r\n\r\n if ((this.LoginSettings.V10 == undefined || this.LoginSettings.V10 == false) && this.data.gradingTermDesc != null && this.data.gradingTermDesc != undefined && this.data.gradingTermDesc != '') {\r\n this.isGradeBookGrade = true;\r\n }\r\n\r\n this.studentSchedules = this.data.studentSchedules;\r\n for (let i = 0; i < this.studentSchedules.length; i++) {\r\n if (this.studentSchedules[i].Id == this.gradeId) {\r\n const ReportCardGrades = this.studentSchedules[i];\r\n this.course = ReportCardGrades.Course;\r\n this.subjectSection = ReportCardGrades.SubjectCode + '-' + ReportCardGrades.Section;\r\n this.school = ReportCardGrades.SchoolName;\r\n\r\n if (this.LoginSettings.ParentPortalAssignmentsDisplayProfiles) {\r\n this.courseName = ReportCardGrades.Course + ' - ' + ReportCardGrades.Section;\r\n }\r\n else {\r\n if (ReportCardGrades.Term == 'Year') {\r\n this.courseName = ReportCardGrades.Course + ' - Yr';\r\n }\r\n else {\r\n this.courseName = ReportCardGrades.Course + ' - ' + ReportCardGrades.Term;\r\n }\r\n }\r\n this.teacherName = ReportCardGrades.TeacherName;\r\n if (ReportCardGrades.CourseTerms.length > 0) {\r\n const _gradingTerm = this.data.selectedGradingTerm;\r\n this.courseTerm = ReportCardGrades.CourseTerms.filter(function (el) { return el.ShortDescription = _gradingTerm; })[0];\r\n }\r\n\r\n if (this.data.selectedIsStandardView == false || this.isTermSelected == true) {\r\n const ReportCardGradesDetails = this.studentSchedules[i].ReportCardGradesTerms;\r\n for (let j = 0; j < ReportCardGradesDetails.length; j++) {\r\n if (((ReportCardGradesDetails[j].Grade != '' || ReportCardGradesDetails[j].DisplayGrade != '') && ReportCardGradesDetails[j].GradingTerm != null) || (this.isTermSelected == true && ReportCardGradesDetails[j].GradingTerm != null)) {\r\n if (ReportCardGradesDetails[j].GradingTerm == this.gradingTerm) {\r\n this.grade = ReportCardGradesDetails[j].DisplayGrade;\r\n if (ReportCardGradesDetails[j].Comment != null) {\r\n this.comment = ReportCardGradesDetails[j].Comment;\r\n }\r\n if (ReportCardGradesDetails[j].Citizenship != null) {\r\n this.citizenship = ReportCardGradesDetails[j].Citizenship;\r\n }\r\n if (ReportCardGradesDetails[j].CitizenshipLabel != null) {\r\n this.citizenshipLabel = ReportCardGradesDetails[j].CitizenshipLabel;\r\n }\r\n else {\r\n this.citizenshipLabel = 'Citizenship';\r\n }\r\n if (ReportCardGradesDetails[j].Workhabits != null) {\r\n this.workhabits = ReportCardGradesDetails[j].Workhabits;\r\n if (this.workhabits.length > 0) {\r\n this.behaviorSkills = this.workhabits.split(';');\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (let j = 0; j < this.studentSchedules[i].ReportCardGradesStandards.length; j++) {\r\n const ReportCardGradesStandard = this.studentSchedules[i].ReportCardGradesStandards[j];\r\n if (ReportCardGradesStandard != null) {\r\n if (ReportCardGradesStandard.Id == this.data.id) {\r\n const ReportCardGradesDetails = ReportCardGradesStandard.ReportCardGradesTerms;\r\n if (ReportCardGradesDetails != null) {\r\n for (let k = 0; k < ReportCardGradesDetails.length; k++) {\r\n if (ReportCardGradesDetails[k].Grade != '' && ReportCardGradesDetails[k].GradingTerm != null) {\r\n if (ReportCardGradesDetails[k].GradingTerm == this.gradingTerm) {\r\n if (ReportCardGradesDetails[k].Grade != null && ReportCardGradesDetails[k].PercentGrade != null) {\r\n this.grade = ReportCardGradesDetails[k].PercentGrade + '[' + ReportCardGradesDetails[k].Grade + ']';\r\n } else if (ReportCardGradesDetails[k].Grade != null) {\r\n this.grade = ReportCardGradesDetails[k].Grade;\r\n } else if (ReportCardGradesDetails[k].PercentGrade != null) {\r\n this.grade = ReportCardGradesDetails[k].PercentGrade;\r\n }\r\n if (this.LoginSettings.V10 && ReportCardGradesDetails[k].Comment != null) {\r\n this.comment = ReportCardGradesDetails[k].Comment;\r\n }\r\n else if (this.LoginSettings.V10 == false) {\r\n const _gradingTerm = this.gradingTerm;\r\n const traditionalGrade = this.studentSchedules[i].ReportCardGradesTerms.filter(function (el) { return el.GradingTerm = _gradingTerm; })[0];\r\n if (traditionalGrade != null && traditionalGrade.Comment != null) {\r\n this.comment = traditionalGrade.Comment;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n selectedView() {\r\n if (this.isStandardView == true && this.isTermSelected == false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n showStandard() {\r\n if (this.isStandardView == true && this.isTermSelected == false) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n viewAssignment() {\r\n if (this.data.gradingTermDesc != undefined && this.LoginSettings.V10 == true) {\r\n this.gradingTerm = this.data.gradingTermDesc;\r\n }\r\n this.assignmentService.selectedCourse = this.selectedCourse;\r\n this.assignmentService.selectedSectionId = this.selectedCourse.SiteSectionId;\r\n this.assignmentService.selectedGP = this.gradingTerm;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/assignments');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/assignments');\r\n }\r\n\r\n this.dialogRef.close('Ok was clicked');\r\n }\r\n\r\n OkClick() {\r\n this.dialogRef.close('Ok was clicked');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n}\r\n","
\r\n No Grades exist for this student.\r\n
\r\n\r\n
\r\n
\r\n
\r\n
1 && grades.SchoolName != studentEnrollment.SchoolName\"\r\n style=\"padding-top:20px;\">\r\n \r\n {{grades.SchoolName}}\r\n \r\n
\r\n\r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Meets\r\n \r\n {{ss.Meets}}\r\n \r\n \r\n Term\r\n \r\n {{ss.Term}}\r\n \r\n \r\n Course Name\r\n \r\n {{ss.Course}}\r\n \r\n \r\n Teacher\r\n \r\n {{ss.Teacher}}\r\n \r\n \r\n \r\n {{term.GradingTerm}}\r\n {{term.OverrideGradingTerm}}\r\n \r\n
\r\n 0) || (termGrade.Workhabits != null && termGrade.Workhabits.length > 0) || (termGrade.Citizenship != null && termGrade.Citizenship.length > 0) || (termGrade.GradingTermDescription != null && termGrade.GradingTermDescription.length > 0 && showAssignmentLink == true)) }\">\r\n 0) || (termGrade.Workhabits != null && termGrade.Workhabits.length > 0) || (termGrade.Citizenship != null && termGrade.Citizenship.length > 0)) || (termGrade.GradingTermDescription != null && termGrade.GradingTermDescription.length > 0 && showAssignmentLink == true)) ? 'blue' : 'black'}\">\r\n {{termGrade.DisplayGrade}}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Course-Section{{ss.SubjectCode}}-{{ss.Section}}
Credits Attempted/Earned\r\n {{ss.CreditAttempted}}/{{ss.CreditEarned}}
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Assignments\r\n \r\n Attendance\r\n \r\n Email Teacher\r\n \r\n Course\r\n / Teacher Info\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
 
\r\n
Category\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Name\r\n \r\n Weight\r\n \r\n {{term.Name}}\r\n
\r\n {{category.Name}}\r\n \r\n {{category.Weight}}%\r\n \r\n {{getCategoryAverage(ss, category, term)}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\n\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/loginSetting.model';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { SendEmailService } from '../../../shared-modules/send-email/send-email.service';\r\nimport { ReportCardGradesTerm, GradesData, GradesBehaviorSocialSkills } from '../grades.model';\r\nimport { CourseDescriptionComponent } from '../course-description/course-description.component';\r\nimport { CommentsAndBehaviorMarksComponent } from '../comments-and-behavior-marks/comments-and-behavior-marks.component';\r\nimport { ProfileViewerDialogComponent } from '../../../shared-components/profile-viewer-dialog/profile-viewer-dialog.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { AssignmentService } from '../../assignment/assignment.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { SchoolYearSettings } from '../../../shared-components/year/school-year-settings.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\n@Component({\r\n selector: 'app-traditional-grades',\r\n templateUrl: './traditional-grades.component.html',\r\n styleUrls: ['../grades.component.css'],\r\n animations: [detailExpand]\r\n})\r\nexport class TraditionalGradesComponent implements OnInit {\r\n\r\n @Input() studentSchedules: CourseSchedule[];\r\n @Input() studentTerms: ReportCardGradesTerm[];\r\n @Input() showAssignmentLink: boolean;\r\n @Input() showAttendanceLink: boolean;\r\n @Input() showSendEmailLink: boolean;\r\n @Input() isProgressGrades: boolean;\r\n @Input() isBusy: boolean;\r\n @Input() gradesBehaviorSocialSkills: GradesBehaviorSocialSkills[];\r\n @Input() schoolYearSettings: SchoolYearSettings[];\r\n LoginSettings: LoginSettings;\r\n studentEnrollment = this.studentService.studentEnrollment;\r\n traditionalGrades: GradesData[] = [];\r\n courseDescriptionDialogRef: MatDialogRef;\r\n commentsAndBehaviorMarksDialogRef: MatDialogRef;\r\n profileViewerDialogRef: MatDialogRef;\r\n selectedStudentSubscription: Subscription;\r\n\r\n constructor(\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private studentService: StudentService,\r\n private sendEmailService: SendEmailService,\r\n private assignmentService: AssignmentService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n ) {\r\n this.selectedStudentSubscription = this.studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n if (studentId > 0) {\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n if (this.studentEnrollment != undefined) {\r\n this.getTraditionalGrades();\r\n } else {\r\n this.selectedStudentSubscription = this.studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n if (studentId > 0) {\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n }\r\n });\r\n }\r\n }\r\n\r\n getTraditionalGrades() {\r\n this.traditionalGrades = [];\r\n this.studentSchedules.forEach(function (schedule) {\r\n if (schedule.ShowTraditionalTab == true) {\r\n if (this.traditionalGrades.filter(o => o.SchoolName == schedule.SchoolName).length == 0) {\r\n const siteYearId: number = schedule.SiteYearId;\r\n const schoolName: string = schedule.SchoolName;\r\n const studentSchedulesData = this.studentSchedules.filter(o => o.SchoolName == schoolName && o.ShowOnGradesPage == true && o.ShowTraditionalTab == true);\r\n let terms = [];\r\n if (this.isProgressGrades == true || this.LoginSettings.V10 == true) {\r\n terms = this.studentTerms.filter(o => o.SchoolName == schoolName);\r\n } else {\r\n this.studentTerms.forEach(term => {\r\n if (term.GradingTerm.indexOf('P') < 0 && term.SchoolName == schoolName) {\r\n terms.push(term);\r\n }\r\n });\r\n }\r\n this.traditionalGrades.push({\r\n SiteYearId: siteYearId,\r\n SchoolName: schoolName,\r\n Terms: terms,\r\n AngularMatData: new TylerMatTableDataSource(studentSchedulesData)\r\n });\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n\r\n getColumnsToDisplay(terms: ReportCardGradesTerm[], siteYearId: number) {\r\n const columnsToDisplay: string[] = ['More', 'Meets', 'Term', 'Course', 'Teacher'];\r\n const schoolYearSettings: SchoolYearSettings = this.schoolYearSettings.filter(o => o.Id == siteYearId)[0];\r\n const isProgressGrades: boolean = this.isProgressGrades;\r\n for (const term of terms) {\r\n if (this.LoginSettings.V10) {\r\n columnsToDisplay.push(term.GradingTerm);\r\n }\r\n else if (schoolYearSettings != null && ((schoolYearSettings.UsingFinalGrade && term.GradingTerm.indexOf('Y') > -1)\r\n || (schoolYearSettings.UsingSemesterGrades && (term.GradingTerm.indexOf('S') > -1) || term.GradingTerm.indexOf('X') > -1)\r\n || (schoolYearSettings.UsingTermGrades && term.GradingTerm.indexOf('T') > -1)\r\n || ((schoolYearSettings.UsingProgressGrades || isProgressGrades == true) && term.GradingTerm.indexOf('P') > -1))) {\r\n columnsToDisplay.push(term.GradingTerm);\r\n }\r\n }\r\n return columnsToDisplay;\r\n }\r\n\r\n viewAssignments(course: CourseSchedule, gradingTerm: string) {\r\n this.assignmentService.selectedCourse = course;\r\n this.assignmentService.selectedSectionId = course.SiteSectionId;\r\n this.assignmentService.selectedCourseSection = course.SubjectCode + '-' + course.Section;\r\n this.assignmentService.selectedGP = gradingTerm;\r\n this.assignmentService.preventTabSwitch = true;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/assignments');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/assignments');\r\n }\r\n }\r\n\r\n viewAttendance(course: CourseSchedule) {\r\n this.studentService.selectedCourse = course;\r\n this.studentService.selectedSectionId = course.SiteSectionId;\r\n this.studentService.selected = '3';\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/attendance');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/attendance');\r\n }\r\n }\r\n\r\n sendEmail(course: CourseSchedule) {\r\n if (course.TeacherEmail != null && course.TeacherEmail != '') {\r\n this.sendEmailService.teacherName = course.TeacherName;\r\n this.sendEmailService.teacherEmailAddress = course.TeacherEmail;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/sendEmail');\r\n }\r\n }\r\n }\r\n\r\n viewCourseDescription(subjectId: number) {\r\n const studentSchedule = this.studentSchedules.filter(function (o) { return o.Id == subjectId; })[0];\r\n this.courseDescriptionDialogRef = this.dialog.open(CourseDescriptionComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '450px',\r\n data: { studentSchedule: studentSchedule }\r\n });\r\n }\r\n\r\n viewCourseProfile(course: CourseSchedule) {\r\n this.profileViewerDialogRef = this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n courseSSEC_ID: course.Id,\r\n courseName: course.Course,\r\n courseSection: course.SubjectCode + '-' + course.Section,\r\n teacherName: course.TeacherName,\r\n school: course.SchoolName,\r\n profiles: course.CourseProfile,\r\n showTeacherProfileLink: false\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n viewTeacherProfile(course: CourseSchedule) {\r\n this.profileViewerDialogRef = this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n teacherId: course.TeacherId,\r\n teacherName: course.TeacherName,\r\n school: course.SchoolName,\r\n profiles: course.TeacherProfile\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n commentsAndBehaviorMarksClick(course: CourseSchedule, termGrade: ReportCardGradesTerm) {\r\n let grade: string = termGrade.Grade;\r\n let isGradeBookGrade: boolean = termGrade.IsGradeBookGrade;\r\n let gpDesc = termGrade.GradingTermDescription;\r\n\r\n if (grade == null) {\r\n grade = '';\r\n }\r\n\r\n if (this.LoginSettings.V10 == true && grade == '') {\r\n grade = termGrade.DisplayGrade;\r\n }\r\n\r\n if (grade.length == 0) {\r\n return false;\r\n }\r\n\r\n if (this.LoginSettings.V10 == false && this.showAssignmentLink == false) {\r\n isGradeBookGrade = false;\r\n gpDesc = '';\r\n }\r\n else if (isGradeBookGrade == false && termGrade.IsGradeBookExists) {\r\n isGradeBookGrade = true;\r\n }\r\n\r\n if (isGradeBookGrade == true && ((termGrade.Comment != null && termGrade.Comment.length > 0) || (termGrade.Workhabits != null && termGrade.Workhabits.length > 0) || (termGrade.Citizenship != null && termGrade.Citizenship.length > 0))) {\r\n this.showCommentsAndBehaviorMarksPopUp(course, termGrade, isGradeBookGrade, gpDesc);\r\n }\r\n else if ((termGrade.Comment != null && termGrade.Comment.length > 0) || (termGrade.Workhabits != null && termGrade.Workhabits.length > 0) || (termGrade.Citizenship != null && termGrade.Citizenship.length > 0)) {\r\n this.showCommentsAndBehaviorMarksPopUp(course, termGrade, isGradeBookGrade, gpDesc);\r\n }\r\n else if (isGradeBookGrade == true || (isGradeBookGrade == false && gpDesc != undefined && gpDesc != '')) {\r\n if (this.LoginSettings.V10 == false) {\r\n let gradingTerm: string = termGrade.GradingTerm;\r\n if (gradingTerm.indexOf('X') == 0) {\r\n gradingTerm = gradingTerm.replace('X', 'S');\r\n }\r\n // Get parent Term for progress grades\r\n if (this.isProgressGrades == true && gradingTerm.indexOf('P') > -1) {\r\n for (let i = 0; i < this.studentTerms.length; i++) {\r\n if (this.studentTerms[i].GradingTerm == gradingTerm) {\r\n for (let j = i + 1; j < this.studentTerms.length; j++) {\r\n if (this.studentTerms[j].GradingTerm.indexOf('T') > -1) {\r\n gradingTerm = this.studentTerms[j].GradingTerm;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.viewAssignments(course, gradingTerm);\r\n }\r\n else {\r\n this.viewAssignments(course, gpDesc);\r\n }\r\n }\r\n }\r\n\r\n showCommentsAndBehaviorMarksPopUp(course: CourseSchedule, termGrade: ReportCardGradesTerm, isGradeBookGrade: boolean, gpDesc: string) {\r\n let behaviorSocialSkillDescription = 'Behavior/SocialSkills';\r\n if (this.LoginSettings.V10 == false) {\r\n const behaviorSocialSkill = this.gradesBehaviorSocialSkills.filter(o => o.SiteYearId == course.SiteYearId)[0];\r\n if (behaviorSocialSkill != null) {\r\n behaviorSocialSkillDescription = behaviorSocialSkill.behaviorSocialSkillDescription;\r\n }\r\n }\r\n\r\n this.commentsAndBehaviorMarksDialogRef = this.dialog.open(CommentsAndBehaviorMarksComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n minWidth: '500px',\r\n data: {\r\n selectedGradeId: course.Id,\r\n selectedIsStandardView: false,\r\n selectedGradingTerm: termGrade.GradingTerm,\r\n gradingTermDesc: gpDesc,\r\n selectedStandard: 'none',\r\n isGradeBookGrade: isGradeBookGrade,\r\n selectedSubjectCode: course.SubjectCode,\r\n selectedSection: course.Section,\r\n selectedId: null,\r\n gradingScale: course.GradingCycle,\r\n schoolName: course.SchoolName,\r\n isTermSelected: false,\r\n studentSchedules: this.studentSchedules,\r\n course: course,\r\n termGrade: termGrade,\r\n behaviorSocialSkillDescription: behaviorSocialSkillDescription\r\n }\r\n });\r\n }\r\n\r\n showCategoryScores(course: CourseSchedule) {\r\n return course.CategoryAverages != undefined && course.CategoryAverages.length > 0;\r\n }\r\n\r\n getCategoryAverage(course: CourseSchedule, category, term) {\r\n const average = course.CategoryAverages.filter(c => c.TermId == term.Id && c.CategoryName == category.Name)[0];\r\n return (average != undefined) ? average.CategoryAverage : '';\r\n }\r\n\r\n actionMenuClick(menuName: string, course: CourseSchedule) {\r\n switch (menuName) {\r\n case 'Course Description':\r\n this.viewCourseDescription(course.Id);\r\n break;\r\n case 'Class Information':\r\n this.viewCourseProfile(course);\r\n break;\r\n case 'Teacher Profile':\r\n this.viewTeacherProfile(course);\r\n break;\r\n }\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.traditionalGrades[0].AngularMatData.checkExpanded(row);\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n return this.traditionalGrades[0].AngularMatData.toggleExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n return this.traditionalGrades.forEach((tr, index) => {\r\n this.traditionalGrades[index].AngularMatData.expandAll(expand);\r\n });\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n\r\n getAriaRow(row: CourseSchedule, terms: ReportCardGradesTerm[]): string {\r\n let colList: string[] = [];\r\n colList = this.getColumnsToDisplay(terms, row.SiteYearId);\r\n\r\n const dataList: string[] = [row.Meets,\r\n row.Term,\r\n row.Course,\r\n row.Teacher];\r\n for (let i = 0; i < terms.length; i++) {\r\n const detailObject = row.ReportCardGradesTerms.filter(o => o.GradingTerm == terms[i].GradingTerm);\r\n for (let j = 0; j < detailObject.length; j++) {\r\n dataList.push(detailObject[j].DisplayGrade);\r\n }\r\n }\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n getAriaDetailRow(row: CourseSchedule): string {\r\n const colList: string[] = ['Course-Section', 'Credits Attempted/Earned'];\r\n const dataList: string[] = [\r\n row.SubjectCode.concat('-', row.Section),\r\n row.CreditAttempted.toString().concat('/', row.CreditEarned.toString()),\r\n ];\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","
\r\n No Standard-Based Grades exist for this student.
\r\n
\r\n
\r\n
1 && grades.SchoolName != studentEnrollment.SchoolName\"\r\n style=\"padding-top:20px;\">\r\n {{grades.SchoolName}}\r\n
\r\n\r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Meets\r\n {{ss.Meets}}\r\n \r\n \r\n Term\r\n {{ss.Term}}\r\n \r\n \r\n Course-Section\r\n \r\n {{ss.SubjectCode}}-{{ss.Section}}\r\n \r\n \r\n Course Name\r\n \r\n {{ss.Course}}\r\n \r\n \r\n Teacher Name\r\n \r\n {{ss.Teacher}}\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n Attendance\r\n Email Teacher\r\n Course Description\r\n Class Information\r\n Teacher Profile\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Standard\r\n \r\n \r\n \r\n {{term.GradingTerm}}\r\n \r\n \r\n {{term.OverrideGradingTerm}}\r\n \r\n \r\n
{{termGrades.Standard}}\r\n
{{grade.Grade}}
\r\n
{{termGrades.Standard}}\r\n \r\n {{grade.Grade}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\n\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/loginSetting.model';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\nimport { SendEmailService } from '../../../shared-modules/send-email/send-email.service';\r\nimport { ReportCardGradesTerm, GradesData, GradesBehaviorSocialSkills } from '../grades.model';\r\nimport { CourseDescriptionComponent } from '../course-description/course-description.component';\r\nimport { CommentsAndBehaviorMarksComponent } from '../comments-and-behavior-marks/comments-and-behavior-marks.component';\r\nimport { ProfileViewerDialogComponent } from '../../../shared-components/profile-viewer-dialog/profile-viewer-dialog.component';\r\nimport { AssignmentService } from '../../assignment/assignment.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport * as _ from 'lodash';\r\nimport { SchoolYearSettings } from '../../../shared-components/year/school-year-settings.model';\r\n\r\n@Component({\r\n selector: 'app-standards-based-grades',\r\n templateUrl: './standards-based-grades.component.html',\r\n styleUrls: ['../grades.component.css'],\r\n animations: [detailExpand]\r\n})\r\nexport class StandardsBasedGradesComponent implements OnInit {\r\n\r\n @Input() studentSchedules: CourseSchedule[];\r\n @Input() studentTermsStandardTab: ReportCardGradesTerm[];\r\n @Input() showAssignmentLink: boolean;\r\n @Input() showAttendanceLink: boolean;\r\n @Input() showSendEmailLink: boolean;\r\n @Input() isProgressGrades: boolean;\r\n @Input() isBusy: boolean;\r\n @Input() gradesBehaviorSocialSkills: GradesBehaviorSocialSkills[];\r\n @Input() schoolYearSettings: SchoolYearSettings[];\r\n LoginSettings: LoginSettings;\r\n studentEnrollment = this.studentService.studentEnrollment;\r\n columnsToDisplay = ['More', 'Meets', 'Term', 'SubjectCode', 'Course', 'Teacher'];\r\n standardBasedGrades: GradesData[] = [];\r\n courseDescriptionDialogRef: MatDialogRef;\r\n commentsAndBehaviorMarksDialogRef: MatDialogRef;\r\n profileViewerDialogRef: MatDialogRef;\r\n selectedStudentSubscription: Subscription;\r\n constructor(\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private studentService: StudentService,\r\n private sendEmailService: SendEmailService,\r\n private assignmentService: AssignmentService,\r\n private userService: UserService\r\n ) {\r\n this.selectedStudentSubscription = this.studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n if (studentId > 0) {\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.getStandardBasedGrades();\r\n }\r\n\r\n getStandardBasedGrades() {\r\n this.standardBasedGrades = [];\r\n this.studentSchedules.forEach((schedule) => {\r\n if (schedule.ShowStandardTab == true) {\r\n if (this.standardBasedGrades.filter(o => o.SchoolName == schedule.SchoolName).length == 0) {\r\n const siteYearId: number = schedule.SiteYearId;\r\n const schoolName: string = schedule.SchoolName;\r\n const studentSchedulesData = this.studentSchedules.filter(o => o.SchoolName == schoolName && o.ShowOnGradesPage == true && o.ShowStandardTab == true);\r\n const terms = this.studentTermsStandardTab.filter(o => o.SchoolName == schoolName);\r\n if (!this.LoginSettings.V10) {\r\n const schoolYearSettings = this.schoolYearSettings.filter(o => o.Id == schedule.SiteYearId)[0];\r\n studentSchedulesData.forEach(element => {\r\n if (element.ReportCardGradesTerms != undefined) {\r\n element.TempReportCardGradesTerms = _.cloneDeep(element.ReportCardGradesTerms);\r\n let newTerms = element.ReportCardGradesTerms;\r\n newTerms = newTerms.filter(function (elementTerms) {\r\n return (elementTerms.GradingTerm.indexOf('P') >= 0\r\n || (schoolYearSettings && schoolYearSettings.UsingTermGrades && elementTerms.GradingTerm.indexOf('T') >= 0)\r\n || (schoolYearSettings && !schoolYearSettings.UsingTermGrades && schoolYearSettings.UsingSemesterGrades && elementTerms.GradingTerm.indexOf('S') >= 0));\r\n });\r\n element.TempReportCardGradesTerms = newTerms;\r\n }\r\n\r\n if (element.ReportCardGradesStandards != undefined) {\r\n element.ReportCardGradesStandards.forEach(elementTG => {\r\n if (elementTG.ReportCardGradesTerms != undefined) {\r\n let newGrades = elementTG.ReportCardGradesTerms;\r\n newGrades = newGrades.filter(function (elementGradingTerm) {\r\n return (elementGradingTerm.GradingTerm.indexOf('P') >= 0\r\n || (schoolYearSettings && schoolYearSettings.UsingTermGrades && elementGradingTerm.GradingTerm.indexOf('T') >= 0)\r\n || (schoolYearSettings && !schoolYearSettings.UsingTermGrades && schoolYearSettings.UsingSemesterGrades && elementGradingTerm.GradingTerm.indexOf('S') >= 0));\r\n });\r\n elementTG.ReportCardGradesTerms = newGrades;\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n studentSchedulesData.forEach(ele => {\r\n ele.TempReportCardGradesTerms = ele.ReportCardGradesTerms;\r\n });\r\n }\r\n\r\n this.standardBasedGrades.push({\r\n SiteYearId: siteYearId,\r\n SchoolName: schoolName,\r\n Terms: terms,\r\n AngularMatData: new TylerMatTableDataSource(studentSchedulesData)\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n viewAssignments(course: CourseSchedule, gradingTerm: string) {\r\n this.assignmentService.selectedCourse = course;\r\n this.assignmentService.selectedSectionId = course.SiteSectionId;\r\n this.assignmentService.selectedGP = gradingTerm;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/assignments');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/assignments');\r\n }\r\n }\r\n\r\n viewAssignment(course: CourseSchedule) {\r\n this.assignmentService.selectedCourse = course;\r\n this.assignmentService.selectedSectionId = course.SiteSectionId;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/assignments');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/assignments');\r\n }\r\n }\r\n\r\n viewAttendance(course: CourseSchedule) {\r\n this.studentService.selectedCourse = course;\r\n this.studentService.selectedSectionId = course.SiteSectionId;\r\n this.studentService.selected = '3';\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/attendance');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/attendance');\r\n }\r\n }\r\n\r\n sendEmail(course: CourseSchedule) {\r\n if (course.TeacherEmail != null && course.TeacherEmail != '') {\r\n this.sendEmailService.teacherName = course.TeacherName;\r\n this.sendEmailService.teacherEmailAddress = course.TeacherEmail;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/sendEmail');\r\n }\r\n }\r\n }\r\n\r\n viewCourseDescription(subjectId: number) {\r\n const studentSchedule = this.studentSchedules.filter(function (o) { return o.Id == subjectId; })[0];\r\n this.courseDescriptionDialogRef = this.dialog.open(CourseDescriptionComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '450px',\r\n data: { studentSchedule: studentSchedule }\r\n });\r\n }\r\n\r\n viewCourseProfile(course: CourseSchedule) {\r\n this.profileViewerDialogRef = this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n courseSSEC_ID: course.Id,\r\n courseName: course.Course,\r\n courseSection: course.SubjectCode + '-' + course.Section,\r\n teacherName: course.TeacherName,\r\n school: course.SchoolName,\r\n profiles: course.CourseProfile,\r\n showTeacherProfileLink: false\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n viewTeacherProfile(course: CourseSchedule) {\r\n this.profileViewerDialogRef = this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n teacherId: course.TeacherId,\r\n teacherName: course.TeacherName,\r\n school: course.SchoolName,\r\n profiles: course.TeacherProfile\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n commentsAndBehaviorMarksClick(course: CourseSchedule, termGrade: ReportCardGradesTerm) {\r\n if (this.LoginSettings.V10 == true || this.showGradesLink(termGrade)) {\r\n let grade: string = termGrade.Grade;\r\n let isGradeBookGrade: boolean = termGrade.IsGradeBookGrade;\r\n let gpDesc = termGrade.GradingTermDescription;\r\n\r\n if (grade == null) {\r\n grade = '';\r\n }\r\n\r\n if (this.LoginSettings.V10 == true && grade == '') {\r\n grade = termGrade.DisplayGrade;\r\n }\r\n\r\n if (this.LoginSettings.V10 == false && this.showAssignmentLink == false) {\r\n isGradeBookGrade = false;\r\n gpDesc = '';\r\n }\r\n else if (isGradeBookGrade == false && termGrade.IsGradeBookExists) {\r\n isGradeBookGrade = true;\r\n }\r\n\r\n if (isGradeBookGrade == true && ((termGrade.Comment != null && termGrade.Comment.length > 0) || (termGrade.Workhabits != null && termGrade.Workhabits.length > 0) || (termGrade.Citizenship != null && termGrade.Citizenship.length > 0))) {\r\n this.showCommentsAndBehaviorMarksPopUp(course, termGrade, isGradeBookGrade, gpDesc);\r\n }\r\n else if ((termGrade.Comment != null && termGrade.Comment.length > 0) || (termGrade.Workhabits != null && termGrade.Workhabits.length > 0) || (termGrade.Citizenship != null && termGrade.Citizenship.length > 0)) {\r\n this.showCommentsAndBehaviorMarksPopUp(course, termGrade, isGradeBookGrade, gpDesc);\r\n }\r\n else if (isGradeBookGrade == true || (isGradeBookGrade == false && gpDesc != undefined && gpDesc != '')) {\r\n if (this.LoginSettings.V10 == false) {\r\n let gradingTerm: string = termGrade.GradingTerm;\r\n if (gradingTerm.indexOf('X') == 0) {\r\n gradingTerm = gradingTerm.replace('X', 'S');\r\n }\r\n // Get parent Term for progress grades\r\n if (this.isProgressGrades == true && gradingTerm.indexOf('P') > -1) {\r\n for (let i = 0; i < this.studentTermsStandardTab.length; i++) {\r\n if (this.studentTermsStandardTab[i].GradingTerm == gradingTerm) {\r\n for (let j = i + 1; j < this.studentTermsStandardTab.length; j++) {\r\n if (this.studentTermsStandardTab[j].GradingTerm.indexOf('T') > -1 || this.studentTermsStandardTab[j].GradingTerm.indexOf('S') > -1) {\r\n gradingTerm = this.studentTermsStandardTab[j].GradingTerm;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.viewAssignments(course, gradingTerm);\r\n }\r\n }\r\n }\r\n }\r\n\r\n showCommentsAndBehaviorMarksPopUp(course: CourseSchedule, gradingTerm: ReportCardGradesTerm, isGradeBookGrade: boolean, gpDesc: string) {\r\n let behaviorSocialSkillDescription = 'Behavior/SocialSkills';\r\n if (this.LoginSettings.V10 == false) {\r\n const behaviorSocialSkill = this.gradesBehaviorSocialSkills.filter(o => o.SiteYearId == course.SiteYearId)[0];\r\n if (behaviorSocialSkill != null) {\r\n behaviorSocialSkillDescription = behaviorSocialSkill.behaviorSocialSkillDescription;\r\n }\r\n }\r\n\r\n this.commentsAndBehaviorMarksDialogRef = this.dialog.open(CommentsAndBehaviorMarksComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n minWidth: '500px',\r\n data: {\r\n selectedGradeId: course.Id,\r\n selectedIsStandardView: true,\r\n selectedGradingTerm: gradingTerm.GradingTerm,\r\n gradingTermDesc: gpDesc,\r\n selectedStandard: 'none',\r\n isGradeBookGrade: isGradeBookGrade,\r\n selectedSubjectCode: course.SubjectCode,\r\n selectedSection: course.Section,\r\n selectedId: null,\r\n gradingScale: course.GradingCycle,\r\n schoolName: course.SchoolName,\r\n isTermSelected: true,\r\n studentSchedules: this.studentSchedules,\r\n course: course,\r\n termGrade: gradingTerm,\r\n behaviorSocialSkillDescription: behaviorSocialSkillDescription\r\n }\r\n });\r\n }\r\n\r\n showGradesLink(term) {\r\n if (this.showAssignmentLink && (term.IsGradeBookGrade || term.IsGradeBookExists)) {\r\n return true;\r\n }\r\n else if (term.Comment != null && term.Comment.length > 0) {\r\n return true;\r\n }\r\n else if (term.Workhabits != null && term.Workhabits.length > 0) {\r\n return true;\r\n }\r\n else if (term.Citizenship != null && term.Citizenship.length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.standardBasedGrades[0].AngularMatData.checkExpanded(row);\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n return this.standardBasedGrades[0].AngularMatData.toggleExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n return this.standardBasedGrades.forEach((st, index) => {\r\n this.standardBasedGrades[index].AngularMatData.expandAll(expand);\r\n });\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n\r\n getAriaRow(row: CourseSchedule): string {\r\n const colList: string[] = ['Meets', 'Term', 'SubjectCode', 'Course', 'Teacher'];\r\n\r\n const dataList: string[] = [row.Meets,\r\n row.Term,\r\n row.SubjectCode.concat('-', row.Section),\r\n row.Course,\r\n row.Teacher];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList) + (row.ReportCardGradesStandards.length > 0 ? ' Expand for more details' : ' No additional details');\r\n }\r\n\r\n getAriaDetailRow(row: any): string {\r\n if (row.length > 0) {\r\n const colList: string[] = ['Standard'];\r\n for (let i = 0; i < row.length; i++) {\r\n colList.push(row[i].GradingTerm);\r\n }\r\n const reportCardGradesTerms = row[0].ReportCardGradesTerms;\r\n const dataList: string[] = [];\r\n dataList.push(row[0].Standard);\r\n for (let j = 0; j < reportCardGradesTerms.length; j++) {\r\n dataList.push(reportCardGradesTerms[j].Grade);\r\n }\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n","

Legend

\r\n\r\n
\r\n \r\n \r\n Mark\r\n {{ele.Code}}\r\n \r\n \r\n Description\r\n {{ele.Description}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n","import { Component, AfterViewInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { GradesService } from '../grades.service';\r\nimport { CurriculumMarkTypes } from '../grades.model';\r\n\r\n@Component({\r\n selector: 'app-code-legend',\r\n templateUrl: './code-legend.component.html',\r\n styles: []\r\n})\r\nexport class CodeLegendComponent implements AfterViewInit {\r\n curriculumMarkTypes: CurriculumMarkTypes[] = [];\r\n ColumnsToDisplay = ['Mark', 'Description'];\r\n courseId: number;\r\n\r\n constructor(\r\n private gradesService: GradesService,\r\n private loginService: LoginService,\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngAfterViewInit() {\r\n if (!this.loginService.LoginSettings.V10 || this.courseId > 0)\r\n this.getCurriculumMarkTypes();\r\n }\r\n\r\n getCurriculumMarkTypes() {\r\n let courseId = (this.loginService.LoginSettings.V10) ? this.courseId : 0;\r\n this.gradesService.getCurriculumMarkTypesReadForSubject(courseId).subscribe(data => {\r\n this.curriculumMarkTypes = data.filter(function (ele) { return !ele.InActive });\r\n });\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n\r\n
\r\n {{gradesMessage}}\r\n
\r\n\r\n 1\" [tabNames]=\"tabNames\" (selectionsChange)=\"selections = $event\"\r\n (selectionsChangeIndex)=\"selectionChange($event)\" [startingIndex]=\"selectionIndex\">\r\n\r\n
0) ? '155px' : '135px'}\" class=\"removePrintAbsolute\" style=\"position:absolute; right:10px; z-index:999; top:135px;\">\r\n
\r\n
\r\n = Current Grade (In-Progress, not yet finalized for Report Card)\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
","import { Component, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginSettings } from '../../shared-modules/login/loginSetting.model';\r\nimport { UserSchoolYearPolicies } from '../../shared-components/user/user-school-year-policies.model';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { CourseSchedule } from '../../shared-components/student/course-schedule.model';\r\nimport { GradesService } from './grades.service';\r\nimport { ReportCardGradesTerm, GradesPreferences, CategoryAverage, GradesBehaviorSocialSkills } from './grades.model';\r\nimport { TraditionalGradesComponent } from './traditional-grades/traditional-grades.component';\r\nimport { StandardsBasedGradesComponent } from './standards-based-grades/standards-based-grades.component';\r\nimport { CodeLegendComponent } from './code-legend/code-legend.component';\r\nimport { Student360Service } from '../student360.service';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { GradeOverrideLegendComponent } from '../../shared-components/controls/grade-override-legend/grade-override-legend.component';\r\nimport { SchoolYearSettings } from '../../shared-components/year/school-year-settings.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-grades',\r\n templateUrl: './grades.component.html',\r\n styles: []\r\n})\r\nexport class GradesComponent implements OnInit, OnDestroy {\r\n\r\n // -----------Grid functionality---------------------------------\r\n selectionIndex = 0;\r\n // ------------Element references--------------------------------\r\n @ViewChild(TraditionalGradesComponent) traditionalGradesComponent: TraditionalGradesComponent;\r\n @ViewChild(StandardsBasedGradesComponent) standardsBasedGradesComponent: StandardsBasedGradesComponent;\r\n\r\n // ------------Selection/Flags-----------------------------------\r\n expandEmitter: boolean;\r\n allowMultiSelect = true;\r\n selections: boolean[] = [];\r\n showGradesMessage = false;\r\n\r\n // ------------------------------------------------------------\r\n LoginSettings: LoginSettings;\r\n userSchoolYearPolicies: UserSchoolYearPolicies;\r\n currentUser: User;\r\n selectedStudent: Student;\r\n student360YearSubscription: Subscription;\r\n selectedStudentSubscription: Subscription;\r\n studentEnrollment = this.studentService.studentEnrollment;\r\n gradesPreferences: GradesPreferences;\r\n studentSchedules: CourseSchedule[] = [];\r\n reportCardGradesTerm: ReportCardGradesTerm[] = [];\r\n reportCardStandardGradesTerm: ReportCardGradesTerm[] = [];\r\n studentTerms: ReportCardGradesTerm[] = [];\r\n studentTermsStandardTab: ReportCardGradesTerm[] = [];\r\n categoryAverages: CategoryAverage[] = [];\r\n gradesBehaviorSocialSkills: GradesBehaviorSocialSkills[] = [];\r\n initialSelection = [];\r\n legendDialogRef: MatDialogRef;\r\n overrideLegendDialogRef: MatDialogRef;\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n selection = new SelectionModel(this.allowMultiSelect, this.initialSelection);\r\n tabNames: string[] = [];\r\n parentPortalSubscription: Subscription;\r\n staffAssignedPortalsSubscription: Subscription;\r\n schoolYearSettings: SchoolYearSettings[] = [];\r\n // ------------Selection/Flags-----------------------------------\r\n gradesMessage = '';\r\n showProgressGrades = false;\r\n isProgressGrades = false;\r\n showAssignmentLink = false;\r\n showAttendanceLink = false;\r\n showSendEmailLink = false;\r\n isBusy = true;\r\n isDualEnrollment = false;\r\n constructor(\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private userPreferencesService: UserPreferencesService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private gradesService: GradesService,\r\n private dialog: MatDialog,\r\n private parentPortalService: Student360Service,\r\n private classroom360Service: Classroom360Service\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n if (studentId > 0) {\r\n if (this.studentService.StandradTabByCurrentGrade == true) {\r\n this.selectionIndex = this.studentService.selectionIndex;\r\n }\r\n this.loadStudentInfo(studentId);\r\n }\r\n });\r\n\r\n this.student360YearSubscription = this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n });\r\n\r\n if (this.userService.userType == 1) {\r\n this.staffAssignedPortalsSubscription = this.classroom360Service.observableStaffAssignedPortalsStream$.subscribe(_ => {\r\n this.getPortalInfo();\r\n });\r\n }\r\n else {\r\n this.parentPortalSubscription = this.parentPortalService.observableParentAssignedPortalsStream$.subscribe(_ => {\r\n this.getPortalInfo();\r\n });\r\n }\r\n this.getPortalInfo();\r\n }\r\n\r\n ngOnInit() {\r\n this.showSendEmailLink = true;\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n if (this.studentService.StandradTabByCurrentGrade == true) {\r\n this.selectionIndex = this.studentService.selectionIndex;\r\n }\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n this.getPortalInfo();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.studentService.StandradTabByCurrentGrade = false;\r\n this.studentService.selectionIndex = 0;\r\n // V9 ONE-6156\r\n if (!this.loginService.LoginSettings.V10) {\r\n this.studentService.selectedCardCourse = null;\r\n }\r\n this.student360YearSubscription.unsubscribe();\r\n this.selectedStudentSubscription.unsubscribe();\r\n }\r\n\r\n getPortalInfo() {\r\n if (this.userService.userType == 1) {\r\n if (this.classroom360Service.staffAssignedPortals.filter(x => x.PortalName == 'Attendance' && x.Disabled == false && x.ParentModule != '/classroom360') != null\r\n && this.classroom360Service.staffAssignedPortals.filter(x => x.PortalName == 'Attendance' && x.Disabled == false && x.ParentModule != '/classroom360').length > 0) {\r\n this.showAttendanceLink = true;\r\n }\r\n if (this.classroom360Service.staffAssignedPortals.filter(x => x.PortalName == 'Assignments' && x.Disabled == false && x.ParentModule != '/classroom360') != null\r\n && this.classroom360Service.staffAssignedPortals.filter(x => x.PortalName == 'Assignments' && x.Disabled == false && x.ParentModule != '/classroom360').length > 0) {\r\n this.showAssignmentLink = true;\r\n }\r\n }\r\n else {\r\n if (this.parentPortalService.parentAssignedPortals.filter(x => x.PortalName == 'Attendance' && x.Disabled == false) != null\r\n && this.parentPortalService.parentAssignedPortals.filter(x => x.PortalName == 'Attendance' && x.Disabled == false).length > 0) {\r\n this.showAttendanceLink = true;\r\n }\r\n if (this.parentPortalService.parentAssignedPortals.filter(x => x.PortalName == 'Assignments' && x.Disabled == false) != null\r\n && this.parentPortalService.parentAssignedPortals.filter(x => x.PortalName == 'Assignments' && x.Disabled == false).length > 0) {\r\n this.showAssignmentLink = true;\r\n }\r\n }\r\n }\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.clearStudentData();\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n if (this.studentEnrollment != undefined) {\r\n if (this.LoginSettings != null) {\r\n if (this.LoginSettings.V10 == true) {\r\n this.getGradesMessage();\r\n }\r\n else {\r\n this.getReportCardTerms();\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearStudentData() {\r\n this.studentSchedules = [];\r\n this.reportCardGradesTerm = [];\r\n this.reportCardStandardGradesTerm = [];\r\n this.studentTerms = [];\r\n this.studentTermsStandardTab = [];\r\n this.categoryAverages = [];\r\n this.studentService.StandradTabByCurrentGrade = false;\r\n this.studentService.selectionIndex = 0;\r\n }\r\n\r\n getGradesMessage() {\r\n if (this.LoginSettings.V10) {\r\n this.userService.getUserSchoolYearPolicies(this.studentEnrollment.SiteYearId, this.studentEnrollment.SchoolId).subscribe(data => {\r\n this.userSchoolYearPolicies = data;\r\n if (this.userSchoolYearPolicies.ShowMessageOnS360GradesPage == true) {\r\n this.gradesMessage = this.userSchoolYearPolicies.S360GradesMessage;\r\n }\r\n\r\n this.getReportCardTerms();\r\n });\r\n }\r\n }\r\n\r\n getReportCardTerms() {\r\n if (this.reportCardGradesTerm.length == 0 && this.studentEnrollment.SiteYearId != undefined) {\r\n this.gradesService.getReportCardTerms(this.studentEnrollment.SiteYearId, true, false).subscribe(data => {\r\n this.reportCardGradesTerm = data;\r\n this.getReportCardTermsStandardTab();\r\n });\r\n }\r\n else {\r\n this.getUserPreferences();\r\n }\r\n }\r\n\r\n getReportCardTermsStandardTab() {\r\n if (this.reportCardStandardGradesTerm.length == 0 && this.studentEnrollment.SiteYearId != undefined) {\r\n this.gradesService.getReportCardTerms(this.studentEnrollment.SiteYearId, true, true).subscribe(data => {\r\n this.reportCardStandardGradesTerm = data;\r\n this.getUserPreferences();\r\n });\r\n }\r\n }\r\n\r\n getReportCardTermsBySiteYear(siteYearId: number, schoolName: string) {\r\n if (siteYearId != undefined && siteYearId > 0) {\r\n this.gradesService.getReportCardTerms(siteYearId, true, true).subscribe(data => {\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i].GradingTerm.indexOf('P') >= 0) {\r\n this.showProgressGrades = true;\r\n }\r\n }\r\n data.forEach(function (term: ReportCardGradesTerm) {\r\n term.SchoolName = schoolName;\r\n if (this.studentTerms.filter(function (ele) { return ele.TermDefinitionId == term.TermDefinitionId && ele.GradingTerm == term.GradingTerm; })[0] == null) {\r\n this.studentTerms.push(term);\r\n this.isDualEnrollment = true;\r\n }\r\n if (this.studentTermsStandardTab.filter(function (ele) { return ele.TermDefinitionId == term.TermDefinitionId && ele.GradingTerm == term.GradingTerm; })[0] == null) {\r\n this.studentTermsStandardTab.push(term);\r\n }\r\n }.bind(this));\r\n\r\n this.setTabDetails();\r\n });\r\n }\r\n }\r\n\r\n getUserPreferences() {\r\n if (this.LoginSettings.V10 == false) {\r\n if (this.gradesPreferences == null || this.gradesPreferences.ShowProgressGrades == undefined) {\r\n this.userPreferencesService.getUserPreferences(this.selectedStudent.Id, '/OneSISGradesPreferences', 0, '', false).subscribe(data => {\r\n this.gradesPreferences = JSON.parse(data[0]);\r\n for (let i = 0; i < this.reportCardGradesTerm.length; i++) {\r\n if (this.reportCardGradesTerm[i].GradingTerm.indexOf('P') >= 0) {\r\n this.showProgressGrades = true;\r\n }\r\n }\r\n if (this.showProgressGrades == true && this.gradesPreferences.ShowProgressGrades == true) {\r\n this.isProgressGrades = true;\r\n }\r\n\r\n this.getTerms();\r\n });\r\n }\r\n else {\r\n for (let i = 0; i < this.reportCardGradesTerm.length; i++) {\r\n if (this.reportCardGradesTerm[i].GradingTerm.indexOf('P') >= 0) {\r\n this.showProgressGrades = true;\r\n }\r\n }\r\n if (this.showProgressGrades == true && this.gradesPreferences.ShowProgressGrades == true) {\r\n this.isProgressGrades = true;\r\n }\r\n\r\n this.getTerms();\r\n }\r\n }\r\n else {\r\n this.getTerms();\r\n }\r\n }\r\n\r\n saveUserPreferences() {\r\n const xmlStream: string[] = [];\r\n this.gradesPreferences.ShowProgressGrades = this.isProgressGrades;\r\n xmlStream.push(JSON.stringify(this.gradesPreferences));\r\n\r\n this.userPreferencesService.saveUserPreferences(this.selectedStudent.Id, '/OneSISGradesPreferences', xmlStream, 0, '', false).subscribe();\r\n }\r\n\r\n getTerms() {\r\n this.studentTerms = [];\r\n this.studentTermsStandardTab = [];\r\n if (this.LoginSettings.V10 == false && this.isProgressGrades == false) {\r\n this.reportCardGradesTerm.forEach(function (term: ReportCardGradesTerm) {\r\n if (term.GradingTerm.indexOf('P') < 0) {\r\n this.studentTerms.push(term);\r\n }\r\n else {\r\n this.showProgressGrades = true;\r\n }\r\n }.bind(this));\r\n\r\n this.reportCardStandardGradesTerm.forEach(function (term: ReportCardGradesTerm) {\r\n if (term.GradingTerm.indexOf('P') < 0) {\r\n this.studentTermsStandardTab.push(term);\r\n }\r\n else {\r\n this.showProgressGrades = true;\r\n }\r\n }.bind(this));\r\n }\r\n else {\r\n if (this.isProgressGrades == true) {\r\n this.showProgressGrades = true;\r\n }\r\n this.studentTerms = this.reportCardGradesTerm;\r\n this.studentTermsStandardTab = this.reportCardStandardGradesTerm;\r\n }\r\n\r\n if (this.LoginSettings.V10 == true && this.userSchoolYearPolicies != null) {\r\n if (this.userSchoolYearPolicies.S360GradesDisplayFinalScoreGrade == true) {\r\n const finalTerm = new ReportCardGradesTerm();\r\n finalTerm.GradingTerm = 'Final';\r\n finalTerm.GradingTermDescription = 'Final';\r\n finalTerm.V10Flag = true;\r\n this.studentTerms.push(finalTerm);\r\n }\r\n }\r\n\r\n if (this.LoginSettings.V10 == true) {\r\n this.studentTermsStandardTab = this.studentTerms;\r\n }\r\n\r\n this.getStudentSchedule();\r\n }\r\n\r\n getStudentSchedule() {\r\n const siteYearId: number = this.studentEnrollment.SiteYearId;\r\n this.studentService.getStudentSchedule(this.selectedStudent.Id, this.yearService.student360Year.Id, 3, false, true, this.isProgressGrades, this.userService.userId, false, false, true, true).subscribe(data => {\r\n this.studentSchedules = data;\r\n if (this.studentSchedules.length == 0) {\r\n this.isBusy = false;\r\n if (this.selectionIndex == 0) {\r\n this.traditionalGradesComponent.traditionalGrades = [];\r\n }\r\n else if (this.selectionIndex == 1) {\r\n this.standardsBasedGradesComponent.standardBasedGrades = [];\r\n }\r\n this.tabNames = [];\r\n this.clearStudentData();\r\n }\r\n else {\r\n if (this.studentSchedules.filter(function (ele) { return ele.SiteYearId == siteYearId; }).length > 0) {\r\n const schoolName: string = this.studentSchedules.filter(function (ele) { return ele.SiteYearId == siteYearId; })[0].SchoolName;\r\n for (let j = 0; j < this.studentTerms.length; j++) {\r\n if (this.studentTerms[j].SchoolName == null) {\r\n this.studentTerms[j].SchoolName = schoolName;\r\n }\r\n }\r\n\r\n for (let k = 0; k < this.studentTermsStandardTab.length; k++) {\r\n if (this.studentTermsStandardTab[k].SchoolName == null) {\r\n this.studentTermsStandardTab[k].SchoolName = schoolName;\r\n }\r\n }\r\n }\r\n if (this.LoginSettings.V10 == false) {\r\n const siteYears: any[] = [];\r\n for (let i = 0; i < this.studentSchedules.length; i++) {\r\n if (siteYears.filter(o => o.SiteYearId == this.studentSchedules[i].SiteYearId).length == 0) {\r\n const siteYear = {\r\n SchoolId: this.studentSchedules[i].SchoolId,\r\n SiteYearId: this.studentSchedules[i].SiteYearId,\r\n SchoolName: this.studentSchedules[i].SchoolName\r\n };\r\n siteYears.push(siteYear);\r\n }\r\n }\r\n\r\n if (siteYears.length > 0) {\r\n const yearId = this.yearService.student360Year.Id != undefined && this.yearService.student360Year.Id != null ? this.yearService.student360Year.Id : this.yearService.defaultYear.Id;\r\n siteYears.forEach(function (siteYear: any) {\r\n this.getSchoolYearSettings(yearId, siteYear.SchoolId);\r\n this.getReportCardBehaviorSocialSkills(siteYear.SiteYearId, siteYear.SchoolName);\r\n this.getReportCardTermsBySiteYear(siteYear.SiteYearId, siteYear.SchoolName);\r\n }.bind(this));\r\n }\r\n else {\r\n this.setTabDetails();\r\n }\r\n }\r\n else {\r\n if (this.studentSchedules.length > 0 && this.studentSchedules[0].ReportCardGradesTerms.filter(t => t.DisplayCategoryScores).length > 0) {\r\n this.gradesService.getStudentCategoryAverage(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(avg => {\r\n for (const course of this.studentSchedules) {\r\n const averages = avg.filter(a => a.SSEC_ID == course.Id);\r\n const categoryTerms = [];\r\n const categories = [];\r\n for (const average of averages) {\r\n if (categoryTerms.filter(t => t.Id == average.TermId).length == 0) {\r\n categoryTerms.push({ Id: average.TermId, Name: average.TermName });\r\n }\r\n if (categories.filter(c => c.Name == average.CategoryName).length == 0) {\r\n categories.push({ Name: average.CategoryName, Weight: average.CategoryWeight });\r\n }\r\n }\r\n course.CategoryAverages = averages;\r\n course.CategoriesTerms = { terms: categoryTerms, categories: categories };\r\n }\r\n });\r\n }\r\n this.setTabDetails();\r\n }\r\n\r\n // Add Terms for Alternate Enrollment\r\n if (this.LoginSettings.V10 && this.studentSchedules.filter(s => s.SiteYearId != siteYearId).length > 0) {\r\n const alternateYearId = this.studentSchedules.filter(s => s.SiteYearId != siteYearId)[0].SiteYearId;\r\n const alternateSchoolName = this.studentSchedules.filter(s => s.SiteYearId == alternateYearId)[0].SchoolName;\r\n this.gradesService.getReportCardTerms(alternateYearId, true, false).subscribe(terms => {\r\n for (const term of terms) {\r\n if (term.SchoolName == null) {\r\n term.SchoolName = alternateSchoolName;\r\n }\r\n }\r\n this.reportCardGradesTerm.push.apply(this.reportCardGradesTerm, terms);\r\n // this.studentTerms.push.apply(this.studentTerms, terms);\r\n this.traditionalGradesComponent.getTraditionalGrades();\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.selectionIndex == 0) {\r\n this.traditionalGradesComponent.getTraditionalGrades();\r\n }\r\n else if (this.selectionIndex == 1) {\r\n this.standardsBasedGradesComponent.getStandardBasedGrades();\r\n // V9 ONE-6156\r\n if (this.studentService.selectedCardCourse) {\r\n if (!this.loginService.LoginSettings.V10) {\r\n if (this.standardsBasedGradesComponent.standardBasedGrades.length > 0) {\r\n const row = this.studentSchedules.find(x => (x.SubjectCode + '-' + x.Section).toString().trim().toLowerCase() == this.studentService.selectedCardCourse.CourseNumber.toString().trim().toLowerCase());\r\n this.standardsBasedGradesComponent.toggleExpanded(row);\r\n this.studentService.selectedCardCourse = null;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n getSchoolYearSettings(yearId: number, schoolId: number) {\r\n this.yearService.getSchoolYearSettings(yearId, schoolId).subscribe(data => {\r\n this.schoolYearSettings.push(data);\r\n });\r\n }\r\n\r\n setTabDetails() {\r\n this.tabNames = [];\r\n if (this.studentSchedules.filter(o => o.ShowTraditionalTab == true).length > 0) {\r\n this.tabNames.push('TRADITIONAL');\r\n }\r\n if (this.studentSchedules.filter(o => o.ShowStandardTab == true).length > 0) {\r\n this.tabNames.push('STANDARDS-BASED');\r\n if (this.tabNames.length == 1) {\r\n this.selectionIndex = 1;\r\n }\r\n }\r\n else {\r\n this.selectionIndex = 0;\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.isDualEnrollment == true) {\r\n if (this.selectionIndex == 0) {\r\n this.traditionalGradesComponent.getTraditionalGrades();\r\n }\r\n else if (this.selectionIndex == 1) {\r\n this.standardsBasedGradesComponent.getStandardBasedGrades();\r\n }\r\n }\r\n }, 100);\r\n }\r\n\r\n viewProgressGrades() {\r\n if (this.LoginSettings.V10 == true) {\r\n }\r\n else {\r\n this.saveUserPreferences();\r\n this.getReportCardTerms();\r\n }\r\n }\r\n\r\n getReportCardBehaviorSocialSkills(siteYearId: number, schoolName: string) {\r\n if (this.LoginSettings.V10 == false) {\r\n this.gradesService.getReportCardBehaviorSocialSkillDescription(siteYearId).subscribe(result => {\r\n this.gradesBehaviorSocialSkills.push({\r\n SiteYearId: siteYearId,\r\n SchoolName: schoolName,\r\n behaviorSocialSkillDescription: result\r\n });\r\n });\r\n }\r\n }\r\n\r\n selectionChange(selectionIndex: number) {\r\n this.selectionIndex = selectionIndex;\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n if (this.selectionIndex == 0) {\r\n this.traditionalGradesComponent.expandAll(expand);\r\n }\r\n else if (this.selectionIndex == 1) {\r\n this.standardsBasedGradesComponent.expandAll(expand);\r\n }\r\n }\r\n\r\n // ------------Modal window-----------------------\r\n legendClick() {\r\n this.legendDialogRef = this.dialog.open(CodeLegendComponent, { panelClass: 'tyl-mat-dialog', maxWidth: '550px' });\r\n const standardCourse = this.studentSchedules.filter(s => s.ShowStandardTab)[0];\r\n this.legendDialogRef.componentInstance.courseId = (standardCourse != undefined) ? standardCourse.Id : 0;\r\n }\r\n\r\n overrideLegendClick() {\r\n this.overrideLegendDialogRef = this.dialog.open(GradeOverrideLegendComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from './../../shared-components/System';\r\nimport { ReportCardGradesTerm, CurriculumMarkTypes, CategoryAverage } from './grades.model';\r\nimport {SharedService} from '../../shared-components/shared.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GradesService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private sharedService: SharedService\r\n ) { }\r\n\r\n // getReportCardTerms\r\n getReportCardTerms(siteYearId: number, IsprogressGrades: boolean, blnIncludeTerms: boolean): Observable {\r\n let queryString = '';\r\n queryString += '?SiteYearId=' + siteYearId +\r\n '&IsprogressGrades=' + IsprogressGrades +\r\n '&blnIncludeTerms=' + blnIncludeTerms;\r\n return this.http.get(System.apiURL.Student + 'GetReportCardTerms' + queryString);\r\n }\r\n\r\n // getCurriculumMarkTypesReadForSubject\r\n getCurriculumMarkTypesReadForSubject(siteSectionId: number): Observable {\r\n return this.sharedService.getCurriculumMarkTypesReadForSubject(siteSectionId);\r\n }\r\n\r\n // getStudentCategoryAverage\r\n getStudentCategoryAverage(studentId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetStudentCategoryAverage' + queryString);\r\n }\r\n\r\n getReportCardBehaviorSocialSkillDescription(siteYearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?siteYearId=' + siteYearId;\r\n return this.http.get(System.apiURL.Student + 'GetReportCardBehaviorSocialSkillDescription' + queryString);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ReportCardGradesTerm } from '../grades.model';\r\n\r\n@Pipe({\r\n name: 'standardsBasedGradesFilter'\r\n})\r\nexport class StandardsBasedGradesFilterPipe implements PipeTransform {\r\n\r\n transform(reportCardGradesTerms: ReportCardGradesTerm[], header: ReportCardGradesTerm): any {\r\n return reportCardGradesTerms.filter(o => o.GradingTerm == header.GradingTerm);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CourseSchedule } from '../../../shared-components/student/course-schedule.model';\r\n\r\n@Pipe({\r\n name: 'traditionalGradesFilter'\r\n})\r\nexport class TraditionalGradesFilterPipe implements PipeTransform {\r\n\r\n transform(course: CourseSchedule, gradingTerm: string): any {\r\n return course.ReportCardGradesTerms.filter(o => o.GradingTerm == gradingTerm);\r\n }\r\n}\r\n","import {System} from '../../shared-components/System';\r\nimport { Lookup } from '../../shared-components/lookup/lookup.model';\r\n\r\nexport class GPFilterParam {\r\n\r\n\tstatic planTypes: Lookup[];\r\n\tstatic planStatuses = ['Complete', 'Incomplete'];\r\n\tstatic areaStatuses = ['Complete', 'Incomplete'];\r\n\tstatic creditCodeStatuses = ['Complete', 'Incomplete'];\r\n\tstatic courseStatuses = ['Complete', 'Incomplete'];\r\n\r\n\tstatic get planTypeMap() {\r\n\t\treturn GPFilterParam.planTypes ? GPFilterParam.planTypes.map(x => x.Code) : [];\r\n\t}\r\n\r\n\tstatic get planStatusMap() {\r\n\t\treturn GPFilterParam.planStatuses.map(x => x);\r\n\t}\r\n\r\n\tstatic get areaStatusMap() {\r\n\t\treturn GPFilterParam.areaStatuses.map(x => x);\r\n\t}\r\n\r\n\tstatic get creditCodeStatusMap() {\r\n\t\treturn GPFilterParam.creditCodeStatuses.map(x => x);\r\n\t}\r\n\r\n\tstatic get courseStatusMap() {\r\n\t\treturn GPFilterParam.courseStatuses.map(x => x);\r\n\t}\r\n\r\n DefaultDisplay: string;\r\n CreditDecimalPrecision: number;\r\n PlanType: string[] = [];\r\n PlanGroup: string[] = [];\r\n GradPlanStatus: string[] = [];\r\n SubjectAreaStatus: string[] = [];\r\n CreditCodeStatus: string[] = [];\r\n CourseStatus: string[] = [];\r\n GPNeeded: number;\r\n showAllGP = false;\r\n notInGP = false;\r\n\r\n _init_defaultDisplay = 'GP|SA';\r\n _init_CreditDecimalPrecision = 4;\r\n _init_PlanType = 'all';\r\n _init_PlanGroup = 'all';\r\n _init_GradPlanStatus = 'all';\r\n _init_SubjectAreaStatus = 'all';\r\n _init_CreditCodeStatus = 'all';\r\n _init_GPNeeded = 0;\r\n _init_showAllGP = false;\r\n _init_notInGP = false;\r\n _init_CourseStatus = 'all';\r\n\r\n constructor() {\r\n this.init();\r\n }\r\n\r\n isFilterApplied(): boolean {\r\n return (\r\n this.DefaultDisplay != this._init_defaultDisplay ||\r\n !(this.PlanType.includes(this._init_PlanType) || System.arrayEqual(GPFilterParam.planTypeMap, this.PlanType)) ||\r\n !(this.PlanGroup.includes(this._init_PlanGroup)) ||\r\n\r\n !(this.GradPlanStatus.includes(this._init_GradPlanStatus) || System.arrayEqual(GPFilterParam.planStatusMap, this.GradPlanStatus)) ||\r\n !(this.SubjectAreaStatus.includes(this._init_SubjectAreaStatus) || System.arrayEqual(GPFilterParam.areaStatusMap, this.SubjectAreaStatus)) ||\r\n !(this.CreditCodeStatus.includes(this._init_CreditCodeStatus) || System.arrayEqual(GPFilterParam.creditCodeStatusMap, this.CreditCodeStatus)) ||\r\n\t\t\t!(this.CourseStatus.includes(this._init_CourseStatus) || System.arrayEqual(GPFilterParam.courseStatusMap, this.CourseStatus)) ||\r\n this.CreditDecimalPrecision != this._init_CreditDecimalPrecision ||\r\n this.GPNeeded != this._init_GPNeeded\r\n );\r\n }\r\n\r\n init() {\r\n this.DefaultDisplay = this._init_defaultDisplay;\r\n this.PlanType = [this._init_PlanType];\r\n this.PlanGroup = [this._init_PlanGroup];\r\n\r\n this.GradPlanStatus = [this._init_GradPlanStatus];\r\n this.SubjectAreaStatus = [this._init_SubjectAreaStatus];\r\n this.CreditCodeStatus = [this._init_CreditCodeStatus];\r\n\t\tthis.CourseStatus = [this._init_CourseStatus];\r\n\r\n this.CreditDecimalPrecision = this._init_CreditDecimalPrecision;\r\n this.GPNeeded = this._init_GPNeeded;\r\n // this.showAllGP = this._init_showAllGP;\r\n // this.notInGP = this._init_notInGP;\r\n }\r\n}","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { LookupService } from '../../../shared-components/lookup/lookup.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { Lookup } from '../../../shared-components/lookup/lookup.model';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { GPFilterParam } from '../gp-filter-param';\r\n\r\n@Component({\r\n selector: 'app-gp-filter',\r\n templateUrl: './gp-filter.component.html',\r\n styleUrls: ['./gp-filter.component.css']\r\n})\r\nexport class GpFilterComponent implements OnInit, OnDestroy {\r\n\r\n @Input() gpFilterParam: GPFilterParam;\r\n @Output() filterChanged = new EventEmitter();\r\n // tslint:disable-next-line:no-input-rename\r\n @Input('clearFilter') clearFilterEvent: EventEmitter;\r\n @Output() closeFilterEvent = new EventEmitter();\r\n\r\n previousFilterData: GPFilterParam;\r\n\r\n dataDefTypeOfgradutionPlanType = 1587;\r\n subscriptions: Subscription[] = [];\r\n graduationPlanTypes: Lookup[] = [];\r\n\r\n\r\n constructor(\r\n private sharedService: SharedService,\r\n private lookupService: LookupService) { }\r\n\r\n ngOnInit() {\r\n this.previousFilterData = JSON.parse(JSON.stringify(this.gpFilterParam));\r\n\r\n this.subscriptions.push(\r\n this.lookupService.getDataDefCode(this.dataDefTypeOfgradutionPlanType).subscribe(planTypes => {\r\n this.graduationPlanTypes = planTypes;\r\n GPFilterParam.planTypes = this.graduationPlanTypes;\r\n })\r\n );\r\n\r\n // Subscribes to the clear filter to clear and save when it fires\r\n if (this.clearFilterEvent) {\r\n this.subscriptions.push(\r\n this.clearFilterEvent.subscribe(() => {\r\n this.clearFilter();\r\n Object.assign(this.previousFilterData, this.gpFilterParam);\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n filterChangeByModel() {\r\n this.filterChanged.emit('changed');\r\n }\r\n\r\n filterChange(type: string) {\r\n this.filterChanged.emit(type);\r\n }\r\n\r\n clearFilter() {\r\n this.gpFilterParam.init();\r\n this.filterChange('clear');\r\n }\r\n\r\n closeFilter() {\r\n this.closeFilterEvent.emit();\r\n }\r\n\r\n}","
\r\n Filter\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Graduation Plan\r\n Graduation Plan > Subject Area\r\n Graduation Plan > Subject Area > Credit Codes\r\n Graduation Plan > Subject Area > Credit Codes > Courses\r\n \r\n \r\n \r\n\r\n \r\n \r\n 0\r\n 1\r\n 2\r\n 3\r\n 4\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
","
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Primary Graduation Plan \r\n

{{primayGradPlan.GradPlanName}}

\r\n
\r\n Declaration Date \r\n

{{primayGradPlan.DeclarationDate}}\r\n

\r\n
\r\n Parent Signature Received \r\n

{{primayGradPlan.ParentSigReceived}}\r\n

\r\n
\r\n Graduation Year \r\n

{{primayGradPlan.GraduationYear}}

\r\n
\r\n Graduation Basis \r\n

{{primayGradPlan.GraduationBasis}}\r\n

\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n More\r\n \r\n \r\n\r\n \r\n \r\n \r\n Graduation Plan/Subject Area/Credit Code/Course\r\n \r\n \r\n\r\n \r\n \r\n \r\n Required\r\n \r\n \r\n\r\n \r\n \r\n \r\n Attempted\r\n \r\n \r\n\r\n \r\n \r\n \r\n Earned\r\n \r\n \r\n\r\n \r\n \r\n \r\n Current\r\n \r\n \r\n\r\n \r\n \r\n \r\n Requested\r\n \r\n \r\n\r\n \r\n \r\n \r\n Over\r\n \r\n \r\n\r\n \r\n \r\n \r\n Need\r\n \r\n \r\n\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n 0\" [ngClass]=\"{\r\n 'detail-row-expanded-icon': tableData.checkExpanded(gradPlan),\r\n 'detail-row-collapsed-icon': !tableData.checkExpanded(gradPlan)\r\n }\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.GradPlanName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Required | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Attempted | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Earned | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Current | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Requested | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Over | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Need | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{gradPlan.Status}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n 0\" [ngClass]=\"{\r\n 'detail-row-expanded-icon': tableData.checkExpanded(subjectArea),\r\n 'detail-row-collapsed-icon': !tableData.checkExpanded(subjectArea)\r\n }\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.SubjectArea}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Required | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Attempted | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Earned | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Current | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Requested | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Over | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Need | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{subjectArea.Status}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n 0\"\r\n [ngClass]=\"{\r\n 'detail-row-expanded-icon': tableData.checkExpanded(creditCode),\r\n 'detail-row-collapsed-icon': !tableData.checkExpanded(creditCode)\r\n }\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.CreditCode}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Required | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Attempted | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Earned | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Current | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Requested | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Over | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Need | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{creditCode.Status}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{course.Course}}\r\n \r\n \r\n {{course.Course}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Required | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Attempted | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Earned | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Current | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Requested | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Over | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Need | gpCreditFormat: gpFilterParam.CreditDecimalPrecision}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{course.Status}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n 0 ? subjectArea.getTableData(gpFilterParam).toggleExpanded(creditCode) : null\">\r\n \r\n 0 && subjectArea.getTableData(gpFilterParam).checkExpanded(creditCode) ? 'expanded' : 'collapsed'\"\r\n style=\"overflow: hidden;\" class=\"mat-detail-row\">\r\n \r\n \r\n \r\n\r\n \r\n 0 ? gradPlan.getTableData(gpFilterParam).toggleExpanded(subjectArea) : null\">\r\n \r\n 0 && gradPlan.getTableData(gpFilterParam).checkExpanded(subjectArea) ? 'expanded' : 'collapsed'\"\r\n style=\"overflow: hidden;\" class=\"mat-detail-row\">\r\n \r\n \r\n \r\n\r\n \r\n 0 ? tableData.toggleExpanded(gradPlan) : null\">\r\n \r\n 0 && tableData.checkExpanded(gradPlan) ? 'expanded' : 'collapsed'\"\r\n style=\"overflow: hidden;\" class=\"mat-detail-row\">\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n","import { Component, EventEmitter, ViewEncapsulation, Output, OnDestroy, OnInit, Host, HostBinding } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { GraduationPlanService } from './graduation-plan.service';\r\nimport { GradPlanTypeModel, GraduationPlanModel } from './graduation-plan.model';\r\nimport { GPFilterParam } from './gp-filter-param';\r\nimport { OverrideCreditcodeComponent } from './override-creditcode/override-creditcode.component';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-graduation-plan',\r\n templateUrl: './graduation-plan.component.html',\r\n styleUrls: ['./graduation-plan.component.css'],\r\n animations: [detailExpand],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class GraduationPlanComponent implements OnInit, OnDestroy {\r\n @HostBinding('class.sis-app-root') sisAppRoot: Host = true;\r\n @Output() clearFilterEvent = new EventEmitter();\r\n @Output() showFilterEvent = new EventEmitter();\r\n\r\n // -----------Grid functionality---------------------------------\r\n graduationplanTypes: GradPlanTypeModel[] = [];\r\n primayGradPlan = new GraduationPlanModel();\r\n subscriptions: Subscription[] = [];\r\n showFilter = false;\r\n isFiltered = false;\r\n gpFilterParam = new GPFilterParam();\r\n currentUser: User;\r\n\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n CreditCodeOverrideDialogRef: MatDialogRef;\r\n\r\n // Table Properties\r\n tableData = new TylerMatTableDataSource();\r\n universalColumns = [\r\n 'required',\r\n 'attempted',\r\n 'earned',\r\n 'current',\r\n 'requested',\r\n 'over',\r\n 'need',\r\n 'status'\r\n ];\r\n headerTableColumns = [\r\n 'more',\r\n 'name'\r\n ].concat(this.universalColumns);\r\n gradPlanTableColumns = ['more', 'graduationPlan'].concat(this.universalColumns);\r\n subjectAreaColumns = ['more', 'subjectArea'].concat(this.universalColumns);\r\n creditCodeColumns = ['creditCodeTableMore', 'creditCode'].concat(this.universalColumns);\r\n courseColumns = ['course'].concat(this.universalColumns);\r\n previousDisplay = '';\r\n gradPlans: GraduationPlanModel[] = [];\r\n\r\n constructor(\r\n private graduationplanService: GraduationPlanService,\r\n private studentService: StudentService,\r\n private userService: UserService,\r\n private dialog: MatDialog\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.graduationplanService.gpFilterParam = this.gpFilterParam;\r\n this.subscriptions.push(\r\n this.studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.graduationplanService.getgraduationplanData();\r\n }\r\n )\r\n );\r\n this.currentUser = this.userService.currentUser;\r\n this.graduationplanService.graduationPlanFetch_Complete.subscribe(arg => {\r\n this.graduationplanTypes = this.graduationplanService.graduationplanTypes;\r\n this.gradPlans = [];\r\n this.graduationplanTypes.forEach(planType => {\r\n planType.GraduationPlans.forEach(gradPlan => {\r\n this.gradPlans.push(gradPlan);\r\n });\r\n });\r\n this.primayGradPlan = this.graduationplanService.getPrimaryGraduationPlan();\r\n this.filterChanged('init');\r\n });\r\n\r\n // footer expand/collapse button events.\r\n this.subscriptions.push(\r\n this.toggleAllRows.subscribe(toggle => {\r\n\r\n // Helper function\r\n const expandOrCollapse = (expand: boolean, object: any = this) => {\r\n let tableData = object.tableData;\r\n if (tableData == null && object.getTableData) {\r\n tableData = object.getTableData(this.gpFilterParam);\r\n }\r\n if (tableData) {\r\n tableData.expandAll(expand);\r\n for (let i = 0; i < tableData.data.length; i++) {\r\n expandOrCollapse(expand, tableData.data[i]);\r\n }\r\n }\r\n };\r\n\r\n // Expanding or collapsing\r\n expandOrCollapse(toggle);\r\n\r\n // Toggling status ???\r\n this.onToggleStatusAll(toggle);\r\n })\r\n );\r\n }\r\n\r\n filterChanged(type: string) {\r\n Object.assign(this.graduationplanService.gpFilterParam, this.gpFilterParam);\r\n // this.graduationplanService.gpFilterParam = this.gpFilterParam; // We can't do this to prevent infinite loops\r\n this.onToggleStatusAll(true);\r\n\r\n // Graduation Plan Filtering\r\n // NOTE: other filtering handled in the model's \"getTableData\" function\r\n this.tableData.data = this.gradPlans.filter(gradPlan => {\r\n if (!gradPlan.IsPrimary) {\r\n return false;\r\n } else if (!this.gpFilterParam.GradPlanStatus || this.gpFilterParam.GradPlanStatus.includes('all')) {\r\n return true;\r\n } else {\r\n return this.gpFilterParam.GradPlanStatus.includes(gradPlan.Status);\r\n }\r\n });\r\n\r\n // Expanding based on default display\r\n if (this.previousDisplay != this.gpFilterParam.DefaultDisplay || type == 'init') {\r\n this.tableData.expandAll(this.gpFilterParam.DefaultDisplay.includes('SA'));\r\n this.tableData.data.forEach(subjectArea => {\r\n subjectArea.getTableData(this.gpFilterParam).expandAll(this.gpFilterParam.DefaultDisplay.includes('CC'));\r\n subjectArea.getTableData(this.gpFilterParam).data.forEach(creditCode => {\r\n creditCode.getTableData(this.gpFilterParam).expandAll(this.gpFilterParam.DefaultDisplay.includes('CR'));\r\n });\r\n });\r\n this.previousDisplay = this.gpFilterParam.DefaultDisplay;\r\n }\r\n\r\n // Setting filtered variable\r\n this.isFiltered = this.gpFilterParam.isFilterApplied();\r\n }\r\n\r\n refetchData() {\r\n this.graduationplanService.getgraduationplanData();\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n this.graduationplanService.graduationplanTypes = [];\r\n }\r\n\r\n onToggleStatusAll(toggle: boolean) {\r\n this.graduationplanService.toggleStatusAll(toggle);\r\n }\r\n\r\n showFilterClick() {\r\n this.showFilter = !this.showFilter;\r\n }\r\n\r\n creditCodeOverrideClick(gpCourseModel) {\r\n this.CreditCodeOverrideDialogRef = this.dialog.open(OverrideCreditcodeComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n this.CreditCodeOverrideDialogRef.componentInstance.gpCourseModel_selected = gpCourseModel;\r\n this.CreditCodeOverrideDialogRef.componentInstance.creditcode_Overriden.subscribe((event) => {\r\n });\r\n\r\n this.CreditCodeOverrideDialogRef.afterClosed().subscribe(result => {\r\n });\r\n }\r\n}","import {Lookup} from '../../shared-components/lookup/lookup.model';\r\nimport {TylerMatTableDataSource} from '../../shared-components/angular-material/extended.class';\r\nimport {GPFilterParam} from './gp-filter-param';\r\nimport * as _ from 'lodash';\r\n\r\nexport class GradPlanTypeModel extends Lookup {\r\n\r\n\t// Server Properties\r\n\tGraduationPlans: GraduationPlanModel[];\r\n\tRowNumber: number;\r\n\tDefinition: string;\r\n\tIsExpanded: boolean;\r\n\r\n\t// Local Properties\r\n\tprivate _tableData = new TylerMatTableDataSource();\r\n\tprivate previousGradPlanStatus = [];\r\n\r\n\t// Methods\r\n\tgetTableData(gpFilterParam: GPFilterParam) {\r\n\t\t// PRE: the filter parameters\r\n\t\t// POST: returns a filtered data source\r\n\t\tif (!_.isEqual(this.previousGradPlanStatus, gpFilterParam.GradPlanStatus)) {\r\n\t\t\tthis._tableData.data = this.GraduationPlans.filter(gradPlan => {\r\n\t\t\t\tif (!gpFilterParam.GradPlanStatus || gpFilterParam.GradPlanStatus.includes('all')) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn gpFilterParam.GradPlanStatus.includes(gradPlan.Status);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.previousGradPlanStatus = _.clone(gpFilterParam.GradPlanStatus);\r\n\t\t}\r\n\t\treturn this._tableData;\r\n\t}\r\n}\r\n\r\nexport class GraduationPlanModel {\r\n\r\n\t// Server Properties\r\n\tSubjectAreas: GradPlanSubjectAreaModel[];\r\n\tRowNumber: number;\r\n\tGradPlan_ID: number;\r\n\tIsAssigned: boolean;\r\n IsPrimary: boolean;\r\n PlanType: string;\r\n PlanCategory: string;\r\n\tGradPlanName: string;\r\n\tDeclarationDate: string;\r\n\tParentSigReceived: string;\r\n\tGraduationYear: string;\r\n\tGraduationBasis: string;\r\n\tOverridden: boolean;\r\n\tRequired: number;\r\n\tAttempted: number;\r\n\tEarned: number;\r\n\tCurrent: number;\r\n\tRequested: number;\r\n\tOver: number;\r\n\tNeed: number;\r\n\tStatus: string;\r\n\tIsExpanded: boolean;\r\n\r\n\t// Local Properties\r\n\tprivate _tableData = new TylerMatTableDataSource();\r\n\tprivate previousSubjectAreaStatus = [];\r\n\r\n\t// Methods\r\n\tgetTableData(gpFilterParam: GPFilterParam) {\r\n\t\t// PRE: the filter parameters\r\n\t\t// POST: returns a filtered data source\r\n\t\tif (!_.isEqual(this.previousSubjectAreaStatus, gpFilterParam.SubjectAreaStatus)) {\r\n\t\t\tthis._tableData.data = this.SubjectAreas.filter(gradPlan => {\r\n\t\t\t\tif (!gpFilterParam.SubjectAreaStatus || gpFilterParam.SubjectAreaStatus.includes('all')) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn gpFilterParam.SubjectAreaStatus.includes(gradPlan.Status);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.previousSubjectAreaStatus = _.clone(gpFilterParam.SubjectAreaStatus);\r\n\t\t}\r\n\t\treturn this._tableData;\r\n\t}\r\n}\r\n\r\nexport class GradPlanSubjectAreaModel {\r\n\r\n\t// Server Properties\r\n\tCreditCodes: GradPlanCreditCodeModel[];\r\n\tRowNumber: number;\r\n\tSubjectArea: string;\r\n\tRequired: number;\r\n\tAttempted: number;\r\n\tEarned: number;\r\n\tCurrent: number;\r\n\tRequested: number;\r\n\tOver: number;\r\n\tNeed: number;\r\n\tStatus: string;\r\n\tIsExpanded: boolean;\r\n\r\n\t// Local Properties\r\n\tprivate _tableData = new TylerMatTableDataSource();\r\n\tprivate previousCreditCodeStatus = [];\r\n\r\n\t// Methods\r\n\tgetTableData(gpFilterParam: GPFilterParam) {\r\n\t\t// PRE: the filter parameters\r\n\t\t// POST: returns a filtered data source\r\n\t\tif (!_.isEqual(this.previousCreditCodeStatus, gpFilterParam.CreditCodeStatus)) {\r\n\t\t\tthis._tableData.data = this.CreditCodes.filter(gradPlan => {\r\n\t\t\t\tif (!gpFilterParam.CreditCodeStatus || gpFilterParam.CreditCodeStatus.includes('all')) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn gpFilterParam.CreditCodeStatus.includes(gradPlan.Status);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.previousCreditCodeStatus = _.clone(gpFilterParam.CreditCodeStatus);\r\n\t\t}\r\n\t\treturn this._tableData;\r\n\t}\r\n}\r\n\r\nexport class GradPlanCreditCodeModel {\r\n\r\n\t// Server Properties\r\n\tCourses: GradPlanCoursesModel[];\r\n\tRowNumber: number;\r\n\tCreditCode: string;\r\n\tOverridden: boolean;\r\n\tRequired: number;\r\n\tAttempted: number;\r\n\tEarned: number;\r\n\tCurrent: number;\r\n\tRequested: number;\r\n\tOver: number;\r\n\tNeed: number;\r\n\tStatus: string;\r\n\tIsExpanded: boolean;\r\n\r\n\t// Local Properties\r\n\tprivate _tableData = new TylerMatTableDataSource();\r\n\tprivate previousCourseStatus = [];\r\n\r\n\t// Methods\r\n\tgetTableData(gpFilterParam: GPFilterParam) {\r\n\t\t// PRE: the filter parameters\r\n\t\t// POST: returns a filtered data source\r\n\t\tif (!_.isEqual(this.previousCourseStatus, gpFilterParam.CourseStatus)) {\r\n\t\t\tthis._tableData.data = this.Courses.filter(course => {\r\n\t\t\t\tif (!gpFilterParam.CourseStatus || gpFilterParam.CourseStatus.includes('all')) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn gpFilterParam.CourseStatus.includes(course.Status);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.previousCourseStatus = _.clone(gpFilterParam.CourseStatus);\r\n\t\t}\r\n\t\treturn this._tableData;\r\n\t}\r\n}\r\n\r\nexport class GradPlanCoursesModel {\r\n\tRowNumber: number;\r\n\tGradPlan_ID: number;\r\n\tSSEC_ID: number;\r\n\tDataBucketScore_ID: number;\r\n\tCourse_ID: number;\r\n\tCourse: string;\r\n\tOverridden: boolean;\r\n\tAttempted: number;\r\n\tEarned: number;\r\n\tCurrent: number;\r\n\tRequested: number;\r\n\tStatus: string;\r\n\tIsExpanded: boolean;\r\n}\r\n\r\nexport class GPStudentNCourseInfoModel {\r\n\tRowNumber: number;\r\n\tStudentName: string;\r\n\tStudentNumberIdentifier: string;\r\n\tSubjectIdentifier: string;\r\n\tSubjectName: string;\r\n\tSectionName: string;\r\n\tCreditCode: string;\r\n\tOverrideCreditCode: string;\r\n}","import { System } from './../../shared-components/System';\r\nimport { Injectable, EventEmitter } from '@angular/core';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n\tGradPlanTypeModel,\r\n\tGraduationPlanModel,\r\n\tGradPlanCoursesModel,\r\n\tGradPlanCreditCodeModel,\r\n\tGPStudentNCourseInfoModel,\r\n\tGradPlanSubjectAreaModel\r\n} from './graduation-plan.model';\r\nimport { GPFilterParam } from './gp-filter-param';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\n\r\n@Injectable()\r\nexport class GraduationPlanService {\r\n\r\n\tgpFilterParam: GPFilterParam;\r\n\tgraduationplanTypes: GradPlanTypeModel[] = [];\r\n\tgraduationPlanFetch_Complete = new EventEmitter();\r\n\r\n\tconstructor(\r\n\t\tprivate studentService: StudentService,\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate yearService: YearService,\r\n\t\tprivate userService: UserService,\r\n\t) { }\r\n\r\n\tgetgraduationplanData() {\r\n\t\tconst queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n\t\t\t'&yearId=' + this.yearService.student360Year.Id +\r\n\t\t\t'¬InGP=' + this.gpFilterParam.notInGP +\r\n\t\t\t'&showAllGP=' + true;\r\n\r\n\t\tthis.http.get(System.apiURL.Counselor + 'GetStudentGraduationPlanProgress' + queryString).subscribe(result => {\r\n\r\n\t\t\t// Storing grad plans\r\n\t\t\tthis.graduationplanTypes = result;\r\n\t\t\tGPFilterParam.planTypes = result;\r\n\r\n\t\t\t// Performing Conversions\r\n\t\t\tfor (let i = 0; i < this.graduationplanTypes.length; i++) {\r\n\t\t\t\tthis.graduationplanTypes[i] = System.convert(this.graduationplanTypes[i], new GradPlanTypeModel());\r\n\t\t\t\tconst planType = this.graduationplanTypes[i];\r\n\t\t\t\tfor (let j = 0; j < planType.GraduationPlans.length; j++) {\r\n\t\t\t\t\tplanType.GraduationPlans[j] = System.convert(planType.GraduationPlans[j], new GraduationPlanModel());\r\n\t\t\t\t\tconst gradPlan = planType.GraduationPlans[j];\r\n\t\t\t\t\tfor (let k = 0; k < gradPlan.SubjectAreas.length; k++) {\r\n\t\t\t\t\t\tgradPlan.SubjectAreas[k] = System.convert(gradPlan.SubjectAreas[k], new GradPlanSubjectAreaModel());\r\n\t\t\t\t\t\tconst subjectArea = gradPlan.SubjectAreas[k];\r\n\t\t\t\t\t\tfor (let p = 0; p < subjectArea.CreditCodes.length; p++) {\r\n\t\t\t\t\t\t\tsubjectArea.CreditCodes[p]= System.convert(subjectArea.CreditCodes[p], new GradPlanCreditCodeModel());\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// Sending off data\r\n\t\t\tthis.graduationPlanFetch_Complete.emit('fetched');\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleStatusAll(toggle: boolean) {\r\n\t\tconst gpLevel: string = this.gpFilterParam.DefaultDisplay;\r\n\t\tthis.graduationplanTypes.forEach(function(gpType) {\r\n\t\t\tgpType.IsExpanded = gpType.GraduationPlans.length > 0 && toggle && gpLevel.indexOf('GP') >= 0;\r\n\r\n\t\t\tgpType.GraduationPlans.forEach(function(gp) {\r\n\t\t\t\tgp.IsExpanded = toggle && gpLevel.indexOf('SA') >= 0;\r\n\r\n\t\t\t\tgp.SubjectAreas.forEach(function(sa) {\r\n\t\t\t\t\tsa.IsExpanded = toggle && gpLevel.indexOf('CC') >= 0;\r\n\r\n\t\t\t\t\tsa.CreditCodes.forEach(function(cc) {\r\n\t\t\t\t\t\tcc.IsExpanded = toggle && gpLevel.indexOf('CR') >= 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\tgetPrimaryGraduationPlan(): GraduationPlanModel {\r\n\t\tlet matches = [];\r\n\t\tthis.graduationplanTypes.forEach(d => {\r\n\t\t\tmatches = matches.concat(d.GraduationPlans.filter(f => f.IsPrimary));\r\n\t\t});\r\n\t\treturn matches[0] ? matches[0] : new GraduationPlanModel();\r\n\t}\r\n\r\n\tgetAllCoursesByGradPlanID(gradPlan: number): GradPlanCoursesModel[] {\r\n\t\tlet matches: GradPlanCoursesModel[] = [];\r\n\r\n\t\tconst gradPlanModel: GraduationPlanModel = this.getGraduationPlanById(gradPlan);\r\n\r\n\t\tconst reducer = (array, item) => array.concat(item['CreditCodes'].map(s => s.Courses));\r\n\t\tmatches = gradPlanModel.SubjectAreas\r\n\t\t.reduce(reducer, [])\r\n\t\t.reduce((array, item) => array.concat(item))\r\n\t\t.map(g => {\r\n\t\t\tg.Course_ID = g.DataBucketScore_ID > 0 ? (-1 * g.DataBucketScore_ID) : g.SSEC_ID;\r\n\t\t\treturn g;\r\n\t\t});\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetGraduationPlanById(gradPlan: number): GraduationPlanModel {\r\n\t\tlet matches = [];\r\n\t\tthis.graduationplanTypes.forEach(d => {\r\n\t\t\tmatches = matches.concat(d.GraduationPlans.filter(f => f.GradPlan_ID === gradPlan));\r\n\t\t});\r\n\t\treturn matches[0];\r\n\t}\r\n\r\n\tgetAllDistinctGraduationPlans(): GraduationPlanModel[] {\r\n\t\tlet matches: GraduationPlanModel[] = [];\r\n\r\n\t\tconst reducer = (array, item) => array.concat(item['GraduationPlans'].map(gp => ({ GradPlan_ID: gp.GradPlan_ID, GradPlanName: gp.GradPlanName })));\r\n\t\tmatches = this.graduationplanTypes.reduce(reducer, []);\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetGraduationPlanOverrideCreditCodes(gradplanId: number, databucketscoreId: number, ssec_id: number): Observable {\r\n\t\tconst queryString = '?gradplanId=' + gradplanId +\r\n\t\t\t'&databucketscoreId=' + databucketscoreId +\r\n\t\t\t'&ssec_id=' + ssec_id +\r\n\t\t\t'&ayIdentifier=' + this.yearService.student360Year.AYIdentifier +\r\n\t\t\t'&siteId=' + this.yearService.student360Year.SchoolID;\r\n\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetGraduationPlanOverrideCreditCodes' + queryString);\r\n\t}\r\n\r\n\tgetStudentAndCourseInfo(databucketscoreId: number, ssec_id: number): Observable {\r\n\t\tconst queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n\t\t\t'&databucketscoreId=' + databucketscoreId +\r\n\t\t\t'&ssec_id=' + ssec_id;\r\n\r\n\t\treturn this.http.get(System.apiURL.Student + 'GetStudentAndCourseInfo' + queryString);\r\n\t}\r\n\r\n\toverrideCreditCode(databucketscoreId: number, ssecId: number, gradPlanId: number, creditCode: string): Observable {\r\n const queryString = '?studentId=' + this.studentService.selectedStudent.Id + '&databucketscoreId=' + databucketscoreId + '&ssecId=' + ssecId + '&gradPlanId= ' + gradPlanId + '&creditCode=' + creditCode;\r\n\t\treturn this.http.get(System.apiURL.Student + 'OverrideCreditCode' + queryString);\r\n\t}\r\n\r\n}\r\n","
\r\n
\r\n Override Credit Code\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n (Not Available)\r\n \r\n \r\n {{ c.Course }}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n (Not Available)\r\n \r\n \r\n {{ gp.GradPlanName }}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Student Name:{{gpGPStudentNCourseInfoModel?.StudentName}}Student Number:{{gpGPStudentNCourseInfoModel?.StudentNumberIdentifier}}\r\n
Course Identifier:{{gpGPStudentNCourseInfoModel?.SubjectIdentifier}}Course Name:{{gpGPStudentNCourseInfoModel?.SubjectName}}
Section Name:{{gpGPStudentNCourseInfoModel?.SectionName}}Academic Year:{{yearService.student360Year.AYIdentifier}}
Credit Code(s):{{gpGPStudentNCourseInfoModel?.CreditCode}}
\r\n
\r\n \r\n \r\n 0\" translate>\r\n \r\n (Not\r\n Available)\r\n \r\n {{ cc.CreditCode }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { GPStudentNCourseInfoModel, GradPlanCoursesModel, GradPlanCreditCodeModel, GraduationPlanModel } from '../graduation-plan.model';\r\nimport { GraduationPlanService } from '../graduation-plan.service';\r\n\r\n@Component({\r\n selector: 'app-override-creditcode',\r\n templateUrl: './override-creditcode.component.html',\r\n styleUrls: ['./override-creditcode.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class OverrideCreditcodeComponent implements AfterViewInit {\r\n\r\n @Input() gpCourseModel_selected: GradPlanCoursesModel;\r\n @Output() creditcode_Overriden = new EventEmitter();\r\n\r\n saveEvent: EventEmitter = new EventEmitter();\r\n\r\n gpCourses: GradPlanCoursesModel[];\r\n gpOverrideCreditCodes: GradPlanCreditCodeModel[] = [];\r\n graduationPlans: GraduationPlanModel[];\r\n gpGPStudentNCourseInfoModel: GPStudentNCourseInfoModel;\r\n fromAcademicProgress: boolean;\r\n\r\n course_Id = -1;\r\n gradPlan_Id = -1;\r\n override_creditcode = '-1';\r\n\r\n instance: OverrideCreditcodeComponent;\r\n public errorList: ErrorList[] = [];\r\n\r\n constructor(\r\n private graduationplanService: GraduationPlanService,\r\n private dialogRef: MatDialogRef,\r\n public yearService: YearService\r\n ) {\r\n this.instance = this;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.course_Id = this.gpCourseModel_selected.SSEC_ID;\r\n this.gradPlan_Id = this.gpCourseModel_selected.GradPlan_ID;\r\n if (!this.fromAcademicProgress) {\r\n this.graduationPlans = (!this.graduationPlans) ? this.graduationplanService.getAllDistinctGraduationPlans() : this.graduationPlans;\r\n this.gpCourses = this.graduationplanService.getAllCoursesByGradPlanID(this.gradPlan_Id);\r\n }\r\n setTimeout(() => this.load_gpGPStudentNCourseInfoModel());\r\n }\r\n\r\n saveOrCancel(save: boolean) {\r\n if (save) {\r\n const found = (!this.fromAcademicProgress) ? this.getSelectedCourseObject(this.course_Id) : this.gpCourseModel_selected;\r\n if (found) {\r\n if (this.override_creditcode == '-1') {\r\n this.errorList.push({\r\n fieldName: 'Override Credit Code',\r\n fieldRef: undefined,\r\n errorMsg: 'is required'\r\n });\r\n }\r\n else {\r\n const creditCodeModel: GradPlanCreditCodeModel = new GradPlanCreditCodeModel();\r\n creditCodeModel.CreditCode = this.override_creditcode;\r\n\r\n this.graduationplanService.overrideCreditCode(found.DataBucketScore_ID, found.SSEC_ID, this.gradPlan_Id, creditCodeModel.CreditCode).subscribe(x => {\r\n this.saveEvent.emit(true);\r\n this.graduationplanService.getgraduationplanData();\r\n this.dialogRef.close();\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n load_gpGPStudentNCourseInfoModel() {\r\n this.graduationplanService.getStudentAndCourseInfo(\r\n this.gpCourseModel_selected.DataBucketScore_ID,\r\n this.gpCourseModel_selected.SSEC_ID\r\n ).subscribe(resultset => {\r\n this.gpGPStudentNCourseInfoModel = resultset;\r\n this.override_creditcode = this.gpGPStudentNCourseInfoModel.OverrideCreditCode;\r\n this.load_OverrideCreditCodes(this.gpCourseModel_selected.Course_ID);\r\n });\r\n }\r\n\r\n load_OverrideCreditCodes(course_ID: number) {\r\n const found = this.getSelectedCourseObject(course_ID);\r\n this.course_Id = found ? found.Course_ID : -1;\r\n\r\n this.graduationplanService.getGraduationPlanOverrideCreditCodes(\r\n this.gradPlan_Id,\r\n found ? found.DataBucketScore_ID : -1,\r\n found ? found.SSEC_ID : -1,\r\n ).subscribe(resultset => {\r\n this.gpOverrideCreditCodes = resultset;\r\n const creditfound = this.gpOverrideCreditCodes.filter(x => x.CreditCode == this.gpGPStudentNCourseInfoModel.OverrideCreditCode)[0];\r\n this.override_creditcode = creditfound ? creditfound.CreditCode : '-1';\r\n });\r\n }\r\n\r\n gradPlan_change() {\r\n this.gpCourses = this.graduationplanService.getAllCoursesByGradPlanID(this.gradPlan_Id);\r\n this.load_OverrideCreditCodes(this.gpCourseModel_selected.Course_ID);\r\n }\r\n\r\n course_change() {\r\n this.load_OverrideCreditCodes(this.course_Id);\r\n }\r\n\r\n getSelectedCourseObject(course_ID: number): GradPlanCoursesModel {\r\n return this.gpCourses.filter(x => x.Course_ID == course_ID)[0];\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'gpCreditFormat'\r\n})\r\nexport class GpCreditFormatPipe implements PipeTransform {\r\n\r\n constructor() {}\r\n\r\n transform(value: number, creditpre = 4): string { return value != null ? value.toFixed(creditpre) : ''; }\r\n\r\n}\r\n","\r\n
No\r\n Medications data exists for student
\r\n
0\">\r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Medication\r\n \r\n \r\n {{med.Medication}}\r\n \r\n \r\n Frequency\r\n \r\n \r\n {{med.Frequency}}\r\n \r\n \r\n Start Date\r\n \r\n \r\n \r\n {{med.StartDate|date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n End Date\r\n \r\n \r\n \r\n {{med.EndDate|date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n Dose\r\n \r\n \r\n {{med.Dose}}\r\n \r\n \r\n \r\n School Authorized
to Administer
\r\n \r\n
\r\n {{med.SchoolAuthorisedToAdminister}}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n
PharmacyPhoneRx NumberDoctor
{{med.Pharmacy}}{{med.Phone}}{{med.RxNumber}}{{med.Doctor}}
\r\n Comments
\r\n

{{med.Comments}}

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
","import { Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild, OnDestroy } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { HealthService } from '../health.service';\r\nimport { Medications } from '../health.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\n\r\n@Component({\r\n selector: 'app-medications',\r\n templateUrl: './medications.component.html',\r\n styles: [],\r\n animations: [detailExpand]\r\n})\r\nexport class MedicationsComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() selectedStudent;\r\n isBusy = false;\r\n medications: Medications[] = [];\r\n medicationSelected: boolean[] = [];\r\n LoginSettings: LoginSettings;\r\n student360YearSubscription: Subscription;\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayedMedicationColumns = ['More', 'Medication', 'Frequency', 'StartDate', 'EndDate', 'Dose', 'SchoolAuthorisedToAdminister'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n constructor(\r\n private healthService: HealthService,\r\n private loginService: LoginService,\r\n private yearService: YearService\r\n ) {\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.medications);\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n if (this.LoginSettings.V10 == true) {\r\n this.displayedMedicationColumns = ['More', 'Medication', 'StartDate', 'EndDate', 'Dose', 'SchoolAuthorisedToAdminister'];\r\n }\r\n\r\n this.student360YearSubscription = this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.getMedication();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedStudent.previousValue != undefined) {\r\n if (changes.selectedStudent.currentValue.Id != changes.selectedStudent.previousValue.Id) {\r\n this.getMedication();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getMedication();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n toggleMore(index: number) {\r\n this.medicationSelected[index] = !this.medicationSelected[index];\r\n }\r\n\r\n toggleExpanded(row: Medications) {\r\n if (row.Pharmacy || row.Phone || row.RxNumber || row.Doctor || row.Comments) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n }\r\n\r\n checkExpanded(row: Medications): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: Medications) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n getMedication() {\r\n this.angularMatData = new TylerMatTableDataSource();\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.healthService.getMedication(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.medications = data;\r\n this.loadMedicationHistory();\r\n });\r\n }, 0);\r\n }\r\n\r\n loadMedicationHistory(): void {\r\n this.angularMatData = new TylerMatTableDataSource(this.medications);\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n this.isBusy = false;\r\n }\r\n\r\n ShowRow(Pharmacy, Phone, RxNumber, Doctor, Comment, Parent, Id): boolean {\r\n if (Pharmacy == null) {\r\n Pharmacy = '';\r\n }\r\n if (Phone == null) {\r\n Phone = '';\r\n }\r\n if (RxNumber == null) {\r\n RxNumber = '';\r\n }\r\n if (Doctor == null) {\r\n Doctor = '';\r\n }\r\n if (Comment == null) {\r\n Comment = '';\r\n }\r\n if (Parent == 'Parent') {\r\n if (Pharmacy.length > 0 || Phone.length > 0 || RxNumber.length > 0 || Doctor.length > 0 || Comment.length > 0) {\r\n return true;\r\n }\r\n }\r\n else {\r\n if (Pharmacy.length > 0 || Phone.length > 0 || RxNumber.length > 0 || Doctor.length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n if (Parent == 'Parent') {\r\n if (document.getElementById('span' + Id) != null) {\r\n document.getElementById('span' + Id).style.display = 'none';\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getMedicationAriaRow(row: Medications): string {\r\n let colList: string[] = [''];\r\n let dataList: string[] = [''];\r\n\r\n if (this.LoginSettings.V10 == false) {\r\n colList = ['Medication', 'Frequency', 'StartDate', 'EndDate', 'Dose', 'SchoolAuthorisedToAdminister'];\r\n dataList = [row.Medication, row.Frequency, row.StartDate.toString(), row.EndDate.toString(), row.Dose, row.SchoolAuthorisedToAdminister];\r\n }\r\n else {\r\n colList = ['Medication', 'StartDate', 'EndDate', 'Dose', 'SchoolAuthorisedToAdminister'];\r\n dataList = [row.Medication, row.StartDate.toString(), row.EndDate.toString(), row.Dose, row.SchoolAuthorisedToAdminister];\r\n }\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","\r\n \r\n Screened\r\n \r\n \r\n {{element.ScreenedDate|date:'MM/dd/yy'}}\r\n \r\n \r\n Series\r\n \r\n \r\n {{element.SeriesName}}\r\n \r\n \r\n \r\n Sports Screening\r\n \r\n \r\n {{element.SportsScreening == true ? 'Yes' : 'No'}}\r\n \r\n \r\n \r\n {{screeningId == 8 ? 'Requested' : 'Scheduled' | translate}}\r\n \r\n \r\n {{element.ScheduledDate|date:'MM/dd/yy'}}\r\n \r\n \r\n {{screeningId == 8 ? 'Areas' : 'Result' | translate}}\r\n \r\n \r\n {{element.ResultCode}}\r\n \r\n \r\n Referral\r\n \r\n \r\n {{element.Referral}}\r\n \r\n \r\n Referral Status\r\n \r\n \r\n {{element.ReferralStatus}}\r\n \r\n \r\n Comments\r\n \r\n \r\n {{element.Comments}}\r\n \r\n \r\n Height (inches)\r\n \r\n \r\n {{element.Height | number:'.0-2'}}\r\n \r\n \r\n Weight (pounds)\r\n \r\n \r\n {{element.Weight| number:'.0-2'}}\r\n \r\n \r\n BMI\r\n \r\n \r\n {{element.BMI| number:'.0-2'}}\r\n \r\n \r\n BMI Percentile\r\n \r\n \r\n {{element.BMIPercentile| number:'.0-1'}}\r\n \r\n\r\n \r\n \r\n\r\n","import { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { IndividualScreenings } from '../../health.model';\r\nimport { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\n@Component({\r\n selector: 'app-screening-detail',\r\n templateUrl: './screening-detail.component.html'\r\n})\r\nexport class ScreeningDetailComponent implements OnInit {\r\n\r\n @Input() screeningdetail: IndividualScreenings[];\r\n @Input() screeningId: number;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayColumns: string[] = [];\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.displayColumns.push('ScreenedDate');\r\n if (this.screeningId != 8 && this.screeningId != 3 && this.screeningId != 9) {\r\n this.displayColumns.push('SeriesName');\r\n }\r\n if (this.screeningId == 9) {\r\n this.displayColumns.push('SportsScreening');\r\n }\r\n if (this.screeningId != 9) {\r\n this.displayColumns.push('ScheduledDate');\r\n }\r\n if (this.screeningId != 3) {\r\n this.displayColumns.push('ResultCode');\r\n this.displayColumns.push('Referral');\r\n }\r\n if (this.screeningId == 9) {\r\n this.displayColumns.push('ReferralStatus');\r\n }\r\n if (this.screeningId != 3 && this.screeningId != 9) {\r\n this.displayColumns.push('Comments');\r\n }\r\n if (this.screeningId == 3) {\r\n this.displayColumns.push('Height', 'Weight', 'BMI', 'BMIPercentile');\r\n\r\n }\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.screeningdetail);\r\n setTimeout(() => this.angularMatData.sort = this.sort);\r\n }\r\n\r\n}\r\n","\r\n
No Screening\r\n data exists for student
\r\n
0\">\r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Screening\r\n \r\n \r\n {{s.ScreeningType}}\r\n \r\n \r\n \r\n
No screening data exists for student
\r\n
0\">\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
","import { Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { HealthService } from '../health.service';\r\nimport { Screening } from '../health.model';\r\n\r\n@Component({\r\n selector: 'app-screening',\r\n templateUrl: './screening.component.html',\r\n styles: [],\r\n animations: [detailExpand]\r\n})\r\nexport class ScreeningComponent implements OnInit, OnChanges {\r\n\r\n @Input() selectedStudent;\r\n isBusy = false;\r\n screening: Screening[] = [];\r\n screeningSelected: boolean[] = [];\r\n\r\n //----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayedScreeningColumn = ['More', 'ScreeningType'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n constructor(\r\n private healthService: HealthService) {\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.screening);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedStudent.previousValue != undefined) {\r\n if (changes.selectedStudent.currentValue.Id != changes.selectedStudent.previousValue.Id) {\r\n this.getScreenings();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getScreenings();\r\n }\r\n\r\n toggleMore(index: number) {\r\n this.screeningSelected[index] = !this.screeningSelected[index];\r\n }\r\n\r\n toggleExpanded(row: Screening) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: Screening): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: Screening) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n getScreenings() {\r\n this.angularMatData = new TylerMatTableDataSource();\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.healthService.getScreenings(this.selectedStudent.Id).subscribe(data => {\r\n this.screening = data;\r\n this.loadScreeningHistory();\r\n });\r\n }, 0);\r\n }\r\n\r\n loadScreeningHistory(): void {\r\n this.angularMatData = new TylerMatTableDataSource(this.screening);\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n this.isBusy = false;\r\n }\r\n\r\n //------------Aria/Accessibility---------------------------\r\n getScreeningAriaRow(row: Screening): string {\r\n const colList: string[] = ['ScreeningType'];\r\n const dataList: string[] = [row.ScreeningType];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","\r\n

\r\n Results Legend\r\n

\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeDescriptionScreening
{{code.Code}}{{code.Definition}}{{code.ScreeningType}}
\r\n
\r\n\r\n\r\n\r\n \r\n\r\n\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CodeLegend } from '../../health.model';\r\n\r\n@Component({\r\n selector: 'app-code-legend',\r\n templateUrl: './code-legend.component.html',\r\n styles: []\r\n})\r\nexport class CodeLegendComponent implements OnInit {\r\n\r\n legendCodes: CodeLegend[];\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n dialogRef.disableClose = true;\r\n }\r\n\r\n ngOnInit() {\r\n this.legendCodes = this.data.legendCodes;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","
No Doctors data exists for student
\r\n
0 \">\r\n \r\n \r\n Name\r\n \r\n \r\n {{doc.DoctorName}}\r\n \r\n \r\n Address\r\n \r\n \r\n {{doc.Address}}\r\n \r\n \r\n Telephone\r\n \r\n \r\n {{doc.Telephone}}\r\n \r\n \r\n Email\r\n \r\n \r\n {{doc.Email}}\r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewChild, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { HealthService } from '../health.service';\r\nimport { Doctors } from '../health.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-doctors',\r\n templateUrl: './doctors.component.html',\r\n styles: []\r\n})\r\nexport class DoctorsComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() selectedStudent;\r\n isBusy = false;\r\n doctors: Doctors[] = [];\r\n LoginSettings: LoginSettings;\r\n student360YearSubscription: Subscription;\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayDoctorsColumns = ['DoctorName', 'Telephone'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n constructor(\r\n private healthService: HealthService,\r\n private loginService: LoginService,\r\n private yearService: YearService\r\n ) {\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.doctors);\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n if (this.LoginSettings.V10 == true) {\r\n this.displayDoctorsColumns = ['DoctorName', 'Address', 'Telephone', 'Email'];\r\n }\r\n\r\n this.student360YearSubscription = this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.getDoctors();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedStudent.previousValue != undefined) {\r\n if (changes.selectedStudent.currentValue.Id != changes.selectedStudent.previousValue.Id) {\r\n this.getDoctors();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getDoctors();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n getDoctors() {\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.healthService.getDoctors(this.selectedStudent.Id, this.yearService.student360Year.Id).pipe(take(1)).subscribe(data => {\r\n this.doctors = data;\r\n this.loadDoctorHistory();\r\n });\r\n }, 0);\r\n }\r\n\r\n loadDoctorHistory(): void {\r\n this.angularMatData = new TylerMatTableDataSource(this.doctors);\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n this.isBusy = false;\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getDoctorsAriaRow(row: Doctors): string {\r\n let colList: string[] = [''];\r\n let dataList: string[] = [''];\r\n\r\n if (this.LoginSettings.V10 == false) {\r\n colList = ['DoctorName', 'Telephone'];\r\n dataList = [row.DoctorName, row.Telephone];\r\n }\r\n else {\r\n colList = ['DoctorName', 'Address', 'Telephone', 'Email'];\r\n dataList = [row.DoctorName, row.Address, row.Telephone, row.Email];\r\n }\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","
No Health Visit Log data exists for student
\r\n
0 \">\r\n \r\n \r\n Date\r\n \r\n \r\n \r\n {{hvl.Date|date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n Time In\r\n \r\n \r\n {{hvl.TimeIn}}\r\n \r\n \r\n Time Out\r\n \r\n \r\n {{hvl.TimeOut}}\r\n \r\n \r\n Visit Reason\r\n \r\n \r\n {{hvl.VisitReason}}\r\n \r\n \r\n Action\r\n \r\n \r\n {{hvl.Action}}\r\n \r\n \r\n Sent To\r\n \r\n \r\n {{hvl.SentTo}}\r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewChild, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { HealthService } from '../health.service';\r\nimport { HealthVisitLog } from '../health.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\n\r\n@Component({\r\n selector: 'app-health-visit-log',\r\n templateUrl: './health-visit-log.component.html',\r\n styles: []\r\n})\r\nexport class HealthVisitLogComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() selectedStudent;\r\n @Input() studentEnrollment;\r\n isBusy = false;\r\n healthVisitLog: HealthVisitLog[] = [];\r\n LoginSettings: LoginSettings;\r\n student360YearSubscription: Subscription;\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayedHealthColumns = ['Date', 'TimeIn', 'TimeOut', 'VisitReason', 'Action', 'SentTo'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n constructor(\r\n private healthService: HealthService,\r\n private loginService: LoginService,\r\n private yearService: YearService\r\n ) {\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.healthVisitLog);\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n if (this.LoginSettings.V10) {\r\n this.displayedHealthColumns = ['Date', 'TimeIn', 'TimeOut', 'VisitReason', 'SentTo'];\r\n }\r\n\r\n this.student360YearSubscription = this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.getHealthVisitLog();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedStudent.previousValue != undefined) {\r\n if (changes.selectedStudent.currentValue.Id != changes.selectedStudent.previousValue.Id) {\r\n this.getHealthVisitLog();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getHealthVisitLog();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n getHealthVisitLog() {\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.healthService.getHealthVisitLog(this.selectedStudent.Id, this.yearService.student360Year.Id, this.studentEnrollment.SiteYearId).subscribe(data => {\r\n this.healthVisitLog = data;\r\n this.loadHealthVisitLogHistory();\r\n });\r\n }, 0);\r\n }\r\n\r\n loadHealthVisitLogHistory(): void {\r\n this.angularMatData = new TylerMatTableDataSource(this.healthVisitLog);\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n this.isBusy = false;\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getHealthVisitLogAriaRow(row: HealthVisitLog): string {\r\n let colList: string[] = [''];\r\n let dataList: string[] = [''];\r\n\r\n if (this.LoginSettings.V10 == true) {\r\n colList = ['Date', 'TimeIn', 'TimeOut', 'VisitReason', 'SentTo'];\r\n dataList = [row.Date.toString(), row.TimeIn, row.TimeOut, row.VisitReason, row.SentTo];\r\n }\r\n else {\r\n colList = ['Date', 'TimeIn', 'TimeOut', 'VisitReason', 'Action', 'SentTo'];\r\n dataList = [row.Date.toString(), row.TimeIn, row.TimeOut, row.VisitReason, row.Action, row.SentTo];\r\n }\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","
No Immunizations data exists for student
\r\n
0 \">\r\n \r\n \r\n Name\r\n \r\n \r\n {{element.Name}}\r\n \r\n \r\n Doses Received\r\n \r\n \r\n \r\n \r\n \r\n Exemption Code\r\n \r\n \r\n {{element.ExemptCode}}\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{element.Date1|date:'MM/dd/yy'}}{{element.Date2|date:'MM/dd/yy'}}{{element.Date3|date:'MM/dd/yy'}}{{element.Date4|date:'MM/dd/yy'}}{{element.Date5|date:'MM/dd/yy'}}{{element.Date6|date:'MM/dd/yy'}}
{{element.Date7|date:'MM/dd/yy'}}{{element.Date8|date:'MM/dd/yy'}}{{element.Date9|date:'MM/dd/yy'}}{{element.Date10|date:'MM/dd/yy'}}{{element.Date11|date:'MM/dd/yy'}}{{element.Date12|date:'MM/dd/yy'}}
{{element.Date13|date:'MM/dd/yy'}}{{element.Date14|date:'MM/dd/yy'}}{{element.Date15|date:'MM/dd/yy'}}{{element.Date16|date:'MM/dd/yy'}}{{element.Date17|date:'MM/dd/yy'}}{{element.Date18|date:'MM/dd/yy'}}
{{element.Date19|date:'MM/dd/yy'}}{{element.Date20|date:'MM/dd/yy'}}
\r\n
\r\n
\r\n","import { Component, OnInit, ViewChild, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { HealthService } from '../health.service';\r\nimport { Immunizations } from '../health.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-immunizations',\r\n templateUrl: './immunizations.component.html',\r\n styles: []\r\n})\r\nexport class ImmunizationsComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() selectedStudent;\r\n isBusy = false;\r\n immunizations: Immunizations[] = [];\r\n student360YearSubscription: Subscription;\r\n\r\n //----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayedImmunizationColumns = ['Name', 'DosesReceived', 'ExemptionCode'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n constructor(\r\n private healthService: HealthService,\r\n private yearService: YearService,\r\n ) {\r\n this.angularMatData = new TylerMatTableDataSource(this.immunizations);\r\n\r\n this.student360YearSubscription = this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.getImmunizations();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedStudent.previousValue != undefined) {\r\n if (changes.selectedStudent.currentValue.Id != changes.selectedStudent.previousValue.Id) {\r\n this.getImmunizations();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getImmunizations();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n getImmunizations() {\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.healthService.getImmunizations(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.immunizations = data;\r\n this.loadImmunizationHistory();\r\n });\r\n }, 0);\r\n }\r\n\r\n private loadImmunizationHistory(): void {\r\n this.angularMatData = new TylerMatTableDataSource(this.immunizations);\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 250);\r\n this.isBusy = false;\r\n }\r\n\r\n //------------Aria/Accessibility---------------------------\r\n getImmunizationsAriaRow(row: Immunizations): string {\r\n const colList: string[] = ['Name', 'DosesReceived', 'ExemptionCode'];\r\n const dataList: string[] = [row.Name, row.Date1.toString(), row.ExemptCode];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","
No Insurance data exists for student
\r\n
0 \">\r\n \r\n \r\n Company\r\n \r\n \r\n {{ins.InsuranceCompany}}\r\n \r\n \r\n Policy\r\n \r\n \r\n {{ins.Policy}}\r\n \r\n \r\n Start Date\r\n \r\n \r\n \r\n {{ins.InsuranceStartDate|date:'MM/dd/yyyy'}}\r\n \r\n \r\n \r\n End Date\r\n \r\n \r\n \r\n {{ins.InsuranceEndDate|date:'MM/dd/yyyy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewChild, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { HealthService } from '../health.service';\r\nimport { Insurance } from '../health.model';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-insurance',\r\n templateUrl: './insurance.component.html',\r\n styles: []\r\n})\r\nexport class InsuranceComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() selectedStudent;\r\n isBusy = false;\r\n insurance: Insurance[] = [];\r\n student360YearSubscription: Subscription;\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayedInsuranceColumn = ['InsuranceCompany', 'Policy', 'InsuranceStartDate', 'InsuranceEndDate'];\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n constructor(\r\n private healthService: HealthService,\r\n private yearService: YearService\r\n ) {\r\n this.angularMatData = new TylerMatTableDataSource(this.insurance);\r\n\r\n this.student360YearSubscription = this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n this.getInsurance();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedStudent.previousValue != undefined) {\r\n if (changes.selectedStudent.currentValue.Id != changes.selectedStudent.previousValue.Id) {\r\n this.getInsurance();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getInsurance();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n getInsurance() {\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.healthService.getInsurance(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.insurance = data;\r\n this.loadInsuranceHistory();\r\n });\r\n }, 0);\r\n }\r\n\r\n loadInsuranceHistory(): void {\r\n this.angularMatData = new TylerMatTableDataSource(this.insurance);\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n this.isBusy = false;\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getInsuranceAriaRow(row: Insurance): string {\r\n const colList: string[] = ['InsuranceCompany', 'Policy', 'InsuranceStartDate', 'InsuranceEndDate'];\r\n const dataList: string[] = [row.InsuranceCompany, row.Policy, row.InsuranceStartDate.toString(), row.InsuranceEndDate.toString()];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n 0\" [tabNames]=\"tabNames\" [setIndex]=\"setIndex\" (selectionsChangeIndex)=\"selectionChange($event)\">\r\n
\r\n
0\">\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
No health information has been enabled by the administration.
\r\n
\r\n
\r\n
\r\n\r\n\t\r\n \r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n
\r\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { HealthService } from './health.service';\r\nimport { MedicationsComponent } from './medications/medications.component';\r\nimport { ScreeningComponent } from './screening/screening.component';\r\nimport { CodeLegendComponent } from './screening/code-legend/code-legend.component';\r\nimport { CodeLegend } from './health.model';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { DoctorsComponent } from './doctors/doctors.component';\r\nimport { HealthVisitLogComponent } from './health-visit-log/health-visit-log.component';\r\nimport { ImmunizationsComponent } from './immunizations/immunizations.component';\r\nimport { InsuranceComponent } from './insurance/insurance.component';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-health',\r\n templateUrl: './health.component.html',\r\n styleUrls: []\r\n})\r\nexport class HealthComponent implements OnInit, OnDestroy {\r\n\r\n // -----------Grid functionality---------------------------------\r\n selectionIndex = 0;\r\n // ------------Element references--------------------------------\r\n @ViewChild('tabContent', { read: ElementRef }) tabContentRef: ElementRef;\r\n @ViewChild(DoctorsComponent) doctorsComponent: DoctorsComponent;\r\n @ViewChild(HealthVisitLogComponent) healthVisitLogComponent: HealthVisitLogComponent;\r\n @ViewChild(ImmunizationsComponent) immunizationsComponent: ImmunizationsComponent;\r\n @ViewChild(InsuranceComponent) insuranceComponent: InsuranceComponent;\r\n @ViewChild(MedicationsComponent) medicationsComponent: MedicationsComponent;\r\n @ViewChild(ScreeningComponent) screeningComponent: ScreeningComponent;\r\n\r\n // ------------Selection/Flags-----------------------------------\r\n expandEmitter: boolean;\r\n allowMultiSelect = true;\r\n setIndex = new EventEmitter();\r\n selectedTabName: string;\r\n\r\n // ------------------------------------------------------------\r\n currentUser: User;\r\n selectedStudent: Student;\r\n routeSelectedTabIndex: number;\r\n selectedStudentSubscription: Subscription;\r\n studentEnrollment = this.studentService.studentEnrollment;\r\n legendCodes: any = [];\r\n initialSelection = [];\r\n legendDialogRef: MatDialogRef;\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n selection = new SelectionModel(this.allowMultiSelect, this.initialSelection);\r\n tabNames: string[] = [];\r\n\r\n constructor(\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private healthService: HealthService,\r\n private dialog: MatDialog,\r\n private loginService: LoginService,\r\n private activatedRoute: ActivatedRoute\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.userService.currentUser.V10 == false || this.loginService.LoginSettings.S360DisplayImmunizations) {\r\n this.tabNames.push('Immunizations');\r\n }\r\n if (this.userService.currentUser.V10 == false || this.loginService.LoginSettings.S360DisplayMedications) {\r\n this.tabNames.push('Medications');\r\n }\r\n if (this.userService.currentUser.V10 == false || this.loginService.LoginSettings.S360DisplayHealthVisitLog) {\r\n this.tabNames.push('Health Visit Log');\r\n }\r\n if (this.userService.currentUser.V10 == false || this.loginService.LoginSettings.S360DisplayDoctors) {\r\n this.tabNames.push('Practitioner');\r\n }\r\n if (this.userService.currentUser.V10 == false || this.loginService.LoginSettings.S360DisplayInsurane) {\r\n this.tabNames.push('Insurance');\r\n }\r\n if (this.userService.currentUser.V10 == true && this.loginService.LoginSettings.S360DisplayScreenings) {\r\n this.tabNames.push('Screenings');\r\n }\r\n if (this.tabNames.length > 0) {\r\n this.selectedTabName = this.tabNames[0];\r\n }\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n const selectedTab = params['selectedTab'];\r\n if (selectedTab) {\r\n for (let i = 0; i < this.tabNames.length; i++) {\r\n if (this.tabNames[i] == selectedTab) {\r\n this.routeSelectedTabIndex = i;\r\n setTimeout(() => {\r\n this.setIndex.emit(this.routeSelectedTabIndex);\r\n }, 500);\r\n }\r\n }\r\n }\r\n });\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.selectedStudentSubscription.unsubscribe();\r\n }\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) {\r\n return student.Id == studentId;\r\n })[0];\r\n }\r\n\r\n selectionChange(selectionIndex: number) {\r\n this.selectedTabName = this.tabNames[selectionIndex];\r\n this.selectionIndex = selectionIndex;\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n if (this.selectedTabName == 'Medications') {\r\n this.medicationsComponent.expandAll(expand);\r\n } else if (this.selectedTabName == 'Screenings') {\r\n this.screeningComponent.expandAll(expand);\r\n }\r\n }\r\n\r\n isCurrentTabFiltered(): boolean {\r\n switch (this.selectionIndex) {\r\n case 0:\r\n if (this.immunizationsComponent) {\r\n return this.immunizationsComponent.angularMatData.isFiltered();\r\n }\r\n break;\r\n case 1:\r\n if (this.medicationsComponent) {\r\n return this.medicationsComponent.angularMatData.isFiltered();\r\n }\r\n break;\r\n case 2:\r\n if (this.healthVisitLogComponent) {\r\n return this.healthVisitLogComponent.angularMatData.isFiltered();\r\n }\r\n break;\r\n case 3:\r\n if (this.doctorsComponent) {\r\n return this.doctorsComponent.angularMatData.isFiltered();\r\n }\r\n break;\r\n case 4:\r\n if (this.insuranceComponent) {\r\n return this.insuranceComponent.angularMatData.isFiltered();\r\n }\r\n break;\r\n case 5:\r\n if (this.screeningComponent) {\r\n return this.screeningComponent.angularMatData.isFiltered();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return false;\r\n }\r\n\r\n clearCurrentTabFilters() {\r\n switch (this.selectionIndex) {\r\n case 0:\r\n if (this.immunizationsComponent) {\r\n this.immunizationsComponent.angularMatData.removeAllFilters();\r\n }\r\n break;\r\n case 1:\r\n if (this.medicationsComponent) {\r\n this.medicationsComponent.angularMatData.removeAllFilters();\r\n }\r\n break;\r\n case 2:\r\n if (this.healthVisitLogComponent) {\r\n this.healthVisitLogComponent.angularMatData.removeAllFilters();\r\n }\r\n break;\r\n case 3:\r\n if (this.doctorsComponent) {\r\n this.doctorsComponent.angularMatData.removeAllFilters();\r\n }\r\n break;\r\n case 4:\r\n if (this.insuranceComponent) {\r\n this.insuranceComponent.angularMatData.removeAllFilters();\r\n }\r\n break;\r\n case 5:\r\n if (this.screeningComponent) {\r\n this.screeningComponent.angularMatData.removeAllFilters();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n // ------------Modal window-----------------------\r\n codeLegendClick() {\r\n let legendCodes: CodeLegend[] = [];\r\n this.healthService.getScreeningCodeLegend(this.selectedStudent.Id).subscribe(data => {\r\n legendCodes = data;\r\n\r\n this.legendDialogRef = this.dialog.open(CodeLegendComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n minWidth: '25%',\r\n maxWidth: '25%',\r\n minHeight: '25%',\r\n maxHeight: '50%',\r\n data: {\r\n legendCodes: legendCodes\r\n }\r\n });\r\n\r\n this.legendDialogRef.componentInstance.legendCodes = legendCodes;\r\n this.legendDialogRef.afterClosed().subscribe(result => {\r\n });\r\n });\r\n }\r\n}\r\n","export class Immunizations {\r\n Id: number;\r\n Name: string;\r\n ExemptCode: string;\r\n ExemptCodeId: string;\r\n VaccineTypeId: string;\r\n ExemptDate: Date;\r\n Date1: Date;\r\n Date2: Date;\r\n Date3: Date;\r\n Date4: Date;\r\n Date5: Date;\r\n Date6: Date;\r\n Date7: Date;\r\n Date8: Date;\r\n Date9: Date;\r\n Date10: Date;\r\n Date11: Date;\r\n Date12: Date;\r\n Date13: Date;\r\n Date14: Date;\r\n Date15: Date;\r\n Date16: Date;\r\n Date17: Date;\r\n Date18: Date;\r\n Date19: Date;\r\n Date20: Date;\r\n ImmunizationsNote: string;\r\n}\r\n\r\nexport class Medications {\r\n Id: number;\r\n Medication: string;\r\n Frequency: string;\r\n StartDate: Date;\r\n EndDate: Date;\r\n Dose: string;\r\n SchoolAuthorisedToAdminister: string;\r\n Pharmacy: string;\r\n Phone: string;\r\n RxNumber: string;\r\n Doctor: string;\r\n Comments: string;\r\n}\r\n\r\nexport class Doctors {\r\n Id: number;\r\n DoctorName: string;\r\n Address: string;\r\n Telephone: string;\r\n Email: string;\r\n Type: string;\r\n TypeCode: string;\r\n PhysiciansId: number;\r\n PhysicianTypeId: number;\r\n Comment: string;\r\n PhysicianName: string;\r\n PracticeName: string;\r\n DateStart: Date;\r\n DateEnd: Date;\r\n //// Non DTO Field ////\r\n\r\n PhysicianDescription: string;\r\n DoctorType: string;\r\n}\r\n\r\nexport class HealthVisitLog {\r\n Id: number;\r\n Date: Date;\r\n TimeIn: string;\r\n TimeOut: string;\r\n VisitReason: string;\r\n Action: string;\r\n SentTo: string;\r\n}\r\n\r\nexport class Insurance {\r\n Id: number;\r\n PhysiciansId: number;\r\n PhysicianTypeId: string;\r\n InsuranceCompany: string;\r\n InsuranceStartDate: Date;\r\n InsuranceEndDate: Date;\r\n Policy: string;\r\n Primary: string;\r\n Phone: string;\r\n Comment: string;\r\n\r\n constructor() {\r\n this.Id = 0;\r\n this.PhysiciansId = 0;\r\n this.PhysicianTypeId = '2'; // Insurance\r\n this.InsuranceCompany = '';\r\n this.InsuranceStartDate = null;\r\n this.InsuranceEndDate = null;\r\n this.Policy = '';\r\n this.Primary = '';\r\n this.Phone = '';\r\n this.Comment = '';\r\n }\r\n}\r\n\r\nexport class Screening {\r\n Id: number;\r\n ScreeningType: string;\r\n Screenings: IndividualScreenings[];\r\n}\r\n\r\nexport class IndividualScreenings {\r\n HealthScreeningId: number;\r\n ScreeningName: string;\r\n SeriesName: string;\r\n ScheduledDate: Date;\r\n ScreenedDate: Date;\r\n Result: string;\r\n ResultCode: string;\r\n Referral: string;\r\n Comments: string;\r\n Height: number;\r\n Weight: number;\r\n BMI: number;\r\n BMIPercentile: number;\r\n ReferralStatus: string;\r\n SportsScreening: boolean;\r\n}\r\n\r\nexport class CodeLegend {\r\n CodeID: number;\r\n Code: string;\r\n Definition: string;\r\n CodeType: string;\r\n ScreeningType: string;\r\n}\r\n\r\nexport class HealthNotes {\r\n StudentId: number;\r\n MedicalImmunizationNote: string;\r\n MedicalConditionNote: string;\r\n MedicalPhysicianInformationNote: string;\r\n MedicalInsuranceNote: string;\r\n RecordStatus: string;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from './../../shared-components/System';\r\nimport { CodeLegend, Doctors, HealthVisitLog, Immunizations, Insurance, Medications, Screening } from './health.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HealthService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n // Get Immunizations\r\n getImmunizations(studentId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetImmunizations' + queryString);\r\n }\r\n\r\n // Get Medication\r\n getMedication(studentId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetMedication' + queryString);\r\n }\r\n\r\n // Get HealthVisitLog\r\n getHealthVisitLog(studentId: number, yearId: number, siteYearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId + '&siteYearId=' + siteYearId;\r\n return this.http.get(System.apiURL.Student + 'GetHealthVisitLog' + queryString);\r\n }\r\n\r\n // Get Doctors\r\n getDoctors(studentId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'getDoctors' + queryString);\r\n }\r\n\r\n // Get Insurance\r\n getInsurance(studentId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetInsurance' + queryString);\r\n }\r\n\r\n // Get Screenings\r\n getScreenings(studentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetScreenings' + queryString);\r\n }\r\n\r\n // Get ScreeningCodeLegend\r\n getScreeningCodeLegend(studentId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId;\r\n return this.http.get(System.apiURL.Student + 'GetScreeningCodeLegend' + queryString);\r\n }\r\n}","

Attachments

\r\n\r\n
\r\n \r\n \r\n Description\r\n \r\n \r\n {{attachment.DocumentDescription}}\r\n \r\n \r\n \r\n \r\n File Name\r\n {{attachment.DocumentName}}\r\n \r\n \r\n Attached\r\n {{attachment.CreatedDate| date: 'MM/dd/yy'}}\r\n \r\n \r\n Attached By\r\n {{attachment.AttachedBy}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { System } from '../../../shared-components/System';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { StudentAttachment } from '../../../shared-modules/student-attachment/student-attachment.model';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { IepService } from '../iep.service';\r\nimport { SpedDocumentAttachment } from '../iep.model';\r\n\r\n@Component({\r\n selector: 'app-iep-documents',\r\n templateUrl: './iep-documents.component.html',\r\n styles: []\r\n})\r\nexport class IepDocumentsComponent implements OnInit {\r\n\r\n docAttachments: SpedDocumentAttachment[] = [];\r\n columnsToDisplay: string[] = ['DocumentDescription', 'DocumentName', 'CreatedDate', 'AttachedBy'];\r\n\r\n constructor(\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private iepService: IepService,\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public document: any\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.getDocumentAttachments();\r\n }\r\n\r\n getDocumentAttachments() {\r\n this.iepService.getSpedDocumentAttachments(this.studentService.selectedStudent.Id, this.document.SpedCollectionToStudentId, this.userService.userId).subscribe(attachments => {\r\n this.docAttachments = attachments;\r\n });\r\n }\r\n\r\n viewAttachmentClick(attachmentId) {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: attachmentId,\r\n DocumentName: 'IEPAttachedDocument.pdf',\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: 'Documents',\r\n ReportParameters: [],\r\n ReportType: 0\r\n };\r\n\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n const win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n win.focus();\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n\r\n getAriaRow(row: SpedDocumentAttachment): string {\r\n const colList: string[] = ['DocumentDescription', 'DocumentName', 'CreatedDate', 'AttachedBy'];\r\n const dataList: string[] = [row.DocumentDescription, row.DocumentName, new Date(row.CreatedDate).toDateString(), row.AttachedBy];\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","\r\n \r\n
\r\n
\r\n No IEP data exists for student.\r\n
\r\n
0\">\r\n \r\n \r\n \r\n \r\n {{collection.CollectionName | translate}}\r\n \r\n \r\n \r\n \r\n \r\n\t\t\t\t\t\t 0\" aria-label=\"Expand row for more details\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n View\r\n \r\n \r\n \r\n {{field | translate}}\r\n \r\n \r\n {{detail.FieldValue[field]}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{detail.Attachment}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 ? 'expanded' : 'collapsed'\"\r\n style=\"overflow: hidden\">\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription, Observable, forkJoin } from 'rxjs';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { System } from '../../shared-components/System';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { StudentAttachment } from '../../shared-modules/student-attachment/student-attachment.model';\r\nimport { IepService } from './iep.service';\r\nimport { SpedCollection, DocumentFieldData, SpedDocument, SpedDocumentAttachment } from './iep.model';\r\nimport { IepDocumentsComponent } from './iep-documents/iep-documents.component';\r\n\r\n// -------Angular Material------------------------------------\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { AriaDirective } from '../../shared-components/directives/aria.directive';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\n\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-iep',\r\n templateUrl: './iep.component.html',\r\n animations: [detailExpand],\r\n styles: []\r\n})\r\nexport class IepComponent implements OnInit, OnDestroy {\r\n\r\n // ------------------------------------------------------------\r\n selectedStudent: Student;\r\n selectedStudentSubscription: Subscription;\r\n spedCollection: SpedCollection[];\r\n spedDocuments: DocumentFieldData[];\r\n docAttachments: SpedDocumentAttachment[] = [];\r\n iepData: SpedCollection[] = [];\r\n rowExpanded: boolean[];\r\n iepDocumentsDialogRef: MatDialogRef;\r\n isBusy: boolean;\r\n SDMIntegration: boolean;\r\n V10: boolean;\r\n\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n columnsToDisplay: string[] = ['CollectionName', 'Expand'];\r\n columnsToDisplayDetailRow: string[] = [];\r\n\r\n constructor(\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private iepService: IepService,\r\n private dialog: MatDialog,\r\n private loginService: LoginService\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.SDMIntegration = this.loginService.LoginSettings.SDMIntegration;\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n this.getSpedCollection();\r\n }\r\n\r\n getSpedCollection() {\r\n this.isBusy = true;\r\n this.spedCollection = [];\r\n const serverCalls: Observable = forkJoin(\r\n this.iepService.getSpedCollection(this.selectedStudent.Id, this.yearService.student360Year.Id, this.userService.userId),\r\n this.iepService.getSpedDocuments(this.selectedStudent.Id, 0, this.userService.userId),\r\n this.iepService.getSpedDocumentAttachments(this.selectedStudent.Id, 0, this.userService.userId)\r\n );\r\n\r\n serverCalls.subscribe(results => {\r\n let docFields: DocumentFieldData[] = [];\r\n let docAttachments: SpedDocumentAttachment[] = [];\r\n\r\n if (results[0] != null) {\r\n this.spedCollection = results[0];\r\n }\r\n if (results[1] != null) {\r\n docFields = results[1];\r\n }\r\n if (results[2] != null) {\r\n docAttachments = results[2];\r\n }\r\n\r\n const documents: SpedDocument[] = [];\r\n docFields.forEach(element => {\r\n if (documents.filter(function (doc) { return doc.SpedCollectionToStudentId == element.SpedCollectionToStudentId; }).length == 0) {\r\n const objDoc: SpedDocument = {\r\n StudentID: element.StudentID,\r\n SpedCollectionId: element.SpedCollectionId,\r\n SpedCollectionToStudentId: element.SpedCollectionToStudentId,\r\n CollectionStatusId: element.CollectionStatusId,\r\n TemplateVersionId: element.TemplateVersionId,\r\n Attachment: element.Attachment,\r\n ShowAttachmentColumn: element.ShowAttachmentColumn,\r\n FieldData: [],\r\n FieldValue: {}\r\n };\r\n\r\n objDoc.FieldData = Object.assign(docFields.filter(function (field) { return field.SpedCollectionToStudentId == element.SpedCollectionToStudentId; }));\r\n const dictionaryData: { [key: string]: string } = {};\r\n if (objDoc.FieldData != undefined) {\r\n objDoc.FieldData.forEach(data => {\r\n dictionaryData[data.FieldDescription] = data.FieldValue;\r\n });\r\n objDoc.FieldValue = dictionaryData;\r\n }\r\n documents.push(objDoc);\r\n }\r\n\r\n for (let i = 0; i < this.spedCollection.length; i++) {\r\n this.spedCollection[i].Documents = [];\r\n this.spedCollection[i].Fields = [];\r\n if (this.spedCollection[i].CollectionName == 'Imported Documents') {\r\n this.spedCollection[i].Documents = docAttachments;\r\n this.spedCollection[i].Documents.forEach(elem => {\r\n elem.FieldValue = {\r\n Description: elem.DocumentDescription,\r\n Filename: elem.DocumentName,\r\n Created: elem.CreatedDate,\r\n User: elem.AttachedBy\r\n };\r\n });\r\n this.spedCollection[i].Fields = ['Description', 'Filename', 'Created', 'User'];\r\n }\r\n else {\r\n for (let j = 0; j < documents.length; j++) {\r\n if (this.spedCollection[i].Id == documents[j].SpedCollectionId) {\r\n this.spedCollection[i].Documents.push(documents[j]);\r\n }\r\n }\r\n\r\n if (this.spedCollection[i].Documents.length > 0) {\r\n this.spedCollection[i].Documents[0].FieldData.sort((a, b) => {\r\n if (a.ShowOnSummaryGrid < b.ShowOnSummaryGrid) {\r\n return -1;\r\n }\r\n else if (b.ShowOnSummaryGrid < a.ShowOnSummaryGrid) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n\r\n for (let k = 0; k < this.spedCollection[i].Documents[0].FieldData.length; k++) {\r\n if (this.spedCollection[i].Documents[0].FieldData[k].FieldDescription && this.spedCollection[i].Fields.indexOf(this.spedCollection[i].Documents[0].FieldData[k].FieldDescription) == -1) {\r\n this.spedCollection[i].Fields.push(this.spedCollection[i].Documents[0].FieldData[k].FieldDescription);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.iepData = [];\r\n this.spedCollection.forEach(element => {\r\n if (element.Documents != undefined && element.Documents.length > 0) {\r\n this.iepData.push(element);\r\n }\r\n });\r\n this.angularMatData = new TylerMatTableDataSource(this.iepData);\r\n this.expandAll(true);\r\n this.isBusy = false;\r\n });\r\n }\r\n\r\n getColumnsToDisplay(collectionRow: SpedCollection) {\r\n this.columnsToDisplayDetailRow = ['View'];\r\n if (collectionRow != null || collectionRow != undefined) {\r\n if (collectionRow.Fields != undefined) {\r\n if (collectionRow.Fields.length > 0) {\r\n collectionRow.Fields.forEach(field => {\r\n if (field != undefined && field != '' && this.columnsToDisplayDetailRow.indexOf(field) == -1) {\r\n this.columnsToDisplayDetailRow.push(field);\r\n }\r\n });\r\n }\r\n if (collectionRow.CollectionName != 'Imported Documents') {\r\n this.columnsToDisplayDetailRow.push('Attachment');\r\n }\r\n }\r\n }\r\n return this.columnsToDisplayDetailRow;\r\n }\r\n\r\n columnsToDisplayCount(objFields: string[]) {\r\n this.columnsToDisplayDetailRow = ['View'];\r\n if (objFields.length > 0) {\r\n objFields.forEach(field => {\r\n if (field != undefined && field != '' && this.columnsToDisplayDetailRow.indexOf(field) == -1) {\r\n this.columnsToDisplayDetailRow.push(field);\r\n }\r\n });\r\n }\r\n this.columnsToDisplayDetailRow.push('Attachment');\r\n return this.columnsToDisplayDetailRow.length;\r\n }\r\n\r\n viewDocumentAttachmentDialog(document) {\r\n this.iepDocumentsDialogRef = this.dialog.open(IepDocumentsComponent, {\r\n data: document,\r\n disableClose: true,\r\n minWidth: '750px'\r\n });\r\n }\r\n\r\n viewDocumentClick(document, collectionName) {\r\n if (document.SpedDocumentId != null && document.SpedDocumentId != undefined) {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: document.SpedDocumentId,\r\n DocumentName: 'IEPAttachedDocument.pdf',\r\n DocumentBase64: '',\r\n DocumentMimeType: '',\r\n DocumentModuleName: 'Documents',\r\n ReportParameters: [],\r\n ReportType: 0\r\n };\r\n\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n const win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n win.focus();\r\n }\r\n else {\r\n let win = undefined;\r\n if (!window.navigator)\r\n win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n this.iepService.viewCollectionDocument(document.SpedCollectionId,\r\n this.selectedStudent.Id,\r\n document.SpedCollectionToStudentId,\r\n document.CollectionStatusId,\r\n document.TemplateVersionId,\r\n this.userService.userId,\r\n this.userService.currentUser.LoginSchoolId,\r\n this.yearService.student360Year.Id).subscribe(docBase64String => {\r\n\r\n const byteCharacters = atob(docBase64String);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const FileAsBlob = new Blob([byteArray], { type: 'application/pdf' });\r\n window.open(URL.createObjectURL(FileAsBlob), '_blank');\r\n });\r\n }\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getAriaRow(row: SpedCollection): string {\r\n const colList: string[] = ['CollectionName'];\r\n const dataList: string[] = [row.CollectionName];\r\n return AriaDirective.concatAriaStrings(colList, dataList) + (row.Documents.length > 0 ? ' Expand for more details' : ' No additional details');\r\n }\r\n\r\n getAriaDetailRow(fields: any, row: any): string {\r\n const colList: string[] = this.getColumnsToDisplay(fields);\r\n const dataList: string[] = [];\r\n for (let index = 0; index < colList.length; index++) {\r\n if (row.FieldValue[colList[index]] != undefined) {\r\n dataList.push(row.FieldValue[colList[index]]);\r\n }\r\n else {\r\n dataList.push('');\r\n }\r\n }\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n to_trustedHtml(html_code) {\r\n if (html_code != null) {\r\n html_code = JSON.parse(JSON.stringify(html_code)).replace(new RegExp('\\n', 'g'), '
');\r\n html_code = html_code.replace(new RegExp('
', 'g'), ' ');\r\n }\r\n return html_code;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from './../../shared-components/System';\r\nimport { SpedCollection, DocumentFieldData, SpedDocumentAttachment } from './iep.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IepService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n getSpedCollection(studentId: number, yearId: number, userId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&userId=' + userId;\r\n return this.http.get(System.apiURL.Student + 'GetSpedCollection' + queryString);\r\n }\r\n\r\n getSpedDocuments(studentId: number, collectionId: number, userId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&collectionId=' + collectionId +\r\n '&userId=' + userId;\r\n return this.http.get(System.apiURL.Student + 'GetSpedDocuments' + queryString);\r\n }\r\n\r\n getSpedDocumentAttachments(studentId: number, spedCollectionToStudentId: number, userId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&spedCollectionToStudentId=' + spedCollectionToStudentId +\r\n '&userId=' + userId;\r\n return this.http.get(System.apiURL.Student + 'GetSpedDocumentAttachments' + queryString);\r\n }\r\n\r\n viewCollectionDocument(spedCollectionId: number, studentId: number, spedCollectionToStudentId: number, collectionStatusId: number, templateVersionId: number, userId: number, siteId: number, yearId: number): Observable {\r\n let queryString = '';\r\n queryString += '?spedCollectionId=' + spedCollectionId +\r\n '&studentId=' + studentId +\r\n '&spedCollectionToStudentId=' + spedCollectionToStudentId +\r\n '&collectionStatusId=' + collectionStatusId +\r\n '&templateVersionId=' + templateVersionId +\r\n '&userId=' + userId +\r\n '&siteId=' + siteId +\r\n '&yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'ViewCollectionDocument' + queryString);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'lunchPinFilter'\r\n})\r\nexport class LunchPinFilterPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n return value.split('');\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MealService } from './meal-service.model';\r\n\r\n@Pipe({\r\n name: 'mealServiceFilter'\r\n})\r\nexport class MealServiceFilterPipe implements PipeTransform {\r\n\r\n transform(meal: MealService[], fromDate?: Date, toDate?: Date): any {\r\n return meal.filter(\r\n o => ((fromDate == null || new Date(o.Date) >= fromDate)\r\n && (toDate == null || new Date(o.Date) <= toDate))\r\n );\r\n }\r\n}\r\n","export class MealService {\r\n Id: number;\r\n Balance: string;\r\n BreakFastALaCarte: string;\r\n BreakFastMeal: string;\r\n Date: Date;\r\n Deposits: string;\r\n LunchALaCarte: string;\r\n LunchMeal: string;\r\n Net: string;\r\n OtherALaCarte: string;\r\n OtherMeal: string;\r\n SnackALaCarte: string;\r\n SnackMeal: string;\r\n TotalPurchases: string;\r\n MealServiceDetailItems: MealServiceDetailItems[] = [];\r\n FromDate: Date;\r\n ToDate: Date;\r\n}\r\n\r\nexport class MealServiceDetailItems {\r\n $id: number;\r\n Charge: string;\r\n Deposit: string;\r\n Item: string;\r\n ItemType: string;\r\n MealGroup: string;\r\n Processed: Date;\r\n TransactionType: string;\r\n fltAmount: number;\r\n}\r\n\r\nexport class MealServiceFilter {\r\n FromDate: Date;\r\n ToDate: Date;\r\n}\r\n\r\nexport class LunchMealChoice {\r\n Id: number;\r\n Date: Date;\r\n Choice: string;\r\n MonthlyLunchMenuChoices: MonthlyLunchMenuChoices[] = [];\r\n}\r\n\r\nexport class MonthlyLunchMenuChoices {\r\n Id: number;\r\n Choice: string;\r\n ChoiceDescription: string\r\n}","

\r\n Lunch Menu - {{transactionDate|date:'MM/dd/yy'}}\r\n

\r\n\r\n \r\n \r\n \r\n \r\n \r\n
{{choice.Choice}}{{choice.ChoiceDescription}}
\r\n
\r\n\r\n \r\n\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MonthlyLunchMenuChoices } from '../meal-service.model';\r\n\r\n@Component({\r\n selector: 'app-lunch-menu-choices',\r\n templateUrl: './lunch-menu-choices.component.html',\r\n styles: []\r\n})\r\nexport class LunchMenuChoicesComponent implements OnInit {\r\n\r\n isBusy: boolean = false;\r\n selectedChoice: MonthlyLunchMenuChoices[] = [];\r\n transactionDate: Date;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.transactionDate = this.data.Date;\r\n this.selectedChoice = this.data.MonthlyLunchMenuChoices;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n}\r\n","
\r\n No Meal Service data exists for student.\r\n
\r\n
0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n More\r\n \r\n \r\n \r\n \r\n \r\n Date\r\n \r\n {{MS.Date|date:'EEE'}} {{MS.Date|date:'MM/dd/yy'}}\r\n \r\n Meal\r\n \r\n \r\n {{MS.BreakFastMeal}}\r\n \r\n A La Carte\r\n \r\n \r\n {{MS.BreakFastALaCarte}}\r\n \r\n Meal\r\n \r\n \r\n {{MS.LunchMeal}}\r\n \r\n A La Carte\r\n \r\n \r\n {{MS.LunchALaCarte}}\r\n \r\n Meal\r\n \r\n \r\n {{MS.SnackMeal}}\r\n \r\n A La Carte\r\n \r\n \r\n {{MS.SnackALaCarte}}\r\n \r\n Meal\r\n \r\n \r\n {{MS.SnackMeal}}\r\n \r\n A La Carte\r\n \r\n \r\n {{MS.SnackALaCarte}}\r\n \r\n Total Charges\r\n \r\n {{MS.TotalPurchases}}\r\n Deposits\r\n \r\n {{MS.Deposits}}Net\r\n \r\n {{MS.Net}}{{MS.Net > 0 ? 'Deposit' : (MS.Net < 0 ? 'Charge' : '' ) | translate}}\r\n Balance\r\n \r\n \r\n \r\n {{ (MS.Balance > 0 ? MS.Balance : MS.Balance*-1) | number:'1.2-2'}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Overdrawn\r\n \r\n
\r\n \r\n \r\n Meal Group\r\n \r\n {{detail.MealGroup}}\r\n \r\n \r\n Item Type\r\n \r\n {{detail.ItemType}}\r\n \r\n \r\n Item\r\n \r\n {{detail.Item}}\r\n\r\n {{detail.Item}}\r\n \r\n \r\n \r\n Transaction\r\n Type\r\n {{detail.TransactionType}}\r\n \r\n \r\n \r\n Charge\r\n \r\n \r\n -\r\n \r\n {{detail.Charge}}\r\n \r\n \r\n \r\n \r\n Deposit\r\n \r\n \r\n -\r\n \r\n {{detail.Deposit}}  \r\n \r\n \r\n \r\n \r\n Processed\r\n \r\n \r\n {{detail.Processed|date:'MM/dd/yy h:mm a'}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
More\r\n Date\r\n \r\n Breakfast Lunch Snack Other
\r\n
\r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MealService, LunchMealChoice } from '../meal-service.model';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { DatePipe } from '@angular/common';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { detailExpand } from '../../../shared-components/angular-material/mat-animations';\r\nimport { LunchMenuChoicesComponent } from '../lunch-menu-choices/lunch-menu-choices.component';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'charges-and-deposits',\r\n templateUrl: './charges-and-deposits.component.html',\r\n animations: [detailExpand],\r\n providers: [DatePipe]\r\n})\r\nexport class ChargesAndDepositsComponent implements OnInit {\r\n\r\n @Input() mealService: MealService[];\r\n @Input() lunchMealChoice: LunchMealChoice[];\r\n angularMatData = new TylerMatTableDataSource();\r\n columnsToDisplay: string[] = [];\r\n columnSpanToDisplay: string[] = [];\r\n @ViewChild(MatSort) sort: MatSort;\r\n LoginSettings: LoginSettings;\r\n V10: boolean;\r\n lunchMealChoicesDialogRef: MatDialogRef;\r\n columnsToDisplayDetailRow: string[] = ['MealGroup', 'ItemType', 'Item', 'TransactionType', 'Charge', 'Deposit', 'Processed'];\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private studentService: StudentService,\r\n private datePipe: DatePipe,\r\n private dialog: MatDialog,\r\n ) {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.V10 = this.LoginSettings.V10;\r\n this.angularMatData = new TylerMatTableDataSource(this.mealService);\r\n if (this.V10 == false) {\r\n this.columnsToDisplay = ['More', 'Date', 'BreakFastMeal', 'BreakFastALaCarte', 'LunchMeal', 'LunchALaCarte', 'SnackMeal', 'SnackALaCarte', 'TotalPurchases', 'Deposits', 'Net', 'NetCharge', 'Balance', 'Overdrawn'];\r\n this.columnSpanToDisplay = ['More1', 'Date1', 'header-row-breakfast', 'header-row-lunch', 'header-row-snack'];\r\n } else {\r\n this.columnsToDisplay = ['More', 'Date', 'BreakFastMeal', 'BreakFastALaCarte', 'LunchMeal', 'LunchALaCarte', 'SnackMeal', 'SnackALaCarte', 'OtherMeal', 'OtherALaCarte', 'TotalPurchases', 'Deposits', 'Net', 'NetCharge', 'Balance'];\r\n this.columnSpanToDisplay = ['More1', 'Date1', 'header-row-breakfast', 'header-row-lunch', 'header-row-snack', 'header-row-other']\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.angularMatData.data = this.mealService;\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n\r\n this.angularMatData.sortingDataAccessor = (item: MealService, property: string) => {\r\n if (property == 'Date1') {\r\n return moment(item.Date).unix();\r\n }\r\n else if (item[property]) {\r\n return this.angularMatData.defaultSortingAccessor(item, property);\r\n }\r\n }\r\n }\r\n\r\n refreshGrid(mealService: MealService[], lunchMealChoice: LunchMealChoice[]) {\r\n this.angularMatData.data = mealService;\r\n this.lunchMealChoice = lunchMealChoice;\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n toggleExpanded(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n getMealServiceAriaRow(row: MealService): string {\r\n let colList: string[] = [];\r\n let dataList: string[] = [];\r\n\r\n if (this.LoginSettings.V10 == true) {\r\n colList = ['Date', 'BreakFastMeal', 'BreakFastALaCarte', 'LunchMeal', 'LunchALaCarte',\r\n 'SnackMeal', 'SnackALaCarte', 'OtherMeal', 'OtherALaCarte', 'TotalPurchases', 'Deposits',\r\n 'Net', 'Balance'];\r\n\r\n dataList = [this.datePipe.transform(row.Date, 'MM/dd/yy'), row.BreakFastMeal, row.BreakFastALaCarte, row.LunchMeal, row.LunchALaCarte,\r\n row.SnackMeal, row.SnackALaCarte, row.OtherMeal, row.OtherALaCarte, row.TotalPurchases, row.Deposits, row.Net, row.Balance];\r\n }\r\n else {\r\n colList = ['Date', 'BreakFastMeal', 'BreakFastALaCarte', 'LunchMeal', 'LunchALaCarte',\r\n 'SnackMeal', 'SnackALaCarte', 'TotalPurchases', 'Deposits', 'Net', 'Balance'];\r\n\r\n dataList = [this.datePipe.transform(row.Date, 'MM/dd/yy'), row.BreakFastMeal, row.BreakFastALaCarte, row.LunchMeal, row.LunchALaCarte,\r\n row.SnackMeal, row.SnackALaCarte, row.TotalPurchases, row.Deposits, row.Net, row.Balance];\r\n }\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n getLunchMealChoices(dateChoice: Date) {\r\n const selectedLunchMealChoice: LunchMealChoice = this.lunchMealChoice.filter(function (el) { return el.Date == dateChoice; })[0];\r\n this.lunchMealChoicesDialogRef = this.dialog.open(LunchMenuChoicesComponent, {\r\n disableClose: true,\r\n panelClass: 'tyl-mat-dialog',\r\n height: '300px',\r\n width: '400px',\r\n data: selectedLunchMealChoice\r\n });\r\n }\r\n\r\n}\r\n","
\r\n No Monthly Lunch Menu data exists for this month\r\n
\r\n
\r\n 0\" aria-label=\"Monthly Lunch Menu Data Table\" matSort\r\n matSortDisableClear matSortActive=\"Date\" matSortDirection=\"desc\" id=\"LMDataTable\" style=\"min-width: 1300px;\">\r\n \r\n \r\n Date\r\n \r\n \r\n \r\n {{LM.Date|date:'EEE'}} {{LM.Date|date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n {{'Choice' | translate}} {{getChoiceNumber(column.Choice)}}\r\n \r\n \r\n \r\n {{data.ChoiceDescription}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { LunchMealChoice, MonthlyLunchMenuChoices } from '../meal-service.model';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { DatePipe } from '@angular/common';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\n@Component({\r\n selector: 'monthly-lunch-menu',\r\n templateUrl: './monthly-lunch-menu.component.html'\r\n})\r\nexport class MonthlyLunchMenuComponent implements OnInit {\r\n\r\n @Input() lunchMealChoice: LunchMealChoice[];\r\n @Input() currentDate: Date;\r\n angularMatDataMonthlyLunchMenu = new TylerMatTableDataSource();\r\n V10: boolean;\r\n @ViewChild(MatSort) sort: MatSort;\r\n\r\n selectedChoice: MonthlyLunchMenuChoices[] = [];\r\n studentMonthlyLunchMenuChoice: LunchMealChoice[] = [];\r\n columnsToDisplayLunchMenu = [];\r\n showMontlyLunchMenuGrid: boolean;\r\n LoginSettings: LoginSettings;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private datePipe: DatePipe,\r\n private loginService: LoginService\r\n ) {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.V10 = this.LoginSettings.V10;\r\n if (this.lunchMealChoice) {\r\n this.angularMatDataMonthlyLunchMenu = new TylerMatTableDataSource(this.lunchMealChoice);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.lunchMealChoice != null && this.lunchMealChoice.length > 0) {\r\n this.angularMatDataMonthlyLunchMenu.data = this.lunchMealChoice;\r\n this.getMonthlyLunchMenuHeader();\r\n this.getMonthlyLunchMenuData();\r\n }\r\n setTimeout(() => {\r\n this.angularMatDataMonthlyLunchMenu.sort = this.sort;\r\n }, 0);\r\n }\r\n\r\n refreshGrid(lunchMealChoice: LunchMealChoice[], currentDate: Date) {\r\n if (lunchMealChoice.length > 0) {\r\n this.currentDate = currentDate;\r\n this.lunchMealChoice = lunchMealChoice;\r\n this.getMonthlyLunchMenuHeader();\r\n this.getMonthlyLunchMenuData();\r\n setTimeout(() => {\r\n this.angularMatDataMonthlyLunchMenu.sort = this.sort;\r\n }, 0);\r\n }\r\n }\r\n\r\n getMonthlyLunchMenuHeader() {\r\n const selectedLunchMealChoice: LunchMealChoice = this.lunchMealChoice.filter(function (o) { return o.Id == 1; })[0];\r\n this.selectedChoice = selectedLunchMealChoice.MonthlyLunchMenuChoices;\r\n this.columnsToDisplayLunchMenu = ['Date'];\r\n if (this.selectedChoice.length > 0) {\r\n this.selectedChoice.forEach(selectedChoice => {\r\n this.columnsToDisplayLunchMenu.push(selectedChoice.Choice);\r\n });\r\n }\r\n }\r\n\r\n getMonthlyLunchMenuData() {\r\n const startDate: Date = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), 1);\r\n const endDate: Date = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth() + 1, 0);\r\n this.studentMonthlyLunchMenuChoice = [];\r\n\r\n this.lunchMealChoice.forEach(obj => {\r\n if (new Date(obj.Date) >= new Date(startDate) && new Date(obj.Date) <= new Date(endDate)) {\r\n this.studentMonthlyLunchMenuChoice.push(obj);\r\n }\r\n });\r\n\r\n this.showMontlyLunchMenuGrid = false;\r\n this.studentMonthlyLunchMenuChoice.forEach(obj => {\r\n if (obj != null && obj.MonthlyLunchMenuChoices != null) {\r\n for (let j = 0; j < obj.MonthlyLunchMenuChoices.length; j++) {\r\n if (obj.MonthlyLunchMenuChoices[j] != null && obj.MonthlyLunchMenuChoices[j].ChoiceDescription != null) {\r\n this.showMontlyLunchMenuGrid = true;\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.angularMatDataMonthlyLunchMenu.data = this.studentMonthlyLunchMenuChoice;\r\n }\r\n\r\n getMonthlyLunchMenuAriaRow(row: LunchMealChoice): string {\r\n const colList: string[] = ['Day', 'Date'];\r\n if (this.selectedChoice.length > 0) {\r\n this.selectedChoice.forEach(selectedChoice => {\r\n colList.push(selectedChoice.Choice);\r\n });\r\n }\r\n\r\n const dataList: string[] = [this.datePipe.transform(row.Date, 'EEE'), this.datePipe.transform(row.Date, 'MM/dd/yy')];\r\n if (row.MonthlyLunchMenuChoices.length > 0) {\r\n row.MonthlyLunchMenuChoices.forEach(lunchMenuChoices => {\r\n colList.push(lunchMenuChoices.ChoiceDescription);\r\n });\r\n }\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n getMonthlyLunchMenuRecords() {\r\n // dynamic header binding\r\n this.getMonthlyLunchMenuHeader();\r\n // dynamic Data binding\r\n this.getMonthlyLunchMenuData();\r\n }\r\n\r\n getChoiceNumber(choice: any) {\r\n if (choice) {\r\n return choice.replace('Choice ', '');\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, EventEmitter, Input, ViewChild, Output, TemplateRef, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { MealService, MealServiceFilter } from '../meal-service.model';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-meal-service-filter',\r\n templateUrl: './meal-service-filter.component.html',\r\n styles: []\r\n})\r\nexport class MealServiceFilterComponent implements OnInit, OnDestroy {\r\n\r\n @Input() filterData: MealService;\r\n @Input() showFilter: EventEmitter;\r\n // tslint:disable-next-line:no-input-rename\r\n @Input('clearFilter') clearFilterEvent: EventEmitter;\r\n @Output() filterChange = new EventEmitter();\r\n @Output() closeFilterEvent = new EventEmitter();\r\n @ViewChild('menuTemplate') menuTemplate: TemplateRef;\r\n previousFilterData = new MealServiceFilter();\r\n clearFilterSubscription: Subscription;\r\n\r\n constructor(\r\n private sharedService: SharedService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.clearFilterSubscription = this.clearFilterEvent.subscribe(() => {\r\n const keys = Object.keys(this.filterData);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n this.filterData[key] = undefined;\r\n }\r\n this.previousFilterData = JSON.parse(JSON.stringify(this.filterData));\r\n this.previousFilterData.FromDate = null;\r\n this.previousFilterData.ToDate = null;\r\n this.filterChange.emit();\r\n });\r\n Object.assign(this.previousFilterData, this.filterData);\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n // Methods\r\n clearFilter() {\r\n this.filterData['FromDate'] = null;\r\n this.filterData['ToDate'] = null;\r\n this.filterChange.emit();\r\n }\r\n\r\n closeFilter() {\r\n this.closeFilterEvent.emit();\r\n }\r\n}\r\n","
\r\n Filter\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
","
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Rollover Balance {{totalRollOver | currency}}
Deposits {{totalDeposit | currency}}
Charges {{totalPurchases | currency}}\r\n
Balance\r\n  {{(totalBalance < 0 ? totalBalance*-1 : totalBalance) | currency }}\r\n  Overdrawn
\r\n
\r\n
\r\n
\r\n Meal PIN  \r\n \r\n \r\n *\r\n \r\n \r\n {{lunchPin}} \r\n \r\n \r\n
\r\n 1\" [startingIndex]=\"selectionIndex\" [tabNames]=\"tabNames\"\r\n style=\"margin-bottom: 10px\" (selectionsChangeIndex)=\"selectionChange($event)\">\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

{{selectedMonth | translate}}  {{selectedYear}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild, ChangeDetectorRef } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Location } from '@angular/common';\r\n\r\n// ---------Shared--------------------------------------------\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { Student360Service } from '../student360.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginSettings } from '../../shared-modules/login/loginSetting.model';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { MealServiceService } from './meal-service.service';\r\nimport { MealService, MealServiceFilter, LunchMealChoice, MonthlyLunchMenuChoices } from './meal-service.model';\r\nimport { MealServiceFilterPipe } from './meal-service-filter.pipe';\r\nimport { LunchMenuChoicesComponent } from './lunch-menu-choices/lunch-menu-choices.component';\r\n// -------Angular Material------------------------------------\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { ChargesAndDepositsComponent } from './charges-and-deposits/charges-and-deposits.component';\r\nimport { MonthlyLunchMenuComponent } from './monthly-lunch-menu/monthly-lunch-menu.component';\r\nimport { OnlinePaymentConfiguration } from '../online-payment/models/online-payment-config.model';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { Router, NavigationExtras } from '@angular/router';\r\nimport { Portal } from '../../shared-components/portal.model';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { marker } from '@biesbjerg/ngx-translate-extract-marker';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-meal-service',\r\n templateUrl: './meal-service.component.html',\r\n animations: [detailExpand],\r\n providers: [DatePipe]\r\n})\r\nexport class MealServiceComponent implements OnInit, OnDestroy {\r\n\r\n // -----------Grid functionality---------------------------------\r\n selectionIndex = 0;\r\n\r\n // ------------Element references--------------------------------\r\n @ViewChild('tabContent', { read: ElementRef }) tabContentRef: ElementRef;\r\n // ------------Selection/Flags-----------------------------------\r\n V10: boolean;\r\n userType: number;\r\n isBusy = false;\r\n currentUrl: string;\r\n showPassword = false;\r\n // ------------------------------------------------------------\r\n LoginSettings: LoginSettings;\r\n selectedStudent: Student;\r\n selectedStudentSubscription: Subscription;\r\n student360YearSubscription: Subscription;\r\n studentEnrollment = this.studentService.studentEnrollment;\r\n currentDate: Date = new Date();\r\n selectedStudentId: number;\r\n parentPortalSubscription: Subscription;\r\n staffAssignedPortalsSubscription: Subscription;\r\n // ----------Angular Material------------------------------------\r\n clearFilterEvent = new EventEmitter();\r\n classFilter = new LunchMealChoice();\r\n pusherFilter: LunchMealChoice;\r\n @ViewChild(ChargesAndDepositsComponent) byViewChargesRef: ChargesAndDepositsComponent;\r\n @ViewChild(MonthlyLunchMenuComponent) byViewMonthlyRef: MonthlyLunchMenuComponent;\r\n\r\n // ------------Meal Service Data---------------------------\r\n tabNames: string[] = [];\r\n mealService: MealService[];\r\n lunchMealChoice: LunchMealChoice[];\r\n selectedChoice: MonthlyLunchMenuChoices[] = [];\r\n studentMonthlyLunchMenuChoice: LunchMealChoice[] = [];\r\n myClasses: LunchMealChoice[];\r\n totalRollOver = 0.00;\r\n totalDeposit = 0.00;\r\n totalPurchases = 0.00;\r\n totalBalance = 0.00;\r\n parentPortal: Portal[];\r\n lunchPin = '';\r\n // ------------Selection/Flags-----------------------------------\r\n selected = '0';\r\n showMontlyLunchMenuGrid: boolean;\r\n lunchMealChoicesDialogRef: MatDialogRef;\r\n\r\n // ------------Filter-----------------------------------\r\n showFilterEvent = new EventEmitter();\r\n showFilter: boolean = false;\r\n mealServiceFilter = new MealServiceFilter();\r\n filterFromDate: Date;\r\n filterToDate: Date;\r\n filtered = false;\r\n onlinePaymentConfiguration: OnlinePaymentConfiguration = new OnlinePaymentConfiguration();\r\n parentPortalShowOnlinePayment: boolean;\r\n student360Year: Year;\r\n // ----------------- Monthly Lunch Menu -------------------\r\n selectedMonth: string;\r\n selectedYear: number;\r\n monthLabels: string[] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n DisabledNxtBtn: boolean;\r\n DisabledPrvBtn: boolean;\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private mealServiceService: MealServiceService,\r\n private parentPortalService: Student360Service,\r\n private mealServiceFilterPipe: MealServiceFilterPipe,\r\n private location: Location,\r\n private router: Router,\r\n private classroom360Service: Classroom360Service,\r\n public changeDetector: ChangeDetectorRef,\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n if (this.userService.userType == 1) {\r\n this.staffAssignedPortalsSubscription = this.classroom360Service.observableStaffAssignedPortalsStream$.subscribe(data => {\r\n this.parentPortal = data;\r\n });\r\n }\r\n else {\r\n this.parentPortalSubscription = this.parentPortalService.observableParentAssignedPortalsStream$.subscribe(portal => {\r\n this.parentPortal = portal;\r\n });\r\n }\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n student360Year => {\r\n this.student360Year = student360Year;\r\n this.loadStudentInfo(this.selectedStudent.Id);\r\n }\r\n );\r\n\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.V10 = this.LoginSettings.V10;\r\n this.userType = this.userService.userType;\r\n this.parentPortalShowOnlinePayment = this.LoginSettings.ParentPortalShowOnlinePayment;\r\n this.student360Year = this.yearService.student360Year;\r\n this.currentUrl = this.location.path();\r\n this.selectedStudentId = this.studentService.selectedStudent.Id;\r\n\r\n if (this.userType == 1) {\r\n if (this.parentPortal.filter(o => o.PortalName == 'Meal Service' && o.Disabled == false && o.ParentModule == '/student360').length > 0) {\r\n this.tabNames.push(marker('charges and deposits').toString()); // mark tab name for translation\r\n }\r\n }\r\n else {\r\n if (this.parentPortal.filter(o => o.PortalName == 'Meal Service' && o.Disabled == false).length > 0) {\r\n this.tabNames.push(marker('charges and deposits').toString()); // mark tab name for translation\r\n }\r\n }\r\n\r\n if (this.parentPortal.filter(o => o.PortalName == 'Monthly Lunch Menu' && o.Disabled == false).length > 0) {\r\n this.tabNames.push(marker('monthly lunch menu').toString()); // mark tab name for translation\r\n }\r\n\r\n this.selectedMonth = this.monthLabels[this.currentDate.getMonth()];\r\n this.selectedYear = this.currentDate.getFullYear();\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.V10 && this.currentUrl.indexOf('?') > 0) {\r\n const url = this.router.url.substring(0, this.router.url.indexOf('?'));\r\n this.currentUrl = url;\r\n }\r\n if (this.currentUrl == '/student360/lunchMealPlanner') {\r\n this.mealServiceService.selectionIndex = 1;\r\n this.selectionIndex = 1;\r\n }\r\n else if (this.currentUrl == '/student360/mealService') {\r\n this.mealServiceService.selectionIndex = 0;\r\n this.selectionIndex = 0;\r\n }\r\n else if (this.mealServiceService.selectionIndex) {\r\n this.selectionIndex = this.mealServiceService.selectionIndex;\r\n }\r\n\r\n if (this.userService.userType == 2) {\r\n this.studentService.getOnlinePaymentConfiguration().subscribe(result => {\r\n this.onlinePaymentConfiguration = result;\r\n });\r\n }\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.student360YearSubscription.unsubscribe();\r\n this.selectedStudentSubscription.unsubscribe();\r\n }\r\n\r\n // ------------ Meal Service Data ---------------------------\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n this.getMealService();\r\n if (this.V10 == false) {\r\n this.getMothlyLunchMenu();\r\n }\r\n }\r\n\r\n getMealService() {\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.mealServiceService.getMealService(this.selectedStudent.Id, this.yearService.student360Year.Id, this.studentEnrollment.SiteYearId).subscribe(data => {\r\n this.mealService = data;\r\n this.loadMealService();\r\n });\r\n }, 0);\r\n }\r\n\r\n getLunchPin() {\r\n this.mealServiceService.getLunchPinForStudentAndStaff(this.selectedStudent.Id, this.studentEnrollment.SiteYearId).subscribe(data => {\r\n this.lunchPin = data;\r\n });\r\n }\r\n\r\n loadMealService() {\r\n this.filterChange();\r\n this.getCalculationSummary();\r\n if (this.V10 == false) {\r\n this.getLunchPin();\r\n }\r\n this.isBusy = false;\r\n if (this.byViewChargesRef != null) {\r\n this.byViewChargesRef.refreshGrid(this.mealService, this.lunchMealChoice);\r\n }\r\n }\r\n\r\n getMothlyLunchMenu() {\r\n this.isBusy = true;\r\n setTimeout(() => {\r\n this.mealServiceService.getMonthlyLunchMenu(this.selectedStudent.Id, this.studentEnrollment.SiteYearId, this.yearService.student360Year.StartDate, this.yearService.student360Year.EndDate).subscribe(data => {\r\n this.lunchMealChoice = data;\r\n if (this.byViewMonthlyRef != null) {\r\n this.byViewMonthlyRef.refreshGrid(this.lunchMealChoice, this.currentDate);\r\n }\r\n });\r\n }, 0);\r\n }\r\n\r\n loadMealMonthlyLunchMenu(): void {\r\n this.byViewMonthlyRef.angularMatDataMonthlyLunchMenu.data = this.lunchMealChoice;\r\n this.isBusy = false;\r\n }\r\n\r\n selectionChange(selectionIndex: number) {\r\n this.selectionIndex = selectionIndex;\r\n\r\n if (this.selectionIndex == 1) {\r\n setTimeout(() => {\r\n this.byViewMonthlyRef.refreshGrid(this.lunchMealChoice, this.currentDate);\r\n }, 0);\r\n }\r\n else {\r\n setTimeout(() => {\r\n this.byViewChargesRef.refreshGrid(this.mealService, this.lunchMealChoice);\r\n }, 0);\r\n }\r\n }\r\n\r\n getCalculationSummary() {\r\n this.totalBalance = 0.00;\r\n this.totalDeposit = 0.00;\r\n this.totalRollOver = 0.00;\r\n this.totalPurchases = 0.00;\r\n\r\n if (this.mealService != null && this.mealService.length > 0) {\r\n this.mealService.forEach(function (obj) {\r\n if (obj.MealServiceDetailItems != null && obj.MealServiceDetailItems.length > 0) {\r\n const mealDetail = obj.MealServiceDetailItems;\r\n for (let j = 0; j < mealDetail.length; j++) {\r\n if (mealDetail[j] != null) {\r\n if (mealDetail[j].TransactionType == 'Deposit') {\r\n this.totalDeposit = this.totalDeposit + mealDetail[j].fltAmount;\r\n }\r\n else if (mealDetail[j].TransactionType == 'Refund') {\r\n this.totalDeposit = this.totalDeposit - mealDetail[j].fltAmount;\r\n }\r\n else if (mealDetail[j].TransactionType == 'Rollover') {\r\n this.totalRollOver = this.totalRollOver + mealDetail[j].fltAmount;\r\n }\r\n else if (mealDetail[j].TransactionType == 'Charge') {\r\n this.totalPurchases = this.totalPurchases + mealDetail[j].fltAmount;\r\n }\r\n else if (mealDetail[j].TransactionType == 'Void') {\r\n this.totalPurchases = this.totalPurchases - mealDetail[j].fltAmount;\r\n }\r\n else if (mealDetail[j].TransactionType == 'Online') {\r\n this.totalDeposit = this.totalDeposit + mealDetail[j].fltAmount;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (parseFloat(obj.Deposits) != 0) {\r\n this.totalDeposit = this.totalDeposit + parseFloat(obj.Deposits);\r\n }\r\n else if (parseFloat(obj.TotalPurchases) != 0) {\r\n this.totalPurchases = this.totalPurchases + parseFloat(obj.TotalPurchases);\r\n }\r\n }\r\n this.totalBalance = this.totalRollOver + this.totalDeposit - this.totalPurchases;\r\n }.bind(this));\r\n }\r\n }\r\n\r\n changeDate = function (direction: string) {\r\n const monthNum = (direction == 'next') ? this.currentDate.getMonth() + 1 : this.currentDate.getMonth() - 1;\r\n if (direction == 'today') {\r\n this.currentDate = new Date();\r\n }\r\n else {\r\n this.currentDate = new Date(this.currentDate.getFullYear(), monthNum);\r\n }\r\n this.yearStartDate = new Date(new Date(this.yearService.student360Year.StartDate).getFullYear(), new Date(this.yearService.student360Year.StartDate).getMonth());\r\n this.yearEndDate = new Date(new Date(this.yearService.student360Year.EndDate).getFullYear(), new Date(this.yearService.student360Year.EndDate).getMonth());\r\n\r\n switch (this.nearestDateCheck(this.yearStartDate, this.yearEndDate, this.currentDate)) {\r\n case 1:\r\n this.DisabledNxtBtn = true;\r\n this.DisabledPrvBtn = false;\r\n break;\r\n case 2:\r\n this.DisabledNxtBtn = false;\r\n this.DisabledPrvBtn = true;\r\n break;\r\n default:\r\n this.DisabledNxtBtn = false;\r\n this.DisabledPrvBtn = false;\r\n break;\r\n }\r\n this.selectedMonth = this.monthLabels[this.currentDate.getMonth()];\r\n this.selectedYear = this.currentDate.getFullYear();\r\n\r\n this.byViewMonthlyRef.refreshGrid(this.lunchMealChoice, this.currentDate);\r\n };\r\n\r\n nearestDateCheck(fromDate: Date, toDate: Date, currentDate: Date): number {\r\n if (new Date(currentDate) >= new Date(toDate)) {\r\n return 1;\r\n }\r\n else if (new Date(currentDate) <= new Date(fromDate)) {\r\n return 2;\r\n }\r\n return 0;\r\n }\r\n\r\n // -----------Toggle Rows Logic--------------\r\n expandAll(expand: boolean) {\r\n this.byViewChargesRef.expandAll(expand);\r\n }\r\n\r\n // -----------Filter Logic--------------\r\n showFilterClick() {\r\n this.showFilter = !this.showFilter;\r\n }\r\n\r\n filterChange() {\r\n this.filterFromDate = this.mealServiceFilter.FromDate;\r\n this.filterToDate = this.mealServiceFilter.ToDate;\r\n if (this.byViewChargesRef != null) {\r\n this.byViewChargesRef.angularMatData.data = this.mealServiceFilterPipe.transform(this.mealService, this.filterFromDate, this.filterToDate);\r\n }\r\n this.filtered = this.classesFiltered();\r\n }\r\n\r\n classesFiltered() {\r\n this.filterFromDate = this.mealServiceFilter.FromDate;\r\n this.filterToDate = this.mealServiceFilter.ToDate;\r\n if ((this.filterFromDate != undefined && this.filterFromDate != null) || (this.filterToDate != undefined && this.filterToDate != null)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n clearFilter() {\r\n if (this.byViewMonthlyRef != undefined) {\r\n this.byViewMonthlyRef.angularMatDataMonthlyLunchMenu.removeAllFilters();\r\n }\r\n else if (this.byViewChargesRef != undefined) {\r\n this.clearFilterEvent.emit();\r\n this.byViewChargesRef.angularMatData.removeAllFilters();\r\n }\r\n }\r\n\r\n isFiltered(): boolean {\r\n let filtered: boolean;\r\n\r\n if (this.byViewMonthlyRef != undefined) {\r\n if (this.byViewMonthlyRef.angularMatDataMonthlyLunchMenu.isFiltered()) {\r\n filtered = true;\r\n }\r\n }\r\n else if (this.byViewChargesRef != undefined) {\r\n if (this.byViewChargesRef.angularMatData.isFiltered()) {\r\n filtered = true;\r\n }\r\n }\r\n return filtered;\r\n }\r\n\r\n onlinePaymentClick() {\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: {\r\n 'selectedView': 2\r\n }\r\n };\r\n this.router.navigate(['/student360/onlinePayment'], navigationExtras);\r\n }\r\n\r\n viewPassword(showPassword) {\r\n this.showPassword = showPassword;\r\n }\r\n}\r\n","import {HttpClient} from '@angular/common/http';\r\nimport {Injectable} from '@angular/core';\r\nimport {System} from './../../shared-components/System';\r\nimport {StudentService} from '../../shared-components/student/student.service';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport { LunchMealChoice} from './meal-service.model';\r\nimport {UserService} from '../../shared-components/user/user.service';\r\nimport {SharedService} from '../../shared-components/shared.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MealServiceService {\r\n selectionIndex: number;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n public userService: UserService,\r\n private sharedService: SharedService\r\n ) {\r\n }\r\n\r\n getMealService(studentId: number, yearId: number, siteYearId: number) {\r\n return this.sharedService.getMealService(studentId, yearId, siteYearId);\r\n }\r\n\r\n getMonthlyLunchMenu(studentId: number, siteYearId: number, startDate: Date, endDate: Date) {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&siteYearId=' + siteYearId +\r\n '&startDate=' + startDate +\r\n '&endDate=' + endDate;\r\n return this.http.get(System.apiURL.Student + 'GetMothlyLunchMenu' + queryString);\r\n }\r\n\r\n getLunchPinForStudentAndStaff(studentId: number, siteYearId: number) {\r\n let queryString = '';\r\n queryString += '?yearId=' + this.yearService.student360Year.Id +\r\n '&siteId=' + siteYearId +\r\n '&studentId=' + studentId +\r\n '&userType=' + this.userService.userType;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetLunchPinForStudentAndStaff' + queryString);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MonthlyLunchMenuChoices, LunchMealChoice } from './meal-service.model';\n\n@Pipe({\n name: 'monthlyLunchMenuFilter'\n})\nexport class MonthlyLunchMenuFilterPipe implements PipeTransform {\n\n transform(monthlyLunchMenuChoices: MonthlyLunchMenuChoices[], column: LunchMealChoice): MonthlyLunchMenuChoices[] {\r\n return monthlyLunchMenuChoices.filter(\r\n obj => (obj.Choice === column.Choice)\r\n );\r\n }\n}\n","import { OnlinePaymentServiceCharges } from \"./online-payment-service-charges.model\";\r\n\r\nexport class OnlinePaymentConfiguration {\r\n // Properties\r\n ReceiverEmail: string;\r\n MaximumDepositAmount: number;\r\n OnlinePaymentServiceFeesPaidByParent: boolean;\r\n StudentFinesAndFeesOnlinePayment: boolean;\r\n StudentMealOnlinePayment: boolean;\r\n StaffMealOnlinePayment: boolean;\r\n EnableMealServiceFee : boolean;\r\n EnableFineAndFeesServiceFee : boolean;\r\n OnlinePaymentServiceCharges: OnlinePaymentServiceCharges[];\r\n Hexea_PCCTID: string;\r\n PaymentMethod: any;\r\n\r\n // Class Functions\r\n constructor() {\r\n this.OnlinePaymentServiceCharges = [];\r\n }\r\n }","import {ActiveStudent} from './active-student.model';\r\nimport {Attachment} from '../../shared-components/models/attachment.model';\r\nimport {Form} from './form.model';\r\n\r\nexport class FormPacket {\r\n\r\n\t// Shared Properties\r\n\tid: number;\r\n\tAdditionalStudentsAdded: boolean;\r\n\tCurrentUserMemberId: number;\r\n\tId: number;\r\n\tFamilyId: number;\r\n\tLastUpdated = new Date('0001-01-01T00:00:00');\r\n\tStatus: boolean;\r\n\tUserName: string;\r\n\tYearId: number;\r\n\tYearDescription: string;\r\n\tPrimaryParent: boolean;\r\n\r\n // Online Registration Only\r\n\tFormUpdated: boolean;\r\n\tOnlineRegistrationActiveStudents: ActiveStudent[];\r\n\tOnlineRegistrationAttachments: Attachment[];\r\n\tOnlineRegistrationForms: Form[];\r\n\tPacketRejected: boolean;\r\n\tQRFamily: boolean;\r\n\tSubmitMessageEnglish: string;\r\n\tSubmitMessageFrench: string;\r\n\tSubmitMessageSpanish: string;\r\n\tNewFamily: boolean;\r\n\tAssociatedToAllStudents: boolean;\r\n\tPacketIsReadyToSubmit: boolean;\r\n\tNoteForNonRes: boolean;\r\n\r\n // Parent Portal Only\r\n\tParentPortalDataUpdateForms: Form[];\r\n\r\n\t// Class Functions\r\n\tconstructor () {}\r\n\r\n\t// Methods\r\n\tgetForms(onlineRegistration: boolean) {\r\n\t\t// PRE: online registration is true if this is for Online Registration\r\n\t\t// POST: returns the formPacket for the given use case\r\n\t\tif (onlineRegistration) {\r\n\t\t\treturn this.OnlineRegistrationForms;\r\n\t\t} else {\r\n\t\t\treturn this.ParentPortalDataUpdateForms;\r\n\t\t}\r\n\t}\r\n}\r\n","import { HouseholdData, OnlineRegFamilies } from './household-data.model';\r\nimport { System } from './../../shared-components/System';\r\nimport { HouseholdHealth } from './health-update/household-health.model';\r\nimport { HouseholdCustomForm } from './custom-form/household-custom-forms.model';\r\nimport { Injectable, EventEmitter } from '@angular/core';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { Observable, forkJoin } from 'rxjs';\r\nimport { FormPacket } from './form-packet.model';\r\nimport { HouseholdParents } from './parent-update/household-parents.model';\r\nimport { Form } from './form.model';\r\nimport { FamilyDataField } from './family-data-field.model';\r\nimport { HouseholdAddresses } from './address-update/householdAddresses';\r\nimport { Router, NavigationCancel, RouterStateSnapshot } from '@angular/router';\r\nimport { HouseholdStudents } from './student-update/household-students';\r\nimport { StudentDetails, StudentLinkedToContact } from './student-update/student-details';\r\nimport { map } from '../../../../node_modules/rxjs/operators';\r\nimport { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { EmergencyContact } from './contact-update/emergency-contacts.model';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { Address } from '../../shared-components/models/address';\r\n\r\n@Injectable()\r\nexport class OnlineRegistrationService {\r\n\r\n // Private Properties\r\n public familyId: number;\r\n public parentType: string;\r\n public isMultipleFamiliesPopupOpened: boolean;\r\n private originalForm: Form;\r\n private originalFormPacket: FormPacket;\r\n private _currentForm: Form;\r\n private _currentFormPacket: FormPacket;\r\n private _formStatus: boolean;\r\n private _calledFromReviewSubmission: boolean;\r\n\r\n // Public Properties\r\n public returnFromLastForm = false;\r\n public formChange = new EventEmitter
();\r\n public formPacketChange = new EventEmitter();\r\n public ORYear: Year;\r\n public forcefullyRedirectOnlineRegistration: boolean;\r\n\r\n public clickEvent = 0;\r\n\r\n public studentToContactLinked: StudentLinkedToContact[] = [];\r\n\r\n // Class Functions\r\n constructor(\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private loginService: LoginService,\r\n private http: HttpClient,\r\n private router: Router\r\n ) {\r\n\r\n }\r\n\r\n get currentForm() {\r\n return this._currentForm;\r\n }\r\n\r\n set currentForm(value: Form) {\r\n this._currentForm = value;\r\n this.formChange.emit(this._currentForm);\r\n }\r\n\r\n get currentFormPacket() {\r\n return this._currentFormPacket;\r\n }\r\n\r\n set currentFormPacket(value: FormPacket) {\r\n this._currentFormPacket = value;\r\n this.formPacketChange.emit(this._currentFormPacket);\r\n }\r\n get calledFromReviewSubmission()\r\n {\r\n return this._calledFromReviewSubmission;\r\n }\r\n set calledFromReviewSubmission(value: boolean)\r\n {\r\n this._calledFromReviewSubmission = value;\r\n }\r\n get formStatus(): boolean {\r\n return this._formStatus;\r\n }\r\n\r\n get V10Data(): boolean {\r\n if (this.isOnlineRegistration()) {\r\n return this.loginService.LoginSettings.ParentPortalORv10Data;\r\n } else {\r\n return this.loginService.LoginSettings.ParentPortalUHDv10Data;\r\n }\r\n }\r\n\r\n get isLastForm(): boolean {\r\n // POST: returns true if this is the last form\r\n return this.getCurrentFormIndex() == this.getForms(this.currentFormPacket).length - 1;\r\n }\r\n\r\n // Methods\r\n isOnlineRegistration() {\r\n return this.router.url.toLowerCase().includes('onlineregistration') || this.calledFromReviewSubmission || this.userService.currentUser.NewFamilyRegistration || !!this.forcefullyRedirectOnlineRegistration;\r\n }\r\n\r\n isFieldRequired(householdData: HouseholdData, requiredProperty: string | boolean) {\r\n if (typeof requiredProperty == 'string') {\r\n return householdData[requiredProperty] && (!this.isOnlineRegistration() || householdData.Status);\r\n } else {\r\n return requiredProperty && (!this.isOnlineRegistration() || householdData.Status);\r\n }\r\n }\r\n\r\n getFieldPhoneRegexp(householdData: HouseholdData) {\r\n if (this.isOnlineRegistration() && householdData && !householdData.Status) {\r\n return /.*/;\r\n } else {\r\n return System.phoneRegexp;\r\n }\r\n }\r\n\r\n getFieldEmailRegexp(householdData: HouseholdData) {\r\n if (this.isOnlineRegistration() && householdData && !householdData.Status) {\r\n return /.*/;\r\n } else {\r\n return System.mailRegexp;\r\n }\r\n }\r\n\r\n getFieldZipRegexp(householdData: HouseholdData) {\r\n if (this.isOnlineRegistration() && householdData && !householdData.Status) {\r\n return /.*/;\r\n } else {\r\n return System.zipRegexp;\r\n }\r\n }\r\n\r\n getCurrentFormIndex(): number {\r\n // PRE: the current form and the current form packet must be set. Otherwise, returns -1.\r\n // POST: returns the index of the current form\r\n if (!this.currentForm || !this.currentFormPacket) {\r\n return -1;\r\n } else {\r\n return this.getForms(this.currentFormPacket).indexOf(this.currentForm);\r\n }\r\n }\r\n\r\n getFormCount(): number {\r\n // PRE: the form packet must be set\r\n // POST: reutnrs the number of forms in the packet\r\n return this.getForms(this.currentFormPacket).length;\r\n }\r\n\r\n getFormAtIndex(index: number): Form {\r\n // PRE: the current form and the current form packet must be set. Otherwise, returns null.\r\n // POST: returns the form at the given index\r\n if (!this.currentForm || !this.currentFormPacket || this.getForms(this.currentFormPacket).length <= index) {\r\n return null;\r\n } else {\r\n return this.getForms(this.currentFormPacket)[index];\r\n }\r\n }\r\n\r\n routeToForm(form: Form, formPacket: FormPacket) {\r\n // PRE: a form to route to amongst a list of form packet\r\n // POST: routes to that form and sets the appropriate variable\r\n\r\n // If the form or the formpacket are not there, don't route\r\n if (!form || !formPacket) {\r\n return;\r\n }\r\n\r\n // Setting up data for route\r\n this.originalForm = this.currentForm;\r\n this.originalFormPacket = new FormPacket();\r\n this.originalFormPacket = this.currentFormPacket;\r\n this.currentForm = form;\r\n this.currentFormPacket = new FormPacket();\r\n this.currentFormPacket = formPacket;\r\n this._formStatus = this.currentFormPacket.Status || this.currentForm.FormStatus == 'Approved';\r\n\r\n // Performing route\r\n if (this.isOnlineRegistration()) {\r\n if ((form.ScreenName.includes('Household Parents') || form.ScreenName.includes('Parent/Contact Information')) && (this.V10Data == true || form.StudentId == 0)) {\r\n this.router.navigateByUrl('/student360/onlineRegistration/householdParents');\r\n } else if (form.ScreenName.includes('Household Addresses') && form.ScreenName.length == 19 && (this.V10Data == true || form.StudentId == 0)) {\r\n this.router.navigateByUrl('/student360/onlineRegistration/householdAddresses');\r\n } else if (form.ScreenName.includes('Addresses') && this.V10Data == true && form.ScreenName.length == 9) {\r\n this.router.navigateByUrl('/student360/onlineRegistration/householdAddresses');\r\n } else if (form.ScreenName.includes('Student Information') && form.ScreenName.length == 19 && (this.V10Data == true || form.StudentId == 0)) {\r\n this.router.navigateByUrl('/student360/onlineRegistration/student');\r\n } else if (form.ScreenName.includes('Emergency Contacts') && form.ScreenName.length == 18 && (this.V10Data == true || form.StudentId == 0)) {\r\n this.router.navigateByUrl('/student360/onlineRegistration/emergencyContacts');\r\n } else if (form.ScreenName.includes('Non-resident Parents') && form.ScreenName.length == 20 && (this.V10Data == true || form.StudentId == 0)) {\r\n this.router.navigateByUrl('/student360/onlineRegistration/nonresidentParents');\r\n } else {\r\n this.router.navigateByUrl('/student360/onlineRegistration/customForm?formName=' + this.currentForm.ScreenName);\r\n }\r\n } else {\r\n if (form.ScreenName.includes('Household Parents') || form.ScreenName.includes('Parent/Contact Information')) {\r\n this.router.navigateByUrl('/student360/parentPortalDataUpdate/householdParents');\r\n } else if (form.ScreenName.includes('Household Addresses')) {\r\n this.router.navigateByUrl('/student360/parentPortalDataUpdate/householdAddresses');\r\n } else if (form.ScreenName.includes('Addresses') && this.V10Data == true) {\r\n this.router.navigateByUrl('/student360/parentPortalDataUpdate/householdAddresses');\r\n } else if (form.ScreenName.includes('Student Information')) {\r\n this.router.navigateByUrl('/student360/parentPortalDataUpdate/student');\r\n } else if (form.ScreenName.includes('Health/Medical')) {\r\n this.router.navigateByUrl('/student360/parentPortalDataUpdate/healthMedical');\r\n } else if (form.ScreenName.includes('Emergency Contacts')) {\r\n this.router.navigateByUrl('/student360/parentPortalDataUpdate/emergencyContacts');\r\n } else if (form.ScreenName.includes('Non-resident Parents')) {\r\n this.router.navigateByUrl('/student360/parentPortalDataUpdate/nonresidentParents');\r\n }\r\n }\r\n\r\n // If the route is canceled, reset data\r\n this.router.events.subscribe(e => {\r\n if (e instanceof NavigationCancel && this.originalForm && this.originalFormPacket) {\r\n this.currentForm = this.originalForm;\r\n this.currentFormPacket = this.originalFormPacket;\r\n this._formStatus = this.currentFormPacket.Status || this.currentForm.FormStatus == 'Approved';\r\n }\r\n });\r\n }\r\n\r\n guardCheck(\r\n data: HouseholdData,\r\n dirty = false,\r\n nextState?: RouterStateSnapshot,\r\n errors: ErrorList[] = []\r\n ): number {\r\n // PRE: the data, whether the form is dirty, the next state, and a list of errors\r\n // POST: this is the call that checks what the guard should do\r\n\r\n // If this is online registration and the next URL is OR or PPU, perform a special check\r\n if (nextState && this.isOnlineRegistration() &&\r\n data &&\r\n (nextState.url.includes('onlineRegistration') || nextState.url.includes('parentPortalDataUpdate'))) {\r\n\r\n // If dirty ...\r\n if (dirty) {\r\n\r\n // And there are no errors ...\r\n if (errors.length == 0) {\r\n\r\n // Autosave with waiting\r\n return 5;\r\n }\r\n\r\n // And there are errors ...\r\n else {\r\n\r\n // Prevent route entirely\r\n return -1;\r\n }\r\n }\r\n\r\n // If not dirty, just continue\r\n else {\r\n return 2;\r\n }\r\n }\r\n\r\n // If dirty, show warning. Otherwise, just continue.\r\n if (dirty) {\r\n return 4;\r\n } else {\r\n return 2;\r\n }\r\n }\r\n\r\n getOnlineRegFamilies(isUHD: boolean): Observable {\r\n const queryString = '?userId=' + this.userService.currentUser.Id +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '&isUHD=' + isUHD;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationFamilies' + queryString);\r\n }\r\n\r\n // Shared Server Calls\r\n getFormPacket(allowUserToAddStudent: boolean = false, familyId: number = 0, parentType: string = '', userId: number = this.userService.currentUser.Id, student360YearId: number = 0, review: boolean = false): Observable {\r\n // PRE: online registration is true if this is for Online Registration\r\n // POST: gets the user's form packet for the specified update page\r\n\r\n if (this.isOnlineRegistration()) {\r\n // let student360YearId: number;\r\n if (student360YearId == 0 && this.forcefullyRedirectOnlineRegistration == true) {\r\n student360YearId = this.ORYear.Id;\r\n }\r\n else if (student360YearId == 0 ) {\r\n student360YearId = this.yearService.student360Year == undefined ? this.ORYear.Id : this.yearService.student360Year.Id;\r\n }\r\n\r\n const queryString = '?userId=' + userId +\r\n '&yearId=' + student360YearId +\r\n '&languageId=' + this.userService.languageId +\r\n '&allowUserToAddStudent=' + allowUserToAddStudent +\r\n '&familyId=' + familyId +\r\n '&parentType=' + parentType + \r\n '&review=' + review;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationUserPacket' + queryString).pipe(map(formPacket => {\r\n this.currentFormPacket = System.convert(formPacket, new FormPacket());\r\n return formPacket;\r\n }));\r\n } else {\r\n const queryString = '?userId=' + this.userService.currentUser.Id +\r\n '&studentId=' + this.studentService.selectedStudent.Id +\r\n '&yearId=' + this.yearService.student360Year.Id +\t// We don't use OR Year here because UHD doesn't allow year selection\r\n '&familyId=' + familyId +\r\n '&parentType=' + parentType;\r\n return this.http.get(System.apiURL.Student + 'GetParentPortalDataUpdateUserPacket' + queryString).pipe(map(formPacket => {\r\n this.currentFormPacket = System.convert(formPacket, new FormPacket());\r\n return formPacket;\r\n }));\r\n }\r\n }\r\n\r\n getFamilyDataFields(): Observable {\r\n // POST: obtains the family data fields for parent update\r\n return this.http.get(System.apiURL.Student + 'GetFamilyDataFields');\r\n }\r\n\r\n getHouseholdParents(): Observable {\r\n // PRE: the online registration currentForm must be the form for which we are obtaining data for\r\n // POST: gets the household parents for online registration\r\n const familyId = (!this.V10Data && this.familyId != null && this.familyId > 0) ? this.familyId : this.userService.currentUser.FamilyId;\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?familyId=' + familyId +\r\n '&yearId=' + this.currentFormPacket.YearId +\r\n '&onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId +\r\n '&languageId=' + this.userService.languageId +\r\n '&ayIdentifier=' + this.currentFormPacket.YearDescription;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationHouseholdParents' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + this.userService.currentUser.FamilyId +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'GetParentPortalDataUpdateHouseholdParents' + queryString);\r\n }\r\n }\r\n\r\n saveHouseholdParents(householdParents: HouseholdParents, newContact: boolean): Observable {\r\n // POST: saves the household parents to the server\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?userId=' + this.userService.currentUser.Id +\r\n '&newContact=' + (newContact ? 1 : 0);\r\n return this.http.post(System.apiURL.Student + 'SaveOnlineRegistrationHouseholdParentData' + queryString, householdParents);\r\n } else {\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveParentPortalDataUpdateHouseholdParentData' + queryString, householdParents);\r\n }\r\n }\r\n\r\n deleteHouseholdParents(): Observable {\r\n // PRE: the online registration currentForm must be the form for which we are deleting parent data\r\n // POST: deletes the new values from the parent data\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationHouseholdParentData' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + this.userService.currentUser.FamilyId +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteParentPortalDataUpdateHouseholdParentData' + queryString);\r\n }\r\n }\r\n\r\n getHouseholdAddresses(): Observable {\r\n // POST: obtains the household addresses\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?familyId=' + this.currentFormPacket.FamilyId +\r\n '&yearId=' + this.currentFormPacket.YearId +\r\n '&onlineRegistrationLInkScreenId=' + this.currentForm.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId +\r\n '&languageId=' + this.userService.languageId +\r\n '&ayIdentifier=' + this.currentFormPacket.YearDescription;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationHouseholdAddresses' + queryString).pipe(\r\n map(results => {\r\n for (let i = 0; i < results.OnlineRegistrationHouseholdAddressesDetail.length; i++) {\r\n const address = results.OnlineRegistrationHouseholdAddressesDetail[i];\r\n results.OnlineRegistrationHouseholdAddressesDetail[i] = System.convert
(address, new Address());\r\n }\r\n return results;\r\n })\r\n );\r\n } else {\r\n const queryString = '?familyId=' + this.userService.currentUser.FamilyId +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'GetParentPortalDataUpdateHouseholdAddresses' + queryString).pipe(\r\n map(results => {\r\n for (let i = 0; i < results.ParentPortalDataUpdateHouseholdAddressesDetail.length; i++) {\r\n const address = results.ParentPortalDataUpdateHouseholdAddressesDetail[i];\r\n results.ParentPortalDataUpdateHouseholdAddressesDetail[i] = System.convert
(address, new Address());\r\n }\r\n return results;\r\n })\r\n );\r\n }\r\n }\r\n\r\n saveHouseholdAddresses(householdAddresses: HouseholdAddresses): Observable {\r\n // POST: saves the household addresses to the server\r\n if (this.isOnlineRegistration()) {\r\n if (householdAddresses.OnlineRegistrationHouseholdAddressesDetail[0].SameAsPrimaryResidence) {\r\n householdAddresses.OnlineRegistrationHouseholdAddressesDetail[0].POBoxAddressLine1New = '';\r\n householdAddresses.OnlineRegistrationHouseholdAddressesDetail[0].POBoxAddressLine2New = '';\r\n householdAddresses.OnlineRegistrationHouseholdAddressesDetail[0].POBoxAddressLine3New = '';\r\n householdAddresses.OnlineRegistrationHouseholdAddressesDetail[0].POBoxAddressCityNew = '';\r\n householdAddresses.OnlineRegistrationHouseholdAddressesDetail[0].POBoxAddressStateNew = '';\r\n householdAddresses.OnlineRegistrationHouseholdAddressesDetail[0].POBoxAddressZipNew = '';\r\n }\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveOnlineRegistrationHouseholdAddressData' + queryString, householdAddresses);\r\n } else {\r\n if (householdAddresses.ParentPortalDataUpdateHouseholdAddressesDetail[0].SameAsPrimaryResidence) {\r\n householdAddresses.ParentPortalDataUpdateHouseholdAddressesDetail[0].POBoxAddressLine1New = '';\r\n householdAddresses.ParentPortalDataUpdateHouseholdAddressesDetail[0].POBoxAddressLine2New = '';\r\n householdAddresses.ParentPortalDataUpdateHouseholdAddressesDetail[0].POBoxAddressLine3New = '';\r\n householdAddresses.ParentPortalDataUpdateHouseholdAddressesDetail[0].POBoxAddressCityNew = '';\r\n householdAddresses.ParentPortalDataUpdateHouseholdAddressesDetail[0].POBoxAddressStateNew = '';\r\n householdAddresses.ParentPortalDataUpdateHouseholdAddressesDetail[0].POBoxAddressZipNew = '';\r\n }\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveParentPortalDataUpdateHouseholdAddressData' + queryString, householdAddresses);\r\n }\r\n }\r\n\r\n deleteHouseholdAddresses(): Observable {\r\n // PRE: the online registration currentForm must be the form for which we are deleting address data\r\n // POST: deletes the new values from the address data\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationHouseholdAddressData' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + this.userService.currentUser.FamilyId +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteParentPortalDataUpdateHouseholdAddressData' + queryString);\r\n }\r\n }\r\n\r\n getHouseholdStudents(): Observable {\r\n // POST: obtains the household students\r\n const familyId = (!this.V10Data && this.familyId != null && this.familyId > 0) ? this.familyId : this.userService.currentUser.FamilyId;\r\n let parentType = '';\r\n if (familyId > 0) {\r\n parentType = this.parentType;\r\n }\r\n const memId = this.V10Data ? this.userService.currentUser.MemberId : this.userService.currentUser.Id;\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?familyId=' + familyId +\r\n '&yearId=' + this.currentFormPacket.YearId +\r\n '&onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '¤tUserMemberId=' + memId + // Pass User Id For V9\r\n '&languageId=' + this.userService.languageId +\r\n '&ayIdentifier=' + this.currentFormPacket.YearDescription +\r\n '&parentType=' + parentType;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationStudent' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + familyId +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '&parentType=' + parentType;\r\n return this.http.get(System.apiURL.Student + 'GetParentPortalDataUpdateStudent' + queryString);\r\n }\r\n }\r\n\r\n saveHouseholdStudents(householdStudents: HouseholdStudents): Observable {\r\n // POST: saves the household students to the server\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveOnlineRegistrationStudentData' + queryString, householdStudents);\r\n } else {\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveParentPortalDataUpdateStudentData' + queryString, householdStudents);\r\n }\r\n }\r\n\r\n deleteHouseholdStudents(): Observable {\r\n // PRE: the online registration currentForm must be the form for which we are deleting address data\r\n // POST: deletes the new values from the address data\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationStudentData' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + this.userService.currentUser.FamilyId +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteParentPortalDataUpdateStudentData' + queryString);\r\n }\r\n }\r\n\r\n getMatchingStudentAddresses(students: HouseholdStudents): Observable {\r\n // PRE: an edited household students\r\n // POST: returns the matching student addresses\r\n if (this.isOnlineRegistration()) {\r\n return this.http.post(System.apiURL.Student + 'ORGetMatchingStudentAddresses', students);\r\n } else {\r\n return this.http.post(System.apiURL.Student + 'PPUGetMatchingStudentAddresses', students);\r\n }\r\n }\r\n\r\n getMatchingParentAddresses(students: HouseholdStudents): Observable {\r\n // PRE: an edited household students\r\n // POST: returns the matching parent addresses\r\n if (this.isOnlineRegistration()) {\r\n return this.http.post(System.apiURL.Student + 'ORGetMatchingParentAddresses', students);\r\n } else {\r\n return this.http.post(System.apiURL.Student + 'PPUGetMatchingParentAddresses', students);\r\n }\r\n }\r\n\r\n getMatchingAddresses(students: HouseholdStudents): Observable {\r\n // PRE: an edited household students\r\n // POST: returns the matching student address and the matching parent addresses as an array\r\n // results[0] is students, results[1] is parents\r\n return forkJoin(this.getMatchingStudentAddresses(students), this.getMatchingParentAddresses(students));\r\n }\r\n\r\n syncStudentAddresses(students: StudentDetails[]): Observable {\r\n // PRE: addresses that belong to students\r\n // POST: syncs them on the database\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?memberId=' + this.userService.currentUser.MemberId;\r\n return this.http.post(System.apiURL.Student + 'ORStudentSyncStudentAddresses' + queryString, students);\r\n } else {\r\n const queryString = '?memberId=' + this.userService.currentUser.MemberId;\r\n return this.http.post(System.apiURL.Student + 'PPUStudentSyncStudentAddresses' + queryString, students);\r\n }\r\n }\r\n\r\n syncParentAddresses(parentAddresses: HouseholdAddresses[]): Observable {\r\n // PRE: addresses that belong to parents\r\n // POST: syncs them on the database\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?memberId=' + this.userService.currentUser.MemberId;\r\n return this.http.post(System.apiURL.Student + 'ORStudentSyncParentAddresses' + queryString, parentAddresses);\r\n } else {\r\n const queryString = '?memberId=' + this.userService.currentUser.MemberId;\r\n return this.http.post(System.apiURL.Student + 'PPUStudentSyncParentAddresses' + queryString, parentAddresses);\r\n }\r\n }\r\n\r\n syncAddresses(students: StudentDetails[], parentAddresses: HouseholdAddresses[]): Observable {\r\n // POST: syncs the addresses on the database, respectively\r\n return forkJoin(this.syncStudentAddresses(students), this.syncParentAddresses(parentAddresses));\r\n }\r\n\r\n getEmergencyContact(): Observable {\r\n // PRE: the online registration currentForm must be the form for which we are obtaining data for\r\n // POST: gets the emergency contactsts for online registration\r\n const familyId = (!this.V10Data && this.familyId != null && this.familyId > 0) ? this.familyId : this.userService.currentUser.FamilyId;\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?familyId=' + familyId +\r\n '&yearId=' + this.currentFormPacket.YearId +\r\n '&onlineRegistrationLinkScreenId=' + this.currentForm.Id;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationEmergencyContacts' + queryString);\r\n }\r\n else {\r\n const queryString = '?familyId=' + familyId +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '&onlineRegistrationLinkScreenId=' + this.currentForm.Id;\r\n return this.http.get(System.apiURL.Student + 'GetParentPortalDataUpdateEmergencyContacts' + queryString);\r\n }\r\n }\r\n\r\n saveEmergencyContact(data: EmergencyContact, newContact: boolean): Observable {\r\n // POST: saves the emergency contact to the server\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?userId=' + this.userService.currentUser.Id +\r\n '&newContact=' + (newContact ? 1 : 0);\r\n return this.http.post(System.apiURL.Student + 'SaveOnlineRegistrationEmergencyContactData' + queryString, data);\r\n } else {\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveParentPortalDataUpdateEmergencyContactData' + queryString, data);\r\n }\r\n }\r\n\r\n deleteEmergencyContact(): Observable {\r\n // PRE: the online registration currentForm must be the form for which we are deleting contact data\r\n // POST: deletes the new values from the emergency contact data\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationEmergencyContactData' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + this.userService.currentUser.FamilyId +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'deleteParentPortalDataUpdateEmergencyContactData' + queryString);\r\n }\r\n }\r\n\r\n getNonResidentParents(): Observable {\r\n const familyId = (!this.V10Data && this.familyId != null && this.familyId > 0) ? this.familyId : this.userService.currentUser.FamilyId;\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?familyId=' + familyId +\r\n '&yearId=' + this.currentFormPacket.YearId +\r\n '&onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '&parentType=' + this.parentType +\r\n '&userId=' + this.userService.currentUser.Id\r\n ;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationNonResidentParents' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + familyId +\r\n '&userId=' + this.userService.currentUser.Id;\r\n return this.http.get(System.apiURL.Student + 'GetParentPortalDataUpdateNonResidentParents' + queryString);\r\n }\r\n }\r\n\r\n saveOnlineRegistrationNonResidentParentData(householdParents: HouseholdParents, newContact: boolean): Observable {\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveOnlineRegistrationNonResidentParentData' + queryString, householdParents);\r\n } else {\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveParentPortalDataUpdateNonResidentParentData' + queryString, householdParents);\r\n }\r\n }\r\n\r\n deleteNonResidentParentData(): Observable {\r\n if (this.isOnlineRegistration()) {\r\n const queryString = '?onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '&userId=' + this.userService.currentUser.Id;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationNonResidentParentData' + queryString);\r\n } else {\r\n const queryString = '?familyId=' + this.userService.currentUser.FamilyId;\r\n return this.http.get(System.apiURL.Student + 'DeleteParentPortalDataUpdateNonResidentParentData' + queryString);\r\n }\r\n }\r\n\r\n // Online Registration Only Server Calls\r\n getCustomForm(): Observable {\r\n // POST: obtains the custom forms for a household\r\n const familyId = (!this.V10Data && this.familyId != null && this.familyId > 0) ? this.familyId : this.userService.currentUser.FamilyId;\r\n const queryString = '?familyId=' + familyId +\r\n '&yearId=' + this.currentFormPacket.YearId +\r\n '&onlineRegistrationLinkScreenId=' + this.currentForm.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId +\r\n '&languageId=' + this.userService.languageId +\r\n '&ayIdentifier=' + this.currentFormPacket.YearDescription;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationCustomForm' + queryString);\r\n }\r\n\r\n saveCustomForm(customForm: HouseholdCustomForm): Observable {\r\n // PRE: a custom form to save\r\n // POST: saves the custom form to the server\r\n const queryString = '?userId=' + this.userService.currentUser.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveOnlineRegistrationCustomFormData' + queryString, customForm);\r\n }\r\n\r\n deleteCustomForm(): Observable {\r\n // PRE: the current form is the one we're resetting\r\n // POST: resets the current form in the server\r\n const queryString = '?onlineregistrationLinkScreenId=' + this.currentForm.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationCustomFormData' + queryString);\r\n }\r\n\r\n submitOnlineRegistrationPacket(): Observable {\r\n // PRE: the data for all packets should be set\r\n // POST: sends the submit event to the server\r\n // NOTE: this has no data because all the data should be saved on the server\r\n const queryString = '?Id=' + this.currentFormPacket.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '¤tUserMemberId=' + this.userService.currentUser.MemberId +\r\n '&languageId=' + this.userService.languageId;\r\n return this.http.get(System.apiURL.Student + 'SubmitOnlineRegistrationPacket' + queryString);\r\n }\r\n\r\n // Parent Portal Only Server Calls\r\n getHouseholdHealth(): Observable {\r\n // POST: obtains the current medical information for students\r\n const queryString = '?currentUserMemberId=' + this.userService.currentUser.MemberId +\r\n '&yearId=' + this.yearService.student360Year.Id;\r\n return this.http.get(System.apiURL.Student + 'GetParentPortalDataUpdateHealthMedical' + queryString);\r\n }\r\n\r\n saveHouseholdHealth(householdHealth: HouseholdHealth): Observable {\r\n // PRE: an edited household health object\r\n // POST: saves the data to the server\r\n const queryString = '?userId=' + this.userService.currentUser.Id +\r\n '&yearId=' + this.yearService.student360Year.Id;\r\n return this.http.post(System.apiURL.Student + 'SaveParentPortalDataUpdateHealthMedicalData' + queryString, householdHealth);\r\n }\r\n\r\n deleteHouseholdHealth(): Observable {\r\n // POST: resets the household health\r\n const queryString = '?currentUserMemberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteParentPortalDataUpdateHealthMedicalData' + queryString);\r\n }\r\n\r\n saveAttachment(attachment: Attachment): Observable {\r\n // PRE: an attachment with an attached user file\r\n // POST: saves the attachment to the server\r\n return this.http.post(System.apiURL.Student + 'SaveOnlineRegistrationAttachment', attachment);\r\n }\r\n\r\n deleteAttachment(attachment: Attachment): Observable {\r\n // PRE: an attachment to delete\r\n // POST: deletes the attachment from the server\r\n const queryString = '?DocumentId=' + attachment.DocumentFileId +\r\n '&memberId=' + this.userService.currentUser.MemberId;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationAttachment' + queryString);\r\n }\r\n\r\n checkStudentImmunizationCompliance(): Observable {\r\n // POST: returns the students who aren't complying and the corresponding messages\r\n const queryString = '?userId=' + this.userService.currentUser.Id +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '¤tUserMemberid=' + this.userService.currentUser.MemberId +\r\n '&languageId=' + this.userService.languageId +\r\n '&ayIdentifier=' + this.yearService.student360Year.AYIdentifier;\r\n return this.http.get(System.apiURL.Student + 'CheckORStudentsImmunizationCompliance' + queryString);\r\n }\r\n\r\n getForms(packet: FormPacket) {\r\n // PRE: online registration is true if this is for Online Registration\r\n // POST: returns the formPacket for the given use case\r\n let activeStudents: number[] = [];\r\n if (packet && packet.OnlineRegistrationActiveStudents) {\r\n activeStudents = packet.OnlineRegistrationActiveStudents.filter(activeStudent => this.V10Data || ((this.parentType == 'Nonresident Parent' && activeStudent.UserIsPrimaryContact == false) || this.parentType != 'Nonresident Parent')).map(s => s.Id);\r\n }\r\n if (this.isOnlineRegistration()) {\r\n if (packet.OnlineRegistrationForms && packet.OnlineRegistrationForms.length > 0) {\r\n return packet.OnlineRegistrationForms;\r\n } else {\r\n const blankFrom: Form[] = [];\r\n return blankFrom;\r\n }\r\n\r\n } else {\r\n if (packet.ParentPortalDataUpdateForms && packet.ParentPortalDataUpdateForms.length > 0) {\r\n return packet.ParentPortalDataUpdateForms;\r\n } else {\r\n const blankFrom: Form[] = [];\r\n return blankFrom;\r\n }\r\n return packet.ParentPortalDataUpdateForms;\r\n }\r\n }\r\n\r\n getOnlineRegistrationYears(allowUserToAddStudent: boolean): Observable {\r\n const queryString = '?allowUserToAddStudent=' + allowUserToAddStudent;\r\n return this.http.get(System.apiURL.Student + 'GetOnlineRegistrationYears' + queryString);\r\n }\r\n\r\n getORYearGradeLevels(yearId: number): Observable {\r\n const queryString = '?yearId=' + yearId;\r\n return this.http.get(System.apiURL.Student + 'GetORYearGradeLevels' + queryString);\r\n }\r\n\r\n deleteOnlineRegistrationUserPacket(userPacketId: number) {\r\n const queryString = '?id=' + userPacketId;\r\n return this.http.get(System.apiURL.Student + 'DeleteOnlineRegistrationUserPacket' + queryString);\r\n }\r\n\r\n getNewStudentLinkedContacts(familyId: number, formId: number): Observable {\r\n const queryString = '?familyId=' + familyId +\r\n '&formId=' + formId;\r\n return this.http.get(System.apiURL.Student + 'GetNewStudentLinkedContacts' + queryString);\r\n }\r\n\r\n saveNewStudentLinkedContacts(familyId: number, packetId: number, data: StudentLinkedToContact[]): Observable {\r\n const queryString = '?familyId=' + familyId +\r\n '&packetId=' + packetId;\r\n return this.http.post(System.apiURL.Student + 'SaveNewStudentLinkedContacts' + queryString, data);\r\n }\r\n}\r\n","\r\n
\r\n Multiple Families\r\n
\r\n\r\n\r\n
\r\n {{gradeLevelMessage | translate}} {{gradeLevelData}}\r\n
\r\n
\r\n {{note | translate}}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n Your Role\r\n \r\n Students\r\n \r\n Status\r\n
\r\n \r\n \r\n \r\n {{family.ParentType | translate}}\r\n \r\n
\r\n {{student.FirstName }} {{ student.LastName}}\r\n
\r\n
\r\n {{family.Status}}\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { OnlineRegFamilies } from '../../household-data.model';\r\nimport { TylerMatTableDataSource } from '../../../../shared-components/angular-material/extended.class';\r\nimport { StudentService } from '../../../../shared-components/student/student.service';\r\nimport { ErrorList } from '../../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { OnlineRegistrationService } from '../../online-registration.service';\r\nimport { YearService } from '../../../../shared-components/year/year.service';\r\n\r\n@Component({\r\n selector: 'app-multiple-families',\r\n templateUrl: './multiple-families.component.html',\r\n styleUrls: ['./multiple-families.component.css']\r\n})\r\nexport class MultipleFamiliesComponent implements OnInit {\r\n errors: ErrorList[] = [];\r\n isUHD: boolean;\r\n families: OnlineRegFamilies[] = [];\r\n tableData = new TylerMatTableDataSource();\r\n selectedFamilyId: number;\r\n gradeLevelMessage: string;\r\n gradeLevelData: string;\r\n note: string;\r\n columnsToDisplay = ['Select', 'Role', 'Students'];\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private onlineRegistrationService: OnlineRegistrationService,\r\n private dialog: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.isUHD = this.data.isUHD;\r\n if (!this.isUHD) {\r\n this.columnsToDisplay.push('Status');\r\n }\r\n this.onlineRegistrationService.getORYearGradeLevels(-1).subscribe(data => {\r\n if (data && data.indexOf('to') > 0) {\r\n this.gradeLevelMessage = 'Online Registration is currently open for grades ';\r\n this.gradeLevelData = data + '.';\r\n if (!this.isUHD) {\r\n this.note = 'You are associated with students in those grades in multiple families. For which family do you wish to access Online registration:';\r\n }\r\n\r\n } else if (data && data.length > 0) {\r\n this.gradeLevelMessage = 'Online Registration is currently open for grade ';\r\n this.gradeLevelData = data + '.';\r\n if (!this.isUHD) {\r\n this.note = 'You are associated with students in that grade in multiple families. For which family do you wish to access Online registration:';\r\n }\r\n }\r\n else {\r\n this.gradeLevelMessage = 'Online Registration is currently open for all grades.';\r\n if (!this.isUHD) {\r\n this.note = 'You are associated with students in multiple families. For which family do you wish to access Online registration:';\r\n }\r\n }\r\n\r\n if (this.isUHD) {\r\n this.note = 'You are associated with students in multiple families. For which family do you wish to access Update Household Data forms:';\r\n }\r\n\r\n });\r\n this.families = this.data.families;\r\n this.families.forEach(element => {\r\n element.Students = [];\r\n let studentIds: string[] = [];\r\n studentIds = element.StudentIds.split(',');\r\n studentIds.forEach(std => {\r\n const student = this.studentService.students.find(x => x.Id == parseInt(std, 10));\r\n if (student) {\r\n element.Students.push(student);\r\n }\r\n });\r\n });\r\n if (this.families && this.families.length > 0) {\r\n this.tableData.data = this.families;\r\n }\r\n }\r\n cancelClick() {\r\n this.dialog.close();\r\n }\r\n okClick() {\r\n if (this.selectedFamilyId > 0) {\r\n this.onlineRegistrationService.familyId = this.selectedFamilyId;\r\n const selectedFamily = this.families.find(x => x.FamilyId == this.selectedFamilyId);\r\n if (selectedFamily) {\r\n this.onlineRegistrationService.parentType = selectedFamily.ParentType;\r\n }\r\n this.dialog.close(this.selectedFamilyId);\r\n } else {\r\n const err: ErrorList = new ErrorList();\r\n err.errorMsg = 'Please select your role';\r\n err.fieldName = 'Role';\r\n err.fieldRef = undefined;\r\n this.errors.push(err);\r\n }\r\n }\r\n\r\n radioChange(ctrl) {\r\n if (ctrl && ctrl.value) {\r\n this.selectedFamilyId = ctrl.value;\r\n this.onlineRegistrationService.familyId = this.selectedFamilyId;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {PortfolioFilter} from './portfolio-filter';\r\n\r\n@Pipe({\r\n name: 'filterPortfolio',\r\n pure: false\r\n})\r\n\r\nexport class FilterPortfolio implements PipeTransform {\r\n\r\n transform(portfolios, filter?: PortfolioFilter): any {\r\n return portfolios.filter(\r\n portfolio =>\r\n (filter.Name == undefined || portfolio.Name.toLowerCase().startsWith(filter.Name.toLowerCase()) || (filter.Name.startsWith('%') && portfolio.Name.toLowerCase().indexOf(filter.Name.substring(1).toLowerCase()) > -1)) &&\r\n (filter.Desc == undefined || portfolio.Description.toLowerCase().startsWith(filter.Desc.toLowerCase()) || (filter.Desc.startsWith('%') && portfolio.Description.toLowerCase().indexOf(filter.Desc.substring(1).toLowerCase()) > -1)) &&\r\n (filter.Category == undefined || portfolio.Category.toLowerCase().startsWith(filter.Category.toLowerCase()) || (filter.Category.startsWith('%') && portfolio.Category.toLowerCase().indexOf(filter.Category.substring(1).toLowerCase()) > -1)) &&\r\n (filter.Year == undefined || portfolio.AYIdentifier.toLowerCase().startsWith(filter.Year.toLowerCase()) || (filter.Year.startsWith('%') && portfolio.AYIdentifier.toLowerCase().indexOf(filter.Year.substring(1).toLowerCase()) > -1)) &&\r\n (filter.AddBy == undefined || portfolio.AddedBy.toLowerCase().startsWith(filter.AddBy.toLowerCase()) || (filter.AddBy.startsWith('%') && portfolio.AddedBy.toLowerCase().indexOf(filter.AddBy.substring(1).toLowerCase()) > -1)) &&\r\n (filter.FromDate == undefined || filter.FromDate == '' || new Date(portfolio.Added) >= new Date(filter.FromDate)) &&\r\n (filter.ToDate == undefined || filter.ToDate == '' || new Date(portfolio.Added) <= new Date(filter.ToDate))\r\n );\r\n }\r\n}\r\n","
\r\n Add Document\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {{category.StuPortCategoryName}}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n Please select a file\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {PortfolioService} from '../portfolio.service';\r\nimport {AddFileComponent} from '../../../shared-components/controls/add-file/add-file.component';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport {Portfolio} from '../portfolio.model';\r\nimport {UserService} from '../../../shared-components/user/user.service';\r\nimport {StudentService} from '../../../shared-components/student/student.service';\r\nimport {YearService} from '../../../shared-components/year/year.service';\r\n\r\n@Component({\r\n selector: 'app-add-portfolio-modal',\r\n templateUrl: './add-portfolio-modal.component.html',\r\n styleUrls: ['./add-portfolio-modal.component.css']\r\n})\r\nexport class AddPortfolioModalComponent implements OnInit {\r\n @ViewChild(AddFileComponent, { static: true }) addFile;\r\n addDocumentForm: FormGroup;\r\n category: number;\r\n fileError = false;\r\n description: string;\r\n portfolioCategories: any[];\r\n fileCategoryErrorMessage = 'Required Field';\r\n fileDescriptionErrorMessage = 'Required Field';\r\n\r\n constructor(private yearService: YearService, private portfolioService: PortfolioService, private userService: UserService, private studentService: StudentService, private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.addDocumentForm = new FormGroup({\r\n 'fileCategory': new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n 'fileDescription': new FormControl(null, [\r\n Validators.required,\r\n ])\r\n });\r\n this.onChanges();\r\n this.portfolioService.getPortfolioCategories(this.userService.currentUser.Id).subscribe(res => {\r\n this.portfolioCategories = res;\r\n });\r\n }\r\n\r\n saveClick() {\r\n if (this.checkInputs()) {\r\n let fileSize = window.atob(this.addFile.fileString).length;\r\n let sizeUnit = 'bytes';\r\n if (fileSize > 1024) {\r\n fileSize = this.roundToTwo(fileSize / 1024);\r\n sizeUnit = 'KB';\r\n }\r\n if (fileSize > 1000) {\r\n fileSize = this.roundToTwo(fileSize / 1024);\r\n sizeUnit = 'MB';\r\n }\r\n // build of the portfolio object\r\n const portfolio: Portfolio = new Portfolio();\r\n portfolio.CategoryID = this.category;\r\n portfolio.StudentID = this.studentService.selectedStudent.Id;\r\n portfolio.Name = this.addFile.fileName;\r\n portfolio.Description = this.description;\r\n portfolio.FileBase64 = this.addFile.fileString;\r\n portfolio.FilePath = this.addFile.fileName;\r\n portfolio.AYIdentifier = this.yearService.student360Year.AYIdentifier;\r\n portfolio.AddedBy = this.userService.currentUser.MemberId.toString();\r\n portfolio.Size = fileSize;\r\n portfolio.SizeUnit = sizeUnit;\r\n // save to the database\r\n this.portfolioService.saveStudentPortfolio(portfolio).subscribe(res => {\r\n if (res.ok) {\r\n // Close the dialog\r\n this.dialogRef.close('Success');\r\n }\r\n });\r\n }\r\n }\r\n\r\n onChanges(): void {\r\n this.addDocumentForm.valueChanges.subscribe(val => {\r\n this.category = val['fileCategory'];\r\n this.description = val['fileDescription'];\r\n // check new Category\r\n if (this.addDocumentForm.controls.fileCategory.invalid) {\r\n if (this.addDocumentForm.controls.fileCategory.errors.hasOwnProperty('required')) {\r\n this.fileCategoryErrorMessage = 'Category is required';\r\n }\r\n }\r\n // Check Description\r\n if (this.addDocumentForm.controls.fileDescription.invalid) {\r\n if (this.addDocumentForm.controls.fileDescription.errors.hasOwnProperty('required')) {\r\n this.fileDescriptionErrorMessage = 'Description is required';\r\n }\r\n }\r\n });\r\n }\r\n\r\n checkInputs(): boolean {\r\n let isValid = true;\r\n if (this.fileCategory.invalid) {\r\n this.fileCategory.markAsTouched();\r\n this.fileCategory.markAsDirty();\r\n isValid = false;\r\n }\r\n if (this.fileDescription.invalid) {\r\n this.fileDescription.markAsTouched();\r\n this.fileDescription.markAsDirty();\r\n isValid = false;\r\n }\r\n if (!this.addFile.hasOwnProperty('fileName')) {\r\n this.fileError = true;\r\n isValid = false;\r\n } else {\r\n if (this.addFile.fileName == null) {\r\n this.fileError = true;\r\n isValid = false;\r\n } else {\r\n this.fileError = false;\r\n }\r\n }\r\n return isValid;\r\n }\r\n\r\n get fileCategory() {\r\n return this.addDocumentForm.get('fileCategory');\r\n }\r\n\r\n get fileDescription() {\r\n return this.addDocumentForm.get('fileDescription');\r\n }\r\n\r\n addFileChanges(event) {\r\n // check if a file has been selected\r\n if (this.addFile.hasOwnProperty('fileName')) {\r\n this.fileError = false;\r\n }\r\n }\r\n\r\n roundToTwo(num) {\r\n return +(Math.round(Number(num + 'e+2')) + 'e-2');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-delete-modal',\r\n templateUrl: './delete-portfolio-modal.component.html',\r\n styleUrls: ['./delete-portfolio-modal.component.css']\r\n})\r\nexport class DeletePortfolioModalComponent implements OnInit {\r\n\r\n constructor(private dialogRef: MatDialogRef) {}\r\n\r\n ngOnInit() {\r\n }\r\n\r\n continueClick() {\r\n this.dialogRef.close('Yes');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n Confirm Deletion\r\n
\r\n
\r\n
\r\n Are you sure you want to delete this portfolio document?\r\n
\r\n
\r\n
\r\n \r\n
\r\n","
\r\n Edit Document\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {{category.StuPortCategoryName}}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import {Component, Inject, OnInit, ViewChild} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {PortfolioService} from '../portfolio.service';\r\nimport {UserService} from '../../../shared-components/user/user.service';\r\nimport {TylFormFieldComponent} from '../../../shared-components/controls/tyl-form-field/tyl-form-field.component';\r\n\r\n@Component({\r\n selector: 'app-edit-portfolio-modal',\r\n templateUrl: './edit-portfolio-modal.component.html',\r\n styleUrls: ['./edit-portfolio-modal.component.css']\r\n})\r\nexport class EditPortfolioModalComponent implements OnInit {\r\n @ViewChild('fileCategoryInput', { static: true }) categoryInput: TylFormFieldComponent;\r\n document: any;\r\n editDocumentForm: FormGroup;\r\n category: number;\r\n description: string;\r\n portfolioCategories: any[];\r\n fileCategoryErrorMessage = 'Required Field';\r\n fileDescriptionErrorMessage = 'Required Field';\r\n constructor(private dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, private portfolioService: PortfolioService, private userService: UserService) { }\r\n\r\n ngOnInit() {\r\n this.document = this.data;\r\n this.editDocumentForm = new FormGroup({\r\n 'fileCategory': new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n 'fileDescription': new FormControl(null, [\r\n Validators.required,\r\n ])\r\n });\r\n this.onChanges();\r\n this.portfolioService.getPortfolioCategories(this.userService.currentUser.Id).subscribe(res => {\r\n this.portfolioCategories = res;\r\n const category = this.portfolioCategories.findIndex(cat => cat.StuPortCategoryName == this.document.Category)\r\n this.fileCategory.setValue(this.portfolioCategories[category].StuPortCategory_ID);\r\n this.fileDescription.setValue(this.document.Description);\r\n });\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n saveClick() {\r\n if (this.checkInputs()) {\r\n this.document.AddedBy = this.userService.currentUser.MemberId;\r\n this.document.Category = this.portfolioCategories.find(cate => cate.StuPortCategory_ID == this.fileCategory.value).StuPortCategoryName;\r\n this.document.Description = this.description;\r\n this.document.CategoryID = this.fileCategory.value;\r\n // save to the database\r\n this.portfolioService.editStudentPortfolio(this.document).subscribe(res => {\r\n if (res.ok) {\r\n // Close the dialog\r\n this.dialogRef.close('Success');\r\n }\r\n });\r\n }\r\n }\r\n\r\n checkInputs(): boolean {\r\n let isValid = true;\r\n if (this.fileCategory.invalid) {\r\n this.fileCategory.markAsTouched();\r\n this.fileCategory.markAsDirty();\r\n isValid = false;\r\n }\r\n if (this.fileDescription.invalid) {\r\n this.fileDescription.markAsTouched();\r\n this.fileDescription.markAsDirty();\r\n isValid = false;\r\n }\r\n return isValid;\r\n }\r\n\r\n get fileCategory() {\r\n return this.editDocumentForm.get('fileCategory');\r\n }\r\n\r\n get fileDescription() {\r\n return this.editDocumentForm.get('fileDescription');\r\n }\r\n\r\n onChanges(): void {\r\n this.editDocumentForm.valueChanges.subscribe(val => {\r\n this.category = val['fileCategory'];\r\n this.description = val['fileDescription'];\r\n // check new Category\r\n if (this.editDocumentForm.controls.fileCategory.invalid) {\r\n if (this.editDocumentForm.controls.fileCategory.errors.hasOwnProperty('required')) {\r\n this.fileCategoryErrorMessage = 'Category is required';\r\n }\r\n }\r\n // Check Description\r\n if (this.editDocumentForm.controls.fileDescription.invalid) {\r\n if (this.editDocumentForm.controls.fileDescription.errors.hasOwnProperty('required')) {\r\n this.fileDescriptionErrorMessage = 'Description is required';\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","\r\n\r\nexport class PortfolioFilter {\r\n\r\n\t// Properties\r\n\tName = '';\r\n\tDesc = '';\r\n\tCategory = '';\r\n\tYear = '';\r\n\tAdded: Date = undefined;\r\n\tFromDate: any = undefined;\r\n\tToDate: any = undefined;\r\n\tAddBy = '';\r\n}","
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n No Student Portfolio data exists for this student.\r\n
\r\n\r\n
0\">\r\n \r\n\r\n \r\n \r\n Added\r\n \r\n \r\n \r\n {{getDateFormatted(portfolio.Added)}}\r\n \r\n \r\n\r\n \r\n \r\n Category\r\n \r\n \r\n \r\n {{portfolio.Category}}\r\n \r\n \r\n\r\n \r\n \r\n Description\r\n \r\n \r\n \r\n {{portfolio.Description}}\r\n \r\n \r\n\r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n \r\n {{portfolio.Name}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n Size\r\n \r\n \r\n \r\n {{round(portfolio.Size)}} {{portfolio.SizeUnit}}\r\n \r\n \r\n\r\n \r\n \r\n Year\r\n \r\n \r\n \r\n {{portfolio.AYIdentifier}}\r\n \r\n \r\n\r\n \r\n \r\n Added By\r\n \r\n \r\n \r\n {{portfolio.AddedBy}}\r\n \r\n \r\n\r\n \r\n \r\n Access History\r\n \r\n \r\n \r\n 0\" class=\"link\" (click)=\"studentAccessHistoryClick(SD)\">\r\n {{SD.RecentAccessHistory[0].LastName}}, {{SD.RecentAccessHistory[0].FirstName}} {{SD.RecentAccessHistory[0].TimeStamp | date:'MM/dd/yy h:mm a'}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n Filter\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, EventEmitter, ViewChild, OnDestroy} from '@angular/core';\r\nimport {PortfolioService} from './portfolio.service';\r\nimport {SharedService} from '../../shared-components/shared.service';\r\nimport {StudentService} from '../../shared-components/student/student.service';\r\nimport {Portfolio} from './portfolio.model';\r\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSort } from '@angular/material/sort';\r\nimport {System} from '../../shared-components/System';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {FilterPortfolio} from './portfolio-filter.pipe';\r\nimport {UserService} from '../../shared-components/user/user.service';\r\nimport {AddPortfolioModalComponent} from './add-portfolio-modal/add-portfolio-modal.component';\r\nimport {formatDate} from '@angular/common';\r\nimport {TylerMatTableDataSource} from '../../shared-components/angular-material/extended.class';\r\nimport {DeletePortfolioModalComponent} from './delete-portfolio-modal/delete-portfolio-modal.component';\r\nimport {EditPortfolioModalComponent} from './edit-portfolio-modal/edit-portfolio-modal.component';\r\nimport {PortfolioFilter} from './portfolio-filter';\r\nimport {StudentDocumentAccessHistoryComponent} from '../student-documents/student-document-access-history/student-document-access-history.component';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'portfolio',\r\n providers: [PortfolioService],\r\n templateUrl: './portfolio.component.html',\r\n styleUrls: [\r\n './portfolio.component.css'\r\n ]\r\n})\r\nexport class PortfolioComponent implements OnDestroy {\r\n\r\n studentPortfolios;\r\n isStaffMember = false;\r\n portfolioFilter = new PortfolioFilter();\r\n previousPortfolioFilter = new PortfolioFilter();\r\n columnsToDisplay = ['Added', 'Category', 'Description', 'FileName', 'Size', 'Year', 'AddBy', 'RecentAccessHistory'];\r\n portfolioSource = new TylerMatTableDataSource();\r\n filterPortfolio = new FilterPortfolio();\r\n showFilter: boolean = false;\r\n clearFilterEvent = new EventEmitter();\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this.portfolioSource.sort = value;\r\n this.portfolioSource.sortingDataAccessor = (item: any, property: string) => {\r\n\r\n if (property == 'Added') {\r\n return new Date(item.Added).getTime();\r\n } else {\r\n return this.portfolioSource.defaultSortingAccessor(item, property);\r\n }\r\n };\r\n }\r\n\r\n constructor(\r\n private portfolioService: PortfolioService,\r\n private sharedService: SharedService,\r\n private dialog: MatDialog,\r\n private studentService: StudentService,\r\n private userService: UserService\r\n ) {\r\n if (this.userService.userType == 1 && this.userService.selectedStudentInfoPortal == undefined) {\r\n this.isStaffMember = true;\r\n if (this.isStaffMember) {\r\n // If Staff add new column Actions\r\n this.columnsToDisplay.push('Actions');\r\n }\r\n }\r\n this.studentService.selectedStudentStream$.subscribe(student => {\r\n this.studentPortfolios = undefined;\r\n this.getPortfolios();\r\n });\r\n }\r\n\r\n getPortfolios() {\r\n this.portfolioService.getPortfolios(this.studentService.selectedStudent.Id).subscribe(data => {\r\n this.studentPortfolios = data;\r\n this.portfolioSource.data = this.studentPortfolios;\r\n this.filterChanged();\r\n });\r\n }\r\n\r\n filterChanged() {\r\n this.portfolioSource.data = this.filterPortfolio.transform(this.studentPortfolios, this.portfolioFilter);\r\n }\r\n\r\n classFiltered() {\r\n if ((this.portfolioFilter.Name != undefined && this.portfolioFilter.Name.length > 0) ||\r\n (this.portfolioFilter.Desc != undefined && this.portfolioFilter.Desc.length > 0) ||\r\n (this.portfolioFilter.Category != undefined && this.portfolioFilter.Category.length > 0) ||\r\n (this.portfolioFilter.Year != undefined && this.portfolioFilter.Year.length > 0) ||\r\n this.portfolioFilter.FromDate != undefined || this.portfolioFilter.ToDate != undefined || this.portfolioFilter.Added ||\r\n (this.portfolioFilter.AddBy != undefined && this.portfolioFilter.AddBy.length > 0)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n showFilterClick() {\r\n this.showFilter = !this.showFilter;\r\n this.previousPortfolioFilter = JSON.parse(JSON.stringify(this.portfolioFilter));\r\n }\r\n\r\n addClick() {\r\n this.dialog.open(AddPortfolioModalComponent, {\r\n minWidth: 300,\r\n minHeight: 200,\r\n disableClose: true,\r\n autoFocus: false\r\n }).afterClosed().subscribe(result => {\r\n if (result == 'Success') {\r\n this.getPortfolios();\r\n }\r\n });\r\n }\r\n\r\n isEven(rowId: number) {\r\n return (rowId % 2) == 0;\r\n }\r\n\r\n clearFilter(fromFooter) {\r\n this.portfolioFilter = new PortfolioFilter();\r\n this.portfolioSource.filters = [];\r\n if (!fromFooter) {\r\n } else {\r\n this.portfolioSource.removeAllFilters();\r\n this.clearFilterEvent.emit();\r\n }\r\n this.filterChanged();\r\n }\r\n\r\n closeFilter() {\r\n this.showFilter = false;\r\n }\r\n\r\n viewPortfolio(portfolio: Portfolio) {\r\n // Audit document view if parent/contact\r\n if (this.userService.userType == 2) {\r\n this.portfolioService.auditStudentPortfolioDocument(portfolio.Id).subscribe(res => {\r\n System.viewFileFromBase(portfolio.FileBase64, portfolio.FileMimeType, portfolio.FilePath);\r\n // Get the portfolios again because the audit history changed\r\n this.getPortfolios();\r\n });\r\n } else {\r\n System.viewFileFromBase(portfolio.FileBase64, portfolio.FileMimeType, portfolio.FilePath);\r\n }\r\n }\r\n\r\n getDateFormatted(date) {\r\n return formatDate(date, 'MM/dd/yy', 'en-US');\r\n }\r\n\r\n editPortfolioDocumentClick(document) {\r\n this.dialog.open(EditPortfolioModalComponent, {\r\n minWidth: 520,\r\n minHeight: 200,\r\n data: document,\r\n disableClose: true,\r\n autoFocus: false\r\n }).afterClosed().subscribe(result => {\r\n if (result == 'Success') {\r\n this.getPortfolios();\r\n }\r\n });\r\n }\r\n\r\n deletePortfolioDocumentClick(document) {\r\n document.AddedBy = this.userService.currentUser.MemberId;\r\n this.dialog.open(DeletePortfolioModalComponent, {\r\n minWidth: 520,\r\n minHeight: 200,\r\n disableClose: true,\r\n autoFocus: false\r\n }).afterClosed().subscribe(result => {\r\n if (result == 'Yes') {\r\n this.portfolioService.deleteStudentPortfolio(document).subscribe(res => {\r\n if (res.ok) {\r\n this.getPortfolios();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n studentAccessHistoryClick(row) {\r\n const dialogRef = this.dialog.open(StudentDocumentAccessHistoryComponent, {\r\n disableClose: true,\r\n autoFocus: false,\r\n data: {AccessHistory: row.RecentAccessHistory}\r\n });\r\n }\r\n\r\n round(num: number) {\r\n return Math.round(num);\r\n }\r\n}\r\n","export class Portfolio {\r\n Id: number;\r\n Category: string;\r\n CategoryID: number;\r\n StudentID: number;\r\n Name: string;\r\n Description: string;\r\n Size: any;\r\n SizeUnit: string;\r\n SortSize: number;\r\n AYIdentifier: string;\r\n Added: string;\r\n AddedBy: string;\r\n FileBase64: string;\r\n FileMimeType: string;\r\n FilePath: string;\r\n RecentAccessHistory: string;\r\n}\r\n","import {System} from './../../shared-components/System';\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport {Portfolio} from './portfolio.model';\r\nimport {StudentService} from '../../shared-components/student/student.service';\r\n\r\n@Injectable()\r\nexport class PortfolioService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private yearService: YearService,\r\n private studentService: StudentService\r\n ) {\r\n }\r\n\r\n getPortfolios(studentId): Observable {\r\n return this.http.get(System.apiURL.Student + 'GetStudentPortfolios?studentId=' + studentId + '&yearId=' + this.yearService.student360Year.Id);\r\n }\r\n\r\n saveStudentPortfolio(document: Portfolio): Observable {\r\n return this.studentService.saveStudentPortfolio(document);\r\n }\r\n\r\n auditStudentPortfolioDocument(id: number): Observable {\r\n return this.http.post(System.apiURL.Student + `AuditStudentPortfolioDocument?StuPortDocs_ID=${id}`, {observe: 'response'});\r\n }\r\n\r\n getPortfolioCategories(Login_Id): Observable {\r\n return this.http.get(System.apiURL.Student + `GetStudentPortfolioCategories?Login_ID=${Login_Id}`);\r\n }\r\n\r\n editStudentPortfolio(document: Portfolio): Observable {\r\n return this.http.post(System.apiURL.Student + `EditStudentPortfolio`, document, {observe: 'response'});\r\n }\r\n\r\n deleteStudentPortfolio(document: Portfolio): Observable {\r\n return this.http.post(System.apiURL.Student + `DeleteStudentPortfolio`, document, {observe: 'response'});\r\n }\r\n}\r\n","export class ProgramsAndServicesFilter {\r\n\tentryDateStart: Date = undefined;\r\n\tentryDateEnd: Date = undefined;\r\n\texitDateStart: Date = undefined;\r\n\texitDateEnd: Date = undefined;\r\n\tprogramName = '';\r\n\tserviceName = '';\r\n\tshown = 0;\r\n\tonThisDate: Date = undefined;\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n No Programs and Services data for student.\r\n
\r\n\r\n \r\n 0\" matSort\r\n matSortDisableClear matSortActive=\"ProgramName\" matSortDirection=\"asc\" multiTemplateDataRows>\r\n\r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n Program Name\r\n \r\n \r\n \r\n \r\n {{programAndService.ProgramName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Service Name\r\n \r\n \r\n \r\n \r\n {{programAndService.ServiceName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Entry Date\r\n \r\n \r\n \r\n {{programAndService.EntryDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Exit Date\r\n \r\n \r\n \r\n {{programAndService.ExitDate.toDateString() != junkDate.toDateString() ? (programAndService.ExitDate | date: 'MM/dd/yy') : ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{programAndService.hasCommentsString}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{programAndService.hasAttachmentsString}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n

Service Details

\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n

Comments

\r\n
\r\n {{programAndService.Comments}}
\r\n
\r\n\r\n \r\n \r\n

Attachments

\r\n\r\n \r\n \r\n\r\n \r\n \r\n Name\r\n \r\n \r\n \r\n {{programAndServiceAttachment.AttachmentFileName}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n Description\r\n \r\n \r\n {{programAndServiceAttachment.AttachmentDescription}}\r\n \r\n \r\n\r\n \r\n \r\n Added\r\n \r\n \r\n {{programAndServiceAttachment.AttachmentAddedOn | date: 'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n Added By\r\n \r\n \r\n {{programAndServiceAttachment.AttachmentAddedBy}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{firstDetail.FieldValue}}\r\n \r\n \r\n \r\n \r\n \r\n {{secondDetail.FieldValue}}\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n
\r\n Filter\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from './../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from './../../shared-components/angular-material/mat-animations';\r\nimport { System } from './../../shared-components/System';\r\nimport { Component, OnInit, OnDestroy, EventEmitter, ViewChild, TemplateRef, ChangeDetectorRef } from '@angular/core';\r\nimport { ProgramsAndServicesService } from './programs-and-services.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ProgramAndService } from './programs-and-services.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { ProgramsAndServicesFilter } from './programs-and-services-filter';\r\n\r\n@Component({\r\n\tselector: 'app-programs-and-services',\r\n\ttemplateUrl: './programs-and-services.component.html',\r\n\tstyleUrls: [\r\n\t\t'./programs-and-services.component.css'\r\n\t],\r\n\tanimations: [\r\n\t\tdetailExpand\r\n\t]\r\n})\r\nexport class ProgramsAndServicesComponent implements OnInit, OnDestroy {\r\n\r\n\t// Properties\r\n\tprivate _sort: MatSort;\r\n\t@ViewChild('filterMenu', { read: TemplateRef }) filterMenu: TemplateRef;\r\n\tsubscriptions: Subscription[] = [];\r\n\tprogramsAndServices: ProgramAndService[];\r\n\ttableData = new TylerMatTableDataSource();\r\n\tcolumns = ['More', 'ProgramName', 'ServiceName', 'EntryDate', 'ExitDate', 'Comments', 'Attachments'];\r\n\tjunkDate = new Date('0001-01-01T00:00:00');\r\n\ttoggleAllRows: EventEmitter = new EventEmitter();\r\n\tgridHeight = 0;\r\n expanded: { [key: number]: boolean } = {};\r\n showFilter: boolean = false;\r\n\tfilter: ProgramsAndServicesFilter;\r\n\tpreviousFilter: ProgramsAndServicesFilter;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate programsAndServicesService: ProgramsAndServicesService,\r\n\t\tprivate studentService: StudentService,\r\n\t\tprivate yearService: YearService,\r\n\t\tprivate sharedService: SharedService,\r\n\t\tprivate changeDetector: ChangeDetectorRef\r\n\t) { }\r\n\r\n\tget sort(): MatSort {\r\n\t\treturn this._sort;\r\n\t}\r\n\r\n\t@ViewChild(MatSort) set sort(value: MatSort) {\r\n\t\tthis._sort = value;\r\n\t\tif (this.tableData) {\r\n\t\t\tthis.tableData.sort = this._sort;\r\n\t\t}\r\n\t}\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\t// POST: initializes and obtains the necessary data\r\n\r\n\t\t// Initializing data\r\n\t\tthis.filter = new ProgramsAndServicesFilter();\r\n\t\tthis.previousFilter = new ProgramsAndServicesFilter();\r\n\t\tthis.filter.shown = 0;\r\n\t\tthis.previousFilter.shown = 0;\r\n\t\tif (this.studentService.selectedProgramName && this.studentService.selectedServiceName) {\r\n\t\t\tthis.filter.programName = this.studentService.selectedProgramName;\r\n\t\t\tthis.filter.serviceName = this.studentService.selectedServiceName;\r\n\r\n\t\t\tthis.studentService.selectedProgramName = '';\r\n\t\t\tthis.studentService.selectedServiceName = '';\r\n\t\t}\r\n\r\n\t\t// Getting data\r\n\t\tthis.getProgramsAndServices();\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.studentService.selectedStudentStream$.subscribe(() => {\r\n\t\t\t\tthis.getProgramsAndServices();\r\n\t\t\t}),\r\n\t\t\tthis.toggleAllRows.subscribe(toggle => {\r\n\t\t\t\tthis.tableData.expandAll(toggle);\r\n\t\t\t}),\r\n\t\t\tthis.yearService.observableStudent360YearStream$.subscribe(() => {\r\n\t\t\t\tthis.getProgramsAndServices();\r\n\t\t\t}),\r\n\t\t\tthis.studentService.observableSelectedProgramAndServiceStream.subscribe(() => {\r\n\t\t\t\tif (this.studentService.selectedProgramName && this.studentService.selectedServiceName) {\r\n\t\t\t\t\tthis.filter.programName = this.studentService.selectedProgramName;\r\n\t\t\t\t\tthis.filter.serviceName = this.studentService.selectedServiceName;\r\n\r\n\t\t\t\t\tthis.studentService.selectedProgramName = '';\r\n\t\t\t\t\tthis.studentService.selectedServiceName = '';\r\n\r\n\t\t\t\t\tthis.tableData.removeAllFilters();\r\n\t\t\t\t\tthis.applyFilter();\r\n\t\t\t\t\tthis.changeDetector.detectChanges();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t\tthis.tableData.sort = this.sort;\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// POST: ends all subscriptions\r\n\t\tthis.subscriptions.forEach(subscription => {\r\n\t\t\tsubscription.unsubscribe();\r\n\t\t});\r\n\t}\r\n\r\n\topenFilter() {\r\n this.showFilter = !this.showFilter;\r\n\t}\r\n\r\n\tclearFilter() {\r\n\t\t// PRE: the user clicks on the clear button in the filter\r\n\t\t// POST: clears the filter data and DOES NOT CLOSE THE FILTER\r\n\t\tlet getNewData = false;\r\n\t\tif (this.filter.shown != new ProgramsAndServicesFilter().shown) {\r\n\t\t\tgetNewData = true;\r\n\t\t}\r\n\t\tObject.assign(this.filter, new ProgramsAndServicesFilter());\r\n\t\tif (getNewData) {\r\n\t\t\tthis.getProgramsAndServices();\r\n\t\t} else {\r\n\t\t this.applyFilter();\r\n }\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n\r\n\tclearFilterFromNotice() {\r\n\t\t// PRE: the user clicks the clear filter link from the notice on the footer\r\n\t\t// POTS: clears the footer and resets ALL of the values (because the filter isn't open)\r\n\t\tlet getNewData = false;\r\n\t\tif (this.filter.shown != new ProgramsAndServicesFilter().shown) {\r\n\t\t\tgetNewData = true;\r\n\t\t}\r\n\t\tObject.assign(this.filter, new ProgramsAndServicesFilter());\r\n this.tableData.removeAllFilters();\r\n\t\tif (getNewData) {\r\n\t\t\tthis.getProgramsAndServices();\r\n\t\t} else {\r\n this.applyFilter();\r\n }\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n\r\n\tcloseFilter() {\r\n this.openFilter();\r\n\t}\r\n\r\n\t// Methods\r\n\tisFiltered() {\r\n\t\t// POST: returns true if the data is being panelFiltered\r\n\t\tif (this.filter.entryDateStart && this.filter.entryDateStart.toString() == 'Invalid Date') {\r\n\t\t\tthis.filter.entryDateStart = undefined;\r\n\t\t}\r\n\t\tif (this.filter.entryDateEnd && this.filter.entryDateEnd.toString() == 'Invalid Date') {\r\n\t\t this.filter.entryDateEnd = undefined;\r\n }\r\n\t\tif (this.filter.exitDateStart && this.filter.exitDateStart.toString() == 'Invalid Date') {\r\n\t\t\tthis.filter.exitDateStart = undefined;\r\n\t\t}\r\n\t\tif (this.filter.exitDateEnd && this.filter.exitDateEnd.toString() == 'Invalid Date') {\r\n\t\t this.filter.exitDateEnd = undefined;\r\n }\r\n\t\treturn !System.isEqual(this.filter, new ProgramsAndServicesFilter()) || this.tableData.isFiltered();\r\n\t}\r\n\r\n\ttoggleExpanded(rowId: number) {\r\n\t\t// POST: toggles the expansion of that row\r\n\t\tthis.expanded[rowId] = !this.expanded[rowId];\r\n\t}\r\n\r\n\tgetProgramsAndServices() {\r\n\t\t// POST: uses the services to get programs and services, returning the observable\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.programsAndServicesService.getProgramsAndServices(this.filter.shown).subscribe(programsAndServices => {\r\n\t\t\t\tthis.programsAndServices = [];\r\n\t\t\t\tprogramsAndServices.forEach(programAndService => {\r\n\t\t\t\t\tfor (let i = 0; i < programAndService.Attachments.length; i++) {\r\n\t\t\t\t\t\tprogramAndService.Attachments[i] = System.convert(programAndService.Attachments[i], new Attachment());\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.programsAndServices.push(System.convert(programAndService, new ProgramAndService()));\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.tableData.data = this.programsAndServices;\r\n\t\t\t\t\t\tthis.applyFilter();\r\n\t\t\t\t\t\tthis.expanded = {};\r\n\t\t\t\t\t\tif (this.sort) {\r\n\t\t\t\t\t\t\tthis.tableData.sort = this.sort;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t0\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tviewAttachment(attachment: Attachment) {\r\n\t\t// PRE: an attachment to view\r\n\t\t// POST: goes to view that attachment\r\n\t\tif (attachment.DocumentMimeType == 'application/vnd.openxmlformats-officedocument.word') {\r\n\t\t\tSystem.saveFile(attachment.DocumentBase64, attachment.DocumentMimeType, attachment.DocumentName);\r\n\t\t} else {\r\n\t\t\tSystem.viewFileFromId(attachment.AttachmentId, attachment.AttachmentFileName);\r\n\t\t}\r\n\t}\r\n\r\n\thasDetails(programAndService: ProgramAndService): boolean {\r\n\t\t// POST: returns true if the program and service has details\r\n\t\treturn programAndService.Comments != '' ||\r\n\t\t\t(programAndService.Attachments && programAndService.Attachments.length > 0) ||\r\n\t\t\t(programAndService.ProgramAndServicesDetail && programAndService.ProgramAndServicesDetail.length > 0);\r\n\t}\r\n\r\n\tapplyFilter() {\r\n\t\t// POST: applies the filter to the data\r\n\t\tlet data = this.programsAndServices;\r\n\r\n\t\t// Entry Date\r\n\t\tif (this.filter.entryDateStart && this.filter.entryDateStart.toString() != 'Invalid Date') {\r\n\t\t System.roundDateDown(this.filter.entryDateStart);\r\n\t\t\tdata = data.filter(datum =>\r\n\t\t\t\tdatum.EntryDate >= this.filter.entryDateStart\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (this.filter.entryDateEnd && this.filter.entryDateEnd.toString() != 'Invalid Date') {\r\n\t\t System.roundDateUp(this.filter.entryDateEnd);\r\n data = data.filter(datum =>\r\n datum.EntryDate <= this.filter.entryDateEnd\r\n );\r\n }\r\n\r\n\t\t// Exit Date\r\n\t\tif (this.filter.exitDateStart && this.filter.exitDateStart.toString() != 'Invalid Date') {\r\n\t\t System.roundDateDown(this.filter.exitDateStart);\r\n\t\t\tdata = data.filter(datum =>\r\n\t\t\t\tdatum.ExitDate >= this.filter.exitDateStart\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (this.filter.exitDateEnd && this.filter.exitDateEnd.toString() != 'Invalid Date') {\r\n System.roundDateUp(this.filter.exitDateEnd);\r\n data = data.filter(datum =>\r\n datum.ExitDate <= this.filter.exitDateEnd\r\n );\r\n }\r\n\r\n\t\t// Program Name\r\n\t\tif (this.filter.programName) {\r\n\t\t\tdata = data.filter(datum =>\r\n\t\t\t\tdatum.ProgramName.toLowerCase().includes(this.filter.programName.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Service Name\r\n\t\tif (this.filter.serviceName) {\r\n\t\t\tdata = data.filter(datum =>\r\n\t\t\t\tdatum.ServiceName.toLowerCase().includes(this.filter.serviceName.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// NOTE: Show is handled by getProgramsAndServices\r\n\r\n\t\t// Setting the table data\r\n\t\tthis.tableData.data = data;\r\n\t}\r\n\r\n\t// These were created from a misunderstanding of ARIA but have been kept in in case they could become useful\r\n\tprogramAndServiceAriaLabel(programAndService: ProgramAndService): string {\r\n\t\t// PRE: a program and service to generate an aria label for\r\n\t\t// POST: creates the aria label for a program and service's table row\r\n\t\treturn 'Program ' + programAndService.ProgramName + ' and service ' + programAndService.ServiceName + '. ' +\r\n\t\t\t'Entry date ' + programAndService.EntryDate.toDateString() +\r\n\t\t\t(programAndService.ExitDate.toDateString() != this.junkDate.toDateString() ? ' and exit date ' + programAndService.ExitDate.toDateString() + '. ' : '. ') +\r\n\t\t\t(programAndService.Comments.length > 0 ? 'Service has comments. ' : 'Service does not have comments. ') +\r\n\t\t\t(programAndService.Attachments.length > 0 ? 'Service has attachments. ' : 'Service does not have attachments. ') +\r\n\t\t\t(this.hasDetails(programAndService) ? 'Press enter to see details.' : '');\r\n\t}\r\n\r\n\tprogramAndServiceDetailAttachmentsAriaLabel(attachment: Attachment): string {\r\n\t\t// PRE: a program and service detail to generate an aria label for\r\n\t\t// POST: creates the aria label for the program and service detail's attachment's table row\r\n\t\treturn 'Attachment ' + attachment.AttachmentFileName + '. ' +\r\n\t\t\t'Attachment Description: ' + attachment.AttachmentDescription + '. ' +\r\n\t\t\t'Attachment Added on: ' + attachment.AttachmentAddedOn.toDateString() + '. ' +\r\n\t\t\t'Attachment Added by: ' + attachment.AttachmentAddedBy + '. ' +\r\n\t\t\t'Press enter to view attachment.';\r\n\t}\r\n}\r\n","import { Attachment } from '../../shared-components/models/attachment.model';\r\nimport { ProgramAndServiceDetail } from './programs-and-services-detail.model';\r\nimport { System } from '../../shared-components/System';\r\nimport { Student } from '../../shared-components/student/student.model';\r\n\r\nexport class ProgramAndService {\r\n\r\n // Properties\r\n id: number;\r\n Attachments: Attachment[];\r\n Comments: string;\r\n EntryDate = new Date(System.junkDateString);\r\n ExitDate = new Date(System.junkDateString);\r\n Id: number;\r\n ProgramAndServicesDetail: ProgramAndServiceDetail[];\r\n ProgramName: string;\r\n Sequence: number;\r\n ServiceName: string;\r\n private _sortedDetails: ProgramAndServiceDetail[];\r\n ProgramCodeId: number;\r\n ServiceCodeId: number;\r\n StudentId: number;\r\n FirstName = '';\r\n LastName = '';\r\n MiddleName = '';\r\n NickName = '';\r\n UserHasEditPermission = false;\r\n UserHasDeletePermission = false;\r\n // Selected Student for massupdate\r\n Students: Student[] = [];\r\n\r\n checked: false;\r\n // Class Functions\r\n get hasComments(): boolean {\r\n return this.Comments != null && this.Comments != undefined && this.Comments.length > 0;\r\n }\r\n\r\n get hasCommentsString(): string {\r\n return this.hasComments ? 'Y' : '';\r\n }\r\n\r\n get hasAttachments(): boolean {\r\n return this.Attachments != null && this.Attachments != undefined && this.Attachments.length > 0;\r\n }\r\n\r\n get hasAttachmentsString(): string {\r\n return this.hasAttachments ? 'Y' : '';\r\n }\r\n\r\n get detailsBySequence(): ProgramAndServiceDetail[] {\r\n if (!this._sortedDetails) {\r\n this._sortedDetails = this.ProgramAndServicesDetail.sort((a, b) => {\r\n return a.Sequence - b.Sequence;\r\n });\r\n }\r\n return this._sortedDetails;\r\n }\r\n}\r\n","import {System} from './../../shared-components/System';\r\nimport {Injectable} from '@angular/core';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport {StudentService} from '../../shared-components/student/student.service';\r\nimport {ProgramAndService} from './programs-and-services.model';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {SharedService} from '../../shared-components/shared.service';\r\n\r\n@Injectable()\r\nexport class ProgramsAndServicesService {\r\n\r\n // Properties\r\n\r\n // Class Functions\r\n constructor(\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private http: HttpClient,\r\n private sharedService: SharedService\r\n ) {\r\n }\r\n\r\n // Event Functions\r\n\r\n // Methods\r\n getProgramsAndServices(viewOption = 0) {\r\n // POST: obtains the programs and services for the student in the selected year\r\n const queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '&siteYearId=' + this.studentService.studentEnrollment.SiteYearId +\r\n '&viewOption=' + viewOption;\r\n return this.http.get(System.apiURL.Student + 'GetProgramAndServices' + queryString);\r\n }\r\n}\r\n","\r\nexport class ScheduleHistoryModel {\r\n STUDENTNAME: string;\r\n STUDENTID: string;\r\n COURSECODE: string;\r\n COURSE: string;\r\n SECTION: string;\r\n TEACHER: string;\r\n SCHOOLENTRY: string;\r\n SCHOOLEXIT: string;\r\n CLASSENTRY: string;\r\n CLASSEXIT: string;\r\n USERNAME: string;\r\n LASTUPDATEDDATE: string;\r\n}\r\n\r\nexport class ScheduleHistorySearchModel {\r\n classEntryDateFrom: string;\r\n classEntryDateTo: string;\r\n classExitDateFrom: string;\r\n classExitDateTo: string;\r\n lastName: string;\r\n firstName: string;\r\n studentNumber: string;\r\n studentListId: number;\r\n studentTeamId: number;\r\n counselorId: number;\r\n\r\n constructor(studentNumber: string) {\r\n this.classEntryDateFrom = '';\r\n this.classEntryDateTo = '';\r\n this.classExitDateFrom = '';\r\n this.classExitDateTo = '';\r\n this.lastName = '';\r\n this.firstName = '';\r\n this.studentNumber = studentNumber;\r\n this.studentListId = -1;\r\n this.studentTeamId = -1;\r\n this.counselorId = -1;\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { System } from '../../shared-components/System';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ScheduleHistoryModel, ScheduleHistorySearchModel } from './schedule-history.model';\r\nimport { formatDate } from '@angular/common';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScheduleHistoryService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n getCourseChangeHistory(siteId: number, yearId: number, scheduleHistorySearchModel: ScheduleHistorySearchModel): Observable {\r\n let queryString = '';\r\n queryString += '?siteId=' + siteId +\r\n '&yearId=' + yearId +\r\n '&addFromDate=' + scheduleHistorySearchModel.classEntryDateFrom +\r\n '&addToDate=' + scheduleHistorySearchModel.classEntryDateTo +\r\n '&dropFromDate=' + scheduleHistorySearchModel.classExitDateFrom +\r\n '&dropToDate=' + scheduleHistorySearchModel.classExitDateTo +\r\n '&lastName=' + scheduleHistorySearchModel.lastName +\r\n '&firstName=' + scheduleHistorySearchModel.firstName +\r\n '&studentNumber=' + scheduleHistorySearchModel.studentNumber +\r\n '&studentListId=' + scheduleHistorySearchModel.studentListId +\r\n '&studentTeamId=' + scheduleHistorySearchModel.studentTeamId +\r\n '&counselorId=' + scheduleHistorySearchModel.counselorId ;\r\n return this.http.get(System.apiURL.Student + 'GetCourseChangeHistory' + queryString);\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n Class Entry Date\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Class Exit Date\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{studentList.Name}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{team.StudentTeamName}}\r\n \r\n \r\n \r\n \r\n \r\n {{c.NAME}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Student\r\n \r\n \r\n \r\n \r\n {{data.STUDENTNAME}}\r\n \r\n \r\n \r\n \r\n Student #\r\n \r\n \r\n \r\n \r\n {{data.STUDENTID}}\r\n \r\n \r\n \r\n \r\n Course Name\r\n \r\n \r\n \r\n \r\n {{data.COURSE}}\r\n \r\n \r\n \r\n \r\n Course #\r\n \r\n \r\n \r\n \r\n {{data.COURSECODE}}\r\n \r\n \r\n \r\n \r\n Section\r\n \r\n \r\n \r\n \r\n {{data.SECTION}}\r\n \r\n \r\n \r\n \r\n Teacher\r\n \r\n \r\n \r\n \r\n {{data.TEACHER}}\r\n \r\n \r\n \r\n \r\n School Entry\r\n \r\n \r\n \r\n \r\n {{data.SCHOOLENTRY}}\r\n \r\n \r\n \r\n \r\n School Exit\r\n \r\n \r\n \r\n \r\n {{data.SCHOOLEXIT}}\r\n \r\n \r\n \r\n \r\n Class Entry\r\n \r\n \r\n \r\n \r\n {{data.CLASSENTRY}}\r\n \r\n \r\n \r\n \r\n Class Exit\r\n \r\n \r\n \r\n \r\n {{data.CLASSEXIT}}\r\n \r\n \r\n \r\n \r\n User\r\n \r\n \r\n \r\n \r\n {{data.USERNAME}}\r\n \r\n \r\n \r\n \r\n Last Updated\r\n \r\n \r\n \r\n \r\n {{data.LASTUPDATEDDATE}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
","import { formatDate } from '@angular/common';\r\nimport { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Router } from '@angular/router';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Subscription } from 'rxjs';\r\nimport { TeamsService } from '../../admin360/student-info/teams/teams.service';\r\nimport { StudentList } from '../../classroom360/student-lists/student-list.model';\r\nimport { StudentListsService } from '../../classroom360/student-lists/student-lists.service';\r\nimport { StudentTeams } from '../../classroom360/student-teams/student-teams.model';\r\nimport { StaffRolesLookup } from '../../management360/staff/staff.model';\r\nimport { StaffService } from '../../management360/staff/staff.service';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { EnterCsvDialogComponent } from '../../shared-components/enter-csv-dialog/enter-csv-dialog.component';\r\nimport { StudentSearchCriteria } from '../../shared-components/student-search/student-search-criteria.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { ScheduleHistoryModel, ScheduleHistorySearchModel } from './schedule-history.model';\r\nimport { ScheduleHistoryService } from './schedule-history.service';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-schedule-history',\r\n templateUrl: './schedule-history.component.html',\r\n styleUrls: ['./schedule-history.component.css']\r\n})\r\nexport class ScheduleHistoryComponent implements OnInit, OnDestroy {\r\n defaultYearSubscription: Subscription;\r\n selectedStudentSubscription: Subscription;\r\n scheduleHistorySearchModel: ScheduleHistorySearchModel;\r\n scheduleHistoryModel: ScheduleHistoryModel[] = [];\r\n studentNumberRegExp = /^[^\\s,]+(,[^\\s,]+)*$/;\r\n studentNumberKeyRestriction = /[^\\s,]|,/;\r\n subscriptions: Subscription[] = [];\r\n studentLists: StudentList[] = [];\r\n teams: StudentTeams[] = [];\r\n counselor: StaffRolesLookup[] = [];\r\n multipleStudent: boolean;\r\n private _studentList: StudentList = null;\r\n errors: ErrorList[] = [];\r\n defaultYear: Year;\r\n searchCriteria: StudentSearchCriteria;\r\n public schedule: ScheduleHistoryModel;\r\n angularMatData = new TylerMatTableDataSource();\r\n columnsToDisplay = ['COURSE', 'COURSECODE', 'SECTION', 'TEACHER', 'SCHOOLENTRY', 'SCHOOLEXIT', 'CLASSENTRY', 'CLASSEXIT', 'USERNAME', 'LASTUPDATEDDATE'];\r\n\r\n classEntryDateFrom: ElementRef;\r\n classEntryDateTo: ElementRef;\r\n classExitDateFrom: ElementRef;\r\n classExitDateTo: ElementRef;\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n constructor(\r\n private router: Router,\r\n private scheduleHistoryService: ScheduleHistoryService,\r\n private dialog: MatDialog,\r\n private studentListsService: StudentListsService,\r\n private yearService: YearService,\r\n private teamsService: TeamsService,\r\n private counselorService: StaffService,\r\n private studentService: StudentService\r\n ) {\r\n this.multipleStudent = true;\r\n this.scheduleHistorySearchModel = new ScheduleHistorySearchModel('');\r\n\r\n this.defaultYear = this.yearService.defaultYear;\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(studentId => {\r\n if (!this.multipleStudent) {\r\n this.scheduleHistorySearchModel = new ScheduleHistorySearchModel(this.studentService.selectedStudent.StudentNumber);\r\n this.getCourseChangeHistoryData();\r\n }\r\n });\r\n }\r\n\r\n get studentList(): StudentList {\r\n return this._studentList;\r\n }\r\n\r\n set studentList(value: StudentList) {\r\n this._studentList = value;\r\n if (this._studentList) {\r\n this.searchCriteria.listId = this._studentList.ID;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.multipleStudent = this.router.url.toLowerCase().indexOf('/schedulehistory/multiplestudent') > 0 ? true : false;\r\n if (this.multipleStudent) {\r\n this.defaultYearSubscription = this.yearService.observableDefaultYearStream$.subscribe(defaultYear => {\r\n this.defaultYear = defaultYear;\r\n });\r\n this.columnsToDisplay.unshift('STUDENTID');\r\n this.columnsToDisplay.unshift('STUDENTNAME');\r\n\r\n this.scheduleHistorySearchModel.classEntryDateFrom = formatDate(new Date(), 'MM/dd/yyyy', 'en-US');\r\n this.scheduleHistorySearchModel.classEntryDateTo = formatDate(new Date(), 'MM/dd/yyyy', 'en-US');\r\n this.scheduleHistorySearchModel.classExitDateFrom = formatDate(new Date(), 'MM/dd/yyyy', 'en-US');\r\n this.scheduleHistorySearchModel.classExitDateTo = formatDate(new Date(), 'MM/dd/yyyy', 'en-US');\r\n\r\n this.getStudentsListsDrop();\r\n this.getStudentTeams();\r\n this.getStudentCounselor();\r\n } else {\r\n // single student mode\r\n this.subscriptions.push(this.yearService.observableStudent360YearStream$.subscribe(student360Year => {\r\n this.defaultYear = student360Year;\r\n this.getCourseChangeHistoryData();\r\n }));\r\n this.scheduleHistorySearchModel.studentNumber = this.studentService.selectedStudent.StudentNumber;\r\n this.getCourseChangeHistoryData();\r\n }\r\n }\r\n\r\n getCourseChangeHistoryData() {\r\n this.scheduleHistoryService.getCourseChangeHistory(this.defaultYear.SchoolID, this.defaultYear.Id, this.scheduleHistorySearchModel).subscribe(result => {\r\n this.scheduleHistoryModel = result;\r\n this.angularMatData = new TylerMatTableDataSource(this.scheduleHistoryModel);\r\n this.angularMatData.sort = this.sort;\r\n });\r\n }\r\n\r\n getStudentTeams() {\r\n this.teamsService.getTeamList(this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.Id).subscribe(result => {\r\n this.teams = result;\r\n });\r\n }\r\n\r\n getStudentCounselor() {\r\n this.counselorService.getStaffByRoles(0, 'Counselor').subscribe(result => {\r\n this.counselor = result;\r\n });\r\n }\r\n\r\n getStudentsListsDrop() {\r\n this.studentListsService.getStudentLists().subscribe(x => this.studentLists = x.sort((a, b) =>\r\n a.Name.localeCompare(b.Name)));\r\n }\r\n\r\n clearFilters() {\r\n this.scheduleHistorySearchModel = new ScheduleHistorySearchModel('');\r\n this.angularMatData.data = [];\r\n }\r\n\r\n enterStudentNumbers() {\r\n const dialogBox = this.dialog.open(EnterCsvDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n header: 'Enter Student Numbers',\r\n helpString: 'Separate numbers with a comma (Ex. 12345,13423,12312,19712)',\r\n pattern: this.studentNumberRegExp,\r\n keyRestriction: this.studentNumberKeyRestriction,\r\n validator: (csv: string): ErrorList[] => {\r\n if (!csv) {\r\n return [\r\n {\r\n errorMsg: 'Required field.',\r\n fieldName: 'Student Numbers',\r\n fieldRef: new ElementRef(null)\r\n }\r\n ];\r\n }\r\n if (csv[csv.length - 1] == ',') {\r\n return [\r\n {\r\n errorMsg: 'The CSV must not end with a comma.',\r\n fieldName: 'Student Numbers',\r\n fieldRef: new ElementRef(null)\r\n }\r\n ];\r\n } else if (!csv.match(this.studentNumberRegExp)) {\r\n return [\r\n {\r\n errorMsg: 'Separate numbers by commas. No spaces or special characters.',\r\n fieldName: 'Student Numbers',\r\n fieldRef: new ElementRef(null)\r\n }\r\n ];\r\n }\r\n return [];\r\n }\r\n }\r\n });\r\n this.subscriptions.push(\r\n dialogBox.afterClosed().subscribe(csv => {\r\n if (csv || csv == '') {\r\n this.scheduleHistorySearchModel.studentNumber = csv;\r\n }\r\n })\r\n );\r\n }\r\n\r\n searchClick() {\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.scheduleHistorySearchModel.classEntryDateFrom = formatDate(this.scheduleHistorySearchModel.classEntryDateFrom, 'MM/dd/yyyy', 'en-US');\r\n this.scheduleHistorySearchModel.classEntryDateTo = formatDate(this.scheduleHistorySearchModel.classEntryDateTo, 'MM/dd/yyyy', 'en-US');\r\n this.scheduleHistorySearchModel.classExitDateFrom = formatDate(this.scheduleHistorySearchModel.classExitDateFrom, 'MM/dd/yyyy', 'en-US');\r\n this.scheduleHistorySearchModel.classExitDateTo = formatDate(this.scheduleHistorySearchModel.classExitDateTo, 'MM/dd/yyyy', 'en-US');\r\n this.getCourseChangeHistoryData();\r\n }\r\n }\r\n\r\n validate() {\r\n this.errors = [];\r\n if (this.scheduleHistorySearchModel.classEntryDateFrom == '') {\r\n this.errors.push({\r\n fieldName: 'Class Entry Date From',\r\n fieldRef: this.classEntryDateFrom,\r\n errorMsg: ' is Required.'\r\n });\r\n }\r\n if (this.scheduleHistorySearchModel.classEntryDateTo == '') {\r\n this.errors.push({\r\n fieldName: 'Class Entry Date To',\r\n fieldRef: this.classEntryDateTo,\r\n errorMsg: ' is Required.'\r\n });\r\n }\r\n if (this.scheduleHistorySearchModel.classExitDateFrom == '') {\r\n this.errors.push({\r\n fieldName: 'Class Exit Date From',\r\n fieldRef: this.classExitDateFrom,\r\n errorMsg: ' is Required.'\r\n });\r\n }\r\n if (this.scheduleHistorySearchModel.classExitDateTo == '') {\r\n this.errors.push({\r\n fieldName: 'Class Exit Date To',\r\n fieldRef: this.classExitDateTo,\r\n errorMsg: ' is Required.'\r\n });\r\n }\r\n }\r\n\r\n keyDownFunction(event) {\r\n if (event.keyCode == 13) {\r\n this.searchClick();\r\n }\r\n }\r\n\r\n ngOnDestroy() { }\r\n}\r\n","import { StudentDetailSibling } from './student-detail-sibling.model';\r\nimport { StudentDetailEnrollment } from './student-detail-enrollment.model';\r\nimport { StudentDetailParentContact } from './student-detail-parent-contact.model';\r\n\r\nexport class StudentDetail {\r\n StudentId: string;\r\n CellPhone: string;\r\n Gender: string;\r\n EnrollmentStatus: string;\r\n EnrollmentType: string;\r\n EnrollmentEntryDate: string;\r\n EnrollmentEntryCode: string;\r\n EmailAddress: string;\r\n Age: number;\r\n BirthDate: Date;\r\n PrimaryCounselor: string;\r\n PrimaryLanguage: string;\r\n Locker: string;\r\n LockerCombination: string;\r\n Ethnicity: string;\r\n GraduationPlan: string;\r\n Bus: string;\r\n Race: string;\r\n LivesWith: string;\r\n StudentStateIdentifier: string;\r\n HomeRoomCourse: string;\r\n HomeRoomSection: string;\r\n HomeRoomRoom: string;\r\n HomeRoomTeacher: string;\r\n CurrentLocationCourse: string;\r\n CurrentLocationSection: string;\r\n CurrentLocationRoom: string;\r\n CurrentLocationTeacher: string;\r\n IEPCaseManager: string;\r\n ReportCardTranscriptOnHold: string;\r\n CustodyIssue: string;\r\n StudentParentContacts: StudentDetailParentContact[];\r\n StudentEnrollments: StudentDetailEnrollment[];\r\n StudentSiblings: StudentDetailSibling[];\r\n ShowStudentLogin: boolean;\r\n ShowStudentPassword: boolean;\r\n StudentLogin: string;\r\n StudentPassword: string;\r\n EnrollmentDate: string;\r\n Residency: string;\r\n Reason: string;\r\n FTE: number;\r\n WithdrawReason: string;\r\n WithdrawDate: string;\r\n LockerRange: boolean;\r\n HomeDistrict: string;\r\n CourtOrderId: number;\r\n CourtOrderAgainst: string;\r\n DualEnrolled: string;\r\n PreviousLastName: string;\r\n TransportationComment: string;\r\n}\r\n","
\r\n
\r\n Student Address\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Primary Address\r\n \r\n Mailing Address\r\n
\r\n
\r\n {{primaryAddress.HouseNumber}} {{primaryAddress.Direction}} {{primaryAddress.Street}} {{primaryAddress.StreetType}}\r\n
\r\n
\r\n {{primaryAddress.City}}, {{primaryAddress.State}} {{primaryAddress.ZipCode}}\r\n
\r\n
\r\n
\r\n {{mailingAddress.HouseNumber}} {{mailingAddress.Direction}} {{mailingAddress.Street}} {{mailingAddress.StreetType}}\r\n
\r\n
\r\n {{mailingAddress.City}}, {{mailingAddress.State}} {{mailingAddress.ZipCode}}\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n","import { Component, AfterViewInit } from '@angular/core';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { StudentAddress } from './student-address.model';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-view-student-address',\r\n templateUrl: './view-student-address.component.html'\r\n})\r\nexport class ViewStudentAddressComponent implements AfterViewInit {\r\n\r\n studentId: number;\r\n primaryAddress: StudentAddress;\r\n mailingAddress: StudentAddress;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private dialog: MatDialogRef\r\n ) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.studentService.getStudentAddresses(this.studentId).subscribe((addresses) => {\r\n this.primaryAddress = addresses.filter(a => a.Primary)[0];\r\n this.mailingAddress = addresses.filter(a => a.MailingAddress)[0];\r\n });\r\n }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n\r\n}","\r\n
\r\n \r\n
\r\n
\r\n \r\n Student Details\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{studentDetails.EnrollmentStatus}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.PrimaryCounselor}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.GraduationPlan}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.LivesWith}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.Bus}}\r\n {{studentDetails.ReportCardTranscriptOnHold}}\r\n \r\n \r\n \r\n \r\n \r\n {{studentDetails.TransportationComment}} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Student #\r\n \r\n {{studentDetails.StudentId}}
\r\n Enrollment Status\r\n
\r\n Primary Counselor\r\n
\r\n Graduation Plan\r\n
\r\n Lives With\r\n
\r\n \r\n Bus\r\n \r\n \r\n \r\n Report Card/Transcript On Hold\r\n \r\n \r\n
\r\n \r\n Transportation Comment\r\n \r\n
\r\n Custody Issue\r\n \r\n {{studentDetails.CustodyIssue}}
\r\n Student Login\r\n \r\n \r\n {{maskedLogin}}\r\n \r\n \r\n {{studentDetails.StudentLogin}}\r\n \r\n \r\n \r\n \r\n
\r\n Student Password\r\n \r\n \r\n {{maskedPassword}}\r\n \r\n \r\n {{studentDetails.StudentPassword}}\r\n \r\n \r\n \r\n \r\n
\r\n Student Address\r\n \r\n \r\n View\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n 0 || studentDetails.CourtOrderAgainst != ''))\">\r\n \r\n \r\n {{studentDetails.CourtOrderAgainst}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.StudentStateIdentifier}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.CellPhone}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{studentDetails.Locker}}\r\n \r\n \r\n \r\n \r\n \r\n {{studentDetails.LockerCombination}}\r\n \r\n \r\n {{maskedLocker}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{school}}\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {{studentDetails.IEPCaseManager}}\r\n \r\n
\r\n Court Order\r\n
\r\n {{\r\n loginSettings.CountryCode == 'CAN' ? 'MET #' : ('State ID' | translate)\r\n }}\r\n
\r\n Cell Phone\r\n
\r\n Email Address\r\n \r\n {{studentDetails.EmailAddress}}\r\n \r\n {{studentDetails.EmailAddress}}\r\n
\r\n Locker #\r\n
\r\n Locker Combination\r\n
\r\n Dual Enrolled\r\n
\r\n IEP Case Manager\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{studentDetails.Gender}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.Age}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.Ethnicity}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.Race}}\r\n \r\n \r\n \r\n \r\n {{studentDetails.BirthDate|date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n \r\n \r\n {{studentDetails.PrimaryLanguage}}\r\n \r\n \r\n \r\n \r\n \r\n {{studentDetails.PreviousLastName}}\r\n \r\n \r\n \r\n \r\n \r\n {{studentDetails.HomeDistrict}}\r\n \r\n \r\n
\r\n Gender\r\n
\r\n Age\r\n
\r\n Ethnicity\r\n
\r\n Race\r\n
\r\n Birth Date\r\n
\r\n Language Spoken at Home\r\n
\r\n Previous Last Name\r\n
\r\n Home District\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
'' || studentDetails.CurrentLocationSection > '' || studentDetails.CurrentLocationRoom > '' || studentDetails.CurrentLocationTeacher > ''\">\r\n \r\n \r\n \r\n \r\n ''\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n '' || studentDetails.CurrentLocationCourse=='Student is between classes'\">\r\n \r\n \r\n \r\n '' || studentDetails.CurrentLocationCourse=='Student is between classes'\">\r\n \r\n \r\n \r\n
\r\n Current Location\r\n
\r\n Course\r\n \r\n {{studentDetails.CurrentLocationCourse}}
\r\n Section\r\n \r\n {{studentDetails.CurrentLocationSection}}
\r\n Room\r\n \r\n {{studentDetails.CurrentLocationRoom}}
\r\n Teacher\r\n \r\n {{studentDetails.CurrentLocationTeacher}}
\r\n
\r\n \r\n \r\n '' || studentDetails.HomeRoomSection > '' || studentDetails.HomeRoomRoom > '' || studentDetails.HomeRoomTeacher > ''\">\r\n \r\n \r\n \r\n \r\n ''\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ''\">\r\n \r\n \r\n \r\n ''\">\r\n \r\n \r\n \r\n
\r\n Home Room\r\n
\r\n Course\r\n \r\n {{studentDetails.HomeRoomCourse}}
\r\n Section\r\n \r\n {{studentDetails.HomeRoomSection}}
\r\n Room\r\n \r\n {{studentDetails.HomeRoomRoom}}
\r\n Teacher\r\n \r\n {{studentDetails.HomeRoomTeacher}}
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Parent/Contact\r\n Details\r\n \r\n
\r\n \"Primary\r\n  = Primary Contact\r\n     \r\n # = Emergency Contact Call Sequence\r\n     \r\n R = Restricted\r\n
\r\n
\r\n \r\n Household Parents/Guardians\r\n \r\n \r\n Non-Resident\r\n Parents\r\n \r\n \r\n Emergency\r\n Contacts\r\n \r\n\r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Primary\r\n R\r\n \r\n \r\n \r\n \r\n \r\n {{contact.EmergencyCallSequence}}\r\n \r\n \r\n \r\n Relationship\r\n \r\n {{contact.Relationship}}\r\n \r\n \r\n \r\n Name\r\n \r\n {{contact.Name}}\r\n \r\n \r\n \r\n Emergency Phone\r\n \r\n {{contact.EmergencyPhone}}\r\n \r\n \r\n \r\n Home Phone\r\n \r\n {{contact.Homephone}}\r\n \r\n \r\n \r\n Cell Phone\r\n \r\n {{contact.Cellphone}}\r\n \r\n \r\n \r\n \r\n
\r\n Portal Access\r\n
\r\n
\r\n \r\n
\r\n {{contact.PortalAccess ? 'Y' : 'N'}}\r\n
\r\n
\r\n
\r\n \r\n Last Portal\r\n Login\r\n \r\n \r\n {{contact.LastPortalAccess}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Primary Parent\r\n {{contact.PrimaryParent}}\r\n
\r\n
\r\n Is Guardian\r\n {{contact.IsGuardian}}\r\n
\r\n
\r\n Lives With\r\n {{contact.LivesWith}}\r\n
\r\n
\r\n Can Pick Up\r\n {{contact.CanPickUp}}\r\n
\r\n
\r\n Has Custody\r\n {{contact.HasCustody}}\r\n
\r\n
\r\n Restricted\r\n {{contact.Restricted}}\r\n
\r\n
\r\n
\r\n
\r\n Email Address\r\n {{contact.EmailAddress}}\r\n {{contact.EmailAddress}}\r\n
\r\n
\r\n
\r\n Place Of Work\r\n {{contact.PlaceOfWork}}\r\n
\r\n
\r\n Work Phone\r\n {{contact.WorkPhone}}\r\n
\r\n
\r\n Emergency Contact\r\n {{contact.EmergencyContact}}\r\n
\r\n
\r\n Calling Sequence\r\n {{contact.EmergencyCallSequence}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Primary Address\r\n
\r\n
\r\n
\r\n Mailing Address\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Is Guardian\r\n {{contact.IsGuardian}}\r\n
\r\n
\r\n Can Pick Up\r\n {{contact.CanPickUp}}\r\n
\r\n
\r\n \r\n Student may leave with this person? \r\n {{contact.ECLeaveWithThisPerson}}\r\n \r\n Student may NOT leave with this person\r\n
\r\n
 
\r\n
\r\n Email Address\r\n {{contact.EmailAddress}}\r\n
\r\n {{contact.EmailAddress}}\r\n
\r\n
\r\n
\r\n
\r\n Employer\r\n {{contact.PlaceOfWork}}\r\n
\r\n
\r\n Work Phone\r\n {{contact.WorkPhone}}\r\n
\r\n
\r\n Home Phone 2\r\n {{contact.Homephone2}}\r\n
\r\n
\r\n
\r\n Primary Address\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Mailing Address\r\n \r\n Same as primary address\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Work\r\n Phone\r\n {{contact.EmergencyPhone}}
\r\n Student may leave with this person\r\n {{contact.ECLeaveWithThisPerson}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Student may leave with this person?\r\n {{contact.ECLeaveWithThisPerson}}\r\n
\r\n Work\r\n Phone\r\n {{contact.EmergencyPhone}}
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Comment\r\n \r\n {{contact.ECComments}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
0\">\r\n 0\"\r\n translate>Siblings\r\n \r\n \r\n Name\r\n \r\n {{sibling.Name}}\r\n \r\n \r\n \r\n School\r\n \r\n {{sibling.SchoolName}}\r\n \r\n \r\n \r\n Grade\r\n \r\n {{sibling.Grade}}\r\n \r\n \r\n \r\n Age\r\n \r\n {{sibling.Age > 0 ? sibling.Age : ''}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Enrollment History\r\n \r\n \r\n \r\n Year\r\n \r\n {{enrollment.Year}}\r\n \r\n \r\n \r\n Enrollment Date\r\n \r\n {{enrollment.EntryDate | date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n School\r\n \r\n {{enrollment.School}}\r\n \r\n \r\n \r\n Grade Level\r\n \r\n {{enrollment.GradeLevel}}\r\n \r\n \r\n \r\n Withdrawal Date\r\n \r\n {{enrollment.WithdrawalDate|date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
","import { Component, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { StudentDetail } from './student-detail.model';\r\nimport { StudentDetailParentContact } from './student-detail-parent-contact.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { LoginSettings } from '../../shared-modules/login/loginSetting.model';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { AriaDirective } from '../../shared-components/directives/aria.directive';\r\nimport { CdkDetailRowDirective } from '../../shared-components/directives/cdk-detail-row.directive';\r\nimport { Router } from '@angular/router';\r\nimport { SendEmailService } from '../../shared-modules/send-email/send-email.service';\r\nimport { User } from '../../shared-components/user/user.model';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { ViewStudentAddressComponent } from './view-student-address/view-student-address.component';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n selector: 'app-student-details',\r\n templateUrl: './student-details.component.html',\r\n animations: [\r\n detailExpand\r\n ],\r\n styleUrls: [\r\n './student-details.component.css'\r\n ]\r\n})\r\n\r\nexport class StudentDetailsComponent implements OnInit, OnDestroy {\r\n V10: boolean;\r\n loginSettings: LoginSettings;\r\n student360YearSubscription: Subscription;\r\n student360Year: Year;\r\n selectedStudentSubscription: Subscription;\r\n selectedStudent: Student;\r\n studentDetails: StudentDetail = new StudentDetail();\r\n studentDetailIn: StudentDetail[] = [];\r\n displayParentContacts: StudentDetailParentContact[] = [];\r\n subscriptions: Subscription[] = [];\r\n rowExpanded: Array = new Array();\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n columnsToDisplay: string[] = ['More', 'Relationship', 'Name', 'EmergencyPhone', 'Homephone', 'Cellphone'];\r\n columnsToDisplayStudentDetail = ['Primary Parent', 'Email Address', 'Is Guardian', 'Lives With', 'Has Custody', 'Restricted', 'Place Of Work', 'Primary Address', 'Mailing Address', 'Work Phone', 'Student may leave with this person', 'Comment'];\r\n columnsToDisplayDetailRow: string[] = ['View'];\r\n parentType = ['Parent', 'Household', 'Nonresident', 'Emergency'];\r\n studentLoginHidden = true;\r\n studentPasswordHidden = true;\r\n lockerComboHidden = true;\r\n maskedLogin = '';\r\n maskedPassword = '';\r\n maskedLocker = '';\r\n isBusy: boolean;\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n row: any;\r\n currentUser: User;\r\n schools = [];\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private router: Router,\r\n private studentService: StudentService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private sendEmailService: SendEmailService,\r\n private dialog: MatDialog\r\n ) {\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n student360Year => {\r\n this.getStudentDetails();\r\n }\r\n );\r\n this.loginSettings = this.loginService.LoginSettings;\r\n this.angularMatData = new TylerMatTableDataSource(this.displayParentContacts);\r\n }\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n this.getStudentDetails();\r\n }\r\n\r\n ngOnInit() {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.currentUser = this.userService.currentUser;\r\n if (this.currentUser.UserType == 1) {\r\n if (this.V10) {\r\n this.columnsToDisplay = ['More', 'PrimaryParent', 'CallSequence', 'Relationship', 'Name', 'EmergencyPhone', 'Homephone', 'Cellphone', 'PortalAccess', 'LastAccess'];\r\n }\r\n else {\r\n this.columnsToDisplay = ['More', 'Relationship', 'Name', 'EmergencyPhone', 'Homephone', 'Cellphone', 'PortalAccess', 'LastAccess'];\r\n }\r\n }\r\n this.subscriptions.push(\r\n this.toggleAllRows.subscribe(toggle => {\r\n for (let i = 0; i < this.parentType.length; i++) {\r\n for (let j = 0; j < this.rowExpanded[i].length; j++) {\r\n this.rowExpanded[i][j] = toggle;\r\n }\r\n }\r\n\r\n })\r\n );\r\n\r\n if (!this.loginSettings.DisplayEmergencyPhoneNumberInGrid) {\r\n if (this.currentUser.UserType == 1) {\r\n this.columnsToDisplay = ['More', 'Relationship', 'Name', 'Homephone', 'Cellphone', 'PortalAccess', 'LastAccess'];\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.selectedStudentSubscription.unsubscribe();\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n getStudentDetails() {\r\n const yearId = (this.userService.currentUser.UserType != 1) ? this.yearService.allYears.filter(y => y.Default)[0].Id : this.yearService.student360Year.Id;\r\n this.subscriptions.push(\r\n this.studentService.getStudentDetails(this.selectedStudent.Id, yearId, this.userService.userId).subscribe(detail => {\r\n if (detail != null) {\r\n this.studentDetails = detail;\r\n this.displayParentContacts = this.studentDetails.StudentParentContacts;\r\n this.loadStudenDetails();\r\n for (let i = 0; i < this.parentType.length; i++) {\r\n const arr: Array = [];\r\n for (let j = 0; j < this.displayParentContacts.filter(contact => contact.ParentType == this.parentType[i]).length; j++) {\r\n arr.push(false);\r\n }\r\n this.rowExpanded.push(arr);\r\n }\r\n if (this.studentDetails.ShowStudentLogin) {\r\n this.maskedLogin = '';\r\n for (let i = 0; i < this.studentDetails.StudentLogin.length; i++) {\r\n this.maskedLogin = this.maskedLogin + '*';\r\n }\r\n }\r\n if (this.studentDetails.ShowStudentPassword) {\r\n this.maskedPassword = '';\r\n for (let i = 0; i < this.studentDetails.StudentPassword.length; i++) {\r\n this.maskedPassword = this.maskedPassword + '*';\r\n }\r\n }\r\n if (this.studentDetails.LockerCombination != null) {\r\n this.maskedLocker = '';\r\n for (let i = 0; i < this.studentDetails.LockerCombination.length; i++) {\r\n this.maskedLocker = this.maskedLocker + '*';\r\n }\r\n }\r\n\r\n this.schools = this.studentDetails.DualEnrolled.split(',');\r\n }\r\n })\r\n );\r\n }\r\n\r\n private loadStudenDetails(): void {\r\n this.angularMatData = new TylerMatTableDataSource(this.displayParentContacts);\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n\r\n this.isBusy = false;\r\n }\r\n\r\n onToggleChange(cdkDetailRow: CdkDetailRowDirective): void {\r\n if (cdkDetailRow.row.AttendanceDetails != undefined && cdkDetailRow.row.AttendanceDetails.length == 0 && cdkDetailRow.expended) {\r\n cdkDetailRow.toggle();\r\n }\r\n }\r\n\r\n getAriaDetailRow(row: StudentDetailParentContact): string {\r\n const colList: string[] = ['Relationship',\r\n 'Name',\r\n 'Homephone',\r\n 'EmergencyPhone',\r\n 'Cellphone'];\r\n\r\n const dataList: string[] = [row.Relationship,\r\n row.Name,\r\n row.EmergencyPhone,\r\n row.Homephone,\r\n row.Cellphone];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n getAriaStudentDetail(row: StudentDetailParentContact): string {\r\n const colList: string[] = ['Primary Parent',\r\n 'Email Address',\r\n 'Is Guardian',\r\n 'Lives With',\r\n 'Has Custody',\r\n 'Restricted',\r\n 'Place Of Work',\r\n 'Primary Address',\r\n 'Mailing Address',\r\n 'Work Phone',\r\n 'Student may leave with this person',\r\n 'Comment'];\r\n\r\n const dataList: string[] = [row.PrimaryParent,\r\n row.EmailAddress,\r\n row.IsGuardian,\r\n row.LivesWith,\r\n row.HasCustody,\r\n row.Restricted,\r\n row.PlaceOfWork,\r\n row.PrimaryAddress,\r\n row.MailingAddress,\r\n row.EmergencyPhone,\r\n row.ECLeaveWithThisPerson,\r\n row.ECComments];\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n\r\n hasParentContacts(parentType: string): boolean {\r\n return this.displayParentContacts.filter(contact => contact.ParentType == parentType).length > 0;\r\n }\r\n\r\n getParentContactTableData(parentType: string): StudentDetailParentContact[] {\r\n return this.displayParentContacts.filter(contact => contact.ParentType == parentType);\r\n }\r\n\r\n toggleMore(row: any) {\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n sendEmail(name: string, emailAddress: string) {\r\n this.sendEmailService.teacherEmailAddress = emailAddress;\r\n this.sendEmailService.teacherName = name;\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n\r\n viewStudentAddress() {\r\n let viewAddressDialog = this.dialog.open(ViewStudentAddressComponent, { panelClass: 'tyl-mat-dialog', disableClose: true });\r\n viewAddressDialog.componentInstance.studentId = this.selectedStudent.Id;\r\n }\r\n\r\n}","export class StudentDigitalContent {\r\n Id: number;\r\n DocumentId: number;\r\n DocumentOwnerId: number;\r\n DocumentTypeId: number;\r\n DocumentType: string;\r\n FileName: string;\r\n OriginalFileName: string;\r\n Description: string;\r\n UploadedDate: Date;\r\n MyFileBase64String: string;\r\n FileExtension: string;\r\n FileType: string;\r\n FormAddedBy: string;\r\n DocumentMimeType: string;\r\n ParentId: number;\r\n Family_ID?:number;\r\n }\r\n","
\r\n Add Document\r\n Edit Document\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{type.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n Please select a file\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, ViewChild, Inject, ElementRef } from '@angular/core';\r\nimport { AddFileComponent } from '../../../shared-components/controls/add-file/add-file.component';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { StudentDigitalContentService } from '../student-digital-content.service';\r\nimport { StudentDigitalContent } from '../models/student-digital-content.model';\r\nimport { LookupService } from '../../../shared-components/lookup/lookup.service';\r\nimport { Lookup } from '../../../shared-components/lookup/lookup.model';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\n\r\n@Component({\r\n selector: 'add-content-modal',\r\n templateUrl: './add-content-modal.component.html'\r\n})\r\nexport class AddContentModalComponent implements OnInit {\r\n\r\n sdc: StudentDigitalContent;\r\n\r\n documentTypeIdString: string;\r\n descriptionString: string;\r\n fileNameString: string;\r\n\r\n newFile: boolean;\r\n fileError: boolean;\r\n documentTypes: Lookup[] = [];\r\n errors: ErrorList[] = [];\r\n @ViewChild('fileNameInput', { read: ElementRef, static: true }) fileNameInput: ElementRef;\r\n @ViewChild('documentTypeInput', { read: ElementRef, static: true }) documentTypeInput: ElementRef;\r\n @ViewChild(AddFileComponent) addFile;\r\n\r\n\r\n constructor(private yearService: YearService,\r\n private lookupService: LookupService,\r\n private studentDigitalContentService: StudentDigitalContentService,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private studentService: StudentService,\r\n private dialogRef: MatDialogRef) { }\r\n\r\n ngOnInit() {\r\n this.sdc = this.data.sdc;\r\n\r\n if (this.sdc == undefined) {\r\n this.sdc = new StudentDigitalContent;\r\n this.newFile = true;\r\n }\r\n else {\r\n this.documentTypeIdString = this.sdc.DocumentTypeId.toString();\r\n this.descriptionString = this.sdc.Description;\r\n this.fileNameString = this.sdc.FileName;\r\n }\r\n\r\n if (this.studentDigitalContentService.documentTypes.length == 0) {\r\n this.lookupService.getORFormDocumentType(this.yearService.student360Year.SchoolID).subscribe(result => {\r\n this.studentDigitalContentService.documentTypes = result;\r\n this.documentTypes = this.studentDigitalContentService.documentTypes;\r\n });\r\n }\r\n else {\r\n this.documentTypes = this.studentDigitalContentService.documentTypes;\r\n }\r\n }\r\n\r\n saveClick() {\r\n this.checkInputs();\r\n\r\n if (this.errors.length == 0) {\r\n\r\n this.sdc.DocumentOwnerId = this.studentService.selectedStudent.Id;\r\n this.sdc.DocumentType = this.documentTypes.find(x => x.Id == this.documentTypeIdString).CodeDescription;\r\n this.sdc.DocumentTypeId = parseInt(this.documentTypeIdString);\r\n this.sdc.Description = this.descriptionString;\r\n this.sdc.FileName = this.fileNameString;\r\n\r\n if (this.newFile) {\r\n this.sdc.FileExtension = '.' + this.addFile.fileExtension;\r\n this.sdc.OriginalFileName = this.addFile.fileName;\r\n this.sdc.MyFileBase64String = this.addFile.fileString;\r\n this.sdc.FileType = this.addFile.fileType; \r\n }\r\n\r\n // save to the database\r\n this.studentDigitalContentService.saveStudentDigitalContent(this.sdc, this.yearService.student360Year.SchoolID).subscribe(result => {\r\n if (result > 0) {\r\n // Close the dialog\r\n this.dialogRef.close(true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n checkInputs() {\r\n let isValidFile = true;\r\n\r\n this.errors = [];\r\n\r\n if (this.fileNameString == undefined || this.fileNameString == null || this.fileNameString == '') {\r\n this.errors.push({\r\n fieldName: 'File Name',\r\n fieldRef: this.fileNameInput,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n if (this.documentTypeIdString == undefined || this.documentTypeIdString == null || this.documentTypeIdString == '') {\r\n this.errors.push({\r\n fieldName: 'Document Type',\r\n fieldRef: this.documentTypeInput,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n\r\n if (this.newFile) {\r\n\r\n if (!this.addFile.hasOwnProperty('fileName')) {\r\n this.fileError = true;\r\n isValidFile = false;\r\n } else {\r\n if (this.addFile.fileName == null) {\r\n this.fileError = true;\r\n isValidFile = false;\r\n } else {\r\n this.fileError = false;\r\n }\r\n }\r\n }\r\n\r\n if (!isValidFile) {\r\n this.errors.push({\r\n fieldName: 'File',\r\n fieldRef: null, // this.subjectInput,\r\n errorMsg: 'Field is required.'\r\n });\r\n }\r\n }\r\n\r\n addFileChanges(event) {\r\n // check if a file has been selected\r\n if (this.addFile.hasOwnProperty('fileName')) {\r\n this.fileError = false;\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n \r\n \r\n {{element.FileName}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Description\r\n \r\n \r\n {{element.Description}}\r\n \r\n \r\n \r\n Document Type\r\n \r\n \r\n {{element.DocumentType}}\r\n \r\n \r\n \r\n Created By\r\n \r\n \r\n {{element.FormAddedBy}} \r\n \r\n \r\n \r\n Created Date\r\n \r\n \r\n {{element.UploadedDate|date:'MM/dd/yy'}} \r\n \r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewChild, ViewChildren, QueryList, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSort } from '@angular/material/sort';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { FilterComponent } from '../../shared-components/controls/filter/filter.component';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { StudentDigitalContentService } from './student-digital-content.service';\r\nimport { StudentDigitalContent } from './models/student-digital-content.model';\r\nimport { MenuItem } from '../../shared-components/controls/menus/menu-item.model';\r\nimport { System } from '../../shared-components/System';\r\nimport { AddContentModalComponent } from './add-content-modal/add-content-modal.component';\r\nimport { GeneralConfirmationComponent } from '../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'student-digital-content',\r\n templateUrl: './student-digital-content.component.html',\r\n styleUrls: ['./student-digital-content.component.scss']\r\n\r\n})\r\nexport class StudentDigitalContentComponent implements OnInit, OnDestroy {\r\n\r\n // ------------Student Digital Content Data---------------------------\r\n studentDigitalContentData: StudentDigitalContent[] = [];\r\n\r\n // ------------Selection/Flags-----------------------------------\r\n student360Year: Year;\r\n V10: boolean;\r\n canAddEdit: boolean;\r\n canDelete: boolean;\r\n // ----------Angular Material------------------------------------\r\n dataSource = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n columnsToDisplay: string[] = ['FileName', 'Description', 'DocumentType', 'FormAddedBy', 'UploadedDate', 'Actions'];\r\n @ViewChildren(FilterComponent) filterRef: QueryList;\r\n topActionMenuItems: string[] = [];\r\n clearFilterEvent = new EventEmitter();\r\n\r\n // ------------Modal Windows--------------------------------------\r\n deleteConfirmDialogRef: MatDialogRef;\r\n addContentDialogRef: MatDialogRef;\r\n\r\n // --------------LifeCycle---------------------------------------\r\n\r\n constructor(private dialog: MatDialog,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private studentDigitalContentService: StudentDigitalContentService) { }\r\n\r\n ngOnInit() {\r\n // Initial data load\r\n this.getUserPermissions();\r\n\r\n this.studentService.selectedStudentStream$.subscribe(student => {\r\n this.getStudentDigitalContent();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n\r\n // ------------Helper Methods---------------------------\r\n getStudentDigitalContent(): void {\r\n this.studentDigitalContentService.getStudentDigitalContent(this.studentService.selectedStudent.Id, this.yearService.student360Year.SchoolID).subscribe(result => {\r\n this.studentDigitalContentData = result;\r\n this.loadTableData();\r\n });\r\n }\r\n\r\n loadTableData() {\r\n this.dataSource.data = this.studentDigitalContentData;\r\n this.dataSource.sort = this.sort;\r\n }\r\n\r\n actionMenuClick(menuItem: MenuItem) {\r\n const data: StudentDigitalContent = menuItem.data;\r\n switch (menuItem.itemName) {\r\n case 'Edit':\r\n this.addClick(data);\r\n break;\r\n case 'Delete':\r\n this.deleteClick(data);\r\n break;\r\n }\r\n }\r\n\r\n viewFile(sdc: StudentDigitalContent) {\r\n System.viewFileFromBase(sdc.MyFileBase64String, sdc.DocumentMimeType, sdc.FileName);\r\n }\r\n\r\n addClick(sdc?: StudentDigitalContent) {\r\n this.addContentDialogRef = this.dialog.open(AddContentModalComponent, {\r\n disableClose: true,\r\n data: {\r\n sdc: sdc\r\n },\r\n });\r\n\r\n this.addContentDialogRef.afterClosed().subscribe(saveClicked => {\r\n if (saveClicked) {\r\n this.getStudentDigitalContent();\r\n }\r\n });\r\n }\r\n\r\n deleteClick(data: StudentDigitalContent) {\r\n this.deleteConfirmDialogRef = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog', disableClose: true\r\n });\r\n\r\n this.deleteConfirmDialogRef.componentInstance.headerLabel = 'Delete Document';\r\n\r\n if (data.FileName.length > 50) {\r\n this.deleteConfirmDialogRef.componentInstance.confirmMessage = 'Are you sure you want to delete the document \"' + data.FileName.substring(0, 49) + '\"...?';\r\n }\r\n else {\r\n this.deleteConfirmDialogRef.componentInstance.confirmMessage = 'Are you sure you want to delete the document \"' + data.FileName + '\"?';\r\n }\r\n\r\n this.deleteConfirmDialogRef.componentInstance.okButtonLabel = \"Delete\";\r\n\r\n this.deleteConfirmDialogRef.componentInstance.confirmEvent.subscribe((deleteObject: boolean) => {\r\n if (deleteObject) {\r\n this.studentDigitalContentService.deleteStudentDigitalContent(data.DocumentId).subscribe(result => {\r\n this.getStudentDigitalContent();\r\n });\r\n }\r\n });\r\n }\r\n\r\n getUserPermissions() {\r\n // POST: obtains the permissions from the server\r\n this.userService.getUserPermissions(\r\n this.yearService.student360Year.Id,\r\n this.yearService.student360Year.SchoolID\r\n ).subscribe(permissions => {\r\n\r\n if (permissions.findIndex(x => x.PrivilegeId == 1052) != -1) {\r\n this.canAddEdit = true;\r\n this.topActionMenuItems.push('Edit');\r\n }\r\n\r\n if (permissions.findIndex(x => x.PrivilegeId == 1800) != -1) {\r\n this.canDelete = true;\r\n this.topActionMenuItems.push('Delete');\r\n }\r\n\r\n if (!this.canAddEdit && !this.canDelete) {\r\n const index: number = this.columnsToDisplay.indexOf('Actions');\r\n this.columnsToDisplay.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n clearFilter() {\r\n this.dataSource.removeAllFilters();\r\n this.clearFilterEvent.emit();\r\n }\r\n}\r\n\r\n","import { System } from './../../shared-components/System';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { StudentDigitalContent } from './models/student-digital-content.model';\r\nimport { Lookup } from '../../shared-components/lookup/lookup.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\n\r\n@Injectable()\r\nexport class StudentDigitalContentService {\r\n\r\n constructor(private http: HttpClient,\r\n private studentService: StudentService) { }\r\n\r\n documentTypes: Lookup[] = [];\r\n\r\n getStudentDigitalContent(studentId: number, schoolId: number): Observable {\r\n let paramString: string = '';\r\n paramString += '?studentId=' + studentId;\r\n paramString += '&schoolId=' + schoolId;\r\n\r\n return this.http.get(System.apiURL.Student + 'GetStudentDigitalContent' + paramString);\r\n }\r\n\r\n saveStudentDigitalContent(sdc: StudentDigitalContent, schoolId: number): Observable {\r\n // let paramString: string = '';\r\n // paramString += '?schoolId=' + schoolId;\r\n\r\n // return this.http.post(System.apiURL.Student + 'SaveStudentDigitalContent' + paramString, sdc);\r\n return this.studentService.saveStudentDigitalContent(sdc, schoolId)\r\n }\r\n\r\n deleteStudentDigitalContent(documentId: number): Observable {\r\n let paramString: string = '';\r\n paramString += '?documentId=' + documentId;\r\n\r\n return this.http.post(System.apiURL.Student + 'DeleteStudentDigitalContent' + paramString, null);\r\n }\r\n\r\n\r\n}\r\n","
\r\n
\r\n Access History\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n First Name\r\n \r\n \r\n \r\n {{element.FirstName}}\r\n \r\n\r\n \r\n \r\n Last Name\r\n \r\n \r\n \r\n {{element.LastName}}\r\n \r\n\r\n \r\n \r\n Middle Name\r\n \r\n \r\n \r\n {{element.MiddleName}}\r\n \r\n\r\n \r\n \r\n Time Stamp\r\n \r\n \r\n \r\n {{element.TimeStamp | date: 'MM/dd/yy hh:mm a'}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import {Component, OnInit, ViewChild, Inject} from '@angular/core';\r\nimport {TylerMatTableDataSource} from '../../../shared-components/angular-material/extended.class';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport {Subscription} from 'rxjs';\r\nimport {StudentDocumentAccessHistory} from '../../../shared-components/student/student-documents-accesshistory.model';\r\n\r\n@Component({\r\n selector: 'app-student-document-access-history',\r\n templateUrl: './student-document-access-history.component.html',\r\n styleUrls: ['./student-document-access-history.component.css']\r\n})\r\nexport class StudentDocumentAccessHistoryComponent implements OnInit {\r\n dataSource = new TylerMatTableDataSource();\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n public columnsToDisplay: string[] = ['FirstName', 'LastName', 'MiddleName', 'TimeStamp'];\r\n\r\n subscriptions: Subscription[] = [];\r\n studentDocumentAccessHistory: StudentDocumentAccessHistory[];\r\n v10: boolean;\r\n private _paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.dataSource.paginator = value;\r\n }\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n this.studentDocumentAccessHistory = data.AccessHistory;\r\n this.dataSource = new TylerMatTableDataSource(this.studentDocumentAccessHistory);\r\n }\r\n\r\n ngOnInit() {\r\n this.getStudentDocumentAccessHistory();\r\n }\r\n\r\n getStudentDocumentAccessHistory() {\r\n this.dataSource.data = this.studentDocumentAccessHistory;\r\n this.dataSource.sort = this.sort;\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","export class StudentDocumentsFilter {\r\n\tfileName = '';\r\n\tdescription = '';\r\n\tdocumentType = '';\r\n\tfor = '';\r\n\tfileType = '';\r\n\tcreatedFrom: Date = undefined;\r\n\tcreatedTo: Date = undefined;\r\n\taddedBy = '';\r\n}","import { StudentDocumentsFilter } from './student-documents-filter';\r\nimport { ChangeDetectorRef, TemplateRef, ViewChild, Directive } from '@angular/core';\r\nimport { StudentDocuments } from '../../shared-components/student/student-documents.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { System } from '../../shared-components/System';\r\nimport { Student360Service } from '../student360.service';\r\n\r\n@Directive()\nexport class StudentDocumentsFilteredComponent {\r\n\r\n\t// Properties\r\n angularMatData = new TylerMatTableDataSource();\r\n showFilter: boolean = false;\r\n\tfilter = new StudentDocumentsFilter();\r\n\tpreviousFilter = new StudentDocumentsFilter();\r\n studentDocuments: StudentDocuments[];\r\n\t@ViewChild('filterMenu', { read: TemplateRef }) filterMenu: TemplateRef;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprotected studentService: StudentService,\r\n\t\tprotected yearService: YearService,\r\n\t\tprotected sharedService: SharedService,\r\n\t\tprotected changeDetector: ChangeDetectorRef,\r\n\t\tprotected student360Service: Student360Service\r\n\t) { }\r\n\r\n\tget filtered() {\r\n\t\tif (this.student360Service.studentDocumentsFilterData != undefined) {\r\n\t\t\tthis.filter = this.student360Service.studentDocumentsFilterData;\r\n\t\t}\r\n\t\tif (this.filter.createdFrom && this.filter.createdFrom.toString() == 'Invalid Date') {\r\n\t\t\tthis.filter.createdFrom = undefined;\r\n\t\t}\r\n\t\tif (this.filter.createdTo && this.filter.createdTo.toString() == 'Invalid Date') {\r\n\t\t\tthis.filter.createdTo = undefined;\r\n\t\t}\r\n\t\treturn !System.isEqual(this.filter, new StudentDocumentsFilter());\r\n\t}\r\n\r\n\t// Methods\r\n\tshowFilterClick() {\r\n\t\t// PRE: the filter button is pressed\r\n // POST: toggles the filter panel\r\n this.showFilter = !this.showFilter;\r\n\t\tObject.assign(this.previousFilter, this.filter);\r\n\t}\r\n\r\n\tclearFilter() {\r\n\t\t// PRE: the clear filter button is clicked\r\n\t\t// POST: clears out the filter and DOES NOT CLOSE THE MENU\r\n\t\tsetTimeout(\r\n\t\t\t() => {\r\n\t\t\t\tObject.assign(this.filter, new StudentDocumentsFilter());\r\n\t\t\t\tthis.applyFilter();\r\n\t\t\t\tthis.changeDetector.detectChanges();\r\n\t\t\t},\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tcloseFilter() {\r\n this.showFilterClick();\r\n\t}\r\n\r\n\tsetFilter(filter: StudentDocumentsFilter) {\r\n\t\tthis.filter = filter;\r\n\t\tthis.applyFilter();\r\n\t}\r\n\r\n\tclearFilterFromFooter() {\r\n\t\t// PRE: the clear all filters button is clicked on the footer notification\r\n\t\t// POSt: clears out the filters on both the panel and the grid. Saves all changes.\r\n\t\tthis.filter = new StudentDocumentsFilter();\r\n\t\tthis.previousFilter = new StudentDocumentsFilter();\r\n\t\tthis.applyFilter();\r\n\t\tthis.angularMatData.removeAllFilters();\r\n\t\tthis.student360Service.studentDocumentsFilterData = this.filter;\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n\r\n\tapplyFilter() {\r\n\t\t// POST: applies the filter to the grid data\r\n\t\tlet tableData = this.studentDocuments;\r\n\r\n\t\t// File Name\r\n\t\tif (this.filter.fileName) {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.Name.toLowerCase().includes(this.filter.fileName.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Document Type\r\n\t\tif (this.filter.documentType) {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.DocumentType.toLowerCase().includes(this.filter.documentType.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// For\r\n\t\tif (this.filter.for) {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.DocumentFor.toLowerCase().includes(this.filter.for.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// File Type\r\n\t\tif (this.filter.fileType) {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.FileType.toLowerCase().includes(this.filter.fileType.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Description\r\n\t\tif (this.filter.description) {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.Notes.toLowerCase().includes(this.filter.description.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Created From\r\n\t\tif (this.filter.createdFrom && this.filter.createdFrom.toString() != 'Invalid Date') {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.CreatedOn > this.filter.createdFrom\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Created To\r\n\t\tif (this.filter.createdTo && this.filter.createdTo.toString() != 'Invalid Date') {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.CreatedOn < this.filter.createdTo\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Added By\r\n\t\tif (this.filter.addedBy) {\r\n\t\t\ttableData = tableData.filter(datum =>\r\n\t\t\t\tdatum.CreatedBy.toLowerCase().includes(this.filter.addedBy.toLowerCase())\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Setting the table data\r\n\t\tthis.angularMatData.data = tableData;\r\n\t}\r\n}\r\n","
{{edit? 'Edit Document' : 'Add Document'}}
\r\n\r\n
\r\n
\r\n Add for\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{item.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { Lookup } from '../../../shared-components/lookup/lookup.model';\r\nimport { LookupService } from '../../../shared-components/lookup/lookup.service';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { SecurityService } from '../../../shared-components/security/security.service';\r\nimport { UserPermission } from '../../../shared-components/user/user-permission.model';\r\n\r\n@Component({\r\n selector: 'add-edit-document',\r\n templateUrl: './add-edit-document.component.html',\r\n styleUrls: ['./add-edit-document.component.css']\r\n})\r\nexport class AddEditDocumentComponent implements OnInit {\r\n\r\n attachment: Attachment = new Attachment();\r\n forOptions: string[] = ['Household'];\r\n errors: ErrorList[] = [];\r\n V9UserPermissions: UserPermission[] = [];\r\n maxFileSize = 0;\r\n v10: boolean;\r\n quickAdd: boolean;\r\n edit: boolean;\r\n actionSectionHidden: boolean;\r\n documentTypes: Lookup[];\r\n documentTypeIdAsString: string;\r\n @ViewChild('attachmentNameRef', { read: ElementRef }) attachmentNameRef: ElementRef;\r\n @ViewChild('forRef', { read: ElementRef }) forRef: ElementRef;\r\n @ViewChild('documentTypeRef', { read: ElementRef, static: true }) documentTypeRef: ElementRef;\r\n\r\n constructor(\r\n private lookupService: LookupService,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private dialogBox: MatDialogRef,\r\n private securityService: SecurityService\r\n ) {\r\n if (data.attachments.StudentName != null) {\r\n this.forOptions.push(data.attachments.StudentName);\r\n }\r\n // for Household or Student\r\n\r\n if (data.attachments != null) {\r\n if (data.attachments.DocumentId > 0) {\r\n this.edit = true;\r\n this.attachment.DocumentId = data.attachments.DocumentId;\r\n this.attachment.Description = data.attachments.Notes;\r\n this.attachment.DocumentType = data.attachments.DocumentFor != 'Family' ? data.attachments.StudentName : 'Household';\r\n this.attachment.DocumentTypeId = data.attachments.DocumentTypeId;\r\n this.attachment.FileType = data.attachments.FileType;\r\n this.documentTypeIdAsString = this.attachment.DocumentTypeId.toString();\r\n }\r\n else {\r\n this.attachment.Description = '';\r\n this.attachment.OriginalFileName = '';\r\n this.attachment.MyFileBase64String = '';\r\n this.attachment.DocumentTypeId = 0;\r\n this.attachment.DocumentType = data.attachments.StudentName;\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n const permissions = this.securityService.userPermissions;\r\n this.V9UserPermissions = permissions;\r\n\r\n\r\n\r\n this.getDocumentTypeLookup();\r\n }\r\n getDocumentTypeLookup() {\r\n this.lookupService.getDocumentTypeLookup().subscribe(document => {\r\n this.documentTypes = document;\r\n const blankRow = new Lookup();\r\n blankRow.Id = '0';\r\n blankRow.Code = '';\r\n blankRow.CodeDescription = '';\r\n this.documentTypes.splice(0, 0, blankRow);\r\n const checkPermission = this.V9UserPermissions.filter(permission => permission.PermissionCode != 'DSF_MADFSF' &&\r\n permission.PermissionCode == 'DSF_MDSF');\r\n if (checkPermission != undefined && checkPermission != null && checkPermission.length) {\r\n const documentTypes = [];\r\n for (let i = 0; i < checkPermission.length; i++) {\r\n this.documentTypes.forEach(obj => {\r\n const sameIdExist = documentTypes.filter(data => data.Id == obj.Id)[0];\r\n if (!documentTypes || !documentTypes.length || !sameIdExist) {\r\n if (obj.PermissionCategory == checkPermission[i].PermissionCategory) {\r\n documentTypes.push(obj);\r\n }\r\n }\r\n });\r\n }\r\n this.documentTypes = [];\r\n this.documentTypes = documentTypes;\r\n }\r\n });\r\n }\r\n\r\n validate() {\r\n this.errors = [];\r\n if (this.attachment.Description == '') {\r\n this.errors.push({\r\n fieldRef: this.attachmentNameRef,\r\n fieldName: 'Description',\r\n errorMsg: 'Required field.'\r\n });\r\n }\r\n if (this.attachment.OriginalFileName == '') {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'Please select a file.'\r\n });\r\n }\r\n if (this.attachment.DocumentTypeId == null || this.attachment.DocumentTypeId == undefined || this.attachment.DocumentTypeId == 0) {\r\n this.errors.push({\r\n fieldRef: this.documentTypeRef,\r\n fieldName: 'Document Type',\r\n errorMsg: 'Please select a Document Type.'\r\n });\r\n }\r\n if (this.maxFileSize > 0 && this.maxFileSize < (this.attachment.MyFileBase64String.length * 6 / 8) / 1000) {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'This file size not allowed. File size should not be greater than ' + this.maxFileSize + 'KB.'\r\n });\r\n }\r\n // Validating file if no other errors are present\r\n if (this.errors.length == 0 && this.attachment.DocumentTypeId <= 0) {\r\n const fileExtensionRegExp = /\\.[a-z]{3}/;\r\n if (this.attachment.FileExtension.toLowerCase() != 'pdf' &&\r\n this.attachment.FileExtension.toLowerCase() != 'jpg' &&\r\n this.attachment.FileExtension.toLowerCase() != 'png' &&\r\n this.attachment.FileExtension.toLowerCase() != 'txt' &&\r\n this.attachment.FileExtension.toLowerCase() != 'doc' &&\r\n this.attachment.FileExtension.toLowerCase() != 'docx' &&\r\n this.attachment.FileExtension.toLowerCase() != 'xls' &&\r\n this.attachment.FileExtension.toLowerCase() != 'xlsx') {\r\n this.errors.push({\r\n fieldRef: null,\r\n fieldName: 'File',\r\n errorMsg: 'Only .txt, .doc(x), .xls(x), .pdf, .jpg, and .png files can be uploaded.'\r\n });\r\n }\r\n }\r\n }\r\n save() {\r\n this.validate();\r\n if (this.errors.length == 0) {\r\n this.dialogBox.close('Save');\r\n }\r\n }\r\n documentTypeChanged() {\r\n const rp = parseInt(this.documentTypeIdAsString, 10);\r\n if (!isNaN(rp)) {\r\n this.attachment.DocumentTypeId = rp;\r\n }\r\n }\r\n close() {\r\n this.dialogBox.close('Cancel');\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
No\r\n Documents\r\n data\r\n exists for student.\r\n
\r\n
0\">\r\n \r\n \r\n \r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n {{SD.Name}}\r\n \r\n \r\n \r\n \r\n Description\r\n \r\n \r\n {{SD.Notes}}\r\n \r\n \r\n \r\n \r\n Document Type\r\n \r\n \r\n \r\n {{SD.DocumentType}}\r\n \r\n \r\n \r\n \r\n For\r\n \r\n \r\n {{SD.DocumentFor}}\r\n \r\n \r\n \r\n \r\n File Type\r\n \r\n \r\n {{SD.FileType}}\r\n \r\n \r\n \r\n \r\n Description/Comments\r\n \r\n \r\n {{SD.Notes}}\r\n \r\n \r\n \r\n \r\n Added\r\n Created\r\n \r\n \r\n \r\n {{SD.CreatedOn | date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n Added by\r\n \r\n \r\n {{SD.CreatedBy}}\r\n \r\n \r\n \r\n \r\n Access History\r\n \r\n \r\n \r\n \r\n \r\n {{SD.RecentAccessHistory | date: 'MM/dd/yy hh:mm a'}}\r\n \r\n \r\n \r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n \r\n
\r\n\r\n
\r\n Filter\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Year } from '../../../shared-components/year/year.model';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { StudentDocuments } from '../../../shared-components/student/student-documents.model';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { StudentAttachment } from '../../../shared-modules/student-attachment/student-attachment.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { StudentDocumentsFilteredComponent } from '../student-documents-filtered.component';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { StudentDocumentsFilter } from '../student-documents-filter';\r\nimport * as moment from 'moment';\r\nimport { Student360Service } from '../../student360.service';\r\nimport { StudentDocumentAccessHistoryComponent } from '../student-document-access-history/student-document-access-history.component';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { SecurityService } from '../../../shared-components/security/security.service';\r\nimport { UserPermission } from '../../../shared-components/user/user-permission.model';\r\nimport { GeneralConfirmationComponent } from '../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { AddEditDocumentComponent } from '../add-edit-document/add-edit-document.component';\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'student-documents-v9',\r\n templateUrl: './student-documents-v9.component.html',\r\n styleUrls: ['./student-documents-v9.component.css']\r\n})\r\nexport class StudentDocumentsV9Component extends StudentDocumentsFilteredComponent implements OnInit, OnDestroy {\r\n\r\n student360YearSubscription: Subscription;\r\n student360Year: Year;\r\n selectedStudentSubscription: Subscription;\r\n selectedStudent: Student;\r\n V9UserPermissions: UserPermission[] = [];\r\n\r\n // ------------Selection/Flags-----------------------------------\r\n V10: boolean;\r\n isBusy = false;\r\n showOnlyBehaviorLettersDocument = false;\r\n studentDocumentsLength = 0;\r\n showFormsForEntireFamily = false;\r\n canAddAll = false;\r\n canAddViewAll = false;\r\n canAdd = false;\r\n userType: number;\r\n\r\n // ----------Angular Material------------------------------------\r\n @ViewChild(MatSort) sort: MatSort;\r\n columnsToDisplay = ['Name', 'Notes', 'DocumentType', 'DocumentFor', 'CreatedOn', 'CreatedBy', 'RecentAccessHistory'];\r\n\r\n constructor(\r\n studentService: StudentService,\r\n yearService: YearService,\r\n private userService: UserService,\r\n changeDetector: ChangeDetectorRef,\r\n sharedService: SharedService,\r\n student360Service: Student360Service,\r\n private dialog: MatDialog,\r\n private activatedRoute: ActivatedRoute,\r\n private securityService: SecurityService,\r\n ) {\r\n super(\r\n studentService,\r\n yearService,\r\n sharedService,\r\n changeDetector,\r\n student360Service\r\n );\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n // Reload student data when the selected student is changed (Student button in the header)\r\n this.loadStudentInfo(studentId);\r\n });\r\n\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n student360Year => {\r\n // Reload AcademicHistory when the selected year is changed\r\n this.getStudentDocuments();\r\n });\r\n\r\n // Load data into a DataSource object\r\n // MatTableDataSource extends DataSource to allow sorting, pagination and basic filtering\r\n // TylerMatTableDataSource extends MatTableDataSource and allows complex filtering and detail rows\r\n this.angularMatData = new TylerMatTableDataSource(this.studentDocuments);\r\n\r\n // Copy flag from service to local variable\r\n // This prevents having to directly call a service from the html, keeping the view loosely coupled\r\n this.V10 = this.userService.currentUser.V10;\r\n\r\n if (this.V10) {\r\n this.columnsToDisplay = ['Name', 'DocumentType', 'FileType', 'V10Notes', 'CreatedOn'];\r\n }\r\n this.userType = this.userService.userType;\r\n if (this.userType == 1) {\r\n this.columnsToDisplay = ['Name', 'Notes', 'DocumentType', 'DocumentFor', 'CreatedOn', 'CreatedBy', 'RecentAccessHistory', 'Actions'];\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.V10) {\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n const onlyBehaviorLettersDocument = params['onlyBehaviorLettersDocument'];\r\n if (onlyBehaviorLettersDocument && onlyBehaviorLettersDocument == \"true\") {\r\n this.showOnlyBehaviorLettersDocument = true;\r\n }\r\n });\r\n }\r\n const permissions = this.securityService.userPermissions;\r\n this.V9UserPermissions = permissions;\r\n\r\n const checkPermissionAll = this.V9UserPermissions.filter(permission => permission.PermissionCode == 'DSF_MADFSF')[0];\r\n if (checkPermissionAll != undefined && checkPermissionAll != null) {\r\n this.canAddAll = true;\r\n }\r\n const checkPermissionViewAll = this.V9UserPermissions.filter(permission => permission.PermissionCode == 'DSF_VADFSF')[0];\r\n if (checkPermissionViewAll != undefined && checkPermissionViewAll != null) {\r\n this.canAddViewAll = true;\r\n }\r\n const checkPermission = this.V9UserPermissions.filter(permission => permission.PermissionCode == 'DSF_MDSF')[0];\r\n if (checkPermission != undefined && checkPermission != null) {\r\n this.canAdd = true;\r\n }\r\n // Initial data load\r\n const initialFilter: StudentDocumentsFilter = {\r\n fileName: '',\r\n createdFrom: moment().subtract(1, 'year').toDate(),\r\n createdTo: undefined,\r\n addedBy: '',\r\n description: '',\r\n documentType: '',\r\n fileType: '',\r\n for: ''\r\n };\r\n super.setFilter(initialFilter);\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n // ------------ Student Documents Data ---------------------------\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) {\r\n return student.Id == studentId;\r\n })[0];\r\n this.getStudentDocuments();\r\n }\r\n\r\n getStudentDocuments(showEntireFamilyDocuments: boolean = false) {\r\n this.isBusy = true;\r\n this.angularMatData.data = [];\r\n this.studentDocumentsLength = 0;\r\n\r\n setTimeout(() => {\r\n this.studentService.getStudentDocuments(this.selectedStudent.Id, this.yearService.student360Year.Id, showEntireFamilyDocuments).pipe(take(1)).subscribe(data => {\r\n this.studentDocuments = data;\r\n\r\n if (!this.V10 && this.showOnlyBehaviorLettersDocument == true) {\r\n this.studentDocuments = this.studentDocuments.filter(x => x.Notes == \"Behavior Letter\");\r\n }\r\n this.studentDocumentsLength = this.studentDocuments.length;\r\n this.loadStudentDocuments();\r\n });\r\n }, 0);\r\n }\r\n\r\n loadStudentDocuments() {\r\n // load data into Angular Material table\r\n this.angularMatData.data = this.studentDocuments;\r\n this.applyFilter();\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n\r\n this.isBusy = false;\r\n }\r\n\r\n viewAttachment(row: StudentDocuments) {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: this.V10 == false ? row.DocumentId : 0,\r\n DocumentName: row.Name,\r\n DocumentBase64: row.FileBase64,\r\n DocumentMimeType: row.FileMimeType,\r\n DocumentModuleName: 'Documents',\r\n ReportParameters: [],\r\n ReportType: 0\r\n };\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n const win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n win.focus();\r\n let timer = setInterval(() => {\r\n if (!timer) {\r\n clearInterval(timer);\r\n }\r\n if (win.closed) {\r\n this.ngOnInit();\r\n clearInterval(timer);\r\n win.focus();\r\n }\r\n }, 1000);\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n getAriaRow(row: StudentDocuments): string {\r\n // Returns string for a given row's data\r\n // reads each column header name and then the cell data for that column\r\n let colList: string[] = [''];\r\n let dataList: string[] = [''];\r\n\r\n if (this.V10 == false) {\r\n colList = ['File Name', 'Description', 'Category', 'For', 'Added', 'Added by'];\r\n dataList = [row.Name, row.Notes, row.DocumentType, row.DocumentFor, row.CreatedOn.toString(), row.CreatedBy];\r\n } else {\r\n colList = ['File Name', 'Document Type', 'File Type', 'Description/Comments', 'Created'];\r\n dataList = [row.Name, row.DocumentType, row.FileType, row.Notes, row.CreatedOn.toString()];\r\n }\r\n\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n studentAccessHistoryClick(row: StudentDocuments) {\r\n const dialogRef = this.dialog.open(StudentDocumentAccessHistoryComponent, {\r\n disableClose: true,\r\n data: { AccessHistory: row.AccessHistory }\r\n });\r\n }\r\n\r\n editClick(doc: StudentDocuments) {\r\n if (doc.StudentId > 0) {\r\n this.studentService.getStudent(doc.StudentId).subscribe((studentData) => {\r\n doc.StudentName = studentData.LastName + ', ' + studentData.FirstName + ' ' + studentData.MiddleName;\r\n doc.StudentId = studentData.Id;\r\n doc.FamilyId = studentData.FamilyId;\r\n const dialogBox = this.dialog.open(AddEditDocumentComponent, {\r\n disableClose: true,\r\n minWidth: '500px',\r\n data: {\r\n attachments: doc\r\n }\r\n });\r\n dialogBox.afterClosed().subscribe((action: string) => {\r\n if (action == 'Save') {\r\n const newAttachment = dialogBox.componentInstance.attachment;\r\n doc.DocumentTypeId = newAttachment.DocumentTypeId;\r\n doc.FileName = newAttachment.OriginalFileName;\r\n doc.FileType = newAttachment.FileType;\r\n doc.Notes = newAttachment.Description;\r\n doc.FileBase64 = newAttachment.MyFileBase64String;\r\n if (doc.StudentId == null) {\r\n doc.StudentId = this.selectedStudent.Id;\r\n }\r\n doc.DocumentFor = newAttachment.DocumentType != 'Household' ? doc.StudentName : 'Family';\r\n if (this.selectedStudent.Id > 0) {\r\n this.studentService.saveAttachment(doc, doc.DocumentFor).subscribe(result => {\r\n this.getStudentDocuments();\r\n });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n doc.StudentName = this.selectedStudent.LastName + ', ' + this.selectedStudent.FirstName + ' ' + this.selectedStudent.MiddleName;\r\n doc.StudentId = this.selectedStudent.Id;\r\n doc.FamilyId = this.selectedStudent.FamilyId;\r\n const dialogBox = this.dialog.open(AddEditDocumentComponent, {\r\n disableClose: true,\r\n minWidth: '500px',\r\n data: {\r\n attachments: doc\r\n }\r\n });\r\n dialogBox.afterClosed().subscribe((action: string) => {\r\n if (action == 'Save') {\r\n const newAttachment = dialogBox.componentInstance.attachment;\r\n doc.DocumentTypeId = newAttachment.DocumentTypeId;\r\n doc.FileName = newAttachment.OriginalFileName;\r\n doc.FileType = newAttachment.FileType;\r\n doc.FileBase64 = newAttachment.MyFileBase64String;\r\n doc.Notes = newAttachment.Description;\r\n if (doc.StudentId == null) {\r\n doc.StudentId = this.selectedStudent.Id;\r\n }\r\n doc.DocumentFor = newAttachment.DocumentType != 'Household' ? doc.StudentName : 'Family';\r\n if (this.selectedStudent.Id > 0) {\r\n this.studentService.saveAttachment(doc, doc.DocumentFor).subscribe(result => {\r\n this.getStudentDocuments();\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n addAttachmentClick() {\r\n const newDocument: StudentDocuments = new StudentDocuments();\r\n newDocument.DocumentId = -1;\r\n newDocument.StudentName = this.selectedStudent.LastName + ', ' + this.selectedStudent.FirstName + ' ' + this.selectedStudent.MiddleName;\r\n newDocument.StudentId = this.selectedStudent.Id;\r\n newDocument.FamilyId = this.selectedStudent.FamilyId;\r\n newDocument.DocumentType = newDocument.StudentName;\r\n const dialogBox = this.dialog.open(AddEditDocumentComponent, {\r\n disableClose: true,\r\n minWidth: '500px',\r\n data: {\r\n attachments: newDocument\r\n }\r\n });\r\n dialogBox.afterClosed().subscribe((action: string) => {\r\n if (action == 'Save') {\r\n const newAttachment = dialogBox.componentInstance.attachment;\r\n newDocument.DocumentTypeId = newAttachment.DocumentTypeId;\r\n newDocument.FileName = newAttachment.OriginalFileName;\r\n newDocument.FileType = newAttachment.FileType;\r\n newDocument.FileBase64 = newAttachment.MyFileBase64String;\r\n newDocument.Notes = newAttachment.Description;\r\n newDocument.DocumentFor = newAttachment.DocumentType != 'Household' ? newDocument.StudentName : 'Family';\r\n if (this.selectedStudent.Id > 0) {\r\n this.studentService.saveAttachment(newDocument, newDocument.DocumentFor).subscribe(result => {\r\n this.getStudentDocuments(this.showFormsForEntireFamily);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n deleteDocumentClick(doc: StudentDocuments) {\r\n // PRE: a selected Document delete\r\n // POST: opens the dialog for deleting a document. If the dialog returns true, performs the deletion\r\n const deleteConfirmDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n });\r\n deleteConfirmDialog.componentInstance.headerLabel = ' Delete Document';\r\n deleteConfirmDialog.componentInstance.confirmMessage = ' Are you sure you want to delete? ';\r\n deleteConfirmDialog.componentInstance.okButtonLabel = 'Delete';\r\n deleteConfirmDialog.componentInstance.confirmEvent.subscribe((confirmed: boolean) => {\r\n if (confirmed) {\r\n this.studentService.deleteStudentDocuments(0, doc.DocumentId, 0).subscribe(\r\n result => {\r\n this.ngOnInit();\r\n }\r\n );\r\n }\r\n });\r\n }\r\n showFormsForEntireFamilyChange(showFormsForEntireFamily: boolean) {\r\n this.showFormsForEntireFamily = showFormsForEntireFamily;\r\n this.getStudentDocuments(showFormsForEntireFamily);\r\n }\r\n\r\n editStudentMode() {\r\n return this.sharedService.editRegistrationStudentMode;\r\n }\r\n getPermisionCategory(permisionCategory: string) {\r\n const checkPermission = this.V9UserPermissions.filter(permission => permission.PermissionCode == 'DSF_MDSF' && permission.PermissionCategory == permisionCategory)[0];\r\n if (checkPermission != undefined && checkPermission != null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n No Documents data exists for student.\r\n
\r\n
0\">\r\n \r\n \r\n \r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n {{SD.Name}}\r\n \r\n \r\n \r\n \r\n Document Type\r\n \r\n \r\n {{SD.DocumentType}}\r\n \r\n \r\n \r\n \r\n File Type\r\n \r\n \r\n {{SD.FileType}}\r\n \r\n \r\n \r\n \r\n Description/Comments\r\n \r\n \r\n {{SD.Notes}}\r\n \r\n \r\n \r\n \r\n Created\r\n \r\n \r\n \r\n {{SD.CreatedOn | date:'MM/dd/yy'}}\r\n \r\n \r\n \r\n Created\r\n \r\n \r\n {{SD.CreatedBy}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n Filter\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { Student } from '../../../shared-components/student/student.model';\r\nimport { StudentDocuments } from '../../../shared-components/student/student-documents.model';\r\nimport { AriaDirective } from '../../../shared-components/directives/aria.directive';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { System } from '../../../shared-components/System';\r\nimport { StudentDocumentsFilteredComponent } from '../student-documents-filtered.component';\r\nimport { StudentAttachment } from '../../../shared-modules/student-attachment/student-attachment.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { Student360Service } from '../../student360.service';\r\n\r\n@Component({\r\n selector: 'student-documents-v10',\r\n templateUrl: './student-documents-v10.component.html',\r\n styleUrls: ['./student-documents-v10.component.css']\r\n})\r\nexport class StudentDocumentsV10Component extends StudentDocumentsFilteredComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(MatSort) sort: MatSort;\r\n selectedStudentSubscription: Subscription;\r\n V10: boolean;\r\n selectedStudent: Student;\r\n columnsToDisplay = ['Name', 'DocumentType', 'FileType', 'Notes', 'CreatedOn'];\r\n\r\n constructor(\r\n studentService: StudentService,\r\n yearService: YearService,\r\n sharedService: SharedService,\r\n changeDetector: ChangeDetectorRef,\r\n private loginService: LoginService,\r\n student360Service: Student360Service\r\n ) {\r\n super(\r\n studentService,\r\n yearService,\r\n sharedService,\r\n changeDetector,\r\n student360Service\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.selectedStudentSubscription = this.studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.studentDocuments = undefined;\r\n this.loadStudentInfo(studentId);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.selectedStudentSubscription.unsubscribe();\r\n }\r\n\r\n getStudentDocuments() {\r\n this.angularMatData.data = [];\r\n setTimeout(() => {\r\n this.studentService.getStudentDocuments(this.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(data => {\r\n this.studentDocuments = data;\r\n this.loadStudentDocuments();\r\n });\r\n }, 0);\r\n }\r\n\r\n loadStudentDocuments() {\r\n this.angularMatData.data = this.studentDocuments;\r\n this.applyFilter();\r\n setTimeout(() => {\r\n this.angularMatData.sort = this.sort;\r\n }, 0);\r\n }\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(function (student) {\r\n return student.Id == studentId;\r\n })[0];\r\n this.getStudentDocuments();\r\n }\r\n\r\n viewAttachment(row: StudentDocuments) {\r\n const studentAttachment: StudentAttachment = {\r\n DocumentId: this.V10 == false ? row.DocumentId : 0,\r\n DocumentName: row.Name,\r\n DocumentBase64: row.FileBase64,\r\n DocumentMimeType: row.FileMimeType,\r\n DocumentModuleName: 'Documents',\r\n ReportParameters: [],\r\n ReportType: 0\r\n };\r\n\r\n window.localStorage.setItem('studentAttachment', JSON.stringify(studentAttachment));\r\n const win = window.open(System.baseUrl + 'studentattachment', '_blank');\r\n win.focus();\r\n }\r\n\r\n getAriaRow(row: StudentDocuments): string {\r\n let colList: string[] = [''];\r\n let dataList: string[] = [''];\r\n colList = ['File Name', 'Description', 'Category', 'For', 'Added', 'Added by'];\r\n dataList = [row.Name, row.Notes, row.DocumentType, row.DocumentFor, row.CreatedOn.toString(), row.CreatedBy];\r\n return AriaDirective.concatAriaStrings(colList, dataList);\r\n }\r\n}\r\n","\r\n\r\n\r\n","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {LoginService} from '../../shared-modules/login/login.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'student-documents',\r\n templateUrl: './student-documents.component.html',\r\n styles: []\r\n})\r\nexport class StudentDocumentsComponent implements OnInit, OnDestroy {\r\n\r\n isV10: boolean;\r\n\r\n constructor(private loginService: LoginService) {\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnInit(): void {\r\n // initialize stuff\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // destroy stuff\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { StudentField, StudentFieldsLookup } from './student-field.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { System } from '../../shared-components/System';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StudentFieldService {\r\n student360Year: Year;\r\n selectedStudent: Student;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private http: HttpClient\r\n\r\n ) { }\r\n\r\n getStudentFieldsByStudentId(): Observable {\r\n // POST: returns the student Fileds for a student\r\n const queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '&schoolId=' + this.yearService.student360Year.SchoolID;\r\n return this.http.get(System.apiURL.Student + 'GetStudentFieldsByStudentId' + queryString);\r\n }\r\n\r\n getStudentFieldOptions(studentFields: Array): Observable {\r\n return this.http.post(System.apiURL.Student + 'GetStudentFieldsLookup', studentFields);\r\n }\r\n\r\n validateStudentFieldsData(yearId: number, studentId: number, fields = []) {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&studentId=' + studentId;\r\n return this.http.post(System.apiURL.Student + 'ValidateStudentFieldsData' + queryString, fields);\r\n }\r\n\r\n saveStudentFieldsData(yearId: number, studentId: number, fields = []) {\r\n let queryString = '';\r\n queryString += '?yearId=' + yearId +\r\n '&studentId=' + studentId;\r\n return this.http.post(System.apiURL.Student + 'SaveStudentFieldsData' + queryString, fields);\r\n }\r\n}\r\n","export class StudentField {\r\n TabId: number;\r\n TabTitle: string;\r\n TabSequence: Number;\r\n DataFieldId: Number;\r\n ObjectType: Number;\r\n FieldName: string;\r\n SystemField: boolean;\r\n DisplaySize: Number;\r\n FieldSize: Number;\r\n ColumnData: string;\r\n ExternalDataId: number;\r\n DataFieldFormatType: number;\r\n DataTypeFormat: number;\r\n IsExternal: boolean;\r\n ColumnPosition: number;\r\n Row: number;\r\n NumberColumnUsed: number;\r\n Alignment: number;\r\n Visible: boolean;\r\n Editable: boolean;\r\n Error: string;\r\n MinimumFieldValue: number;\r\n TabMenus = [];\r\n OldColumnData: string;\r\n OldExternalDataId: number;\r\n SelectedTabId: number;\r\n isEdited: boolean;\r\n FieldOptions = [];\r\n OptionSelected: number;\r\n StudentId: number;\r\n ErrorCollection = [];\r\n ValidateIdLengthOnly: boolean;\r\n ErrorCount: any;\r\n FieldWidth: number;\r\n}\r\n\r\nexport class TabMenu {\r\n TabId: number;\r\n TabTitle: string;\r\n TabSequence: number;\r\n MaxRow: number;\r\n}\r\nexport class StudentFieldLookup {\r\n Id: number;\r\n Code: string;\r\n CodeDescription: string;\r\n Sequence: number;\r\n DataFieldId: number;\r\n}\r\nexport class StudentFieldsLookup {\r\n Id: string;\r\n Code: string;\r\n CodeDescription: string;\r\n Default: boolean;\r\n Sequence: number;\r\n DataFieldId: number;\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { StudentFieldLookup } from './student-field.model';\r\n\r\n@Pipe({\r\n name: 'StudentFieldLookupPipe',\r\n pure: false\r\n})\r\nexport class StudentFieldLookupPipe implements PipeTransform {\r\n transform(fieldOptions: StudentFieldLookup[], filter?) {\r\n let retObj = [];\r\n if (fieldOptions != null && fieldOptions != undefined) {\r\n retObj = fieldOptions.filter(x => x.DataFieldId === filter.DataFieldId);\r\n retObj.sort((a, b) => {\r\n if (a.Sequence < b.Sequence) {\r\n return -1;\r\n } else if (b.Sequence < a.Sequence) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n }\r\n return retObj;\r\n }\r\n}\r\n","\r\n\t\r\n\t
\r\n\t\t\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\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\t\t\t\t{{tab.TabTitle}}\r\n\t\t\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{{getTabTitle()}}\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\r\n\t\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\t\t\t{{field.FieldName}}\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\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\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\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tInvalid date!\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
\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\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\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\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\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\t\t{{fldOption.CodeDescription}}\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\t\t\t\t\t\t\t\t\t\t
\r\n\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
\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\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\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\t{{field.FieldName}}\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\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\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\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tInvalid date!\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
\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\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\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\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\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\t\t{{fldOption.CodeDescription}}\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\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\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
\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\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\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
\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 \r\n\t
\r\n
\r\n","import { Component, ElementRef, HostListener, OnDestroy, OnInit, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { StudentService } from './../../shared-components/student/student.service';\r\nimport { StudentFieldService } from './student-field.service';\r\nimport { StudentField, TabMenu, StudentFieldLookup } from './student-field.model';\r\nimport { ErrorList } from '../../shared-components/controls/error-prompt/error-list.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { Subscription, Observable, Subject } from 'rxjs';\r\nimport { RouterStateSnapshot } from '@angular/router';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\n\r\n@Component({\r\n selector: 'app-student-fields',\r\n templateUrl: './student-fields.component.html',\r\n styleUrls: ['./student-fields.componant.css']\r\n})\r\nexport class StudentFieldsComponent implements OnInit, AfterViewInit, OnDestroy {\r\n selectedStudent: Student;\r\n subscriptions: Subscription[] = [];\r\n StudentFields: StudentField[] = [];\r\n StudentField: StudentField = new StudentField();\r\n selectedStudentSubscription: Subscription;\r\n student360YearSubscription: Subscription;\r\n obj: StudentFieldLookup = new StudentFieldLookup();\r\n idFields: StudentField[];\r\n distinctTabId = [];\r\n errors: ErrorList[] = [];\r\n error: ErrorList = new ErrorList();\r\n unsavedChanges: boolean;\r\n studentDateFields = [];\r\n isStudentIdError = [];\r\n isStateIdError = [];\r\n studentHeaderHeight = 0;\r\n public tableHeight: number;\r\n footerHeight = 0;\r\n ElemAptitudeField: StudentField;\r\n @ViewChild('studentHeader', { static: true }) studentHeaderRef: ElementRef;\r\n @ViewChild('footer', { static: true }) footerRef: ElementRef;\r\n enableSave: boolean;\r\n\r\n @ViewChild('divUserDefinedField', { static: true }) divUserDefinedField: ElementRef;\r\n public observableStudentFieldSaved = new Subject();\r\n observableStudentFieldSavedStream$ = this.observableStudentFieldSaved.asObservable();\r\n constructor(private StudentFieldservice: StudentFieldService,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n\r\n ) {\r\n this.StudentField.FieldOptions = [];\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n student360Year => {\r\n this.getStudentFieldsByStudentId();\r\n }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.tableHeight = 450;\r\n this.unsavedChanges = false;\r\n this.StudentField.TabMenus = [];\r\n this.errors = [];\r\n this.getUserPermission();\r\n }\r\n // Angular Material\r\n windowResize() {\r\n if (this.divUserDefinedField != undefined) {\r\n this.tableHeight = window.innerHeight - this.studentHeaderHeight - this.footerHeight - 55;\r\n }\r\n }\r\n\r\n getUserPermission() {\r\n this.StudentField.ValidateIdLengthOnly = false;\r\n\r\n this.userService.getUserPermissions(this.yearService.student360Year.Id, this.yearService.student360Year.SchoolID).subscribe(userPermissions => {\r\n const ESILDMPermisssion = userPermissions.filter(x => x.PermissionCode == 'SD_ESILDM');\r\n if (ESILDMPermisssion != null && ESILDMPermisssion.length > 0) {\r\n this.StudentField.ValidateIdLengthOnly = true;\r\n }\r\n });\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n setTimeout(() => {\r\n this.windowResize();\r\n }, 1000);\r\n\r\n }\r\n\r\n getTabTitle() {\r\n const tab: TabMenu[] = this.StudentField.TabMenus.filter(x => x.TabId == this.StudentField.SelectedTabId);\r\n if (tab.length > 0) {\r\n return tab[0].TabTitle;\r\n }\r\n return '';\r\n }\r\n\r\n filterStudentField(columnPosition, row) {\r\n return this.StudentFields.filter(x => x.ColumnPosition == columnPosition && x.TabId == this.StudentField.SelectedTabId && x.Row == row);\r\n }\r\n visibleMiddleColumn(row) {\r\n return (this.StudentFields.filter(x => x.ColumnPosition == 1 && x.TabId == this.StudentField.SelectedTabId && x.Row == row).length == 0) && (this.StudentFields.filter(y => y.ColumnPosition == 2 && y.TabId == this.StudentField.SelectedTabId && y.Row == row).length > 0);\r\n }\r\n loadStudentInfo(studentId: number) {\r\n\r\n this.selectedStudent = this.studentService.students.filter(function (student) { return student.Id == studentId; })[0];\r\n this.getStudentFieldsByStudentId();\r\n }\r\n\r\n // Methods\r\n getStudentFieldsByStudentId() {\r\n // POST: obtains the data from the server and organizes the table data\r\n\r\n this.unsavedChanges = false;\r\n this.StudentFields = [];\r\n this.subscriptions.push(\r\n this.StudentFieldservice.getStudentFieldsByStudentId().subscribe(result => {\r\n this.StudentFields = result;\r\n this.StudentField.TabMenus = [];\r\n this.StudentFields.forEach(element => {\r\n let numericFieldLength = 0;\r\n element.FieldWidth = 60;\r\n if (element.DataFieldFormatType == 3 && element.ObjectType != 2 && element.Visible && !element.DataTypeFormat && element.ColumnData != null && element.ColumnData != undefined) {\r\n // if numeric field then check length of data\r\n numericFieldLength = element.ColumnData.length;\r\n if (element.DisplaySize < numericFieldLength) {\r\n element.FieldWidth = (parseInt(numericFieldLength.toString(), 10) * 9) + 15;\r\n } else {\r\n element.FieldWidth = (parseInt(element.DisplaySize.toString(), 10) * 9) + 15;\r\n }\r\n } else {\r\n element.FieldWidth = (parseInt(element.DisplaySize.toString(), 10) * 9) + 15;\r\n }\r\n\r\n if (element.FieldWidth < 60) {\r\n element.FieldWidth = 60;\r\n }\r\n });\r\n\r\n this.distinctTabId = Array.from(new Set(result.map((data: any) => data.TabId)));\r\n this.distinctTabId.forEach(TabId => {\r\n const field = result.filter(x => x.TabId === parseInt(TabId, 10));\r\n if (field != null) {\r\n const maxRow = Math.max.apply(Math, field.map(function (data) { return data.Row; }));\r\n this.StudentField.TabMenus.push({ 'TabId': field[0].TabId, 'TabTitle': field[0].TabTitle, 'TabSequence': field[0].TabSequence, 'MaxRow': maxRow });\r\n }\r\n });\r\n this.StudentField.TabMenus = this.StudentField.TabMenus.sort((a, b) => a.TabSequence - b.TabSequence);\r\n if (this.StudentField.TabMenus.length > 0 && (this.StudentField.SelectedTabId == undefined || this.StudentField.SelectedTabId == null)) {\r\n this.StudentField.SelectedTabId = this.StudentField.TabMenus[0].TabId;\r\n }\r\n this.studentDateFields = [];\r\n this.studentDateFields = this.StudentFields.filter(field => field.ObjectType == 1 && field.DataFieldFormatType == 4 && field.ColumnData != null);\r\n\r\n this.studentDateFields.forEach(dt => {\r\n dt.ColumnData = new Date(dt.ColumnData);\r\n });\r\n this.StudentFields.forEach(x => {\r\n x.OldColumnData = x.ColumnData;\r\n x.OldExternalDataId = x.ExternalDataId;\r\n if (x.Visible != true && x.ObjectType == 2) {\r\n x.OptionSelected = 0;\r\n }\r\n });\r\n const editableFields: StudentField[] = this.StudentFields.filter(x => x.Editable == true);\r\n if (editableFields != null && editableFields.length > 0) {\r\n this.enableSave = true;\r\n } else {\r\n this.enableSave = false;\r\n }\r\n this.getStudentFieldOptions();\r\n })\r\n );\r\n }\r\n\r\n getStudentFieldOptions() {\r\n const dataFieldIds = this.StudentFields.filter(field => field.ObjectType == 2).map(field => field.DataFieldId);\r\n const StudentFields = [];\r\n StudentFields.push(dataFieldIds.join());\r\n this.StudentFieldservice.getStudentFieldOptions(StudentFields).subscribe(results => {\r\n this.StudentField.FieldOptions = [];\r\n for (let i = 0; i < dataFieldIds.length; i++) {\r\n const fieldOptions = results.filter(data => data.DataFieldId == dataFieldIds[i]);\r\n const fields = this.StudentFields.filter(st => st.DataFieldId == dataFieldIds[i]);\r\n }\r\n dataFieldIds.forEach(dataFieldId => {\r\n const fieldOptions = Object.assign([], results.filter(field => field.DataFieldId === parseInt(dataFieldId.toString(), 10)));\r\n const fields = this.StudentFields.filter(st => st.DataFieldId == parseInt(dataFieldId.toString(), 10));\r\n if (fields != null) {\r\n const checkBlankRecord = fieldOptions.filter(x => x.Code.trim() == '' && x.CodeDescription.trim() == '');\r\n if (checkBlankRecord.length == 0 && fields[0].FieldName != 'Gender' && fields[0].FieldName != 'Grade') {\r\n this.obj.Id = -1;\r\n this.obj.Code = '';\r\n this.obj.CodeDescription = '';\r\n this.obj.Sequence = -1;\r\n this.obj.DataFieldId = parseInt(dataFieldId.toString(), 10);\r\n fieldOptions.push(this.obj);\r\n }\r\n for (let i = 0; i < fieldOptions.length; i++) {\r\n fieldOptions[i].Id = fieldOptions[i].Id;\r\n if (fieldOptions[i].Code.trim() == '' && fieldOptions[i].CodeDescription.trim() == '') {\r\n fieldOptions[i].Sequence = -1;\r\n const existOption = fieldOptions.filter(x => Number(x.Id) == Number(fields[0].ExternalDataId));\r\n if (existOption.length == 0) {\r\n fields[0].ExternalDataId = fieldOptions[i].Id;\r\n }\r\n }\r\n this.StudentField.FieldOptions.push(Object.assign(fieldOptions[i]));\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n menuSelected(tabId: number) {\r\n this.StudentField.SelectedTabId = tabId;\r\n }\r\n\r\n tabRows() {\r\n const tabMenu = this.StudentField.TabMenus.find(tabmenu => tabmenu.TabId == this.StudentField.SelectedTabId);\r\n const rows = [];\r\n if (tabMenu != null) {\r\n for (let i = 1; i <= tabMenu.MaxRow; i++) {\r\n rows.push(i);\r\n }\r\n }\r\n return rows;\r\n }\r\n\r\n changeFieldData(field: StudentField) {\r\n if ((field.OldColumnData != field.ColumnData && (!(field.OldColumnData == null && field.ColumnData == '') && !(field.OldColumnData == '' && field.ColumnData == null))) || field.OldExternalDataId != field.ExternalDataId) {\r\n field.isEdited = true;\r\n this.unsavedChanges = true;\r\n }\r\n else {\r\n field.isEdited = false;\r\n }\r\n }\r\n\r\n compareObjects(o1: number, o2: number): boolean {\r\n if (o2 == null) {\r\n o2 = -1;\r\n }\r\n return (o1 == o2);\r\n }\r\n\r\n saveClick = function (isSaveData: boolean) {\r\n this.StudentField.ErrorCollection = [];\r\n this.errors = [];\r\n const objStudentFields: StudentField[] = Object.assign(this.StudentFields.filter(x => x.isEdited == true));\r\n if (objStudentFields.length > 0) {\r\n if (isSaveData == true) {\r\n this.validateData(objStudentFields, true);\r\n } else {\r\n this.validateData(objStudentFields, false);\r\n }\r\n }\r\n };\r\n\r\n validateDate(div, IsValidate, field) {\r\n let isInvalidDate: boolean;\r\n isInvalidDate = false;\r\n const columnData = (document.getElementById(div + field.DataFieldId)).value;\r\n if ((columnData !== undefined && columnData !== '' && columnData != null)) {\r\n let month = null;\r\n let day = null;\r\n let year = null;\r\n if (columnData.indexOf('/') > -1) {\r\n const res = columnData.split('/');\r\n if (res.length > 1) {\r\n month = res[0];\r\n day = res[1];\r\n year = res[2];\r\n }\r\n }\r\n else {\r\n if (columnData.length == 8) {\r\n month = columnData.substring(0, 2);\r\n day = columnData.substring(2, 4);\r\n year = columnData.substring(4, 8);\r\n }\r\n }\r\n if (isNaN(month) || isNaN(day) || isNaN(year)) {\r\n isInvalidDate = true;\r\n }\r\n month = Number(month);\r\n day = Number(day);\r\n year = Number(year);\r\n if (month < 1 || month > 12) { // check month range\r\n isInvalidDate = true;\r\n }\r\n if (day < 1 || day > 31) {\r\n isInvalidDate = true;\r\n }\r\n if ((month === 4 || month === 6 || month === 9 || month === 11) && day === 31) {\r\n isInvalidDate = true;\r\n }\r\n if (month == 2) {\r\n const isleap = (year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0));\r\n if (day > 29 || (day === 29 && !isleap)) {\r\n isInvalidDate = true;\r\n }\r\n }\r\n }\r\n if (isInvalidDate) {\r\n document.getElementById('span' + div + field.DataFieldId).style.display = 'inline-block';\r\n document.getElementById(div + field.DataFieldId).nodeValue = '';\r\n\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = field;\r\n this.error.errorMsg = ' Invalid Date';\r\n this.error.fieldRef = null;\r\n this.StudentField.ErrorCollection.push(this.error);\r\n } else {\r\n this.StudentField.ErrorCollection = [];\r\n document.getElementById('span' + div + field.DataFieldId).style.display = 'none';\r\n this.changeFieldData(field);\r\n }\r\n }\r\n\r\n callbackFunction(objStudentFields: StudentField[]) {\r\n this.StudentFieldservice.saveStudentFieldsData(this.yearService.student360Year.Id, this.selectedStudent.Id, objStudentFields).subscribe(results => {\r\n if (results == null) {\r\n this.getStudentFieldsByStudentId();\r\n this.unsavedChanges = false;\r\n }\r\n else {\r\n objStudentFields.forEach((StudentFields, e: number) => {\r\n if (objStudentFields[e].DataFieldId == results.DataFieldId) {\r\n return;\r\n }\r\n const editedField: StudentField[] = this.StudentFields.filter(x => x.DataFieldId == objStudentFields[e].DataFieldId);\r\n if (editedField != null && editedField.length > 0) {\r\n editedField[0].isEdited = false;\r\n editedField[0].OldColumnData = editedField[0].ColumnData;\r\n editedField[0].OldExternalDataId = editedField[0].ExternalDataId;\r\n }\r\n });\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = results.FieldName;\r\n this.error.errorMsg = results.Error;\r\n this.StudentField.ErrorCollection.push(this.error);\r\n }\r\n });\r\n }\r\n\r\n validateData(objStudentFields: StudentField[], callbackFunction: boolean) {\r\n objStudentFields.forEach((objStudentField, i: number) => {\r\n if (objStudentFields[i].DataFieldFormatType == 4 && objStudentFields[i].ObjectType != 2) {\r\n if (objStudentFields[i].ColumnData != undefined && objStudentFields[i].ColumnData != null && objStudentFields[i].ColumnData != '') {\r\n objStudentFields[i].ColumnData = new Date(objStudentFields[i].ColumnData).toLocaleDateString();\r\n }\r\n else {\r\n objStudentFields[i].ColumnData = '';\r\n }\r\n }\r\n });\r\n\r\n if (objStudentFields.length > 0) {\r\n objStudentFields.forEach((objStudentField, index: number) => {\r\n objStudentFields[index].FieldOptions = [];\r\n const fieldsLookup: StudentFieldLookup[] = this.StudentField.FieldOptions.filter(function (o) { return (o.Id == objStudentFields[index].ExternalDataId && o.DataFieldId == objStudentFields[index].DataFieldId); });\r\n if (fieldsLookup != null || fieldsLookup != undefined) {\r\n objStudentFields[index].FieldOptions = fieldsLookup;\r\n }\r\n });\r\n this.StudentField.ErrorCollection = [];\r\n this.StudentField.ErrorCount = 0;\r\n const fields: StudentField[] = Object.assign(objStudentFields.filter(function (element) {\r\n return (element.DataFieldFormatType == 200 || element.DataFieldFormatType == 201 || element.DataFieldFormatType == 202 || (element.DataFieldFormatType == 204 && element.FieldOptions.length > 0 && element.FieldOptions[0].CodeDescription.trim() != ''));\r\n }));\r\n if (fields.length > 0) {\r\n this.StudentFieldservice.validateStudentFieldsData(this.yearService.student360Year.Id, this.selectedStudent.Id, fields).subscribe(results => {\r\n results.forEach((res, i: number) => {\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = res.FieldName;\r\n if (res.Error != '') {\r\n this.error.errorMsg = res.Error;\r\n }\r\n else {\r\n this.error.errorMsg = ' has the value ' + res.ColumnData + ' which is not valid Email';\r\n }\r\n this.StudentField.ErrorCollection.push(this.error);\r\n });\r\n if (this.validateOtherFields(objStudentFields)) {\r\n if (this.StudentField.ErrorCount == 0 && callbackFunction == true) {\r\n this.callbackFunction(objStudentFields);\r\n }\r\n } else {\r\n this.showErors();\r\n }\r\n });\r\n } else {\r\n if (this.validateOtherFields(objStudentFields)) {\r\n if (this.StudentField.ErrorCount == 0 && callbackFunction == true) {\r\n this.callbackFunction(objStudentFields);\r\n }\r\n }\r\n else {\r\n this.showErors();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validateOtherFields(objStudentFields: StudentField[]) {\r\n const emailFields: StudentField[] = Object.assign(objStudentFields.filter(function (element) { return (element.DataFieldFormatType == 205); }));\r\n emailFields.forEach((email, i: number) => {\r\n if (emailFields[i].ColumnData != undefined && emailFields[i].ColumnData != null && emailFields[i].ColumnData != '') {\r\n const regex = /^(([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+)*$/;\r\n if (!regex.test(String(emailFields[i].ColumnData).toLowerCase())) {\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = emailFields[i].FieldName;\r\n this.error.errorMsg = ' has the value ' + emailFields[i].ColumnData + ' which is not valid Email';\r\n this.error.fieldRef = null;\r\n this.StudentField.ErrorCollection.push(this.error);\r\n }\r\n }\r\n });\r\n\r\n if (objStudentFields.filter(x => x.FieldName == 'ElemAptitude').length > 0) {\r\n this.ElemAptitudeField = Object.assign(objStudentFields.filter(x => x.FieldName == 'ElemAptitude')[0]);\r\n }\r\n\r\n if (this.ElemAptitudeField != null && this.ElemAptitudeField.ColumnData != undefined && this.ElemAptitudeField.ColumnData != null && this.ElemAptitudeField.ColumnData != '' && (Number(this.ElemAptitudeField.ColumnData) > 255 || Number(this.ElemAptitudeField.ColumnData) < 0)) {\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = this.ElemAptitudeField.FieldName;\r\n this.error.errorMsg = ' value must be between 0 to 255!';\r\n this.error.fieldRef = null;\r\n this.StudentField.ErrorCollection.push(this.error);\r\n }\r\n\r\n this.isStudentIdError = this.StudentFields.filter(element => element.DataFieldFormatType == 201);\r\n this.isStateIdError = this.StudentFields.filter(element => element.DataFieldFormatType == 202);\r\n this.idFields = Object.assign(objStudentFields.filter((element) => {\r\n return ((element.DataFieldFormatType == 201 && this.isStudentIdError.length == 1) || (element.DataFieldFormatType == 202 && this.isStateIdError.length == 1) || element.DataFieldFormatType == 203);\r\n }));\r\n\r\n this.idFields.forEach((idF, i: number) => {\r\n if (idF.ColumnData != undefined && idF.ColumnData != null && idF.ColumnData != '') {\r\n const intMaxValue = (new Array(idF.FieldSize)).fill(9).join('');\r\n if ((idF.DataFieldFormatType == 201 && ((this.StudentField.ValidateIdLengthOnly\r\n && (idF.ColumnData.length != idF.FieldSize))\r\n || (!this.StudentField.ValidateIdLengthOnly && ((Number(idF.ColumnData) < Number(idF.MinimumFieldValue)) || (Number(idF.ColumnData) > Number(intMaxValue))))))\r\n || (idF.DataFieldFormatType == 202 && (idF.ColumnData.length != idF.FieldSize))\r\n || (idF.DataFieldFormatType == 203 && (idF.ColumnData.length != 9))) {\r\n\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = idF.FieldName;\r\n this.error.errorMsg = ' has the value ' + idF.ColumnData + ' which is not formatted correctly or an incorrect length. Proper format is ' + idF.DataTypeFormat;\r\n this.error.fieldRef = null;\r\n this.StudentField.ErrorCollection.push(this.error);\r\n }\r\n }\r\n });\r\n\r\n const lunchPin: StudentField[] = Object.assign(objStudentFields.filter(function (element) { return element.DataFieldFormatType == 200; }));\r\n lunchPin.forEach((lun, i: number) => {\r\n if (lunchPin[i].ColumnData != undefined && lunchPin[i].ColumnData != null && lunchPin[i].ColumnData != '') {\r\n if (lunchPin[i].ColumnData.length != lunchPin[i].FieldSize) {\r\n\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = lunchPin[i].FieldName;\r\n this.error.errorMsg = ' has the value ' + lunchPin[i].ColumnData + ' which is not formatted correctly or an incorrect length. Proper format is ' + lunchPin[i].DataTypeFormat;\r\n this.StudentField.ErrorCollection.push(this.error);\r\n }\r\n\r\n if (isNaN(Number(lunchPin[i].ColumnData))) {\r\n this.StudentField.ErrorCount = this.StudentField.ErrorCount + 1;\r\n this.error.fieldName = lunchPin[i].FieldName;\r\n this.error.errorMsg = ' should be numeric!'\r\n this.StudentField.ErrorCollection.push(this.error);\r\n }\r\n }\r\n });\r\n if (this.StudentField.ErrorCount == 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n showErors() {\r\n this.errors = [];\r\n if (this.StudentField.ErrorCollection.length > 0) {\r\n this.StudentField.ErrorCollection.forEach((errField, index: number) => {\r\n const element = new ElementRef(document.getElementById('FieldData' + errField.fieldName));\r\n const objError: ErrorList = {\r\n fieldName: errField.fieldName,\r\n errorMsg: errField.errorMsg,\r\n fieldRef: element\r\n };\r\n if (this.errors.filter(x => x.fieldName == objError.fieldName).length < 1) {\r\n this.errors.push(objError);\r\n }\r\n });\r\n }\r\n }\r\n\r\n checkErrors(nextState?: RouterStateSnapshot): number {\r\n this.errors = [];\r\n this.saveClick(false);\r\n if (this.unsavedChanges) {\r\n return 0;\r\n }\r\n return 1;\r\n }\r\n\r\n save(): Observable {\r\n this.saveClick(true);\r\n return this.observableStudentFieldSavedStream$;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.studentHeaderRef != undefined) {\r\n this.studentHeaderHeight = this.studentHeaderRef.nativeElement.offsetHeight;\r\n }\r\n if (this.footerRef != undefined) {\r\n this.footerHeight = this.footerRef.nativeElement.offsetHeight;\r\n }\r\n this.onResize();\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.selectedStudentSubscription.unsubscribe();\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n}\r\n","export class CourseTerm {\r\n $id: string;\r\n EndDate: string;\r\n Id: number;\r\n LongDescription: string;\r\n MediumDescription: string;\r\n ParentId: number;\r\n Sequence: number;\r\n ShortDescription: string;\r\n StartDate: string;\r\n TermTypeId: number;\r\n Code: string;\r\n}","\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n Today's Schedule\r\n \r\n \r\n This Term\r\n \r\n \r\n All\r\n \r\n \r\n \r\n\r\n \r\n
\r\n No Student Schedule data exists for student\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Meets\r\n \r\n \r\n \r\n {{scheduleCourse.Meets}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Attendance
Type
\r\n \r\n
\r\n \r\n {{scheduleCourse.AttendanceType}}\r\n \r\n
\r\n\r\n \r\n \r\n \r\n Term\r\n \r\n \r\n \r\n {{scheduleCourse.Term}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Course Name\r\n \r\n \r\n \r\n {{scheduleCourse.Course}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Teacher\r\n \r\n \r\n \r\n {{scheduleCourse.Teacher}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Room\r\n \r\n \r\n \r\n {{scheduleCourse.Room}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Entry Date\r\n \r\n \r\n \r\n {{scheduleCourse.getEntryDate() | date: 'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Dropped Date\r\n \r\n \r\n \r\n {{scheduleCourse.getDroppedDate() | date: 'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Team\r\n \r\n \r\n \r\n {{scheduleCourse.TeamCode}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n  \r\n {{scheduleCourse.SubjectCode}}-{{scheduleCourse.Section}}\r\n
\r\n \r\n Assignments\r\n \r\n \r\n Attendance\r\n \r\n \r\n Email Teacher\r\n \r\n \r\n Grades\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n  \r\n {{scheduleCourse.SchoolName}}\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n","import { Portal } from './../../shared-components/portal.model';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { MenuItem } from '../../shared-components/controls/menus/menu-item.model';\r\nimport { CourseDescriptionDialogComponent } from '../../shared-components/course-description-dialog/course-description-dialog.component';\r\nimport { ExportService } from '../../shared-components/export.service';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { SendEmailService } from '../../shared-modules/send-email/send-email.service';\r\nimport { Student360Service } from '../student360.service';\r\nimport { TylerMatTableDataSource } from './../../shared-components/angular-material/extended.class';\r\nimport { ProfileViewerDialogComponent } from './../../shared-components/profile-viewer-dialog/profile-viewer-dialog.component';\r\nimport { CourseSchedule } from './../../shared-components/student/course-schedule.model';\r\nimport { Enrollment } from './../../shared-components/student/enrollment.model';\r\nimport { AssignmentService } from './../assignment/assignment.service';\r\nimport { StudentScheduleService } from './student-schedule.service';\r\n\r\n@Component({\r\n selector: 'student-schedule',\r\n templateUrl: './student-schedule.component.html',\r\n styleUrls: [\r\n './student-schedule.component.css'\r\n ],\r\n animations: [\r\n detailExpand\r\n ]\r\n})\r\nexport class StudentScheduleComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // Properties\r\n private _viewOption = 1;\r\n private _includeDropped = false;\r\n schedule: CourseSchedule[];\r\n subscriptions: Subscription[] = [];\r\n tableData = new TylerMatTableDataSource();\r\n junkDate = System.junkDate;\r\n V10: boolean;\r\n columns = ['More', 'Meets', 'Term', 'Course', 'Teacher', 'Room', 'EntryDate', 'DroppedDate', 'Team'];\r\n selectedRow: CourseSchedule;\r\n expandEmitter = new EventEmitter();\r\n tableHeight: number;\r\n minTableWidth: number;\r\n @ViewChild('tableContainer', { read: ElementRef }) tableContainer: ElementRef;\r\n showProfiles: boolean;\r\n studentEnrollment: Enrollment;\r\n _sort: MatSort;\r\n clearFilterEvent = new EventEmitter();\r\n parentPortalSubscription: Subscription;\r\n staffAssignedPortalsSubscription: Subscription;\r\n student360YearSubscription: Subscription;\r\n // ------------Selection/Flags-----------------------------------\r\n showAttendanceLink = false;\r\n showAssignmentLink = false;\r\n showGradesLink = false;\r\n showEmailLink = false;\r\n calendarUseAttendanceTypes = false;\r\n // Class Functions\r\n constructor(\r\n private studentScheduleService: StudentScheduleService,\r\n private loginService: LoginService,\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private studentService: StudentService,\r\n private sendEmailService: SendEmailService,\r\n private assignmentService: AssignmentService,\r\n private sharedService: SharedService,\r\n private exportService: ExportService,\r\n public changeDetector: ChangeDetectorRef,\r\n private activatedRoute: ActivatedRoute,\r\n private userService: UserService,\r\n private parentPortalService: Student360Service,\r\n private classroom360Service: Classroom360Service,\r\n private yearService: YearService\r\n ) {\r\n }\r\n\r\n get viewOption(): number {\r\n return this._viewOption;\r\n }\r\n\r\n set viewOption(value: number) {\r\n this._viewOption = value;\r\n this.getSchedule();\r\n }\r\n\r\n get includeDropped(): boolean {\r\n return this._includeDropped;\r\n }\r\n\r\n set includeDropped(value: boolean) {\r\n this.tableData.data = [];\r\n this.schedule = undefined;\r\n this._includeDropped = value;\r\n this.getSchedule();\r\n setTimeout(() => {\r\n this.sharedService.updateShowSpinner(true);\r\n setTimeout(() => {\r\n this.checkColumns();\r\n this.sharedService.updateShowSpinner(false);\r\n }, 25);\r\n }, 25);\r\n }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n if (this.tableData) {\r\n this.tableData.sort = this._sort;\r\n }\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n const selectedView = params['selectedView'];\r\n // 1 = Today's schedule\r\n // 2 = This term\r\n // 3 = All\r\n if (selectedView) {\r\n this._viewOption = parseInt(selectedView, 10);\r\n }\r\n });\r\n // POST: initializes the data\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.showProfiles = this.loginService.LoginSettings.ParentPortalCourseScheduleProfiles;\r\n this.checkColumns();\r\n this.getCalendarUseAttendanceTypes();\r\n\r\n this.subscriptions.push(\r\n this.expandEmitter.subscribe(expand => {\r\n this.tableData.expandAll(expand);\r\n }),\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n this.schedule = undefined;\r\n this.studentEnrollment = this.studentService.studentEnrollment;\r\n this.getCalendarUseAttendanceTypes();\r\n this.getSchedule();\r\n }),\r\n this.yearService.observableStudent360YearStream$.subscribe(student360Year => {\r\n this.getCalendarUseAttendanceTypes();\r\n this.getSchedule();\r\n })\r\n );\r\n\r\n if (this.userService.userType == 1) {\r\n this.staffAssignedPortalsSubscription = this.classroom360Service.observableStaffAssignedPortalsStream$.subscribe(_ => {\r\n this.getPortalInfo();\r\n });\r\n }\r\n else {\r\n this.parentPortalSubscription = this.parentPortalService.observableParentAssignedPortalsStream$.subscribe(_ => {\r\n this.getPortalInfo();\r\n });\r\n }\r\n this.getPortalInfo();\r\n }\r\n\r\n ngAfterViewInit() {\r\n // POST: sets the sort to the table data\r\n if (this.tableData && this.sort) {\r\n this.tableData.sort = this.sort;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: unsubscribes to all observables\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n getPortalInfo() {\r\n const hasPortal = (portalName: string, excludeClassroomPortals: boolean) => {\r\n let portals: Portal[] = [];\r\n if (this.userService.userType == 1) {\r\n portals = this.classroom360Service.staffAssignedPortals;\r\n } else {\r\n portals = this.parentPortalService.parentAssignedPortals;\r\n }\r\n return portals.filter(x => x.PortalName == portalName && x.Disabled == false && (!excludeClassroomPortals || x.ParentModule != '/classroom360')) != null\r\n && portals.filter(x => x.PortalName == portalName && x.Disabled == false && (!excludeClassroomPortals || x.ParentModule != '/classroom360')).length > 0;\r\n };\r\n this.showAttendanceLink = hasPortal('Attendance', true);\r\n this.showAssignmentLink = hasPortal('Assignments', true);\r\n this.showGradesLink = hasPortal('Grades', true);\r\n this.showEmailLink = hasPortal('Send Email', false);\r\n }\r\n\r\n assignmentClick(scheduleCourse: CourseSchedule) {\r\n // PRE: the user clicks on an assignment link under a course\r\n // POST: routes the user to that assignment page with this as the selected course\r\n this.assignmentService.selectedCourse = scheduleCourse;\r\n this.assignmentService.preventTabSwitch = true;\r\n const allowableTerms = scheduleCourse.CourseTerms.filter(term => {\r\n const today = Date.now();\r\n if (term.EndDate && term.StartDate) {\r\n const startDate = Date.parse(term.StartDate);\r\n const endDate = Date.parse(term.EndDate);\r\n if (today >= startDate && today <= endDate) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n if (allowableTerms.length > 0) {\r\n this.assignmentService.selectedGP = allowableTerms[allowableTerms.length - 1].ShortDescription;\r\n }\r\n this.assignmentService.selectedSectionId = scheduleCourse.SiteSectionId;\r\n if (!this.userService.studentInformationView) {\r\n this.assignmentService.selectedView = this.viewOption;\r\n this.router.navigateByUrl('/student360/assignments');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/assignments');\r\n }\r\n }\r\n\r\n attendanceClick(scheduleCourse: CourseSchedule) {\r\n // PRE: the user clicks on an attendance link under a course\r\n // POST: routes the user to that attendance page with by student schedule (all) as selected\r\n this.studentService.selectedCourse = scheduleCourse;\r\n this.studentService.selectedSectionId = scheduleCourse.SiteSectionId;\r\n this.studentService.selected = '3';\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/attendance');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/attendance');\r\n }\r\n }\r\n\r\n emailTeacherClick(scheduleCourse: CourseSchedule) {\r\n // PRE: the user clicks on an attendance link under a course\r\n // POST: routes the user to the email page\r\n this.sendEmailService.teacherName = scheduleCourse.TeacherName;\r\n this.sendEmailService.teacherEmailAddress = scheduleCourse.TeacherEmail;\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/sendEmail');\r\n }\r\n }\r\n\r\n gradesClick(scheduleCourse: CourseSchedule) {\r\n // PRE: the user clicks on a grade link under a course\r\n // POST: routes the user to the grade page\r\n if (!this.userService.studentInformationView) {\r\n this.router.navigateByUrl('/student360/reportCardGrades');\r\n }\r\n else {\r\n this.userService.updateStudentViewRoute('/student360/reportCardGrades');\r\n }\r\n }\r\n\r\n menuClick(item: MenuItem) {\r\n // PRE: a menu item is clicked\r\n // POST: routes to the right handler\r\n switch (item.itemName) {\r\n case 'Course Description':\r\n this.courseDescriptionClick(item.data);\r\n break;\r\n case 'Class Information':\r\n this.classInformationClick(item.data);\r\n break;\r\n case 'Teacher Profile':\r\n this.teacherProfileClick(item.data);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n courseDescriptionClick(scheduleCourse: CourseSchedule) {\r\n // PRE: the user clicks on a course description link under a course\r\n // POST: shows a modal for the course's description\r\n this.dialog.open(CourseDescriptionDialogComponent, {\r\n data: {\r\n course: scheduleCourse.Course,\r\n courseSection: scheduleCourse.SubjectCode + '-' + scheduleCourse.Section,\r\n teacherName: scheduleCourse.TeacherName,\r\n schoolName: scheduleCourse.SchoolName,\r\n curriculum: scheduleCourse.Curriculum,\r\n description: scheduleCourse.Description\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n classInformationClick(scheduleCourse: CourseSchedule) {\r\n // PRE: the user clicks on a class information link under a course\r\n // POST: shows a modal for that class' profile\r\n const dialogBox = this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n courseSSEC_ID: scheduleCourse.Id,\r\n courseName: scheduleCourse.Course,\r\n courseSection: scheduleCourse.SubjectCode + '-' + scheduleCourse.Section,\r\n teacherName: scheduleCourse.TeacherName,\r\n school: scheduleCourse.SchoolName,\r\n profiles: scheduleCourse.CourseProfile,\r\n showTeacherProfileLink: scheduleCourse.TeacherProfile && scheduleCourse.TeacherProfile.length > 0\r\n },\r\n disableClose: true\r\n });\r\n this.subscriptions.push(\r\n dialogBox.componentInstance.teacherProfileClick.subscribe(() => {\r\n this.teacherProfileClick(scheduleCourse);\r\n })\r\n );\r\n }\r\n\r\n teacherProfileClick(scheduleCourse: CourseSchedule) {\r\n // PRE: the user clicks on a teacher profile link under a couse\r\n // POST: shows a modal for that teacher's profile\r\n this.dialog.open(ProfileViewerDialogComponent, {\r\n data: {\r\n teacherId: scheduleCourse.TeacherId,\r\n teacherName: scheduleCourse.TeacherName,\r\n school: scheduleCourse.SchoolName,\r\n profiles: scheduleCourse.TeacherProfile\r\n },\r\n disableClose: true\r\n });\r\n }\r\n\r\n getSchedule() {\r\n // POST: obtains the schedule from the server\r\n this.subscriptions.push(\r\n this.studentScheduleService.getStudentSchedule(this.viewOption, false, false, false, this.includeDropped, true, false, false).subscribe(schedule => {\r\n this.schedule = schedule;\r\n this.setGridHeader();\r\n for (let i = 0; i < this.schedule.length; i++) {\r\n this.schedule[i] = System.convert(this.schedule[i], new CourseSchedule());\r\n }\r\n this.tableData.data = this.schedule;\r\n if (this.sort) {\r\n this.tableData.sort = this.sort;\r\n }\r\n })\r\n );\r\n }\r\n\r\n getMenuItems(scheduleCourse): string[] {\r\n // POST: returns the menu items for a given schedule course\r\n // Rearranged to be in alphabetical order\r\n const menuItems = [];\r\n menuItems.push('Class Information');\r\n menuItems.push('Course Description');\r\n menuItems.push('Teacher Profile');\r\n return menuItems;\r\n }\r\n\r\n checkColumns() {\r\n // POST: checks the columns for ones that shouldn't be there\r\n\r\n // Team is a V9 only column\r\n if (this.V10 && this.columns.includes('Team')) {\r\n this.columns.splice(this.columns.indexOf('Team'), 1);\r\n } else if (!this.V10 && !this.columns.includes('Team')) {\r\n this.columns.push('Team'); // Team is always on the end\r\n }\r\n\r\n // Entry date and DroppedDate are only there if include dropped\r\n if (this.includeDropped) {\r\n if (!this.columns.includes('EntryDate')) {\r\n this.columns.splice(6, 0, 'EntryDate');\r\n }\r\n if (!this.columns.includes('DroppedDate')) {\r\n this.columns.splice(7, 0, 'DroppedDate');\r\n }\r\n this.minTableWidth = 1000;\r\n } else {\r\n if (this.columns.includes('DroppedDate')) {\r\n this.columns.splice(this.columns.indexOf('DroppedDate'), 1);\r\n }\r\n if (this.columns.includes('EntryDate')) {\r\n this.columns.splice(this.columns.indexOf('EntryDate'), 1);\r\n }\r\n this.minTableWidth = 750;\r\n }\r\n }\r\n\r\n export() {\r\n this.schedule.forEach(schedule => {\r\n schedule['CourseSection'] = schedule.SubjectCode + '-' + schedule.Section;\r\n });\r\n\r\n this.exportService.exportMatGridToExcel(this.schedule, this.columns, 'studentSchedule', ['CourseSection'], ['More']);\r\n }\r\n\r\n getCalendarUseAttendanceTypes() {\r\n if (!this.V10) {\r\n this.sharedService.getCalendarUseAttendanceTypes(0, this.yearService.student360Year.Id, this.studentService.selectedStudent.Id).subscribe(result => {\r\n this.calendarUseAttendanceTypes = result;\r\n this.setGridHeader();\r\n });\r\n }\r\n }\r\n\r\n setGridHeader() {\r\n if (!this.V10) {\r\n if (this.calendarUseAttendanceTypes && this.viewOption == 1) {\r\n this.columns = ['More', 'Meets', 'AttendanceType', 'Term', 'Course', 'Teacher', 'Room', 'EntryDate', 'DroppedDate', 'Team'];\r\n }\r\n else {\r\n this.columns = ['More', 'Meets', 'Term', 'Course', 'Teacher', 'Room', 'EntryDate', 'DroppedDate', 'Team'];\r\n }\r\n }\r\n }\r\n}\r\n","import { CourseSchedule } from './../../shared-components/student/course-schedule.model';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from './../../shared-components/System';\r\nimport { StudentService } from './../../shared-components/student/student.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\n\r\n@Injectable()\r\nexport class StudentScheduleService {\r\n\r\n // Properties\r\n\r\n // Class Functions\r\n constructor (\r\n private http: HttpClient,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService\r\n ) {}\r\n\r\n // Methods\r\n getStudentSchedule(\r\n viewOption: number,\r\n includeAttendance = false,\r\n includeReportCardGards = false,\r\n isProgressGrades = false,\r\n includeDropped = false,\r\n includeWithdrawnStudent = false,\r\n blnIncludeTerms = false,\r\n showAllAttendanceCodes = false\r\n ): Observable {\r\n const queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n '&yearId=' + this.yearService.student360Year.Id +\r\n '&userId=' + this.userService.currentUser.Id +\r\n '&viewOption=' + viewOption +\r\n '&includeAttendance=' + includeAttendance +\r\n '&includeReportCardGrades=' + includeReportCardGards +\r\n '&isProgressGrades=' + isProgressGrades +\r\n '&includeDropped=' + includeDropped +\r\n '&includeWithdrawnStudent=' + includeWithdrawnStudent +\r\n '&blnIncludeTerms=' + blnIncludeTerms +\r\n '&showAllAttendanceCodes=' + showAllAttendanceCodes;\r\n return this.http.get(System.apiURL.Student + 'GetStudentSchedule' + queryString);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\n\r\n@Pipe({\r\n name: 'newAnnouncementsModalFilter'\r\n})\r\nexport class NewAnnouncementsModalFilterPipe implements PipeTransform {\r\n\r\n transform(siteAnnouncement: TylerMatTableDataSource[], school: string): any {\r\n const sitedata = new TylerMatTableDataSource();\r\n const site = siteAnnouncement[0].data.filter(x => x.SchoolName == school);\r\n sitedata[0] = new TylerMatTableDataSource(site);\r\n return sitedata[0];\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-help-menu-modal',\r\n templateUrl: './help-menu-modal.component.html',\r\n styleUrls: ['./help-menu-modal.component.css']\r\n})\r\nexport class HelpMenuModalComponent implements OnInit {\r\n\r\n constructor(private dialogRef: MatDialogRef) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","
\r\n Help\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Hiding/Showing Cards\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n

\r\n The different ares that display information on the Student Summary page are called \"cards\". Cards can be shown in summary view, detailed view, or turned off. (Some cards do not have a summary option based on the type of information they show.)\r\n

\r\n

\r\n The top image on the right shows what the Attendance card looks like in summary view and the bottom example shows it in detailed view.\r\n

\r\n
    \r\n
  • Summary vies show only a limited amount of information, usually just counts or totals, so they take up less space, allowing more cards to be seen at once.
  • \r\n
  • Detailed views show more information, so they take up more space. The height of these cards will adjust based on the content to be displayed.
  • \r\n
\r\n

\r\n When a summary card is being shown, selecting it will display the information that would have been shown on the detailed card, so regardless of which way the card is being shown, the detailed information is easily accessible.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Rearranging the Cards\r\n \r\n \r\n \r\n \r\n \r\n

\r\n The order in which the cards are displayed can be changed by dragging rows up and down in the list.\r\n

\r\n

\r\n The cards display in two columns. The Column Break indicator can be moved up or down to define where the second column begins - rows above the Column Break indicator will show in the first column, rows below it will show in the second column.\r\n

\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n","
\r\n \r\n
\r\n
\r\n
Settings
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Off\r\n
\r\n
\r\n Summary\r\n
\r\n
\r\n Detailed\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Re-Order\"\r\n
\r\n
\r\n {{card.title | translate}}\r\n
\r\n
\r\n
{{card.title | translate}}
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { HelpMenuModalComponent } from '../help-menu-modal/help-menu-modal.component';\r\nimport * as _ from 'lodash';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-settings-menu-modal',\r\n templateUrl: './settings-menu-modal.component.html',\r\n styleUrls: ['./settings-menu-modal.component.css']\r\n})\r\nexport class SettingsMenuModalComponent implements OnInit {\r\n cards: any[] = [];\r\n districtCards: any[] = []; // Cards that the user can not reorder or control the display of\r\n loginSettings: LoginSettings;\r\n constructor(\r\n private dialog: MatDialog,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private matDialogRef: MatDialogRef\r\n ) {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n }\r\n\r\n ngOnInit() {\r\n // We need a deep copy of the object so there are no live updates\r\n this.cards = _.cloneDeep(this.userService.cards);\r\n this.initialSort();\r\n }\r\n\r\n drop(event: CdkDragDrop) {\r\n moveItemInArray(this.cards, event.previousIndex, event.currentIndex);\r\n // re-index the card positions\r\n for (let i = 0; i < this.cards.length; i++) {\r\n this.cards[i].position = i;\r\n }\r\n // check all the card positions relative to the column break\r\n const colBreakIndex = this.cards.findIndex(c => c.title == 'Column Break');\r\n for (let i = 0; i < this.cards.length; i++) {\r\n if (i < colBreakIndex) {\r\n this.cards[i].columnPosition = 'L';\r\n }\r\n if (i > colBreakIndex) {\r\n this.cards[i].columnPosition = 'R';\r\n }\r\n }\r\n }\r\n\r\n helpClick() {\r\n this.dialog.open(HelpMenuModalComponent, { disableClose: true, autoFocus: false, minWidth: '90vw', minHeight: '90vh' });\r\n }\r\n\r\n initialSort() {\r\n // Remove staff only cards\r\n if (this.userService.userType != 1) {\r\n this.cards = this.cards.filter(card => !card.staffOnly);\r\n }\r\n // separate the cards based on column\r\n this.districtCards = this.cards.filter(card => card.showInSettings == false);\r\n this.cards = this.cards.filter(card => card.showInSettings == true);\r\n let cardsLeft = this.cards.filter(card => card.columnPosition == 'L');\r\n let cardsRight = this.cards.filter(card => card.columnPosition == 'R');\r\n // Sort each set\r\n cardsLeft = cardsLeft.sort(function (a, b) {\r\n if (a.position < b.position) {\r\n return -1;\r\n }\r\n if (a.position > b.position) {\r\n return 1;\r\n }\r\n });\r\n cardsRight = cardsRight.sort(function (a, b) {\r\n if (a.position < b.position) {\r\n return -1;\r\n }\r\n if (a.position > b.position) {\r\n return 1;\r\n }\r\n });\r\n // clear the initial array, pass in all the cards\r\n this.cards = [];\r\n for (let i = 0; i < cardsLeft.length; i++) {\r\n this.cards.push(cardsLeft[i]);\r\n }\r\n // Add the column break\r\n this.cards.push({ title: 'Column Break' });\r\n for (let i = 0; i < cardsRight.length; i++) {\r\n this.cards.push(cardsRight[i]);\r\n }\r\n }\r\n\r\n checkColumnName(card) {\r\n if (card.title == 'Column Break' || card.title == '') {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n showDetailedOption(card) {\r\n if (card.hasDetailCard) {\r\n if (card.title == 'Attendance' && this.loginSettings.ViewDailyAttendance)\r\n return false\r\n else\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n selectionChanged(card, event) {\r\n card.display = event.value;\r\n }\r\n\r\n cancelClick() {\r\n this.matDialogRef.close('Canceled');\r\n }\r\n\r\n saveClick() {\r\n this.districtCards.forEach((card) => {\r\n this.cards.push(card);\r\n });\r\n this.userService.cards = this.cards;\r\n this.matDialogRef.close('Saved');\r\n }\r\n\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {CardAnnouncement} from '../card-announcement';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-card-announcement-modal',\r\n templateUrl: './card-announcement-modal.component.html',\r\n styleUrls: ['./card-announcement-modal.component.css']\r\n})\r\nexport class CardAnnouncementModalComponent implements OnInit {\r\n announcement: CardAnnouncement\r\n constructor(private matDialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit() {\r\n this.announcement = this.data;\r\n }\r\n\r\n closeClick() {\r\n this.matDialogRef.close();\r\n }\r\n\r\n transform(content) {\r\n return this.sanitizer.bypassSecurityTrustHtml(content);\r\n}\r\n\r\n}\r\n","
\r\n {{announcement.StartDate | date: 'shortDate'}} - {{announcement.Title}}\r\n
\r\n\r\n
\r\n \r\n
\r\n","\r\n
\r\n
\r\n
\r\n Announcements\r\n
\r\n \r\n {{currentDate}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n No announcements for current date.\r\n
\r\n
0\"\r\n style=\"display: flex; flex-direction: column; flex: 1; overflow: hidden\">\r\n 0\" style=\"margin: 0px;\">\r\n \r\n \r\n \r\n District\r\n ({{districtAnnouncements.length}})\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n NEW - {{da.StartDate | date: 'MM/dd/yy'}} - {{da.Title}}\r\n
\r\n
\r\n \r\n More\r\n
\r\n
\r\n
\r\n
\r\n 0\" style=\"margin: 0px;\">\r\n \r\n \r\n \r\n School ({{schoolAnnouncements.length}}\r\n )\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n NEW - {{sa.StartDate | date: 'MM/dd/yy'}} - {{sa.Title}}\r\n
\r\n
\r\n
\r\n More\r\n
\r\n
\r\n
\r\n
\r\n 0\" style=\"margin: 0px;\">\r\n \r\n \r\n \r\n Class ({{classAnnouncements.length}})\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n NEW - {{ca.StartDate | date: 'MM/dd/yy'}} - {{ca.Title}}\r\n
\r\n
\r\n
\r\n More\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n \r\n
\r\n","import {\r\n ChangeDetectorRef,\r\n Component, ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit, QueryList, ViewChildren\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport * as moment from 'moment';\r\nimport { UserService } from '../../../../../shared-components/user/user.service';\r\nimport { StudentSummaryService } from '../../../student-summary.service';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { CardAnnouncement } from './card-announcement';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CardAnnouncementModalComponent } from './card-announcement-modal/card-announcement-modal.component';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { interval } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-announcement-card',\r\n templateUrl: './announcement-card.component.html',\r\n styleUrls: ['./announcement-card.component.css']\r\n})\r\n\r\nexport class AnnouncementCardComponent implements OnInit, OnDestroy {\r\n @ViewChildren('textArea') textAreas: QueryList;\r\n @Input() data: any;\r\n card: Card;\r\n currentDate: any;\r\n announcements: CardAnnouncement[] = [];\r\n districtAnnouncements: CardAnnouncement[] = [];\r\n schoolAnnouncements: CardAnnouncement[] = [];\r\n classAnnouncements: CardAnnouncement[] = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef, private matDialog: MatDialog, private router: Router, private userService: UserService, private yearService: YearService, private studentSummaryService: StudentSummaryService, private studentService: StudentService, private sanitizer: DomSanitizer) {\r\n this.currentDate = moment().format('MM/DD/YY');\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getAnnouncements();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n viewDetailsClick() {\r\n this.router.navigateByUrl('/student360/announcements');\r\n }\r\n\r\n checkOverflow(element) {\r\n if (element.offsetHeight < element.scrollHeight ||\r\n element.offsetWidth < element.scrollWidth) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n moreClick(announcement: CardAnnouncement) {\r\n this.matDialog.open(CardAnnouncementModalComponent, {\r\n data: announcement,\r\n disableClose: true,\r\n autoFocus: false,\r\n minWidth: '500px',\r\n maxWidth: '700px',\r\n maxHeight: '400px',\r\n minHeight: '300px'\r\n });\r\n }\r\n\r\n hasNewAnnouncements(announcements: CardAnnouncement[]) {\r\n const newAnnouncements = announcements.filter(a => a.IsNewSinceLastLogin == 1);\r\n if (newAnnouncements.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n isDisabled() {\r\n if (this.card.disabled) {\r\n return 'disabledColor';\r\n } else {\r\n return 'enabledColor';\r\n }\r\n }\r\n\r\n getAnnouncements() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardAnnouncements(this.studentService.selectedStudent.Id, this.userService.currentUser.Id, schoolId, this.userService.userType, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response.ok) {\r\n let idx = 0;\r\n this.announcements = response.body;\r\n this.districtAnnouncements = this.announcements.filter(a => a.AnnouncementType == 'District');\r\n this.schoolAnnouncements = this.announcements.filter(a => a.AnnouncementType == 'School');\r\n this.classAnnouncements = this.announcements.filter(a => a.AnnouncementType == 'Class');\r\n this.classAnnouncements.forEach(element => {\r\n if (element.Announcement.indexOf('') == -1 || element.Announcement.startsWith('') == false) {\r\n element.Announcement = '' + element.Announcement + ''\r\n }\r\n });\r\n setTimeout(() => {\r\n this.districtAnnouncements.forEach((announcement) => {\r\n const ta = this.textAreas.toArray()[idx];\r\n if (ta != undefined) {\r\n announcement.Overflow = this.checkOverflow(ta.nativeElement);\r\n idx++;\r\n }\r\n });\r\n this.schoolAnnouncements.forEach((announcement) => {\r\n const ta = this.textAreas.toArray()[idx];\r\n if (ta != undefined) {\r\n announcement.Overflow = this.checkOverflow(ta.nativeElement);\r\n idx++;\r\n }\r\n });\r\n this.classAnnouncements.forEach((announcement) => {\r\n const ta = this.textAreas.toArray()[idx];\r\n if (ta != undefined) {\r\n announcement.Overflow = this.checkOverflow(ta.nativeElement);\r\n idx++;\r\n }\r\n });\r\n }, 0);\r\n }\r\n });\r\n }\r\n\r\n transform(content) {\r\n return this.sanitizer.bypassSecurityTrustHtml(content);\r\n }\r\n\r\n}\r\n","export class CardAttendance {\r\n Class: string;\r\n DaysPresent: number;\r\n HoursPresent: number;\r\n IsTotalRow: boolean;\r\n Marked: string;\r\n Meets: string;\r\n TodaysAbsences: number;\r\n TodaysTardies: number;\r\n TotalAbsences: number;\r\n TotalDays: number;\r\n TotalHours: number;\r\n TotalTardies: number;\r\n DailyAttendanceStatus: string;\r\n}","
\r\n
\r\n
\r\n Attendance\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
Today
\r\n\r\n
No tardies or absences today
\r\n\r\n
No attendance data for today
\r\n\r\n
\r\n 0\" mat-table [dataSource]=\"studentAttendance\" style=\"width: 100%\">\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Class {{attendanceRecord.Class}} Meets Marked {{attendanceRecord.Marked}}
\r\n
\r\n Year-To-Date\r\n
\r\n
\r\n
\r\n
\r\n {{DaysPresent |number:'2.2-2'}} of {{TotalDays |number:'2.2-2'}} Days\r\n ({{((DaysPresent/TotalDays)*100)|number:'2.2-2'}} %)\r\n
\r\n
\r\n {{HoursPresent |number:'2.2-2'}} of {{TotalHours |number:'2.2-2'}} Hours\r\n ({{((HoursPresent/TotalHours)*100)|number:'2.2-2'}} %)\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { CardAttendance } from '../card-attendance';\r\nimport { Router } from '@angular/router';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginService } from '../../../../../../shared-modules/login/login.service';\r\n@Component({\r\n selector: 'app-attendance-card-modal',\r\n templateUrl: './attendance-card-modal.component.html',\r\n styleUrls: ['./attendance-card-modal.component.css']\r\n})\r\nexport class AttendanceCardModalComponent implements OnInit {\r\n studentAttendance: CardAttendance[] = [];\r\n displayedColumns: string[] = ['Class', 'Meets', 'Marked'];\r\n yearToDateTardyCount = 0;\r\n yearToDateAbsentCount = 0;\r\n DaysPresent = 0;\r\n TotalDays = 0;\r\n HoursPresent = 0;\r\n TotalHours = 0;\r\n dailyAttendance: boolean = false;\r\n v10: boolean;\r\n constructor(@Inject(MAT_DIALOG_DATA) public data: any, private router: Router, private dialogRef: MatDialogRef, private loginService: LoginService) { }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.dailyAttendance = this.loginService.LoginSettings.ViewDailyAttendance;\r\n this.studentAttendance = this.data.studentAttendance;\r\n this.yearToDateAbsentCount = this.data.totalAbsences;\r\n this.yearToDateTardyCount = this.data.totalTardies;\r\n if (!this.v10) {\r\n this.DaysPresent = this.data.DaysPresent;\r\n this.TotalDays = this.data.TotalDays;\r\n this.HoursPresent = this.data.HoursPresent;\r\n this.TotalHours = this.data.TotalHours;\r\n }\r\n }\r\n\r\n viewAllClick() {\r\n this.router.navigateByUrl('/student360/attendance');\r\n this.dialogRef.close();\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n Today's Attendance\r\n\r\n
\r\n
\r\n
\r\n {{todaysTardyCount}}\r\n
\r\n
\r\n Tardy\r\n
\r\n
\r\n
\r\n
\r\n {{todaysAbsentCount}}\r\n
\r\n
\r\n Absent\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Absent\r\n Present\r\n No attendance data for today\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n Attendance\r\n
\r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n Attendance\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Today\r\n
\r\n
\r\n No tardies or absences today\r\n
\r\n
\r\n 0\" mat-table [dataSource]=\"studentAttendance\" style=\"width: 100%\">\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Class {{attendanceRecord.Class}}MeetsMarked\r\n {{attendanceRecord.Marked}}
\r\n
\r\n Year-To-Date\r\n
\r\n
\r\n
\r\n
\r\n {{DaysPresent |number:'2.2-2'}} of {{TotalDays |number:'2.2-2'}} Days\r\n ({{((DaysPresent/TotalDays)*100)|number:'2.2-2'}} %)\r\n
\r\n
\r\n {{HoursPresent |number:'2.2-2'}} of {{TotalHours |number:'2.2-2'}} Hours\r\n ({{((HoursPresent/TotalHours)*100)|number:'2.2-2'}} %)\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { StudentSummaryService } from '../../../student-summary.service';\r\nimport { CardAttendance } from './card-attendance';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AttendanceCardModalComponent } from './attendance-card-modal/attendance-card-modal.component';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { LoginService } from '../../../../../shared-modules/login/login.service';\r\nimport { interval } from 'rxjs';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-attendance-card',\r\n templateUrl: './attendance-card.component.html',\r\n styleUrls: ['./attendance-card.component.css']\r\n})\r\n\r\nexport class AttendanceCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n card: Card;\r\n studentAttendance: CardAttendance[] = [];\r\n attendanceTotals: CardAttendance;\r\n displayedColumns: string[] = ['Class', 'Meets', 'Marked'];\r\n todaysTardyCount = 0;\r\n todaysAbsentCount = 0;\r\n yearToDateTardyCount = 0;\r\n yearToDateAbsentCount = 0;\r\n DaysPresent = 0;\r\n TotalDays = 0;\r\n HoursPresent = 0;\r\n TotalHours = 0;\r\n v10: boolean;\r\n dailyAttendance: boolean;\r\n dailyAttendanceStatus: string;\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private router: Router,\r\n private studentService: StudentService,\r\n private studentSummaryService: StudentSummaryService,\r\n private yearService: YearService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.dailyAttendance = this.loginService.LoginSettings.ViewDailyAttendance;\r\n this.card = this.data;\r\n if (this.card.display == 'Detail' && this.loginService.LoginSettings.ViewDailyAttendance)\r\n this.card.display = 'Summary';\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getAttendance();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getAttendance() {\r\n // Clear all the fields\r\n this.yearToDateTardyCount = 0;\r\n this.yearToDateAbsentCount = 0;\r\n this.todaysAbsentCount = 0;\r\n this.todaysTardyCount = 0;\r\n // Reset the student attendance objects\r\n this.studentAttendance = [];\r\n this.attendanceTotals = new CardAttendance();\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardAttendance(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response.ok) {\r\n this.studentAttendance = response.body;\r\n // Extract total row\r\n this.attendanceTotals = this.studentAttendance.find(a => a.Class == 'Total Row');\r\n this.todaysTardyCount = this.attendanceTotals.TodaysTardies;\r\n this.todaysAbsentCount = this.attendanceTotals.TodaysAbsences;\r\n this.yearToDateAbsentCount = this.attendanceTotals.TotalAbsences;\r\n this.yearToDateTardyCount = this.attendanceTotals.TotalTardies;\r\n this.DaysPresent = this.attendanceTotals.DaysPresent;\r\n this.TotalDays = this.attendanceTotals.TotalDays;\r\n this.HoursPresent = this.attendanceTotals.HoursPresent;\r\n this.TotalHours = this.attendanceTotals.TotalHours;\r\n // Remove the total row from student attendance\r\n this.studentAttendance = this.studentAttendance.filter(a => a.Class !== 'Total Row');\r\n this.dailyAttendanceStatus = this.attendanceTotals.DailyAttendanceStatus;\r\n // Mock some data\r\n // this.mockData();\r\n }\r\n });\r\n }\r\n\r\n cardClick() {\r\n // open the detailed version of the attendance card in a modal window\r\n if (!this.card.disabled) {\r\n this.dialog.open(AttendanceCardModalComponent, {\r\n minWidth: '40vw',\r\n data: {\r\n studentAttendance: this.studentAttendance,\r\n totalTardies: this.yearToDateTardyCount,\r\n totalAbsences: this.yearToDateAbsentCount,\r\n DaysPresent: this.DaysPresent,\r\n TotalDays: this.TotalDays,\r\n HoursPresent: this.HoursPresent,\r\n TotalHours: this.TotalHours\r\n },\r\n disableClose: true,\r\n autoFocus: false\r\n });\r\n }\r\n }\r\n\r\n isDisabled() {\r\n if (this.card.disabled) {\r\n return 'disabledColor';\r\n } else {\r\n return 'enabledColor';\r\n }\r\n }\r\n\r\n mockData() {\r\n // used to add mock data to the attendance card\r\n const c1 = new CardAttendance();\r\n c1.Class = 'English Lit 1';\r\n c1.Meets = 'P01';\r\n c1.Marked = 'Tardy';\r\n this.studentAttendance.push(c1);\r\n const c2 = new CardAttendance();\r\n c2.Class = 'Biology 1';\r\n c2.Meets = 'P05';\r\n c2.Marked = 'Tardy';\r\n this.studentAttendance.push(c2);\r\n const c3 = new CardAttendance();\r\n c3.Class = 'Intro to Computer Science';\r\n c3.Meets = 'P06';\r\n c3.Marked = 'Absent';\r\n this.studentAttendance.push(c3);\r\n }\r\n\r\n viewAllClick() {\r\n this.router.navigateByUrl('/student360/attendance');\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Assignments\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n 0\" mat-table [dataSource]=\"assignments\" style=\"width: 100%; padding-bottom: 5px;\">\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Due {{assignment.Due}} Class {{assignment.Class}} Assignment {{assignment.AssignmentName}}
\r\n
\r\n
\r\n
\r\n No missing assignments in the last 30 days.\r\n
\r\n
\r\n No assignments due today or tomorrow.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {CardAssignment} from '../card-assignment';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-assignments-card-modal',\r\n templateUrl: './assignments-card-modal.component.html',\r\n styleUrls: ['./assignments-card-modal.component.css']\r\n})\r\nexport class AssignmentsCardModalComponent implements OnInit {\r\n\r\n assignments: CardAssignment[] = [];\r\n displayedColumns: string[] = ['Due', 'Class', 'Assignment'];\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) public data: any, private router: Router, private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.assignments = this.data.assignments;\r\n }\r\n\r\n viewAllClick() {\r\n this.router.navigateByUrl('/student360/assignments');\r\n this.dialogRef.close();\r\n }\r\n\r\n checkIfMissing(assignment: CardAssignment) {\r\n // If missing return the isMissing class\r\n if (assignment.IsMissing) {\r\n return 'isMissing';\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n Assignments\r\n
\r\n
\r\n
\r\n
\r\n {{missingCount}}\r\n
\r\n
\r\n
Missing in
Last 30 Days
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{dueTodayCount}}\r\n
\r\n
\r\n Due Today\r\n
\r\n
\r\n
\r\n
\r\n {{dueTomorrowCount}}\r\n
\r\n
\r\n Due Tomorrow\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Assignments\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 0\" mat-table [dataSource]=\"assignments\" style=\"width: 100%\">\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Due {{assignment.Due}} Class {{assignment.Class}} Assignment {{assignment.AssignmentName}}
\r\n
\r\n
\r\n No missing assignments in the last 30 days.\r\n
\r\n
\r\n No assignments due today or tomorrow.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { StudentSummaryService } from '../../../student-summary.service';\r\nimport { UserService } from '../../../../../shared-components/user/user.service';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { CardAssignment } from './card-assignment';\r\nimport * as moment from 'moment';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AssignmentsCardModalComponent } from './assignments-card-modal/assignments-card-modal.component';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { interval } from 'rxjs';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-assignments-card',\r\n templateUrl: './assignments-card.component.html',\r\n styleUrls: ['./assignments-card.component.css']\r\n})\r\n\r\nexport class AssignmentsCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n card: Card;\r\n missingCount = 0;\r\n dueTodayCount = 0;\r\n dueTomorrowCount = 0;\r\n assignments: CardAssignment[] = [];\r\n displayedColumns: string[] = ['Due', 'Class', 'Assignment'];\r\n\r\n constructor(private dialog: MatDialog, private router: Router, private studentService: StudentService, private studentSummaryService: StudentSummaryService, private userService: UserService, private yearService: YearService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getAssignments();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n checkIfMissing(assignment: CardAssignment) {\r\n // If missing return the isMissing class\r\n if (assignment.IsMissing) {\r\n return 'isMissing';\r\n }\r\n }\r\n\r\n viewAllClick() {\r\n this.router.navigate(['/student360/assignments']);\r\n }\r\n\r\n getAssignments() {\r\n this.assignments = [];\r\n this.missingCount = 0;\r\n this.dueTomorrowCount = 0;\r\n this.dueTodayCount = 0;\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardAssignments(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe(response => {\r\n response.body.forEach((a) => {\r\n this.assignments.push(a);\r\n });\r\n // Check if the assignment is missing\r\n this.assignments.forEach((a) => {\r\n if (a.IsMissing) {\r\n // Swap the Due with DueDate and format\r\n a.Due = moment(a.DueDate).format('MM/DD/YY').toString();\r\n }\r\n });\r\n // Get the assignment Counts\r\n if (this.assignments.length > 0) {\r\n this.missingCount = this.assignments[0].MissingCount;\r\n this.dueTodayCount = this.assignments[0].DueTodayCount;\r\n this.dueTomorrowCount = this.assignments[0].DueTomorrowCount;\r\n }\r\n });\r\n }\r\n\r\n isDisabled() {\r\n if (this.card.disabled) {\r\n return 'disabledColor';\r\n } else {\r\n return 'enabledColor';\r\n }\r\n }\r\n\r\n cardClick() {\r\n if (!this.card.disabled) {\r\n this.dialog.open(AssignmentsCardModalComponent, {\r\n minWidth: '45vw',\r\n data: { assignments: this.assignments },\r\n disableClose: true,\r\n autoFocus: false\r\n });\r\n }\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Current Grades\r\n
\r\n
\r\n {{currentTerm | translate}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n No current grades available\r\n
\r\n
0\">\r\n \r\n\r\n \r\n \r\n Grade \r\n \r\n \r\n
{{gradeDisplayString(gradeRecord)}}
\r\n
\r\n
\r\n\r\n \r\n \r\n Course Name\r\n {{gradeRecord.CourseName}} \r\n \r\n\r\n \r\n \r\n \r\n \r\n 0\" style=\"height: 20px\" src=\"./assets/images/warning_icon.png\"/>\r\n \r\n \r\n\r\n \r\n \r\n YTD
Trdy
\r\n \r\n
0\">{{gradeRecord.TardyYTD}}
\r\n
\r\n
\r\n\r\n \r\n \r\n YTD
Abs
\r\n \r\n
0\">{{gradeRecord.AbsentYTD}}
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n Grade Status\r\n
\r\n
\r\n {{gradeRecord.GradeStatus | translate}}\r\n
\r\n
\r\n \r\n
\r\n
0\" style=\"text-align: center;;\">\r\n {{gradeRecord.MissingAssignmentsCount}} Missing\r\n
in Last 30 Days
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { StudentSummaryService } from '../../../student-summary.service';\r\nimport { CardStudentGrades } from './card-student-grades';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { interval, Subscription } from 'rxjs';\r\nimport { LoginService } from '../../../../../shared-modules/login/login.service';\r\nimport { AssignmentService } from '../../../../assignment/assignment.service';\r\nimport { CourseSchedule } from '../../../../../shared-components/student/course-schedule.model';\r\nimport { Student360Service } from '../../../../student360.service';\r\nimport { Classroom360Service } from '../../../../../classroom360/classroom360.service';\r\nimport { UserService } from '../../../../../shared-components/user/user.service';\r\nimport { TylerMatTableDataSource } from '../../../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../../../shared-components/angular-material/mat-animations';\r\nimport { LoginSettings } from '../../../../../shared-modules/login/LoginSetting.model';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-current-grades-card',\r\n templateUrl: './current-grades-card.component.html',\r\n styleUrls: ['./current-grades-card.component.css'],\r\n // Animation for when the detail row is expanded or collapsed\r\n animations: [detailExpand]\r\n})\r\n\r\nexport class CurrentGradesCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n card: Card;\r\n studentGrades: CardStudentGrades[] = [];\r\n currentTerm: string;\r\n gradingPeriodId = 0;\r\n v10: boolean;\r\n loginSettings: LoginSettings;\r\n selectedCourse = new CourseSchedule();\r\n parentPortalSubscription: Subscription;\r\n staffAssignedPortalsSubscription: Subscription;\r\n showAssignmentLink = false;\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n displayedColumns: string[] = ['grade', 'courseName', 'warning', 'tardy', 'absent', 'more'];\r\n colsLength = 4;\r\n\r\n constructor(private yearService: YearService,\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private studentSummaryService: StudentSummaryService,\r\n private loginService: LoginService,\r\n private assignmentService: AssignmentService,\r\n private parentPortalService: Student360Service,\r\n private classroom360Service: Classroom360Service,\r\n private router: Router\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n if (this.loginService.LoginSettings.ViewDailyAttendance)\r\n this.displayedColumns = this.displayedColumns.filter(c => c != 'tardy' && c != 'absent');\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n if (this.v10) {\r\n this.getGradingPeriodDetails();\r\n } else {\r\n this.getCurrentGrades();\r\n }\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n this.getPortalInfo();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n viewAllGradesClick() {\r\n this.router.navigateByUrl('/student360/reportCardGrades');\r\n }\r\n\r\n assignmentClick(studentGrades: CardStudentGrades) {\r\n this.assignmentService.selectedGP = studentGrades.TermName;\r\n this.assignmentService.selectedSectionId = studentGrades.Section_ID;\r\n this.assignmentService.selectedCoursebyCard = studentGrades.CourseName;\r\n this.assignmentService.filterbyCard = true;\r\n this.selectedCourse.Course = studentGrades.CourseName;\r\n this.selectedCourse.Id = studentGrades.Course_ID;\r\n this.assignmentService.selectedCourse = this.selectedCourse;\r\n this.assignmentService.selectedCourseSection = studentGrades.CourseNumber;\r\n this.router.navigateByUrl('/student360/assignments');\r\n }\r\n\r\n standardsClick(gradeRecord: CardStudentGrades) {\r\n this.studentService.selectionIndex = 1;\r\n this.studentService.StandradTabByCurrentGrade = true;\r\n // V9 ONE-6156\r\n if (!this.v10) {\r\n this.studentService.selectedCardCourse = gradeRecord;\r\n }\r\n this.router.navigateByUrl('/student360/reportCardGrades');\r\n }\r\n\r\n isDisabled() {\r\n if (this.card.disabled) {\r\n return 'disabledColor';\r\n } else {\r\n return 'enabledColor';\r\n }\r\n }\r\n\r\n getGradingPeriodDetails() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getGradingPeriodDetails(schoolId, this.yearService.student360Year.AYIdentifier).subscribe(response => {\r\n if (response.ok) {\r\n if (response.body.length > 0) {\r\n this.currentTerm = response.body[0].Name;\r\n this.gradingPeriodId = response.body[0].GradingPeriod_ID;\r\n } else {\r\n this.currentTerm = 'No Grading Period';\r\n }\r\n this.getCurrentGrades();\r\n }\r\n });\r\n }\r\n\r\n getCurrentGrades() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentGrades(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.gradingPeriodId, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response.ok) {\r\n if (!this.v10) {\r\n if (response.body.length > 0) {\r\n this.currentTerm = response.body[0].TermName;\r\n } else {\r\n this.currentTerm = 'No Grading Period';\r\n }\r\n }\r\n this.studentGrades = response.body;\r\n this.angularMatData.data = this.studentGrades;\r\n }\r\n });\r\n }\r\n\r\n getPortalInfo() {\r\n if (this.userService.userType == 1) {\r\n this.staffAssignedPortalsSubscription = this.classroom360Service.observableStaffAssignedPortalsStream$.subscribe(portal => {\r\n if (portal.filter(x => x.PortalName == 'Assignments' && x.Disabled == false) != null\r\n && portal.filter(x => x.PortalName == 'Assignments' && x.Disabled == false).length > 0) {\r\n this.showAssignmentLink = true;\r\n }\r\n });\r\n } else {\r\n this.parentPortalSubscription = this.parentPortalService.observableParentAssignedPortalsStream$.subscribe(portal => {\r\n if (portal.filter(x => x.PortalName == 'Assignments' && x.Disabled == false) != null\r\n && portal.filter(x => x.PortalName == 'Assignments' && x.Disabled == false).length > 0) {\r\n this.showAssignmentLink = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n gradeDisplayString(gradeRecord: any) {\r\n // A Score of -1 means there is no Score available\r\n // A Grade of '' means there is no Grade available\r\n // If there is only a grade\r\n if (gradeRecord.Score == -1 && gradeRecord.Grade != '') {\r\n return gradeRecord.Grade;\r\n }\r\n // If there is only a Score\r\n if (gradeRecord.Score != -1 && gradeRecord.Grade == '') {\r\n if (this.v10) {\r\n return gradeRecord.Score;\r\n } else {\r\n return gradeRecord.Score + '%';\r\n }\r\n }\r\n // If there is a score and a grade\r\n if (gradeRecord.Score != -1 && gradeRecord.Grade != '') {\r\n if (this.v10) {\r\n return gradeRecord.Score + ' ' + '(' + gradeRecord.Grade + ')';\r\n } else {\r\n return gradeRecord.Score + '% ' + '(' + gradeRecord.Grade + ')';\r\n }\r\n }\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n // These methods are used to allow calls to the TylerMatTableDataSource methods from the html\r\n toggleExpanded(row: any) {\r\n // Toggles row between expanded and collapsed\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n // Return true if expanded and false if collapsed\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n // Expand or collapse all rows\r\n // true => expand all false => collapse all\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Links\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n No district links available.\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {Student360Service} from '../../../../student360.service';\r\nimport {Portal} from '../../../../../shared-components/portal.model';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport * as _ from 'lodash';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-district-defined-links-card',\r\n templateUrl: './district-defined-links-card.component.html',\r\n styleUrls: ['./district-defined-links-card.component.css']\r\n})\r\n\r\nexport class DistrictDefinedLinksCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n linkTiles: Portal[] = [];\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n userIsStaff = false;\r\n\r\n constructor(private student360Service: Student360Service, private userService: UserService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n this.student360Service.observableParentAssignedPortalsStream$.subscribe(response => {\r\n this.linkTiles = response.filter(p => p.IsMyLinksTile == true);\r\n });\r\n // A staff person should not see this card\r\n this.userIsStaff = this.userService.userType == 1;\r\n // Sometimes the view will be re-rendered without the portals changing\r\n if (this.linkTiles.length <= 0) {\r\n if (this.student360Service.parentAssignedPortals) {\r\n this.linkTiles = _.cloneDeep(this.student360Service.parentAssignedPortals.filter(p => p.IsMyLinksTile == true));\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n hasImage(link: Portal) {\r\n if (link.TileImageFile) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n linkTileClick(link: Portal) {\r\n if (link.OpenInNewWindow) {\r\n window.open(link.PortalDescription, '_blank');\r\n } else {\r\n window.open(link.PortalDescription);\r\n }\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n Fees & Billing\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n Code\r\n {{entry.Code}} \r\n Description\r\n {{entry.Description}} \r\n Balance\r\n {{numberWithCommas(entry.Balance.toFixed(2))}}\r\n
\r\n
Total 
\r\n {{totalString | translate}}
\r\n \r\n
{{entry.DueorCredit | translate}} {{creditOrDue | translate}}
\r\n
{{totalString}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {CardAssignment} from '../../assignments-card/card-assignment';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {Router, NavigationExtras} from '@angular/router';\r\nimport {Card} from '../../../../card-container/card/card';\r\nimport {CardFeesAndBilling} from '../card-fees-and-billing';\r\nimport {LoginService} from '../../../../../../shared-modules/login/login.service';\r\nimport {UserService} from '../../../../../../shared-components/user/user.service';\r\nimport {OnlinePaymentConfiguration} from '../../../../../online-payment/models/online-payment-config.model';\r\n\r\n@Component({\r\n selector: 'app-fees-and-billing-card-modal',\r\n templateUrl: './fees-and-billing-card-modal.component.html',\r\n styleUrls: ['./fees-and-billing-card-modal.component.css']\r\n})\r\nexport class FeesAndBillingCardModalComponent implements OnInit {\r\n card: Card;\r\n v10: boolean;\r\n totalString = '';\r\n feesLedger: CardFeesAndBilling[] = [];\r\n displayedColumns: string[] = ['Code', 'Description', 'Balance', 'CreditOrDue'];\r\n onlinePaymentConfiguration: OnlinePaymentConfiguration = new OnlinePaymentConfiguration();\r\n userType: number;\r\n showPay = false;\r\n creditOrDue: string;\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.userType = this.userService.userType;\r\n this.showPay = this.data.showPay;\r\n this.feesLedger = this.data.feesLedger;\r\n this.totalString = this.data.totalString;\r\n this.creditOrDue = this.feesLedger[0].TotalBalanceCreditOrDue;\r\n }\r\n\r\n viewDetailsClick() {\r\n this.router.navigateByUrl('/student360/feesAndBilling');\r\n this.dialogRef.close();\r\n }\r\n\r\n checkIfMissing(assignment: CardAssignment) {\r\n // If missing return the isMissing class\r\n if (assignment.IsMissing) {\r\n return 'isMissing';\r\n }\r\n }\r\n\r\n numberWithCommas(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n checkTotalString(totalString: string) {\r\n if (this.creditOrDue.includes('Due')) {\r\n return 'redText';\r\n }\r\n if (totalString == 'No fees owed for this student.') {\r\n return 'smallSummaryText';\r\n }\r\n if (this.creditOrDue.includes('Credit')) {\r\n return 'blackText';\r\n }\r\n }\r\n\r\n checkIfBalance() {\r\n if (this.totalString == 'No fees owed for this student.') {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n payClick() {\r\n const navigationExtras: NavigationExtras = {\r\n // The view to Fee & Billing Accounts\r\n queryParams: {\r\n 'selectedView': 1\r\n }\r\n };\r\n this.router.navigate(['/student360/onlinePayment'], navigationExtras);\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n Fees & Billing\r\n
\r\n
\r\n
\r\n {{totalString | translate}}{{creditOrDue | translate}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage | translate}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Fees & Billing\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
Code {{entry.Code}} Description {{entry.Description}} Balance {{numberWithCommas(entry.Balance.toFixed(2))}}\r\n
\r\n
Total
\r\n
{{totalString | translate}}
\r\n
\r\n
{{entry.DueorCredit | translate}} {{creditOrDue | translate}}
\r\n
{{totalString | translate}}
\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage | translate}}\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {Router, NavigationExtras} from '@angular/router';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {LoginService} from '../../../../../shared-modules/login/login.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport * as _ from 'lodash';\r\nimport {CardFeesAndBilling} from './card-fees-and-billing';\r\nimport {FeesAndBillingCardModalComponent} from './fees-and-billing-card-modal/fees-and-billing-card-modal.component';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {OnlinePaymentConfiguration} from '../../../../online-payment/models/online-payment-config.model';\r\nimport {Year} from '../../../../../shared-components/year/year.model';\r\nimport { Student360Service } from '../../../../student360.service';\r\nimport { Portal } from '../../../../../shared-components/portal.model';\r\nimport { marker } from '@biesbjerg/ngx-translate-extract-marker';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-fees-billing-card',\r\n templateUrl: './fees-billing-card.component.html',\r\n styleUrls: ['./fees-billing-card.component.css']\r\n})\r\n\r\nexport class FeesBillingCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n card: Card;\r\n v10: boolean;\r\n totalString = '';\r\n creditOrDue = '';\r\n feesLedger: CardFeesAndBilling[] = [];\r\n displayedColumns: string[] = ['Code', 'Description', 'Balance', 'CreditOrDue'];\r\n onlinePaymentConfiguration: OnlinePaymentConfiguration = new OnlinePaymentConfiguration();\r\n userType: number;\r\n parentPortalShowOnlinePayment: boolean;\r\n student360Year: Year;\r\n StudentFinesAndFeesOnlinePayment: boolean;\r\n onlinePaymentConfigurationSubscription: Subscription;\r\n showPay = false;\r\n parentAssignedPortalsSubscription: Subscription;\r\n portals: Portal[] = [];\r\n\r\n constructor(private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private studentService: StudentService,\r\n private studentSummaryService: StudentSummaryService,\r\n private parentPortalService: Student360Service,\r\n private router: Router) {\r\n this.studentService.observableOnlinePaymentConfigurationStream$.subscribe(onlinePaymentConfiguration => {\r\n if (onlinePaymentConfiguration) {\r\n this.onlinePaymentConfiguration = onlinePaymentConfiguration;\r\n }\r\n });\r\n\r\n this.parentAssignedPortalsSubscription = this.parentPortalService.observableParentAssignedPortalsStream$\r\n .subscribe(portals => {\r\n if (portals.length > 0) {\r\n this.portals = portals.filter(portal => !portal.Deleted);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.card = this.data;\r\n this.onlinePaymentConfiguration = this.studentService.onlinePaymentConfiguration;\r\n this.parentPortalShowOnlinePayment = this.loginService.LoginSettings.ParentPortalShowOnlinePayment;\r\n this.userType = this.userService.userType;\r\n this.student360Year = this.yearService.student360Year;\r\n if (!this.v10 && this.userType == 2 && this.portals.filter(o => o.PortalName == \"Online Payment\" && o.Disabled == false && o.ShowAsMenu == true && o.Deleted == false).length > 0) {\r\n this.showPay = true;\r\n }\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.gettFeesBalance();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n gettFeesBalance() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardFeesAndBilling(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response.ok) {\r\n this.feesLedger = _.cloneDeep(response.body);\r\n // this.mockData();\r\n // Get the total string\r\n if (this.feesLedger.length > 0) {\r\n if (this.feesLedger[0].Code == 'No Balance') {\r\n this.totalString = marker('No fees owed for this student.').toString();\r\n } else {\r\n this.creditOrDue = this.feesLedger[0].TotalBalanceCreditOrDue;\r\n this.totalString = '$' + this.numberWithCommas(this.feesLedger[0].TotalBalance.toFixed(2));\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n numberWithCommas(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n checkTotalString(totalString: string) {\r\n if (this.creditOrDue.includes('Due')) {\r\n return 'redText';\r\n }\r\n if (totalString == 'No fees owed for this student.') {\r\n return 'smallSummaryText';\r\n }\r\n if (this.creditOrDue.includes('Credit')) {\r\n return 'blackText';\r\n }\r\n }\r\n\r\n checkIfBalance() {\r\n if (this.totalString == 'No fees owed for this student.') {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n mockData() {\r\n // Clear the array to make room for some awesome mock data!\r\n this.feesLedger.length = 0;\r\n const fb1 = {} as CardFeesAndBilling;\r\n fb1.Code = 'ARTS';\r\n fb1.Description = 'Art Supplies';\r\n fb1.Balance = 3000;\r\n // DueorCredit can be Due, Credit or NB (no balance)\r\n fb1.DueorCredit = 'Due';\r\n fb1.TotalBalance = 70.70;\r\n fb1.TotalBalanceCreditOrDue = 'Due';\r\n this.feesLedger.push(fb1);\r\n const fb2 = {} as CardFeesAndBilling;\r\n fb2.Code = 'LIBR';\r\n fb2.Description = 'Library';\r\n fb2.Balance = 4.30;\r\n // DueorCredit can be Due, Credit or NB (no balance)\r\n fb2.DueorCredit = 'Credit';\r\n fb2.TotalBalance = 70.70;\r\n fb2.TotalBalanceCreditOrDue = 'Due';\r\n this.feesLedger.push(fb2);\r\n const fb3 = {} as CardFeesAndBilling;\r\n fb3.Code = 'TEXT';\r\n fb3.Description = 'Textbook';\r\n fb3.Balance = 50.00;\r\n // DueorCredit can be Due, Credit or NB (no balance)\r\n fb3.DueorCredit = 'Due';\r\n fb3.TotalBalance = 70.70;\r\n fb3.TotalBalanceCreditOrDue = 'Due';\r\n this.feesLedger.push(fb3);\r\n }\r\n\r\n viewDetailsClick() {\r\n if (!this.card.disabled) {\r\n this.router.navigateByUrl('/student360/feesAndBilling');\r\n }\r\n }\r\n\r\n isDisabled() {\r\n if (this.card.disabled) {\r\n return 'disabledColor';\r\n } else {\r\n return 'enabledColor';\r\n }\r\n }\r\n\r\n cardClick() {\r\n if (!this.card.disabled) {\r\n this.dialog.open(FeesAndBillingCardModalComponent, {\r\n minWidth: '40vw',\r\n maxHeight: '80vh',\r\n data: {\r\n feesLedger: this.feesLedger, totalString: this.totalString,\r\n showPay: this.showPay,\r\n },\r\n disableClose: true,\r\n autoFocus: false\r\n });\r\n }\r\n }\r\n\r\n payClick() {\r\n const navigationExtras: NavigationExtras = {\r\n // The view to Fee & Billing Accounts\r\n queryParams: {\r\n 'selectedView': 1\r\n }\r\n };\r\n this.router.navigate(['/student360/onlinePayment'], navigationExtras);\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Meal Service Balance\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n 0\">\r\n
\r\n
Rollover Balance
\r\n
{{rolloverBalance | number: '1.2'}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Deposits
\r\n
{{deposits | number: '1.2'}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Charges
\r\n
{{charges | number: '1.2'}}
\r\n \r\n
\r\n
\r\n \r\n
\r\n
Balance
\r\n
\r\n
\r\n {{absBalance | currency}}\r\n
\r\n
\r\n Overdrawn\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {Router, NavigationExtras} from '@angular/router';\r\nimport {CardMealService} from '../card-mealService';\r\nimport {LoginService} from '../../../../../../shared-modules/login/login.service';\r\nimport {UserService} from '../../../../../../shared-components/user/user.service';\r\n@Component({\r\n selector: 'app-meal-service-card-modal',\r\n templateUrl: './meal-service-card-modal.component.html',\r\n styleUrls: ['./meal-service-card-modal.component.css']\r\n})\r\nexport class MealServiceCardModalComponent implements OnInit {\r\n isV10: boolean;\r\n mealLedger: CardMealService;\r\n rolloverBalance = 0;\r\n deposits = 0;\r\n balance = 0;\r\n absBalance = 0; // Absolute value\r\n charges = 0;\r\n userType: number;\r\n showPay = false;\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router,\r\n private dialogRef: MatDialogRef,\r\n private userService: UserService,\r\n private loginService: LoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.isV10 = this.loginService.LoginSettings.V10;\r\n this.mealLedger = this.data.mealLedger;\r\n this.balance = this.mealLedger.Balance;\r\n this.absBalance = Math.abs(this.mealLedger.Balance);\r\n this.rolloverBalance = this.mealLedger.Rollover_Balance;\r\n this.deposits = this.mealLedger.Deposits;\r\n this.charges = this.mealLedger.Charges;\r\n this.userType = this.userService.userType;\r\n this.showPay = this.data.showPay;\r\n }\r\n\r\n viewDetailsClick() {\r\n this.closeClick();\r\n this.router.navigateByUrl('/student360/mealService');\r\n }\r\n\r\n payClick() {\r\n this.closeClick();\r\n const navigationExtras: NavigationExtras = {\r\n // The view to Meal Accounts\r\n queryParams: {\r\n 'selectedView': 2\r\n }\r\n };\r\n this.router.navigate(['/student360/onlinePayment'], navigationExtras);\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n checkIfNegative(balance: number) {\r\n // If negative or zero return class\r\n if (balance <= 0) {\r\n return 'isNegative';\r\n }\r\n }\r\n}\r\n","\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n Meal Service Balance\r\n
\r\n
\r\n
\r\n {{absBalance | currency}}\r\n
\r\n
\r\n Overdrawn\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Meal Service Balance\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n 0\">\r\n
\r\n
Rollover Balance
\r\n
{{rolloverBalance | number: '1.2'}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Deposits
\r\n
{{deposits | number: '1.2'}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Charges
\r\n
{{charges | number: '1.2'}}
\r\n \r\n
\r\n
\r\n \r\n
\r\n
Balance
\r\n
\r\n
\r\n {{absBalance | currency}}\r\n
\r\n
\r\n Overdrawn\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {Router, NavigationExtras} from '@angular/router';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {CardMealService} from './card-mealService';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {MealServiceCardModalComponent} from './meal-service-card-modal/meal-service-card-modal.component';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {LoginService} from '../../../../../shared-modules/login/login.service';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {OnlinePaymentConfiguration} from '../../../../online-payment/models/online-payment-config.model';\r\nimport {Year} from '../../../../../shared-components/year/year.model';\r\nimport { Portal } from '../../../../../shared-components/portal.model';\r\nimport { Student360Service } from '../../../../student360.service';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-meal-service-card',\r\n templateUrl: './meal-service-card.component.html',\r\n styleUrls: ['./meal-service-card.component.css']\r\n})\r\n\r\nexport class MealServiceCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n card: Card;\r\n v10: boolean;\r\n balance = 0;\r\n absBalance = 0; // Absolute value\r\n rolloverBalance = 0;\r\n deposits = 0;\r\n charges = 0;\r\n mealLedger: CardMealService;\r\n onlinePaymentConfiguration: OnlinePaymentConfiguration = new OnlinePaymentConfiguration();\r\n userType: number;\r\n parentPortalShowOnlinePayment: boolean;\r\n student360Year: Year;\r\n showPay = false;\r\n parentAssignedPortalsSubscription: Subscription;\r\n portals: Portal[] = [];\r\n\r\n constructor(private userService: UserService,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private studentSummaryService: StudentSummaryService,\r\n private parentPortalService: Student360Service,\r\n private router: Router) {\r\n this.studentService.observableOnlinePaymentConfigurationStream$.subscribe(onlinePaymentConfiguration => {\r\n if (onlinePaymentConfiguration) {\r\n this.onlinePaymentConfiguration = onlinePaymentConfiguration;\r\n }\r\n });\r\n\r\n this.parentAssignedPortalsSubscription = this.parentPortalService.observableParentAssignedPortalsStream$\r\n .subscribe(portals => {\r\n if (portals.length > 0) {\r\n this.portals = portals.filter(portal => !portal.Deleted);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.card = this.data;\r\n this.onlinePaymentConfiguration = this.studentService.onlinePaymentConfiguration;\r\n this.parentPortalShowOnlinePayment = this.loginService.LoginSettings.ParentPortalShowOnlinePayment;\r\n this.userType = this.userService.userType;\r\n this.student360Year = this.yearService.student360Year;\r\n if (!this.v10 && this.userType == 2 && this.portals.filter(o => o.PortalName == \"Online Payment\" && o.Disabled == false && o.ShowAsMenu == true && o.Deleted == false).length > 0) {\r\n this.showPay = true;\r\n }\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getMealBalance();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getMealBalance() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardMealService(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response.ok) {\r\n this.mealLedger = response.body[0];\r\n this.balance = this.mealLedger.Balance;\r\n this.absBalance = Math.abs(this.mealLedger.Balance);\r\n this.rolloverBalance = this.mealLedger.Rollover_Balance;\r\n this.deposits = this.mealLedger.Deposits;\r\n this.charges = this.mealLedger.Charges;\r\n }\r\n });\r\n }\r\n\r\n viewDetailsClick() {\r\n this.router.navigateByUrl('/student360/mealService');\r\n }\r\n\r\n payClick() {\r\n const navigationExtras: NavigationExtras = {\r\n // The view to Meal Accounts\r\n queryParams: {\r\n 'selectedView': 2\r\n }\r\n };\r\n this.router.navigate(['/student360/onlinePayment'], navigationExtras);\r\n }\r\n\r\n checkIfNegative(balance: number) {\r\n // If negative or zero return class\r\n if (balance <= 0) {\r\n return 'isNegative';\r\n }\r\n }\r\n\r\n isDisabled() {\r\n if (this.card.disabled) {\r\n return 'disabledColor';\r\n } else {\r\n return 'enabledColor';\r\n }\r\n }\r\n\r\n cardClick() {\r\n if (!this.card.disabled) {\r\n this.dialog.open(MealServiceCardModalComponent, {\r\n minWidth: '40vw',\r\n data: {mealLedger: this.mealLedger, showPay: this.showPay},\r\n disableClose: true,\r\n autoFocus: false\r\n });\r\n }\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Student Schedule\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{tab1Title() | translate}}\r\n
\r\n \r\n {{tab1Date()}}\r\n
\r\n
\r\n \r\n \r\n
\r\n {{noSchoolMessage | translate}}\r\n
\r\n \r\n \r\n
\r\n
\r\n
{{c.Meets}}
\r\n
{{c.LunchSchedule}}
\r\n
\r\n
\r\n
{{c.AttendanceType}}
\r\n
\r\n
\r\n
{{c.StartTime}} - {{c.EndTime}}
\r\n
{{c.StartTime}} - {{c.EndTime}}
\r\n \r\n
{{c.LunchStartTime != '00:00:00' ? c.LunchStartTime : ''}} {{c.LunchEndTime != '00:00:00' ? '- ' + c.LunchEndTime : ''}}
\r\n
\r\n
\r\n
{{c.CourseName}}
\r\n {{c.Room.length > 0 ? c.TeacherLastName.length > 0 ? c.Room + ' -' : c.Room : ''}} {{c.TeacherLastName}} {{c.TeacherFirstName | slice: 0:1}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{tab2Title() | translate}}\r\n
\r\n
\r\n {{tab2Date()}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
{{c.Meets}}
\r\n {{c.LunchSchedule}}
\r\n
\r\n
\r\n
{{c.StartTime}} - {{c.EndTime}}
\r\n
{{c.StartTime}} - {{c.EndTime}}
\r\n
\r\n
{{c.LunchStartTime != '00:00:00' ? c.LunchStartTime : ''}} {{c.LunchEndTime != '00:00:00' ? '- ' + c.LunchEndTime : ''}}
\r\n
\r\n
\r\n
{{c.CourseName}}
\r\n {{ c.Room.length > 0 ? c.TeacherLastName.length > 0 ? c.Room + ' -' : c.Room : ''}} {{ c.TeacherLastName}} {{c.TeacherFirstName | slice: 0:1}}
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n No Schedule\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{scheduleInfoMessage | translate}}\r\n
\r\n \r\n
\r\n
\r\n {{card.disabledMessage}}\r\n
\r\n
\r\n \r\n
\r\n","import { Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { NavigationExtras, Router } from '@angular/router';\r\nimport { marker } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport * as moment from 'moment';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { interval } from 'rxjs';\r\nimport { SharedService } from '../../../../../shared-components/shared.service';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { LoginService } from '../../../../../shared-modules/login/login.service';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { StudentSummaryService } from '../../../student-summary.service';\r\nimport { CardStudentSchedule } from './card-student-schedule';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-student-schedule-card',\r\n templateUrl: './student-schedule-card.component.html',\r\n styleUrls: ['./student-schedule-card.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class StudentScheduleCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n card: Card;\r\n schoolToday = true;\r\n noSchoolMessage = '';\r\n currentDate = moment();\r\n nextSchoolDayDate = moment();\r\n studentSchedule: CardStudentSchedule[] = [];\r\n tab1Schedule: CardStudentSchedule[] = [];\r\n tab2Schedule: CardStudentSchedule[] = [];\r\n scheduleInfoMessage = '';\r\n DisplayClassMeetsOnStudentScheduleCard: boolean;\r\n v10: boolean;\r\n validSchoolNextDay = true;\r\n calendarUseAttendanceTypes = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private loginService: LoginService,\r\n private studentService: StudentService,\r\n private sharedService: SharedService,\r\n private studentSummaryService: StudentSummaryService,\r\n private yearService: YearService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.DisplayClassMeetsOnStudentScheduleCard = this.loginService.LoginSettings.DisplayClassMeetsOnStudentScheduleCard;\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getCalendarUseAttendanceTypes();\r\n this.getStudentSchedule();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n viewTermScheduleClick() {\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: {\r\n selectedView: 1 // 1 = Today's Schedule\r\n }\r\n };\r\n this.router.navigate(['/student360/schedule'], navigationExtras);\r\n }\r\n\r\n isDisabled() {\r\n if (this.card.disabled) {\r\n return 'disabledColor';\r\n } else {\r\n return 'enabledColor';\r\n }\r\n }\r\n\r\n getCalendarUseAttendanceTypes() {\r\n if (!this.v10) {\r\n this.sharedService.getCalendarUseAttendanceTypes(0, this.yearService.student360Year.Id, this.studentService.selectedStudent.Id).subscribe(result => {\r\n this.calendarUseAttendanceTypes = result;\r\n });\r\n }\r\n }\r\n\r\n getStudentSchedule() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentSchedule(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe(response => {\r\n // console.log(_.cloneDeep(response.body));\r\n if (response.ok) {\r\n this.studentSchedule = response.body;\r\n // Format Dates\r\n for (let i = 0; i < this.studentSchedule.length; i++) {\r\n this.studentSchedule[i].StartTime = moment(this.studentSchedule[i].StartTime, 'HH:mm:ss').format('h:mm');\r\n this.studentSchedule[i].EndTime = moment(this.studentSchedule[i].EndTime, 'HH:mm:ss').format('h:mm A');\r\n if (!this.v10) {\r\n if (this.studentSchedule[i].LunchStartTime != '00:00:00') {\r\n this.studentSchedule[i].LunchStartTime = moment(this.studentSchedule[i].LunchStartTime, 'HH:mm:ss').format('h:mm');\r\n }\r\n if (this.studentSchedule[i].LunchEndTime != '00:00:00') {\r\n this.studentSchedule[i].LunchEndTime = moment(this.studentSchedule[i].LunchEndTime, 'HH:mm:ss').format('h:mm A');\r\n }\r\n }\r\n }\r\n // Filter out today's classes\r\n setTimeout(() => {\r\n this.tab1Schedule = this.studentSchedule.filter(c => c.MeetsToday == true);\r\n }, 500);\r\n // Filter out tomorrows classes\r\n this.tab2Schedule = this.studentSchedule.filter(c => c.MeetsNextSchoolDay == true);\r\n if (this.nextSchoolDayDate.isValid() == false) {\r\n this.validSchoolNextDay = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n showTabs() {\r\n // If no records are returned - false\r\n // If studentSchedule length = 1 and studentSchedule[0].CourseName = No school today || No School Next Day - false\r\n if (this.studentSchedule.length == 0) {\r\n this.scheduleInfoMessage = marker('No Schedule Information').toString();\r\n return false;\r\n } else if (this.studentSchedule.length == 1 && (this.studentSchedule[0].CourseName == 'No School Today' || this.studentSchedule[0].CourseName == 'No Next School Day')) {\r\n this.scheduleInfoMessage = 'No Schedule Information';\r\n return false;\r\n } else if (this.studentSchedule.length == 2 && (this.studentSchedule[0].CourseName == 'No School Today' || this.studentSchedule[1].CourseName == 'No Next School Day')) {\r\n this.scheduleInfoMessage = 'No Schedule Information';\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n tab1Title() {\r\n if (this.tab1Schedule[0] && (this.tab1Schedule[0].TodayAfterLastDayOfSchool || this.tab2Schedule[0].NoSchoolNextSchoolDate) && this.tab1Schedule[0].MeetsToday) {\r\n return marker('Last School Day').toString();\r\n } else if (this.tab1Schedule[0] && this.tab1Schedule[0].TodayBeforeFirstDayOfSchool && this.tab1Schedule[0].MeetsToday) {\r\n return marker('First Day Of School').toString();\r\n }\r\n else if (!this.v10 && this.tab2Schedule[0].NoSchoolNextSchoolDate && this.tab1Schedule[0].MeetsToday) {\r\n return marker('Last School Day').toString();\r\n }\r\n else {\r\n return marker('Today').toString();\r\n }\r\n }\r\n\r\n tab1Date() {\r\n if (this.v10) {\r\n const dateMessage = this.tab1Title();\r\n if (dateMessage == 'Today') {\r\n return this.currentDate.format('dddd MM/DD');\r\n } else {\r\n return moment(this.tab1Schedule[0].TodaysDate, 'MM/DD/YYYY hh:mm:ss A').format('dddd MM/DD');\r\n }\r\n } else {\r\n if ((this.tab1Schedule[0].TodayAfterLastDayOfSchool || this.tab1Schedule[0].TodayBeforeFirstDayOfSchool) && this.tab1Schedule[0].MeetsToday) {\r\n return moment(this.tab1Schedule[0].TodaysDate, 'MM/DD/YYYY hh:mm:ss A').format('dddd MM/DD');\r\n } else {\r\n if (!this.tab1Schedule[0].TodayAfterLastDayOfSchool && !this.tab1Schedule[0].TodayBeforeFirstDayOfSchool) {\r\n return moment(this.tab1Schedule[0].TodaysDate, 'MM/DD/YYYY hh:mm:ss A').format('dddd MM/DD');\r\n } else {\r\n return this.currentDate.format('dddd MM/DD');\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n showTab2Schedule() {\r\n if (this.tab2Schedule[0].CourseName == 'No Next School Day' && this.tab2Schedule[0].MeetsNextSchoolDay) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n tab2Date() {\r\n if (this.tab2Schedule[0].CourseName == 'No Next School Day' && this.tab2Schedule[0].NoSchoolNextSchoolDate == false) {\r\n return moment(this.currentDate).add(1, 'day').format('dddd MM/DD');\r\n } else if (this.tab2Schedule[0].CourseName == 'No Next School Day' && this.tab2Schedule[0].TodayAfterLastDayOfSchool) {\r\n return '';\r\n } else if (!this.v10 && this.tab2Schedule[0].CourseName == 'No Next School Day' && this.tab2Schedule[0].NoSchoolNextSchoolDate) {\r\n return moment(this.tab2Schedule[0].TodaysDate, 'MM/DD/YYYY hh:mm:ss A').format('dddd MM/DD');\r\n }\r\n else {\r\n return moment(this.tab2Schedule[0].NextSchoolDate, 'MM/DD/YYYY hh:mm:ss A').format('dddd MM/DD');\r\n }\r\n }\r\n\r\n tab2Title() {\r\n if (this.tab2Schedule[0].CourseName == 'No Next School Day' && this.tab2Schedule[0].Withdrawn) {\r\n return marker('Withdrawn').toString();\r\n }\r\n else if (this.tab2Schedule[0].CourseName == 'No Next School Day' && this.tab2Schedule[0].MeetsNextSchoolDay) {\r\n return marker('End Of School Year').toString();\r\n } else {\r\n return marker('Next School Day').toString();\r\n }\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Upcoming Events\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
0\" style=\"display: flex;flex-direction: column;justify-content: center;align-items: center;padding: 15px;\">\r\n No upcoming events.\r\n
\r\n
0\">\r\n
\r\n
\r\n {{eMonth.month | translate}} {{eMonth.year}}\r\n
\r\n
\r\n
\r\n {{getDayString(event)}}\r\n
\r\n
\r\n {{getWeekDayString(event) | translate}}\r\n
\r\n
\r\n
\r\n
\r\n {{event.EventTitle}}\r\n
\r\n
\r\n {{getDateRangeString(event)}}\r\n
\r\n
\r\n {{getTimeLocationString(event)}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {LoginService} from '../../../../../shared-modules/login/login.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {NavigationExtras, Router} from '@angular/router';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {CardUpcomingEvents} from './card-upcoming-events';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {interval} from 'rxjs';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n\r\n@Component({\r\n selector: 'app-upcoming-events-card',\r\n templateUrl: './upcoming-events-card.component.html',\r\n styleUrls: ['./upcoming-events-card.component.css']\r\n})\r\n\r\nexport class UpcomingEventsCardComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n card: Card;\r\n v10: boolean;\r\n eventsByMonth: EventMonth[] = [];\r\n upcomingEvents: CardUpcomingEvents[] = [];\r\n\r\n constructor(private userService: UserService, private loginService: LoginService, private dialog: MatDialog, private yearService: YearService, private studentService: StudentService, private studentSummaryService: StudentSummaryService, private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getUpcomingEvents();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getUpcomingEvents() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardUpcomingEvents(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.userService.userType).subscribe(response => {\r\n if (response.ok) {\r\n this.upcomingEvents = _.cloneDeep(response.body);\r\n // Format Dates and times\r\n for (let i = 0; i < this.upcomingEvents.length; i++) {\r\n if (this.upcomingEvents[i].StartTime !== '00:00:00') {\r\n this.upcomingEvents[i].StartTime = moment(this.upcomingEvents[i].StartTime, 'HH:mm:ss').format('h:mm A');\r\n } else {\r\n this.upcomingEvents[i].StartTime = '';\r\n }\r\n if (this.upcomingEvents[i].EndTime !== '00:00:00') {\r\n this.upcomingEvents[i].EndTime = moment(this.upcomingEvents[i].EndTime, 'HH:mm:ss').format('h:mm A');\r\n } else {\r\n this.upcomingEvents[i].EndTime = '';\r\n }\r\n this.upcomingEvents[i].EventStartDate = moment(this.upcomingEvents[i].EventStartDate, 'MM/DD/YYYY HH:mm:ss A').format('MM/DD/YYYY');\r\n this.upcomingEvents[i].EventEndDate = moment(this.upcomingEvents[i].EventEndDate, 'MM/DD/YYYY HH:mm:ss A').format('MM/DD/YYYY');\r\n }\r\n // Get a list of months\r\n for (let i = 0; i < this.upcomingEvents.length; i++) {\r\n const eMonth = moment(this.upcomingEvents[i].EventStartDate, 'MM/DD/YYYY').format('MMMM');\r\n const eYear = moment(this.upcomingEvents[i].EventStartDate, 'MM/DD/YYYY').format('YYYY');\r\n const event = [];\r\n event.push((this.upcomingEvents[i]));\r\n const monthEvent: EventMonth = {\r\n month: eMonth,\r\n year: eYear,\r\n events: event\r\n };\r\n const mth = this.eventsByMonth.find(e => e.year == monthEvent.year && e.month == monthEvent.month);\r\n if (mth) {\r\n // Add the event to that month\r\n mth.events.push(monthEvent.events[0]);\r\n } else {\r\n this.eventsByMonth.push(monthEvent);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n viewCalendarClick() {\r\n const navigationExtras: NavigationExtras = {\r\n // needs to be lower case view, day, week, month\r\n queryParams: {\r\n 'selectedView': 'month'\r\n }\r\n };\r\n this.router.navigate(['/student360/calendar'], navigationExtras);\r\n }\r\n\r\n getDayString(event: CardUpcomingEvents) {\r\n const multiDayEvent = !moment(event.EventStartDate, 'MM/DD/YYYY').isSame(moment(event.EventEndDate, 'MM/DD/YYYY'), 'day');\r\n if (multiDayEvent) {\r\n // Check to see if the multi day event contains today's date\r\n if (moment().isBetween(event.EventStartDate, event.EventEndDate, 'day', '[]')) {\r\n return moment(new Date().toDateString(), 'ddd MMM DD YYYY hh:mm:ss').format('DD');\r\n } else {\r\n return moment(event.EventStartDate, 'MM/DD/YYYY').format('DD');\r\n }\r\n } else {\r\n return moment(event.EventStartDate, 'MM/DD/YYYY').format('DD');\r\n }\r\n }\r\n\r\n getWeekDayString(event: CardUpcomingEvents) {\r\n const multiDayEvent = !moment(event.EventStartDate, 'MM/DD/YYYY').isSame(moment(event.EventEndDate, 'MM/DD/YYYY'), 'day');\r\n if (multiDayEvent) {\r\n return moment(new Date().toDateString(), 'ddd MMM DD YYYY hh:mm:ss').format('dddd');\r\n } else {\r\n return moment(event.EventStartDate, 'MM/DD/YYYY').format('dddd');\r\n }\r\n }\r\n\r\n multiDayEvent(event: CardUpcomingEvents) {\r\n // check if the event is a multi day event\r\n if (event.EventStartDate == event.EventEndDate) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n getDateRangeString(event: CardUpcomingEvents) {\r\n const startDate = moment(event.EventStartDate, 'MM/DD/YYYY').format('MMM DD');\r\n const endDate = moment(event.EventEndDate, 'MM/DD/YYYY').format('MMM DD');\r\n return startDate + ' - ' + endDate;\r\n }\r\n\r\n getTimeLocationString(event: CardUpcomingEvents) {\r\n let eventStartTime = '';\r\n let eventEndTime = '';\r\n const location = event.EventLocation;\r\n\r\n if (event.StartTime) {\r\n eventStartTime = moment(event.StartTime, 'h:mm A').format('h:mm A');\r\n }\r\n if (event.EndTime) {\r\n eventEndTime = moment(event.EndTime, 'h:mm A').format('h:mm A');\r\n }\r\n if (eventStartTime && eventEndTime && location) { // Has StartTime, EndTime and Location\r\n return moment(eventStartTime, 'h:mm A').format('h:mm A') + ' - ' + eventEndTime + ', ' + location;\r\n }\r\n if (!eventStartTime && !eventEndTime && !location) { // Has no start time, end time or location\r\n return '';\r\n }\r\n if (eventStartTime && !eventEndTime && !location) { // Only a StartTime\r\n return eventStartTime;\r\n }\r\n if (!eventStartTime && eventEndTime && !location) { // Only a EndTime\r\n return 'Until ' + eventEndTime;\r\n }\r\n if (!eventStartTime && !eventEndTime && location) { // Only a Location\r\n return location;\r\n }\r\n if (eventStartTime && !eventEndTime && location) { // Has StartTime and Location\r\n return eventStartTime + ', ' + location;\r\n }\r\n if (!eventStartTime && eventEndTime && location) { // Has EndTime and Location\r\n return 'Until ' + eventEndTime + ', ' + location;\r\n }\r\n if (eventStartTime && eventEndTime && !location) { // Has StartTime and EndTime\r\n return moment(eventStartTime, 'h:mm A').format('h:mm A') + ' - ' + eventEndTime;\r\n }\r\n }\r\n\r\n hasTimeLocation(event: CardUpcomingEvents) {\r\n if (event.EndTime || event.StartTime || event.EventLocation) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n\r\nexport class EventMonth {\r\n month: string;\r\n year: string;\r\n events: CardUpcomingEvents[];\r\n}\r\n","
\r\n
\r\n
\r\n Calendar\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
{{selectedDate}}
\r\n \r\n
\r\n \r\n \r\n
\r\n
{{event.EventTitle}}
\r\n
\r\n
\r\n {{getDateRangeString(event)}}\r\n
\r\n
\r\n {{getTimeLocationString(event)}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport {NavigationExtras, Router} from '@angular/router';\r\nimport * as moment from 'moment';\r\nimport {CardUpcomingEvents} from '../../upcoming-events-card/card-upcoming-events';\r\n\r\n@Component({\r\n selector: 'app-event-details-modal',\r\n templateUrl: './event-details-modal.component.html',\r\n styleUrls: ['./event-details-modal.component.css']\r\n})\r\nexport class EventDetailsModalComponent implements OnInit {\r\n events = [];\r\n selectedDate;\r\n constructor(private matDialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n this.events = this.data.events;\r\n this.selectedDate = moment(this.data.date, 'MM/DD/YYYY').format('dddd, MMMM D, YYYY');\r\n }\r\n\r\n closeClick() {\r\n this.matDialogRef.close();\r\n }\r\n\r\n goToCalendarClick() {\r\n this.closeClick();\r\n const navigationExtras: NavigationExtras = {\r\n // needs to be lower case view, day, week, month\r\n queryParams: {\r\n 'selectedView': 'month'\r\n }\r\n };\r\n this.router.navigate(['/student360/calendar'], navigationExtras);\r\n }\r\n\r\n multiDayEvent(event) {\r\n // check if the event is a multi day event\r\n if (event.EventStartDate == event.EventEndDate) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n getDateRangeString(event) {\r\n const startDate = moment(event.EventStartDate, 'MM/DD/YYYY hh:mm:ss A').format('MMM DD');\r\n const endDate = moment(event.EventEndDate, 'MM/DD/YYYY hh:mm:ss A').format('MMM DD');\r\n return startDate + ' - ' + endDate;\r\n }\r\n\r\n hasTimeLocation(event) {\r\n if (event.EndTime || event.StartTime || event.EventLocation) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getTimeLocationString(event: CardUpcomingEvents) {\r\n let eventStartTime = '';\r\n let eventEndTime = '';\r\n const location = event.EventLocation;\r\n\r\n if (event.StartTime) {\r\n eventStartTime = moment(event.StartTime, 'HH:mm:ss').format('h:mm A');\r\n }\r\n if (event.EndTime) {\r\n eventEndTime = moment(event.EndTime, 'HH:mm:ss').format('h:mm A');\r\n }\r\n if (eventStartTime && eventEndTime && location) { // Has StartTime, EndTime and Location\r\n return eventStartTime + ' - ' + eventEndTime + ', ' + location;\r\n }\r\n if (!eventStartTime && !eventEndTime && !location) { // Has no start time, end time or location\r\n return '';\r\n }\r\n if (eventStartTime && !eventEndTime && !location) { // Only a StartTime\r\n return eventStartTime;\r\n }\r\n if (!eventStartTime && eventEndTime && !location) { // Only a EndTime\r\n return 'Until ' + eventEndTime;\r\n }\r\n if (!eventStartTime && !eventEndTime && location) { // Only a Location\r\n return location;\r\n }\r\n if (eventStartTime && !eventEndTime && location) { // Has StartTime and Location\r\n return eventStartTime + ', ' + location;\r\n }\r\n if (!eventStartTime && eventEndTime && location) { // Has EndTime and Location\r\n return 'Until ' + eventEndTime + ', ' + location;\r\n }\r\n if (eventStartTime && eventEndTime && !location) { // Has StartTime and EndTime\r\n return moment(eventStartTime, 'HH:mm:ss').format('h:mm A') + ' - ' + eventEndTime;\r\n }\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Calendar\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { UserService } from '../../../../../shared-components/user/user.service';\r\nimport { LoginService } from '../../../../../shared-modules/login/login.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { StudentSummaryService } from '../../../student-summary.service';\r\nimport { NavigationExtras, Router } from '@angular/router';\r\nimport { interval } from 'rxjs';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\nimport { EventDetailsModalComponent } from './event-details-modal/event-details-modal.component';\r\n\r\n@Component({\r\n selector: 'app-calendar-card',\r\n templateUrl: './calendar-card.component.html',\r\n styleUrls: ['./calendar-card.component.css']\r\n})\r\nexport class CalendarCardComponent implements OnInit {\r\n @Input() data: any;\r\n card: Card;\r\n v10: boolean;\r\n nonAttendanceDates: string[];\r\n eventDates: string[];\r\n startDate: string;\r\n endDate: string;\r\n\r\n constructor(private userService: UserService, private loginService: LoginService, private dialog: MatDialog, private yearService: YearService, private studentService: StudentService, private studentSummaryService: StudentSummaryService, private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getStudentCalendar();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n getStudentCalendar() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n // If undefined, set dates to the start and end of the current month\r\n if (!this.startDate && !this.endDate) {\r\n this.startDate = moment().startOf('month').format('MM/DD/YYYY');\r\n this.endDate = moment().endOf('month').format('MM/DD/YYYY');\r\n }\r\n this.studentSummaryService.getCardStudentCalendar(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.startDate, this.endDate, this.userService.userType, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response.ok) {\r\n const possibleDates = [];\r\n const start = moment(this.startDate);\r\n const end = moment(this.endDate);\r\n const totalRequestedDays = end.diff(start, 'days') + 1;\r\n const cDate = _.cloneDeep(start);\r\n for (let i = 0; i < totalRequestedDays; i++) {\r\n possibleDates.push(moment(cDate).format('MM/DD/YYYY'));\r\n cDate.add(1, 'days');\r\n }\r\n if (response.body.length > 0) {\r\n // clean up the dates\r\n response.body.forEach(d => {\r\n d.Date = moment(d.Date, 'M/D/YYYY H:mm:SS A').format('MM/DD/YYYY');\r\n });\r\n // Verify each date exists in the return set, if not add it as a non school day\r\n const rDates = response.body.map(d => d.Date);\r\n possibleDates.forEach(d => {\r\n if (!rDates.includes(d)) {\r\n response.body.push({\r\n Date: d,\r\n HasEvent: false,\r\n HasSchool: false\r\n });\r\n }\r\n });\r\n } else {\r\n // Because the response was empty we can assume there is no school for the selected range\r\n possibleDates.forEach(d => {\r\n response.body.push({\r\n Date: d,\r\n HasEvent: false,\r\n HasSchool: false\r\n });\r\n });\r\n }\r\n // Reset the data sources (because they are input parameters)\r\n this.eventDates = response.body.filter(d => d.HasEvent == true).map(d => d.Date);\r\n this.nonAttendanceDates = response.body.filter(d => d.HasSchool == false).map(d => d.Date);\r\n }\r\n });\r\n }\r\n\r\n monthChange(event: any) {\r\n this.startDate = moment(event, 'MM/DD/YYYY').startOf('month').format('MM/DD/YYYY');\r\n this.endDate = moment(event, 'MM/DD/YYYY').endOf('month').format('MM/DD/YYYY');\r\n this.getStudentCalendar();\r\n }\r\n\r\n calendarClick() {\r\n const navigationExtras: NavigationExtras = {\r\n // needs to be lower case view, day, week, month\r\n queryParams: {\r\n 'selectedView': 'month',\r\n 'selectedDate': this.endDate\r\n }\r\n };\r\n this.router.navigate(['/student360/calendar'], navigationExtras);\r\n }\r\n\r\n dayClick(calendarDay) {\r\n if (calendarDay.hasEvents) {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getEventForDateRange(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, calendarDay.date, calendarDay.date, this.userService.userType).subscribe((response) => {\r\n if (response.ok) {\r\n // Open a modal displaying the event info\r\n this.dialog.open(EventDetailsModalComponent, { disableClose: true, autoFocus: false, data: { events: response.body, date: calendarDay.date } });\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","

\r\n Attendance for \r\n

\r\n\r\n
\r\n \r\n \r\n \r\n Date\r\n {{e.AttDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n Code\r\n {{e.AttCode}}\r\n \r\n \r\n \r\n Description\r\n {{e.AttCodeDescription}}\r\n \r\n \r\n \r\n Comment\r\n {{e.AttComment}}\r\n \r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {AttendanceDetail} from './attendance-detail';\r\nimport {Student} from '../../../../../../shared-components/student/student.model';\r\nimport {StudentService} from '../../../../../../shared-components/student/student.service';\r\n\r\n@Component({\r\n selector: 'app-attendance-details-modal',\r\n templateUrl: './attendance-details-modal.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./attendance-details-modal.component.css']\r\n})\r\nexport class AttendanceDetailsModalComponent implements OnInit {\r\n\r\n attendanceDetails: AttendanceDetail[] = [];\r\n student: Student;\r\n // Angular Material Table\r\n displayedColumns: string[] = ['date', 'code', 'description', 'comment'];\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private studentService: StudentService,\r\n private cdr: ChangeDetectorRef,\r\n private dialogRef: MatDialogRef\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.attendanceDetails = this.data.attendanceDetails;\r\n this.student = this.studentService.selectedStudent;\r\n this.updateView();\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Attendance History\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
0\" style=\"flex: 1;display: flex;justify-content: flex-end;padding: 10px;\">\r\n Include dropped classes\r\n
\r\n
\r\n No attendance history available.\r\n
\r\n
0\" style=\"display: flex; flex: 1; justify-content: flex-end;padding-right: 7.2%; color: rgba(0, 0, 0, 0.54);font-weight: 500;\">\r\n Year-to-Date\r\n
\r\n 0\" style=\"width: 100%;\" [dataSource]=\"recordsToDisplay\">\r\n \r\n \r\n Meets\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Term\r\n {{ar.Term}}\r\n \r\n\r\n \r\n \r\n Course-Section\r\n {{ar.CourseNumber}}-{{ar.SectionName}}\r\n \r\n\r\n \r\n \r\n Name\r\n {{ar.CourseName}}\r\n \r\n\r\n \r\n \r\n \r\n Dropped\r\n \r\n \r\n {{ar.DroppedDate | date:'MM/dd/yy'}}\r\n \r\n \r\n\r\n \r\n \r\n Pr\r\n 0}\" (click)=\"ar.Present_YTD > 0 ? attendanceRecordClick(ar.Section_ID, 'Present') : ''\">{{ar.Present_YTD}}\r\n \r\n\r\n \r\n \r\n Td\r\n 0}\" (click)=\"ar.Tardy_YTD > 0 ? attendanceRecordClick(ar.Section_ID, 'Tardy') : ''\">{{ar.Tardy_YTD}}\r\n \r\n\r\n \r\n \r\n Ab\r\n 0}\" (click)=\"ar.Absent_YTD > 0 ? attendanceRecordClick(ar.Section_ID, 'Absent'): ''\">{{ar.Absent_YTD}}\r\n \r\n\r\n \r\n \r\n Ex\r\n 0}\"(click)=\"ar.ExcusedAbsent_YTD > 0 ? attendanceRecordClick(ar.Section_ID, 'Excused') : ''\">{{ar.ExcusedAbsent_YTD}}\r\n \r\n\r\n \r\n \r\n Un\r\n 0}\" (click)=\"ar.UnexcusedAbsent_YTD > 0 ? attendanceRecordClick(ar.Section_ID, 'Unexcused') : ''\">{{ar.UnexcusedAbsent_YTD}}\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { interval, Subscription } from 'rxjs';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { Student360Service } from '../../../../student360.service';\r\nimport { UserService } from '../../../../../shared-components/user/user.service';\r\nimport { Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { StudentSummaryService } from '../../../student-summary.service';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { LoginService } from '../../../../../shared-modules/login/login.service';\r\nimport { CardAttendanceHistory } from './card-attendance-history';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AttendanceDetailsModalComponent } from './attendance-details-modal/attendance-details-modal.component';\r\n@Component({\r\n selector: 'app-attendance-history-card',\r\n templateUrl: './attendance-history-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./attendance-history-card.component.css']\r\n})\r\nexport class AttendanceHistoryCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n // Angular Material Table\r\n displayedColumns: string[] = ['meets', 'courseSection', 'name', 'dropped', 'pr', 'td', 'ab', 'ex', 'un'];\r\n attendanceRecords: CardAttendanceHistory[] = [];\r\n recordsToDisplay: CardAttendanceHistory[] = [];\r\n showDropped = true;\r\n v10 = false;\r\n\r\n constructor(\r\n private student360Service: Student360Service,\r\n private userService: UserService,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n private studentService: StudentService,\r\n private studentSummaryService: StudentSummaryService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n if (!this.v10) {\r\n this.displayedColumns = ['meets', 'Term', 'courseSection', 'name', 'dropped', 'td', 'ab'];\r\n }\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getStudentAttendanceHistory();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getStudentAttendanceHistory() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentAttendance(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe((response) => {\r\n if (response.ok) {\r\n this.attendanceRecords = response.body;\r\n this.hideShowDropped();\r\n }\r\n });\r\n }\r\n\r\n goToAttendance() {\r\n this.router.navigateByUrl('/student360/attendance?studentPortal=true');\r\n }\r\n\r\n hideShowDropped() {\r\n if (!this.showDropped) {\r\n this.recordsToDisplay = this.attendanceRecords.filter(ar => ar.IsDropped == false);\r\n } else {\r\n this.recordsToDisplay = _.cloneDeep(this.attendanceRecords);\r\n }\r\n this.recordsToDisplay.sort((a, b) => (a.ClassMeets > b.ClassMeets) ? 1 : -1);\r\n this.updateView();\r\n }\r\n\r\n attendanceRecordClick(sectionId: number, type: string) {\r\n this.studentSummaryService.getAttendanceHistoryDetail(this.studentService.selectedStudent.Id, sectionId, type).subscribe((response) => {\r\n if (response.ok) {\r\n this.dialog.open(AttendanceDetailsModalComponent, { autoFocus: false, minWidth: '30vw', maxHeight: '45vh', disableClose: true, data: { attendanceDetails: response.body } });\r\n }\r\n });\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Student Teams\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Student is not a member of any teams.\r\n
\r\n 0\" [dataSource]=\"studentTeams\">\r\n \r\n \r\n Team\r\n {{element.TeamName}} \r\n \r\n\r\n \r\n \r\n Staff Name\r\n {{element.StaffLastName}}, {{element.StaffFirstName}} \r\n \r\n\r\n \r\n \r\n Entry\r\n {{element.EntryDate | date:'MM/dd/yy'}} \r\n \r\n\r\n \r\n \r\n Exit\r\n {{element.ExitDate | date:'MM/dd/yy'}} \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {CardStudentTeams} from './card-student-teams';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-student-teams-card',\r\n templateUrl: './student-teams-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./student-teams-card.component.css']\r\n})\r\nexport class StudentTeamsCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n studentTeams: CardStudentTeams[] = [];\r\n // Angular Material Table\r\n displayedColumns: string[] = ['team', 'staffName', 'entry', 'exit'];\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private studentService: StudentService,\r\n private router: Router,\r\n private userService: UserService,\r\n private studentSummaryService: StudentSummaryService,\r\n private yearService: YearService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getTeams();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getTeams() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentTeams(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier).subscribe((response) => {\r\n if (response.ok) {\r\n this.studentTeams = response.body;\r\n // Because we are using onPush change detection we need to update the view\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n viewStudentTeams() {\r\n this.router.navigateByUrl('/student360/teams?studentPortal=true');\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Student Notes\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n No notes exist for student.\r\n
\r\n
0\" style=\"width: 100%; padding-left: 24px;padding-top: 15px;padding-bottom: 15px;\">\r\n
\r\n
{{cat}}
\r\n
\r\n
\r\n
\r\n
\r\n
{{note.Note}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {CardStudentNotes} from './card-student-notes';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-student-notes-card',\r\n templateUrl: './student-notes-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./student-notes-card.component.css']\r\n})\r\nexport class StudentNotesCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n studentNotes: CardStudentNotes[] = [];\r\n categories: string[] = [];\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private studentService: StudentService,\r\n private router: Router,\r\n private userService: UserService,\r\n private studentSummaryService: StudentSummaryService,\r\n private yearService: YearService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getNotes();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getNotes() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentNotes(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier).subscribe((response) => {\r\n if (response.ok) {\r\n this.studentNotes = response.body;\r\n // Group by Definition (category)\r\n this.categories = this.studentNotes.map(note => note.Definition).filter((cat, pos) => {\r\n return this.studentNotes.map(note => note.Definition).indexOf(cat) == pos;\r\n });\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n viewStudentNotesClick() {\r\n this.router.navigateByUrl('/classroom360/studentNotes?studentPortal=true');\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Behavior\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n No Behavior data exists for student.\r\n
\r\n
0\" style=\"display: flex; flex: 1\">\r\n \r\n \r\n \r\n Date\r\n {{element.EventDate | date:'MM/dd/yy h:mm a'}} \r\n \r\n\r\n \r\n \r\n Incident\r\n {{element.Incident}}\r\n \r\n\r\n \r\n \r\n Action\r\n {{element.Action}} \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {CardStudentBehavior} from './card-student-behavior';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-behavior-card',\r\n templateUrl: './behavior-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./behavior-card.component.css']\r\n})\r\nexport class BehaviorCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n behaviorEvents: CardStudentBehavior[] = [];\r\n // Angular Material Table\r\n displayedColumns: string[] = ['date', 'incident', 'action'];\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private studentService: StudentService,\r\n private router: Router,\r\n private userService: UserService,\r\n private studentSummaryService: StudentSummaryService,\r\n private yearService: YearService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getBehavior();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getBehavior() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentBehavior(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe((response) => {\r\n if (response.ok) {\r\n this.behaviorEvents = response.body;\r\n // Because we are using onPush Change detection we need to update the view\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n viewBehaviorClick() {\r\n this.router.navigateByUrl('/student360/behavior');\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Programs and Services\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n No Programs and Services data exists for student.\r\n
\r\n
0\" style=\"display: flex; flex: 1;\">\r\n \r\n \r\n \r\n Program/Service\r\n \r\n
\r\n {{element.name}}\r\n
\r\n
\r\n {{element.name}}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Entry\r\n {{element.date | date: 'MM/dd/yy'}} \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {CardStudentProgramsServices} from './card-student-programs-services';\r\nimport {Router} from '@angular/router';\r\n\r\nexport class DisplayItem {\r\n name: string;\r\n date: string;\r\n service: boolean;\r\n program: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'app-programs-and-services-card',\r\n templateUrl: './programs-and-services-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./programs-and-services-card.component.css']\r\n})\r\nexport class ProgramsAndServicesCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n displayItems: DisplayItem[] = [];\r\n programsAndServices: CardStudentProgramsServices[] = [];\r\n // Angular Material Table\r\n displayedColumns: string[] = ['programService', 'entry'];\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private router: Router,\r\n private userService: UserService,\r\n private studentSummaryService: StudentSummaryService,\r\n private yearService: YearService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getProgramsAndServices();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getProgramsAndServices() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardProgramsAndServices(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe((response) => {\r\n if (response.ok) {\r\n // The following code flattens the data and removes duplicate programs\r\n // so it will display nicely in the table with only 2 columns\r\n // keep in mind that it is alphabetized by Program then Service at the Stored procedure\r\n this.programsAndServices = response.body;\r\n for (let i = 0; i < this.programsAndServices.length; i++) {\r\n // Add the Program\r\n this.displayItems.push({\r\n name: this.programsAndServices[i].ProgramName,\r\n date: '',\r\n program: true,\r\n service: false\r\n });\r\n // Add the Service\r\n this.displayItems.push({\r\n name: this.programsAndServices[i].ServiceName,\r\n date: this.programsAndServices[i].ServiceEntryDate,\r\n program: false,\r\n service: true\r\n });\r\n }\r\n const unqItems = [];\r\n this.displayItems.forEach(e => {\r\n if (e.program == true) {\r\n if (unqItems.includes(e.name)) {\r\n this.displayItems.splice(this.displayItems.indexOf(e), 1);\r\n } else {\r\n unqItems.push(e.name);\r\n }\r\n }\r\n });\r\n // Because we are using onPush change detection\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n viewProgramsAndServices() {\r\n this.router.navigateByUrl('/student360/programsAndServices');\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Student Details\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Email Address
\r\n
{{studentDetails.EmailAddress}}
\r\n
\r\n
0 || studentDetails.CourtOrderAgainst != '')\"\r\n style=\"display: flex; flex-direction: row; border-left: 1px;border-left-style: solid;border-left-color: lightgray;border-bottom: 1px;border-bottom-style: solid;border-bottom-color: lightgray;flex: 1;background-color: #ffff8d;color: red;\">\r\n
Court Order
\r\n
{{studentDetails.CourtOrderAgainst}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
'' || studentDetails.CurrentLocationSection > '' || studentDetails.CurrentLocationRoom > '' || studentDetails.CurrentLocationTeacher > ''\">\r\n \r\n
\r\n
Current Location
\r\n
\r\n
''\">\r\n
Course
\r\n
{{studentDetails.CurrentLocationCourse}}\r\n
\r\n
\r\n
'' || studentDetails.CurrentLocationCourse=='Student is between classes'\">\r\n
Room
\r\n
{{studentDetails.CurrentLocationRoom}}\r\n
\r\n
\r\n
'' || studentDetails.CurrentLocationCourse=='Student is between classes'\">\r\n
Teacher
\r\n
\r\n {{studentDetails.CurrentLocationTeacher}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Demographics
\r\n
\r\n
\r\n
Age
\r\n
{{studentDetails.Age}}
\r\n
\r\n
\r\n
Birthdate
\r\n
{{studentDetails.BirthDate |\r\n date:'MM/dd/yy'}}
\r\n
\r\n
\r\n
Cell Phone
\r\n
{{studentDetails.CellPhone}}
\r\n
\r\n
\r\n
Ethnicity
\r\n
{{studentDetails.Ethnicity}}
\r\n
\r\n
\r\n
Gender
\r\n
{{studentDetails.Gender}}
\r\n
\r\n
\r\n
Race
\r\n
{{studentDetails.Race}}
\r\n
\r\n
\r\n
State ID
\r\n
\r\n {{studentDetails.StudentStateIdentifier}}
\r\n
\r\n
\r\n
Student #
\r\n
{{student.StudentNumber}}
\r\n
\r\n
\r\n
Language Spoken at\r\n Home
\r\n
{{studentDetails.PrimaryLanguage}}
\r\n
\r\n
\r\n
Previous Last name\r\n
\r\n
{{studentDetails.PreviousLastName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Locker
\r\n
\r\n
\r\n
Number
\r\n
{{studentDetails.Locker}}
\r\n
\r\n
\r\n
Combination
\r\n
\r\n \r\n {{studentDetails.LockerCombination}}\r\n \r\n \r\n {{maskedLocker}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
'' || studentDetails.HomeRoomSection > '' || studentDetails.HomeRoomRoom > '' || studentDetails.HomeRoomTeacher > ''\">\r\n \r\n
\r\n
Home Room
\r\n
\r\n
''\">\r\n
Course
\r\n
{{studentDetails.HomeRoomCourse}}
\r\n
\r\n
''\">\r\n
Room
\r\n
{{studentDetails.HomeRoomRoom}}
\r\n
\r\n
''\">\r\n
Teacher
\r\n
{{studentDetails.HomeRoomTeacher}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Student Portal Access
\r\n
\r\n
\r\n
Login
\r\n
\r\n \r\n {{maskedLogin}}\r\n \r\n \r\n {{studentDetails.StudentLogin}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
Password
\r\n
\r\n \r\n {{maskedPassword}}\r\n \r\n \r\n {{studentDetails.StudentPassword}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Enrollment
\r\n
\r\n
\r\n
Status
\r\n
{{studentDetails.EnrollmentStatus}}\r\n
\r\n
\r\n
\r\n
Type
\r\n
{{studentDetails.EnrollmentType}}
\r\n
\r\n
\r\n
Entry Date
\r\n
{{studentDetails.EnrollmentEntryDate |\r\n date: 'MM/dd/yy'}}
\r\n
\r\n
\r\n
Entry Code
\r\n
{{studentDetails.EnrollmentEntryCode}}\r\n
\r\n
\r\n
\r\n
Enroll Date
\r\n
{{studentDetails.EnrollmentDate | date:\r\n 'MM/dd/yy'}}
\r\n
\r\n
\r\n
Withdrawn Date
\r\n
{{studentDetails.WithdrawDate | date:\r\n 'MM/dd/yy'}}
\r\n
\r\n
\r\n
Residency
\r\n
{{studentDetails.Residency}}
\r\n
\r\n
\r\n
Reason
\r\n
{{studentDetails.Reason}}
\r\n
\r\n
\r\n
Reason
\r\n
{{studentDetails.WithdrawReason}}
\r\n
\r\n
\r\n
FTE
\r\n
{{studentDetails.FTE}}
\r\n
\r\n \r\n
\r\n
Dual Enrolled
\r\n
\r\n
\r\n {{school}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Home District
\r\n
{{studentDetails.HomeDistrict}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Other
\r\n
\r\n
\r\n
Bus
\r\n
{{studentDetails.Bus}}
\r\n
\r\n
\r\n
Transportation Comment\r\n
\r\n
{{studentDetails.TransportationComment}}\r\n
\r\n
\r\n
\r\n
Custody Issue
\r\n
{{studentDetails.CustodyIssue}}
\r\n
\r\n
\r\n
Graduation Plan
\r\n
{{studentDetails.GraduationPlan}}
\r\n
\r\n
\r\n
IEP Case Manager
\r\n
{{studentDetails.IEPCaseManager}}
\r\n
\r\n
\r\n
Primary Counselor\r\n
\r\n
{{studentDetails.PrimaryCounselor}}\r\n
\r\n
\r\n
\r\n
Report Card /\r\n Transcript on Hold
\r\n
\r\n {{studentDetails.ReportCardTranscriptOnHold}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { Student360Service } from '../../../../student360.service';\r\nimport { UserService } from '../../../../../shared-components/user/user.service';\r\nimport { Router } from '@angular/router';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { Student } from '../../../../../shared-components/student/student.model';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { StudentDetail } from '../../../../student-details/student-detail.model';\r\nimport { LoginService } from '../../../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-student-details-card',\r\n templateUrl: './student-details-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./student-details-card.component.css']\r\n})\r\nexport class StudentDetailsCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n student: Student;\r\n studentDetails: StudentDetail;\r\n studentLoginHidden = true;\r\n studentPasswordHidden = true;\r\n lockerComboHidden = true;\r\n maskedLogin = '';\r\n maskedPassword = '';\r\n maskedLocker = '';\r\n enrolledSchools: string[] = [];\r\n v10 = true;\r\n\r\n constructor(\r\n private student360Service: Student360Service,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private studentService: StudentService,\r\n private router: Router,\r\n private cdr: ChangeDetectorRef,\r\n private loginService: LoginService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.student = this.studentService.selectedStudent;\r\n this.getStudentDetails();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getStudentDetails() {\r\n this.studentService.getStudentDetails(this.student.Id, this.yearService.defaultYear.Id, this.userService.userId, true).subscribe((response) => {\r\n this.studentDetails = response;\r\n if (this.studentDetails != null) {\r\n if (this.studentDetails.ShowStudentLogin) {\r\n this.maskedLogin = '';\r\n for (let i = 0; i < this.studentDetails.StudentLogin.length; i++) {\r\n this.maskedLogin = this.maskedLogin + '*';\r\n }\r\n }\r\n if (this.studentDetails.ShowStudentPassword) {\r\n this.maskedPassword = '';\r\n for (let i = 0; i < this.studentDetails.StudentPassword.length; i++) {\r\n this.maskedPassword = this.maskedPassword + '*';\r\n }\r\n }\r\n if (this.studentDetails.LockerCombination != null) {\r\n this.maskedLocker = '';\r\n for (let i = 0; i < this.studentDetails.LockerCombination.length; i++) {\r\n this.maskedLocker = this.maskedLocker + '*';\r\n }\r\n }\r\n if (this.studentDetails.DualEnrolled) {\r\n this.enrolledSchools = this.studentDetails.DualEnrolled.split(',');\r\n }\r\n }\r\n this.updateView();\r\n });\r\n }\r\n\r\n viewStudentDetails() {\r\n this.router.navigateByUrl('/student360/studentDetails?studentPortal=true');\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n}\r\n","

\r\n Membership Codes\r\n

\r\n\r\n
\r\n \r\n \r\n \r\n Start Date\r\n {{e.StartDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n End Date\r\n {{e.EndDate | date: 'MM/dd/yy'}}\r\n \r\n \r\n \r\n Code\r\n {{e.Code}}\r\n \r\n \r\n \r\n Updated By\r\n {{e.UpdatedBy}}\r\n \r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n The default value of {{membershipCode}} applies in all dates outside the above-listed ranges.\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {StudentSummaryService} from '../../../../student-summary.service';\r\nimport {CardMembershipCodes} from '../card-membership-codes';\r\n\r\n@Component({\r\n selector: 'app-membership-code-details-modal',\r\n templateUrl: './membership-code-details-modal.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./membership-code-details-modal.component.css']\r\n})\r\nexport class MembershipCodeDetailsModalComponent implements OnInit {\r\n RSNY_ID: number;\r\n membershipDetails: CardMembershipCodes[] = [];\r\n membershipCode: string;\r\n // Angular Material Table\r\n displayedColumns: string[] = ['startDate', 'endDate', 'code', 'updatedBy'];\r\n constructor(@Inject(MAT_DIALOG_DATA) public data: any, private studentSummaryService: StudentSummaryService, private cdr: ChangeDetectorRef, private dialogRef: MatDialogRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.RSNY_ID = this.data.RSNY_ID;\r\n this.membershipCode = this.data.membershipCode;\r\n this.getMembershipCodes();\r\n }\r\n\r\n getMembershipCodes() {\r\n this.studentSummaryService.getMembershipCodes(this.RSNY_ID).subscribe((response) => {\r\n if (response.ok) {\r\n this.membershipDetails = response.body;\r\n // Manually trigger change detection\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Enrollment\r\n
\r\n
\r\n
\r\n
\r\n \r\n 0\" [expanded]=\"true\" class=\"mat-elevation-z0\" style=\"border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: lightgray;\">\r\n \r\n \r\n Details\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n Prior District\r\n {{e.PriorDistrict}} \r\n \r\n\r\n \r\n \r\n Prior State\r\n {{e.PriorState}}\r\n \r\n\r\n \r\n \r\n Prior Country\r\n {{e.PriorCountry}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
Name/Photo in Newspapers
\r\n
{{enrollmentDetails[0].InNewsPapers ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Use info in Athletic Publications
\r\n
{{enrollmentDetails[0].AthleticPublications ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Use info in School Publications
\r\n
{{enrollmentDetails[0].SchoolPublications ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
\r\n
\r\n
Directory Information
\r\n
{{enrollmentDetails[0].DirectoryInformation ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Include in Class Rank
\r\n
{{enrollmentDetails[0].IncludeInClassRank ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Armed Forces
\r\n
{{enrollmentDetails[0].ArmedForces ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Prior District
\r\n
{{enrollmentDetails[0].PriorDistrict}}
\r\n
\r\n
\r\n
Include in class Rank
\r\n
{{enrollmentDetails[0].IncludeInClassRank ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
\r\n
\r\n 0\" [expanded]=\"true\" class=\"mat-elevation-z0\">\r\n \r\n \r\n History\r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n Year\r\n {{e.AcademicYearDesc}}\r\n \r\n\r\n \r\n \r\n School\r\n {{e.SchoolName}}\r\n \r\n\r\n \r\n \r\n Grade\r\n {{e.GradeLevel}}\r\n \r\n\r\n \r\n \r\n Enrolled\r\n {{e.EnrolledDate | date:'MM/dd/yy'}}\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Enrollment Code
\r\n
{{enrollmentRecord.EnrollmentCode}}
\r\n
\r\n \r\n
\r\n
Membership Code
\r\n
{{enrollmentRecord.MembershipCode}}
\r\n \r\n
\r\n \r\n
\r\n
FTE
\r\n
{{enrollmentRecord.MembershipCode}}
\r\n
\r\n
\r\n
Withdrawal
\r\n
{{enrollmentRecord.WithdrawalDate | date: 'MM/dd/yy'}}
\r\n
\r\n
\r\n
Code
\r\n
{{enrollmentRecord.WithdrawalCode}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {Student360Service} from '../../../../student360.service';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {CardStudentEnrollment} from './card-student-enrollment';\r\nimport {TylerMatTableDataSource} from '../../../../../shared-components/angular-material/extended.class';\r\nimport {detailExpand} from '../../../../../shared-components/angular-material/mat-animations';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {MembershipCodeDetailsModalComponent} from './membership-code-details-modal/membership-code-details-modal.component';\r\nimport {LoginService} from '../../../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-enrollment-card',\r\n templateUrl: './enrollment-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./enrollment-card.component.css'],\r\n // Animation for when the detail row is expanded or collapsed\r\n animations: [detailExpand]\r\n})\r\nexport class EnrollmentCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n v10: boolean;\r\n card: Card;\r\n // Angular Material Table\r\n displayedColumns: string[] = ['priorDistrict', 'priorState', 'priorCountry'];\r\n historyColumns: string[] = ['year', 'school', 'grade', 'enrolled', 'more'];\r\n angularMatData = new TylerMatTableDataSource();\r\n enrollmentHistory: CardStudentEnrollment[] = [];\r\n enrollmentDetails: CardStudentEnrollment[] = [];\r\n constructor(\r\n private student360Service: Student360Service,\r\n private userService: UserService,\r\n private cdr: ChangeDetectorRef,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private studentSummaryService: StudentSummaryService,\r\n private dialog: MatDialog,\r\n private loginService: LoginService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getEnrollmentHistory();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getEnrollmentHistory() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentEnrollment(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier).subscribe((response) => {\r\n if (response.ok) {\r\n this.enrollmentHistory = response.body;\r\n this.enrollmentDetails = this.enrollmentHistory.filter(e => e.IsCurrent == true);\r\n this.angularMatData.data = this.enrollmentHistory;\r\n // Because we are using on push change detection trigger cd\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n openMembershipCodeDetails(RSNY_ID: number, membershipCode: string) {\r\n this.dialog.open(MembershipCodeDetailsModalComponent, {disableClose: true, minWidth: '60vw', autoFocus: false, data: {RSNY_ID: RSNY_ID, membershipCode: membershipCode}});\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n // These methods are used to allow calls to the TylerMatTableDataSource methods from the html\r\n toggleExpanded(row: any) {\r\n // Toggles row between expanded and collapsed\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n // Return true if expanded and false if collapsed\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n // Expand or collapse all rows\r\n // true => expand all false => collapse all\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n}\r\n","export class CardStudentContact {\r\n CanPickUp: boolean;\r\n CellNumber: string;\r\n Contact_Name: string;\r\n Email: string;\r\n EmergencyNumber: string;\r\n EmergencySequenceNumber: number;\r\n Employer: string;\r\n HasCustody: boolean;\r\n HomeNumber: string;\r\n IsEmergency: boolean;\r\n IsGuardian: boolean;\r\n IsPrimary: boolean;\r\n IsRestricted: boolean;\r\n LastLogin: string;\r\n LivesWith: boolean;\r\n MailingAddressLine1: string;\r\n MailingAddressLine2: string;\r\n Mem_ID: number;\r\n PID_ID: number;\r\n ParentPortalAccess: boolean;\r\n PrimaryAddressLine1: string;\r\n PrimaryAddressLine2: string;\r\n Relationship: string;\r\n WorkNumber: string;\r\n HomeNumber2: string;\r\n IsEnableLeaveWithHousehold: boolean;\r\n // DTO Field for V9 //\r\n ParentType: string;\r\n Comment: string;\r\n IsHeader: boolean;\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Name\r\n \r\n \r\n {{contact.Contact_Name}}\r\n \r\n {{contact.Contact_Name}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Relationship\r\n \r\n \r\n {{contact.Relationship}}\r\n \r\n\r\n \r\n \r\n \r\n Home\r\n \r\n \r\n {{contact.HomeNumber | phoneNumber}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Cell\r\n \r\n \r\n {{contact.CellNumber | phoneNumber}}\r\n {{contact.CellNumber | phoneNumber}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Student may leave with this person\r\n \r\n \r\n Student may NOT leave with this person\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Email Address
\r\n
{{contactDetails.Email}}\r\n
\r\n
\r\n\r\n
\r\n
Employer
\r\n
{{contactDetails.Employer}}
\r\n
\r\n\r\n
\r\n
Work Phone
\r\n
\r\n {{contactDetails.WorkNumber | phoneNumber}}
\r\n
\r\n
\r\n\r\n
\r\n
Home Phone 2
\r\n
{{contactDetails.HomeNumber2 |\r\n phoneNumber}}
\r\n
\r\n\r\n
\r\n
Portal Access
\r\n
\r\n {{contactDetails.ParentPortalAccess ? 'Y' : 'N'}}\r\n
\r\n
\r\n\r\n
\r\n
Last Login
\r\n
{{contactDetails.LastLogin | date:'MM/dd/yy hh:mm a'}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
Primary Address
\r\n
\r\n
\r\n
\r\n
\r\n
Mailing Address
\r\n
\r\n
\r\n
Same as Primary Address\r\n
\r\n
\r\n
\r\n
Comment
\r\n
{{contactDetails.Comment}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n
Student may leave with\r\n this person
\r\n\r\n
Student may NOT leave\r\n with this person
\r\n\r\n
\r\n
\r\n
\r\n
Work Phone
\r\n
\r\n {{contactDetails.WorkNumber | phoneNumber}}
\r\n
\r\n
\r\n
\r\n
Comment
\r\n
{{contactDetails.Comment}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CardStudentContact } from '../card-student-contact';\r\nimport { TylerMatTableDataSource } from '../../../../../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../../../../../shared-components/angular-material/mat-animations';\r\nimport { SendEmailService } from '../../../../../../shared-modules/send-email/send-email.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'tyl-contacts-v9',\r\n templateUrl: './contacts-v9.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./contacts-v9.component.css'],\r\n animations: [detailExpand]\r\n})\r\nexport class ContactsV9Component implements OnInit {\r\n @Input() contacts: CardStudentContact[];\r\n\r\n displayedColumns: string[] = ['contactKey', 'name', 'relationship', 'home', 'cell', 'more'];\r\n angularMatData = new TylerMatTableDataSource();\r\n parentType = ['Household', 'Emergency', 'Nonresident'];\r\n studentContacts = new Array();\r\n\r\n constructor(private cdr: ChangeDetectorRef, private sendEmailService: SendEmailService, private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.contacts) {\r\n this.contacts.forEach(contact => {\r\n contact.IsHeader = false;\r\n });\r\n\r\n const houseHoldParent = new CardStudentContact();\r\n houseHoldParent.Contact_Name = 'Household Parents/Guardians';\r\n houseHoldParent.IsHeader = true;\r\n houseHoldParent.HomeNumber = '';\r\n houseHoldParent.CellNumber = '';\r\n this.studentContacts.push(houseHoldParent);\r\n this.contacts.filter(o => o.ParentType == 'Household').forEach(element => {\r\n this.studentContacts.push(element);\r\n });\r\n\r\n if (this.contacts.filter(o => o.ParentType == 'Emergency').length > 0) {\r\n const emergencyContact = new CardStudentContact();\r\n emergencyContact.Contact_Name = 'Emergency Contacts';\r\n emergencyContact.IsHeader = true;\r\n emergencyContact.HomeNumber = '';\r\n emergencyContact.CellNumber = '';\r\n this.studentContacts.push(emergencyContact);\r\n this.contacts.filter(o => o.ParentType == 'Emergency').forEach(element => {\r\n this.studentContacts.push(element);\r\n });\r\n }\r\n\r\n if (this.contacts.filter(o => o.ParentType == 'Nonresident').length > 0) {\r\n const nonResidentParent = new CardStudentContact();\r\n nonResidentParent.Contact_Name = 'Nonresident Parents';\r\n nonResidentParent.IsHeader = true;\r\n nonResidentParent.HomeNumber = '';\r\n nonResidentParent.CellNumber = '';\r\n this.studentContacts.push(nonResidentParent);\r\n this.contacts.filter(o => o.ParentType == 'Nonresident').forEach(element => {\r\n this.studentContacts.push(element);\r\n });\r\n }\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.studentContacts);\r\n this.angularMatData.data = this.studentContacts;\r\n }\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n sendEmail(name: string, emailAddress: string) {\r\n this.sendEmailService.teacherEmailAddress = emailAddress;\r\n this.sendEmailService.teacherName = name;\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n\r\n\r\n toggleExpanded(row: any) {\r\n // Toggles row between expanded and collapsed\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n // Return true if expanded and false if collapsed\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n // Expand or collapse all rows\r\n // true => expand all false => collapse all\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n getParentContactTableData(parentType: string): CardStudentContact[] {\r\n return this.contacts.filter(contact => contact.ParentType == parentType);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\"Primary= Primary Contact
\r\n
# = Emergency Contact Sequence
\r\n
R = Restricted
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\"Primary
\r\n \r\n
R
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n 0 && contact.IsEmergency\">{{contact.EmergencySequenceNumber}}\r\n \r\n \r\n\r\n \r\n \r\n Name\r\n {{contact.Contact_Name}}\r\n \r\n\r\n \r\n \r\n Relationship\r\n {{contact.Relationship}}\r\n \r\n\r\n \r\n \r\n Cell\r\n {{contact.CellNumber | phoneNumber}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
RESTRICTED
\r\n \r\n
\r\n
Emergency
\r\n
{{contactDetails.EmergencyNumber | phoneNumber}}
\r\n
\r\n
\r\n
Home
\r\n
{{contactDetails.HomeNumber | phoneNumber}}
\r\n
\r\n
\r\n
Work
\r\n
{{contactDetails.WorkNumber | phoneNumber}}
\r\n
\r\n
\r\n
Employer
\r\n
{{contactDetails.Employer}}
\r\n
\r\n
\r\n
\r\n
Email
\r\n {{contactDetails.Email}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Portal Access
\r\n
{{contactDetails.ParentPortalAccess ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Is Guardian
\r\n
{{contactDetails.IsGuardian ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Can Pick Up
\r\n
{{contactDetails.CanPickUp ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Lives With
\r\n
{{contactDetails.LivesWith ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Has Custody
\r\n
{{contactDetails.HasCustody ? 'Y' : 'N'}}
\r\n
\r\n
\r\n
Last Login
\r\n
{{contactDetails.LastLogin | date:'MM/dd/yy hh:m a'}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Primary Address
\r\n
{{contactDetails.PrimaryAddressLine1}}
\r\n
{{contactDetails.PrimaryAddressLine2}}
\r\n
\r\n
\r\n
Mailing Address
\r\n
{{contactDetails.MailingAddressLine1}}
\r\n
{{contactDetails.MailingAddressLine2}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\r\nimport {CardStudentContact} from '../card-student-contact';\r\nimport {TylerMatTableDataSource} from '../../../../../../shared-components/angular-material/extended.class';\r\nimport {detailExpand} from '../../../../../../shared-components/angular-material/mat-animations';\r\nimport {SendEmailService} from '../../../../../../shared-modules/send-email/send-email.service';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'tyl-contacts-v10',\r\n templateUrl: './contacts-v10.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./contacts-v10.component.css'],\r\n // Animation for when the detail row is expanded or collapsed\r\n animations: [detailExpand]\r\n})\r\nexport class ContactsV10Component implements OnInit {\r\n @Input() contacts: CardStudentContact[];\r\n // Angular Material Table\r\n displayedColumns: string[] = ['contactKey', 'contactSequence', 'name', 'relationship', 'cell', 'more'];\r\n angularMatData = new TylerMatTableDataSource();\r\n\r\n constructor(private cdr: ChangeDetectorRef, private sendEmailService: SendEmailService, private router: Router) {}\r\n\r\n ngOnInit() {\r\n if (this.contacts) {\r\n this.angularMatData.data = this.contacts;\r\n }\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n sendEmail(name: string, emailAddress: string) {\r\n this.sendEmailService.teacherEmailAddress = emailAddress;\r\n this.sendEmailService.teacherName = name;\r\n this.router.navigateByUrl('/student360/sendEmail');\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n // These methods are used to allow calls to the TylerMatTableDataSource methods from the html\r\n toggleExpanded(row: any) {\r\n // Toggles row between expanded and collapsed\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n // Return true if expanded and false if collapsed\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n // Expand or collapse all rows\r\n // true => expand all false => collapse all\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Contacts\r\n
\r\n
\r\n
\r\n
\r\n \r\n 0\" [contacts]=\"contacts\">\r\n 0\" [contacts]=\"contacts\">\r\n
\r\n
\r\n
\r\n
\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {interval, Subscription} from 'rxjs';\r\nimport {Card} from '../../../card-container/card/card';\r\nimport {Student360Service} from '../../../../student360.service';\r\nimport {UserService} from '../../../../../shared-components/user/user.service';\r\nimport {StudentService} from '../../../../../shared-components/student/student.service';\r\nimport {YearService} from '../../../../../shared-components/year/year.service';\r\nimport {StudentSummaryService} from '../../../student-summary.service';\r\nimport {LoginService} from '../../../../../shared-modules/login/login.service';\r\nimport {CardStudentContact} from './card-student-contact';\r\n\r\n@Component({\r\n selector: 'app-contacts-card',\r\n templateUrl: './contacts-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./contacts-card.component.css']\r\n})\r\nexport class ContactsCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n v10: boolean;\r\n contacts: CardStudentContact[] = [];\r\n\r\n constructor(\r\n private student360Service: Student360Service,\r\n private userService: UserService,\r\n private cdr: ChangeDetectorRef,\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private studentSummaryService: StudentSummaryService,\r\n private loginService: LoginService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.card = this.data;\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n if (this.card.display != 'Off') {\r\n const schoolIdStream = interval(100).subscribe(x => {\r\n if (this.studentService.studentEnrollment !== undefined) {\r\n this.getStudentContacts();\r\n schoolIdStream.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getStudentContacts() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardStudentContacts(this.studentService.selectedStudent.Id, schoolId, this.yearService.student360Year.AYIdentifier, this.yearService.student360Year.Id).subscribe((response) => {\r\n if (response.ok) {\r\n this.contacts = response.body;\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n Student Schedule - Staff View\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {{term.CodeDescription}}\r\n \r\n \r\n \r\n
\r\n
\r\n Include dropped classes\r\n
\r\n
\r\n \r\n \r\n \r\n Meets\r\n {{sr.Meets}}\r\n \r\n\r\n \r\n \r\n Term\r\n {{sr.Term}}\r\n \r\n\r\n \r\n \r\n Name\r\n {{sr.Course}}\r\n \r\n\r\n \r\n \r\n Course-Section\r\n {{sr.SubjectCode}}-{{sr.Section}}\r\n \r\n\r\n \r\n \r\n \r\n Entry\r\n \r\n \r\n {{sr.EntryDate | date:'MM/dd/yyyy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Dropped\r\n \r\n \r\n {{sr.DroppedDate | date:'MM/dd/yyyy'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Card } from '../../../card-container/card/card';\r\nimport { Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\nimport { ClassroomTerm } from '../../../../../classroom360/classroom-summary/models/classroom-term.model';\r\nimport { ClassroomSummaryService } from '../../../../../classroom360/classroom-summary/classroom-summary.service';\r\nimport { CourseSchedule } from '../../../../../shared-components/student/course-schedule.model';\r\nimport { StudentService } from '../../../../../shared-components/student/student.service';\r\nimport { Student } from '../../../../../shared-components/student/student.model';\r\nimport { YearService } from '../../../../../shared-components/year/year.service';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-staff-student-schedule-card',\r\n templateUrl: './staff-student-schedule-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./staff-student-schedule-card.component.css']\r\n})\r\nexport class StaffStudentScheduleCardComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: any;\r\n termOptions: ClassroomTerm[];\r\n subscriptions: Subscription[] = [];\r\n card: Card;\r\n showDropped = false;\r\n // Angular Material Table\r\n displayedColumns: string[] = ['Meets', 'Term', 'CourseName', 'CourseSection', 'EntryDate', 'DroppedDate'];\r\n selectedTermId: number;\r\n studentSchedules: CourseSchedule[] = [];\r\n studentSchedule: CourseSchedule[] = [];\r\n constructor(\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n private classroomSummaryService: ClassroomSummaryService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.selectedTermId = 0;\r\n this.termOptions = this.classroomSummaryService.terms;\r\n this.card = this.data;\r\n this.getStudentSchedule();\r\n }\r\n\r\n getStudentSchedule() {\r\n this.studentSchedules = [];\r\n let viewOption = 3;\r\n let termId = 0;\r\n if (this.selectedTermId == -1) { // Today\r\n viewOption = 1;\r\n } else if (this.selectedTermId == -2) { // Next School day\r\n viewOption = 2;\r\n } else if (this.selectedTermId == -3) { // This Week\r\n viewOption = 2;\r\n } else if (this.selectedTermId == 0) { // All Term\r\n viewOption = 3;\r\n } else if (this.selectedTermId > 0) { // Selected term\r\n viewOption = 3;\r\n termId = this.selectedTermId;\r\n }\r\n\r\n this.studentService.getStudentSchedule(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id, viewOption, undefined, undefined, undefined, undefined, true, true, true, undefined, termId).subscribe(data => {\r\n this.studentSchedules = data;\r\n if (!this.showDropped) {\r\n this.studentSchedule = this.studentSchedules.filter(ar => ar.DroppedDate.toString() == '0001-01-01T00:00:00');\r\n } else {\r\n this.studentSchedule = _.cloneDeep(this.studentSchedules);\r\n }\r\n this.updateView();\r\n });\r\n }\r\n\r\n termChange() {\r\n this.getStudentSchedule();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n goToStudentSchedule() {\r\n this.router.navigateByUrl('/student360/schedule?studentPortal=true');\r\n }\r\n\r\n hideShowDropped() {\r\n if (!this.showDropped) {\r\n this.studentSchedule = this.studentSchedules.filter(ar => ar.DroppedDate.toString() == '0001-01-01T00:00:00');\r\n } else {\r\n this.studentSchedule = _.cloneDeep(this.studentSchedules);\r\n }\r\n this.updateView();\r\n }\r\n\r\n updateView() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n}\r\n","import {Component, ComponentFactoryResolver, Input, OnInit, ViewChild, ViewContainerRef} from '@angular/core';\r\nimport {CardTemplateComponent} from '../card-template/card-template.component';\r\nimport {AnnouncementCardComponent} from '../../cards/student/announcement-card/announcement-card.component';\r\nimport {AttendanceCardComponent} from '../../cards/student/attendance-card/attendance-card.component';\r\nimport {AssignmentsCardComponent} from '../../cards/student/assignments-card/assignments-card.component';\r\nimport {CurrentGradesCardComponent} from '../../cards/student/current-grades-card/current-grades-card.component';\r\nimport {DistrictDefinedLinksCardComponent} from '../../cards/student/district-defined-links-card/district-defined-links-card.component';\r\nimport {FeesBillingCardComponent} from '../../cards/student/fees-billing-card/fees-billing-card.component';\r\nimport {MealServiceCardComponent} from '../../cards/student/meal-service-card/meal-service-card.component';\r\nimport {StudentScheduleCardComponent} from '../../cards/student/student-schedule-card/student-schedule-card.component';\r\nimport {UpcomingEventsCardComponent} from '../../cards/student/upcoming-events-card/upcoming-events-card.component';\r\nimport {Card} from './card';\r\nimport {CalendarCardComponent} from '../../cards/student/calendar-card/calendar-card.component';\r\nimport {AttendanceHistoryCardComponent} from '../../cards/staff/attendance-history-card/attendance-history-card.component';\r\nimport {StudentTeamsCardComponent} from '../../cards/staff/student-teams-card/student-teams-card.component';\r\nimport {StudentNotesCardComponent} from '../../cards/staff/student-notes-card/student-notes-card.component';\r\nimport {BehaviorCardComponent} from '../../cards/staff/behavior-card/behavior-card.component';\r\nimport {ProgramsAndServicesCardComponent} from '../../cards/staff/programs-and-services-card/programs-and-services-card.component';\r\nimport {StudentDetailsCardComponent} from '../../cards/staff/student-details-card/student-details-card.component';\r\nimport {EnrollmentCardComponent} from '../../cards/staff/enrollment-card/enrollment-card.component';\r\nimport {ContactsCardComponent} from '../../cards/staff/contacts-card/contacts-card.component';\r\nimport {StaffStudentScheduleCardComponent} from '../../cards/staff/staff-student-schedule-card/staff-student-schedule-card.component';\r\n\r\n@Component({\r\n selector: 'app-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.css']\r\n})\r\nexport class CardComponent implements OnInit {\r\n\r\n @Input() card: Card;\r\n @ViewChild('container', { read: ViewContainerRef, static: true }) private container: ViewContainerRef;\r\n readonly templateMapper = {\r\n announcementCard: AnnouncementCardComponent,\r\n attendanceCard: AttendanceCardComponent,\r\n assignmentsCard: AssignmentsCardComponent,\r\n currentGradesCard: CurrentGradesCardComponent,\r\n districtDefinedLinksCard: DistrictDefinedLinksCardComponent,\r\n feesAndBillingCard: FeesBillingCardComponent,\r\n mealServiceCard: MealServiceCardComponent,\r\n studentScheduleCard: StudentScheduleCardComponent,\r\n upcomingEventsCard: UpcomingEventsCardComponent,\r\n calendarCard: CalendarCardComponent,\r\n attendanceHistoryCard: AttendanceHistoryCardComponent,\r\n studentTeamsCard: StudentTeamsCardComponent,\r\n studentNotesCard: StudentNotesCardComponent,\r\n behaviorCard: BehaviorCardComponent,\r\n programsAndServicesCard: ProgramsAndServicesCardComponent,\r\n studentDetailsCard: StudentDetailsCardComponent,\r\n enrollmentCard: EnrollmentCardComponent,\r\n contactsCard: ContactsCardComponent,\r\n staffStudentScheduleCard: StaffStudentScheduleCardComponent\r\n };\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n\r\n ngOnInit() {\r\n this.loadCards();\r\n }\r\n\r\n private getComponentForCardType(component) {\r\n return this.templateMapper[component];\r\n }\r\n\r\n loadCards() {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.getComponentForCardType(this.card.component));\r\n const viewContainerRef = this.container;\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n (componentRef.instance).data = this.card;\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n","
\r\n \r\n
\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {UserService} from '../../../shared-components/user/user.service';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n selector: 'app-card-container',\r\n templateUrl: './card-container.component.html',\r\n styleUrls: ['./card-container.component.css']\r\n})\r\nexport class CardContainerComponent implements OnInit {\r\n cardsLeft: any[];\r\n cardsRight: any[];\r\n cardsSorted = false;\r\n\r\n constructor(private userService: UserService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n refreshCards() {\r\n const cards = _.cloneDeep(this.userService.cards);\r\n this.userService.cards = [];\r\n this.userService.cards = cards;\r\n this.filterCards(cards);\r\n }\r\n\r\n filterCards(cards) {\r\n this.cardsSorted = false;\r\n if (this.userService.userType != 1) {\r\n // If the user is not staff remove the staff only cards\r\n cards = cards.filter(card => !card.staffOnly);\r\n }\r\n // Sort cards into left and right columns\r\n this.cardsLeft = cards.filter(card => card.columnPosition == 'L' && card.display != 'Off');\r\n this.cardsRight = cards.filter(card => card.columnPosition == 'R' && card.display != 'Off');\r\n // Sort cards in each column based on position\r\n this.cardsLeft = this.cardsLeft.sort(function (a, b) {\r\n if (a.position < b.position) {\r\n return -1;\r\n }\r\n if (a.position > b.position) {\r\n return 1;\r\n }\r\n });\r\n this.cardsRight = this.cardsRight.sort(function (a, b) {\r\n if (a.position < b.position) {\r\n return -1;\r\n }\r\n if (a.position > b.position) {\r\n return 1;\r\n }\r\n });\r\n this.cardsSorted = true;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { StudentSummaryService } from '../student-summary.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-welcome-modal',\r\n templateUrl: './welcome-modal.component.html',\r\n styleUrls: ['./welcome-modal.component.css']\r\n})\r\nexport class WelcomeModalComponent implements OnInit {\r\n\r\n constructor(\r\n private dialog: MatDialogRef,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private studentSummaryService: StudentSummaryService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeClick() {\r\n this.userService.markWelcomeAsSeen(this.userService.currentUser.StudentId).subscribe(response => {\r\n if (response.ok) {\r\n this.dialog.close();\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n Welcome!\r\n
\r\n
\r\n
\r\n Here are a couple of things to help get you started.\r\n
\r\n
    \r\n
  1. \r\n

    \r\n On the homepage, the menu is always visible on the left side of the screen. On other pages, the menu can be accessed by selecting the menu icon in the upper left corner of the screen:\r\n

    \r\n
    \r\n \r\n
    \r\n
  2. \r\n
  3. \r\n

    \r\n You may choose what information is shown on the Home page by using the Settings panel, accessed by selecting the Settings button in the upper right corner of the screen:\r\n

    \r\n \r\n
  4. \r\n
\r\n
\r\n
\r\n \r\n
\r\n","
\r\n
\r\n 0\">New Announcements \r\n Daily Announcements \r\n
\r\n \r\n\r\n \r\n
\r\n 0\" style=\"margin: 0px;\">\r\n \r\n \r\n \r\n District ({{districtAnnouncements.length}})\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n NEW - {{da.StartDate | date: 'MM/dd/yy'}} -\r\n {{da.Title}}\r\n
\r\n
\r\n
\r\n More\r\n
\r\n
\r\n
\r\n
\r\n 0\" style=\"margin: 0px;\">\r\n \r\n \r\n \r\n School ({{schoolAnnouncements.length}})\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n NEW - {{sa.StartDate | date: 'MM/dd/yy'}} -\r\n {{sa.Title}}\r\n
\r\n
\r\n
\r\n More\r\n
\r\n
\r\n
\r\n
\r\n 0\" style=\"margin: 0px;\">\r\n \r\n \r\n \r\n Class ({{classroomAnnouncements.length}})\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n NEW - {{ca.StartDate | date: 'MM/dd/yy'}} -\r\n {{ca.Title}}\r\n
\r\n
\r\n
\r\n More\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
0 && !v10\">\r\n
0\">\r\n \r\n \r\n

{{sectionNames[i]}}

\r\n \r\n
\r\n
\r\n \r\n \r\n

{{school}}

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
0 && announcements.length ==0 && !v10\">\r\n \r\n \r\n

{{sectionNames[i]}}

\r\n \r\n
\r\n
\r\n \r\n \r\n

{{school}}

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n","import { Component, ElementRef, Inject, OnInit, QueryList, ViewChildren, EventEmitter } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { CardAnnouncement } from '../cards/student/announcement-card/card-announcement';\r\nimport { CardAnnouncementModalComponent } from '../cards/student/announcement-card/card-announcement-modal/card-announcement-modal.component';\r\nimport { StudentSummaryService } from '../student-summary.service';\r\nimport { Router } from '@angular/router';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { Announcement } from '../../../shared-modules/announcement/announcement.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\n\r\n@Component({\r\n selector: 'app-new-announcements-modal',\r\n templateUrl: './new-announcements-modal.component.html',\r\n styleUrls: ['./new-announcements-modal.component.css']\r\n})\r\nexport class NewAnnouncementsModalComponent implements OnInit {\r\n v10: boolean;\r\n districtAnnouncements: CardAnnouncement[] = [];\r\n schoolAnnouncements: CardAnnouncement[] = [];\r\n classroomAnnouncements: CardAnnouncement[] = [];\r\n siteDailyAnnouncement: Announcement[] = [];\r\n @ViewChildren('textArea') textAreas: QueryList;\r\n\r\n showTableFlags = [false, false, false];\r\n showTableDailyFlags = [false, false, false];\r\n sectionNames = ['District Announcements', 'School Announcements', 'Class Announcements'];\r\n districtMessages: Announcement[] = [];\r\n subscriptions: Subscription[] = [];\r\n toggleAllRows: EventEmitter = new EventEmitter();\r\n tableData: TylerMatTableDataSource[] = [];\r\n tableDailyData: TylerMatTableDataSource[] = [];\r\n siteAnnouncement: TylerMatTableDataSource[] = [];\r\n siteDailyAnnouncementTable: TylerMatTableDataSource[] = [];\r\n schoolName: string[] = [];\r\n schoolNameDaily: string[] = [];\r\n constructor(private router: Router, private dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public announcements: any, private dialog: MatDialog, private studentSummaryService: StudentSummaryService, private loginService: LoginService,) {\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.v10) {\r\n this.sortAnnouncements();\r\n }\r\n else {\r\n this.sortAnnouncementsV9();\r\n }\r\n this.studentSummaryService.hasSeenNewAnnouncementModal = true;\r\n }\r\n\r\n checkOverflow(element) {\r\n return element.offsetHeight < element.scrollHeight ||\r\n element.offsetWidth < element.scrollWidth;\r\n }\r\n\r\n sortAnnouncements() {\r\n // Sort the announcements by type\r\n let idx = 0;\r\n this.districtAnnouncements = this.announcements.filter(a => a.AnnouncementType == 'District');\r\n this.schoolAnnouncements = this.announcements.filter(a => a.AnnouncementType == 'School');\r\n this.classroomAnnouncements = this.announcements.filter(a => a.AnnouncementType == 'Classroom');\r\n\r\n setTimeout(() => {\r\n this.districtAnnouncements.forEach((announcement) => {\r\n const ta = this.textAreas.toArray()[idx];\r\n if (ta != undefined) {\r\n announcement.Overflow = this.checkOverflow(ta.nativeElement);\r\n idx++;\r\n }\r\n });\r\n this.schoolAnnouncements.forEach((announcement) => {\r\n const ta = this.textAreas.toArray()[idx];\r\n if (ta != undefined) {\r\n announcement.Overflow = this.checkOverflow(ta.nativeElement);\r\n idx++;\r\n }\r\n });\r\n this.classroomAnnouncements.forEach((announcement) => {\r\n const ta = this.textAreas.toArray()[idx];\r\n if (ta != undefined) {\r\n announcement.Overflow = this.checkOverflow(ta.nativeElement);\r\n idx++;\r\n }\r\n });\r\n }, 0);\r\n }\r\n\r\n sortAnnouncementsV9() {\r\n this.siteDailyAnnouncement = this.announcements.filter(x => x.ShowDaily == true);\r\n this.siteDailyAnnouncementTable[0] = new TylerMatTableDataSource(this.siteDailyAnnouncement);\r\n\r\n this.announcements = this.announcements.filter(x => x.IsNewAnnouncement == true);\r\n this.siteAnnouncement[0] = new TylerMatTableDataSource(this.announcements.filter(x => x.AnnouncementType == 'S' && x.IsNewAnnouncement == true));\r\n this.siteAnnouncement[0].data.forEach(obj => {\r\n if (this.schoolName.length > 0) {\r\n if (!this.schoolName.includes(obj.SchoolName)) {\r\n this.schoolName.push(obj.SchoolName);\r\n }\r\n }\r\n else {\r\n this.schoolName.push(obj.SchoolName);\r\n }\r\n });\r\n this.siteDailyAnnouncementTable[0].data.filter(x => x.AnnouncementType == 'S').forEach(obj => {\r\n if (this.schoolNameDaily.length > 0) {\r\n if (!this.schoolNameDaily.includes(obj.SchoolName)) {\r\n this.schoolNameDaily.push(obj.SchoolName);\r\n }\r\n }\r\n else {\r\n this.schoolNameDaily.push(obj.SchoolName);\r\n }\r\n });\r\n this.tableData[1] = this.siteAnnouncement[0];\r\n this.tableDailyData[1] = this.siteDailyAnnouncementTable[0];\r\n this.subscriptions.push(\r\n this.toggleAllRows.subscribe(toggle => {\r\n this.tableDailyData[0].expandAll(toggle);\r\n this.tableDailyData[1].expandAll(toggle);\r\n this.tableDailyData[2].expandAll(toggle);\r\n })\r\n );\r\n this.subscriptions.push(\r\n this.toggleAllRows.subscribe(toggle => {\r\n this.tableData[0].expandAll(toggle);\r\n this.tableData[1].expandAll(toggle);\r\n this.tableData[2].expandAll(toggle);\r\n })\r\n );\r\n this.virtualizeDaily();\r\n this.virtualize();\r\n }\r\n\r\n virtualize() {\r\n // POST: transforms announcements into grid data\r\n\r\n // District student announcements\r\n const districtData = this.filterAnnouncements(this.announcements, 'D');\r\n this.tableData[0] = new TylerMatTableDataSource(districtData);\r\n this.showTableFlags[0] = districtData.length > 0;\r\n\r\n // School staff announcements\r\n // const schoolData = this.filterAnnouncements(this.announcements, 'S');\r\n // this.tableData[1] = new TylerMatTableDataSource(schoolData);\r\n // this.showTableFlags[1] = schoolData.length > 0;\r\n\r\n // Class staff announcements\r\n const classData = this.filterAnnouncements(this.announcements, 'C');\r\n this.tableData[2] = new TylerMatTableDataSource(classData);\r\n this.showTableFlags[2] = classData.length > 0;\r\n\r\n // District Message\r\n this.districtMessages = this.filterAnnouncements(this.announcements, 'M');\r\n }\r\n\r\n virtualizeDaily() {\r\n const districtData = this.filterAnnouncements(this.siteDailyAnnouncement, 'D');\r\n this.tableDailyData[0] = new TylerMatTableDataSource(districtData);\r\n this.showTableDailyFlags[0] = districtData.length > 0;\r\n\r\n // Class staff announcements\r\n const classData = this.filterAnnouncements(this.siteDailyAnnouncement, 'C');\r\n this.tableDailyData[2] = new TylerMatTableDataSource(classData);\r\n this.showTableDailyFlags[2] = classData.length > 0;\r\n }\r\n\r\n private filterAnnouncements(announcements: Announcement[], type: string) {\r\n // PRE: a list of announcements and a single character type indicator\r\n // POST: filters the announcements for a given type. Returns those announcements whose type matches.\r\n return announcements.filter(function (announcement: Announcement) {\r\n return announcement.AnnouncementType == type;\r\n });\r\n }\r\n\r\n closeClick() {\r\n if (!this.v10) {\r\n if (this.siteDailyAnnouncement.length > 0 && this.announcements.length == 0) {\r\n this.dialogRef.close();\r\n }\r\n else {\r\n this.announcements = [];\r\n if (this.siteDailyAnnouncement.length == 0) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n }\r\n else {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n moreClick(announcement: CardAnnouncement) {\r\n this.dialog.open(CardAnnouncementModalComponent, {\r\n data: announcement,\r\n disableClose: true,\r\n autoFocus: false,\r\n minWidth: '500px',\r\n maxWidth: '700px',\r\n maxHeight: '400px',\r\n minHeight: '300px'\r\n });\r\n }\r\n\r\n allAnnouncementsClick() {\r\n this.dialogRef.close();\r\n this.router.navigateByUrl('/student360/announcements');\r\n }\r\n}\r\n","

Student Notes

\r\n\r\n
\r\n
    \r\n
  • \r\n {{note.Note}}\r\n
  • \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { StudentNote } from '../../../classroom360/student-notes/student-note.model';\r\n\r\n@Component({\r\n selector: 'app-student-notes-popup',\r\n templateUrl: './student-notes-popup.component.html',\r\n styleUrls: ['./student-notes-popup.component.css']\r\n})\r\nexport class StudentNotesPopupComponent implements OnInit {\r\n\r\n notes: StudentNote[];\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialogRef,\r\n ) {\r\n this.notes = data;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n\r\n}\r\n","
\r\n Check In / Check Out\r\n
\r\n\r\n
{{todaysDate | date:'MM/dd/yy'}}\r\n 0\">You are editing an existing request that was submitted at {{checkInOutSubmissionRequest.ProcessedTime}}\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
0\">\r\n
Attachment
\r\n
\r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n {{AR.FileName}}\r\n \r\n \r\n \r\n \r\n Description\r\n \r\n {{AR.AttachmentDescription}}\r\n \r\n \r\n \r\n File Type\r\n \r\n {{AR.DocumentType}}\r\n \r\n \r\n \r\n Uploaded Date\r\n \r\n \r\n {{AR.AttachmentAddedOn|date:'MM/dd/yy h:mm a'}}\r\n \r\n \r\n Actions\r\n \r\n \r\n Delete\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n\r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport * as moment from 'moment';\r\nimport { AddAttachmentDialogComponent } from '../../../shared-components/add-attachment-dialog/add-attachment-dialog.component';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { StudentSummaryService } from '../student-summary.service';\r\nimport { CheckInOutSubmissionRequest } from './check-in-out-submission-request-modal.model';\r\n\r\n@Component({\r\n selector: 'app-check-in-out-submission-request-modal',\r\n templateUrl: './check-in-out-submission-request-modal.component.html',\r\n styleUrls: ['./check-in-out-submission-request-modal.component.css']\r\n})\r\nexport class CheckInOutSubmissionRequestModalComponent implements OnInit {\r\n todaysDate = new Date();\r\n checkInOutSubmissionRequest: CheckInOutSubmissionRequest;\r\n columnsToDisplay = ['FileName', 'Description', 'DocumentType', 'UploadedDate', 'Actions'];\r\n angularMatData = new TylerMatTableDataSource();\r\n\r\n errors: ErrorList[] = [];\r\n @ViewChild('timeInput', { read: ElementRef, static: true }) timeRef: ElementRef;\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private studentSummaryService: StudentSummaryService) { }\r\n\r\n ngOnInit() {\r\n this.checkInOutSubmissionRequest = this.data.checkInOutRequest;\r\n this.loadAttachmentTable();\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n deleteAttachmentClick(attachmentId: number) {\r\n this.checkInOutSubmissionRequest.SubmissionAttachment.find(o => o.Id == attachmentId).Deleted = true;\r\n this.loadAttachmentTable();\r\n }\r\n\r\n saveAttachment(attachment: Attachment) {\r\n // PRE: an attachment to open\r\n // POST: takes you to the student attachment page\r\n if (attachment.FileName && !attachment.AttachmentFileName) {\r\n attachment.AttachmentFileName = attachment.FileName;\r\n }\r\n\r\n if (attachment.MyFileBase64String && attachment.AttachmentFileName && attachment.FileType) {\r\n System.viewFileFromBase(attachment.MyFileBase64String, attachment.FileType, attachment.AttachmentFileName);\r\n } else if (attachment.Id && attachment.AttachmentFileName) {\r\n System.viewFileFromId(attachment.Id, attachment.AttachmentFileName);\r\n }\r\n }\r\n\r\n addAttachmentClick() {\r\n // POST: opens a modal to add an attachment\r\n\r\n // Initializing attachment\r\n const attachment = new Attachment();\r\n attachment.Id = this.checkInOutSubmissionRequest != undefined ? -(this.checkInOutSubmissionRequest.SubmissionAttachment.length + 1) : -1;\r\n attachment.DocumentId = 0;\r\n attachment.FileName = '';\r\n attachment.Description = '';\r\n attachment.UploadedDate = new Date();\r\n attachment.MyFileBase64String = '';\r\n attachment.FileType = '';\r\n attachment.Comment = '';\r\n attachment.ViewFileOnWebsite = true;\r\n attachment.AttachmentDescription = '';\r\n\r\n // Opening modal\r\n const dialogBox = this.dialog.open(AddAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment,\r\n newAttachment: true,\r\n requireDocumentType: true\r\n },\r\n disableClose: true\r\n });\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n attachment.AttachmentDescription = attachment.Description;\r\n attachment.DocumentBase64 = attachment.MyFileBase64String;\r\n attachment.DocumentType = attachment.FileType;\r\n attachment.MyFileBase64String = '';\r\n this.checkInOutSubmissionRequest.SubmissionAttachment.push(attachment);\r\n this.loadAttachmentTable();\r\n }\r\n });\r\n }\r\n\r\n loadAttachmentTable() {\r\n this.angularMatData.data = this.checkInOutSubmissionRequest.SubmissionAttachment.filter(x => x.Deleted == false);\r\n }\r\n\r\n saveClick() {\r\n this.validateCheck();\r\n if (this.errors.length == 0) {\r\n this.checkInOutSubmissionRequest.Time = this.convertTime(this.checkInOutSubmissionRequest.Time);\r\n this.studentSummaryService.saveCheckInOutSubmissionRequest(this.checkInOutSubmissionRequest).subscribe(result => {\r\n if (result == true) {\r\n this.dialogRef.close();\r\n }\r\n });\r\n }\r\n }\r\n\r\n validateCheck() {\r\n this.errors = [];\r\n\r\n if (this.checkInOutSubmissionRequest.Time == undefined || this.checkInOutSubmissionRequest.Time == null || this.checkInOutSubmissionRequest.Time == '') {\r\n this.errors.push({\r\n fieldName: 'Time',\r\n fieldRef: this.timeRef,\r\n errorMsg: ' is required.'\r\n });\r\n }\r\n\r\n if (this.checkInOutSubmissionRequest.Time != undefined && this.checkInOutSubmissionRequest.Time != '') {\r\n if (this.validateTime(this.checkInOutSubmissionRequest.Time) != true) {\r\n this.errors.push({\r\n fieldName: 'Time',\r\n fieldRef: this.timeRef,\r\n errorMsg: ' Invalid Time.'\r\n });\r\n }\r\n }\r\n }\r\n\r\n validateTime(time) {\r\n const hourIndex = time.toString().indexOf(':');\r\n if (hourIndex == -1) {\r\n return false;\r\n }\r\n else {\r\n const hourValue = time.substring(0, hourIndex);\r\n if (!$.isNumeric(hourValue)) {\r\n return false;\r\n }\r\n else {\r\n if (hourValue[0] == '0' || hourValue >= 13 && hourValue <= 24) {\r\n if ((time.toLowerCase().indexOf('am') != -1 || time.toLowerCase().indexOf('pm') != -1) && hourValue > 12) {\r\n return false;\r\n }\r\n else {\r\n return System.validate24HourTime(time.toLowerCase().replace(' ', '').replace('am', '').replace('pm', ''));\r\n }\r\n }\r\n else {\r\n if (hourValue < 10) {\r\n if (time.toLowerCase().indexOf('pm') == -1 && time.toLowerCase().indexOf('am') == -1) {\r\n return System.validate12HourTime('0' + time + ' AM');\r\n }\r\n else {\r\n return System.validate12HourTime('0' + time);\r\n }\r\n }\r\n else {\r\n if (time.toLowerCase().indexOf('pm') == -1 && time.toLowerCase().indexOf('am') == -1) {\r\n return System.validate12HourTime(time + ' AM');\r\n }\r\n else {\r\n return System.validate12HourTime(time);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n convertTime(time) {\r\n if (time.indexOf(':') == 1) {\r\n time = '0' + time;\r\n }\r\n let ampm = '';\r\n if (time.toLowerCase().indexOf('pm') > -1) { ampm = ' PM'; }\r\n else if (time.toLowerCase().indexOf('am') > -1) { ampm = ' AM'; }\r\n\r\n time = time.toLowerCase().replace('am', '').replace('pm', '');\r\n time = time.toString().trim().match(/^([01]\\d|2[0-3])(:)([0-5]\\d)(:[0-5]\\d)?$/) || [time];\r\n if (time.length > 1) { // If time format correct\r\n time = time.slice(1); // Remove full string match value\r\n time[5] = ampm != '' ? ampm : (+time[0] < 12 ? ' AM' : ' PM'); // Set AM/PM\r\n time[0] = +time[0] % 12 || 12; // Adjust hours\r\n }\r\n if (time[0] < 10) {\r\n time[0] = '0' + time[0];\r\n }\r\n\r\n\r\n return time.join('');\r\n }\r\n\r\n}\r\n","import { Attachment } from '../../../shared-components/models/attachment.model';\r\n\r\nexport class CheckInOutButtonSettings {\r\n AllowParentEnterCheckInOut: boolean;\r\n AllowParentEnterCheckInOutMobile: boolean;\r\n AllowParentEnterAbsentNotice: boolean;\r\n AllowStudentEnterCheckInOut: boolean;\r\n AllowStudentEnterCheckInOutMobile: boolean;\r\n AllowStudentEnterAbsentNotice: boolean;\r\n }\r\n\r\n export class CheckInOutSubmissionRequest {\r\n Id = 0;\r\n StudentId: number;\r\n Type = 'I';\r\n Time = '';\r\n Reason = '';\r\n SubmissionAttachment: Attachment[] = [];\r\n ProcessedTime = '';\r\n Date: Date;\r\n Status = '';\r\n Attachment: boolean;\r\n SubmittedBy = '';\r\n }\r\n","import { Attachment } from \"../../../shared-components/models/attachment.model\";\r\n\r\nexport class AbsentNotice {\r\n Id: number;\r\n StudentId: number;\r\n SubmittedPeopleId: number;\r\n SubmittedName: string;\r\n StudentNumber: string;\r\n FirstName: string;\r\n MiddleName: string;\r\n LastName: string;\r\n NickName: string;\r\n Deleted: boolean;\r\n StartDate: Date;\r\n EndDate: Date;\r\n Reason: string;\r\n Status: string;\r\n LastUpdated: Date;\r\n LastUpdatedBy: number;\r\n Attachment: boolean;\r\n Attachments: Attachment[] = [];\r\n}","
\r\n Absent Notice\r\n
\r\n\r\n
\r\n 0\">You are editing an existing notice that was submitted on {{absentNotice.LastUpdated | date:'MM/dd/yy'}} at {{absentNotice.LastUpdated | date:'h:mm a'}}\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
0\">\r\n
Attachment
\r\n
\r\n \r\n \r\n File Name\r\n \r\n \r\n \r\n {{AR.FileName}}\r\n \r\n \r\n \r\n \r\n Description\r\n \r\n {{AR.AttachmentDescription}}\r\n \r\n \r\n \r\n File Type\r\n \r\n {{AR.DocumentType}}\r\n \r\n \r\n \r\n Uploaded Date\r\n \r\n \r\n {{AR.AttachmentAddedOn|date:'MM/dd/yy h:mm a'}}\r\n \r\n \r\n Actions\r\n \r\n \r\n Delete\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n\r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { take } from 'rxjs/operators';\r\nimport * as moment from 'moment';\r\nimport { AttendanceAdministrationService } from '../../../admin360/attendance-administration/attendance-administration.service';\r\nimport { AbsentNotice } from '../../../admin360/attendance-administration/review-absent-notices/absent-notice.model';\r\nimport { ReviewAbsentNoticesService } from '../../../admin360/attendance-administration/review-absent-notices/review-absent-notices.service';\r\nimport { AddAttachmentDialogComponent } from '../../../shared-components/add-attachment-dialog/add-attachment-dialog.component';\r\nimport { TylerMatTableDataSource } from '../../../shared-components/angular-material/extended.class';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { Attachment } from '../../../shared-components/models/attachment.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { YearService } from '../../../shared-components/year/year.service';\r\nimport { StudentSummaryService } from '../student-summary.service';\r\nimport { StudentService } from '../../../shared-components/student/student.service';\r\n\r\n@Component({\r\n selector: 'app-absent-notice-submission-modal',\r\n templateUrl: './absent-notice-submission-modal.component.html',\r\n styleUrls: ['./absent-notice-submission-modal.component.css']\r\n})\r\nexport class AbsentNoticeSubmissionModalComponent implements OnInit {\r\n absentNotice: AbsentNotice;\r\n columnsToDisplay = ['FileName', 'Description', 'DocumentType', 'UploadedDate', 'Actions'];\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild('startDateInput', { read: ElementRef, static: true }) startDateRef: ElementRef;\r\n @ViewChild('endDateInput', { read: ElementRef, static: true }) endDateRef: ElementRef;\r\n\r\n errors: ErrorList[] = [];\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialog: MatDialog,\r\n private absentNoticesService: ReviewAbsentNoticesService,\r\n private studentService: StudentService,\r\n private attendanceAdminService: AttendanceAdministrationService) { }\r\n\r\n ngOnInit() {\r\n this.absentNotice = this.data.absentNotice;\r\n // Guarantees the dates will actually be a Date type (Javascript...)\r\n this.absentNotice.StartDate = new Date(this.absentNotice.StartDate);\r\n this.absentNotice.EndDate = new Date(this.absentNotice.EndDate);\r\n this.loadAttachmentTable();\r\n }\r\n\r\n cancelClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n deleteAttachmentClick(attachmentId: number) {\r\n this.absentNotice.Attachments.find(o => o.Id == attachmentId).Deleted = true;\r\n this.loadAttachmentTable();\r\n }\r\n\r\n saveAttachment(attachment: Attachment) {\r\n // PRE: an attachment to open\r\n // POST: takes you to the student attachment page\r\n if (attachment.FileName && !attachment.AttachmentFileName) {\r\n attachment.AttachmentFileName = attachment.FileName;\r\n }\r\n\r\n if (attachment.MyFileBase64String && attachment.AttachmentFileName && attachment.FileType) {\r\n System.viewFileFromBase(attachment.MyFileBase64String, attachment.FileType, attachment.AttachmentFileName);\r\n } else if (attachment.Id && attachment.AttachmentFileName) {\r\n System.viewFileFromId(attachment.Id, attachment.AttachmentFileName);\r\n }\r\n }\r\n\r\n addAttachmentClick() {\r\n // POST: opens a modal to add an attachment\r\n\r\n // Initializing attachment\r\n const attachment = new Attachment();\r\n attachment.Id = this.absentNotice != undefined ? -(this.absentNotice.Attachments.length + 1) : -1;\r\n attachment.DocumentId = 0;\r\n attachment.FileName = '';\r\n attachment.Description = '';\r\n attachment.UploadedDate = new Date();\r\n attachment.MyFileBase64String = '';\r\n attachment.FileType = '';\r\n attachment.Comment = '';\r\n attachment.ViewFileOnWebsite = true;\r\n attachment.AttachmentDescription = '';\r\n\r\n // Opening modal\r\n const dialogBox = this.dialog.open(AddAttachmentDialogComponent, {\r\n data: {\r\n attachment: attachment,\r\n newAttachment: true,\r\n requireDocumentType: true\r\n },\r\n disableClose: true\r\n });\r\n dialogBox.afterClosed().subscribe(() => {\r\n if (dialogBox.componentInstance.saved) {\r\n attachment.AttachmentDescription = attachment.Description;\r\n attachment.DocumentBase64 = attachment.MyFileBase64String;\r\n attachment.DocumentType = attachment.FileType;\r\n attachment.MyFileBase64String = '';\r\n this.absentNotice.Attachments.push(attachment);\r\n this.loadAttachmentTable();\r\n }\r\n });\r\n }\r\n\r\n loadAttachmentTable() {\r\n this.angularMatData.data = this.absentNotice.Attachments.filter(x => x.Deleted == false);\r\n }\r\n\r\n saveClick() {\r\n this.validateCheck(() => {\r\n if (this.errors.length == 0) {\r\n this.absentNoticesService.saveAbsentNotice(this.absentNotice).subscribe(result => {\r\n if (result) {\r\n this.dialogRef.close();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n validateCheck(_callBack) {\r\n this.errors = [];\r\n\r\n if (this.absentNotice.StartDate == null || !moment(this.absentNotice.StartDate).isValid()) {\r\n this.errors.push(\r\n {\r\n fieldName: '',\r\n fieldRef: this.startDateRef,\r\n errorMsg: 'You must specify a Start Date'\r\n });\r\n }\r\n\r\n if (this.absentNotice.EndDate == null || !moment(this.absentNotice.EndDate).isValid()) {\r\n this.errors.push(\r\n {\r\n fieldName: '',\r\n fieldRef: this.endDateRef,\r\n errorMsg: 'You must specify a End Date'\r\n });\r\n }\r\n\r\n if (this.errors.length == 0) {\r\n this.attendanceAdminService.getSchoolDaysBetweenDates(this.studentService.studentEnrollment.SiteYearId, this.absentNotice.StartDate.toLocaleDateString(), this.absentNotice.EndDate.toLocaleDateString()).pipe(take(1)).subscribe(dates => {\r\n if (dates.length > 5) {\r\n this.errors.push(\r\n {\r\n fieldName: '',\r\n fieldRef: this.endDateRef,\r\n errorMsg: 'An Absent Request cannot be more than 5 school days. Please contact your school for absences longer than this period.'\r\n });\r\n }\r\n _callBack();\r\n });\r\n }\r\n else {\r\n _callBack();\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
0 && !defaultAcademicYear\" class=\"eventExclamationContainer\">\r\n
\r\n
\r\n \r\n
\r\n
\r\n Required e-Forms have not been\r\n submitted ({{requiredEFormAvailable}})View\r\n
\r\n
\r\n
\r\n \r\n
0 && (unmarkedOptionalEFormsEvents || !v10) && !defaultAcademicYear && (recentOptionalEFormEvents && recentOptionalEFormEvents.Count || v10)\"\r\n class=\"eventAlertContainer\">\r\n
\r\n
\r\n \r\n
\r\n
\r\n New optional e-Forms are availableView\r\n
\r\n \r\n
X
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{'Course Requests may now be entered' | translate}} View\r\n
\r\n
\r\n
\r\n
\r\n \r\n
0\" class=\"eventAlertContainer\">\r\n
\r\n
\r\n \r\n
\r\n \r\n New documents published in the last seven days({{studentDocuments.length}})\r\n Attendance Letters\r\n Behavior Letters\r\n View All\r\n
\r\n
\r\n
X
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n -1 && !v10\">\r\n {{'Online Registration must be completed for' | translate}} \r\n -1 && !v10\">{{onlineRegistrationStatus | slice:onlineRegistrationStatus.indexOf('for') + 3 :onlineRegistrationStatus.length}}\r\n {{onlineRegistrationStatus | translate}}\r\n {{onlineRegistrationStatus | translate}} {{requiredORYear}}\r\n View\r\n
\r\n
\r\n
\r\n \r\n
\r\n
0\"\r\n class=\"eventAlertContainer\">\r\n
\r\n
\r\n \r\n
\r\n \r\n Behavior events in the last seven\r\n days({{recentDisciplineEvents.Count}}\r\n )View\r\n
\r\n \r\n
X
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n
0\"\r\n class=\"eventAlertContainer\">\r\n
\r\n
\r\n \r\n
\r\n \r\n Behavior letters in the last seven\r\n days ({{recentBehaviorLetters.Count}})View\r\n
\r\n \r\n
X
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
0\" class=\"eventAlertContainer\">\r\n
\r\n
\r\n \r\n
\r\n \r\n Health visits in the last seven\r\n days({{recentHealthEvents.Count}}\r\n )View\r\n
\r\n \r\n
X
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Behavior letters in the last seven\r\n days ({{recentBehaviorLetters.Count}})View\r\n
\r\n \r\n
X
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n","import {AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {Student360Service} from '../student360.service';\r\nimport {Portal} from '../../shared-components/portal.model';\r\nimport {LoginService} from '../../shared-modules/login/login.service';\r\nimport {StudentService} from '../../shared-components/student/student.service';\r\nimport {Student} from '../../shared-components/student/student.model';\r\nimport {forkJoin, Subscription} from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {SharedService} from '../../shared-components/shared.service';\r\nimport {UserService} from '../../shared-components/user/user.service';\r\nimport {YearService} from '../../shared-components/year/year.service';\r\nimport {NavigationExtras, Router} from '@angular/router';\r\nimport {AutoUnsubscribe} from 'ngx-auto-unsubscribe';\r\nimport {StudentSummaryService} from './student-summary.service';\r\nimport {SettingsMenuModalComponent} from './settings-menu-modal/settings-menu-modal.component';\r\nimport {CardContainerComponent} from './card-container/card-container.component';\r\nimport {Enrollment} from '../../shared-components/student/enrollment.model';\r\nimport {WelcomeModalComponent} from './welcome-modal/welcome-modal.component';\r\nimport {UserPreferencesService} from '../../shared-components/user-preferences/user-preferences.service';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport {Classroom360Service} from '../../classroom360/classroom360.service';\r\nimport {OnlinePaymentConfiguration} from '../online-payment/models/online-payment-config.model';\r\nimport {NewAnnouncementsModalComponent} from './new-announcements-modal/new-announcements-modal.component';\r\nimport {AnnouncementService} from '../../shared-modules/announcement/announcement.service';\r\nimport {EFormService} from '../../shared-components/e-forms/e-form.service';\r\nimport {OnlineRegistrationService} from '../online-registration/online-registration.service';\r\nimport {MultipleFamiliesComponent} from '../online-registration/student-update/multiple-families/multiple-families.component';\r\nimport {SecurityService} from '../../shared-components/security/security.service';\r\nimport {PermissionEnum} from '../../shared-components/security/permissions.enums';\r\nimport {StudentNote} from '../../classroom360/student-notes/student-note.model';\r\nimport {StudentNotesPopupComponent} from './student-notes-popup/student-notes-popup.component';\r\nimport {StudentDocuments} from '../../shared-components/student/student-documents.model';\r\nimport {NotificationsService} from '../../admin360/notifications/notifications.service';\r\nimport { CheckInOutSubmissionRequestModalComponent } from './check-in-out-submission-request-modal/check-in-out-submission-request-modal.component';\r\nimport { CheckInOutSubmissionRequest } from './check-in-out-submission-request-modal/check-in-out-submission-request-modal.model';\r\nimport { ReviewAbsentNoticesService } from '../../admin360/attendance-administration/review-absent-notices/review-absent-notices.service';\r\nimport { AbsentNotice } from '../../admin360/attendance-administration/review-absent-notices/absent-notice.model';\r\nimport { AbsentNoticeSubmissionModalComponent } from './absent-notice-submission-modal/absent-notice-submission-modal.component';\r\n\r\n@AutoUnsubscribe({\r\n includeArrays: true\r\n})\r\n@Component({\r\n selector: 'studentSummary',\r\n templateUrl: './student-summary.component.html',\r\n styleUrls: ['./student-summary.component.css']\r\n})\r\nexport class StudentSummaryComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n selectedStudent: Student;\r\n studentEnrollment: Enrollment;\r\n onlineRegistrationStatus = '';\r\n v10: boolean;\r\n subscriptions: Subscription[] = [];\r\n recentDisciplineEvents: any;\r\n recentHealthEvents: any;\r\n unmarkedOptionalEFormsEvents: boolean;\r\n userType: number;\r\n @ViewChild(CardContainerComponent, { static: true }) cardContainer: CardContainerComponent;\r\n parentAssignedPortalsSubscription: Subscription;\r\n staffAssignedPortalsSubscription: Subscription;\r\n displayORHeadline: boolean;\r\n displayCourseRequestHeadline = false;\r\n onlinePaymentConfiguration: OnlinePaymentConfiguration = new OnlinePaymentConfiguration();\r\n requiredEFormAvailable: number;\r\n optionalEFormAvailable: number;\r\n eFormsActivated: boolean;\r\n defaultAcademicYear: boolean;\r\n optionalInstanceIds = '';\r\n studentDocumentIds = '';\r\n recentOptionalEFormEvents: any;\r\n eFormHeadLinePermission = false;\r\n requiredORYear = '';\r\n portals: Portal[] = [];\r\n\r\n studentDocuments: StudentDocuments[];\r\n behaviorlatterStudentDocuments = false;\r\n attendancelatterStudentDocuments = false;\r\n\r\n displayBehaviorLetterHeadline = false;\r\n recentBehaviorLetters: any;\r\n\r\n enableCheckInOut = false;\r\n enableAbsentNotice = false;\r\n checkInOutSubmissionRequest: CheckInOutSubmissionRequest;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private router: Router,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private sharedService: SharedService,\r\n private yearService: YearService,\r\n private dialog: MatDialog,\r\n private ref: ChangeDetectorRef,\r\n private classroom360Service: Classroom360Service,\r\n private student360Service: Student360Service,\r\n private studentSummaryService: StudentSummaryService,\r\n private userPreferencesService: UserPreferencesService,\r\n private announcementService: AnnouncementService,\r\n private eFormService: EFormService,\r\n private onlineRegService: OnlineRegistrationService,\r\n private securityService: SecurityService,\r\n private notificationsService: NotificationsService\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.userType = this.userService.userType;\r\n this.v10 = this.loginService.LoginSettings.V10;\r\n this.subscriptions.push(this.yearService.observableStudent360YearStream$.subscribe(student360Year => {\r\n this.getOnlineRegistrationStatus();\r\n this.cardContainer.refreshCards();\r\n }));\r\n this.subscriptions.push(this.studentService.observableStudentEnrollmentStream$.subscribe(enrollment => {\r\n if (enrollment) {\r\n this.loadStudentInfo(enrollment.StudentId);\r\n // Check for New Announcements\r\n if (this.userService.currentUser.UserType != 1) {\r\n this.getAnnouncements();\r\n this.getCheckInOutButtnSettings(enrollment.StudentId, enrollment.AcademicYearID);\r\n }\r\n if (this.userService.currentUser.UserType == 1) {\r\n this.getStudentNotes();\r\n }\r\n this.getCourseRequestStatus();\r\n this.getBehaviorLetterEvents();\r\n }\r\n }));\r\n this.getOnlinePaymentConfiguration();\r\n if (this.userService.userType == 1) { // If Staff\r\n // Get Behavior Letter Events\r\n if (this.v10 && this.selectedStudent) {\r\n this.getBehaviorLetterEvents();\r\n }\r\n this.subscriptions.push(this.staffAssignedPortalsSubscription = this.classroom360Service.observableStaffAssignedPortalsStream$\r\n .subscribe(portals => {\r\n if (portals.length > 0) {\r\n this.portals = portals.filter(portal => !portal.Deleted);\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n this.checkPortals(this.portals);\r\n }\r\n }));\r\n } else { // If Parent or Student\r\n this.subscriptions.push(this.parentAssignedPortalsSubscription = this.student360Service.observableParentAssignedPortalsStream$\r\n .subscribe(portals => {\r\n if (portals.length > 0) {\r\n this.portals = portals.filter(portal => !portal.Deleted);\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n this.checkPortals(this.portals);\r\n this.checkEFormAvailable();\r\n if (!this.loginService.LoginSettings.V10) {\r\n this.getStudentDocuments();\r\n }\r\n }\r\n // if (this.v10) {\r\n // }\r\n if (!this.loginService.LoginSettings.V10) {\r\n this.defaultAcademicYear = ((this.yearService.defaultYear.Id == this.yearService.student360Year.Id) && this.v10) || (this.yearService.student360Year.Status == 1) || (this.yearService.student360Year.Status == 2) ? false : true;\r\n }\r\n }));\r\n }\r\n if (!this.v10) {\r\n this.getAnnouncementsPopup();\r\n }\r\n this.getOnlineRegistrationStatus();\r\n // Checking student broadcasts\r\n this.announcementService.checkBroadcast();\r\n this.notificationsService.setNotificationChecking();\r\n this.subscriptions.push(this.eFormService.observableeFormHeadLinePermissionStream$.subscribe(fieldsExist => {\r\n this.eFormHeadLinePermission = this.eFormService.eFormHeadLinePermission;\r\n }));\r\n if (this.userService.currentUser.UserType == 1) {\r\n this.getStudentNotes();\r\n }\r\n }\r\n\r\n private getBehaviorLetterEvents() {\r\n const that = this;\r\n this.displayBehaviorLetterHeadline = false;\r\n this.studentSummaryService.getStudentRecentEvents(this.selectedStudent.Id, this.userService.currentUser.MemberId, this.yearService.student360Year.Id, this.optionalInstanceIds).subscribe(response => {\r\n if (response.ok) {\r\n that.recentBehaviorLetters = response.body.filter(rde => rde.Type == 'BehaviorLetter')[0];\r\n if (that.recentBehaviorLetters && that.recentBehaviorLetters.Count > 0) {\r\n that.displayBehaviorLetterHeadline = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.sharedService.updateIsPageLoaded(true);\r\n this.eFormHeadLinePermission = this.eFormService.eFormHeadLinePermission;\r\n }\r\n\r\n getStudentNotes() {\r\n // Determine wheather the user has permission to get StudentNotes\r\n if (this.v10) {\r\n\r\n if (this.securityService.IsAnyPermissionAssigned(PermissionEnum.StudentNotesCounselorView, PermissionEnum.StudentNotesMyStudentsView, PermissionEnum.StudentNotesStudentRecordView)) {\r\n this.subscriptions.push(forkJoin([this.studentSummaryService.getStudentNoteCategories(this.yearService.student360Year.SchoolID, this.yearService.student360Year.Id),\r\n this.studentSummaryService.getStudentNotesForPopup(this.selectedStudent.Id, this.yearService.student360Year.SchoolID, this.yearService.student360Year.Id)]).subscribe(result => {\r\n if (result) {\r\n const notesToDisplay: StudentNote[] = [];\r\n const categories = result[0];\r\n const notes = result[1];\r\n const popupCategories = _.sortBy(_.filter(categories, cat => cat.StudentNotesPopup), cat => cat.DisplayOrder);\r\n popupCategories.forEach(cat => {\r\n const popupNotes = _.sortBy(notes.filter(note => note.SNCID == cat.Id), n => n.Order);\r\n popupNotes.forEach(note => {\r\n if (cat.OncePerSession && this.studentSummaryService.acknowledgedStudentNotes.filter(n => n.Id == note.Id).length == 0) {\r\n notesToDisplay.push(note);\r\n this.studentSummaryService.acknowledgedStudentNotes.push(note);\r\n } else if (!cat.OncePerSession) {\r\n notesToDisplay.push(note);\r\n }\r\n });\r\n });\r\n if (notesToDisplay.length > 0) {\r\n const dialogRef = this.dialog.open(StudentNotesPopupComponent,\r\n {\r\n disableClose: true,\r\n data: notesToDisplay\r\n });\r\n }\r\n }\r\n }));\r\n }\r\n } else {\r\n this.subscriptions.push(\r\n this.userService.getUserPermissions(\r\n this.yearService.defaultYear.Id,\r\n this.yearService.defaultYear.SchoolID\r\n ).subscribe(permissions => {\r\n const userPermissions = permissions;\r\n if (userPermissions.find(permission => permission.PermissionName == 'View Student Notes') || userPermissions.find(permission => permission.PermissionName == 'Maintain Student Notes')) {\r\n this.subscriptions.push(forkJoin([this.studentSummaryService.getStudentNoteCategories(this.yearService.student360Year.SchoolID, this.yearService.student360Year.Id),\r\n this.studentSummaryService.getStudentNotesForPopup(this.selectedStudent.Id, this.yearService.student360Year.SchoolID, this.yearService.student360Year.Id)]).subscribe(result => {\r\n if (result) {\r\n const notesToDisplay: StudentNote[] = [];\r\n const categories = result[0];\r\n const notes = result[1];\r\n const popupCategories = _.sortBy(_.filter(categories, cat => cat.StudentNotesPopup), cat => cat.DisplayOrder);\r\n popupCategories.forEach(cat => {\r\n const popupNotes = _.sortBy(notes.filter(note => note.SNCID == cat.Id), n => n.Order);\r\n popupNotes.forEach(note => {\r\n if (cat.OncePerSession && this.studentSummaryService.acknowledgedStudentNotes.filter(n => n.Id == note.Id).length == 0) {\r\n notesToDisplay.push(note);\r\n this.studentSummaryService.acknowledgedStudentNotes.push(note);\r\n } else if (!cat.OncePerSession) {\r\n notesToDisplay.push(note);\r\n }\r\n });\r\n });\r\n if (notesToDisplay.length > 0) {\r\n const dialogRef = this.dialog.open(StudentNotesPopupComponent,\r\n {\r\n disableClose: true,\r\n data: notesToDisplay\r\n });\r\n }\r\n }\r\n }));\r\n }\r\n }));\r\n }\r\n }\r\n\r\n getOnlineRegistrationStatus() {\r\n if (this.userService.userType !== 1) {\r\n this.studentSummaryService.getOnlineRegistrationStatus(this.yearService.student360Year.Id).subscribe((response) => {\r\n if (response.ok) {\r\n if (response.body == '' || response.body == 'Approved' || response.body == 'Submitted') {\r\n this.displayORHeadline = false;\r\n } else {\r\n this.displayORHeadline = true;\r\n if (this.v10) {\r\n this.onlineRegistrationStatus = 'Online Registration ' + response.body.substring(0, response.body.indexOf('for') + 3);\r\n this.requiredORYear = response.body.substring(response.body.indexOf('for') + 4);\r\n } else { // V9\r\n this.onlineRegistrationStatus = response.body;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getCourseRequestStatus() {\r\n if (this.userService.userType !== 1 && this.v10 == false) {\r\n this.studentSummaryService.getCourseRequestStatus(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id).subscribe((response) => {\r\n if (response.ok) {\r\n if (response.body == '' || response.body == 'Accepted') {\r\n this.displayCourseRequestHeadline = false;\r\n } else {\r\n this.displayCourseRequestHeadline = true;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getAnnouncements() {\r\n const schoolId = this.studentService.studentEnrollment != null ? this.studentService.studentEnrollment.SchoolId : 0;\r\n this.studentSummaryService.getCardAnnouncements(this.studentService.selectedStudent.Id, this.userService.currentUser.Id, schoolId, this.userService.userType, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response.ok) {\r\n // Check for new announcements\r\n if (response.body.find(a => a.IsNewSinceLastLogin)) {\r\n // If the user has not already seen the new announcement modal\r\n if (!this.studentSummaryService.hasSeenNewAnnouncementModal) {\r\n // Show Announcements Modal\r\n // Filter out old announcements\r\n response.body = response.body.filter(announcement => announcement.IsNewSinceLastLogin == true);\r\n if (this.v10) {\r\n this.dialog.open(NewAnnouncementsModalComponent, {\r\n disableClose: true,\r\n minHeight: '50%',\r\n minWidth: '50%',\r\n maxHeight: '55%',\r\n maxWidth: '65vw',\r\n autoFocus: false,\r\n data: response.body\r\n });\r\n }\r\n // Display Welcome Modal For First Time Users\r\n this.displayWelcome();\r\n }\r\n } else {\r\n this.displayWelcome();\r\n }\r\n }\r\n });\r\n }\r\n\r\n getAnnouncementsPopup() {\r\n const lastLoginDate = moment(this.userService.currentUser.LastLoggedInDate, 'YYYY-MM-DDTHH:mm:ss.SSS');\r\n if (!moment().isSame(lastLoginDate, 'day')) {\r\n this.studentSummaryService.getStudentsNewAnnouncements(this.studentService.selectedStudent.Id, this.yearService.student360Year.Id).subscribe(response => {\r\n if (response) {\r\n const newAnnouncementsBody = response.filter(a => a.IsNewAnnouncement == true || a.ShowDaily == true);\r\n if (!this.studentSummaryService.hasSeenNewAnnouncementModal && newAnnouncementsBody.length > 0) {\r\n // Show Announcements Modal\r\n this.dialog.open(NewAnnouncementsModalComponent, {\r\n disableClose: true,\r\n minHeight: '70%',\r\n minWidth: '70%',\r\n autoFocus: false,\r\n data: newAnnouncementsBody\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCloseBehaviorLetterNotification() {\r\n this.displayBehaviorLetterHeadline = false;\r\n }\r\n\r\n eventViewClick(eventType: string) {\r\n if (eventType == 'discipline') {\r\n this.router.navigateByUrl('/student360/behavior');\r\n }\r\n if (eventType == 'onlineRegistration') {\r\n if (!this.v10) {\r\n this.onlineRegService.getOnlineRegFamilies(false).subscribe(data => {\r\n if (data.length > 1) {\r\n const dialogBox = this.dialog.open(MultipleFamiliesComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n data: {families: data},\r\n disableClose: true\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(result => {\r\n subscription.unsubscribe();\r\n if (parseInt(result, 0) > 0) {\r\n this.onlineRegService.isMultipleFamiliesPopupOpened = true;\r\n this.router.navigateByUrl('/student360/onlineRegistration');\r\n }\r\n });\r\n } else if (data.length == 1) {\r\n this.onlineRegService.isMultipleFamiliesPopupOpened = false;\r\n this.onlineRegService.familyId = data[0].FamilyId;\r\n this.onlineRegService.parentType = data[0].ParentType;\r\n this.router.navigateByUrl('/student360/onlineRegistration');\r\n } else {\r\n this.router.navigateByUrl('/student360/onlineRegistration');\r\n }\r\n });\r\n } else {\r\n this.router.navigateByUrl('/student360/onlineRegistration');\r\n }\r\n }\r\n if (eventType == 'courseRequests') {\r\n let routed = false;\r\n if (this.student360Service.allParentPortals) {\r\n const portal = this.student360Service.allParentPortals.filter(p => p.PortalName == 'Course Requests' && p.Student_ID == this.selectedStudent.Id)[0];\r\n if (portal != undefined) {\r\n this.router.navigateByUrl('/student360' + portal.PortalDescription);\r\n routed = true;\r\n }\r\n }\r\n if (!routed) {\r\n this.router.navigateByUrl('/student360/courseRequest');\r\n }\r\n }\r\n if (eventType == 'health') {\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: {\r\n 'selectedTab': 'Health Visit Log'\r\n }\r\n };\r\n this.router.navigate(['/student360/health'], navigationExtras);\r\n }\r\n if (eventType == 'requiredEForms') {\r\n this.eFormService.initialS360eFormTab = 'required';\r\n this.router.navigateByUrl('/student360/eForms');\r\n }\r\n if (eventType == 'optionalEForms') {\r\n this.eFormService.initialS360eFormTab = 'optional';\r\n this.router.navigateByUrl('/student360/eForms');\r\n }\r\n if (eventType == 'studentDocument') {\r\n // this.eFormService.initialS360eFormTab = 'optional';\r\n this.router.navigateByUrl('/student360/studentDocuments');\r\n }\r\n\r\n if (eventType == 'studentDocumentBehaviorLetters') {\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: {\r\n 'onlyBehaviorLettersDocument': true\r\n }\r\n };\r\n this.router.navigate(['/student360/studentDocuments'], navigationExtras);\r\n }\r\n\r\n if (eventType == 'behaviorLetter') {\r\n this.router.navigateByUrl('student360/behavior?studentPortal=true');\r\n }\r\n }\r\n\r\n markEventsAsSeen(eventType: string) {\r\n this.studentSummaryService.markEventsAsSeen(this.selectedStudent.Id, this.userService.currentUser.MemberId, eventType, this.yearService.student360Year.Id, this.optionalInstanceIds, this.studentDocumentIds).subscribe(response => {\r\n if (response.ok) {\r\n this.getRecentEvents();\r\n if (eventType != 'BehaviorLetter') {\r\n this.getStudentDocuments();\r\n }\r\n }\r\n });\r\n }\r\n\r\n checkEFormAvailable() {\r\n this.eFormsActivated = this.loginService.LoginSettings.ActivateEForms;\r\n\r\n if (this.eFormsActivated && this.yearService.student360Year.Id > 0) {\r\n this.eFormService.checkForAvailableEForms(true).subscribe(result => {\r\n this.requiredEFormAvailable = result.eFormsAvailable;\r\n this.optionalEFormAvailable = result.optionaleFormAvailable;\r\n this.optionalInstanceIds = result.instanceId;\r\n this.getRecentEvents();\r\n });\r\n } else {\r\n this.requiredEFormAvailable = 0;\r\n this.optionalEFormAvailable = 0;\r\n this.getRecentEvents();\r\n }\r\n }\r\n\r\n getRecentEvents() {\r\n if (this.selectedStudent) {\r\n this.studentSummaryService.getStudentRecentEvents(this.selectedStudent.Id, this.userService.currentUser.MemberId, this.yearService.student360Year.Id, this.optionalInstanceIds).subscribe(response => {\r\n if (response.ok) {\r\n this.recentDisciplineEvents = response.body.filter(rde => rde.Type == 'Discipline')[0];\r\n this.recentHealthEvents = response.body.filter(rde => rde.Type == 'Health')[0];\r\n this.recentOptionalEFormEvents = response.body.filter(rde => rde.Type == 'OptionalEForms')[0];\r\n this.recentBehaviorLetters = response.body.filter(rde => rde.Type == 'BehaviorLetter')[0];\r\n }\r\n });\r\n if (this.eFormsActivated && this.yearService.student360Year.Id > 0) {\r\n this.unmarkedOptionalEFormsEvents = this.optionalEFormAvailable > 0;\r\n }\r\n }\r\n }\r\n\r\n getStudentDocuments() {\r\n this.studentService.getStudentDocuments(this.selectedStudent.Id, this.yearService.student360Year.Id, false, true).subscribe(data => {\r\n this.studentDocuments = data;\r\n const currentDate = new Date();\r\n this.studentDocuments.forEach(obj => {\r\n this.studentDocumentIds += obj.DocumentId + ',';\r\n });\r\n currentDate.setDate(currentDate.getDate() - 8);\r\n this.studentDocuments = this.studentDocuments.filter(x => x.CreatedOn > currentDate);\r\n this.behaviorlatterStudentDocuments = this.studentDocuments.filter(x => x.Notes == 'Behavior Letter').length > 0;\r\n this.attendancelatterStudentDocuments = false;\r\n });\r\n }\r\n\r\n checkPortals(portals: Portal[]) {\r\n // Compare portals\r\n this.userService.cards = [];\r\n const studentId = (this.userService.currentUser.UserType != 1) ? this.selectedStudent.Id : 0;\r\n this.userPreferencesService.getUserPreferences(studentId, '/OneSISStudentSummaryAngular').subscribe(response => {\r\n if (response && response.length > 0 && response[0] != '') { // If saved preference for card state\r\n try {\r\n const savedCards = JSON.parse(response[0]);\r\n const commonCards = [];\r\n // Compare the saved cards with the default cards, this is in the event that we remove cards\r\n savedCards.forEach(sCard => {\r\n // find the saved card in the default list\r\n this.studentSummaryService.defaultCards.forEach(card => {\r\n if (sCard.title == card.title) {\r\n commonCards.push(sCard);\r\n }\r\n });\r\n });\r\n // Check the default card list for new cards\r\n this.studentSummaryService.defaultCards.forEach(card => {\r\n // Find the card in the saved cards\r\n const c = savedCards.filter(sCard => sCard.title == card.title)[0];\r\n if (!c) { // if not found, push the default card\r\n commonCards.push(_.cloneDeep(card));\r\n }\r\n });\r\n this.userService.cards = commonCards;\r\n } catch {\r\n // Set the default card data upon a failure (usually to load JSON)\r\n this.userService.cards = _.cloneDeep(this.studentSummaryService.defaultCards);\r\n }\r\n } else {\r\n // Set the default card data\r\n this.userService.cards = _.cloneDeep(this.studentSummaryService.defaultCards);\r\n }\r\n if (this.userService.userType == 1) { // If staff member\r\n // Filter out the portals based on group.\r\n const myStudentsGroup = this.portals.filter(p => p.GroupName == 'My Students');\r\n if (myStudentsGroup.length > 0) { // User is a teacher\r\n portals = myStudentsGroup;\r\n } else { // user is an admin\r\n portals = this.portals.filter(p => p.GroupName == 'Students');\r\n }\r\n }\r\n this.userService.cards.forEach((card) => {\r\n let portal;\r\n switch (card.title) {\r\n case 'Announcements':\r\n portal = portals.find((p) => p.PortalName == 'Announcements');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Attendance':\r\n portal = portals.find((p) => p.PortalName == 'Attendance');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Assignments':\r\n portal = portals.find((p) => p.PortalName == 'Assignments');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Current Grades':\r\n portal = portals.find((p) => p.PortalName == 'Grades');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'District Defined Links':\r\n portal = portals.find((p) => p.IsMyLinksTile == true);\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Fees & Billing':\r\n portal = portals.find((p) => p.PortalName == 'Fees & Billing');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Meal Service Balance':\r\n portal = portals.find((p) => p.PortalName == 'Meal Service');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Student Schedule':\r\n portal = portals.find((p) => p.PortalName == 'Student Schedule');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Upcoming Events':\r\n portal = portals.find((p) => p.PortalName == 'Calendar');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Calendar':\r\n portal = portals.find((p) => p.PortalName == 'Calendar');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Student Teams': // Staff card V10 Only\r\n portal = portals.find((p) => p.PortalName == 'Activities and Teams');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Student Notes': // Staff card V10 Only\r\n portal = portals.find((p) => p.PortalName == 'Student Notes');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Behavior': // Staff card\r\n portal = portals.find((p) => p.PortalName == 'Behavior');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Programs and Services': // Staff card\r\n portal = false;\r\n if (this.v10 == false) {\r\n portal = portals.find((p) => p.PortalName == 'Programs and Services');\r\n } else {\r\n portal = this.securityService.IsAnyPermissionAssigned(PermissionEnum.StudentGeneralProfileStudentPrograms);\r\n }\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Student Details': // Staff card\r\n portal = portals.find((p) => p.PortalName == 'Student Details');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Enrollment': // Staff card\r\n // Disable in v9 for Jan release - Lance\r\n portal = portals.find((p) => p.PortalName == 'Student Details');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Contacts': // Staff card\r\n // Disable in v9 for Jan release - Lance\r\n portal = portals.find((p) => p.PortalName == 'Student Details');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Attendance History': // Staff card\r\n portal = portals.find((p) => p.PortalName == 'Attendance');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n case 'Student Schedule - Staff View': // Staff card\r\n portal = portals.find((p) => p.PortalName == 'Student Schedule');\r\n if (portal) {\r\n this.showCard(card, portal);\r\n } else {\r\n this.hideCard(card);\r\n }\r\n break;\r\n }\r\n });\r\n this.cardContainer.filterCards(this.userService.cards);\r\n });\r\n }\r\n\r\n hideCard(card) {\r\n card.display = 'Off';\r\n card.showInSettings = false;\r\n }\r\n\r\n showCard(card, portal) {\r\n card.disabled = portal.Disabled;\r\n card.disabledMessage = portal.DisabledMessage;\r\n card.showInSettings = true;\r\n }\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.find(function (student) {\r\n return student.Id == studentId;\r\n });\r\n }\r\n\r\n displayWelcome() {\r\n if (!this.userService.currentUser.PreviousAngularLogin) {\r\n if (this.userService.currentUser.UserType != 1) {\r\n // Wrapped in a timeout to avoid change detection errors\r\n setTimeout(() => {\r\n this.dialog.open(WelcomeModalComponent, {\r\n disableClose: true,\r\n minHeight: '50%',\r\n minWidth: '50%',\r\n autoFocus: false\r\n });\r\n }, 1);\r\n }\r\n this.userService.currentUser.PreviousAngularLogin = true;\r\n }\r\n }\r\n\r\n settingsClick() {\r\n // Open the Side menu\r\n this.dialog.open(SettingsMenuModalComponent, {\r\n minWidth: '430px',\r\n width: '25%',\r\n minHeight: '100%',\r\n autoFocus: false,\r\n position: {right: '0'}\r\n }).afterClosed().subscribe(result => {\r\n if (result == 'Saved') {\r\n this.cardContainer.filterCards(this.userService.cards);\r\n // Save the preferences\r\n const json: string[] = [];\r\n json.push(JSON.stringify(this.userService.cards));\r\n const studentId = (this.userService.currentUser.UserType != 1) ? this.studentService.selectedStudent.Id : 0;\r\n this.userPreferencesService.saveUserPreferences(studentId, '/OneSISStudentSummaryAngular', json, 0, '').subscribe(response => {\r\n }, err => {\r\n // On Error\r\n console.log(err);\r\n });\r\n }\r\n });\r\n }\r\n\r\n hasPrivilege(type: string) {\r\n // Check the parent assigned portals to see if the user has the privilege to see the event\r\n if (this.student360Service.parentAssignedPortals) {\r\n if (type == 'Discipline') {\r\n if (this.student360Service.parentAssignedPortals.find(p => p.PortalName == 'Behavior')) {\r\n return true;\r\n }\r\n }\r\n if (type == 'Health') {\r\n if (this.student360Service.parentAssignedPortals.find(p => p.PortalName == 'Health')) {\r\n if (this.v10 == false || this.loginService.LoginSettings.S360DisplayHealthVisitLog) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (type == 'Online Registration') {\r\n if (this.student360Service.parentAssignedPortals.find(p => p.PortalName == 'Online Registration')) {\r\n return true;\r\n }\r\n }\r\n if (type == 'Course Requests') {\r\n if (this.v10 && this.student360Service.parentAssignedPortals.find(p => p.PortalName == 'Course Requests' && p.Disabled == false)) {\r\n return true;\r\n } else if (!this.v10 && this.displayCourseRequestHeadline) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n getOnlinePaymentConfiguration() {\r\n this.studentService.getOnlinePaymentConfiguration().subscribe(result => {\r\n this.onlinePaymentConfiguration = result;\r\n // Load onlinePaymentConfiguration data into Online Payment Service for child components to access\r\n this.studentService.onlinePaymentConfiguration = this.onlinePaymentConfiguration;\r\n });\r\n }\r\n\r\n getCheckInOutButtnSettings(studentId: number, yearId: number) {\r\n this.studentSummaryService.getCheckInOutButtonSettings(studentId, yearId).subscribe(settings => {\r\n if (this.userService.currentUser.UserType == 2) {\r\n this.enableCheckInOut = settings.AllowParentEnterCheckInOut;\r\n this.enableAbsentNotice = settings.AllowParentEnterAbsentNotice;\r\n }\r\n else if (this.userService.currentUser.UserType == 3) {\r\n this.enableCheckInOut = settings.AllowStudentEnterCheckInOut;\r\n this.enableAbsentNotice = settings.AllowStudentEnterAbsentNotice;\r\n }\r\n });\r\n }\r\n\r\n checkInOutButtonClick(studentId: number) {\r\n this.studentSummaryService.getCheckInOutSubmissionRequest(studentId).subscribe(request => {\r\n if (request != undefined && request != null && request.Id > 0) {\r\n this.checkInOutSubmissionRequest = request;\r\n }\r\n else {\r\n this.checkInOutSubmissionRequest = new CheckInOutSubmissionRequest;\r\n this.checkInOutSubmissionRequest.StudentId = studentId;\r\n }\r\n\r\n const dialogBox = this.dialog.open(CheckInOutSubmissionRequestModalComponent, {\r\n disableClose: true,\r\n minWidth: '60vw',\r\n maxWidth: '60vw',\r\n minHeight: '65vh',\r\n maxHeight: '80vh',\r\n data: {\r\n checkInOutRequest: this.checkInOutSubmissionRequest\r\n }\r\n });\r\n });\r\n }\r\n\r\n absentNoticeButtonClick(studentId: number) {\r\n this.studentSummaryService.getAbsentNoticeByStudentId(studentId).subscribe(request => {\r\n let absentNotice: AbsentNotice;\r\n\r\n if (request != undefined && request != null && request.Id > 0) {\r\n absentNotice = request;\r\n }\r\n else {\r\n absentNotice = new AbsentNotice;\r\n absentNotice.Id = 0;\r\n absentNotice.StudentId = studentId;\r\n absentNotice.SubmittedPeopleId = 0;\r\n absentNotice.Reason = '';\r\n absentNotice.Status = 'Submitted';\r\n }\r\n\r\n this.dialog.open(AbsentNoticeSubmissionModalComponent, {\r\n disableClose: true,\r\n minWidth: '60vw',\r\n maxWidth: '60vw',\r\n minHeight: '65vh',\r\n maxHeight: '80vh',\r\n data: {\r\n absentNotice: absentNotice\r\n }\r\n });\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from '../../shared-components/System';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Card } from './card-container/card/card';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { StudentNote } from '../../classroom360/student-notes/student-note.model';\r\nimport { StudentNoteCategory } from '../../classroom360/student-notes/student-note-category.model';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { CheckInOutButtonSettings, CheckInOutSubmissionRequest } from './check-in-out-submission-request-modal/check-in-out-submission-request-modal.model';\r\nimport { AbsentNotice } from '../../admin360/attendance-administration/review-absent-notices/absent-notice.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StudentSummaryService {\r\n private _defaultCards: Card[] = [\r\n {\r\n title: 'Announcements',\r\n component: 'announcementCard',\r\n position: 0,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Attendance',\r\n component: 'attendanceCard',\r\n position: 1,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: true,\r\n display: 'Summary',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Assignments',\r\n component: 'assignmentsCard',\r\n position: 2,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: true,\r\n display: 'Summary',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Current Grades',\r\n component: 'currentGradesCard',\r\n position: 3,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'District Defined Links',\r\n component: 'districtDefinedLinksCard',\r\n position: 4,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Fees & Billing',\r\n component: 'feesAndBillingCard',\r\n position: 5,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: true,\r\n display: 'Summary',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Meal Service Balance',\r\n component: 'mealServiceCard',\r\n position: 6,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: true,\r\n display: 'Summary',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Student Schedule',\r\n component: 'studentScheduleCard',\r\n position: 7,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Upcoming Events',\r\n component: 'upcomingEventsCard',\r\n position: 8,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: false,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Calendar',\r\n component: 'calendarCard',\r\n position: 9,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: false\r\n },\r\n {\r\n title: 'Attendance History',\r\n component: 'attendanceHistoryCard',\r\n position: 10,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Student Teams',\r\n component: 'studentTeamsCard',\r\n position: 11,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: false,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Student Notes',\r\n component: 'studentNotesCard',\r\n position: 12,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Behavior',\r\n component: 'behaviorCard',\r\n position: 13,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Programs and Services',\r\n component: 'programsAndServicesCard',\r\n position: 14,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Student Details',\r\n component: 'studentDetailsCard',\r\n position: 15,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Enrollment',\r\n component: 'enrollmentCard',\r\n position: 16,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Contacts',\r\n component: 'contactsCard',\r\n position: 17,\r\n columnPosition: 'L',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: true,\r\n v9: true,\r\n staffOnly: true\r\n },\r\n {\r\n title: 'Student Schedule - Staff View',\r\n component: 'staffStudentScheduleCard',\r\n position: 18,\r\n columnPosition: 'R',\r\n hasDetailCard: true,\r\n hasSummaryCard: false,\r\n display: 'Detail',\r\n showInSettings: true,\r\n disabled: false,\r\n disabledMessage: '',\r\n v10: false,\r\n v9: true,\r\n staffOnly: true\r\n }\r\n ];\r\n hasSeenNewAnnouncementModal = false;\r\n acknowledgedStudentNotes: StudentNote[] = [];\r\n\r\n constructor(private http: HttpClient, private loginService: LoginService, private sharedService: SharedService) {\r\n }\r\n\r\n get defaultCards() {\r\n if (this.loginService.LoginSettings.V10) {\r\n return this._defaultCards.filter(card => card.v10);\r\n } else {\r\n return this._defaultCards.filter(card => card.v9);\r\n }\r\n }\r\n\r\n getStudentRecentEvents(studentId: number, memId: number, yearId: number, optionalInstanceIds: string = ''): Observable {\r\n return this.http.get(System.apiURL.Student + `GetStudentRecentEvents?studentId=${studentId}&memId=${memId}&yearId=${yearId}&optionalInstanceIds=${optionalInstanceIds}`, { observe: 'response' });\r\n }\r\n\r\n markEventsAsSeen(studentId: number, memId: number, eventType: string, yearId: number, optionalInstanceIds: string, studentDocumentIds: string = ''): Observable {\r\n return this.http.get(System.apiURL.Student + `MarkEventsAsSeen?studentId=${studentId}&memId=${memId}&eventType=${eventType}&yearId=${yearId}&optionalInstanceIds=${optionalInstanceIds}&studentDocumentIds=${studentDocumentIds}`, { observe: 'response' });\r\n }\r\n\r\n getCardAnnouncements(studentId: number, loginId: number, schoolDomain: number, userType: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardAnnouncements?studentId=${studentId}&loginId=${loginId}&schoolDomain=${schoolDomain}&userType=${userType}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardAssignments(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardAssignments?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardMealService(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardMealService?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardFeesAndBilling(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardFeesAndBilling?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardAttendance(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardAttendance?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentSchedule(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentSchedule?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentGrades(studentId: number, schoolDomain: number, AYIdentifier: string, gradingPeriodId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentGrades?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&gradingPeriodId=${gradingPeriodId}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardUpcomingEvents(studentId: number, schoolDomain: number, AYIdentifier: string, userType: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardUpcomingEvents?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&userType=${userType}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentCalendar(studentId: number, schoolDomain: number, AYIdentifier: string, startDate: string, endDate: string, userType: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentCalendar?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&userType=${userType}&startDate=${startDate}&endDate=${endDate}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentNotes(studentId: number, schoolDomain: number, AYIdentifier: string): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentNotes?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentTeams(studentId: number, schoolDomain: number, AYIdentifier: string): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentTeams?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentBehavior(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentBehavior?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardProgramsAndServices(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentProgramsAndServices?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardCourseRequestStatus(studentId: number, schoolDomain: number, AYIdentifier: string, parentMemId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardCourseRequestStatus?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&parentMemId=${parentMemId}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardOnlineRegistrationStatus(studentId: number, schoolDomain: number, AYIdentifier: string, parentMemId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardOnlineRegistrationStatus?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&parentMemId=${parentMemId}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getOnlineRegistrationStatus(yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetOnlineRegistrationStatus?yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCourseRequestStatus(studentId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCourseRequestStatus?studentId=${studentId}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getGradingPeriodDetails(schoolDomain: number, AYIdentifier: string): Observable {\r\n return this.http.get(System.apiURL.Student + `GetGradingPeriodDetails?schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}`, { observe: 'response' });\r\n }\r\n\r\n getStudentsNewAnnouncements(studentId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetStudentsNewAnnouncements?studentId=${studentId}&yearId=${yearId}`);\r\n }\r\n\r\n getEventForDateRange(studentId: number, schoolDomain: number, AYIdentifier: string, fromDate: string, toDate: string, userType: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetEventForDateRange?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&userType=${userType}&fromDate=${fromDate}&toDate=${toDate}`, { observe: 'response' });\r\n }\r\n\r\n getStudentNotesForPopup(studentId: number, schoolId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetStudentNotesForPopup?studentId=${studentId}&schoolId=${schoolId}&yearId=${yearId}`);\r\n }\r\n\r\n getStudentNoteCategories(schoolId: number, yearId: number): Observable {\r\n return this.sharedService.getStudentNoteCategories(schoolId, yearId);\r\n }\r\n\r\n getCardStudentEnrollment(studentId: number, schoolDomain: number, AYIdentifier: string): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentEnrollment?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentContacts(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentContacts?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getCardStudentAttendance(studentId: number, schoolDomain: number, AYIdentifier: string, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCardStudentAttendance?studentId=${studentId}&schoolDomain=${schoolDomain}&AYIdentifier=${AYIdentifier}&yearId=${yearId}`, { observe: 'response' });\r\n }\r\n\r\n getAttendanceHistoryDetail(studentId: number, sectionId: number, type: string): Observable {\r\n return this.http.get(System.apiURL.Student + `GetAttendanceHistoryDetail?studentId=${studentId}§ionId=${sectionId}&type=${type}`, { observe: 'response' });\r\n }\r\n\r\n getMembershipCodes(RSNY_ID: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetMembershipCodes?RSNY_ID=${RSNY_ID}`, { observe: 'response' });\r\n }\r\n\r\n getCheckInOutButtonSettings(studentId: number, yearId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCheckInOutButtonSettings?studentId=${studentId}&yearId=${yearId}`);\r\n }\r\n\r\n getCheckInOutSubmissionRequest(studentId: number): Observable {\r\n return this.http.get(System.apiURL.Student + `GetCheckInOutSubmissionRequest?studentId=${studentId}`);\r\n }\r\n\r\n saveCheckInOutSubmissionRequest(requestData: CheckInOutSubmissionRequest): Observable {\r\n return this.http.post(System.apiURL.Student + `SaveCheckInOutSubmissionRequest`, requestData);\r\n }\r\n \r\n getAbsentNoticeByStudentId(studentId: number): Observable {\r\n return this.http.get(System.apiURL.Admin + `GetAbsentNoticeByStudentId?studentId=${studentId}`);\r\n }\r\n\r\n}\r\n","import { System } from './../shared-components/System';\r\nimport { forkJoin as observableForkJoin, Observable, of, Subject, BehaviorSubject } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { StudentService } from '../shared-components/student/student.service';\r\nimport { UserService } from '../shared-components/user/user.service';\r\nimport { YearService } from '../shared-components/year/year.service';\r\nimport { Portal } from '../shared-components/portal.model';\r\nimport { StudentDocumentsFilter } from './student-documents/student-documents-filter';\r\nimport { map } from 'rxjs/operators';\r\nimport { LoginService } from '../shared-modules/login/login.service';\r\nimport { GeneralConfirmationComponent } from '../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class Student360Service {\r\n\r\n private _lastSelectedCalendarDate;\r\n private _lastSelectedCalenderView;\r\n public parentAssignedPortals: Portal[];\r\n public allParentPortals: Portal[];\r\n public academicYearAttention: Portal;\r\n public studentDocumentsFilterData: StudentDocumentsFilter;\r\n private observableParentAssignedPortals = new BehaviorSubject([]);\r\n observableParentAssignedPortalsStream$ = this.observableParentAssignedPortals.asObservable();\r\n private observableAcademicYearAttention = new Subject();\r\n observableAcademicYearAttentionStream$ = this.observableAcademicYearAttention.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private studentService: StudentService,\r\n private userService: UserService,\r\n private yearService: YearService,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private router: Router\r\n ) {\r\n this.studentDocumentsFilterData = new StudentDocumentsFilter();\r\n\r\n // Getting new parent portals when a new year or student is selected\r\n const getNewParentPortals = () => {\r\n if (this.userService.userId != null && this.yearService.student360Year) {\r\n if (this.userService.userType != 2 || this.allParentPortals == undefined || !this.loginService.LoginSettings.V10) {\r\n if (this.yearService.student360Year.Id > 0) {\r\n this.parentAssignedPortals = [];\r\n const subscription = this.getParentAssignedPortals().subscribe(portals => {\r\n if (!portals) {\r\n portals = [];\r\n }\r\n this.updateParentAssignedPortals(portals);\r\n subscription.unsubscribe();\r\n });\r\n }\r\n }\r\n else {\r\n this.updateParentAssignedPortals(this.allParentPortals);\r\n }\r\n }\r\n };\r\n this.yearService.observableStudent360YearStream$.subscribe(() => {\r\n if (this.userService.userType != null && this.userService.userType != 1 && this.studentService.selectedStudent) {\r\n getNewParentPortals();\r\n }\r\n });\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n if (this.userService.userType != null && this.userService.userType != 1) {\r\n getNewParentPortals();\r\n }\r\n });\r\n }\r\n\r\n get lastSelectedCalendarDate(): any {\r\n return this._lastSelectedCalendarDate;\r\n }\r\n\r\n set lastSelectedCalendarDate(date: any) {\r\n this._lastSelectedCalendarDate = date;\r\n }\r\n\r\n get lastSelectedCalendarView(): string {\r\n return this._lastSelectedCalenderView;\r\n }\r\n\r\n set lastSelectedCalendarView(view: string) {\r\n this._lastSelectedCalenderView = view;\r\n }\r\n\r\n getParentAssignedPortals(): Observable {\r\n if (this.parentAssignedPortals && this.parentAssignedPortals.length > 0) {\r\n return of(this.parentAssignedPortals);\r\n }\r\n if (!this.loginService.LoginSettings.V10) {\r\n const studentId = this.studentService.selectedStudent != null ? this.studentService.selectedStudent.Id : 0;\r\n return this.http.get(System.apiURL.Student + 'GetParentAssignedPortals?parentid=' + this.userService.userId + '&studentid=' + studentId + '&yearid=' + this.yearService.student360Year.Id).pipe(\r\n map((portals) => {\r\n // We need to separate the portals in multiple groups into separate portals because GroupName is a CSV\r\n for (let i = 0; i < portals.length; i++) {\r\n // All parent portals are marked as a parent page\r\n portals[i].applyFilterStudents = true;\r\n\r\n // If multiple groups are found, split the portals\r\n if (portals[i].GroupName.includes(',')) {\r\n const groups = portals[i].GroupName.split(',');\r\n for (let j = 0; j < groups.length; j++) {\r\n groups[j] = groups[j].trim();\r\n\r\n // If this is the first element, alter our current portal\r\n if (j == 0) {\r\n portals[i].GroupName = groups[0];\r\n\r\n // After the first element, create new portals\r\n } else {\r\n const portalInGroup = new Portal();\r\n Object.assign(portalInGroup, portals[i]);\r\n portalInGroup.ShowAsTile = false;\r\n portalInGroup.GroupName = groups[j];\r\n portals.push(portalInGroup);\r\n }\r\n }\r\n }\r\n return Array.prototype.sort.call(portals, (a, b) => a.PortalName.localeCompare(b.PortalName));\r\n }\r\n })\r\n );\r\n }\r\n else {\r\n return this.http.get(System.apiURL.Student + 'GetParentStudentPortals?parentid=' + this.userService.userId + '&yearid=' + this.yearService.student360Year.Id).pipe(\r\n map((portals) => {\r\n if (portals.length == 1 && portals[0].NoSchoolPolicy == true) {\r\n // Open a modal letting the user know that there is no associated school policy\r\n const dialogBox = this.dialog.open(GeneralConfirmationComponent, {\r\n disableClose: true,\r\n autoFocus: false,\r\n data: {\r\n headerLabel: 'No School Policy',\r\n informational: true,\r\n confirmMessage: 'We are unable to display your students information. Please contact the district and ask them to apply a school policy to your student\\'s school.'\r\n }\r\n });\r\n dialogBox.afterClosed().subscribe(() => {\r\n this.router.navigateByUrl('/logout');\r\n });\r\n } else {\r\n // We need to separate the portals in multiple groups into separate portals because GroupName is a CSV\r\n for (let i = 0; i < portals.length; i++) {\r\n\r\n // All parent portals are marked as a parent page\r\n portals[i].applyFilterStudents = true;\r\n\r\n // If multiple groups are found, split the portals\r\n if (portals[i].GroupName.includes(',')) {\r\n const groups = portals[i].GroupName.split(',');\r\n for (let j = 0; j < groups.length; j++) {\r\n groups[j] = groups[j].trim();\r\n\r\n // If this is the first element, alter our current portal\r\n if (j == 0) {\r\n portals[i].GroupName = groups[0];\r\n\r\n // After the first element, create new portals\r\n } else {\r\n const portalInGroup = new Portal();\r\n Object.assign(portalInGroup, portals[i]);\r\n portalInGroup.ShowAsTile = false;\r\n portalInGroup.GroupName = groups[j];\r\n portals.push(portalInGroup);\r\n }\r\n }\r\n }\r\n }\r\n return Array.prototype.sort.call(portals, (a, b) => a.PortalName.localeCompare(b.PortalName));\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n getStudentSummary(): Observable {\r\n return observableForkJoin(\r\n this.http.get(System.apiURL.Student + 'GetStudentSummaryChunk1?studentId=' + this.studentService.selectedStudent.Id + '&yearId=' + this.yearService.student360Year.Id + '&userId=' + this.userService.userId + '&userType=' + this.userService.userType),\r\n this.http.get(System.apiURL.Student + 'GetStudentSummaryChunk2?studentId=' + this.studentService.selectedStudent.Id + '&yearId=' + this.yearService.student360Year.Id + '&userId=' + this.userService.userId + '&userType=' + this.userService.userType),\r\n (chunk1, chunk2) => ({ chunk1, chunk2 })\r\n );\r\n }\r\n\r\n updateParentAssignedPortals(portals: Portal[]) {\r\n if (this.loginService.LoginSettings.V10) {\r\n const parentPortals = portals.filter(p => p.Student_ID == this.studentService.selectedStudent.Id);\r\n this.allParentPortals = portals;\r\n this.parentAssignedPortals = parentPortals;\r\n this.observableParentAssignedPortals.next(parentPortals);\r\n }\r\n else {\r\n this.parentAssignedPortals = portals;\r\n this.allParentPortals = portals;\r\n this.observableParentAssignedPortals.next(portals);\r\n }\r\n }\r\n updateAcademicYearAttention(portal: Portal) {\r\n this.academicYearAttention = portal;\r\n this.observableAcademicYearAttention.next(this.academicYearAttention);\r\n }\r\n}\r\n","import { System } from '../../shared-components/System';\r\n\r\nexport class Team {\r\n Id: number;\r\n Name: string;\r\n Details: string;\r\n Staff: string[];\r\n Entry = new Date(System.junkDateString);\r\n Exit = new Date(System.junkDateString);\r\n Comment: string;\r\n Active: boolean;\r\n StudentIds: string;\r\n}","\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n

\r\n No Activities and Teams data exists for student\r\n

\r\n

\r\n No Activities data exists for student\r\n

\r\n
\r\n\r\n \r\n 0\" matSort matSortDisableClear\r\n matSortActive=\"Name\" matSortDirection=\"asc\">\r\n\r\n \r\n \r\n \r\n Team Name\r\n Activity\r\n \r\n \r\n \r\n {{team.Name}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Details\r\n \r\n \r\n \r\n {{team.Details}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Date\r\n Entry Date\r\n \r\n \r\n \r\n {{team.Entry.toString() != junkDate.toString() ? (team.Entry | date: 'MM/dd/yy') : ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Exit Date\r\n \r\n \r\n \r\n {{team.Exit.toString() != junkDate.toString() ? (team.Exit | date: 'MM/dd/yy') : ''}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Staff Name\r\n \r\n \r\n \r\n {{team.Staff}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Comment\r\n \r\n \r\n \r\n {{team.Comment}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n","import { LoginService } from './../../shared-modules/login/login.service';\r\nimport { TylerMatTableDataSource } from './../../shared-components/angular-material/extended.class';\r\nimport { System } from './../../shared-components/System';\r\nimport { StudentService } from './../../shared-components/student/student.service';\r\nimport { Component, OnInit, ViewChild, OnDestroy, ChangeDetectorRef, EventEmitter } from '@angular/core';\r\nimport { TeamsService } from './teams.service';\r\nimport { Team } from './team.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\n\r\n@Component({\r\n selector: 'teams',\r\n templateUrl: './teams.component.html',\r\n styleUrls: [\r\n './teams.component.css'\r\n ]\r\n})\r\nexport class TeamsComponent implements OnInit, OnDestroy {\r\n\r\n // Properties\r\n private _sort: MatSort;\r\n private _includeInactiveTeams = false;\r\n teams: Team[];\r\n subscriptions: Subscription[] = [];\r\n tableData = new TylerMatTableDataSource();\r\n showStudentTeams = false;\r\n hiddenTeamColumns = ['Name', 'Details', 'Entry', 'Staff', 'Comment'];\r\n shownTeamColumns = ['Name', 'Staff', 'Entry', 'Exit'];\r\n selectedRow: Team;\r\n junkDate = System.junkDate;\r\n clearFilterEvent = new EventEmitter();\r\n pageTitle: string;\r\n V10: boolean;\r\n\r\n // Class Functions\r\n constructor(\r\n private teamService: TeamsService,\r\n private studentService: StudentService,\r\n private loginService: LoginService,\r\n private yearService: YearService,\r\n public changeDetector: ChangeDetectorRef\r\n ) { }\r\n\r\n get sort(): MatSort {\r\n return this._sort;\r\n }\r\n\r\n @ViewChild(MatSort) set sort(value: MatSort) {\r\n this._sort = value;\r\n if (this.tableData) {\r\n this.tableData.sort = this._sort;\r\n }\r\n }\r\n\r\n get includeInactiveTeams(): boolean {\r\n return this._includeInactiveTeams;\r\n }\r\n\r\n set includeInactiveTeams(value: boolean) {\r\n this._includeInactiveTeams = value;\r\n if (this.tableData) {\r\n if (value) {\r\n this.tableData.data = this.teams;\r\n } else {\r\n const filteredTeams = this.teams.filter(team => team.Active);\r\n this.tableData.data = filteredTeams;\r\n }\r\n }\r\n }\r\n\r\n // Event Functions\r\n ngOnInit() {\r\n // POST: initializes the data and performs the initial subscriptions\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n if (this.V10) {\r\n this.pageTitle = \"Activities and Teams\";\r\n }\r\n else {\r\n this.pageTitle = \"Activities\";\r\n }\r\n this.showStudentTeams = this.loginService.LoginSettings.ParentPortalShowStudentTeams;\r\n this.subscriptions.push(\r\n this.studentService.selectedStudentStream$.subscribe(() => {\r\n this.teams = undefined;\r\n this.getTeams();\r\n }),\r\n this.yearService.observableStudent360YearStream$.subscribe(student360Year => {\r\n this.getTeams();\r\n })\r\n )\r\n }\r\n\r\n ngOnDestroy() {\r\n // POST: ends all subscriptions\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n\r\n // Methods\r\n getTeams() {\r\n // POST: obtains the teams from the server and organizes the table data\r\n this.subscriptions.push(\r\n this.teamService.getStudentTeams().subscribe(teams => {\r\n this.teams = teams;\r\n\r\n // Performing conversions for type safety\r\n for (let i = 0; i < this.teams.length; i++) {\r\n this.teams[i] = System.convert(this.teams[i], new Team());\r\n }\r\n\r\n // Setting the table data\r\n if (this.includeInactiveTeams) {\r\n this.tableData.data = this.teams;\r\n } else {\r\n const filteredTeams = this.teams.filter(team => team.Active);\r\n this.tableData.data = filteredTeams;\r\n }\r\n if (this.sort) {\r\n this.tableData.sort = this.sort;\r\n }\r\n })\r\n );\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { StudentService } from './../../shared-components/student/student.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { System } from '../../shared-components/System';\r\nimport { Observable } from 'rxjs';\r\nimport { Team } from './team.model';\r\n\r\n@Injectable()\r\nexport class TeamsService {\r\n\r\n // Properties\r\n\r\n // Class Functions\r\n constructor (\r\n private studentService: StudentService,\r\n private yearService: YearService,\r\n private http: HttpClient\r\n ) {}\r\n\r\n // Methods\r\n getStudentTeams(): Observable {\r\n // POST: returns the teams for a student\r\n const queryString = '?studentId=' + this.studentService.selectedStudent.Id +\r\n '&yearId=' + this.yearService.student360Year.Id;\r\n return this.http.get(System.apiURL.Student + 'GetStudentTeams' + queryString);\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n 0 && (versatransEnabled || !v10)\">\r\n \r\n \r\n \r\n \r\n
Program{{transportation[0].ProgramName}}
\r\n
\r\n No transportation data exists for student.\r\n
\r\n
\r\n No transportation data is currently available.\r\n {{errorMessage}}\r\n
\r\n
0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Pick Up\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Drop Off\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n More\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Days\r\n \r\n {{Trans.Days}} \r\n \r\n \r\n \r\n Destination\r\n \r\n {{Trans.Destination}} \r\n \r\n \r\n \r\n Time\r\n \r\n \r\n \r\n {{Trans.PickUp}}\r\n \r\n \r\n \r\n \r\n Location\r\n \r\n {{Trans.PickUpLocation}} \r\n \r\n \r\n \r\n Bus\r\n \r\n \r\n {{Trans.PickUpBus}}\r\n \r\n \r\n \r\n \r\n Time\r\n \r\n \r\n \r\n {{Trans.DropOff}}\r\n \r\n \r\n \r\n \r\n Location\r\n \r\n {{Trans.DropOffLocation}} \r\n \r\n \r\n \r\n Bus\r\n \r\n {{Trans.DropOffBus}} \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Pick Up Route{{Trans.PickUpRoute}}Drop Off Route{{Trans.DropOffRoute}}
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n Address\r\n \r\n {{Trans.Destination}} \r\n \r\n \r\n \r\n Address Type\r\n \r\n {{Trans.AddressType}} \r\n \r\n \r\n \r\n In Bound Bus\r\n \r\n {{Trans.InBoundBus}} \r\n \r\n \r\n \r\n In Bound Route\r\n \r\n {{Trans.InBoundRoute}} \r\n \r\n \r\n \r\n In Bound Stop\r\n \r\n {{Trans.InBoundStopID}} \r\n \r\n \r\n \r\n In Bound Stop Time\r\n \r\n {{Trans.InBoundStopTime}} \r\n \r\n \r\n \r\n Out Bound Bus\r\n \r\n {{Trans.OutBoundBus}} \r\n \r\n \r\n \r\n Out Bound Route\r\n \r\n {{Trans.OutBoundRoute}} \r\n \r\n \r\n \r\n Out Bound Stop\r\n \r\n {{Trans.OutBoundStopID}} \r\n \r\n \r\n \r\n Out Bound Stop Time\r\n \r\n {{Trans.OutBoundStopTime}} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { AfterViewInit, Component, ElementRef, HostListener, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\n// -------Angular Material------------------------------------\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { Subscription } from 'rxjs';\r\nimport { TylerMatTableDataSource } from '../../shared-components/angular-material/extended.class';\r\nimport { detailExpand } from '../../shared-components/angular-material/mat-animations';\r\nimport { Student } from '../../shared-components/student/student.model';\r\n// ---------Shared--------------------------------------------\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { Transportation } from './transportation.model';\r\nimport { TransportationService } from './transportation.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'transportation',\r\n templateUrl: './transportation.component.html',\r\n styleUrls: ['./transportation.component.scss'],\r\n animations: [detailExpand]\r\n})\r\nexport class TransportationComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // ------------Transportation Data---------------------------\r\n student360YearSubscription: Subscription;\r\n student360Year: Year;\r\n selectedStudentSubscription: Subscription;\r\n selectedStudent: Student;\r\n transportation: Transportation[] = [];\r\n // ------------Selection/Flags-----------------------------------\r\n selected = '0';\r\n v10: boolean;\r\n isBusy: boolean;\r\n showTraversaBusRoute: boolean;\r\n traversaEnabled: boolean;\r\n versatransEnabled: boolean;\r\n showErrorMessage = false;\r\n errorMessage = '';\r\n // ----------Angular Material------------------------------------\r\n angularMatData = new TylerMatTableDataSource();\r\n @ViewChild(MatSort) sort: MatSort;\r\n columnsToDisplay: string[] = ['More', 'Days', 'Destination', 'PickUp', 'PickUpLocation', 'PickUpBus', 'DropOff', 'DropOffLocation', 'DropOffBus'];\r\n columnsToDisplayTyler: string[] = ['Destination', 'AddressType', 'InBoundBus', 'InBoundRoute', 'InBoundStop', 'InBoundStopTime', 'OutBoundBus', 'OutBoundRoute', 'OutBoundStop', 'OutBoundStopTime'];\r\n initialSelection = [];\r\n allowMultiSelect = true;\r\n detailPadding = 0;\r\n pickUpPadding = 0;\r\n selection = new SelectionModel(this.allowMultiSelect, this.initialSelection);\r\n @ViewChildren('headerTest') matHeaderCellRef: QueryList;\r\n\r\n @ViewChild('more', { read: ElementRef }) moreRef: ElementRef;\r\n @ViewChild('days', { read: ElementRef }) daysRef: ElementRef;\r\n @ViewChild('destination', { read: ElementRef }) destinationRef: ElementRef;\r\n\r\n @ViewChild('pickUpTime', { read: ElementRef }) pickUpTimeRef: ElementRef;\r\n @ViewChild('pickUpLocation', { read: ElementRef }) pickUpLocationRef: ElementRef;\r\n @ViewChild('pickUpBus', { read: ElementRef }) pickUpBusRef: ElementRef;\r\n // --------------LifeCycle---------------------------------------\r\n\r\n constructor(private studentService: StudentService,\r\n private yearService: YearService,\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private transportationService: TransportationService) {\r\n\r\n this.selectedStudentSubscription = studentService.selectedStudentStream$.subscribe(\r\n studentId => {\r\n this.loadStudentInfo(studentId);\r\n });\r\n this.student360YearSubscription = yearService.observableStudent360YearStream$.subscribe(\r\n student360Year => {\r\n this.getStudentTransportation();\r\n }\r\n );\r\n\r\n this.angularMatData = new TylerMatTableDataSource(this.transportation);\r\n\r\n this.v10 = userService.currentUser.V10;\r\n this.showTraversaBusRoute = loginService.LoginSettings.ShowTraversaBusRoute;\r\n this.traversaEnabled = loginService.LoginSettings.TraversaEnabled;\r\n this.versatransEnabled = loginService.LoginSettings.VersatransEnabled;\r\n\r\n if (!this.loginService.LoginSettings.ShowTraversaBusRoute) {\r\n this.removeElement(this.columnsToDisplay, 'More');\r\n }\r\n if (!this.loginService.LoginSettings.ShowTraversaBusNumber) {\r\n this.removeElement(this.columnsToDisplay, 'PickUpBus');\r\n this.removeElement(this.columnsToDisplay, 'DropOffBus');\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.loadStudentInfo(this.studentService.selectedStudent.Id);\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.selectedStudentSubscription.unsubscribe();\r\n this.student360YearSubscription.unsubscribe();\r\n }\r\n\r\n // ------------Student Discipline Data---------------------------\r\n\r\n loadStudentInfo(studentId: number) {\r\n this.selectedStudent = this.studentService.students.filter(s => s.Id == studentId)[0];\r\n this.getStudentTransportation();\r\n }\r\n\r\n getStudentTransportation() {\r\n this.showErrorMessage = false;\r\n this.errorMessage = '';\r\n this.isBusy = true;\r\n\r\n if (this.selectedStudent && this.studentService.studentEnrollment) {\r\n this.transportationService.getTransportation(this.selectedStudent.Id, this.yearService.student360Year.Id, this.studentService.studentEnrollment.SchoolId).subscribe(result => {\r\n if (result.length == 1 && result[0].Id == -99) {\r\n this.showErrorMessage = true;\r\n this.errorMessage = result[0].ErrorMessage != null ? result[0].ErrorMessage : '';\r\n }\r\n else {\r\n this.transportation = result;\r\n }\r\n\r\n if (this.versatransEnabled || this.traversaEnabled) {\r\n this.student360Year = this.yearService.student360Year;\r\n }\r\n\r\n this.loadStudentTransportation();\r\n });\r\n }\r\n }\r\n\r\n private loadStudentTransportation(): void {\r\n this.angularMatData.data = this.transportation;\r\n this.angularMatData.sort = this.sort;\r\n this.isBusy = false;\r\n }\r\n\r\n // ------------Helper methods----------------------------------\r\n getPadding() {\r\n setTimeout(() => {\r\n this.detailPadding = this.destinationRef.nativeElement.offsetWidth + this.moreRef.nativeElement.offsetWidth + this.daysRef.nativeElement.offsetWidth - 100;\r\n this.pickUpPadding = this.pickUpTimeRef.nativeElement.offsetWidth + this.pickUpLocationRef.nativeElement.offsetWidth + this.pickUpBusRef.nativeElement.offsetWidth - 125;\r\n }, 0);\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n this.getPadding();\r\n }\r\n\r\n removeElement(array: any[], element: any) {\r\n const index: number = array.indexOf(element);\r\n array.splice(index, 1);\r\n }\r\n\r\n // ------------Aria/Accessibility---------------------------\r\n\r\n getAriaRow(row: any): string {\r\n // Returns string for a given row's data\r\n // reads each column header name and then the cell data for that column\r\n\r\n\r\n return '';\r\n }\r\n\r\n // ----------Angular Material------------------------------------\r\n toggleExpanded(row: any) {\r\n if (this.pickUpPadding == 0 || this.detailPadding == 0) {\r\n this.getPadding();\r\n }\r\n this.angularMatData.toggleExpanded(row);\r\n }\r\n\r\n checkExpanded(row: any): boolean {\r\n return this.angularMatData.checkExpanded(row);\r\n }\r\n\r\n expandAll(expand: boolean) {\r\n this.angularMatData.expandAll(expand);\r\n }\r\n\r\n rowKeyPress(event: KeyboardEvent, row: any) {\r\n this.angularMatData.rowKeyPress(event, row);\r\n }\r\n}\r\n","import { System } from './../../shared-components/System';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Transportation } from './transportation.model';\r\n\r\n@Injectable()\r\nexport class TransportationService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getTransportation(studentId: number, yearId: number, schoolId: number): Observable {\r\n let queryString = '';\r\n queryString += '?studentId=' + studentId +\r\n '&yearId=' + yearId +\r\n '&schoolId=' + schoolId;\r\n return this.http.get(System.apiURL.Student + 'GetTransportation' + queryString);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { System } from '../../../shared-components/System';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { FamilyRegistrationService } from '../family-registration.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslationService } from '../../../shared-components/translation/translation.service';\r\nimport { FamilyRegistrationYear } from '../../family-registration/family-registration-year.model';\r\nimport { NewFamilyRegistrationYearSelectionComponent } from '../../family-registration/new-family-registration-year-selection/new-family-registration-year-selection.component';\r\nimport { Router } from '@angular/router';\r\nimport { GeneralConfirmationComponent } from '../../../shared-components/controls/general-confirmation/general-confirmation.component';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\nimport { EmailNotSentComponent } from '../email-not-sent/email-not-sent.component';\r\n\r\n@Component({\r\n selector: 'app-register-new-family-verify-code',\r\n templateUrl: './register-new-family-verify-code.component.html',\r\n styles: [\r\n ]\r\n})\r\nexport class RegisterNewFamilyVerifyCodeComponent implements OnInit {\r\n \r\n @ViewChild('email', { static: true }) inputEmail: ElementRef;\r\n @ViewChild('code', { static: true }) inputCode: ElementRef;\r\n registerNewFamily: any;\r\n public errorList: ErrorList[] = [];\r\n dialogWidth: number;\r\n @ViewChild('dialogWindow', { read: ElementRef }) dialogWindow: ElementRef;\r\n frYearsDialogRef: MatDialogRef;\r\n\r\n\r\n constructor(\r\n private familyRegistrationService: FamilyRegistrationService,\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private dialog: MatDialog,\r\n private userService: UserService,\r\n private translateService: TranslateService,\r\n private translationService: TranslationService,\r\n private router: Router,\r\n private sharedService: SharedService\r\n ) { }\r\n\r\n verifyEmail: string;\r\n verifyCode: string;\r\n isValid: boolean;\r\n V10 = false;\r\n \r\nlanguageId =1;\r\n\r\n ngOnInit(): void {\r\n // this.registerNewFamily = this.familyRegistrationService.registerNewFamily;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n modalInstanceNextClick() {\r\n if (this.validate()) {\r\n this.loginService.getRegisterParentInfo(this.verifyEmail, this.verifyCode).subscribe(\r\n (result) => {\r\n if (result) {\r\n // this.location.url(this.location.path());\r\n this.familyRegistrationService.students = [];\r\n this.familyRegistrationService.householdParent = result;\r\n if (this.familyRegistrationService.householdParent.Id == -1) {\r\n this.invalidCombination();\r\n }\r\n else if (this.familyRegistrationService.householdParent.Id == -2)\r\n {\r\n // Expired\r\n this.codeExpire();\r\n this.dialogRef.close('Closed.');\r\n \r\n }\r\n else if (this.familyRegistrationService.householdParent.Id > 0)\r\n {\r\n this.dialogRef.close('Next was clicked.');\r\n this.redirectQR();\r\n }\r\n\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n\r\n invalidCombination()\r\n {\r\n const invalidCodeDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n invalidCodeDialog.componentInstance.headerLabel = 'Invalid Email/Code Combination';\r\n invalidCodeDialog.componentInstance.confirmMessage = 'The code provided is not associated with this email address.';\r\n invalidCodeDialog.componentInstance.disableConfirmation = true;\r\n invalidCodeDialog.componentInstance.confirmEvent.subscribe((invalidCodeReturnValue: boolean) => {\r\n // if (invalidCodeReturnValue) {\r\n // // close button no need to do anything\r\n // }\r\n });\r\n }\r\n\r\n\r\n codeExpire()\r\n {\r\n const codeExpiredDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n });\r\n codeExpiredDialog.componentInstance.headerLabel = 'Expired Code';\r\n codeExpiredDialog.componentInstance.confirmMessage = 'The code you entered has expired.' + \"
\" +\r\n \"Would you like to have a new code sent to \" + this.verifyEmail;\r\n codeExpiredDialog.componentInstance.okButtonLabel = 'Yes';\r\n codeExpiredDialog.componentInstance.cancelButtonLabel = 'No';\r\n codeExpiredDialog.componentInstance.confirmEvent.subscribe((resendEmail: boolean) => {\r\n if (resendEmail) {\r\n this.familyRegistrationService.sendRegisterParentEmail(this.verifyEmail, this.languageId, \"\").subscribe(\r\n (result) => {\r\n if (!result) {\r\n const emailNotSentDialog = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n },\r\n () => {\r\n const emailNotSentDialog = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n );\r\n\r\n }\r\n });\r\n }\r\n\r\n\r\n redirectQR() {\r\n this.userService.currentLanguage = 'en';\r\n if (this.familyRegistrationService.householdParent.Language == 2) {\r\n this.userService.currentLanguage = 'fr';\r\n } else if (this.familyRegistrationService.householdParent.Language == 3) {\r\n this.userService.currentLanguage = 'es';\r\n } else if (this.familyRegistrationService.householdParent.Language == 4) {\r\n this.userService.currentLanguage = 'pt';\r\n }\r\n\r\n this.translateService.use(this.userService.currentLanguage);\r\n this.translateService.setDefaultLang(this.userService.currentLanguage);\r\n this.translationService.getLanguageTranslations();\r\n\r\n this.familyRegistrationService.getORYears().subscribe((years: FamilyRegistrationYear[]) => {\r\n this.familyRegistrationService.years = years;\r\n if (this.familyRegistrationService.years.length != 0) {\r\n if ((this.loginService.LoginSettings.V10 && this.familyRegistrationService.householdParent.AyIdentifier != null && this.familyRegistrationService.householdParent.AyIdentifier != '') || (!this.loginService.LoginSettings.V10 && this.familyRegistrationService.householdParent.YearId > 0)) {\r\n if (this.loginService.LoginSettings.V10) {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years.find(o => o.AYIdentifier == this.familyRegistrationService.householdParent.AyIdentifier);\r\n } else {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years.find(o => o.Id == this.familyRegistrationService.householdParent.YearId);\r\n }\r\n if (this.familyRegistrationService.defaultYear) {\r\n this.router.navigateByUrl('/familyregistration/householdparent');\r\n }\r\n } else {\r\n if (this.loginService.LoginSettings.V10) {\r\n const currentDate = new Date();\r\n for (let i = 0; i < this.familyRegistrationService.years.length; i++) {\r\n if (this.familyRegistrationService.years[i].Status == 1) {\r\n if (this.familyRegistrationService.years[i].StartDate < currentDate) {\r\n this.familyRegistrationService.years[i].Status = 3;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.familyRegistrationService.years.length > 1) {\r\n this.frYearsDialogRef = this.dialog.open(NewFamilyRegistrationYearSelectionComponent, {\r\n disableClose: true,\r\n maxWidth: '500px'\r\n });\r\n } else {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years[0];\r\n this.familyRegistrationService.householdParent.YearId = this.familyRegistrationService.defaultYear.Id;\r\n this.familyRegistrationService.householdParent.AyIdentifier = this.loginService.LoginSettings.V10 ? this.familyRegistrationService.defaultYear.AYIdentifier : this.familyRegistrationService.defaultYear.Description;\r\n\r\n this.frYearsDialogRef = this.dialog.open(NewFamilyRegistrationYearSelectionComponent, {\r\n disableClose: true,\r\n maxWidth: '500px'\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n validate(): boolean {\r\n const mailformat = System.mailRegexp;\r\n this.errorList = [];\r\n this.isValid = true;\r\n if (this.verifyEmail == null || this.verifyEmail == '') {\r\n this.errorList.push({\r\n fieldName: 'Email',\r\n fieldRef: this.inputEmail,\r\n errorMsg: 'Field is required'\r\n });\r\n this.isValid = false;\r\n }\r\n else if (this.verifyEmail.match(mailformat) == null) {\r\n this.errorList.push({\r\n fieldName: 'Email',\r\n fieldRef: this.inputEmail,\r\n errorMsg: 'Invalid Email Address'\r\n });\r\n this.isValid = false;\r\n }\r\n if (this.verifyCode == null || this.verifyCode == '') {\r\n this.errorList.push({\r\n fieldName: 'Code',\r\n fieldRef: this.inputCode,\r\n errorMsg: 'Field is required'\r\n });\r\n this.isValid = false;\r\n }\r\n return this.isValid;\r\n }\r\n modalInstanceCancelClick() {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n\r\n}\r\n","
\r\n\r\n \r\n

\r\n Already Have a Code?\r\n

\r\n\r\n \r\n \r\n
Enter the email address to which the code was sent and the code.
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n
","\r\n
\r\n Register New Family\r\n
\r\n\r\n\r\n\r\n\t
\r\n\t\tThis option is intended for use by families who are new to the district.\r\n\t
\r\n\t
\r\n\t\tThis means none of the students in the family are currently attending any of the schools in the district and none of the students have attended any of the schools in the district in the past.\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\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { LoginService } from '../../login/login.service';\r\nimport { RegisterNewFamilyVerifyCodeComponent } from '../register-new-family-verify-code/register-new-family-verify-code.component';\r\n \r\n\r\n@Component({\r\n selector: 'app-register-new-family-message',\r\n templateUrl: './register-new-family-message.component.html',\r\n styleUrls: [\r\n './register-new-family-message.component.css',\r\n '../familiy-registration-shared-style.css'\r\n ]\r\n})\r\nexport class RegisterNewFamilyMessageComponent implements OnInit {\r\n interpolatedString: string;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService\r\n ) { }\r\n\r\n enableSelfRegistrationCode = false;\r\n\r\n ngOnInit() {\r\n this.interpolatedString = 'This was interpolated';\r\n this.enableSelfRegistrationCode = this.loginService.LoginSettings.EnableSelfRegistrationCode;\r\n }\r\n\r\n modalInstancePreviousClick = function () {\r\n this.dialogRef.close('Select Language');\r\n };\r\n\r\n modalInstanceNextClick = function () {\r\n this.dialogRef.close('Register New Family');\r\n };\r\n\r\n modalInstanceCancelClick = function () {\r\n this.dialogRef.close('Cancel was clicked.');\r\n };\r\n\r\n alreadyHaveCodeClick = function () {\r\n this.dialog.open(RegisterNewFamilyVerifyCodeComponent, {\r\n disableClose: true,\r\n width: '500px',\r\n panelClass: 'tyl-mat-dialog'\r\n });\r\n this.dialogRef.close('Cancel was clicked.');\r\n };\r\n\r\n}\r\n","\r\n
\r\n

{{'Link Already Sent' | translate}}

\r\n
A link for accessing the New Family Registration page was already emailed to this address.
\r\n
{{'Do you want to have the link sent again?' | translate}}
\r\n
\r\n
\r\n

{{'Code Already Sent' | translate}}

\r\n
A code for proceeding to the next step of New Family Registration page was already emailed to this address.
\r\n
{{'Would you like to have the code sent again?' | translate}}
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FamilyRegistrationService } from '../family-registration.service';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { EmailNotSentComponent } from '../email-not-sent/email-not-sent.component';\r\nimport { LoginService } from '../../login/login.service';\r\n\r\n@Component({\r\n selector: 'app-link-already-sent',\r\n templateUrl: './link-already-sent.component.html',\r\n styleUrls: [\r\n './link-already-sent.component.css',\r\n '../familiy-registration-shared-style.css'\r\n ]\r\n})\r\nexport class LinkAlreadySentComponent implements OnInit {\r\nregisterNewFamily: any;\r\n\r\n constructor(\r\n private familyRegistrationService: FamilyRegistrationService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n private loginService: LoginService\r\n ) { }\r\n enableSelfRegistrationCode = false;\r\n ngOnInit() {\r\n this.registerNewFamily = this.familyRegistrationService.registerNewFamily;\r\n this.enableSelfRegistrationCode = this.loginService.LoginSettings.EnableSelfRegistrationCode;\r\n }\r\n\r\n modalInstanceYesClick() {\r\n this.dialogRef.close('Yes was clicked.');\r\n this.familyRegistrationService.sendRegisterParentEmail(this.registerNewFamily.emailAddress, this.registerNewFamily.languageId, window.location.href).subscribe(\r\n (result) => {\r\n if (!result) {\r\n const emailNotSentDialog = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n },\r\n () => {\r\n const emailNotSentDialog = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n );\r\n}\r\n\r\nmodalInstanceCloseClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n}\r\n}\r\n","\r\n

Login Exists

\r\n
Login information has already been provided for this email address.
\r\n
Please use that information to access the site.
\r\n
If you have forgotten your password, use the Forgot Password link on the login page.
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-login-exists',\r\n templateUrl: './login-exists.component.html',\r\n styleUrls: [\r\n './login-exists.component.css',\r\n '../familiy-registration-shared-style.css'\r\n ]\r\n})\r\nexport class LoginExistsComponent implements OnInit {\r\n\r\n loginSettings: LoginSettings;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService\r\n ) {\r\n this.loginSettings = loginService.LoginSettings;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n modalInstanceCloseClick() {\r\n\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-duplicate-email-address',\r\n templateUrl: './duplicate-email-address.component.html',\r\n styleUrls: [\r\n './duplicate-email-address.component.css',\r\n '../familiy-registration-shared-style.css'\r\n ]\r\n})\r\nexport class DuplicateEmailAddressComponent implements OnInit {\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n modalInstanceCloseClick() {\r\n\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","\r\n

Duplicate Email Address

\r\n
A record already exists with this email address.
\r\n
If your students are already registered at the district or have attended the district in the past, this option cannot be used.
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { FamilyRegistrationService } from '../family-registration.service';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { LinkAlreadySentComponent } from '../link-already-sent/link-already-sent.component';\r\nimport { LoginExistsComponent } from '../login-exists/login-exists.component';\r\nimport { DuplicateEmailAddressComponent } from '../duplicate-email-address/duplicate-email-address.component';\r\nimport { EmailSentComponent } from '../email-sent/email-sent.component';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { EmailNotSentComponent } from '../email-not-sent/email-not-sent.component';\r\nimport {System} from '../../../shared-components/System';\r\n\r\n@Component({\r\n selector: 'app-register-new-family',\r\n templateUrl: './register-new-family.component.html',\r\n styleUrls: [\r\n './register-new-family.component.css',\r\n '../familiy-registration-shared-style.css'\r\n ]\r\n})\r\nexport class RegisterNewFamilyComponent implements OnInit {\r\n @ViewChild('email', { static: true }) inputEmail: ElementRef;\r\n registerNewFamily: any;\r\n public errorList: ErrorList[] = [];\r\n linkAlreadySentDialogRef: MatDialogRef;\r\n loginExistsDialogRef: MatDialogRef;\r\n duplicateEmailDialogRef: MatDialogRef;\r\n emailSentDialogRef: MatDialogRef;\r\n emailNotSentDialogRef: MatDialogRef;\r\n dialogWidth: number;\r\n @ViewChild('dialogWindow', { read: ElementRef }) dialogWindow: ElementRef;\r\n V10: boolean;\r\n\r\n\r\n constructor(\r\n private familyRegistrationService: FamilyRegistrationService,\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.registerNewFamily = this.familyRegistrationService.registerNewFamily;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n }\r\n\r\n modalInstancePreviousClick() {\r\n this.registerNewFamily.emailAddress = '';\r\n this.dialogRef.close('Register New Family Message');\r\n this.dialogWidth = this.dialogWindow.nativeElement.width;\r\n }\r\n\r\n modalInstanceNextClick() {\r\n if (this.validate()) {\r\n this.dialogRef.close('Next was clicked.');\r\n\r\n this.loginService.getClientInformation().subscribe(\r\n (clientInfo) => {\r\n if (clientInfo) {\r\n \tconst baseURL = window.location.href.slice(0, window.location.href.includes('?') ? window.location.href.indexOf('?') : window.location.href.length);\r\n this.familyRegistrationService.registerParent(this.registerNewFamily.emailAddress, this.registerNewFamily.languageId, baseURL, clientInfo[0], clientInfo[1], clientInfo[2]).subscribe(\r\n (results) => {\r\n if (results == 'Link Already Sent') {\r\n this.linkAlreadySentDialogRef = this.dialog.open(LinkAlreadySentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n else if (results == 'Login Exists') {\r\n this.loginExistsDialogRef = this.dialog.open(LoginExistsComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n else if (results == 'Duplicate Email Address') {\r\n this.duplicateEmailDialogRef = this.dialog.open(DuplicateEmailAddressComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n else if (results == 'Message not sent') {\r\n this.emailNotSentDialogRef = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n else {\r\n this.emailSentDialogRef = this.dialog.open(EmailSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n data: {\r\n registerNewFamily: this.registerNewFamily\r\n }\r\n });\r\n }\r\n },\r\n () => {\r\n this.emailNotSentDialogRef = this.dialog.open(EmailNotSentComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n validate(): boolean {\r\n const mailformat = System.mailRegexp;\r\n this.errorList = [];\r\n if (this.registerNewFamily.emailAddress == null || this.registerNewFamily.emailAddress == '') {\r\n this.errorList.push({\r\n fieldName: 'Email',\r\n fieldRef: this.inputEmail,\r\n errorMsg: 'Field is required'\r\n });\r\n return false;\r\n }\r\n else if (this.registerNewFamily.emailAddress.match(mailformat) == null) {\r\n this.errorList.push({\r\n fieldName: 'Email',\r\n fieldRef: this.inputEmail,\r\n errorMsg: 'Invalid Email Address'\r\n });\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n modalInstanceCancelClick() {\r\n this.registerNewFamily.emailAddress = '';\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n\r\n}\r\n","\r\n
\r\n\t
\r\n\t\tRegister New Family\r\n\t
\r\n\t
\r\n\t\tStep 1 of 5\r\n\t
\r\n
\r\n\r\n\r\n\r\n\t
Please provide your email address, then select Next.
\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\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\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","
\r\n\r\n \r\n

\r\n Select Language\r\n

\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n English\r\n \r\n
\r\n\t\t\t\t\r\n Español\r\n\t\t\t\t\r\n
\r\n \r\n Français\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\t
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FamilyRegistrationService } from '../family-registration.service';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\n\r\n@Component({\r\n selector: 'app-select-language',\r\n templateUrl: './select-language.component.html',\r\n styleUrls: [\r\n './select-language.component.css',\r\n '../familiy-registration-shared-style.css'\r\n ]\r\n})\r\nexport class SelectLanguageComponent implements OnInit {\r\n\r\n LoginSettings: LoginSettings;\r\n registerNewFamily: any;\r\n isV10: boolean;\r\n\r\n constructor(\r\n private userService: UserService,\r\n private familyRegistrationService: FamilyRegistrationService,\r\n private loginService: LoginService,\r\n private dialogRef: MatDialogRef,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.registerNewFamily = this.familyRegistrationService.registerNewFamily;\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.isV10 = this.LoginSettings.V10;\r\n }\r\n\r\n modalInstanceNextClick = function () {\r\n\r\n this.userService.currentLanguage = this.registerNewFamily.language;\r\n this.translateService.use(this.userService.currentLanguage);\r\n this.translateService.setDefaultLang(this.userService.currentLanguage);\r\n\r\n this.registerNewFamily.languageId = 1;\r\n if (this.userService.currentLanguage == 'fr') {\r\n this.registerNewFamily.languageId = 2;\r\n }\r\n else if (this.userService.currentLanguage == 'es') {\r\n this.registerNewFamily.languageId = 3;\r\n }\r\n else if (this.userService.currentLanguage == 'pt') {\r\n this.registerNewFamily.languageId = 4;\r\n }\r\n\r\n this.dialogRef.close('Register New Family Message');\r\n};\r\n\r\nmodalInstanceCancelClick = function () {\r\n this.dialogRef.close('Cancel was clicked.');\r\n};\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'app-access-message',\r\n templateUrl: './access-message.component.html',\r\n styles: []\r\n})\r\nexport class AccessMessageComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
Classroom 360 Access
\r\n\r\n\r\n
Classroom 360 is not yet available in the early release of version 3.
\r\n
\r\n Currently you will only be able to access the student information pages, which are view-only.\r\n
\r\n
\r\n\r\n\r\n \r\n","export class AccessHistory {\r\n Id: number;\r\n CRMNumber: string;\r\n JiraNumber: string;\r\n Description: string;\r\n Type: string;\r\n AddedBy: string;\r\n AddedOn: Date;\r\n IsAdminLogin: boolean;\r\n}\r\n\r\n\r\nexport class LoginAudit{\r\n strKey: string;\r\n strValue: boolean;\r\n}","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { AccessHistory } from '../../../classroom360/system-settings/system-settings-v9/upgrade-access-history/access-history-sub-tab/access-history-sub-tab.model';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { LoginService } from '../login.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-audit-logins',\r\n templateUrl: './audit-logins.component.html',\r\n styles: [\r\n ]\r\n})\r\nexport class AuditLoginsComponent implements OnInit {\r\n errors: ErrorList[] = [];\r\n @ViewChild('yournameRef', { read: ElementRef, static: true }) yournameRef: ElementRef;\r\n @ViewChild('typeRef', { read: ElementRef, static: true }) typeRef: ElementRef;\r\n @ViewChild('descriptionRef', { read: ElementRef, static: true }) descriptionRef: ElementRef;\r\n \r\n\r\n auditLogin = new AccessHistory();\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private loginservice: LoginService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n nextClick() {\r\n this.validateField();\r\n if (this.errors.length == 0) {\r\n this.auditLogin.IsAdminLogin = true;\r\n this.loginservice.saveTylerAccessHistory(this.auditLogin).subscribe(result => {\r\n this.dialogRef.close();\r\n });\r\n }\r\n\r\n }\r\n validateField() {\r\n this.errors = [];\r\n \r\n if (this.auditLogin.AddedBy == null || this.auditLogin.AddedBy == '') {\r\n this.errors.push({\r\n fieldName: 'Your Name',\r\n fieldRef: this.yournameRef,\r\n errorMsg: 'Field is required'\r\n });\r\n\r\n this.yournameRef.nativeElement.focus();\r\n\r\n }\r\n if (this.auditLogin.Type == null || this.auditLogin.Type == '') {\r\n this.errors.push({\r\n fieldName: 'Type',\r\n fieldRef: this.typeRef,\r\n errorMsg: 'Field is required'\r\n });\r\n this.typeRef.nativeElement.focus();\r\n\r\n }\r\n\r\n if (this.auditLogin.Description == null || this.auditLogin.Description.toString() == '' ) {\r\n \r\n this.errors.push({\r\n fieldName: 'Description',\r\n fieldRef: this.descriptionRef,\r\n errorMsg: 'Field is required'\r\n });\r\n\r\n this.descriptionRef.nativeElement.focus();\r\n this.yournameRef.nativeElement.focus();\r\n\r\n } \r\n \r\n }\r\n\r\n\r\n}\r\n","

sdmadmin Auditing - Enter Required Info

\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Normal Operation\r\n Issue Investigation\r\n Training\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'student-reset-password-warning',\r\n templateUrl: './student-reset-password-warning.component.html',\r\n styleUrls: ['./student-reset-password-warning.component.css']\r\n})\r\nexport class StudentResetPasswordWarningComponent implements OnInit {\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n cancelClick(){\r\n this.dialogRef.close('Cancel was clicked.'); \r\n }\r\n}\r\n","
\r\n
\r\n
Reset Your Password
\r\n
\r\n
\r\n
\r\n Students are not allowed to change their passwords.\r\n
\r\n
\r\n Please contact your school for assistance.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","
\r\n
\r\n Email Your Username\r\n
\r\n
\r\n
\r\n
\r\n Your username will be sent to the email address associated with the information you submitted.\r\n
\r\n
\r\n
\r\n NOTE: Remember to look in your Junk or Spam folder too.\r\n
\r\n
\r\n
\r\n For additional assistance, please contact the {{loginSettings.CountryCode == 'CAN' ? 'division' :\r\n 'district'}}{{loginSettings.ShowLoginAssistanceInfo\r\n ? ': ' : '.'}}\r\n \r\n {{loginSettings.UsernamePasswordRequestEmail}}\r\n or \r\n ({{loginSettings.UsernamePasswordRequestPhone.substring(0,3)}}) {{loginSettings.UsernamePasswordRequestPhone.substring(3,6)}}-{{loginSettings.UsernamePasswordRequestPhone.substring(6)}}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {LoginService} from '../../login.service';\r\nimport {LoginSettings} from '../../loginSetting.model';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-confirmation-modal',\r\n templateUrl: './confirmation-modal.component.html',\r\n styleUrls: ['./confirmation-modal.component.css']\r\n})\r\nexport class ConfirmationModalComponent implements OnInit {\r\n loginSettings: LoginSettings;\r\n constructor(private loginService: LoginService, private dialogRef: MatDialogRef) { }\r\n\r\n ngOnInit() {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n
Email Your Username
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n If the information you provide below matches exactly with our records, an email will be sent with your user\r\n name.\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Multiple accounts were found matching this information. Please contact the {{LoginSettings.CountryCode ==\r\n 'CAN' ? 'division'\r\n : 'district'}} for assistance{{LoginSettings.ShowLoginAssistanceInfo ? ': ' : '.'}}\r\n \r\n {{LoginSettings.UsernamePasswordRequestEmail}}\r\n or \r\n ({{LoginSettings.UsernamePasswordRequestPhone.substring(0,3)}}) {{LoginSettings.UsernamePasswordRequestPhone.substring(3,6)}}-{{LoginSettings.UsernamePasswordRequestPhone.substring(6)}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LoginService } from '../login.service';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginSettings } from '../LoginSetting.model';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { isValidEmail } from '../change-password/password-validator';\r\nimport { ConfirmationModalComponent } from './confirmation-modal/confirmation-modal.component';\r\n\r\n@Component({\r\n selector: 'app-forgot-username',\r\n templateUrl: './forgot-username.component.html',\r\n styleUrls: ['./forgot-username.component.css']\r\n})\r\nexport class ForgotUsernameComponent implements OnInit {\r\n LoginSettings: LoginSettings;\r\n forgotUserName: any = {};\r\n forgotUserNameForm: FormGroup;\r\n duplicateRecords = false;\r\n firstNameError = 'Required Field';\r\n lastNameError = 'Required Field';\r\n emailAddressError = 'Required Field';\r\n userType: number;\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.forgotUserNameForm = new FormGroup({\r\n 'firstName': new FormControl(null, [\r\n Validators.required\r\n ]),\r\n 'lastName': new FormControl(null, [\r\n Validators.required\r\n ]),\r\n 'emailAddress': new FormControl(null, [\r\n Validators.required,\r\n isValidEmail()\r\n ])\r\n });\r\n this.OnChanges();\r\n }\r\n\r\n modalInstanceContinueClick() {\r\n this.firstName.markAsTouched();\r\n this.lastName.markAsTouched();\r\n this.emailAddress.markAsTouched();\r\n this.forgotUserName.firstName = this.firstName.value;\r\n this.forgotUserName.lastName = this.lastName.value;\r\n this.forgotUserName.emailAddress = this.emailAddress.value;\r\n if (this.forgotUserNameForm.valid) {\r\n this.loginService.sendForgetUserNameEmail(this.forgotUserName.firstName, this.forgotUserName.lastName, this.forgotUserName.emailAddress, this.userType).subscribe(response => {\r\n if (response.includes('Id=') || response.includes('User not found')) {\r\n this.dialogRef.close({ isEmailSent: true });\r\n this.dialog.open(ConfirmationModalComponent, {\r\n maxWidth: '400px',\r\n disableClose: true\r\n });\r\n }\r\n if (response.includes('Duplicate Accounts')) {\r\n this.duplicateRecords = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n modalInstanceCancelClick() {\r\n this.dialogRef.close({ isEmailSent: this.forgotUserName.isEmailSent });\r\n }\r\n\r\n OnChanges(): void {\r\n this.forgotUserNameForm.valueChanges.subscribe(val => {\r\n // Check First Name\r\n if (this.firstName.invalid) {\r\n if (this.firstName.errors.hasOwnProperty('required')) {\r\n this.firstNameError = 'Required Field';\r\n }\r\n }\r\n // Check Last Name\r\n if (this.lastName.invalid) {\r\n if (this.lastName.errors.hasOwnProperty('required')) {\r\n this.lastNameError = 'Required Field';\r\n }\r\n }\r\n // Check Email address\r\n if (this.emailAddress.invalid) {\r\n if (this.emailAddress.errors.hasOwnProperty('required')) {\r\n this.emailAddressError = 'Required Field';\r\n } else if (this.emailAddress.errors.hasOwnProperty('notValidEmail')) {\r\n this.emailAddressError = 'Email Address is invalid';\r\n }\r\n }\r\n });\r\n }\r\n\r\n saveUserLoginInfo(userId: number) {\r\n this.loginService.saveUserLoginInfo(userId, this.userType, window.innerHeight, window.innerWidth, 4, '');\r\n }\r\n\r\n get firstName() {\r\n return this.forgotUserNameForm.get('firstName');\r\n }\r\n\r\n get lastName() {\r\n return this.forgotUserNameForm.get('lastName');\r\n }\r\n\r\n get emailAddress() {\r\n return this.forgotUserNameForm.get('emailAddress');\r\n }\r\n}\r\n","
\r\n
\r\n Set Password\r\n Reset Your \r\n Staff\r\n Parent\r\n Student Password\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n A link to reset your password will be sent to this address.\r\n A link to set your password will be sent to this address.\r\n A link to reset your password will be sent to the email address associated with this username.\r\n
\r\n \r\n \r\n NOTE : Your Username is your email address.\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n The link you used to access this page has expired.\r\n
\r\n Please enter your email address and a new link will be sent.\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n Email Address is required.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n A link will be sent to the email address associated with this staffparentstudent username.\r\n \r\n \r\n A link to reset your password will be sent to this address.\r\n A link to set your password will be sent to this address.\r\n \r\n
\r\n
\r\n NOTE: Remember to look in your Junk or Spam folder too.\r\n
\r\n
\r\n For additional assistance, please contact the {{loginSettings.CountryCode == 'CAN' ? 'division' :\r\n 'district'}}{{loginSettings.ShowLoginAssistanceInfo ? ': ' : '.'}}\r\n \r\n {{loginSettings.UsernamePasswordRequestEmail}}\r\n or \r\n ({{loginSettings.UsernamePasswordRequestPhone.substring(0,3)}}) {{loginSettings.UsernamePasswordRequestPhone.substring(3,6)}}-{{loginSettings.UsernamePasswordRequestPhone.substring(6)}}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { LoginService } from '../login.service';\r\nimport { LoginSettings } from '../LoginSetting.model';\r\nimport { Router } from '@angular/router';\r\nimport { MatDialogRef, MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { StudentResetPasswordWarningComponent } from './student-reset-password-warning/student-reset-password-warning.component';\r\nimport { ForgotUsernameComponent } from '../forgot-username/forgot-username.component';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.css']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n forgotUsernameDialogRef: MatDialogRef;\r\n studentResetPasswordWarningDialogRef: MatDialogRef;\r\n loginSettings: LoginSettings;\r\n forgotPassword: any = { userName: '', errorMessage: '' };\r\n forgotUserName: any = {};\r\n isProcessBusy: boolean;\r\n classicSetPassword: boolean;\r\n userType: number;\r\n forgotPasswordForm: FormGroup;\r\n formErrors: boolean;\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private router: Router,\r\n private dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n this.forgotPasswordForm = new FormGroup({\r\n 'userName': new FormControl(null, [\r\n Validators.required\r\n ]),\r\n 'emailAddress': new FormControl(null, [\r\n Validators.required\r\n ])\r\n });\r\n if (this.data != null) {\r\n this.userType = this.data.userType;\r\n }\r\n }\r\n\r\n\r\n forgotUserNameClick() {\r\n this.forgotUserName = [];\r\n this.forgotUsernameDialogRef = this.dialog.open(ForgotUsernameComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '400px',\r\n disableClose: true\r\n });\r\n this.forgotUsernameDialogRef.componentInstance.userType = this.userType;\r\n\r\n this.forgotUsernameDialogRef.afterClosed().subscribe(result => {\r\n if (result.isEmailSent == true) {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n });\r\n }\r\n\r\n continueClick() {\r\n if (this.loginSettings.V10) {\r\n // V10\r\n this.forgotPassword.userName = this.userName.value;\r\n } else {\r\n // V9\r\n if (this.userType == 2) {\r\n // if parent\r\n this.forgotPassword.userName = this.emailAddress.value;\r\n } else {\r\n // else\r\n this.forgotPassword.userName = this.userName.value;\r\n }\r\n }\r\n if (this.forgotPassword.userName == undefined) {\r\n this.formErrors = true;\r\n }\r\n if (this.isProcessBusy == null || this.isProcessBusy == false) {\r\n this.isProcessBusy = true;\r\n if ((this.loginSettings.V10) && (this.userName.value == null || this.forgotPassword.userName.trim() == '')) {\r\n this.isProcessBusy = false;\r\n }\r\n else if ((!this.loginSettings.V10) && ((this.userName.value == null && this.emailAddress.value == null) || this.forgotPassword.userName.trim() == '')) {\r\n this.isProcessBusy = false;\r\n }\r\n else {\r\n const setPassword = this.classicSetPassword != null ? this.classicSetPassword : false;\r\n this.loginService.sendForgetPasswordEmail(this.forgotPassword.userName, this.userType, setPassword).subscribe(\r\n (results: string) => {\r\n this.forgotPassword.errorMessage = '';\r\n this.forgotPassword.isEmailSent = true;\r\n this.saveUserLoginInfo(-1);\r\n if (results == 'Student cannot change their passwords') {\r\n this.studentResetPasswordWarningDialogRef = this.dialog.open(StudentResetPasswordWarningComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '400px'\r\n });\r\n\r\n this.studentResetPasswordWarningDialogRef.afterClosed().subscribe(result => {\r\n if (result == 'Cancel was clicked.') {\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n });\r\n }\r\n else if (results != '' && results != 'Email Sent') {\r\n this.forgotPassword.errorMessage = results;\r\n }\r\n },\r\n (err) => {\r\n this.isProcessBusy = false;\r\n },\r\n () => {\r\n this.isProcessBusy = false;\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n cancelClick() {\r\n if (this.router.url == '/loginassist') {\r\n this.router.navigateByUrl('/login');\r\n }\r\n this.dialogRef.close('Cancel was clicked.');\r\n }\r\n\r\n saveUserLoginInfo(userId: number) {\r\n this.loginService.saveUserLoginInfo(userId, this.userType, window.innerHeight, window.innerWidth, 3, '');\r\n }\r\n\r\n get userName() {\r\n return this.forgotPasswordForm.get('userName');\r\n }\r\n\r\n get emailAddress() {\r\n return this.forgotPasswordForm.get('emailAddress');\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\n@Component({\r\n selector: 'app-login-only360',\r\n templateUrl: './login-only360.component.html',\r\n })\r\nexport class LoginOnly360Component implements OnInit {\r\n constructor(private dialogRef: MatDialogRef,\r\n private dialog: MatDialog) { }\r\n\r\n ngOnInit() {\r\n }\r\n ok() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
Reset Password
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Passwords do not match\r\n
\r\n
\r\n
\r\n {{resetPasswordMessage}}\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n

\r\n Classic Login Not Available\r\n

\r\n\r\n\r\n\r\n You only have permission to log into 360.\r\n\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n
","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { LoginSettings } from '../loginSetting.model';\r\nimport { LoginService } from '../login.service';\r\nimport { User } from '../../../shared-components/user/user.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport {\r\n mustBeDifferent, notSameAsUsername,\r\n passwordsMatchForChangePassword, preventPasswordReuse, requiresMixedLettersNumbers,\r\n requiresNumeric,\r\n requiresSpecial,\r\n requiresUpperCase\r\n} from '../change-password/password-validator';\r\nimport { Router } from '@angular/router';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { SharedService } from '../../../shared-components/shared.service';\r\n\r\n@Component({\r\n selector: 'app-reset-password',\r\n templateUrl: './reset-password.component.html',\r\n styleUrls: ['./reset-password.component.css']\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n\r\n isDebug: false; // Used for debugging\r\n LoginSettings: LoginSettings;\r\n User: User;\r\n newPasswordError = 'Field is Required';\r\n repeatNewPasswordError = 'Field is Required';\r\n resetPasswordForm: FormGroup;\r\n forgotPasswordParams: any[];\r\n isLinkExpired = false;\r\n resetPasswordMessage = '';\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private sharedService: SharedService,\r\n private router: Router,\r\n private translateService: TranslateService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.User = this.data.user;\r\n this.isLinkExpired = this.data.isLinkExpired;\r\n this.resetPasswordMessage = this.data.resetPasswordMessage;\r\n this.forgotPasswordParams = this.data.forgotPasswordParams;\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.resetPasswordForm = new FormGroup({\r\n 'newPassword': new FormControl(null, [\r\n Validators.required,\r\n Validators.minLength((this.User.UserType == 1 || this.LoginSettings.V10) ? this.LoginSettings.MinimumPasswordLength : 0),\r\n requiresUpperCase(this.LoginSettings),\r\n requiresNumeric(this.LoginSettings),\r\n requiresSpecial(this.LoginSettings),\r\n mustBeDifferent(this.User, this.LoginSettings), // new password must not equal the current password\r\n preventPasswordReuse(this.LoginSettings, this.User), // Prevents re-use of expired passwords\r\n notSameAsUsername(this.User, this.LoginSettings), // new password must not be the same as the userName\r\n requiresMixedLettersNumbers(this.LoginSettings, this.User) // v9 Only\r\n ]),\r\n 'repeatNewPassword': new FormControl(null, [\r\n Validators.required\r\n ])\r\n }, { validators: passwordsMatchForChangePassword(this.LoginSettings, this.User) });\r\n if (this.isDebug) {\r\n console.log('User', this.User);\r\n console.log('LoginSettings', this.LoginSettings);\r\n }\r\n this.onChanges();\r\n }\r\n\r\n get newPassword() {\r\n return this.resetPasswordForm.get('newPassword');\r\n }\r\n\r\n get repeatNewPassword() {\r\n return this.resetPasswordForm.get('repeatNewPassword');\r\n }\r\n\r\n closeClick() {\r\n // POST: the change password dialog is closed\r\n this.dialogRef.close();\r\n }\r\n\r\n saveClick() {\r\n this.newPassword.markAsTouched();\r\n this.repeatNewPassword.markAsTouched();\r\n if (this.resetPasswordForm.invalid == false) {\r\n this.loginService.saveForgetPassword(this.newPassword.value, 'Forgot Password', this.forgotPasswordParams).subscribe(response => {\r\n if (response.ok) {\r\n // Display a toast ie: snackbar\r\n this.sharedService.showGoodSnackbar();\r\n }\r\n this.dialogRef.close();\r\n });\r\n }\r\n }\r\n\r\n onChanges(): void {\r\n this.resetPasswordForm.valueChanges.subscribe(val => {\r\n // check new password\r\n if (this.newPassword.invalid) {\r\n if (this.newPassword.errors.hasOwnProperty('required')) {\r\n this.newPasswordError = 'Required Field';\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('minlength') && (this.User.UserType == 1 || this.LoginSettings.V10)) {\r\n this.newPasswordError = `New password must be at least ${this.LoginSettings.MinimumPasswordLength} characters`;\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('mustContainUpperCase') && (this.User.UserType == 1 || this.LoginSettings.V10)) {\r\n this.newPasswordError = 'Must have at least one Uppercase character';\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('mustContainNumeric') && (this.User.UserType == 1 || this.LoginSettings.V10)) {\r\n this.newPasswordError = 'Must have at least one Numeric character';\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('mustContainSpecial') && (this.User.UserType == 1 || this.LoginSettings.V10)) {\r\n this.newPasswordError = 'Must have at least one Special (! @ # $ ...) character';\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('mustBeDifferent')) {\r\n this.newPasswordError = 'New password cannot be the same as the current password';\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('notSameAsUsername') && (this.User.UserType == 1 || this.LoginSettings.V10)) {\r\n this.newPasswordError = 'New password cannot be the same as Login Name';\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('requiresMixedLettersNumbers') && (this.User.UserType == 1 || this.LoginSettings.V10)) {\r\n this.newPasswordError = 'Must have at least 1 alphabetic character (A-Z or a-z) and 1 number (0-9)';\r\n }\r\n if (this.newPassword.errors.hasOwnProperty('preventPasswordReuse') && (this.User.UserType == 1 || this.LoginSettings.V10)) {\r\n this.newPasswordError = 'Password has already expired';\r\n }\r\n }\r\n // Check re-enter password\r\n if (this.repeatNewPassword.invalid) {\r\n if (this.repeatNewPassword.errors.hasOwnProperty('required')) {\r\n this.repeatNewPasswordError = 'Field is Required';\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport {LoginService} from '../login.service';\r\nimport {LoginSettings} from '../loginSetting.model';\r\n\r\n@Component({\r\n\tselector: 'app-unsupported-browser-warning-dialog',\r\n\ttemplateUrl: './unsupported-browser-warning-dialog.component.html',\r\n\tstyleUrls: ['./unsupported-browser-warning-dialog.component.css']\r\n})\r\nexport class UnsupportedBrowserWarningDialogComponent implements OnInit {\r\n\r\n\t// Properties\r\n\tloginSettings: LoginSettings;\r\n\r\n\t// Class Functions\r\n\tconstructor(\r\n\t\tprivate dialogBox: MatDialogRef,\r\n\t\tprivate loginService: LoginService\r\n\t) { }\r\n\r\n\t// Event Functions\r\n\tngOnInit() {\r\n\t\tthis.loginSettings = this.loginService.LoginSettings;\r\n\t}\r\n\r\n\tclose() {\r\n\t\t// PRE: the close button is clicked\r\n\t\t// POST: closes the dialog box\r\n\t\tthis.dialogBox.close();\r\n\t}\r\n\r\n\t// Methods\r\n}\r\n","\r\n
\r\n\tUnsupported Browser\r\n
\r\n\r\n\r\n\r\n\tYou are attempting to access Tyler SIS 360 using an old version of Microsoft Internet Explorer that is not supported.\r\n\t
\r\n\t
\r\n\tA recent version of Google Chrome, Firefox, Microsoft Edge, or Apple Safari must be used.\r\n
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n","import { Inject, Injectable, InjectionToken, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\n// This service is based on the `ng2-cookies` package which sadly is not a service and does\n// not use `DOCUMENT` injection and therefore doesn't work well with AoT production builds.\n// Package: https://github.com/BCJTI/ng2-cookies\nimport * as ɵngcc0 from '@angular/core';\nclass CookieService {\n /**\n * @param {?} document\n * @param {?} platformId\n */\n constructor(document, platformId) {\n this.document = document;\n this.platformId = platformId;\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n }\n /**\n * @param {?} name Cookie name\n * @return {?}\n */\n check(name) {\n if (!this.documentIsAccessible) {\n return false;\n }\n name = encodeURIComponent(name);\n const /** @type {?} */ regExp = this.getCookieRegExp(name);\n const /** @type {?} */ exists = regExp.test(this.document.cookie);\n return exists;\n }\n /**\n * @param {?} name Cookie name\n * @return {?}\n */\n get(name) {\n if (this.documentIsAccessible && this.check(name)) {\n name = encodeURIComponent(name);\n const /** @type {?} */ regExp = this.getCookieRegExp(name);\n const /** @type {?} */ result = regExp.exec(this.document.cookie);\n return decodeURIComponent(result[1]);\n }\n else {\n return '';\n }\n }\n /**\n * @return {?}\n */\n getAll() {\n if (!this.documentIsAccessible) {\n return {};\n }\n const /** @type {?} */ cookies = {};\n const /** @type {?} */ document = this.document;\n if (document.cookie && document.cookie !== '') {\n const /** @type {?} */ split = document.cookie.split(';');\n for (let /** @type {?} */ i = 0; i < split.length; i += 1) {\n const /** @type {?} */ currentCookie = split[i].split('=');\n currentCookie[0] = currentCookie[0].replace(/^ /, '');\n cookies[decodeURIComponent(currentCookie[0])] = decodeURIComponent(currentCookie[1]);\n }\n }\n return cookies;\n }\n /**\n * @param {?} name Cookie name\n * @param {?} value Cookie value\n * @param {?=} expires Number of days until the cookies expires or an actual `Date`\n * @param {?=} path Cookie path\n * @param {?=} domain Cookie domain\n * @param {?=} secure Secure flag\n * @param {?=} sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `None`\n * @return {?}\n */\n set(name, value, expires, path, domain, secure, sameSite = 'None') {\n if (!this.documentIsAccessible) {\n return;\n }\n let /** @type {?} */ cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n if (expires) {\n if (typeof expires === 'number') {\n const /** @type {?} */ dateExpires = new Date(new Date().getTime() + expires * 1000 * 60 * 60 * 24);\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n }\n else {\n cookieString += 'expires=' + expires.toUTCString() + ';';\n }\n }\n if (path) {\n cookieString += 'path=' + path + ';';\n }\n if (domain) {\n cookieString += 'domain=' + domain + ';';\n }\n if (secure) {\n cookieString += 'secure;';\n }\n cookieString += 'sameSite=' + sameSite + ';';\n this.document.cookie = cookieString;\n }\n /**\n * @param {?} name Cookie name\n * @param {?=} path Cookie path\n * @param {?=} domain Cookie domain\n * @return {?}\n */\n delete(name, path, domain) {\n if (!this.documentIsAccessible) {\n return;\n }\n this.set(name, '', new Date('Thu, 01 Jan 1970 00:00:01 GMT'), path, domain, undefined, 'Lax');\n }\n /**\n * @param {?=} path Cookie path\n * @param {?=} domain Cookie domain\n * @return {?}\n */\n deleteAll(path, domain) {\n if (!this.documentIsAccessible) {\n return;\n }\n const /** @type {?} */ cookies = this.getAll();\n for (const /** @type {?} */ cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain);\n }\n }\n }\n /**\n * @param {?} name Cookie name\n * @return {?}\n */\n getCookieRegExp(name) {\n const /** @type {?} */ escapedName = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/ig, '\\\\$1');\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n}\nCookieService.ɵfac = function CookieService_Factory(t) { return new (t || CookieService)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nCookieService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CookieService, factory: CookieService.ɵfac });\n/**\n * @nocollapse\n */\nCookieService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n { type: InjectionToken, decorators: [{ type: Inject, args: [PLATFORM_ID,] },] },\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CookieService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.InjectionToken, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CookieService };\n\n","
\r\n \r\n \r\n \r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { LoginService } from './../../login/login.service';\r\nimport { LoginSettings } from './../../login/loginSetting.model';\r\n\r\n@Component({\r\n selector: 'login-footer',\r\n templateUrl: './login-footer.component.html',\r\n styleUrls: ['./login-footer.component.css']\r\n})\r\nexport class LoginFooterComponent implements OnInit {\r\n @Input() userType: number;\r\n LoginSettings: LoginSettings;\r\n copyrightYear: number;\r\n\r\n constructor(\r\n private loginService: LoginService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.copyrightYear = new Date().getFullYear();\r\n }\r\n\r\n currentApplicationClick() {\r\n window.localStorage.setItem('NewApplication', '0');\r\n const currentApplicationUrl = window.location.href.substring(0, window.location.href.indexOf('360') + 3);\r\n window.location.replace(currentApplicationUrl);\r\n }\r\n}","
\r\n
0) ? '30px' : '20px'}\">\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n {{ loginError }}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Google Authentication\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n Use Google Authentication\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n Google Integrations Disabled\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Your district has not activated Tyler SIS Student 360.\r\n
Please wait until you hear from your district that Tyler SIS Student 360 is available before attempting\r\n to login.\r\n
\r\n
\r\n Active Directory Agent address is not set!\r\n
\r\n \r\n
\r\n {{googleError}}\r\n
\r\n
\r\n\r\n\r\n\r\n","import { Location } from '@angular/common';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { ActivatedRoute, NavigationExtras, Params, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AppInsights } from 'applicationinsights-js';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { FormGroup } from '../../../../node_modules/@angular/forms';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { Link } from '../../classroom360/links/link.model';\r\nimport { EFormService } from '../../shared-components/e-forms/e-form.service';\r\nimport { Portal } from '../../shared-components/portal.model';\r\nimport { SecurityService } from '../../shared-components/security/security.service';\r\nimport { SharedService } from '../../shared-components/shared.service';\r\nimport { StudentSearchComponent } from '../../shared-components/student-search/student-search.component';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { TranslationService } from '../../shared-components/translation/translation.service';\r\nimport { GeneralPreferences } from '../../shared-components/user-preferences/general-preferences.model';\r\nimport { PortalMenuPreferences } from '../../shared-components/user-preferences/portal-menu-preferences.model';\r\nimport { UserPreferencesService } from '../../shared-components/user-preferences/user-preferences.service';\r\nimport { GoogleUser } from '../../shared-components/user/google-user.model';\r\nimport { UserPermission } from '../../shared-components/user/user-permission.model';\r\nimport { UserService } from '../../shared-components/user/user.service';\r\nimport { Year } from '../../shared-components/year/year.model';\r\nimport { YearService } from '../../shared-components/year/year.service';\r\nimport { FamilyRegistrationYear } from '../family-registration/family-registration-year.model';\r\nimport { FamilyRegistrationService } from '../family-registration/family-registration.service';\r\nimport { NewFamilyRegistrationYearSelectionComponent } from '../family-registration/new-family-registration-year-selection/new-family-registration-year-selection.component';\r\nimport { RegisterNewFamilyMessageComponent } from '../family-registration/register-new-family-message/register-new-family-message.component';\r\nimport { RegisterNewFamilyComponent } from '../family-registration/register-new-family/register-new-family.component';\r\nimport { SelectLanguageComponent } from '../family-registration/select-language/select-language.component';\r\nimport { StudentService } from './../../shared-components/student/student.service';\r\nimport { AccessMessageComponent } from './access-message/access-message.component';\r\nimport { AuditLoginsComponent } from './audit-logins/audit-logins.component';\r\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\r\nimport { ForgotUsernameComponent } from './forgot-username/forgot-username.component';\r\nimport { LoginOnly360Component } from './login-only360/login-only360.component';\r\nimport { LoginService } from './login.service';\r\nimport { LoginSettings } from './loginSetting.model';\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\nimport { UnsupportedBrowserWarningDialogComponent } from './unsupported-browser-warning-dialog/unsupported-browser-warning-dialog.component';\r\n\r\n// Google API Variable\r\ndeclare const gapi: any;\r\ndeclare const google: any;\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css'],\r\n})\r\nexport class LoginComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n @ViewChild('userNameRef') userNameRef: ElementRef;\r\n badBrowser = false;\r\n badBrowserString: string;\r\n copyrightYear: number;\r\n loginSettings: LoginSettings;\r\n username = '';\r\n password = '';\r\n isLoggedIn = false;\r\n isLoggedInError = false;\r\n resetPasswordDetail: any = { isResetPasswordSaved: false };\r\n resetPasswordMessage = '';\r\n userType = 1;\r\n activeDirectoryAddressNotSet = false;\r\n loginFromLegacy = false;\r\n isLinkExpired = false;\r\n classicSetPassword = false;\r\n forgetPasswordParams: string[] = [];\r\n forgetPassword: any;\r\n generalPreferences: GeneralPreferences;\r\n showOverlay = false;\r\n forgotPasswordDialogRef: MatDialogRef;\r\n frYearsDialogRef: MatDialogRef;\r\n selectLanguageDialogRef: MatDialogRef;\r\n registerFamilyMessageDialogRef: MatDialogRef;\r\n registerNewFamilyDialogRef: MatDialogRef;\r\n ResetPasswordDialogRef: MatDialogRef;\r\n loginOnly360DialogRef: MatDialogRef;\r\n public loginForm: FormGroup;\r\n tabNames: string[];\r\n showUserType = 0;\r\n defaultTabIndex = 0;\r\n students: Student[] = [];\r\n staffAssignedPortals: Portal[];\r\n staffPortalMenuPreferences: PortalMenuPreferences;\r\n staffAssignedPortalSubscription: Subscription;\r\n V10: boolean;\r\n userPermissions: UserPermission[];\r\n cookieAccessToken: string;\r\n cookieMemId: string;\r\n cookieUserType: string;\r\n usingCookie = false;\r\n googleAuthentication = false;\r\n googleScope = '';\r\n activateGoogleAuthenticationForStaff = false;\r\n activateGoogleAuthenticationForStudent = false;\r\n staffGoogleAuthentication = false;\r\n auth2: any;\r\n queryStringAction = '';\r\n setUserIndex = new EventEmitter();\r\n siteYearId = '';\r\n versionCheckInterval: any;\r\n subscriptions: Subscription[] = [];\r\n private _loginError = '';\r\n impersonateUser = false;\r\n googleError = '';\r\n auditLoginsComponentDialogRef: MatDialogRef;\r\n\r\n\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private studentService: StudentService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private userService: UserService,\r\n private userPreferencesService: UserPreferencesService,\r\n private yearService: YearService,\r\n private familyRegistrationService: FamilyRegistrationService,\r\n private dialog: MatDialog,\r\n private translateService: TranslateService,\r\n private location: Location,\r\n private classroom360Service: Classroom360Service,\r\n private zone: NgZone,\r\n private eFormService: EFormService,\r\n private translationService: TranslationService,\r\n private sharedService: SharedService,\r\n private securityService: SecurityService,\r\n private cookieService: CookieService\r\n ) {\r\n }\r\n\r\n get loginError(): string {\r\n return this._loginError;\r\n }\r\n\r\n set loginError(value: string) {\r\n // POST: sets the login error AND begins checking the version because we've failed to login\r\n this._loginError = value;\r\n if (this._loginError) {\r\n this.checkVersions();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.cookieAccessToken = this.cookieService.get('tylersis_access_token');\r\n this.cookieMemId = this.cookieService.get('tylersis_mem_id');\r\n this.cookieUserType = this.cookieService.get('tylersis_user_type');\r\n this.loginSettings = this.loginService.LoginSettings;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.userService.logoutUser();\r\n\r\n // Google Authentication\r\n this.googleAuthentication = this.loginSettings.GoogleAuthentication && !!this.loginSettings.GoogleClientId;\r\n this.activateGoogleAuthenticationForStaff = this.loginSettings.ActivateGoogleAuthenticationForStaff && !!this.loginSettings.GoogleClientId;\r\n this.activateGoogleAuthenticationForStudent = this.loginSettings.ActivateGoogleAuthenticationForStudent && !!this.loginSettings.GoogleClientId;\r\n if (this.activateGoogleAuthenticationForStaff || this.activateGoogleAuthenticationForStudent) {\r\n this.googleAuthentication = true;\r\n }\r\n\r\n // Detecting IE\r\n this.subscriptions.push(this.route.queryParams.subscribe((params: Params) => {\r\n const impersonateAccessToken = params['impersonateAccessToken'];\r\n if (impersonateAccessToken) {\r\n sessionStorage.setItem('accessToken', impersonateAccessToken);\r\n this.impersonateUser = true;\r\n }\r\n }));\r\n if (this.detectIE()) {\r\n this.badBrowser = true;\r\n this.setUserType();\r\n this.setTabs();\r\n\r\n // If they would login in because of route params, show warning immediately\r\n this.subscriptions.push(this.route.queryParams.subscribe((params: Params) => {\r\n const action: string = params['Action'];\r\n const id: string = params['id'];\r\n if (action || id || sessionStorage.getItem('loginInformation')) {\r\n this.dialog.open(UnsupportedBrowserWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n }\r\n }));\r\n }\r\n\r\n // If this is not IE, continue\r\n else {\r\n this.initialize();\r\n this.checkVersions();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n if (this.userNameRef != null && (sessionStorage.getItem('loginFromLegacy') == null || sessionStorage.getItem('loginFromLegacy') != '1')) {\r\n this.userNameRef.nativeElement.focus();\r\n }\r\n\r\n // Google Authentication\r\n if (this.googleAuthentication || this.loginSettings.DisplayGoogleClassroom) {\r\n // Determing scopes for returned data (this is the default for now)\r\n if (this.loginSettings.DisplayGoogleClassroom) {\r\n // It is very important that this is a space separated list\r\n this.googleScope = 'https://www.googleapis.com/auth/classroom.courses ' +\r\n 'https://www.googleapis.com/auth/classroom.rosters ' +\r\n 'https://www.googleapis.com/auth/classroom.coursework.students ' +\r\n 'https://www.googleapis.com/auth/classroom.coursework.me ' +\r\n 'https://www.googleapis.com/auth/classroom.profile.emails ' +\r\n 'https://www.googleapis.com/auth/classroom.profile.photos ' +\r\n 'https://www.googleapis.com/auth/userinfo.email';\r\n } else {\r\n this.googleScope = 'email profile openid';\r\n }\r\n\r\n if (!this.loginSettings.EnableGoogleIdentityServices) {\r\n gapi.load('auth2', () => {\r\n // Initializing authentication\r\n gapi.auth2.init({\r\n client_id: this.loginSettings.GoogleClientId.includes('.apps.googleusercontent.com') ? this.loginSettings.GoogleClientId : this.loginSettings.GoogleClientId + '.apps.googleusercontent.com',\r\n cookiepolicy: 'none',\r\n prompt: 'select_account',\r\n ux_mode: 'popup',\r\n scope: this.googleScope\r\n }).then((googleAuth) => {\r\n // console.log(googleAuth)\r\n }, (error) => {\r\n this.googleError = error.details;\r\n this.loginService.googleError = this.googleError;\r\n this.loginSettings.GoogleAuthentication = false;\r\n this.staffGoogleAuthentication = false;\r\n this.activateGoogleAuthenticationForStaff = false;\r\n this.activateGoogleAuthenticationForStudent = false;\r\n this.loginSettings.ActivateGoogleAuthenticationForStaff = false;\r\n this.loginSettings.ActivateGoogleAuthenticationForStudent = false;\r\n console.log(error);\r\n });\r\n });\r\n }\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.endCheckVersions();\r\n }\r\n\r\n checkVersions() {\r\n // POST: Begins checking for version on an interval\r\n if (!this.versionCheckInterval) {\r\n this.versionCheckInterval = setInterval(() => {\r\n this.loginService.getDistrictSettings().pipe(take(1)).subscribe((settings: LoginSettings) => {\r\n if (settings.OneSISVersion != this.loginService.LoginSettings.OneSISVersion) {\r\n location.reload();\r\n }\r\n });\r\n }, 300000);\r\n }\r\n }\r\n\r\n endCheckVersions() {\r\n // POST: Stops checking for the version and clears out the interval variable\r\n if (this.versionCheckInterval) {\r\n clearInterval(this.versionCheckInterval);\r\n this.versionCheckInterval = null;\r\n }\r\n }\r\n\r\n initialize() {\r\n this.subscriptions.push(this.route.queryParams.subscribe((params: Params) => {\r\n const action: string = params['Action'];\r\n const id: string = params['id'];\r\n const legacy: string = params['loginFromLegacy'];\r\n const code: string = params['code'];\r\n const eA: string = params['EA'];\r\n const uT: string = params['UT'];\r\n const iT: string = params['IT'];\r\n const sP: string = params['SP'];\r\n const GALDSAuth: string = params['GALDSAuth'];\r\n const redirectToEforms: string = params['NavigateToEForms'];\r\n\r\n if (redirectToEforms != undefined) {\r\n this.classroom360Service.redirectToEForms = true;\r\n this.eFormService.manageEformsFilter = redirectToEforms;\r\n }\r\n\r\n if (action != undefined) {\r\n this.loginFromLegacy = true;\r\n this.getClassicCurrentUser(action);\r\n } else if (id != undefined) {\r\n this.getRegisterParent(id);\r\n } else if (legacy) {\r\n\r\n } else if (code != undefined) {\r\n window.opener.sessionStorage.setItem('canvasCode', code);\r\n window.close();\r\n } else if (eA != undefined) {\r\n this.classicSetPassword = false;\r\n if (sP != undefined && sP == '1') {\r\n this.classicSetPassword = true;\r\n }\r\n this.forgetPasswordParams.push(eA);\r\n this.forgetPasswordParams.push(uT);\r\n this.forgetPasswordParams.push(iT);\r\n this.getForgotPasswordDetail();\r\n } else if (GALDSAuth != undefined) {\r\n // Initiate GALDS SSO\r\n } else if (sessionStorage.getItem('loginInformation') != null) {\r\n if (sessionStorage.getItem('loginInformation').split(',').length == 2) {\r\n this.userType = 2;\r\n this.username = sessionStorage.getItem('loginInformation').split(',')[0];\r\n this.password = sessionStorage.getItem('loginInformation').split(',')[1];\r\n this.LoginButtonClick(false);\r\n sessionStorage.removeItem('loginInformation');\r\n }\r\n }\r\n\r\n if (this.router.url.toLowerCase() != '/parent' && this.router.url.toLowerCase() != '/login/parent' && this.router.url.toLowerCase() != '/student' && this.router.url.toLowerCase() != '/login/student') {\r\n this.location.replaceState('login');\r\n }\r\n }));\r\n this.copyrightYear = new Date().getFullYear();\r\n this.setUserType();\r\n this.setTabs();\r\n this.setEFormsConfig();\r\n\r\n // If a token is provided, try to get the user\r\n if (this.cookieUserType) {\r\n localStorage.setItem('UserType', this.cookieUserType);\r\n this.cookieUserType = '';\r\n }\r\n if (this.cookieAccessToken) {\r\n sessionStorage.setItem('accessToken', this.cookieAccessToken);\r\n const expiredDate = new Date();\r\n expiredDate.setTime(expiredDate.getTime() - 86400 * 1000);\r\n document.cookie = 'tylersis_access_token=' + this.cookieAccessToken + ';max-age=0;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;';\r\n this.cookieAccessToken = '';\r\n this.usingCookie = true;\r\n sessionStorage.removeItem('loginFromLegacy');\r\n this.getGeneralPreferences(false);\r\n }\r\n }\r\n\r\n LoginButtonClick(enterClick: boolean) {\r\n if (this.badBrowser && (this.V10 || this.userType != 1 || (!enterClick && this.loginFromLegacy && this.userType == 1))) {\r\n this.dialog.open(UnsupportedBrowserWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n } else {\r\n this.logon(enterClick, this.username, this.password);\r\n }\r\n\r\n // Ending the interval for checking versions in case we get into the application\r\n this.endCheckVersions();\r\n }\r\n\r\n LoginButton360Click() {\r\n if (this.badBrowser) {\r\n this.dialog.open(UnsupportedBrowserWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n } else {\r\n this.loginFromLegacy = true;\r\n this.LoginButtonClick(false);\r\n }\r\n }\r\n\r\n forgotUserNameClick = function () {\r\n this.forgotUserName = [];\r\n this.forgotUsernameDialogRef = this.dialog.open(ForgotUsernameComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '400px',\r\n disableClose: true\r\n });\r\n\r\n this.subscriptions.push(this.forgotPasswordDialogRef.afterClosed().subscribe());\r\n };\r\n\r\n TabChange = function (userType: number) {\r\n this.userType = userType;\r\n $('#inputUserName').trigger('focus');\r\n };\r\n\r\n logon(enterclick: boolean, username: string, password: string): void {\r\n this.isLoggedInError = false;\r\n this.loginError = '';\r\n if (this.resetPasswordDetail.isResetPasswordSaved) {\r\n this.userType = this.userService.userType;\r\n }\r\n if (this.loginSettings.DisplaySeparateUserTypes == true && ((this.loginSettings.StaffUserUseADPassword == true && this.userType == 1) || (this.loginSettings.StudentUserUseADPassword == true && this.userType == 3)) && (this.password == undefined || this.password == null || this.password == '') && this.loginSettings.ActiveDirectoryAgentURL == '') {\r\n this.activeDirectoryAddressNotSet = true;\r\n } else {\r\n this.activeDirectoryAddressNotSet = false;\r\n }\r\n if (!this.activeDirectoryAddressNotSet) {\r\n if (this.password == undefined) {\r\n this.password = '';\r\n }\r\n }\r\n\r\n if ((this.userType == 1 && this.activateGoogleAuthenticationForStaff == true && this.staffGoogleAuthentication == true)\r\n || (this.userType == 3 && this.activateGoogleAuthenticationForStudent == true)) {\r\n this.googleUserAuthentication(enterclick);\r\n } else {\r\n this.loginService.logon(username, password, this.userType).subscribe(user => {\r\n if (user.userName != undefined && user.userName != null) {\r\n if (localStorage) {\r\n localStorage.setItem('UserType', user.userType);\r\n }\r\n sessionStorage.setItem('accessToken', user.access_token);\r\n AppInsights.setAuthenticatedUserContext(user.userName.replace(/[,;=| ]+/g, '_')); // Lets app insights know what user requests come from\r\n if (this.username.toLocaleLowerCase() == 'sdmadmin' && this.loginService.LoginSettings.ForceSDMADMINAudit == true &&\r\n !this.loginService.LoginSettings.V10) {\r\n const auditLoginDialog = this.dialog.open(AuditLoginsComponent, {\r\n minHeight: '63vh',\r\n minWidth: '40vw',\r\n disableClose: true\r\n });\r\n auditLoginDialog.afterClosed().subscribe(obj => {\r\n this.login(user, enterclick);\r\n });\r\n }\r\n else {\r\n this.login(user, enterclick);\r\n }\r\n } else {\r\n this.loginError = 'Invalid Username or Password.';\r\n this.loginFromLegacy = false;\r\n }\r\n },\r\n (err) => {\r\n this.isLoggedIn = false;\r\n this.userService.isLoggedIn.next(false);\r\n this.userService.username = '';\r\n this.userService.userId = 0;\r\n this.userService.firstname = '';\r\n this.userService.lastname = '';\r\n this.userService.userType = 0;\r\n this.userService.studentId = 0;\r\n this.loginFromLegacy = false;\r\n if (err instanceof HttpErrorResponse && err.status == 400) {\r\n this.loginError = 'Invalid Username or Password.';\r\n } else {\r\n this.loginError = 'There was an error during the login process.';\r\n this.loginService.observableLoginError.next(err);\r\n }\r\n });\r\n }\r\n }\r\n\r\n login(user, enterclick: boolean) {\r\n this.isLoggedIn = true;\r\n this.userService.isLoggedIn.next(true);\r\n this.userService.username = user.userName;\r\n this.userService.firstname = user.firstName;\r\n this.userService.lastname = user.lastName;\r\n this.userService.userId = user.userId;\r\n this.userService.userType = user.userType;\r\n this.userService.studentId = user.studentId;\r\n this.userService.forceUserToClassic = user.forceToClassic == 'true';\r\n\r\n\r\n if (user.userType == '1') {\r\n this.getGeneralPreferences(enterclick);\r\n if (!this.loginSettings.V10) {\r\n this.getDefaultYear(this.userService.userId);\r\n if (!this.impersonateUser) {\r\n if (sessionStorage.getItem('impersonateUseraccessToken') != null && sessionStorage.getItem('loginFromLegacy') != null) {\r\n sessionStorage.removeItem('loginFromLegacy');\r\n }\r\n sessionStorage.setItem('impersonateUseraccessToken', user.access_token);\r\n }\r\n }\r\n } else {\r\n this.getUser(enterclick);\r\n }\r\n }\r\n\r\n\r\n getUser(enterClick: boolean) {\r\n this.subscriptions.push(this.loginService.getUser().subscribe(user => {\r\n this.loginService.observableLogin.next();\r\n if (this.loginSettings.V10 == false) {\r\n if (user.UserIsLocked == false && user.UserIsDisabled == false) {\r\n if (user.UserType == 1 && user.UserIsTeacher == true && user.UserCanAccessClassroom == false) {\r\n this.loginSettings.ActivateClassroom360 = false;\r\n this.loginService.LoginSettings.ActivateClassroom360 = false;\r\n }\r\n\r\n if (this.userType == 1 && this.loginSettings.DisplaySeparateUserTypes == true && this.loginFromLegacy == false) {\r\n this.userService.currentUser = user;\r\n this.getUserDefaultSchoolYearIsBlocked(enterClick);\r\n } else {\r\n this.userService.currentUser = user;\r\n this.redirectUserTo360();\r\n }\r\n } else if (user.UserIsDisabled) {\r\n this.loginError = 'User ' + user.UserName + ' - Account has been disabled';\r\n this.loginFromLegacy = false;\r\n } else if (user.UserIsLocked) {\r\n this.loginError = 'User ' + user.UserName + ' - Account is not currently active';\r\n this.loginFromLegacy = false;\r\n }\r\n } else {\r\n if (user.UserIsLocked == false && user.UserIsDisabled == false) {\r\n const legacyUrl = this.loginService.LoginSettings.LegacyURL;\r\n if (!this.loginService.LoginSettings.ActivateStudent360 && !this.loginService.LoginSettings.ActivateClassroom360 && legacyUrl != '') {\r\n // window.removeEventListener('beforeunload', confirmExit);\r\n this.showOverlay = true;\r\n window.location.replace(legacyUrl + '?LoginFrom360=Y');\r\n }\r\n // else if (user.UserType == 1 && this.loginService.LoginSettings.UseUnifiedLoginPage && legacyUrl != '' && this.userService.forceUserToClassic) {\r\n // this.showOverlay = true;\r\n // window.location.replace(legacyUrl + '?LoginFrom360=Y');\r\n // }\r\n else if (user.UserType == 1 && !this.loginService.LoginSettings.RedirectTeachersTo360 && legacyUrl != '' && this.loginFromLegacy != true && legacyUrl != '' && this.loginService.LoginSettings.UseUnifiedLoginPage) {\r\n // window.removeEventListener('beforeunload', confirmExit);\r\n this.showOverlay = true;\r\n window.location.replace(legacyUrl + '?LoginFrom360=Y');\r\n\r\n } else if (user.UserType == 1 && (!user.UserIsTeacher || this.userService.forceUserToClassic) && this.loginFromLegacy != true && legacyUrl != '' && this.loginService.LoginSettings.UseUnifiedLoginPage) {\r\n // window.removeEventListener('beforeunload', confirmExit);\r\n this.showOverlay = true;\r\n window.location.replace(legacyUrl + '?LoginFrom360=Y');\r\n } else if ((user.UserType == 2 || user.UserType == 3) && !this.loginService.LoginSettings.ActivateStudent360 && legacyUrl != '') {\r\n // window.removeEventListener('beforeunload', confirmExit);\r\n this.showOverlay = true;\r\n window.location.replace(legacyUrl + '?LoginFrom360=Y');\r\n } else {\r\n if (this.studentService.legacySelectedStudentId > 0) {\r\n user.StudentId = this.studentService.legacySelectedStudentId;\r\n }\r\n this.userService.currentUser = user;\r\n this.isLoggedIn = true;\r\n this.userService.isLoggedIn.next(true);\r\n this.userService.username = user.UserName;\r\n this.userService.firstname = user.FirstName;\r\n this.userService.lastname = user.LastName;\r\n this.userService.userId = user.Id;\r\n this.userService.userType = user.UserType;\r\n this.userService.studentId = user.StudentId;\r\n\r\n let userId = this.userService.userId;\r\n if (this.userService.userType == 3 && userId == 0) {\r\n userId = this.userService.studentId;\r\n }\r\n this.saveUserLoginInfo(userId);\r\n if (this.userService.userType != 1) {\r\n this.setUserLanguage();\r\n }\r\n this.getUserYears();\r\n }\r\n } else if (user.UserIsDisabled) {\r\n this.loginError = (this.loginService.LoginSettings.V10) ? 'User account is not currently active.' : 'User ' + user.UserName + ' - Account has been disabled';\r\n this.loginFromLegacy = false;\r\n } else if (user.UserIsLocked) {\r\n this.loginError = (this.loginService.LoginSettings.V10) ? 'User account is currently locked.' : 'User ' + user.UserName + ' - Account is not currently active';\r\n this.loginFromLegacy = false;\r\n } else {\r\n this.loginError = 'User account not found.';\r\n this.loginFromLegacy = false;\r\n }\r\n }\r\n }));\r\n }\r\n\r\n getUserLinks(id: number, yearId: any) {\r\n if (!this.V10) {\r\n yearId = this.yearService.defaultYear.Id;\r\n }\r\n if (this.V10) {\r\n // v10\r\n if (this.userService.userType != 1) {\r\n // Parent/Student\r\n this.userService.getParentStudentLinks(id, yearId).pipe(take(1)).subscribe(response => {\r\n // create a new link object for each object in the response body\r\n if (response.body != null) {\r\n for (let i = 0; i < response.body.length; i++) {\r\n const bLink = response.body[i];\r\n const link = new Link();\r\n link.LinkName = bLink.Description;\r\n link.Link_ID = bLink.Id;\r\n link.OpenAsHTTPS = bLink.OpenAsHTTPS;\r\n link.OpenAsNewWindow = bLink.OpenAsNewWindow;\r\n link.LinkUrl = bLink.WebAddress;\r\n link.IsDistrictLevel = 'Yes';\r\n this.userService.links.push(link);\r\n }\r\n }\r\n });\r\n } else {\r\n // Staff\r\n this.userService.getLinks(id, 0, yearId).pipe(take(1)).subscribe(response => {\r\n this.userService.links = response.body;\r\n });\r\n }\r\n } else {\r\n // v9\r\n this.userService.getParentStudentLinks(id, yearId).pipe(take(1)).subscribe(response => {\r\n // create a new link object for each object in the response body\r\n if (response.body != null) {\r\n for (let i = 0; i < response.body.length; i++) {\r\n const bLink = response.body[i];\r\n const link = new Link();\r\n link.LinkName = bLink.Description;\r\n link.Link_ID = bLink.Id;\r\n link.OpenAsHTTPS = bLink.OpenAsHTTPS;\r\n link.OpenAsNewWindow = bLink.OpenAsNewWindow;\r\n link.LinkUrl = bLink.WebAddress;\r\n link.IsDistrictLevel = 'No';\r\n this.userService.links.push(link);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getUserFavorites() {\r\n this.userPreferencesService.getUserPreferences(0, '/OneSISFavorites').pipe(take(1)).subscribe(data => {\r\n this.userPreferencesService.favoritesPreferences = JSON.parse(data[0]);\r\n }, err => {\r\n console.log(err);\r\n }, () => {\r\n });\r\n }\r\n\r\n getDefaultYear(userId: number) {\r\n // TODO: forkJoin other default years here\r\n this.subscriptions.push(this.userService.getDefaultYear(userId).subscribe((year: Year) => {\r\n this.yearService.defaultYear = year;\r\n this.yearService.student360Year = year;\r\n this.yearService.loginYear = year;\r\n }));\r\n }\r\n\r\n getDistrictSchools() {\r\n this.yearService.getAllSchools().pipe(take(1)).subscribe(schools => {\r\n this.yearService.allDistrictSchools = schools;\r\n });\r\n }\r\n\r\n getUserYears() {\r\n this.subscriptions.push(this.yearService.getUserYears(this.userService.currentUser.Id, this.userService.currentUser.UserType, !this.loginSettings.V10 && this.studentService.legacySelectedStudentId != null && this.studentService.legacySelectedStudentId > 0 ? this.studentService.legacySelectedStudentId : this.userService.studentId).subscribe(years => {\r\n if (years.length == 0) {\r\n this.loginError = 'User is not assigned any Academic Years.';\r\n this.loginFromLegacy = false;\r\n } else {\r\n this.yearService.setCurrentAttendanceDate(years);\r\n const defaultYear = years.filter(y => y.Default)[0];\r\n let impersonateYear: Year;\r\n if (this.V10 == false && this.siteYearId != undefined && this.siteYearId != null && this.siteYearId != '') {\r\n impersonateYear = years.filter(y => y.SiteYearId == Number(this.siteYearId))[0];\r\n }\r\n if (this.V10 == true || defaultYear != null || (impersonateYear != null && impersonateYear != undefined)) {\r\n this.yearService.defaultYear = (impersonateYear != null && impersonateYear != undefined) ? impersonateYear : defaultYear;\r\n this.yearService.student360Year = (impersonateYear != null && impersonateYear != undefined) ? impersonateYear : defaultYear;\r\n this.yearService.loginYear = (impersonateYear != null && impersonateYear != undefined) ? impersonateYear : defaultYear;\r\n this.yearService.loadYears(years);\r\n if (this.V10 == false) {\r\n this.yearService.loadYearsForC360(years);\r\n }\r\n this.securityService.loadUserPermissions();\r\n this.yearService.years = years;\r\n if (this.userService.userType == 1) {\r\n this.getDistrictSchools();\r\n }\r\n this.getUserFavorites();\r\n if (this.V10) {\r\n this.getUserLinks(this.userService.currentUser.Id, this.yearService.defaultYear.AYIdentifier);\r\n } else if (this.userService.currentUser.UserType == 1) {\r\n this.getUserLinks(0, this.yearService.defaultYear.Id);\r\n }\r\n } else {\r\n this.getUserDefaultSchoolYearIsBlocked(false);\r\n this.loginFromLegacy = false;\r\n return;\r\n }\r\n }\r\n if (this.userService.currentUser.NewFamilyRegistration) {\r\n this.getStudents(() => {\r\n this.router.navigateByUrl('/student360/onlineRegistration');\r\n });\r\n } else if (this.userService.currentUser.UserType != 1) {\r\n this.getStudents(() => {\r\n if (this.studentService.students.length > 0) {\r\n if (!this.usingCookie && (this.userService.currentUser.ForceChangePassword || this.userService.currentUser.ForceChangeExpiredPass) && (this.userService.currentUser.UserType != 3 || (this.loginSettings.StudentUserUseADPassword == false && this.loginSettings.ActivateGoogleAuthenticationForStudent == false))) {\r\n this.router.navigateByUrl('/changePassword');\r\n } else {\r\n this.router.navigateByUrl('/student360');\r\n }\r\n this.getUserLinks(this.studentService.selectedStudent.Id, this.yearService.defaultYear.Id);\r\n } else {\r\n this.isLoggedInError = true;\r\n if (this.userService.userType == 3) {\r\n this.loginError = 'Portal is not activated for the year(s) you are enrolled.';\r\n this.loginFromLegacy = false;\r\n } else if (this.yearService.defaultYear.V10Flag && this.userService.userType == 2) {\r\n this.loginError = 'Portal not activated for year(s) in which student(s) are enrolled.';\r\n this.loginFromLegacy = false;\r\n } else {\r\n if (this.yearService.defaultYear.V10Flag) {\r\n this.loginError = 'Portal not activated for year(s) in which student(s) are enrolled.';\r\n this.loginFromLegacy = false;\r\n } else {\r\n this.loginError = 'Student(s) Not Enrolled in Portal Default School Year';\r\n this.loginFromLegacy = false;\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n if (this.loginSettings.V10) {\r\n if (sessionStorage.getItem('loginFromLegacy') != null || sessionStorage.getItem('loginFromLegacy') == '1') {\r\n this.getGeneralPreferences(false);\r\n }\r\n\r\n if (!this.usingCookie && (this.userService.currentUser.ForceChangePassword || this.userService.currentUser.ForceChangeExpiredPass)) {\r\n this.router.navigateByUrl('/changePassword');\r\n } else {\r\n this.router.navigateByUrl('/classroom360');\r\n }\r\n } else {\r\n if (this.userService.userType == 1) {\r\n if (sessionStorage.getItem('loginFromLegacy') != null || sessionStorage.getItem('loginFromLegacy') == '1') {\r\n this.getGeneralPreferences(false);\r\n }\r\n }\r\n if (this.userService.userType == 1 && this.loginSettings.ActivateClassroom360 && this.loginSettings.ActivateBehavior360 == true && this.queryStringAction != null && this.queryStringAction != '') {\r\n if (this.queryStringAction.toUpperCase() == 'Behavior'.toUpperCase() || this.queryStringAction.toUpperCase() == 'Discipline'.toUpperCase()) {\r\n this.router.navigateByUrl('/counselor360/behavior/behaviorEvents');\r\n } else if (this.queryStringAction.toUpperCase() == 'Incident_NAA'.toUpperCase()) {\r\n this.router.navigateByUrl('/counselor360/behavior/behaviorEvents?calledFromCard=true');\r\n } else if (this.queryStringAction.toUpperCase() == 'Referral'.toUpperCase()) {\r\n this.router.navigateByUrl('/classroom360/behaviorReferral');\r\n } else if (this.queryStringAction.toUpperCase() == 'Referrallink'.toUpperCase()) {\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: {\r\n 'referrallink': true\r\n }\r\n };\r\n this.router.navigate(['/classroom360/behaviorReferral'], navigationExtras);\r\n } else if (this.queryStringAction.toUpperCase() == 'Referral_WA'.toUpperCase() || this.queryStringAction.toUpperCase() == 'Referral_AR'.toUpperCase()) {\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: {\r\n 'referrallink': true,\r\n 'referralStatus': this.queryStringAction\r\n }\r\n };\r\n this.router.navigate(['/classroom360/behaviorReferral'], navigationExtras);\r\n } else if (this.queryStringAction.toUpperCase() == 'EForms_C'.toUpperCase() || this.queryStringAction.toUpperCase() == 'EForms_R'.toUpperCase()) {\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: {\r\n 'referrallink': true,\r\n 'referralStatus': this.queryStringAction\r\n }\r\n };\r\n if (this.queryStringAction.toUpperCase() == 'EForms_C'.toUpperCase()) {\r\n this.eFormService.manageEformsFilter = 'accepted';\r\n }\r\n if (this.queryStringAction.toUpperCase() == 'EForms_R'.toUpperCase()) {\r\n this.eFormService.manageEformsFilter = 'submitted';\r\n }\r\n this.eFormService.redirectFromClassic = true;\r\n this.router.navigate(['/admin360/eForms/processing/'], navigationExtras);\r\n }\r\n\r\n setTimeout(() => {\r\n this.sharedService.updateIsPageLoaded(true);\r\n }, 100);\r\n } else if (this.userService.userType == 1 && this.loginSettings.ActivateClassroom360 && (this.studentService.legacySelectedStudentId == 0)) {\r\n if (!this.usingCookie && (this.userService.currentUser.ForceChangePassword || this.userService.currentUser.ForceChangeExpiredPass) && this.loginSettings.StaffUserUseADPassword == false && this.loginSettings.ActivateGoogleAuthenticationForStaff == false) {\r\n this.router.navigateByUrl('/changePassword');\r\n } else {\r\n this.router.navigateByUrl('/classroom360');\r\n }\r\n } else {\r\n if (this.studentService.legacySelectedStudentId != null && this.studentService.legacySelectedStudentId > 0) {\r\n this.studentService.getStudent(+this.studentService.legacySelectedStudentId).subscribe(student => {\r\n this.studentService.selectedStudent = student;\r\n this.students.push(student);\r\n this.studentService.updateStudents(this.students);\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n });\r\n } else {\r\n if (!this.usingCookie && (this.userService.currentUser.ForceChangePassword || this.userService.currentUser.ForceChangeExpiredPass) && this.loginSettings.StaffUserUseADPassword == false && this.loginSettings.ActivateGoogleAuthenticationForStaff == false) {\r\n this.router.navigateByUrl('/changePassword');\r\n } else {\r\n this.dialog.open(StudentSearchComponent,\r\n {\r\n data: {\r\n performRoute: true,\r\n searchAndSelect: false\r\n },\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw',\r\n disableClose: true\r\n }\r\n );\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.userService.currentUser.UserType == 1 && this.loginService.LoginSettings.BlockClassroom360) {\r\n this.dialog.open(AccessMessageComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '500px',\r\n disableClose: true\r\n });\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n }));\r\n }\r\n\r\n getStudents(callback: Function) {\r\n let userId: number = this.userService.userId;\r\n if (this.userService.currentUser.UserType == 3 && userId == 0) {\r\n userId = this.userService.studentId;\r\n }\r\n this.subscriptions.push(this.studentService.getParentAssignedStudents(userId, this.yearService.defaultYear.Id, this.userService.currentUser.UserType).subscribe((students: Student[]) => {\r\n this.studentService.updateStudents(students);\r\n callback(students);\r\n }));\r\n }\r\n\r\n getClassicCurrentUser(action: string) {\r\n this.queryStringAction = '';\r\n if (this.loginSettings.V10 != undefined) {\r\n try {\r\n const decryptAction = window.atob(action);\r\n const splitParameter = decryptAction.split('&');\r\n if (splitParameter.length > 1) {\r\n this.siteYearId = splitParameter[1].split('=')[1];\r\n }\r\n // if (decryptAction != null && (decryptAction.toUpperCase() == 'Behavior'.toUpperCase() || decryptAction.toUpperCase() == 'Referral'.toUpperCase() || decryptAction.toUpperCase() == 'Discipline'.toUpperCase() || decryptAction.toUpperCase() == 'Referrallink'.toUpperCase() || splitParameter[0].toUpperCase() == 'Referral_AR'.toUpperCase() || splitParameter[0].toUpperCase() == 'Referral_WA'.toUpperCase() || splitParameter[0].toUpperCase() == 'Referral'.toUpperCase() || splitParameter[0].toUpperCase() == 'Discipline'.toUpperCase() || splitParameter[0].toUpperCase() == 'Behavior'.toUpperCase())) {\r\n if (decryptAction != null && (decryptAction.toUpperCase() == 'Behavior'.toUpperCase()\r\n || decryptAction.toUpperCase() == 'Referral'.toUpperCase() || decryptAction.toUpperCase() == 'Discipline'.toUpperCase()\r\n || decryptAction.toUpperCase() == 'Referrallink'.toUpperCase()\r\n || decryptAction.toUpperCase() == 'Incident_NAA'.toUpperCase()\r\n || splitParameter[0].toUpperCase() == 'Referral_AR'.toUpperCase()\r\n || splitParameter[0].toUpperCase() == 'Referral_WA'.toUpperCase() || splitParameter[0].toUpperCase() == 'Referral'.toUpperCase()\r\n || splitParameter[0].toUpperCase() == 'Discipline'.toUpperCase() || splitParameter[0].toUpperCase() == 'Behavior'.toUpperCase()\r\n || splitParameter[0].toUpperCase() == 'EForms_C'.toUpperCase() || splitParameter[0].toUpperCase() == 'EForms_R'.toUpperCase()\r\n || splitParameter[0].toUpperCase() == 'Incident_NAA'.toUpperCase())\r\n ) {\r\n this.queryStringAction = (splitParameter != undefined && splitParameter.length > 0) ? splitParameter[0] : decryptAction;\r\n } else if (decryptAction != null && decryptAction.split(':').length > 1) {\r\n const legacySelectedStudentId = decryptAction.split(':')[1];\r\n this.studentService.legacySelectedStudentId = Number(legacySelectedStudentId);\r\n }\r\n } catch (e) {\r\n this.studentService.legacySelectedStudentId = 0;\r\n }\r\n sessionStorage.setItem('loginFromLegacy', '1');\r\n this.getUser(true);\r\n } else {\r\n setTimeout(() => {\r\n this.getClassicCurrentUser(action);\r\n }, 50);\r\n }\r\n }\r\n\r\n getRegisterParent(id) {\r\n this.subscriptions.push(this.loginService.getRegisterParent(id).subscribe((result) => {\r\n if (result) {\r\n // this.location.url(this.location.path());\r\n this.familyRegistrationService.householdParent = result;\r\n\r\n this.userService.currentLanguage = 'en';\r\n if (this.familyRegistrationService.householdParent.Language == 2) {\r\n this.userService.currentLanguage = 'fr';\r\n } else if (this.familyRegistrationService.householdParent.Language == 3) {\r\n this.userService.currentLanguage = 'es';\r\n } else if (this.familyRegistrationService.householdParent.Language == 4) {\r\n this.userService.currentLanguage = 'pt';\r\n }\r\n\r\n this.translateService.use(this.userService.currentLanguage);\r\n this.translateService.setDefaultLang(this.userService.currentLanguage);\r\n this.translationService.getLanguageTranslations();\r\n\r\n\r\n this.familyRegistrationService.getORYears().subscribe((years: FamilyRegistrationYear[]) => {\r\n this.familyRegistrationService.years = years;\r\n if (this.familyRegistrationService.years.length != 0) {\r\n if ((this.loginService.LoginSettings.V10 && this.familyRegistrationService.householdParent.AyIdentifier != null && this.familyRegistrationService.householdParent.AyIdentifier != '') || (!this.loginService.LoginSettings.V10 && this.familyRegistrationService.householdParent.YearId > 0)) {\r\n if (this.loginService.LoginSettings.V10) {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years.find(o => o.AYIdentifier == this.familyRegistrationService.householdParent.AyIdentifier);\r\n } else {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years.find(o => o.Id == this.familyRegistrationService.householdParent.YearId);\r\n }\r\n if (this.familyRegistrationService.defaultYear) {\r\n this.router.navigateByUrl('/familyregistration/householdparent');\r\n }\r\n } else {\r\n if (this.loginService.LoginSettings.V10) {\r\n const currentDate = new Date();\r\n for (let i = 0; i < this.familyRegistrationService.years.length; i++) {\r\n if (this.familyRegistrationService.years[i].Status == 1) {\r\n if (this.familyRegistrationService.years[i].StartDate < currentDate) {\r\n this.familyRegistrationService.years[i].Status = 3;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.familyRegistrationService.years.length > 1) {\r\n this.frYearsDialogRef = this.dialog.open(NewFamilyRegistrationYearSelectionComponent, {\r\n disableClose: true,\r\n maxWidth: '500px'\r\n });\r\n } else {\r\n this.familyRegistrationService.defaultYear = this.familyRegistrationService.years[0];\r\n this.familyRegistrationService.householdParent.YearId = this.familyRegistrationService.defaultYear.Id;\r\n this.familyRegistrationService.householdParent.AyIdentifier = this.loginService.LoginSettings.V10 ? this.familyRegistrationService.defaultYear.AYIdentifier : this.familyRegistrationService.defaultYear.Description;\r\n\r\n this.frYearsDialogRef = this.dialog.open(NewFamilyRegistrationYearSelectionComponent, {\r\n disableClose: true,\r\n maxWidth: '500px'\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }));\r\n }\r\n\r\n getGeneralPreferences(enterClick: boolean) {\r\n this.userPreferencesService.getUserPreferences(0, '/OneSISGeneralPreferences', 0, '0').pipe(take(1)).subscribe((data: string) => {\r\n const pref: GeneralPreferences = JSON.parse(data);\r\n this.userPreferencesService.generalPreferences = pref;\r\n if (enterClick) {\r\n if (pref.DefaultLoginScreen == 'Classic') {// && !this.userService.forceUserToClassic) {\r\n this.loginFromLegacy = false;\r\n } else {\r\n if (this.badBrowser) {\r\n this.dialog.open(UnsupportedBrowserWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n return;\r\n } else {\r\n this.loginFromLegacy = true;\r\n }\r\n }\r\n }\r\n if (sessionStorage.getItem('loginFromLegacy') == null || sessionStorage.getItem('loginFromLegacy') != '1') {\r\n this.getUser(enterClick);\r\n }\r\n });\r\n }\r\n\r\n getForgotPasswordDetail() {\r\n this.subscriptions.push(this.loginService.getForgetPasswordDetail(this.forgetPasswordParams).subscribe(\r\n (result: object) => { // success\r\n this.forgetPassword = result;\r\n this.userType = this.forgetPassword.UserType;\r\n if (this.forgetPassword.Id == -1 && this.forgetPassword.StudentId == -1) {\r\n this.isLinkExpired = true;\r\n this.resetPasswordMessage = this.forgetPassword.LastName;\r\n this.setUserIndex.emit(this.userType - 1);\r\n } else if (this.forgetPassword.LastName == 'success') {\r\n this.resetPasswordMessage = '';\r\n if (this.forgetPassword.UserType != 3) {\r\n this.userService.userId = this.forgetPassword.Id;\r\n } else {\r\n this.userService.studentId = this.forgetPassword.StudentId;\r\n }\r\n this.userType = this.forgetPassword.UserType;\r\n this.userService.userType = this.forgetPassword.UserType;\r\n this.userService.studentId = this.forgetPassword.studentId;\r\n this.userService.username = this.forgetPassword.UserName;\r\n this.userService.password = this.forgetPassword.Password;\r\n this.setUserIndex.emit(this.userType - 1);\r\n }\r\n },\r\n (err) => {\r\n }, // fail\r\n () => { // then\r\n if (this.classicSetPassword && this.resetPasswordMessage != null && this.resetPasswordMessage != '') {\r\n this.userService.userType = this.userType;\r\n }\r\n this.ResetPasswordDialogRef = this.dialog.open(ResetPasswordComponent, {\r\n disableClose: true,\r\n width: this.isLinkExpired ? '500px' : '400px',\r\n data: {\r\n user: this.forgetPassword,\r\n forgotPasswordParams: this.forgetPasswordParams,\r\n isLinkExpired: this.isLinkExpired,\r\n resetPasswordMessage: this.resetPasswordMessage\r\n }\r\n });\r\n }\r\n ));\r\n }\r\n\r\n getUserDefaultSchoolYearIsBlocked(enterClick: boolean) {\r\n this.subscriptions.push(this.loginService.getUserDefaultSchoolYearIsBlocked().subscribe(result => {\r\n if (result != null && result != '') {\r\n this.loginError = 'Login to Site-Year' + result + ' is blocked';\r\n } else {\r\n if (this.loginFromLegacy == false && this.loginSettings.DisplaySeparateUserTypes == true && this.userType == 1) {\r\n this.getUserPermissions(enterClick);\r\n }\r\n }\r\n }));\r\n }\r\n\r\n saveUserLoginInfo(userId: number) {\r\n this.loginService.saveUserLoginInfo(userId, this.userService.userType, window.innerHeight, window.innerWidth, 1, '');\r\n }\r\n\r\n setUserLanguage() {\r\n this.userService.getUserLanguage();\r\n }\r\n\r\n setTabs() {\r\n this.tabNames = [];\r\n if (this.showUserType == 0) {\r\n this.tabNames.push('Staff');\r\n }\r\n if (this.loginSettings.ParentPortalShowParentTab && (this.showUserType == 0 || this.showUserType == 2)) {\r\n this.tabNames.push('Parent');\r\n }\r\n if (this.loginSettings.ParentPortalShowStudentTab && (this.showUserType == 0 || this.showUserType == 3)) {\r\n this.tabNames.push('Student');\r\n }\r\n switch (this.userType) {\r\n case 1: {\r\n this.defaultTabIndex = this.tabNames.indexOf('Staff');\r\n break;\r\n }\r\n case 2: {\r\n this.defaultTabIndex = this.tabNames.indexOf('Parent');\r\n break;\r\n }\r\n case 3: {\r\n this.defaultTabIndex = this.tabNames.indexOf('Student');\r\n break;\r\n }\r\n }\r\n\r\n if (this.defaultTabIndex == -1) {\r\n this.defaultTabIndex = 0;\r\n this.userType = 1;\r\n }\r\n }\r\n\r\n setUserType = function () {\r\n if (localStorage) {\r\n if (localStorage.getItem('UserType')) {\r\n this.userType = parseInt(localStorage.getItem('UserType'), 10);\r\n }\r\n if (this.activateGoogleAuthenticationForStaff == true && localStorage.getItem('StaffGoogleAuthentication')) {\r\n this.staffGoogleAuthentication = localStorage.getItem('StaffGoogleAuthentication').toLowerCase() == 'true';\r\n }\r\n }\r\n if ((this.router.url.toLowerCase() == '/parent' || this.router.url.toLowerCase() == '/login/parent') && this.loginService.LoginSettings.ParentPortalShowParentTab == true) {\r\n this.userType = 2;\r\n this.showUserType = 2;\r\n } else if ((this.router.url.toLowerCase() == '/student' || this.router.url.toLowerCase() == '/login/student') && this.loginService.LoginSettings.ParentPortalShowStudentTab == true) {\r\n this.userType = 3;\r\n this.showUserType = 3;\r\n } else {\r\n this.showUserType = 0;\r\n }\r\n };\r\n\r\n tabChange(e: string) {\r\n switch (e) {\r\n // DO NOT ACCESS THE USER SERVICE FROM HERE\r\n case 'Staff': {\r\n this.userType = 1;\r\n break;\r\n }\r\n case 'Parent': {\r\n this.userType = 2;\r\n break;\r\n }\r\n case 'Student': {\r\n this.userType = 3;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n forgotPasswordClick() {\r\n this.classicSetPassword = false;\r\n if (this.router.url == '/loginassist') {\r\n this.loginService.LoginSettings.ShowForgotUserNameLink = false;\r\n }\r\n this.forgotPasswordDialogRef = this.dialog.open(ForgotPasswordComponent, {\r\n disableClose: true,\r\n maxWidth: '400px',\r\n data: { userType: this.userType }\r\n });\r\n }\r\n\r\n registerNewFamilyClick() {\r\n // PRE: the user tries to register a new family\r\n // POST: checks the browser. If okay, then opens dialog for registration process.\r\n\r\n // Show an error if this is IE\r\n if (this.badBrowser) {\r\n this.dialog.open(UnsupportedBrowserWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n }\r\n\r\n // Otherwise, start new family registration process\r\n else {\r\n this.familyRegistrationService.registerNewFamily = {};\r\n this.familyRegistrationService.registerNewFamily.language = 'en';\r\n this.familyRegistrationService.registerNewFamily.emailAddress = '';\r\n this.openNewFamilyRegistrationPopup('Select Language');\r\n }\r\n }\r\n\r\n openNewFamilyRegistrationPopup(window: string) {\r\n switch (window) {\r\n case 'Select Language': {\r\n this.selectLanguageDialogRef = this.dialog.open(SelectLanguageComponent, {\r\n disableClose: true,\r\n });\r\n this.subscriptions.push(this.selectLanguageDialogRef.afterClosed().subscribe(result => {\r\n this.openNewFamilyRegistrationPopup(result);\r\n }));\r\n break;\r\n }\r\n case 'Register New Family Message': {\r\n this.registerFamilyMessageDialogRef = this.dialog.open(RegisterNewFamilyMessageComponent, {\r\n maxHeight: '50vh',\r\n maxWidth: '40vw',\r\n disableClose: true,\r\n });\r\n this.subscriptions.push(this.registerFamilyMessageDialogRef.afterClosed().subscribe(result => {\r\n this.openNewFamilyRegistrationPopup(result);\r\n }));\r\n break;\r\n }\r\n case 'Register New Family': {\r\n this.registerNewFamilyDialogRef = this.dialog.open(RegisterNewFamilyComponent, {\r\n disableClose: true,\r\n });\r\n this.subscriptions.push(this.registerNewFamilyDialogRef.afterClosed().subscribe(result => {\r\n this.openNewFamilyRegistrationPopup(result);\r\n }));\r\n break;\r\n }\r\n case 'Cancel was clicked.': {\r\n this.userService.currentLanguage = 'en';\r\n this.translateService.use(this.userService.currentLanguage);\r\n this.translateService.setDefaultLang(this.userService.currentLanguage);\r\n this.translationService.getLanguageTranslations();\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n getUserPermissions(enterClick: boolean) {\r\n // POST: obtains the permissions from the server\r\n this.subscriptions.push(\r\n this.userService.getUserPermissions(this.userService.currentUser.LoginYearId, this.userService.currentUser.LoginSchoolId).subscribe(permissions => {\r\n this.userPermissions = permissions;\r\n const forceTeachersDate = this.loginService.LoginSettings.ForceTeachersDate;\r\n\r\n if (this.userService.currentUser.UserIsTeacher && forceTeachersDate != null && new Date(forceTeachersDate) <= new Date()\r\n && this.userPermissions.filter(o => o.PermissionCode == 'NSE_VSH' || o.PermissionCode == 'GO_VFMMNJTM').length == 0) {\r\n this.redirectUserTo360();\r\n }\r\n else if (this.userPermissions.find(permission => permission.PermissionName == 'Login only to 360')) {\r\n if (!enterClick) {\r\n this.loginOnly360DialogRef = this.dialog.open(LoginOnly360Component, {\r\n panelClass: 'tyl-mat-dialog',\r\n maxWidth: '500px',\r\n disableClose: true\r\n });\r\n this.loginOnly360DialogRef.afterClosed().subscribe(result => {\r\n this.redirectUserTo360();\r\n });\r\n } else {\r\n this.redirectUserTo360();\r\n }\r\n } else {\r\n window.localStorage.setItem('NewApplication', '1');\r\n const legacyUrl = window.location.href.substr(0, window.location.href.indexOf('360'));\r\n window.location.href = legacyUrl + '/SwitchToClassic.aspx';\r\n\r\n if (sessionStorage.getItem('ClassicLoginAttempt') != null && sessionStorage.getItem('ClassicMTUrl') != null && sessionStorage.getItem('ClassicMTUrl').toLowerCase() == legacyUrl.toLowerCase()) {\r\n sessionStorage.setItem('ClassicLoginAttempt', (Number(sessionStorage.getItem('ClassicLoginAttempt')) + 1).toString());\r\n } else {\r\n sessionStorage.setItem('ClassicLoginAttempt', '1');\r\n }\r\n }\r\n }));\r\n }\r\n\r\n detectIE() {\r\n // POST: returns true if this is IE\r\n const ua = window.navigator.userAgent;\r\n\r\n // Test values; Uncomment to check result …\r\n\r\n // IE 10\r\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\r\n\r\n // IE 11\r\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\r\n\r\n // Edge 12 (Spartan)\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\r\n\r\n // Edge 13\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKmozillamozillamozillamozillait/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\r\n\r\n const msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return true;\r\n }\r\n\r\n const trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n const rv = ua.indexOf('rv:');\r\n return true;\r\n }\r\n\r\n const edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return false;\r\n }\r\n\r\n // other browser\r\n return false;\r\n }\r\n\r\n setEFormsConfig() {\r\n if (this.loginService.LoginSettings.V10) {\r\n this.loginService.LoginSettings.EFormNonResident = false;\r\n this.loginService.LoginSettings.EFormUseRoles = true;\r\n } else {\r\n this.loginService.LoginSettings.EFormNonResident = true;\r\n this.loginService.LoginSettings.EFormUseRoles = false;\r\n }\r\n }\r\n\r\n staffGoogleAuthenticationChange() {\r\n if (this.staffGoogleAuthentication == true) {\r\n this.username = '';\r\n this.password = '';\r\n }\r\n localStorage.setItem('StaffGoogleAuthentication', this.staffGoogleAuthentication.toString());\r\n }\r\n\r\n googleUserAuthentication(enterClick: boolean) {\r\n if (!this.loginSettings.EnableGoogleIdentityServices) {\r\n gapi.auth2.getAuthInstance().signIn().then(\r\n (googleUser) => {\r\n // Loading the user's ID token\r\n const idToken = googleUser.getAuthResponse().id_token;\r\n this.validateGoogleToken(idToken, enterClick, 'google_oAuth');\r\n },\r\n // This is called when the user fails to log into google\r\n (googleError) => {\r\n this.loginFromLegacy = false;\r\n if (googleError.error != 'popup_closed_by_user') {\r\n this.zone.run(() => {\r\n this.loginError = 'Invalid Google login.';\r\n });\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n let clientId = this.loginSettings.GoogleClientId;\r\n if (!clientId.includes('.apps.googleusercontent.com')) {\r\n clientId = clientId + '.apps.googleusercontent.com';\r\n }\r\n\r\n const client = google.accounts.oauth2.initTokenClient({\r\n client_id: clientId,\r\n scope: this.googleScope,\r\n callback: (token) => {\r\n if (token && token.access_token) {\r\n token.expiresDateTime = new Date();\r\n token.expiresDateTime.setMinutes(token.expiresDateTime.getMinutes() + 59);\r\n this.userService.googleUser = token;\r\n this.validateGoogleToken(token.access_token, enterClick, 'googleIdentity_oAuth');\r\n }\r\n else {\r\n this.loginError = 'Invalid Google login.';\r\n }\r\n },\r\n });\r\n\r\n client.requestAccessToken();\r\n this.loginFromLegacy = false;\r\n }\r\n }\r\n\r\n validateGoogleToken(token: string, enterClick: boolean, grantType: string) {\r\n // If this is a bad browser, show the warning and exit\r\n if (this.badBrowser) {\r\n this.dialog.open(UnsupportedBrowserWarningDialogComponent, {\r\n disableClose: true\r\n });\r\n this.userService.googleUser = null;\r\n return;\r\n }\r\n\r\n // Validating ID token\r\n // NOTE: we have to run this in the zone or it won't trigger change detection\r\n this.zone.run(() => {\r\n const subscription = this.loginService.logonGoogle(token, this.userType, grantType).subscribe(\r\n user => {\r\n // If valid, log in\r\n if (localStorage) {\r\n localStorage.setItem('UserType', user.userType);\r\n }\r\n sessionStorage.setItem('accessToken', user.access_token);\r\n\r\n if (user.userType == '1') {\r\n this.getGeneralPreferences(enterClick);\r\n if (!this.loginSettings.V10) {\r\n this.getDefaultYear(this.userService.userId);\r\n }\r\n } else {\r\n this.getUser(enterClick);\r\n }\r\n this.loginService.hasSignedIntoGoogle = true;\r\n\r\n // Unsubscribing to prevent leaks\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n },\r\n () => {\r\n this.loginFromLegacy = false;\r\n this.loginError = 'Matching SIS user not found.';\r\n this.userService.googleUser = null;\r\n }\r\n );\r\n });\r\n }\r\n\r\n redirectUserTo360() {\r\n this.isLoggedIn = true;\r\n this.userService.isLoggedIn.next(true);\r\n this.userService.username = this.userService.currentUser.UserName;\r\n this.userService.firstname = this.userService.currentUser.FirstName;\r\n this.userService.lastname = this.userService.currentUser.LastName;\r\n this.userService.userId = this.userService.currentUser.Id;\r\n this.userService.userType = this.userService.currentUser.UserType;\r\n this.userService.studentId = this.userService.currentUser.StudentId;\r\n let userId = this.userService.userId;\r\n if (this.userService.userType == 3 && userId == 0) {\r\n userId = this.userService.studentId;\r\n }\r\n if (sessionStorage.getItem('loginFromLegacy') == null || sessionStorage.getItem('loginFromLegacy') != '1') {\r\n this.saveUserLoginInfo(userId);\r\n }\r\n if (this.userService.userType != 1) {\r\n this.setUserLanguage();\r\n }\r\n this.getUserYears();\r\n }\r\n\r\n @HostListener('document:keydown.enter', ['$event'])\r\n onEnterKeyDown(event: KeyboardEvent) {\r\n if (!this.isLoggedIn) {\r\n this.LoginButtonClick(true);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { LoginService } from '../login.service';\r\nimport { LoginSettings } from '../LoginSetting.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ForgotPasswordComponent } from '../forgot-password/forgot-password.component';\r\nimport { ForgotUsernameComponent } from '../forgot-username/forgot-username.component';\r\nimport { TabsComponent } from '../../../shared-components/controls/tabs/tabs.component';\r\n\r\n@Component({\r\n selector: 'app-login-assist',\r\n templateUrl: './login-assist.component.html',\r\n styleUrls: ['./login-assist.component.css']\r\n})\r\nexport class LoginAssistComponent implements OnInit, AfterViewInit {\r\n @ViewChild(TabsComponent) tabs: TabsComponent;\r\n loginSettings: LoginSettings;\r\n tabNames: string[] = [];\r\n userType = 1;\r\n defaultTabIndex = 0;\r\n showUserType: number;\r\n constructor(\r\n private loginService: LoginService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.loginSettings = this.loginService.LoginSettings;\r\n this.setUserType();\r\n this.setTabs();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.tabs.selectedIndexChange(this.defaultTabIndex);\r\n }\r\n\r\n setTabs() {\r\n this.tabNames = [];\r\n this.tabNames.push('Staff');\r\n if (this.loginSettings.ParentPortalShowParentTab) {\r\n this.tabNames.push('Parent');\r\n }\r\n if (this.loginSettings.ParentPortalShowStudentTab) {\r\n this.tabNames.push('Student');\r\n }\r\n switch (this.userType) {\r\n case 1: {\r\n this.defaultTabIndex = this.tabNames.indexOf('Staff');\r\n break;\r\n }\r\n case 2: {\r\n this.defaultTabIndex = this.tabNames.indexOf('Parent');\r\n break;\r\n }\r\n case 3: {\r\n this.defaultTabIndex = this.tabNames.indexOf('Student');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setUserType = function () {\r\n if (localStorage && localStorage.getItem('UserType')) {\r\n this.userType = parseInt(localStorage.getItem('UserType'), 10);\r\n }\r\n };\r\n\r\n forgotPasswordClick() {\r\n this.loginService.LoginSettings.ShowForgotUserNameLink = false;\r\n const dialogRef = this.dialog.open(ForgotPasswordComponent, {disableClose: true, maxWidth: '400px', data: {userType: this.userType}});\r\n }\r\n\r\n forgotUserNameClick() {\r\n const dialogRef = this.dialog.open(ForgotUsernameComponent, {disableClose: true, maxWidth: '400px'});\r\n }\r\n\r\n tabChange(e: string) {\r\n switch (e) {\r\n case 'Staff': {\r\n this.userType = 1;\r\n break;\r\n }\r\n case 'Parent': {\r\n this.userType = 2;\r\n break;\r\n }\r\n case 'Student': {\r\n this.userType = 3;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","
Change Password
\r\n
\r\n
\r\n Current Password has expired\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { ErrorList } from '../../../shared-components/controls/error-prompt/error-list.model';\r\nimport { StudentSearchComponent } from '../../../shared-components/student-search/student-search.component';\r\nimport { User } from '../../../shared-components/user/user.model';\r\nimport { UserService } from '../../../shared-components/user/user.service';\r\nimport { LoginService } from '../login.service';\r\nimport { LoginSettings } from '../loginSetting.model';\r\n\r\n@Component({\r\n selector: 'app-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\n\r\nexport class ChangePasswordComponent implements OnInit {\r\n isDebug = false; // Used for debugging\r\n currentPassword = '';\r\n newPassword = '';\r\n repeatNewPassword = '';\r\n errorList: ErrorList[] = [];\r\n LoginSettings: LoginSettings;\r\n User: User;\r\n IsChangePasswordUrl = false;\r\n requiredCurrentPassword = true;\r\n\r\n @ViewChild('currentPasswordRef', { read: ElementRef, static: true }) currentPasswodRef: ElementRef;\r\n @ViewChild('newPasswordRef', { read: ElementRef, static: true }) newPasswordRef: ElementRef;\r\n @ViewChild('repeatNewPasswordRef', { read: ElementRef, static: true }) repeatNewPasswordRef: ElementRef;\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private loginService: LoginService,\r\n private userService: UserService,\r\n private router: Router,\r\n private dialog: MatDialog) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.User = this.userService.currentUser;\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n if (this.isDebug) {\r\n console.log('User', this.User);\r\n console.log('LoginSettings', this.LoginSettings);\r\n }\r\n if (this.router.url == '/changePassword') {\r\n this.IsChangePasswordUrl = true;\r\n }\r\n if (this.LoginSettings.V10 == false && this.User.UserType == 1) {\r\n this.requiredCurrentPassword = false;\r\n }\r\n }\r\n\r\n passwordValidation(): boolean {\r\n const mixedLettersNumbersRegEx = /^(?=.*\\d)(?=.*[A-Za-z])[0-9a-zA-Z_@./#!$%^&*+-]*$/;\r\n const containsNumericRegEx = new RegExp('(?=.*[0-9])');\r\n const containsSpecialRegEx = new RegExp('(?=.*[^a-zA-Z0-9+])');\r\n const containsUpperRegEx = new RegExp('(?=.*[A-Z])');\r\n let passesValidation = true;\r\n // Validate that the newPassword and repeatNewPassword are the same\r\n if (this.newPassword !== this.repeatNewPassword) {\r\n if (this.LoginSettings.V10) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: 'New passwords do not match',\r\n });\r\n passesValidation = false;\r\n }\r\n else if (this.newPassword.toLowerCase() !== this.repeatNewPassword.toLowerCase() || (this.userService.currentUser.UserType == 1 && this.LoginSettings.Student360StaffPasswordCaseSensitive == true)) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: 'New passwords do not match',\r\n });\r\n passesValidation = false;\r\n }\r\n }\r\n // Validate that all fields have been provided\r\n if (this.requiredCurrentPassword && (this.currentPassword == undefined || this.currentPassword == '')) {\r\n this.errorList.push({\r\n fieldName: 'Current Password',\r\n fieldRef: this.currentPasswodRef,\r\n errorMsg: 'Field required',\r\n });\r\n passesValidation = false;\r\n }\r\n if (this.newPassword == undefined || this.newPassword == '') {\r\n this.errorList.push({\r\n fieldName: 'New Password',\r\n fieldRef: this.newPasswordRef,\r\n errorMsg: 'Field required',\r\n });\r\n passesValidation = false;\r\n }\r\n if (this.repeatNewPassword == undefined || this.repeatNewPassword == '') {\r\n this.errorList.push({\r\n fieldName: 'Repeat New Password',\r\n fieldRef: this.repeatNewPasswordRef,\r\n errorMsg: 'Field required',\r\n });\r\n passesValidation = false;\r\n }\r\n if (this.LoginSettings.V10 || this.userService.currentUser.UserType == 1) {\r\n // Minimum password length\r\n if (this.newPassword.length < this.loginService.LoginSettings.MinimumPasswordLength) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: `Password must be greater than ${this.loginService.LoginSettings.MinimumPasswordLength} characters.`,\r\n });\r\n passesValidation = false;\r\n }\r\n // required mixed letters and numbers\r\n if (this.LoginSettings.PasswordRequiresMixedLettersAndNumbers && !this.newPassword.match(mixedLettersNumbersRegEx)) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: `New password must contain mixed letters and numbers`,\r\n });\r\n passesValidation = false;\r\n }\r\n // requires numeric\r\n if (this.LoginSettings.PasswordRequiresNumeric && !this.newPassword.match(containsNumericRegEx)) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: `New password must have at least one Numeric character`,\r\n });\r\n passesValidation = false;\r\n }\r\n // requires special\r\n if (this.LoginSettings.PasswordRequiresSpecial && !this.newPassword.match(containsSpecialRegEx)) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: `New password must have at least one Special (! @ # $ ...) character`,\r\n });\r\n passesValidation = false;\r\n }\r\n // requires upper\r\n if (this.LoginSettings.PasswordRequiresUpper && !this.newPassword.match(containsUpperRegEx)) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: `New password must have at least one uppercase character`,\r\n });\r\n passesValidation = false;\r\n }\r\n }\r\n // prevent password reuse\r\n if (this.LoginSettings.PreventPasswordReuse && this.newPassword == this.currentPassword) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: `New password cannot be the same as the current password`,\r\n });\r\n passesValidation = false;\r\n }\r\n // Cannot be same as username\r\n if (this.LoginSettings.PreventEqualPassUserName && this.newPassword.toLowerCase() == this.User.UserName.toLowerCase()) {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: undefined,\r\n errorMsg: `New password cannot be the same as the user name`,\r\n });\r\n passesValidation = false;\r\n }\r\n return passesValidation;\r\n }\r\n\r\n saveClick() {\r\n // add some validation to make sure that the newPassword and repeatnewPassword match\r\n const data: string[] = [this.currentPassword, this.newPassword];\r\n this.errorList = [];\r\n if (this.passwordValidation()) {\r\n this.userService.changeUserPassword(this.User.UserType, this.User.ForceChangeExpiredPass, 'Change Password', data).subscribe(response => {\r\n if (response.body == 'Success') {\r\n console.log(response);\r\n // This will show at login then re-route appropriately\r\n if (this.User.ForceChangePassword || this.User.ForceChangeExpiredPass) {\r\n this.User.ForceChangeExpiredPass = false;\r\n this.User.ForceChangePassword = false;\r\n\r\n if (this.User.NewFamilyRegistration) {\r\n this.router.navigateByUrl('/onlineRegistration');\r\n } else if (this.User.UserType == 1 && this.LoginSettings.ActivateClassroom360) {\r\n this.router.navigateByUrl('/classroom360');\r\n } else {\r\n if (this.User.UserType == 1) {\r\n this.dialog.open(StudentSearchComponent,\r\n {\r\n data: {\r\n performRoute: true,\r\n searchAndSelect: false\r\n },\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw',\r\n disableClose: true\r\n }\r\n );\r\n }\r\n else {\r\n this.router.navigateByUrl('/student360');\r\n }\r\n }\r\n }\r\n if (this.IsChangePasswordUrl == false) {\r\n this.closeClick();\r\n }\r\n } else if (response.body == 'Current password invalid') {\r\n this.errorList.push({\r\n fieldName: undefined,\r\n fieldRef: this.currentPasswodRef,\r\n errorMsg: 'Current password invalid',\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n closeClick() {\r\n // POST: the change password dialog is closed\r\n if (this.IsChangePasswordUrl == true) {\r\n this.router.navigateByUrl('/login');\r\n } else {\r\n this.dialogRef.close();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-reload',\r\n template: '
'\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n // leave this component alone :D\r\n // we understand that this is not the correct way to solve this issue.\r\n // In order to solve some of the logout issues we created this component as a temporary landing page for the logout process.\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LoginComponent } from './shared-modules/login/login.component';\r\nimport { AuthGuard } from './auth.guard';\r\nimport { LoginAssistComponent } from './shared-modules/login/login-assist/login-assist.component';\r\nimport { ChangePasswordComponent } from './shared-modules/login/change-password/change-password.component';\r\nimport { LogoutComponent } from './shared-components/logout/logout.component';\r\n\r\nconst appRoutes: Routes = [\r\n { path: 'loginAssist', component: LoginAssistComponent },\r\n { path: 'loginassist', component: LoginAssistComponent },\r\n { path: 'login', component: LoginComponent },\r\n { path: 'parent', component: LoginComponent },\r\n { path: 'student', component: LoginComponent },\r\n { path: 'logout', component: LogoutComponent, canActivate: [AuthGuard] },\r\n {\r\n path: 'familyregistration',\r\n loadChildren: () => import('app/shared-modules/family-registration/family-registration.module').then(m => m.FamilyRegistrationModule)\r\n },\r\n {\r\n path: 'studentattachment',\r\n loadChildren: () => import('app/shared-modules/student-attachment/student-attachment.module').then(m => m.StudentAttachmentModule)\r\n },\r\n {\r\n path: 'classroom360',\r\n loadChildren: () => import('app/classroom360/classroom360.module').then(m => m.Classroom360Module),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'student360',\r\n loadChildren: () => import('app/student360/student360.module').then(m => m.Student360Module),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'counselor360',\r\n loadChildren: () => import('app/counselor360/counselor360.module').then(m => m.Counselor360Module),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'admin360',\r\n loadChildren: () => import('app/admin360/admin360.module').then(m => m.Admin360Module),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'statereporting',\r\n loadChildren: () => import('app/state-reporting/state-reporting.module').then(m => m.StateReportingModule),\r\n // canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'management360',\r\n loadChildren: () => import('app/management360/management360.module').then(m => m.Management360Module),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'health360',\r\n loadChildren: () => import('app/health360/health360.module').then(m => m.Health360Module),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'sped360',\r\n loadChildren: () => import('app/sped360/sped360.module').then(m => m.Sped360Module),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'changePassword',\r\n component: ChangePasswordComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: '/login',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: '**',\r\n redirectTo: '/login',\r\n pathMatch: 'full'\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(\r\n appRoutes,\r\n {\r\n onSameUrlNavigation: 'reload',\r\n relativeLinkResolution: 'legacy'\r\n}\r\n )\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class AppRoutingModule {\r\n\r\n}\r\n","import { LinkAlreadySentComponent } from './../family-registration/link-already-sent/link-already-sent.component';\r\nimport { NewFamilyRegistrationYearSelectionComponent } from './../family-registration/new-family-registration-year-selection/new-family-registration-year-selection.component';\r\nimport { EmailSentComponent } from './../family-registration/email-sent/email-sent.component';\r\nimport { DuplicateEmailAddressComponent } from './../family-registration/duplicate-email-address/duplicate-email-address.component';\r\nimport { LoginExistsComponent } from './../family-registration/login-exists/login-exists.component';\r\nimport { RegisterNewFamilyComponent } from './../family-registration/register-new-family/register-new-family.component';\r\n\r\n\r\nimport { RegisterNewFamilyMessageComponent } from './../family-registration/register-new-family-message/register-new-family-message.component';\r\nimport { SelectLanguageComponent } from './../family-registration/select-language/select-language.component';\r\nimport { ChangePasswordComponent } from './change-password/change-password.component';\r\nimport { LoginFooterComponent } from './footer/login-footer.component';\r\nimport { LoginComponent } from './login.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { AppRoutingModule } from '../../app-routing.module';\r\nimport { SharedComponentsModule } from '../../shared-components/shared-components.module';\r\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\r\nimport { ForgotUsernameComponent } from './forgot-username/forgot-username.component';\r\nimport { StudentResetPasswordWarningComponent } from './forgot-password/student-reset-password-warning/student-reset-password-warning.component';\r\nimport { LoginAssistComponent } from './login-assist/login-assist.component';\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\nimport { ConfirmationModalComponent } from './forgot-username/confirmation-modal/confirmation-modal.component';\r\nimport { LoginOnly360Component } from './login-only360/login-only360.component';\r\nimport { InactivityTimeoutComponent } from './inactivity-timeout/inactivity-timeout.component';\r\nimport { UnsupportedBrowserWarningDialogComponent } from './unsupported-browser-warning-dialog/unsupported-browser-warning-dialog.component';\r\nimport { EmailNotSentComponent } from '../family-registration/email-not-sent/email-not-sent.component';\r\nimport { AccessMessageComponent } from './access-message/access-message.component';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { RegisterNewFamilyVerifyCodeComponent } from '../family-registration/register-new-family-verify-code/register-new-family-verify-code.component';\r\nimport { AuditLoginsComponent } from './audit-logins/audit-logins.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ForgotPasswordComponent,\r\n ResetPasswordComponent,\r\n ForgotUsernameComponent,\r\n StudentResetPasswordWarningComponent,\r\n ConfirmationModalComponent,\r\n LoginComponent,\r\n LoginFooterComponent,\r\n ChangePasswordComponent,\r\n SelectLanguageComponent,\r\n RegisterNewFamilyMessageComponent,\r\n RegisterNewFamilyComponent,\r\n LinkAlreadySentComponent,\r\n LoginExistsComponent,\r\n DuplicateEmailAddressComponent,\r\n EmailSentComponent,\r\n NewFamilyRegistrationYearSelectionComponent,\r\n LoginAssistComponent,\r\n LoginOnly360Component,\r\n InactivityTimeoutComponent,\r\n UnsupportedBrowserWarningDialogComponent,\r\n EmailNotSentComponent,\r\n AccessMessageComponent,\r\n RegisterNewFamilyVerifyCodeComponent,\r\n AuditLoginsComponent\r\n ],\r\n imports: [\r\n SharedComponentsModule,\r\n AppRoutingModule\r\n ],\r\n providers: [\r\n CookieService\r\n ]\r\n})\r\nexport class LoginModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http';\r\nimport {YearService} from './shared-components/year/year.service';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private yearService: YearService\r\n ) {}\r\n\r\n intercept(req: HttpRequest, next: HttpHandler) {\r\n // Get the auth token from the service.\r\n let changedReq = req;\r\n\r\n // Adding authorization headers\r\n const authToken = sessionStorage.getItem('accessToken');\r\n let siteId: number;\r\n let yearId: number;\r\n if (this.yearService.defaultYear) {\r\n siteId = this.yearService.defaultYear.SchoolID;\r\n yearId = this.yearService.defaultYear.Id;\r\n } else {\r\n siteId = -1;\r\n yearId = -1;\r\n }\r\n if (authToken) {\r\n const newheader = 'Bearer ' + authToken.toString();\r\n changedReq = req.clone(\r\n {\r\n setHeaders: {\r\n Authorization: newheader.toString(),\r\n 'SiteId': siteId.toString(),\r\n 'YearId': yearId.toString()\r\n }\r\n }\r\n );\r\n }\r\n\r\n // Handling the request with authorization\r\n return next.handle(changedReq);\r\n }\r\n}\r\n\r\n\r\n/*\r\nCopyright 2017-2018 Google Inc. All Rights Reserved.\r\nUse of this source code is governed by an MIT-style license that\r\ncan be found in the LICENSE file at http://angular.io/license\r\n*/\r\n","/* \"Barrel\" of Http Interceptors */\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\n\r\nimport { AuthInterceptor } from './authIntercepter';\r\n\r\n\r\n/** Http interceptor providers in outside-in order */\r\nexport const httpInterceptorProviders = [\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }\r\n\r\n];\r\n\r\n\r\n/*\r\nCopyright 2017-2018 Google Inc. All Rights Reserved.\r\nUse of this source code is governed by an MIT-style license that\r\ncan be found in the LICENSE file at http://angular.io/license\r\n*/\r\n","import { Component, Output, EventEmitter } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-inactivity-timeout',\r\n templateUrl: './inactivity-timeout.component.html'\r\n})\r\nexport class InactivityTimeoutComponent {\r\n\r\n inactiveTime: number;\r\n secondCount: number = 60;\r\n idleTimeout: any;\r\n @Output() resetTimeout = new EventEmitter();\r\n\r\n constructor(private dialog: MatDialogRef) {\r\n this.idleTimeout = setInterval(() => {\r\n if (this.secondCount > 0)\r\n this.secondCount = this.secondCount - 1;\r\n else\r\n window.location.reload();\r\n }, 1000);\r\n\r\n ['click', 'touchstart', 'mousemove'].forEach(evt =>\r\n document.addEventListener(evt, this.closeDialog.bind(this), false)\r\n );\r\n }\r\n\r\n closeDialog() {\r\n clearInterval(this.idleTimeout);\r\n this.resetTimeout.emit();\r\n this.dialog.close()\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

Account inactive for {{inactiveTime}} minutes...

\r\n
\r\n
\r\n You will be logged out in {{secondCount}} second(s).\r\n
\r\n
","
\r\n \r\n Access Denied\r\n \r\n
\r\n\r\n\r\n
\r\n The {{portalName}} page is not available for {{student.FirstName}} {{student.LastName}}.\r\n
\r\n You have been returned to the Student Summary page.\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n","import { Component, Output, EventEmitter } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { Student } from '../../shared-components/student/student.model';\r\nimport { StudentService } from '../../shared-components/student/student.service';\r\n\r\n@Component({\r\n selector: 'app-portal-access-denied',\r\n templateUrl: './portal-access-denied.component.html'\r\n})\r\nexport class PortalAccessDeniedComponent {\r\n\r\n portalName: string;\r\n student: Student;\r\n\r\n @Output() revertToStudentSummary = new EventEmitter();\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private dialog: MatDialogRef\r\n ) {\r\n this.student = this.studentService.selectedStudent;\r\n }\r\n\r\n closeClick() {\r\n this.revertToStudentSummary.emit();\r\n this.dialog.close();\r\n }\r\n}\r\n","
\r\n About Tyler SIS\r\n
© {{currentDate.getFullYear()}} Copyright Tyler Technologies, Inc. All rights reserved.
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n 360 Application Version\r\n \r\n {{aboutTyler.ApplicationVersion}}\r\n
\r\n Classic Application Version\r\n \r\n {{legacyVersion}}\r\n
\r\n Database\r\n \r\n {{aboutTyler.Database}}\r\n
\r\n Reports Version\r\n \r\n {{aboutTyler.ReportsVersion}}\r\n
\r\n Report Server\r\n \r\n {{aboutTyler.ReportServer}}\r\n
\r\n TCM Integration\r\n \r\n {{aboutTyler.TCMIntegration}}\r\n
\r\n SPED Integration\r\n \r\n {{aboutTyler.SpEdIntegration}}\r\n
\r\n Server Name\r\n \r\n {{aboutTyler.ServerName}}\r\n
\r\n Operating System\r\n \r\n {{aboutTyler.OperatingSystem}}\r\n
\r\n .Net Version\r\n \r\n {{aboutTyler.DotNetVersion}}\r\n
\r\n Database Version\r\n \r\n {{aboutTyler.DatabaseVersion}}\r\n
\r\n Client Name (IP)\r\n \r\n {{aboutTyler.ClientName}}\r\n
\r\n Platform / Browser\r\n \r\n {{aboutTyler.PlatformBrowser}}\r\n
\r\n Browser Language\r\n \r\n {{aboutTyler.BrowserLanguage}}\r\n
\r\n Browser Compatible\r\n \r\n {{aboutTyler.BrowserCompatible}}\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { SharedService } from '../../shared.service';\r\nimport { AboutTyler } from './about-tyler.model';\r\nimport { LoginService } from '../../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../../shared-modules/login/LoginSetting.model';\r\n\r\n@Component({\r\n selector: 'app-about-panel',\r\n templateUrl: './about-panel.component.html'\r\n})\r\nexport class AboutPanelComponent implements OnInit {\r\n\r\n aboutTyler: AboutTyler;\r\n legacyVersion: String\r\n currentDate: Date;\r\n loginSettings: LoginSettings;\r\n\r\n constructor(\r\n private dialog: MatDialogRef,\r\n private sharedService: SharedService,\r\n private loginService: LoginService\r\n ) {\r\n this.legacyVersion = this.loginService.LoginSettings.LegacyVersion;\r\n this.loginSettings = this.loginService.LoginSettings;\r\n }\r\n\r\n ngOnInit() {\r\n this.sharedService.getAboutTylerSIS().subscribe((results) => {\r\n this.aboutTyler = results;\r\n });\r\n this.currentDate = new Date();\r\n }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n","import {Component, Inject, OnInit, ViewChild} from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport {FavoritesComponent} from '../favorites.component';\r\n\r\n@Component({\r\n selector: 'app-favorites-modal',\r\n templateUrl: './favorites-modal.component.html',\r\n styleUrls: ['./favorites-modal.component.css']\r\n})\r\nexport class FavoritesModalComponent implements OnInit {\r\n editFavorites: boolean;\r\n staffAssignedPortals: any[];\r\n @ViewChild('appFavorites', { static: true }) appFavorites: FavoritesComponent;\r\n constructor(@Inject(MAT_DIALOG_DATA) private data: any) {\r\n this.editFavorites = this.data.editFavorites;\r\n this.staffAssignedPortals = this.data.staffAssignedPortals;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n expandAllClick(expandSection:boolean) {\r\n this.appFavorites.expandAllClick(expandSection);\r\n }\r\n\r\n closeClick() {\r\n this.appFavorites.closeClick();\r\n }\r\n\r\n saveClick() {\r\n this.appFavorites.saveClick();\r\n }\r\n\r\n}\r\n","export class SystemLog {\r\n ID: number;\r\n UserID: number;\r\n Timestamp: Date;\r\n MachineName: string;\r\n InstanceName: string;\r\n ProgramName: string;\r\n Type: string;\r\n Message: string;\r\n StackTrace: string;\r\n Context: string;\r\n }","import { Component } from '@angular/core';\r\nimport { Student } from '../student.model';\r\nimport { StudentService } from '../student.service';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport {SharedService} from '../../shared.service';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-student-in-focus',\r\n templateUrl: './student-in-focus.component.html'\r\n})\r\nexport class StudentInFocusComponent {\r\n\r\n student: Student;\r\n\r\n constructor(\r\n private studentService: StudentService,\r\n private dialog: MatDialogRef,\r\n private sharedService: SharedService,\r\n private router: Router\r\n ) {\r\n this.student = this.studentService.selectedStudent;\r\n }\r\n\r\n clearFocus() {\r\n if (this.router.url.indexOf('/student360') > -1) {\r\n this.router.navigateByUrl('/classroom360/cards');\r\n }\r\n this.studentService.selectedStudent = undefined;\r\n this.studentService.updateSelectedStudent(undefined);\r\n this.closeClick();\r\n }\r\n\r\n closeClick() {\r\n this.dialog.close();\r\n }\r\n\r\n}\r\n","
\r\n \r\n Student In Focus\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n \r\n","
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
Tyler SIS
\r\n
0 && router.url != '/admin360/globalSearch'\">\r\n
0}\">\r\n Impersonating
\r\n {{currentUser.FirstName}} {{currentUser.LastName}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"AddAdd\r\n Current Page\r\n \r\n
\r\n
\r\n \r\n \"EditEdit\r\n Favorites\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
= 1024\">\r\n \r\n \r\n \r\n \r\n \r\n {{school.SchoolCode}} - \r\n {{school.SchoolName}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
= 1024 && showYearDropdown==true\">\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{year.Description}}\r\n \r\n {{(year.Status==0 && year.IsOverride == false) ? ' (past)' : (year.Status==0 && year.IsOverride == true) ? ' (past*)' : (year.Status == 2 && year.IsOverride == true) ? ' (future*)' : ' (future)'}}\r\n \r\n \r\n {{year.Status==1 ? ' (current*)' : ' '}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \"AddAdd\r\n Link\r\n \r\n \r\n \"EditEdit\r\n Links\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {{userInitials}}\r\n \r\n
\r\n
0\" class=\"sis-header-impersonatinguser\"\r\n [attr.title]=\"'User' | translate\" [matMenuTriggerFor]=\"userMenu\" style=\"cursor:pointer;\">\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
Tyler SIS
\r\n
\r\n\r\n
0\"\r\n style=\"text-align:center;background-color:#e5b53a;\">\r\n {{LoginSettings.InstanceName}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
","import { Component, EventEmitter, HostListener, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\n// @ts-ignore\r\nimport printJS from 'print-js';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { ClassroomSummaryService } from '../../classroom360/classroom-summary/classroom-summary.service';\r\nimport { ClassroomSummary } from '../../classroom360/classroom-summary/models/classroom-summary.model';\r\nimport { Classroom360Service } from '../../classroom360/classroom360.service';\r\nimport { DataQueryService } from '../../classroom360/data-query/data-query.service';\r\nimport { SelectCourseDialogComponent } from '../../classroom360/guards/select-course/select-course-dialog/select-course-dialog.component';\r\nimport { AddLinkComponent } from '../../classroom360/links/add-link/add-link.component';\r\nimport { Link } from '../../classroom360/links/link.model';\r\nimport { StaffService } from '../../management360/staff/staff.service';\r\nimport { ChangePasswordComponent } from '../../shared-modules/login/change-password/change-password.component';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\nimport { LoginSettings } from '../../shared-modules/login/LoginSetting.model';\r\nimport { ReportingComponent } from '../../shared-modules/reporting/reporting.component';\r\nimport { PortalAccessDeniedComponent } from '../../student360/portal-access-denied/portal-access-denied.component';\r\nimport { Student360Service } from '../../student360/student360.service';\r\nimport { ChangeEmailComponent } from '../change-email/change-email.component';\r\nimport { AboutPanelComponent } from '../controls/about-panel/about-panel.component';\r\nimport { GeneralConfirmationComponent } from '../controls/general-confirmation/general-confirmation.component';\r\nimport { FavoritePortal } from '../favorites/favorite-portals.model';\r\nimport { FavoritesModalComponent } from '../favorites/favorites-modal/favorites-modal.component';\r\nimport { CheckForErrorsGuard } from '../guards/check-for-errors/check-for-errors.guard';\r\nimport { MenuComponent } from '../menu/menu.component';\r\nimport { SystemLog } from '../models/system-log.model';\r\nimport { Portal } from '../portal.model';\r\nimport { RouteInfo } from '../routeInfo';\r\nimport { SecurityService } from '../security/security.service';\r\nimport { SharedService } from '../shared.service';\r\nimport { SpinnerService } from '../spinner/spinner.service';\r\nimport { StudentSearchComponent } from '../student-search/student-search.component';\r\nimport { StudentSearchService } from '../student-search/student-search.service';\r\nimport { StudentInFocusComponent } from '../student/student-in-focus/student-in-focus.component';\r\nimport { Student } from '../student/student.model';\r\nimport { StudentService } from '../student/student.service';\r\nimport { FavoritePreferences } from '../user-preferences/favorite-prefences.model';\r\nimport { PortalMenuItem, PortalMenuPreferences } from '../user-preferences/portal-menu-preferences.model';\r\nimport { UserPreferencesWindowComponent } from '../user-preferences/user-preferences-window/user-preferences-window.component';\r\nimport { UserPreferencesService } from '../user-preferences/user-preferences.service';\r\nimport { User } from '../user/user.model';\r\nimport { UserService } from '../user/user.service';\r\nimport { School } from '../year/school.model';\r\nimport { Year } from '../year/year.model';\r\nimport { YearService } from '../year/year.service';\r\n\r\n// Google API Variable\r\ndeclare const google: any;\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: [\r\n './header.component.scss'\r\n ]\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n public parentAssignedPortals: Portal[] = [];\r\n public parentPortalsDeepCopy: Portal[] = []; // used to compare portals and links\r\n public staffAssignedPortals: Portal[] = [];\r\n public staffPortalMenuPreferences: PortalMenuPreferences = new PortalMenuPreferences;\r\n public parentAssignedFavoritePortals: Portal[] = [];\r\n public staffAssignedFavoritePortals: Portal[] = [];\r\n public staffFavoritePortalMenuPreferences: PortalMenuPreferences = new PortalMenuPreferences;\r\n public students: Student[];\r\n public selectedStudent: Student;\r\n public years: Year[];\r\n public schools: School[];\r\n public LoginSettings: LoginSettings;\r\n public currentUser: User;\r\n userInitials: string;\r\n myClasses: ClassroomSummary[];\r\n gradebookClasses: ClassroomSummary[];\r\n attendanceClasses: ClassroomSummary[];\r\n myLinks: Link[];\r\n districtLinks: Link[];\r\n myFavorites: FavoritePortal[];\r\n studentSubscription: Subscription;\r\n yearSubscription: Subscription;\r\n schoolsSubscription: Subscription;\r\n isLoggedIn: boolean;\r\n isLoggedInSubscription: Subscription;\r\n isPageLoaded: boolean;\r\n isPageLoadedSubscription: Subscription;\r\n parentAssignedPortalsSubscription: Subscription;\r\n staffAssignedPortalSubscription: Subscription;\r\n changeEmailDialogRef: MatDialogRef;\r\n ChangePasswordDialogRef: MatDialogRef;\r\n StudentSearchDialogRef: MatDialogRef;\r\n favoritesDialogRef: MatDialogRef;\r\n aboutTylerSISDialog: MatDialogRef;\r\n studentInFocusDialog: MatDialogRef;\r\n languageLinkVisible = false;\r\n myClassesSubscription: Subscription;\r\n currentUserSubscription: Subscription;\r\n defaultYearSubscription: Subscription;\r\n parentPortalsSubscription: Subscription;\r\n setSchoolDisabledSubscription: Subscription;\r\n setYearDisabledSubscription: Subscription;\r\n // ------------Modal window--------------------------------------\r\n userPrefDialogRef: MatDialogRef;\r\n reportsDialogRef: MatDialogRef;\r\n addLinkDialogRef: MatDialogRef;\r\n portalAccessDeniedDialog: MatDialogRef;\r\n gradebookAccessDeniedDialog: MatDialogRef;\r\n selectedSchoolId = 0;\r\n selectedYear: Year;\r\n showSchoolDropdown = false;\r\n showYearDropdown = false;\r\n enableClassDropdown = false;\r\n showTeacherProfile = false;\r\n disableYearDropdown = false;\r\n hidePrintButton = false;\r\n screenWidth = 0;\r\n windowWidth = 0;\r\n impersonateByUserId: number;\r\n userLoginFromLegacy = false;\r\n pulseWindow;\r\n pulsePageList = [];\r\n pulseFavoriteList = [];\r\n favoritesShown: boolean;\r\n showNotificationPreferencesLink = false;\r\n showChangePassword = true;\r\n helpContextId: string;\r\n @Output() toggleEvent = new EventEmitter();\r\n @ViewChild(MenuComponent) menuRef: MenuComponent;\r\n showGALDS = false;\r\n showAZEds = false;\r\n schoolId = 0;\r\n V10: boolean;\r\n stopImpersonating = false;\r\n\r\n // change public service to private and remove from html\r\n constructor(private loginService: LoginService,\r\n public studentService: StudentService,\r\n public userService: UserService,\r\n private yearService: YearService,\r\n private classroomSummaryService: ClassroomSummaryService,\r\n private student360Service: Student360Service,\r\n private classroom360Service: Classroom360Service,\r\n private userPreferencesService: UserPreferencesService,\r\n private sharedService: SharedService,\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private guard: CheckForErrorsGuard,\r\n private dataQueryService: DataQueryService,\r\n private spinnerService: SpinnerService,\r\n private securityService: SecurityService,\r\n private studentSearchService: StudentSearchService,\r\n private staffService: StaffService\r\n ) {\r\n }\r\n\r\n toggleClick() {\r\n this.toggleEvent.emit();\r\n }\r\n\r\n ngOnInit() {\r\n this.LoginSettings = this.loginService.LoginSettings;\r\n this.V10 = this.loginService.LoginSettings.V10;\r\n this.currentUserSubscription = this.userService.observableCurrentUserStream$\r\n .subscribe(data => {\r\n this.currentUser = data;\r\n this.userInitials = this.currentUser.FirstName.substring(0, 1).toUpperCase() + this.currentUser.LastName.substring(0, 1).toUpperCase();\r\n this.getUserLoginFromLegacy();\r\n if (this.LoginSettings.EnablePulseSSO && this.currentUser.UserType == 1) {\r\n this.getPulseList();\r\n }\r\n\r\n if (this.loginService.LoginSettings.V10 == false && this.currentUser.UserType == 2) {\r\n this.userService.setNotificationPreferencesMenu().subscribe(result => {\r\n this.showNotificationPreferencesLink = result;\r\n });\r\n }\r\n\r\n this.getUserPermission();\r\n });\r\n this.studentSubscription = this.studentService.observableStudentsStream$\r\n .subscribe(data => {\r\n this.students = data;\r\n });\r\n this.parentAssignedPortalsSubscription = this.student360Service.observableParentAssignedPortalsStream$\r\n .subscribe(data => {\r\n this.parentPortalsDeepCopy = _.cloneDeep(data);\r\n this.parentAssignedPortals = data.filter(a => a.ShowAsMenu);\r\n if (this.router.url.toLowerCase().indexOf('/student360') >= 0) {\r\n let portalURL = this.router.url.toLowerCase().replace('/student360', '');\r\n if (portalURL.includes('?')) {\r\n portalURL = portalURL.substring(0, portalURL.indexOf('?'));\r\n }\r\n const parentAssignedPortal = this.parentAssignedPortals.filter(a => a.PortalDescription.toLowerCase() == portalURL && a.Disabled == true)[0];\r\n if (parentAssignedPortal != null && portalURL != undefined && portalURL != '/onlineregistration') {\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n }\r\n });\r\n this.yearSubscription = this.yearService.observableYearStream$\r\n .subscribe(years => {\r\n if (!this.LoginSettings.V10 && this.userService.currentUser.UserType == 1 && this.studentService.selectedStudent) {\r\n const yearsValue = years.filter(year => year.SchoolID == 0);\r\n if (yearsValue.length == 0) {\r\n let school = this.yearService.defaultYear.SchoolID == 0 ? this.schoolId : this.yearService.defaultYear.SchoolID;\r\n school = school == 0 ? this.userService.currentUser.LoginSchoolId : school;\r\n this.years = years.filter(year => year.SchoolID == school);\r\n if (this.years.length == 0) {\r\n this.years = years.filter(year => year.SchoolID == 0);\r\n }\r\n this.schools = _.sortBy(this.yearService.schoolsForC360, ['SchoolCode', 'SchoolName']);\r\n\r\n if (this.yearService.defaultYear) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = school;\r\n }\r\n } else {\r\n let school = this.yearService.defaultYear.SchoolID == 0 ? this.schoolId : this.yearService.defaultYear.SchoolID;\r\n school = school == 0 ? this.userService.currentUser.LoginSchoolId : school;\r\n this.years = years.filter(year => year.SchoolID == school);\r\n if (this.years.length == 0) {\r\n this.years = years.filter(year => year.SchoolID == 0);\r\n }\r\n if (this.yearService.defaultYear) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = school;\r\n }\r\n }\r\n }\r\n else if (this.LoginSettings.V10 == false) {\r\n this.years = [];\r\n years.forEach(obj => {\r\n if (this.years.filter(o => o.Id == obj.Id).length == 0) {\r\n this.years.push(obj);\r\n }\r\n });\r\n this.schools = _.sortBy(this.yearService.schools, ['SchoolCode', 'SchoolName']);\r\n if (this.schools.filter(x => x.Id == 0).length > 0) {\r\n this.schools = _.sortBy(this.yearService.schoolsForC360, ['SchoolCode', 'SchoolName']);\r\n this.yearService.schools = this.yearService.schoolsForC360;\r\n }\r\n\r\n if (this.yearService.defaultYear) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = this.yearService.defaultYear.SchoolID;\r\n }\r\n }\r\n else {\r\n this.years = years.filter(year => year.SchoolID == this.yearService.defaultYear.SchoolID);\r\n this.schools = _.sortBy(this.yearService.schools, ['SchoolCode', 'SchoolName']);\r\n if (this.yearService.allYears) {\r\n const validSchoolIds = this.yearService.allYears.filter(y => y.AYIdentifier == this.yearService.defaultYear.AYIdentifier).map(y => y.SchoolID);\r\n this.schools = this.schools.filter(s => validSchoolIds.indexOf(s.Id) > -1);\r\n }\r\n if (this.schools.filter(x => x.Id == 0).length > 0) {\r\n this.schools = _.sortBy(this.yearService.schoolsForC360, ['SchoolCode', 'SchoolName']);\r\n this.yearService.schools = this.yearService.schoolsForC360;\r\n }\r\n\r\n if (this.yearService.defaultYear) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = this.yearService.defaultYear.SchoolID;\r\n }\r\n\r\n if (this.LoginSettings.V10 && this.currentUser.UserType == 1 && !this.LoginSettings.ActivateClassroom360 && !this.userService.staffUserStudentLocked) {\r\n this.userService.staffUserStudentLocked = true;\r\n this.studentSearchClick(null);\r\n }\r\n }\r\n });\r\n this.schoolsSubscription = this.yearService.observableSchoolsStream$.subscribe(schools => {\r\n if (this.LoginSettings.V10 == false && schools) {\r\n this.schools = _.sortBy(schools, ['SchoolCode', 'SchoolName']);\r\n if (this.schools.filter(x => x.Id == 0).length > 0) {\r\n this.schools = _.sortBy(this.yearService.schoolsForC360, ['SchoolCode', 'SchoolName']);\r\n this.yearService.schools = this.yearService.schoolsForC360;\r\n }\r\n\r\n if (this.yearService.defaultYear && this.years) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = this.yearService.defaultYear.SchoolID;\r\n }\r\n }\r\n });\r\n this.isLoggedInSubscription = this.userService.isLoggedInStream$\r\n .subscribe(data => {\r\n this.isLoggedIn = data;\r\n });\r\n this.staffAssignedPortalSubscription = this.classroom360Service.observableStaffAssignedPortalsStream$\r\n .subscribe(data => {\r\n this.staffAssignedPortals = data.filter(a => a.ShowAsMenu);\r\n this.showTeacherProfile = data.filter(o => o.PortalDescription == '/teacherProfile' && o.Disabled == false && o.Deleted == false).length > 0;\r\n });\r\n this.isPageLoadedSubscription = this.sharedService.observableIsPageLoadedStream$\r\n .subscribe(data => {\r\n this.isPageLoaded = data;\r\n });\r\n this.myClassesSubscription = this.classroomSummaryService.observableMyClassesStream$.subscribe(data => {\r\n if (data && this.currentUser != undefined) {\r\n data.forEach(course => course.CourseMenuText = this.classroomSummaryService.getCourseSummary(course));\r\n this.myClasses = data;\r\n if (this.LoginSettings.V10 && !this.classroomSummaryService.gradebookClassesSet) {\r\n this.classroomSummaryService.gradebookClassesSet = true;\r\n this.getGradebookClasses();\r\n }\r\n }\r\n });\r\n this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.getPageInfo(this.router.url);\r\n if (this.router.url == '/classroom360/classroomAttendance') {\r\n this.getAttendanceClasses();\r\n } else if (this.V10 == false && this.router.url == '/classroom360/gradebook/V9') {\r\n this.getGradebookClasses();\r\n }\r\n // Clear Access Token After Logout\r\n else if (this.router.url == '/login' && sessionStorage.getItem('accessToken')) {\r\n this.studentService.selectedStudent = undefined;\r\n if (!this.LoginSettings.V10 && sessionStorage.getItem('loginFromLegacy') != null || sessionStorage.getItem('loginFromLegacy') == '1') {\r\n sessionStorage.removeItem('accessToken');\r\n window.close();\r\n }\r\n }\r\n if (this.sharedService.currentUrl != this.sharedService.previousUrl) {\r\n const studentId = this.selectedStudent != undefined ? this.selectedStudent.Id : 0;\r\n const schoolId = this.yearService.defaultYear != undefined ? this.yearService.defaultYear.SchoolID : 0;\r\n const yearId = this.yearService.defaultYear != undefined ? this.yearService.defaultYear.Id : 0;\r\n this.sharedService.saveWebPageAudit(studentId, schoolId, yearId, this.router.url).subscribe();\r\n }\r\n if (this.router.url == '/logout') {\r\n setTimeout(() => {\r\n location.reload();\r\n }, 0);\r\n }\r\n // clear stored custom field data on route change\r\n this.sharedService.observableClearStoredCustomFieldData.next();\r\n }\r\n });\r\n\r\n this.defaultYearSubscription = this.yearService.observableDefaultYearStream$.subscribe((defaultYear) => {\r\n if (this.currentUser && this.currentUser.UserType == 1) {\r\n // Set Teacher Status based on school/year when not already on Classroom Summary\r\n if (this.router.url.indexOf('classroomSummary') == -1) {\r\n this.userService.getUserIsTeacher(this.yearService.defaultYear.SchoolID, this.yearService.defaultYear.Id).subscribe(result => {\r\n this.userService.currentUser.UserIsTeacher = result;\r\n });\r\n }\r\n\r\n if (this.LoginSettings.V10) {\r\n this.getGradebookClasses();\r\n\r\n this.schools = _.sortBy(this.yearService.schools, ['SchoolCode', 'SchoolName']);\r\n if (this.yearService.allYears) {\r\n const validSchoolIds = this.yearService.allYears.filter(y => y.AYIdentifier == this.yearService.defaultYear.AYIdentifier).map(y => y.SchoolID);\r\n this.schools = this.schools.filter(s => validSchoolIds.indexOf(s.Id) > -1);\r\n }\r\n\r\n // Updating selected year based on default year\r\n if (this.selectedYear != this.yearService.defaultYear && this.yearService.allYears) {\r\n this.years = this.yearService.allYears.filter(year => year.SchoolID == this.yearService.defaultYear.SchoolID);\r\n this.selectedYear = this.yearService.defaultYear;\r\n this.selectedSchoolId = this.selectedYear.SchoolID;\r\n }\r\n }\r\n else if (this.yearService.allYears) {\r\n this.schools = this.yearService.getSchoolsForSelectedYear(this.yearService.allYears, this.yearService.defaultYear);\r\n this.selectedYear = this.yearService.defaultYear;\r\n this.selectedSchoolId = this.selectedYear.SchoolID;\r\n }\r\n }\r\n });\r\n\r\n this.parentPortalsSubscription = this.student360Service.observableParentAssignedPortalsStream$.subscribe(() => {\r\n if (this.studentService.selectedStudent && this.router.url != '/login') {\r\n const studentId = this.studentService.selectedStudent.Id;\r\n if (this.userService.userType == 2 && this.student360Service.allParentPortals != undefined) {\r\n let portalURL = this.router.url;\r\n portalURL = portalURL.replace('/student360', '');\r\n portalURL = (portalURL.indexOf('?') > -1) ? portalURL.substr(0, portalURL.indexOf('?')) : portalURL;\r\n if (this.V10) {\r\n if (portalURL == '/familyregistration/student') {\r\n portalURL = '/onlineRegistration';\r\n }\r\n }\r\n const parentPortal = this.student360Service.allParentPortals.filter(a => a.PortalDescription == portalURL && a.Student_ID == studentId)[0];\r\n if ((portalURL != '/studentSummary' && portalURL != '/changePassword') && parentPortal == undefined) {\r\n const previousPortal = this.sharedService.previousPortal;\r\n this.logAccessDeniedInfo();\r\n this.portalAccessDeniedDialog = this.dialog.open(PortalAccessDeniedComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n this.portalAccessDeniedDialog.componentInstance.portalName = previousPortal.PortalName;\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n } else if (this.userService.userType == 2 && !this.LoginSettings.V10) {\r\n const portalURL = this.router.url;\r\n if (portalURL == '/student360/notificationPreferences' && !this.studentService.selectedStudent.PrimaryContact) {\r\n this.logAccessDeniedInfo();\r\n this.portalAccessDeniedDialog = this.dialog.open(PortalAccessDeniedComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n this.portalAccessDeniedDialog.componentInstance.portalName = 'Notification Preferences';\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.setSchoolDisabledSubscription = this.yearService.observableSetSchoolDisabledStream$.subscribe(disabled => {\r\n this.showSchoolDropdown = !disabled;\r\n });\r\n\r\n this.setYearDisabledSubscription = this.yearService.observableSetYearDisabledStream$.subscribe(disabled => {\r\n this.disableYearDropdown = disabled;\r\n });\r\n\r\n // Checking if we show GALDS\r\n this.showGALDS = false;\r\n if (this.loginService.LoginSettings.V10 && this.loginService.LoginSettings.UseUnifiedLoginPage) {\r\n if (this.userService.userType == 1) { // staff\r\n this.userService.isGALDSRoleAssigned(this.yearService.defaultYear.SchoolID).pipe(take(1)).subscribe(result => {\r\n this.showGALDS = result;\r\n });\r\n } else {\r\n if (this.userService.userType == 2) { // parent\r\n this.showGALDS = this.loginService.LoginSettings.AllowGALDSParentPortal;\r\n } else { // student\r\n this.showGALDS = this.loginService.LoginSettings.AllowGALDSStudentPortal;\r\n }\r\n }\r\n }\r\n\r\n // Checking if we show AZEDs\r\n this.showAZEds = false;\r\n if (this.loginService.LoginSettings.V10) {\r\n if (this.userService.userType == 1) {\r\n this.userService.isAZEdsRoleAssigned().pipe(take(1)).subscribe(results => {\r\n this.showAZEds = results;\r\n });\r\n }\r\n }\r\n }\r\n\r\n logAccessDeniedInfo() {\r\n const messageObject: any = {};\r\n messageObject.url = this.router.url;\r\n messageObject.previousPortal = this.sharedService.previousPortal;\r\n messageObject.userType = this.userService.userType;\r\n messageObject.isV10 = this.LoginSettings.V10;\r\n messageObject.selectedStudent = this.studentService.selectedStudent;\r\n messageObject.allParentPortals = this.student360Service.allParentPortals;\r\n const systemLog = new SystemLog();\r\n systemLog.UserID = this.userService.currentUser.Id;\r\n systemLog.Timestamp = new Date();\r\n systemLog.InstanceName = window.location.href;\r\n systemLog.ProgramName = 'AccessDeniedPopup';\r\n systemLog.Type = 'Info';\r\n systemLog.MachineName = '';\r\n systemLog.StackTrace = '';\r\n systemLog.Context = '';\r\n systemLog.Message = JSON.stringify(messageObject);\r\n\r\n this.sharedService.createSystemLog(systemLog).pipe(take(1)).subscribe();\r\n }\r\n\r\n galdsClick() {\r\n if (this.loginService.LoginSettings.V10) {\r\n const legacyUrl = this.loginService.LoginSettings.LegacyURL;\r\n window.removeEventListener('beforeunload', (e) => {\r\n if (sessionStorage.getItem('accessToken')) {\r\n if (window.location.hash != '#/' && window.location.hash.indexOf('#/login') == -1 && window.location.hash != '#/parent' && window.location.hash != '#/student'\r\n && window.location.hash != '#/logout' && window.location.hash != '#/studentattachment') {\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n e.returnValue = 'This will log you out of Tyler SIS 360.\\n\\nTo go Back, choose Stay on this Page and use the Tyler SIS 360 �Back� button � the left-most icon in the top blue bar.';\r\n }\r\n }\r\n });\r\n // this.showOverlay = true; // This was in JS but I'm not sure what it's supposed to do (Justin)\r\n localStorage.userData = sessionStorage.getItem('accessToken');\r\n window.open(legacyUrl + '?LoginFrom360=Y&RedirectToGALDS=Y');\r\n }\r\n }\r\n\r\n AZEdsClick() {\r\n if (this.loginService.LoginSettings.V10) {\r\n this.userService.processADEConnect().pipe(take(1)).subscribe(results => {\r\n if (results != null && results != '') {\r\n if (results.indexOf('Failed:') == -1) {\r\n window.open(results, '_blank');\r\n } else {\r\n const win = window.open('', '_blank');\r\n win.document.write('
' + results + '
');\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n showMenuButton() {\r\n return this.userService.userType.toString() == '1' || !this.router.url.includes('studentSummary');\r\n }\r\n\r\n yearSelected(year: Year) {\r\n if (this.currentUser.UserType == 1 && this.V10 == false) {\r\n const selectedYear = this.yearService.allYears.filter(o => o.Id == year.Id && o.SchoolID == this.selectedSchoolId)[0];\r\n if (selectedYear != null) {\r\n year = selectedYear;\r\n }\r\n }\r\n this.yearService.updateSelectedYear(year);\r\n this.studentService.clearRecentStudents();\r\n this.studentSearchService.resetSearchCriteria();\r\n\r\n if (this.LoginSettings.V10 == false) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = this.yearService.defaultYear.SchoolID;\r\n }\r\n }\r\n\r\n schoolSelected(schoolId: number) {\r\n this.schoolId = schoolId;\r\n this.yearService.updateSelectedSchool(schoolId);\r\n this.studentService.clearRecentStudents();\r\n this.studentSearchService.resetSearchCriteria();\r\n\r\n if (this.LoginSettings.V10 == false) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = this.yearService.defaultYear.SchoolID;\r\n }\r\n }\r\n\r\n getUserName() {\r\n return (this.userService.currentUser != undefined) ? this.userService.currentUser.FirstName + ' ' + this.userService.currentUser.LastName : '';\r\n }\r\n\r\n logoutUser() {\r\n if (this.userService.googleUser && this.userService.googleUser.access_token) {\r\n google.accounts.oauth2.revoke(this.userService.googleUser.access_token);\r\n }\r\n if (this.userLoginFromLegacy == true && this.stopImpersonating == false) {\r\n window.close();\r\n }\r\n else if (this.stopImpersonating == true) {\r\n this.stopImpersonateClick();\r\n }\r\n else {\r\n this.router.navigateByUrl('/logout');\r\n }\r\n }\r\n\r\n setNotificationPreferencesClick() {\r\n this.router.navigateByUrl('/student360/setNotificationPreferences');\r\n }\r\n\r\n changeEmailAddressClick() {\r\n // POST: opens change Email dialog\r\n this.changeEmailDialogRef = this.dialog.open(ChangeEmailComponent, {\r\n minHeight: 325,\r\n minWidth: 400,\r\n disableClose: true\r\n });\r\n }\r\n\r\n changePasswordClick() {\r\n // POST: opens change password dialog\r\n this.ChangePasswordDialogRef = this.dialog.open(ChangePasswordComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n minWidth: 400,\r\n minHeight: 270\r\n });\r\n }\r\n\r\n expandGroup($event: any, portalMenu: PortalMenuItem) {\r\n $event.stopPropagation();\r\n portalMenu.Expanded = portalMenu.Expanded == 1 ? 0 : 1;\r\n }\r\n\r\n menuPortalClick(staffPortal: Portal) {\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n if ((!this.selectedStudent || !this.selectedStudent.Id || this.selectedStudent.Id <= 0)\r\n && staffPortal.PortalName == 'Academic History') {\r\n this.studentSearchClick(staffPortal);\r\n } else if (staffPortal.PortalName == 'Roster Query') {\r\n this.dataQueryService.rosterQuery = true;\r\n if (!this.classroomSummaryService.selectedCourse) {\r\n const dialogBox = this.dialog.open(SelectCourseDialogComponent, {\r\n disableClose: true,\r\n hasBackdrop: false,\r\n panelClass: 'tyl-mat-dialog'\r\n });\r\n const subscription = dialogBox.afterClosed().subscribe(course => {\r\n subscription.unsubscribe();\r\n if (course) {\r\n this.classroomSummaryService.selectedCourse = course;\r\n this.router.navigateByUrl(staffPortal.ParentModule + staffPortal.PortalDescription);\r\n }\r\n });\r\n } else {\r\n this.router.navigateByUrl(staffPortal.ParentModule + staffPortal.PortalDescription);\r\n }\r\n } else {\r\n this.dataQueryService.rosterQuery = false;\r\n let portalDescription = staffPortal.PortalDescription;\r\n if (staffPortal.PortalDescription == '/gradebook') {\r\n portalDescription = (this.loginService.LoginSettings.V10) ? portalDescription + '/V10' : portalDescription + '/V9';\r\n if (this.classroomSummaryService.selectedCourse && this.classroomSummaryService.selectedCourse.MergedForAttendance) {\r\n this.gradebookAccessDeniedDialog = this.dialog.open(GeneralConfirmationComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n this.gradebookAccessDeniedDialog.componentInstance.disableConfirmation = true;\r\n this.gradebookAccessDeniedDialog.componentInstance.headerLabel = 'Access Denied';\r\n this.gradebookAccessDeniedDialog.componentInstance.confirmMessage = 'The gradebook cannot be opened for Merged Attendance Classes';\r\n return;\r\n } else {\r\n this.classroom360Service.gradebookPortalSelected = true;\r\n }\r\n } else if (staffPortal.PortalDescription == '/classroomAttendance' || staffPortal.PortalDescription == 'seatingChart') {\r\n this.classroom360Service.attendancePortalSelected = true;\r\n } else if (staffPortal.PortalDescription == '/classInformation' || staffPortal.PortalDescription == '/classAnnouncements') {\r\n this.classroom360Service.courseInfoPortalSelected = true;\r\n }\r\n this.router.navigateByUrl(staffPortal.ParentModule + portalDescription);\r\n }\r\n }\r\n\r\n studentMenuPortalClick(portal: Portal) {\r\n this.selectedStudent = this.studentService.selectedStudent;\r\n if (this.selectedStudent != null && this.selectedStudent.Id != null && this.selectedStudent.Id > 0) {\r\n this.router.navigateByUrl('/student360' + portal.PortalDescription);\r\n } else {\r\n portal.ParentModule = '/student360';\r\n this.studentSearchClick(portal);\r\n }\r\n }\r\n\r\n addFavoriteClick() {\r\n // POST: Add the current page to favorites and save\r\n // Get the Current URL\r\n const url = this.router.url;\r\n\r\n // Edge case flag: Behavior uses /counselor360/behavior as the parent module rather than /counselor360\r\n const behaviorFlag: boolean = url.startsWith('/counselor360/behavior');\r\n\r\n const urlSeparated: string[] = url.split('/');\r\n if (urlSeparated && urlSeparated.length >= 3) {\r\n let newFavPortalDescription = '';\r\n if (behaviorFlag && urlSeparated.length == 4) {\r\n newFavPortalDescription = '/' + urlSeparated[3];\r\n }\r\n else if (urlSeparated.length == 3 || urlSeparated[2] == 'gradebook') {\r\n newFavPortalDescription = '/' + urlSeparated[2];\r\n }\r\n else {\r\n for (let i = 2; i < urlSeparated.length; i++) {\r\n newFavPortalDescription += '/' + urlSeparated[i];\r\n }\r\n }\r\n let newFavParentModule = '';\r\n if (!behaviorFlag) {\r\n newFavParentModule = '/' + urlSeparated[1];\r\n }\r\n else {\r\n newFavParentModule = '/' + urlSeparated[1] + '/' + urlSeparated[2];\r\n }\r\n let newFavPortal: Portal;\r\n let newFavPortals: Portal[] = this.staffAssignedPortals.filter(portal =>\r\n portal.ParentModule == newFavParentModule &&\r\n portal.PortalDescription == newFavPortalDescription.split('?')[0]\r\n );\r\n // Edge case for Student Summary because the portal description is /home\r\n if (newFavPortals.length == 0 && newFavPortalDescription == '/studentSummary') {\r\n newFavPortals = this.staffAssignedPortals.filter(portal =>\r\n portal.ParentModule == newFavParentModule &&\r\n portal.PortalName == 'Student Summary'\r\n );\r\n }\r\n\r\n if (newFavPortals && newFavPortals.length == 1) {\r\n newFavPortal = newFavPortals[0];\r\n } else {\r\n const descSeparated: string[] = newFavPortalDescription.split('?');\r\n if (descSeparated && descSeparated.length == 2) {\r\n newFavPortal = newFavPortals.find(portal => portal.GroupName.includes('Students'));\r\n } else {\r\n newFavPortal = newFavPortals.find(portal => !portal.GroupName.includes('Students'));\r\n }\r\n }\r\n\r\n\r\n if (newFavPortal) {\r\n if (this.V10) {\r\n const index: number = this.staffAssignedPortals.findIndex(portal =>\r\n portal.ParentModule == newFavPortal.ParentModule &&\r\n portal.PortalDescription == newFavPortal.PortalDescription &&\r\n portal.PortalName == newFavPortal.PortalName &&\r\n portal.GroupName == newFavPortal.GroupName\r\n );\r\n this.staffAssignedPortals[index].IsFavorite = true;\r\n this.classroom360Service.updateStaffAssignedPortals(this.staffAssignedPortals);\r\n this.userPreferencesService.updateFavoritePortals(this.staffAssignedPortals, false).subscribe(data => {\r\n });\r\n this.menuRef.arrangeMenus();\r\n // add DTO call\r\n } else {\r\n const favExists: boolean = this.userPreferencesService.favoritesPreferences.FavoritePortals.filter(favPortal =>\r\n favPortal.Id == newFavPortal.Id\r\n || ((favPortal.Id == null || favPortal.Id == 0)\r\n && favPortal.GroupName == newFavPortal.GroupName\r\n && favPortal.PortalDescription == newFavPortal.PortalDescription.split('?')[0]\r\n && favPortal.PortalModule == newFavPortal.ParentModule)).length != 0;\r\n\r\n if (!favExists) {\r\n // Create the favorite object\r\n const newFav: FavoritePortal = {\r\n ParentPortalName: '',\r\n PortalDescription: newFavPortal.PortalDescription.split('?')[0],\r\n PortalName: newFavPortal.PortalName,\r\n PortalModule: newFavPortal.ParentModule,\r\n GroupName: newFavPortal.GroupName,\r\n Id: newFavPortal.Id\r\n };\r\n\r\n if (this.userPreferencesService.favoritesPreferences.FavoritePortals.indexOf(newFav) == -1) {\r\n this.userPreferencesService.favoritesPreferences.FavoritePortals.push(newFav);\r\n const xmlStream: string[] = [];\r\n const prefs: FavoritePreferences = {\r\n FavoritePortals: this.userPreferencesService.favoritesPreferences.FavoritePortals\r\n };\r\n xmlStream.push(JSON.stringify(prefs));\r\n this.userPreferencesService.saveUserPreferences(0, '/OneSISFavorites', xmlStream, 0, '', false).subscribe(res => {\r\n newFavPortal.Selected = true;\r\n this.menuRef.refreshMenu();\r\n this.menuRef.arrangeMenus();\r\n },\r\n err => {\r\n console.log(err);\r\n }, () => {\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n editFavoriteClick() {\r\n // POST: opens Edit Favorites dialog\r\n if (!this.V10) {\r\n this.menuRef.refreshMenu();\r\n }\r\n this.favoritesDialogRef = this.dialog.open(\r\n FavoritesModalComponent,\r\n {\r\n data: {\r\n editFavorites: true,\r\n staffAssignedPortals: this.staffAssignedPortals\r\n },\r\n width: '30%',\r\n height: '80%',\r\n maxHeight: '80vh',\r\n maxWidth: '30vw'\r\n }\r\n );\r\n\r\n this.favoritesDialogRef.afterClosed().subscribe(result => {\r\n this.menuRef.refreshMenu();\r\n this.menuRef.arrangeMenus();\r\n });\r\n }\r\n\r\n linksClick() {\r\n // POST: Get the links from the user service\r\n const links = _.cloneDeep(this.userService.userLinks());\r\n const tileLinks = _.cloneDeep(this.parentPortalsDeepCopy.filter(p => p.IsMyLinksTile == true));\r\n // if parent or student remove links that are also portals (tiles)\r\n // Links display in the link menu, tiles display in the Links Card\r\n /*if (this.userService.userType !== 1) {\r\n // Filter out duplicate links based on Id\r\n for (let i = links.length - 1; i >= 0; i--) {\r\n const refLink = tileLinks.filter(link => link.Id == links[i].Link_ID);\r\n if (refLink.length > 0) {\r\n links.splice(i, 1);\r\n }\r\n }\r\n }*/\r\n if (links != undefined) {\r\n this.districtLinks = links.filter(link => link.IsDistrictLevel == 'Yes');\r\n this.districtLinks.sort(function (a, b) {\r\n const textA = a.LinkName.toUpperCase();\r\n const textB = b.LinkName.toUpperCase();\r\n return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;\r\n });\r\n this.myLinks = links.filter(link => link.IsDistrictLevel == 'No');\r\n }\r\n }\r\n\r\n linkSelected(link) {\r\n let webAddress = '';\r\n if (link.LinkUrl.toLowerCase().indexOf('http://') == 0) {\r\n webAddress = link.LinkUrl.substring(7);\r\n } else if (link.LinkUrl.toLowerCase().indexOf('https://') == 0) {\r\n webAddress = link.LinkUrl.substring(8);\r\n } else {\r\n webAddress = link.LinkUrl;\r\n }\r\n if (link.OpenAsHTTPS == true) {\r\n webAddress = 'https://' + webAddress;\r\n } else {\r\n webAddress = 'http://' + webAddress;\r\n }\r\n window.open(webAddress, '_blank');\r\n }\r\n\r\n editLinkClick() {\r\n // POST: navigates to links page\r\n this.router.navigateByUrl('/classroom360/links');\r\n }\r\n\r\n addLinkClick() {\r\n // POST: Opens add Link modal\r\n this.addLinkDialogRef = this.dialog.open(AddLinkComponent, {\r\n minWidth: 400,\r\n maxWidth: 400,\r\n minHeight: 300,\r\n disableClose: true\r\n });\r\n }\r\n\r\n studentSearchClick(portal: Portal) {\r\n // POST: opens change Student Search dialog\r\n const redirectUrl = portal ? portal.ParentModule + portal.PortalDescription : '';\r\n let allowedSchools: School[];\r\n if (this.V10 && portal.RequiredPrivilegeIDs) {\r\n const schoolIds = this.securityService.getSchoolIdsFromPermissions(portal.RequiredPrivilegeIDs);\r\n allowedSchools = this.yearService.schools.filter(o => schoolIds.includes(o.Id));\r\n }\r\n this.StudentSearchDialogRef = this.dialog.open(\r\n StudentSearchComponent,\r\n {\r\n data: {\r\n performRoute: true,\r\n searchAndSelect: false,\r\n redirectUrl: redirectUrl,\r\n schools: allowedSchools\r\n },\r\n width: '100%',\r\n height: '100%',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw'\r\n }\r\n );\r\n }\r\n\r\n studentInFocusClick() {\r\n if (this.studentInFocus()) {\r\n this.studentInFocusDialog = this.dialog.open(StudentInFocusComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n }\r\n }\r\n\r\n studentInFocus() {\r\n return this.studentService.selectedStudent;\r\n }\r\n\r\n showLanguageLinks() {\r\n // POST: shows the languages available to the user\r\n this.languageLinkVisible = true;\r\n }\r\n\r\n showUserLinks() {\r\n // POST: shows the default user menu\r\n this.languageLinkVisible = false;\r\n }\r\n\r\n languageClick(language: string) {\r\n // POST: selects a language\r\n this.userService.setUserLanguage(language).subscribe();\r\n }\r\n\r\n openReportsWindow() {\r\n this.reportsDialogRef = this.dialog.open(ReportingComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n });\r\n }\r\n\r\n userPreferencesClick() {\r\n const canContinue = this.guard.checkForDeactivation();\r\n if (canContinue instanceof Observable) {\r\n canContinue.subscribe(clickedOk => {\r\n if (clickedOk) {\r\n this.preferencesClick();\r\n }\r\n });\r\n } else if (canContinue) {\r\n this.preferencesClick();\r\n }\r\n }\r\n\r\n preferencesClick() {\r\n let initialTab: string;\r\n\r\n switch (this.router.url) {\r\n case '/classroom360/cards':\r\n initialTab = 'Classroom Summary';\r\n break;\r\n case '/classroom360/classroomAttendance':\r\n initialTab = 'Attendance';\r\n break;\r\n case '/classroom360/communicationLog':\r\n initialTab = 'Communication Log';\r\n break;\r\n case '/classroom360/dataQuery':\r\n initialTab = 'Data Query';\r\n break;\r\n case '/classroom360/gradebook/V10':\r\n initialTab = 'Gradebook';\r\n break;\r\n case '/classroom360/gradebook/V9':\r\n initialTab = 'Gradebook';\r\n break;\r\n }\r\n\r\n this.userPrefDialogRef = this.dialog.open(UserPreferencesWindowComponent, {\r\n width: '1400px',\r\n height: '810px',\r\n disableClose: true,\r\n data: {\r\n initialTab: initialTab\r\n },\r\n });\r\n this.userPrefDialogRef.componentInstance.staffAssignedPortals = this.staffAssignedPortals;\r\n }\r\n\r\n courseSelected(course: ClassroomSummary) {\r\n this.classroomSummaryService.selectedCourse = course;\r\n }\r\n\r\n courseCategory(category: string) {\r\n if (category == 'gradebook' && (this.router.url == '/classroom360/gradebook/V10' || this.router.url == '/classroom360/gradebook/V9')) {\r\n return true;\r\n } else if (category == 'attendance' && this.router.url == '/classroom360/classroomAttendance') {\r\n return true;\r\n } else if (category == 'general' && this.router.url != '/classroom360/gradebook/V10' && this.router.url != '/classroom360/classroomAttendance' && this.router.url != '/classroom360/gradebook/V9') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getGradebookClasses() {\r\n if (this.V10 == false) {\r\n this.gradebookClasses = this.myClasses.filter(o => o.UsedForGrading == true);\r\n } else if (this.currentUser.UserIsTeacher) {\r\n this.classroomSummaryService.getGradebookAttendanceClasses(true, 0).subscribe((courses) => {\r\n this.gradebookClasses = courses.filter(course => course.UsedForGrading && course.Enrolled > 0);\r\n this.classroomSummaryService.gradebookClasses = this.gradebookClasses;\r\n });\r\n }\r\n }\r\n\r\n getAttendanceClasses() {\r\n if (this.V10 == false) {\r\n this.attendanceClasses = this.myClasses.filter(o => o.AttendanceRequired == true && o.Enrolled > 0);\r\n } else {\r\n this.classroomSummaryService.getGradebookAttendanceClasses(false, 0).subscribe((courses) => {\r\n this.attendanceClasses = courses.filter(course => course.AttendanceRequired && course.Enrolled > 0);\r\n });\r\n }\r\n }\r\n\r\n teacherProfileClick() {\r\n this.router.navigateByUrl('/classroom360/teacherProfile');\r\n }\r\n\r\n mealServiceClick() {\r\n this.router.navigateByUrl('/classroom360/staffMealService');\r\n }\r\n\r\n getPageInfo(url: string) {\r\n if (url.includes('?')) {\r\n url = url.substring(0, url.indexOf('?'));\r\n }\r\n const pageInfo = RouteInfo.pages.filter(function (page) {\r\n return page.Url == url;\r\n })[0];\r\n\r\n if (pageInfo) {\r\n this.showSchoolDropdown = pageInfo.ShowSchoolDropdown;\r\n if (pageInfo.ShowYearDropdown) {\r\n if (typeof (pageInfo.ShowYearDropdown) == 'boolean') {\r\n this.showYearDropdown = pageInfo.ShowYearDropdown;\r\n } else {\r\n this.showYearDropdown = pageInfo.ShowYearDropdown(this.loginService.LoginSettings.V10, this.sharedService.currentUrl.includes('classroom360'));\r\n }\r\n } else {\r\n this.showYearDropdown = false;\r\n }\r\n this.enableClassDropdown = pageInfo.RequiredCourse;\r\n if (pageInfo.DisableYearDropdown) {\r\n if (typeof (pageInfo.DisableYearDropdown) == 'boolean') {\r\n this.disableYearDropdown = pageInfo.DisableYearDropdown;\r\n } else {\r\n this.disableYearDropdown = pageInfo.DisableYearDropdown(this.loginService.LoginSettings.V10, this.sharedService.currentUrl.includes('classroom360'));\r\n }\r\n } else {\r\n this.disableYearDropdown = false;\r\n }\r\n if (pageInfo.HidePrintButton) {\r\n if (typeof (pageInfo.HidePrintButton) == 'boolean') {\r\n this.hidePrintButton = pageInfo.HidePrintButton;\r\n } else {\r\n this.hidePrintButton = false;\r\n }\r\n } else {\r\n this.hidePrintButton = false;\r\n }\r\n if (this.currentUser.UserType == 1 && this.router.url.indexOf('/student360') > -1 && this.router.url.indexOf('/scheduleHistory/multipleStudent') < 0) {\r\n this.disableYearDropdown = true;\r\n }\r\n this.screenWidth = screen != null ? screen.width : 0;\r\n this.windowWidth = window != null ? window.innerWidth : 0;\r\n }\r\n else if (url.toLowerCase().indexOf('/student360') < 0) {\r\n this.showSchoolDropdown = true;\r\n this.showYearDropdown = true;\r\n this.disableYearDropdown = false;\r\n }\r\n }\r\n\r\n getUserPermission() {\r\n if (this.currentUser.ActiveDirectoryUser == true) {\r\n this.showChangePassword = false;\r\n } else if (this.currentUser.UserType == 3) {\r\n this.showChangePassword = this.LoginSettings.AllowStudentsToChangeTheirPassword;\r\n } else if (this.currentUser.UserType == 1) {\r\n if (this.LoginSettings.StaffUserUseADPassword == true || this.LoginSettings.ActivateGoogleAuthenticationForStaff == true) {\r\n this.showChangePassword = false;\r\n } else {\r\n if (this.securityService.userPermissions.filter(o => o.PermissionCode == 'GO_DNATCOP').length > 0) {\r\n this.showChangePassword = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n helpClick() {\r\n window.open('./assets/Help/Student%20360%20Help.pdf', '_blank');\r\n }\r\n\r\n getUserLoginFromLegacy() {\r\n this.stopImpersonating = false;\r\n this.impersonateByUserId = 0;\r\n if (sessionStorage.getItem('loginFromLegacy') != null && sessionStorage.getItem('loginFromLegacy') == '1') {\r\n this.userLoginFromLegacy = true;\r\n this.userService.getImpersonateByUser().subscribe((results) => {\r\n this.impersonateByUserId = results;\r\n if (!this.V10) {\r\n if (this.impersonateByUserId > 0 && this.currentUser.UserType == 1 && sessionStorage.getItem('ClassicLoginAttempt') == null) {\r\n this.stopImpersonating = true;\r\n }\r\n if (this.impersonateByUserId == 0 && this.currentUser.UserType == 1 && sessionStorage.getItem('impersonateUseraccessToken') != null && sessionStorage.getItem('ClassicLoginAttempt') == null) {\r\n this.userLoginFromLegacy = false;\r\n sessionStorage.removeItem('loginFromLegacy');\r\n }\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n getPulseList() {\r\n if (this.LoginSettings.V10 && this.LoginSettings.PulseURL != null && this.LoginSettings.PulseURL.length > 0) {\r\n const pulsePageList = [];\r\n const pulseFavoriteList = [];\r\n this.sharedService.createPulseKey('${getpagelist}', '', false).subscribe((results) => {\r\n const pulseKey = results;\r\n let pulseUrl = (this.LoginSettings.PulseURL.slice(-1) == '/') ? this.LoginSettings.PulseURL + 'pulserouter.aspx?pulseloginkey=' : this.LoginSettings.PulseURL + '/pulserouter.aspx?pulseloginkey=';\r\n pulseUrl = pulseUrl + pulseKey;\r\n $.getJSON(pulseUrl, (json) => {\r\n const staticPulsePages = json.PulsePages;\r\n const favoritePulsePages = json.FavoritePages;\r\n if (staticPulsePages != undefined) {\r\n const staticPages = Object.keys(staticPulsePages).map(e => staticPulsePages[e]);\r\n for (const page of staticPages) {\r\n pulsePageList.push(page);\r\n }\r\n this.pulsePageList = pulsePageList;\r\n }\r\n if (favoritePulsePages != undefined) {\r\n const favoritePages = Object.keys(favoritePulsePages).map(e => favoritePulsePages[e]);\r\n for (const page of favoritePages) {\r\n pulseFavoriteList.push(page);\r\n }\r\n this.pulseFavoriteList = pulseFavoriteList;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n pulseLinkClick(page: string) {\r\n const createPKey = (pulseWindow) => {\r\n this.sharedService.createPulseKey(page, '', false).subscribe((results) => {\r\n const pulseKey = results;\r\n let pulseUrl = (this.LoginSettings.PulseURL.slice(-1) == '/') ? this.LoginSettings.PulseURL + 'pulserouter.aspx?pulseloginkey=' : this.LoginSettings.PulseURL + '/pulserouter.aspx?pulseloginkey=';\r\n pulseUrl = pulseUrl + pulseKey;\r\n pulseWindow.location = pulseUrl;\r\n });\r\n };\r\n\r\n if (this.pulseWindow != null) {\r\n if (!this.pulseWindow.closed) {\r\n this.pulseWindow.focus();\r\n createPKey(this.pulseWindow);\r\n return;\r\n }\r\n }\r\n this.pulseWindow = window.open('', '_blank');\r\n createPKey(this.pulseWindow);\r\n }\r\n\r\n showFavorites(event) {\r\n this.favoritesShown = true;\r\n }\r\n\r\n printClick() {\r\n // const pagePrintStyle: string = RouteInfo.getPagePrintStyle(this.router.url);\r\n if (this.router.url.indexOf('classroom360/seatingChart') > 0) {\r\n const pagePrintStyle: string = RouteInfo.getPagePrintStyle(this.router.url);\r\n const styleURLs: string[] = ['./assets/styles/print-styles.css'];\r\n if (pagePrintStyle) {\r\n styleURLs.push(pagePrintStyle);\r\n }\r\n this.spinnerService.showSpinner = true;\r\n // Timeout is needed to allow the spinner to show before the print preview load takes priority\r\n setTimeout(() => {\r\n printJS({\r\n printable: 'print-content',\r\n documentTitle: 'OneSIS',\r\n type: 'html',\r\n css: styleURLs,\r\n ignoreElements: ['print-ignore'],\r\n targetStyles: ['*'],\r\n maxWidth: 1500\r\n });\r\n this.spinnerService.showSpinner = false;\r\n }, 500);\r\n } else {\r\n // Timeout is needed to allow the spinner to show before the print preview load takes priority\r\n setTimeout(() => {\r\n this.sharedService.pageToPdfTrigger = !this.sharedService.pageToPdfTrigger;\r\n }, 0);\r\n }\r\n\r\n }\r\n\r\n aboutTylerSISClick() {\r\n this.aboutTylerSISDialog = this.dialog.open(AboutPanelComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n width: '600px',\r\n disableClose: true\r\n });\r\n }\r\n\r\n documentationClick() {\r\n let url = '';\r\n if (this.router.url.indexOf('gradebook') == -1) {\r\n url = this.router.url.substr(this.router.url.lastIndexOf('/'));\r\n } else {\r\n url = (this.LoginSettings.V10) ? '/gradebookV10' : '/classroomgradebook';\r\n }\r\n this.helpContextId = url + '_' + this.LoginSettings.OneSISVersion + '_';\r\n this.helpContextId = (this.LoginSettings.V10) ? this.helpContextId + 'V10' : this.helpContextId + 'V9';\r\n const helpButton = $('#buttonHelp')[0];\r\n setTimeout(() => {\r\n helpButton.click();\r\n }, 0);\r\n }\r\n\r\n trainingClick() {\r\n window.open('https://support.sisk12.com/training/eventsummarysched.asp?eventtype=sisk12', '_blank');\r\n }\r\n\r\n homeClick() {\r\n if (this.currentUser.UserType == 1 && this.LoginSettings.ActivateClassroom360 && this.userLoginFromLegacy == false) {\r\n if (this.studentService.selectedStudent) {\r\n this.getUserYears();\r\n }\r\n this.router.navigateByUrl('/classroom360/cards');\r\n } else if (this.currentUser.UserType == 1 && this.userLoginFromLegacy == true) {\r\n if (this.studentService.selectedStudent) {\r\n this.getUserYears();\r\n }\r\n this.router.navigateByUrl('/classroom360/cards');\r\n } else {\r\n this.router.navigateByUrl('/student360/studentSummary');\r\n }\r\n }\r\n\r\n getUserYears() {\r\n this.yearService.getUserYears(this.userService.currentUser.Id, this.userService.currentUser.UserType, this.userService.studentId).subscribe(years => {\r\n this.yearService.loadYears(years);\r\n this.yearService.years = years;\r\n let school = this.yearService.defaultYear.SchoolID == 0 ? this.schoolId : this.yearService.defaultYear.SchoolID;\r\n school = school == 0 ? this.userService.currentUser.LoginSchoolId : school;\r\n this.years = years.filter(year => year.SchoolID == school);\r\n this.schools = _.sortBy(this.yearService.schools, ['SchoolCode', 'SchoolName']);\r\n if (this.yearService.defaultYear) {\r\n this.selectedYear = this.years.filter(o => o.Id == this.yearService.defaultYear.Id)[0];\r\n this.selectedSchoolId = school;\r\n }\r\n });\r\n }\r\n\r\n addEditLinkPrivilege(): boolean {\r\n if (this.V10) {\r\n return this.securityService.userPermissions.filter(p => p.PrivilegeId == 1987).length > 0;\r\n }\r\n else if (this.currentUser.UserType == 1) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n this.windowWidth = window != null ? window.innerWidth : 0;\r\n }\r\n\r\n // switch back to impersonate\r\n stopImpersonateClick() {\r\n sessionStorage.removeItem('accessToken');\r\n sessionStorage.removeItem('loginFromLegacy');\r\n if (!this.V10 && this.impersonateByUserId > 0 && this.currentUser.UserType == 1 && sessionStorage.getItem('impersonateUseraccessToken') != null) {\r\n const index = window.location.href.indexOf('/classroom360/cards');\r\n const url = window.location.href.substr(0, index);\r\n this.fn_RedirectTo360(url + '/login', sessionStorage.getItem('impersonateUseraccessToken'), 'StudentId:0');\r\n }\r\n\r\n }\r\n fn_RedirectTo360(tylerSisUrl, accessToken, action) {\r\n if (accessToken != '') {\r\n try { action = window.btoa(action); } catch (e) { }\r\n const url: any = tylerSisUrl + '?Action=' + action;\r\n const win = window.open(url, '_self');\r\n win.sessionStorage.setItem('accessToken', accessToken);\r\n\r\n }\r\n else {\r\n console.log('fn_RedirectFail');\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n
","import { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { Component, HostListener, AfterViewInit, OnInit, OnDestroy } from '@angular/core';\r\nimport { SharedService } from '../shared.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoaderService } from './loader-service.component';\r\nimport { SpinnerService } from './spinner.service';\r\n\r\n@AutoUnsubscribe()\r\n@Component({\r\n selector: 'spinner',\r\n templateUrl: './spinner.component.html'\r\n})\r\nexport class SpinnerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n color = 'primary';\r\n mode = 'indeterminate';\r\n value = 50;\r\n pageWidthCenter = 0;\r\n pageHeightCenter = 0;\r\n hideSpinner: boolean;\r\n hideSpinnerSubscription: Subscription;\r\n showSpinner: boolean;\r\n showSpinnerSharedSubscription: Subscription;\r\n showSpinnerSubscription: Subscription;\r\n loading = false;\r\n loadingChain = [];\r\n\r\n constructor(\r\n private sharedService: SharedService,\r\n private loaderService: LoaderService,\r\n private spinnerService: SpinnerService) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n setTimeout(() => {\r\n this.pageWidthCenter = window.innerWidth / 2 - 50;\r\n this.pageHeightCenter = window.innerHeight / 2 - 50;\r\n }, 0);\r\n }\r\n\r\n ngOnInit() {\r\n this.showSpinnerSharedSubscription = this.sharedService.observableShowSpinnerStream$.subscribe(\r\n data => {\r\n setTimeout(() => {\r\n this.showSpinner = data;\r\n }, 0);\r\n }\r\n );\r\n this.hideSpinnerSubscription = this.spinnerService.observableHideSpinnerStream$.subscribe(result => {\r\n this.hideSpinner = result;\r\n });\r\n this.showSpinnerSubscription = this.spinnerService.observableShowSpinnerStream$.subscribe(result => {\r\n this.showSpinner = result;\r\n });\r\n\r\n this.loaderService.isLoading.subscribe(result => {\r\n this.loadingChain.push(result);\r\n setTimeout(() => {\r\n this.loadingChain.pop();\r\n if (this.loadingChain.length == 0) {\r\n this.loading = result;\r\n }\r\n }, 0);\r\n });\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n ngAfterViewInit() {\r\n this.onResize();\r\n }\r\n}","\r\n

\r\n \"Loading\r\n

\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n","import { Router, NavigationEnd, NavigationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel } from '@angular/router';\r\nimport {Component, OnInit, TemplateRef, ViewChild, SecurityContext, HostListener} from '@angular/core';\r\nimport { LoginService } from './shared-modules/login/login.service';\r\nimport { LoginSettings } from './shared-modules/login/loginSetting.model';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { SharedService } from './shared-components/shared.service';\r\nimport { Subscription } from '../../node_modules/rxjs';\r\nimport { UserService } from './shared-components/user/user.service';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { InactivityTimeoutComponent } from './shared-modules/login/inactivity-timeout/inactivity-timeout.component';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { AppInsights } from 'applicationinsights-js';\r\nimport * as moment from 'moment';\r\nimport Quill from 'quill';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent implements OnInit {\r\n title = 'Tyler SIS';\r\n LoginSettings: LoginSettings;\r\n showAppHeader = true;\r\n showAppHeaderSubscription: Subscription;\r\n showLoadingImage = true;\r\n public usertype = 0;\r\n currentUserSubscription: Subscription;\r\n loginSubscription: Subscription;\r\n appTimeout: number;\r\n idleTimeout: any;\r\n inactivityDialog: MatDialogRef;\r\n @ViewChild('snav') sidenav: MatSidenav;\r\n startViewTime;\r\n\r\n // TODO: make a district setting for this\r\n tracking = false;\r\n\r\n constructor(\r\n private userService: UserService,\r\n private loginService: LoginService,\r\n private translateService: TranslateService,\r\n private sharedService: SharedService,\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private sanitizer: DomSanitizer\r\n ) {\r\n this.translateService.setDefaultLang('en');\r\n this.translateService.use('en');\r\n this.showAppHeader = sharedService.showAppHeader;\r\n this.showAppHeaderSubscription = sharedService.observableShowAppHeaderStream$.subscribe(\r\n showHeader => {\r\n this.showAppHeader = showHeader;\r\n }\r\n );\r\n\r\n this.loginSubscription = this.loginService.observableLoginStream$.subscribe(() => {\r\n this.setTimeoutSettings();\r\n this.resetIdleTimeout();\r\n });\r\n }\r\n\r\n get showFilter(): boolean {\r\n return this.sharedService.showFilter;\r\n }\r\n\r\n get filterTemplate(): TemplateRef {\r\n return this.sharedService.filterTemplate;\r\n }\r\n\r\n ngOnInit() {\r\n this.getDistrictSettings();\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart || event instanceof GuardsCheckEnd) {\r\n this.sharedService.updateShowSpinner(true);\r\n }\r\n if (event instanceof NavigationCancel || event instanceof GuardsCheckStart) {\r\n this.sharedService.updateShowSpinner(false);\r\n }\r\n if (event instanceof NavigationEnd) {\r\n this.startViewTime = moment();\r\n this.sharedService.updateShowSpinner(false);\r\n }\r\n });\r\n\r\n this.addOverlayClickListener();\r\n this.currentUserSubscription = this.userService.observableCurrentUserStream$\r\n .subscribe(data => {\r\n this.usertype = data.UserType;\r\n });\r\n this.configureLinksForQuill();\r\n }\r\n\r\n addOverlayClickListener() {\r\n document.addEventListener('click', function (e) {\r\n if (e.target['className'] != undefined) {\r\n const tempString: any = e.target['className']; // sometimes e.target is an SVGAnimatedString which does not have a method \"includes\"\r\n if ((tempString.includes && tempString.includes('cdk-overlay-backdrop') && !tempString.includes('cdk-overlay-backdrop-showing'))) {\r\n const ev = document.createEvent('MouseEvent');\r\n const el = document.elementFromPoint(e.x, e.y);\r\n ev.initMouseEvent(\r\n 'click',\r\n true /* bubble */, true /* cancelable */,\r\n window, null,\r\n e.x, e.y, 0, 0, /* coordinates */\r\n false, false, false, false, /* modifier keys */\r\n 0 /*left*/, null\r\n );\r\n el.dispatchEvent(ev);\r\n }\r\n }\r\n });\r\n }\r\n\r\n getDistrictSettings(): void {\r\n this.loginService.getDistrictSettings().subscribe(data => {\r\n this.LoginSettings = data;\r\n this.loginService.LoginSettings = data;\r\n this.showLoadingImage = false;\r\n this.appTimeout = this.LoginSettings.TimeoutTime - 1;\r\n this.tracking = data.ActivateApplicationMonitoring;\r\n\r\n // Initializing App Insights\r\n if (this.tracking) {\r\n AppInsights.downloadAndSetup({\r\n instrumentationKey: 'b1cb9a66-3819-467f-960c-1d9be59bc330'\r\n });\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart && this.startViewTime && this.tracking) {\r\n const urlParts = window.location.href.split('/');\r\n const pageName = urlParts[urlParts.length - 1];\r\n AppInsights.trackPageView(\r\n pageName, /* (optional) page name */\r\n window.location.href.toLowerCase(), /* (optional) page url if available */\r\n { }, /* (optional) dimension dictionary */\r\n { }, /* (optional) metric dictionary */\r\n moment().diff(this.startViewTime) /* page view duration in milliseconds */\r\n );\r\n }\r\n });\r\n } else {\r\n AppInsights.disableTelemetry = true;\r\n }\r\n });\r\n }\r\n\r\n setCurrentComponent(component) {\r\n this.sharedService.currentComponent = component;\r\n }\r\n\r\n closeSideNav() {\r\n this.sidenav.close();\r\n }\r\n\r\n setTimeoutSettings() {\r\n ['click', 'touchstart', 'mousemove'].forEach(evt =>\r\n document.addEventListener(evt, this.resetIdleTimeout.bind(this), false)\r\n );\r\n }\r\n\r\n resetIdleTimeout() {\r\n if (this.idleTimeout) {\r\n clearTimeout(this.idleTimeout);\r\n }\r\n this.idleTimeout = setTimeout(() => this.showTimeoutModal(), this.appTimeout * 60000);\r\n }\r\n\r\n showTimeoutModal() {\r\n this.inactivityDialog = this.dialog.open(InactivityTimeoutComponent, { panelClass: 'tyl-mat-dialog' });\r\n this.inactivityDialog.componentInstance.inactiveTime = this.appTimeout;\r\n this.inactivityDialog.componentInstance.resetTimeout.subscribe(() => {\r\n this.resetIdleTimeout();\r\n });\r\n }\r\n\r\n configureLinksForQuill() {\r\n const Link = Quill.import('formats/link');\r\n Link.sanitize = url => {\r\n if (!url.startsWith('http:') && !url.startsWith('https:') && !url.startsWith('mailto:') && !url.startsWith('tel:')) {\r\n url = 'http://' + url;\r\n }\r\n return this.sanitizer.sanitize(SecurityContext.HTML, url);\r\n };\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onEnterKeyDown(event: KeyboardEvent) {\r\n // PRE: The user presses a key\r\n // POST: Performs actions based on that key\r\n\r\n // CTRL + SHIFT + G generates error for testing\r\n if (event.key.toLowerCase() == 'g' && event.ctrlKey && event.shiftKey) {\r\n this.sharedService.generateError().subscribe();\r\n }\r\n }\r\n}\r\n","\r\n

Problem Encountered

\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Date{{currentDate | date: 'MM/dd/yy h:mm a'}}
User{{user}}
URL{{fullPath}}
\r\n Something unexpected has occurred and details have been logged.\r\n
\r\n Please report this to your district SIS Coordinator or helpdesk.\r\n
\r\n
\r\n
Program
\r\n
{{programName}}
\r\n
\r\n
Message
\r\n
{{message}}
\r\n
\r\n
Stack Trace
\r\n
{{stackTrace}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n","import {Component, OnInit, HostListener, Inject} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {SharedService} from '../shared.service';\r\nimport {LocationStrategy} from '@angular/common';\r\nimport {UserService} from '../user/user.service';\r\n\r\n@Component({\r\n selector: 'app-error-dialog',\r\n templateUrl: './error-dialog.component.html'\r\n})\r\nexport class ErrorDialogComponent implements OnInit {\r\n\r\n // Injected Properties\r\n apiCall: string\r\n\r\n // Local Properties\r\n user: string;\r\n fullPath: string;\r\n programName: string;\r\n message: string;\r\n stackTrace: string;\r\n showErrorDetails = false;\r\n currentDate: Date = new Date();\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private sharedService: SharedService,\r\n private userService: UserService,\r\n private dialogRef: MatDialogRef,\r\n private location: LocationStrategy\r\n ) {}\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n if (event.keyCode == 69 && event.ctrlKey && event.shiftKey) {\r\n this.sharedService.getErrorDetails(this.userService.userId, this.apiCall).subscribe(errorDetail => {\r\n if (errorDetail != undefined || errorDetail != null) {\r\n this.showErrorDetails = true;\r\n const substrings = errorDetail.split('||');\r\n this.programName = substrings[0];\r\n this.message = substrings[1];\r\n this.stackTrace = substrings[2];\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.fullPath = (this.location)._platformLocation.location.href;\r\n this.user = this.userService.username;\r\n if (this.data && this.data.apiCall) {\r\n this.apiCall = this.data.apiCall;\r\n }\r\n }\r\n\r\n closeClick() {\r\n this.dialogRef.close('Close was clicked.');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpResponse,\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from './loader-service.component';\r\nimport { ErrorDialogComponent } from '../error-dialog/error-dialog.component';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { UserService } from '../user/user.service';\r\nimport { SharedService } from '../shared.service';\r\nimport { Router } from '@angular/router';\r\nimport { LoginService } from '../../shared-modules/login/login.service';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n\r\n public static ExcludedURLs = [\r\n 'GetLoginDistrictSettings',\r\n 'track',\r\n 'json',\r\n 'CheckBroadcast',\r\n 'CheckNotifications',\r\n 'GetDataQueryNextPage',\r\n 'GetGradebookV9StudentMarksByStudentId',\r\n 'GetParentNotificationCount',\r\n 'GetParentNotificationPage',\r\n 'GetMassEmailLogCount',\r\n 'GetMassEmailLogPage',\r\n 'GetReportEmailNotificationPage',\r\n 'GetReportEmailNotificationCount',\r\n 'CheckClassAutoSchedulerBatch'\r\n ];\r\n public static ExcludedURLsV10 = [\r\n 'GetBehaviorEvents',\r\n 'GetBehaviorEventCount'\r\n ];\r\n public static IgnoreErrors = [\r\n 'CheckBroadcast',\r\n 'CheckNotifications'\r\n ];\r\n\r\n private requests: HttpRequest[] = [];\r\n public errorDialogRef: MatDialogRef;\r\n\r\n constructor(\r\n private loaderService: LoaderService,\r\n private dialog: MatDialog,\r\n private userService: UserService,\r\n private sharedService: SharedService,\r\n private router: Router,\r\n private loginService: LoginService\r\n ) {\r\n\r\n // This is in case of weird timing errors\r\n setInterval(() => {\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }, 10000);\r\n }\r\n\r\n removeRequest(req: HttpRequest) {\r\n const i = this.requests.indexOf(req);\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n\r\n }\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n intercept(nextReq: HttpRequest, next: HttpHandler): Observable> {\r\n // prevent Edge from serving cached api calls\r\n let req = nextReq;\r\n if (nextReq.url.indexOf('/AppApi') >= 0) {\r\n req = req.clone({\r\n headers: req.headers.set('Cache-Control', 'no-cache')\r\n .set('Pragma', 'no-cache')\r\n .set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT')\r\n .set('If-Modified-Since', '0')\r\n });\r\n }\r\n\r\n if (!this.cardRetrieval(req.url)\r\n && !LoaderInterceptor.ExcludedURLs.find(excludedURL => req.url.includes(excludedURL))\r\n && (!this.loginService.LoginSettings || !this.loginService.LoginSettings.V10 || !LoaderInterceptor.ExcludedURLsV10.find(excludedURL => req.url.includes(excludedURL)))\r\n ) {\r\n this.requests.push(req);\r\n this.loaderService.isLoading.next(true);\r\n }\r\n else {\r\n this.removeRequest(req);\r\n }\r\n return Observable.create(observer => {\r\n const subscription = next.handle(req)\r\n .subscribe(\r\n event => {\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(req);\r\n observer.next(event);\r\n }\r\n },\r\n err => {\r\n this.removeRequest(req);\r\n observer.error(err);\r\n if (!LoaderInterceptor.IgnoreErrors.find(ignoredURL => req.url.includes(ignoredURL))) {\r\n if (err.error != undefined && err.error.Message == 'Authorization has been denied for this request.') {\r\n this.dialog.closeAll();\r\n this.router.navigate(['']);\r\n }\r\n if (err.error != undefined && err.error.Message == 'An error has occurred.' && !this.errorDialogRef) {\r\n this.sharedService.updateShowSpinner(false);\r\n if (this.userService.username != null || this.userService.username != '') {\r\n this.errorDialogRef = this.dialog.open(ErrorDialogComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true,\r\n data: {\r\n apiCall: req.url\r\n }\r\n });\r\n this.errorDialogRef.afterClosed().subscribe(data => {\r\n this.errorDialogRef = undefined;\r\n });\r\n }\r\n }\r\n }\r\n },\r\n () => { this.removeRequest(req); observer.complete(); });\r\n // teardown logic in case of cancelled requests\r\n return () => {\r\n this.removeRequest(req);\r\n subscription.unsubscribe();\r\n };\r\n });\r\n }\r\n\r\n cardRetrieval(serviceName) {\r\n if (this.router.url == '/classroom360/cards') {\r\n if (serviceName.includes('GetMyClasses')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('GetAbsenceByCourseCard')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('GetSchoolsTodayCard')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('GetRecentBehaviorCard')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('getMyLinks')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('GetProgramEnrollmentCard')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('GetStaffTeamsCard')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('GetStaffWorkCard')) {\r\n return true;\r\n }\r\n else if (serviceName.includes('GetEFormSurveysForStaffCard')) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc\n */\nclass TranslateHttpLoader {\n /**\n * @param {?} http\n * @param {?=} prefix\n * @param {?=} suffix\n */\n constructor(http, prefix = \"/assets/i18n/\", suffix = \".json\") {\n this.http = http;\n this.prefix = prefix;\n this.suffix = suffix;\n }\n /**\n * Gets the translations from the server\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n return this.http.get(`${this.prefix}${lang}${this.suffix}`);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc\n */\n\nexport { TranslateHttpLoader };\n\n","

PROCESS FAILED

\r\n\r\n
We were unable to contact the server to complete this process.
\r\n
This may be because your internet connection was interrupted or there may be a problem with the server.
\r\n
When the connection is reestablished this message will change.
\r\n \r\n
CONNECTION RESTORED
\r\n
The connection has been reestablished
\r\n
You may encounter strange behavior within the program as a result of the connection loss. If so,
\r\n logging out and back in should get things back to normal.\r\n
\r\n
Do you want to log out and back in now?
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { SharedService } from '../shared.service';\r\n\r\n@Component({\r\n selector: 'app-no-internet-connection-modal',\r\n templateUrl: './no-internet-connection-modal.component.html',\r\n styleUrls: ['./no-internet-connection-modal.component.css']\r\n})\r\nexport class NoInternetConnectionModalComponent implements OnInit {\r\n\r\n public connectionRestored = false;\r\n constructor(\r\n private dialogRef: MatDialogRef,\r\n private sharedService: SharedService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeClick() {\r\n this.hideSpinner();\r\n this.dialogRef.close();\r\n }\r\n\r\n logOutClick() {\r\n window.location.reload();\r\n }\r\n\r\n hideSpinner() {\r\n this.sharedService.updateShowSpinner(false);\r\n }\r\n\r\n}\r\n","import { ErrorHandler, Injectable, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef, MatDialog } from '@angular/material/dialog';\r\nimport { NoInternetConnectionModalComponent } from './shared-components/no-internet-connection-modal/no-internet-connection-modal.component';\r\nimport { AppInsights } from 'applicationinsights-js';\r\nimport { System } from './shared-components/System';\r\nimport { timer, Subscription } from 'rxjs';\r\nimport { AutoUnsubscribe } from 'ngx-auto-unsubscribe';\r\nimport { LoginService } from './shared-modules/login/login.service';\r\n\r\n@AutoUnsubscribe({ includeArrays: true })\r\n@Injectable()\r\nexport class ErrorsHandler implements ErrorHandler, OnDestroy {\r\n\r\n public noInternetDialogRef: MatDialogRef;\r\n private checkingNetworkConnection = false;\r\n private continuousChecking = false;\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(private dialog: MatDialog, private loginService: LoginService) {\r\n this.subscriptions.push(loginService.observableLoginErrorStream$.subscribe(err => {\r\n this.handleError(err);\r\n }));\r\n }\r\n\r\n handleError(error: Error) {\r\n console.error(error);\r\n\r\n if (!this.noInternetDialogRef && !this.checkingNetworkConnection) {\r\n // Server or connection error happened\r\n if (!navigator.onLine) {\r\n this.showNoInternetModal();\r\n } else {\r\n if (!this.noInternetDialogRef) {\r\n this.checkingNetworkConnection = true;\r\n if (this.canContactServer(4)) {\r\n }\r\n else {\r\n this.showNoInternetModal();\r\n }\r\n this.checkingNetworkConnection = false;\r\n }\r\n }\r\n }\r\n\r\n // Tracking exception\r\n if (!AppInsights.disableTelemetry) {\r\n AppInsights.trackException(error);\r\n }\r\n }\r\n\r\n canContactServer(numberOfTriesLeft: number): boolean {\r\n if (numberOfTriesLeft > 0) {\r\n const xhr = new XMLHttpRequest();\r\n let url = System.baseUrl;\r\n if (window.location.hostname == 'localhost') {\r\n url = window.location.hostname;\r\n }\r\n\r\n // Open new request as a HEAD to the root hostname with a random param to bust the cache\r\n xhr.open('HEAD', url + '?rand=' + Math.floor((1 + Math.random()) * 0x10000), false);\r\n\r\n // Issue request and handle response\r\n try {\r\n xhr.send();\r\n if (xhr.status >= 200 && (xhr.status < 300 || xhr.status === 304)) {\r\n this.continuousChecking = false;\r\n if (this.noInternetDialogRef) {\r\n this.noInternetDialogRef.componentInstance.hideSpinner();\r\n this.noInternetDialogRef.componentInstance.connectionRestored = true;\r\n }\r\n return true; // success\r\n }\r\n else {\r\n return this.canContactServer(numberOfTriesLeft - 1); // failed - try again - could be transient failure\r\n }\r\n } catch (error) {\r\n return this.canContactServer(numberOfTriesLeft - 1); // failed - try again - could be transient failure\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n showNoInternetModal() {\r\n if (!this.noInternetDialogRef && window.location.pathname.indexOf('login') < 0) {\r\n this.continuousChecking = true;\r\n const timerSubscription = timer(5000, 5000).subscribe(x => {\r\n if (this.continuousChecking) {\r\n if (this.canContactServer(3)) {\r\n timerSubscription.unsubscribe();\r\n }\r\n }\r\n else {\r\n timerSubscription.unsubscribe();\r\n }\r\n });\r\n this.subscriptions.push(timerSubscription);\r\n this.noInternetDialogRef = this.dialog.open(NoInternetConnectionModalComponent, {\r\n panelClass: 'tyl-mat-dialog',\r\n disableClose: true\r\n });\r\n this.noInternetDialogRef.componentInstance.hideSpinner();\r\n this.noInternetDialogRef.afterClosed().subscribe(data => {\r\n this.noInternetDialogRef = undefined;\r\n this.continuousChecking = false;\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() { }\r\n}\r\n","import { LoginModule } from './shared-modules/login/login.module';\nimport { NewFamilyRegistrationGuard } from './shared-components/guards/new-family-registration/new-family-registration.guard';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NgModule, ErrorHandler } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\nimport { AppRoutingModule } from './app-routing.module';\nimport { httpInterceptorProviders } from '.';\nimport { SharedComponentsModule } from './shared-components/shared-components.module';\nimport { AuthGuard } from './auth.guard';\nimport { AppComponent } from './app.component';\nimport { LoginService } from './shared-modules/login/login.service';\nimport { HeaderComponent } from './shared-components/header/header.component';\nimport { UserService } from './shared-components/user/user.service';\nimport { YearService } from './shared-components/year/year.service';\nimport { MaterialModule } from './shared-components/angular-material/material.module';\nimport { StudentService } from './shared-components/student/student.service';\nimport { UserPreferencesService } from './shared-components/user-preferences/user-preferences.service';\nimport { UnsavedChangesMessageComponent } from './shared-components/guards/unsaved-changes/unsaved-changes-message/unsaved-changes-message.component';\nimport { UnsavedChangesGuard } from './shared-components/guards/unsaved-changes/unsaved-changes.guard';\nimport { TranslateModule, TranslateLoader, TranslateService, MissingTranslationHandler } from '@ngx-translate/core';\nimport { Student360Service } from './student360/student360.service';\nimport { SharedService } from './shared-components/shared.service';\nimport { Classroom360Service } from './classroom360/classroom360.service';\nimport { LoaderService } from './shared-components/spinner/loader-service.component';\nimport { LoaderInterceptor } from './shared-components/spinner/loader-intercept.component';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { CheckForErrorsGuard } from './shared-components/guards/check-for-errors/check-for-errors.guard';\nimport { CheckForErrorsMessageComponent } from './shared-components/guards/check-for-errors/check-for-errors-message/check-for-errors-message.component';\nimport { ReportingModule } from './shared-modules/reporting/reporting.module';\nimport { ReportingService } from './shared-modules/reporting/reporting.service';\nimport { UserPreferencesWindowComponent } from './shared-components/user-preferences/user-preferences-window/user-preferences-window.component';\nimport { ClassroomSummaryService } from './classroom360/classroom-summary/classroom-summary.service';\nimport { StartOverDialogComponent } from './shared-components/startover-dialog/start-over-dialog.component';\nimport { OrderModule } from 'ngx-order-pipe';\nimport { ExportService } from './shared-components/export.service';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SecurityService } from './shared-components/security/security.service';\nimport { MyMissingTranslationHandler } from './shared-modules/translation/missing-translation-handler.component';\nimport { LogoutComponent } from './shared-components/logout/logout.component';\nimport { PDFExportModule } from '@progress/kendo-angular-pdf-export';\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { ErrorsHandler } from './error-handler';\nimport { SchedulingTabComponent } from './shared-components/user-preferences/user-preferences-window/scheduling-tab/scheduling-tab.component';\n\nexport function createTranslateLoader(http: HttpClient) {\n return new TranslateHttpLoader(http, 'assets/i18n/', '.json');\n}\n\n\n\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HeaderComponent,\r\n UnsavedChangesMessageComponent,\r\n CheckForErrorsMessageComponent,\r\n UserPreferencesWindowComponent,\r\n SchedulingTabComponent,\r\n StartOverDialogComponent,\r\n LogoutComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n MaterialModule,\r\n FormsModule,\r\n HttpClientModule,\r\n SharedComponentsModule.forRoot(),\r\n ReportingModule,\r\n LoginModule,\r\n OrderModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: createTranslateLoader,\r\n deps: [HttpClient]\r\n },\r\n missingTranslationHandler: {\r\n provide: MissingTranslationHandler,\r\n useClass: MyMissingTranslationHandler\r\n }\r\n }),\r\n PDFExportModule,\r\n DropDownsModule,\r\n // Routing Module needs to be last\r\n AppRoutingModule\r\n ],\r\n providers: [\r\n LoginService,\r\n ClassroomSummaryService,\r\n httpInterceptorProviders,\r\n UserService,\r\n YearService,\r\n AuthGuard,\r\n UnsavedChangesGuard,\r\n StudentService,\r\n UserPreferencesService,\r\n TranslateService,\r\n Student360Service,\r\n SharedService,\r\n ExportService,\r\n ReportingService,\r\n Classroom360Service,\r\n LoaderService,\r\n NewFamilyRegistrationGuard,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: LoaderInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useClass: ErrorsHandler,\r\n },\r\n // { provide: APP_BASE_HREF, useFactory: getBaseLocation }\r\n CheckForErrorsGuard,\r\n { provide: MatDialogRef, useValue: {} },\r\n { provide: MAT_DIALOG_DATA, useValue: [] },\r\n SecurityService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\nexport class AppModule {\n}\n","import { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\r\nimport { isDevMode } from '@angular/core';\r\n\r\nexport class MyMissingTranslationHandler implements MissingTranslationHandler {\r\n private missingTranslations: string[] = [];\r\n\r\n handle(params: MissingTranslationHandlerParams) {\r\n const currentLang = params.translateService.currentLang;\r\n if (currentLang != 'en') {\r\n if (Object.values(params.translateService.translations[currentLang]).indexOf(params.key) == -1) {\r\n // check the shared service for missing translations list\r\n if (this.missingTranslations.indexOf(params.key) == -1) {\r\n this.missingTranslations.push(params.key);\r\n if (isDevMode()) {\r\n console.log('Missing Translations : ', this.missingTranslations);\r\n }\r\n }\r\n }\r\n }\r\n // look in the translation\r\n return params.key;\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @template T\n * @param {?} key\n * @return {?}\n */\nfunction marker(key) {\n return key;\n}\n\nexport { marker };\n\n","import { Injectable, EventEmitter, InjectionToken, Inject, Directive, ElementRef, ChangeDetectorRef, Input, Pipe, NgModule } from '@angular/core';\nimport { of, isObservable, forkJoin, concat, defer } from 'rxjs';\nimport { take, shareReplay, map, concatMap, switchMap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.loader.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nimport * as ɵngcc0 from '@angular/core';\nclass TranslateLoader {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} lang\n * @return {?}\n */\n TranslateLoader.prototype.getTranslation = function (lang) { };\n}\n/**\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\n */\nclass TranslateFakeLoader extends TranslateLoader {\n /**\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n return of({});\n }\n}\nTranslateFakeLoader.ɵfac = /*@__PURE__*/ function () { let ɵTranslateFakeLoader_BaseFactory; return function TranslateFakeLoader_Factory(t) { return (ɵTranslateFakeLoader_BaseFactory || (ɵTranslateFakeLoader_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateFakeLoader)))(t || TranslateFakeLoader); }; }();\nTranslateFakeLoader.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateFakeLoader, factory: TranslateFakeLoader.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateFakeLoader, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/missing-translation-handler.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction MissingTranslationHandlerParams() { }\nif (false) {\n /**\n * the key that's missing in translation files\n * @type {?}\n */\n MissingTranslationHandlerParams.prototype.key;\n /**\n * an instance of the service that was unable to translate the key.\n * @type {?}\n */\n MissingTranslationHandlerParams.prototype.translateService;\n /**\n * interpolation params that were passed along for translating the given key.\n * @type {?|undefined}\n */\n MissingTranslationHandlerParams.prototype.interpolateParams;\n}\n/**\n * @abstract\n */\nclass MissingTranslationHandler {\n}\nif (false) {\n /**\n * A function that handles missing translations.\n *\n * @abstract\n * @param {?} params context for resolving a missing translation\n * @return {?} a value or an observable\n * If it returns a value, then this value is used.\n * If it return an observable, the value returned by this observable will be used (except if the method was \"instant\").\n * If it doesn't return then the key will be used as a value\n */\n MissingTranslationHandler.prototype.handle = function (params) { };\n}\n/**\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\n */\nclass FakeMissingTranslationHandler {\n /**\n * @param {?} params\n * @return {?}\n */\n handle(params) {\n return params.key;\n }\n}\nFakeMissingTranslationHandler.ɵfac = function FakeMissingTranslationHandler_Factory(t) { return new (t || FakeMissingTranslationHandler)(); };\nFakeMissingTranslationHandler.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FakeMissingTranslationHandler, factory: FakeMissingTranslationHandler.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FakeMissingTranslationHandler, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/util.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/* tslint:disable */\n/**\n * Determines if two objects or two values are equivalent.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `equals`.\n *\n * @param {?} o1 Object or value to compare.\n * @param {?} o2 Object or value to compare.\n * @return {?} true if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2)\n return true;\n if (o1 === null || o2 === null)\n return false;\n if (o1 !== o1 && o2 !== o2)\n return true; // NaN === NaN\n // NaN === NaN\n /** @type {?} */\n let t1 = typeof o1;\n /** @type {?} */\n let t2 = typeof o2;\n /** @type {?} */\n let length;\n /** @type {?} */\n let key;\n /** @type {?} */\n let keySet;\n if (t1 == t2 && t1 == 'object') {\n if (Array.isArray(o1)) {\n if (!Array.isArray(o2))\n return false;\n if ((length = o1.length) == o2.length) {\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key]))\n return false;\n }\n return true;\n }\n }\n else {\n if (Array.isArray(o2)) {\n return false;\n }\n keySet = Object.create(null);\n for (key in o1) {\n if (!equals(o1[key], o2[key])) {\n return false;\n }\n keySet[key] = true;\n }\n for (key in o2) {\n if (!(key in keySet) && typeof o2[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n}\n/* tslint:enable */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return typeof value !== 'undefined' && value !== null;\n}\n/**\n * @param {?} item\n * @return {?}\n */\nfunction isObject(item) {\n return (item && typeof item === 'object' && !Array.isArray(item));\n}\n/**\n * @param {?} target\n * @param {?} source\n * @return {?}\n */\nfunction mergeDeep(target, source) {\n /** @type {?} */\n let output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((/**\n * @param {?} key\n * @return {?}\n */\n (key) => {\n if (isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n }\n else {\n output[key] = mergeDeep(target[key], source[key]);\n }\n }\n else {\n Object.assign(output, { [key]: source[key] });\n }\n }));\n }\n return output;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.parser.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass TranslateParser {\n}\nif (false) {\n /**\n * Interpolates a string to replace parameters\n * \"This is a {{ key }}\" ==> \"This is a value\", with params = { key: \"value\" }\n * @abstract\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n TranslateParser.prototype.interpolate = function (expr, params) { };\n /**\n * Gets a value from an object by composed key\n * parser.getValue({ key1: { keyA: 'valueI' }}, 'key1.keyA') ==> 'valueI'\n * @abstract\n * @param {?} target\n * @param {?} key\n * @return {?}\n */\n TranslateParser.prototype.getValue = function (target, key) { };\n}\nclass TranslateDefaultParser extends TranslateParser {\n constructor() {\n super(...arguments);\n this.templateMatcher = /{{\\s?([^{}\\s]*)\\s?}}/g;\n }\n /**\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n interpolate(expr, params) {\n /** @type {?} */\n let result;\n if (typeof expr === 'string') {\n result = this.interpolateString(expr, params);\n }\n else if (typeof expr === 'function') {\n result = this.interpolateFunction(expr, params);\n }\n else {\n // this should not happen, but an unrelated TranslateService test depends on it\n result = (/** @type {?} */ (expr));\n }\n return result;\n }\n /**\n * @param {?} target\n * @param {?} key\n * @return {?}\n */\n getValue(target, key) {\n /** @type {?} */\n let keys = typeof key === 'string' ? key.split('.') : [key];\n key = '';\n do {\n key += keys.shift();\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\n target = target[key];\n key = '';\n }\n else if (!keys.length) {\n target = undefined;\n }\n else {\n key += '.';\n }\n } while (keys.length);\n return target;\n }\n /**\n * @private\n * @param {?} fn\n * @param {?=} params\n * @return {?}\n */\n interpolateFunction(fn, params) {\n return fn(params);\n }\n /**\n * @private\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n interpolateString(expr, params) {\n if (!params) {\n return expr;\n }\n return expr.replace(this.templateMatcher, (/**\n * @param {?} substring\n * @param {?} b\n * @return {?}\n */\n (substring, b) => {\n /** @type {?} */\n let r = this.getValue(params, b);\n return isDefined(r) ? r : substring;\n }));\n }\n}\nTranslateDefaultParser.ɵfac = /*@__PURE__*/ function () { let ɵTranslateDefaultParser_BaseFactory; return function TranslateDefaultParser_Factory(t) { return (ɵTranslateDefaultParser_BaseFactory || (ɵTranslateDefaultParser_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateDefaultParser)))(t || TranslateDefaultParser); }; }();\nTranslateDefaultParser.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateDefaultParser, factory: TranslateDefaultParser.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateDefaultParser, [{\n type: Injectable\n }], null, null); })();\nif (false) {\n /** @type {?} */\n TranslateDefaultParser.prototype.templateMatcher;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.compiler.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass TranslateCompiler {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} value\n * @param {?} lang\n * @return {?}\n */\n TranslateCompiler.prototype.compile = function (value, lang) { };\n /**\n * @abstract\n * @param {?} translations\n * @param {?} lang\n * @return {?}\n */\n TranslateCompiler.prototype.compileTranslations = function (translations, lang) { };\n}\n/**\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\n */\nclass TranslateFakeCompiler extends TranslateCompiler {\n /**\n * @param {?} value\n * @param {?} lang\n * @return {?}\n */\n compile(value, lang) {\n return value;\n }\n /**\n * @param {?} translations\n * @param {?} lang\n * @return {?}\n */\n compileTranslations(translations, lang) {\n return translations;\n }\n}\nTranslateFakeCompiler.ɵfac = /*@__PURE__*/ function () { let ɵTranslateFakeCompiler_BaseFactory; return function TranslateFakeCompiler_Factory(t) { return (ɵTranslateFakeCompiler_BaseFactory || (ɵTranslateFakeCompiler_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateFakeCompiler)))(t || TranslateFakeCompiler); }; }();\nTranslateFakeCompiler.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateFakeCompiler, factory: TranslateFakeCompiler.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateFakeCompiler, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.store.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslateStore {\n constructor() {\n /**\n * The lang currently used\n */\n this.currentLang = this.defaultLang;\n /**\n * a list of translations per lang\n */\n this.translations = {};\n /**\n * an array of langs\n */\n this.langs = [];\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n */\n this.onTranslationChange = new EventEmitter();\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n */\n this.onLangChange = new EventEmitter();\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n */\n this.onDefaultLangChange = new EventEmitter();\n }\n}\nif (false) {\n /**\n * The default lang to fallback when translations are missing on the current lang\n * @type {?}\n */\n TranslateStore.prototype.defaultLang;\n /**\n * The lang currently used\n * @type {?}\n */\n TranslateStore.prototype.currentLang;\n /**\n * a list of translations per lang\n * @type {?}\n */\n TranslateStore.prototype.translations;\n /**\n * an array of langs\n * @type {?}\n */\n TranslateStore.prototype.langs;\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onTranslationChange;\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onLangChange;\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onDefaultLangChange;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst USE_STORE = new InjectionToken('USE_STORE');\n/** @type {?} */\nconst USE_DEFAULT_LANG = new InjectionToken('USE_DEFAULT_LANG');\n/** @type {?} */\nconst DEFAULT_LANGUAGE = new InjectionToken('DEFAULT_LANGUAGE');\n/** @type {?} */\nconst USE_EXTEND = new InjectionToken('USE_EXTEND');\n/**\n * @record\n */\nfunction TranslationChangeEvent() { }\nif (false) {\n /** @type {?} */\n TranslationChangeEvent.prototype.translations;\n /** @type {?} */\n TranslationChangeEvent.prototype.lang;\n}\n/**\n * @record\n */\nfunction LangChangeEvent() { }\nif (false) {\n /** @type {?} */\n LangChangeEvent.prototype.lang;\n /** @type {?} */\n LangChangeEvent.prototype.translations;\n}\n/**\n * @record\n */\nfunction DefaultLangChangeEvent() { }\nif (false) {\n /** @type {?} */\n DefaultLangChangeEvent.prototype.lang;\n /** @type {?} */\n DefaultLangChangeEvent.prototype.translations;\n}\nclass TranslateService {\n /**\n *\n * @param {?} store an instance of the store (that is supposed to be unique)\n * @param {?} currentLoader An instance of the loader currently used\n * @param {?} compiler An instance of the compiler currently used\n * @param {?} parser An instance of the parser currently used\n * @param {?} missingTranslationHandler A handler for missing translations.\n * @param {?=} useDefaultLang whether we should use default language translation when current language translation is missing.\n * @param {?=} isolate whether this service should use the store or not\n * @param {?=} extend To make a child module extend (and use) translations from parent modules.\n * @param {?=} defaultLanguage Set the default language using configuration\n */\n constructor(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang = true, isolate = false, extend = false, defaultLanguage) {\n this.store = store;\n this.currentLoader = currentLoader;\n this.compiler = compiler;\n this.parser = parser;\n this.missingTranslationHandler = missingTranslationHandler;\n this.useDefaultLang = useDefaultLang;\n this.isolate = isolate;\n this.extend = extend;\n this.pending = false;\n this._onTranslationChange = new EventEmitter();\n this._onLangChange = new EventEmitter();\n this._onDefaultLangChange = new EventEmitter();\n this._langs = [];\n this._translations = {};\n this._translationRequests = {};\n /** set the default language from configuration */\n if (defaultLanguage) {\n this.setDefaultLang(defaultLanguage);\n }\n }\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onTranslationChange() {\n return this.isolate ? this._onTranslationChange : this.store.onTranslationChange;\n }\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onLangChange() {\n return this.isolate ? this._onLangChange : this.store.onLangChange;\n }\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onDefaultLangChange() {\n return this.isolate ? this._onDefaultLangChange : this.store.onDefaultLangChange;\n }\n /**\n * The default lang to fallback when translations are missing on the current lang\n * @return {?}\n */\n get defaultLang() {\n return this.isolate ? this._defaultLang : this.store.defaultLang;\n }\n /**\n * @param {?} defaultLang\n * @return {?}\n */\n set defaultLang(defaultLang) {\n if (this.isolate) {\n this._defaultLang = defaultLang;\n }\n else {\n this.store.defaultLang = defaultLang;\n }\n }\n /**\n * The lang currently used\n * @return {?}\n */\n get currentLang() {\n return this.isolate ? this._currentLang : this.store.currentLang;\n }\n /**\n * @param {?} currentLang\n * @return {?}\n */\n set currentLang(currentLang) {\n if (this.isolate) {\n this._currentLang = currentLang;\n }\n else {\n this.store.currentLang = currentLang;\n }\n }\n /**\n * an array of langs\n * @return {?}\n */\n get langs() {\n return this.isolate ? this._langs : this.store.langs;\n }\n /**\n * @param {?} langs\n * @return {?}\n */\n set langs(langs) {\n if (this.isolate) {\n this._langs = langs;\n }\n else {\n this.store.langs = langs;\n }\n }\n /**\n * a list of translations per lang\n * @return {?}\n */\n get translations() {\n return this.isolate ? this._translations : this.store.translations;\n }\n /**\n * @param {?} translations\n * @return {?}\n */\n set translations(translations) {\n if (this.isolate) {\n this._translations = translations;\n }\n else {\n this.store.translations = translations;\n }\n }\n /**\n * Sets the default language to use as a fallback\n * @param {?} lang\n * @return {?}\n */\n setDefaultLang(lang) {\n if (lang === this.defaultLang) {\n return;\n }\n /** @type {?} */\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the defaultLang immediately\n if (this.defaultLang == null) {\n this.defaultLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.changeDefaultLang(lang);\n }));\n }\n else { // we already have this language\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Gets the default language used\n * @return {?}\n */\n getDefaultLang() {\n return this.defaultLang;\n }\n /**\n * Changes the lang currently used\n * @param {?} lang\n * @return {?}\n */\n use(lang) {\n // don't change the language if the language given is already selected\n if (lang === this.currentLang) {\n return of(this.translations[lang]);\n }\n /** @type {?} */\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the currentLang immediately\n if (!this.currentLang) {\n this.currentLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.changeLang(lang);\n }));\n return pending;\n }\n else { // we have this language, return an Observable\n this.changeLang(lang);\n return of(this.translations[lang]);\n }\n }\n /**\n * Retrieves the given translations\n * @private\n * @param {?} lang\n * @return {?}\n */\n retrieveTranslations(lang) {\n /** @type {?} */\n let pending;\n // if this language is unavailable or extend is true, ask for it\n if (typeof this.translations[lang] === \"undefined\" || this.extend) {\n this._translationRequests[lang] = this._translationRequests[lang] || this.getTranslation(lang);\n pending = this._translationRequests[lang];\n }\n return pending;\n }\n /**\n * Gets an object of translations for a given language with the current loader\n * and passes it through the compiler\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n this.pending = true;\n /** @type {?} */\n const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(shareReplay(1), take(1));\n this.loadingTranslations = loadingTranslations.pipe(map((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.compiler.compileTranslations(res, lang))), shareReplay(1), take(1));\n this.loadingTranslations\n .subscribe({\n next: (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.translations[lang] = this.extend && this.translations[lang] ? Object.assign(Object.assign({}, res), this.translations[lang]) : res;\n this.updateLangs();\n this.pending = false;\n }),\n error: (/**\n * @param {?} err\n * @return {?}\n */\n (err) => {\n this.pending = false;\n })\n });\n return loadingTranslations;\n }\n /**\n * Manually sets an object of translations for a given language\n * after passing it through the compiler\n * @param {?} lang\n * @param {?} translations\n * @param {?=} shouldMerge\n * @return {?}\n */\n setTranslation(lang, translations, shouldMerge = false) {\n translations = this.compiler.compileTranslations(translations, lang);\n if ((shouldMerge || this.extend) && this.translations[lang]) {\n this.translations[lang] = mergeDeep(this.translations[lang], translations);\n }\n else {\n this.translations[lang] = translations;\n }\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Returns an array of currently available langs\n * @return {?}\n */\n getLangs() {\n return this.langs;\n }\n /**\n * Add available langs\n * @param {?} langs\n * @return {?}\n */\n addLangs(langs) {\n langs.forEach((/**\n * @param {?} lang\n * @return {?}\n */\n (lang) => {\n if (this.langs.indexOf(lang) === -1) {\n this.langs.push(lang);\n }\n }));\n }\n /**\n * Update the list of available langs\n * @private\n * @return {?}\n */\n updateLangs() {\n this.addLangs(Object.keys(this.translations));\n }\n /**\n * Returns the parsed result of the translations\n * @param {?} translations\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?}\n */\n getParsedResult(translations, key, interpolateParams) {\n /** @type {?} */\n let res;\n if (key instanceof Array) {\n /** @type {?} */\n let result = {};\n /** @type {?} */\n let observables = false;\n for (let k of key) {\n result[k] = this.getParsedResult(translations, k, interpolateParams);\n if (isObservable(result[k])) {\n observables = true;\n }\n }\n if (observables) {\n /** @type {?} */\n const sources = key.map((/**\n * @param {?} k\n * @return {?}\n */\n k => isObservable(result[k]) ? result[k] : of((/** @type {?} */ (result[k])))));\n return forkJoin(sources).pipe(map((/**\n * @param {?} arr\n * @return {?}\n */\n (arr) => {\n /** @type {?} */\n let obj = {};\n arr.forEach((/**\n * @param {?} value\n * @param {?} index\n * @return {?}\n */\n (value, index) => {\n obj[key[index]] = value;\n }));\n return obj;\n })));\n }\n return result;\n }\n if (translations) {\n res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\n }\n if (typeof res === \"undefined\" && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\n res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\n }\n if (typeof res === \"undefined\") {\n /** @type {?} */\n let params = { key, translateService: this };\n if (typeof interpolateParams !== 'undefined') {\n params.interpolateParams = interpolateParams;\n }\n res = this.missingTranslationHandler.handle(params);\n }\n return typeof res !== \"undefined\" ? res : key;\n }\n /**\n * Gets the translated value of a key (or an array of keys)\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} the translated key, or an object of translated keys\n */\n get(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n // check if we are loading a new translation to use\n if (this.pending) {\n return this.loadingTranslations.pipe(concatMap((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n res = this.getParsedResult(res, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n })));\n }\n else {\n /** @type {?} */\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the translation changes.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} A stream of the translated key, or an object of translated keys\n */\n getStreamOnTranslationChange(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer((/**\n * @return {?}\n */\n () => this.get(key, interpolateParams))), this.onTranslationChange.pipe(switchMap((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n /** @type {?} */\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n if (typeof res.subscribe === 'function') {\n return res;\n }\n else {\n return of(res);\n }\n }))));\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the language changes.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} A stream of the translated key, or an object of translated keys\n */\n stream(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer((/**\n * @return {?}\n */\n () => this.get(key, interpolateParams))), this.onLangChange.pipe(switchMap((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n /** @type {?} */\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }))));\n }\n /**\n * Returns a translation instantly from the internal state of loaded translation.\n * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?}\n */\n instant(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n /** @type {?} */\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n if (isObservable(res)) {\n if (key instanceof Array) {\n /** @type {?} */\n let obj = {};\n key.forEach((/**\n * @param {?} value\n * @param {?} index\n * @return {?}\n */\n (value, index) => {\n obj[key[index]] = key[index];\n }));\n return obj;\n }\n return key;\n }\n else {\n return res;\n }\n }\n /**\n * Sets the translated value of a key, after compiling it\n * @param {?} key\n * @param {?} value\n * @param {?=} lang\n * @return {?}\n */\n set(key, value, lang = this.currentLang) {\n this.translations[lang][key] = this.compiler.compile(value, lang);\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Changes the current lang\n * @private\n * @param {?} lang\n * @return {?}\n */\n changeLang(lang) {\n this.currentLang = lang;\n this.onLangChange.emit({ lang: lang, translations: this.translations[lang] });\n // if there is no default lang, use the one that we just set\n if (this.defaultLang == null) {\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Changes the default lang\n * @private\n * @param {?} lang\n * @return {?}\n */\n changeDefaultLang(lang) {\n this.defaultLang = lang;\n this.onDefaultLangChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Allows to reload the lang file from the file\n * @param {?} lang\n * @return {?}\n */\n reloadLang(lang) {\n this.resetLang(lang);\n return this.getTranslation(lang);\n }\n /**\n * Deletes inner translation\n * @param {?} lang\n * @return {?}\n */\n resetLang(lang) {\n this._translationRequests[lang] = undefined;\n this.translations[lang] = undefined;\n }\n /**\n * Returns the language code name from the browser, e.g. \"de\"\n * @return {?}\n */\n getBrowserLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n /** @type {?} */\n let browserLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n if (typeof browserLang === 'undefined') {\n return undefined;\n }\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0];\n }\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0];\n }\n return browserLang;\n }\n /**\n * Returns the culture language code name from the browser, e.g. \"de-DE\"\n * @return {?}\n */\n getBrowserCultureLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n /** @type {?} */\n let browserCultureLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n return browserCultureLang;\n }\n}\nTranslateService.ɵfac = function TranslateService_Factory(t) { return new (t || TranslateService)(ɵngcc0.ɵɵinject(TranslateStore), ɵngcc0.ɵɵinject(TranslateLoader), ɵngcc0.ɵɵinject(TranslateCompiler), ɵngcc0.ɵɵinject(TranslateParser), ɵngcc0.ɵɵinject(MissingTranslationHandler), ɵngcc0.ɵɵinject(USE_DEFAULT_LANG), ɵngcc0.ɵɵinject(USE_STORE), ɵngcc0.ɵɵinject(USE_EXTEND), ɵngcc0.ɵɵinject(DEFAULT_LANGUAGE)); };\nTranslateService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateService, factory: TranslateService.ɵfac });\n/** @nocollapse */\nTranslateService.ctorParameters = () => [\n { type: TranslateStore },\n { type: TranslateLoader },\n { type: TranslateCompiler },\n { type: TranslateParser },\n { type: MissingTranslationHandler },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_DEFAULT_LANG,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_STORE,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_EXTEND,] }] },\n { type: String, decorators: [{ type: Inject, args: [DEFAULT_LANGUAGE,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateService, [{\n type: Injectable\n }], function () { return [{ type: TranslateStore }, { type: TranslateLoader }, { type: TranslateCompiler }, { type: TranslateParser }, { type: MissingTranslationHandler }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_DEFAULT_LANG]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_STORE]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_EXTEND]\n }] }, { type: String, decorators: [{\n type: Inject,\n args: [DEFAULT_LANGUAGE]\n }] }]; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.loadingTranslations;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.pending;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onTranslationChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onDefaultLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._defaultLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._currentLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._langs;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._translations;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._translationRequests;\n /** @type {?} */\n TranslateService.prototype.store;\n /** @type {?} */\n TranslateService.prototype.currentLoader;\n /** @type {?} */\n TranslateService.prototype.compiler;\n /** @type {?} */\n TranslateService.prototype.parser;\n /** @type {?} */\n TranslateService.prototype.missingTranslationHandler;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.useDefaultLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.isolate;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.extend;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslateDirective {\n /**\n * @param {?} translateService\n * @param {?} element\n * @param {?} _ref\n */\n constructor(translateService, element, _ref) {\n this.translateService = translateService;\n this.element = element;\n this._ref = _ref;\n // subscribe to onTranslationChange event, in case the translations of the current lang change\n if (!this.onTranslationChangeSub) {\n this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (event.lang === this.translateService.currentLang) {\n this.checkNodes(true, event.translations);\n }\n }));\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChangeSub) {\n this.onLangChangeSub = this.translateService.onLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.checkNodes(true, event.translations);\n }));\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.checkNodes(true);\n }));\n }\n }\n /**\n * @param {?} key\n * @return {?}\n */\n set translate(key) {\n if (key) {\n this.key = key;\n this.checkNodes();\n }\n }\n /**\n * @param {?} params\n * @return {?}\n */\n set translateParams(params) {\n if (!equals(this.currentParams, params)) {\n this.currentParams = params;\n this.checkNodes(true);\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewChecked() {\n this.checkNodes();\n }\n /**\n * @param {?=} forceUpdate\n * @param {?=} translations\n * @return {?}\n */\n checkNodes(forceUpdate = false, translations) {\n /** @type {?} */\n let nodes = this.element.nativeElement.childNodes;\n // if the element is empty\n if (!nodes.length) {\n // we add the key as content\n this.setContent(this.element.nativeElement, this.key);\n nodes = this.element.nativeElement.childNodes;\n }\n for (let i = 0; i < nodes.length; ++i) {\n /** @type {?} */\n let node = nodes[i];\n if (node.nodeType === 3) { // node type 3 is a text node\n // node type 3 is a text node\n /** @type {?} */\n let key;\n if (forceUpdate) {\n node.lastKey = null;\n }\n if (isDefined(node.lookupKey)) {\n key = node.lookupKey;\n }\n else if (this.key) {\n key = this.key;\n }\n else {\n /** @type {?} */\n let content = this.getContent(node);\n /** @type {?} */\n let trimmedContent = content.trim();\n if (trimmedContent.length) {\n node.lookupKey = trimmedContent;\n // we want to use the content as a key, not the translation value\n if (content !== node.currentValue) {\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n else if (node.originalContent) { // the content seems ok, but the lang has changed\n // the current content is the translation, not the key, use the last real content as key\n key = node.originalContent.trim();\n }\n else if (content !== node.currentValue) {\n // we want to use the content as a key, not the translation value\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n }\n }\n this.updateValue(key, node, translations);\n }\n }\n }\n /**\n * @param {?} key\n * @param {?} node\n * @param {?} translations\n * @return {?}\n */\n updateValue(key, node, translations) {\n if (key) {\n if (node.lastKey === key && this.lastParams === this.currentParams) {\n return;\n }\n this.lastParams = this.currentParams;\n /** @type {?} */\n let onTranslation = (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n if (res !== key) {\n node.lastKey = key;\n }\n if (!node.originalContent) {\n node.originalContent = this.getContent(node);\n }\n node.currentValue = isDefined(res) ? res : (node.originalContent || key);\n // we replace in the original content to preserve spaces that we might have trimmed\n this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\n this._ref.markForCheck();\n });\n if (isDefined(translations)) {\n /** @type {?} */\n let res = this.translateService.getParsedResult(translations, key, this.currentParams);\n if (isObservable(res)) {\n res.subscribe(onTranslation);\n }\n else {\n onTranslation(res);\n }\n }\n else {\n this.translateService.get(key, this.currentParams).subscribe(onTranslation);\n }\n }\n }\n /**\n * @param {?} node\n * @return {?}\n */\n getContent(node) {\n return isDefined(node.textContent) ? node.textContent : node.data;\n }\n /**\n * @param {?} node\n * @param {?} content\n * @return {?}\n */\n setContent(node, content) {\n if (isDefined(node.textContent)) {\n node.textContent = content;\n }\n else {\n node.data = content;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this.onLangChangeSub) {\n this.onLangChangeSub.unsubscribe();\n }\n if (this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub.unsubscribe();\n }\n if (this.onTranslationChangeSub) {\n this.onTranslationChangeSub.unsubscribe();\n }\n }\n}\nTranslateDirective.ɵfac = function TranslateDirective_Factory(t) { return new (t || TranslateDirective)(ɵngcc0.ɵɵdirectiveInject(TranslateService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTranslateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TranslateDirective, selectors: [[\"\", \"translate\", \"\"], [\"\", \"ngx-translate\", \"\"]], inputs: { translate: \"translate\", translateParams: \"translateParams\" } });\n/** @nocollapse */\nTranslateDirective.ctorParameters = () => [\n { type: TranslateService },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\nTranslateDirective.propDecorators = {\n translate: [{ type: Input }],\n translateParams: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateDirective, [{\n type: Directive,\n args: [{\n selector: '[translate],[ngx-translate]'\n }]\n }], function () { return [{ type: TranslateService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { translate: [{\n type: Input\n }], translateParams: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n TranslateDirective.prototype.key;\n /** @type {?} */\n TranslateDirective.prototype.lastParams;\n /** @type {?} */\n TranslateDirective.prototype.currentParams;\n /** @type {?} */\n TranslateDirective.prototype.onLangChangeSub;\n /** @type {?} */\n TranslateDirective.prototype.onDefaultLangChangeSub;\n /** @type {?} */\n TranslateDirective.prototype.onTranslationChangeSub;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype.translateService;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype.element;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype._ref;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/translate.pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslatePipe {\n /**\n * @param {?} translate\n * @param {?} _ref\n */\n constructor(translate, _ref) {\n this.translate = translate;\n this._ref = _ref;\n this.value = '';\n }\n /**\n * @param {?} key\n * @param {?=} interpolateParams\n * @param {?=} translations\n * @return {?}\n */\n updateValue(key, interpolateParams, translations) {\n /** @type {?} */\n let onTranslation = (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.value = res !== undefined ? res : key;\n this.lastKey = key;\n this._ref.markForCheck();\n });\n if (translations) {\n /** @type {?} */\n let res = this.translate.getParsedResult(translations, key, interpolateParams);\n if (isObservable(res.subscribe)) {\n res.subscribe(onTranslation);\n }\n else {\n onTranslation(res);\n }\n }\n this.translate.get(key, interpolateParams).subscribe(onTranslation);\n }\n /**\n * @param {?} query\n * @param {...?} args\n * @return {?}\n */\n transform(query, ...args) {\n if (!query || !query.length) {\n return query;\n }\n // if we ask another time for the same key, return the last value\n if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\n return this.value;\n }\n /** @type {?} */\n let interpolateParams;\n if (isDefined(args[0]) && args.length) {\n if (typeof args[0] === 'string' && args[0].length) {\n // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n /** @type {?} */\n let validArgs = args[0]\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\n try {\n interpolateParams = JSON.parse(validArgs);\n }\n catch (e) {\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n }\n }\n else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\n interpolateParams = args[0];\n }\n }\n // store the query, in case it changes\n this.lastKey = query;\n // store the params, in case they change\n this.lastParams = args;\n // set the value\n this.updateValue(query, interpolateParams);\n // if there is a subscription to onLangChange, clean it\n this._dispose();\n // subscribe to onTranslationChange event, in case the translations change\n if (!this.onTranslationChange) {\n this.onTranslationChange = this.translate.onTranslationChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this.lastKey && event.lang === this.translate.currentLang) {\n this.lastKey = null;\n this.updateValue(query, interpolateParams, event.translations);\n }\n }));\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChange) {\n this.onLangChange = this.translate.onLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams, event.translations);\n }\n }));\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChange) {\n this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe((/**\n * @return {?}\n */\n () => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams);\n }\n }));\n }\n return this.value;\n }\n /**\n * Clean any existing subscription to change events\n * @private\n * @return {?}\n */\n _dispose() {\n if (typeof this.onTranslationChange !== 'undefined') {\n this.onTranslationChange.unsubscribe();\n this.onTranslationChange = undefined;\n }\n if (typeof this.onLangChange !== 'undefined') {\n this.onLangChange.unsubscribe();\n this.onLangChange = undefined;\n }\n if (typeof this.onDefaultLangChange !== 'undefined') {\n this.onDefaultLangChange.unsubscribe();\n this.onDefaultLangChange = undefined;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._dispose();\n }\n}\nTranslatePipe.ɵfac = function TranslatePipe_Factory(t) { return new (t || TranslatePipe)(ɵngcc0.ɵɵdirectiveInject(TranslateService, 16), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef, 16)); };\nTranslatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"translate\", type: TranslatePipe, pure: false });\nTranslatePipe.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslatePipe, factory: TranslatePipe.ɵfac });\n/** @nocollapse */\nTranslatePipe.ctorParameters = () => [\n { type: TranslateService },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslatePipe, [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'translate',\n pure: false // required to update the value when the promise is resolved\n }]\n }], function () { return [{ type: TranslateService }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n TranslatePipe.prototype.value;\n /** @type {?} */\n TranslatePipe.prototype.lastKey;\n /** @type {?} */\n TranslatePipe.prototype.lastParams;\n /** @type {?} */\n TranslatePipe.prototype.onTranslationChange;\n /** @type {?} */\n TranslatePipe.prototype.onLangChange;\n /** @type {?} */\n TranslatePipe.prototype.onDefaultLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslatePipe.prototype.translate;\n /**\n * @type {?}\n * @private\n */\n TranslatePipe.prototype._ref;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public_api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction TranslateModuleConfig() { }\nif (false) {\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.loader;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.compiler;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.parser;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.missingTranslationHandler;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.isolate;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.extend;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.useDefaultLang;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.defaultLanguage;\n}\nclass TranslateModule {\n /**\n * Use this method in your root module to provide the TranslateService\n * @param {?=} config\n * @return {?}\n */\n static forRoot(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n TranslateStore,\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n /**\n * Use this method in your other (non root) modules to import the directive/pipe\n * @param {?=} config\n * @return {?}\n */\n static forChild(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n}\nTranslateModule.ɵfac = function TranslateModule_Factory(t) { return new (t || TranslateModule)(); };\nTranslateModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TranslateModule });\nTranslateModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateModule, [{\n type: NgModule,\n args: [{\n declarations: [\n TranslatePipe,\n TranslateDirective\n ],\n exports: [\n TranslatePipe,\n TranslateDirective\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TranslateModule, { declarations: [TranslatePipe, TranslateDirective], exports: [TranslatePipe, TranslateDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: ngx-translate-core.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { DEFAULT_LANGUAGE, FakeMissingTranslationHandler, MissingTranslationHandler, TranslateCompiler, TranslateDefaultParser, TranslateDirective, TranslateFakeCompiler, TranslateFakeLoader, TranslateLoader, TranslateModule, TranslateParser, TranslatePipe, TranslateService, TranslateStore, USE_DEFAULT_LANG, USE_EXTEND, USE_STORE };\n\n","import { decompressJson } from './utils';\nimport CourierBoldCompressed from './Courier-Bold.compressed.json';\nimport CourierBoldObliqueCompressed from './Courier-BoldOblique.compressed.json';\nimport CourierObliqueCompressed from './Courier-Oblique.compressed.json';\nimport CourierCompressed from './Courier.compressed.json';\nimport HelveticaBoldCompressed from './Helvetica-Bold.compressed.json';\nimport HelveticaBoldObliqueCompressed from './Helvetica-BoldOblique.compressed.json';\nimport HelveticaObliqueCompressed from './Helvetica-Oblique.compressed.json';\nimport HelveticaCompressed from './Helvetica.compressed.json';\nimport TimesBoldCompressed from './Times-Bold.compressed.json';\nimport TimesBoldItalicCompressed from './Times-BoldItalic.compressed.json';\nimport TimesItalicCompressed from './Times-Italic.compressed.json';\nimport TimesRomanCompressed from './Times-Roman.compressed.json';\nimport SymbolCompressed from './Symbol.compressed.json';\nimport ZapfDingbatsCompressed from './ZapfDingbats.compressed.json';\n// prettier-ignore\nvar compressedJsonForFontName = {\n 'Courier': CourierCompressed,\n 'Courier-Bold': CourierBoldCompressed,\n 'Courier-Oblique': CourierObliqueCompressed,\n 'Courier-BoldOblique': CourierBoldObliqueCompressed,\n 'Helvetica': HelveticaCompressed,\n 'Helvetica-Bold': HelveticaBoldCompressed,\n 'Helvetica-Oblique': HelveticaObliqueCompressed,\n 'Helvetica-BoldOblique': HelveticaBoldObliqueCompressed,\n 'Times-Roman': TimesRomanCompressed,\n 'Times-Bold': TimesBoldCompressed,\n 'Times-Italic': TimesItalicCompressed,\n 'Times-BoldItalic': TimesBoldItalicCompressed,\n 'Symbol': SymbolCompressed,\n 'ZapfDingbats': ZapfDingbatsCompressed,\n};\nexport var FontNames;\n(function (FontNames) {\n FontNames[\"Courier\"] = \"Courier\";\n FontNames[\"CourierBold\"] = \"Courier-Bold\";\n FontNames[\"CourierOblique\"] = \"Courier-Oblique\";\n FontNames[\"CourierBoldOblique\"] = \"Courier-BoldOblique\";\n FontNames[\"Helvetica\"] = \"Helvetica\";\n FontNames[\"HelveticaBold\"] = \"Helvetica-Bold\";\n FontNames[\"HelveticaOblique\"] = \"Helvetica-Oblique\";\n FontNames[\"HelveticaBoldOblique\"] = \"Helvetica-BoldOblique\";\n FontNames[\"TimesRoman\"] = \"Times-Roman\";\n FontNames[\"TimesRomanBold\"] = \"Times-Bold\";\n FontNames[\"TimesRomanItalic\"] = \"Times-Italic\";\n FontNames[\"TimesRomanBoldItalic\"] = \"Times-BoldItalic\";\n FontNames[\"Symbol\"] = \"Symbol\";\n FontNames[\"ZapfDingbats\"] = \"ZapfDingbats\";\n})(FontNames || (FontNames = {}));\nvar fontCache = {};\nvar Font = /** @class */ (function () {\n function Font() {\n var _this = this;\n this.getWidthOfGlyph = function (glyphName) {\n return _this.CharWidths[glyphName];\n };\n this.getXAxisKerningForPair = function (leftGlyphName, rightGlyphName) {\n return (_this.KernPairXAmounts[leftGlyphName] || {})[rightGlyphName];\n };\n }\n Font.load = function (fontName) {\n var cachedFont = fontCache[fontName];\n if (cachedFont)\n return cachedFont;\n var json = decompressJson(compressedJsonForFontName[fontName]);\n var font = Object.assign(new Font(), JSON.parse(json));\n font.CharWidths = font.CharMetrics.reduce(function (acc, metric) {\n acc[metric.N] = metric.WX;\n return acc;\n }, {});\n font.KernPairXAmounts = font.KernPairs.reduce(function (acc, _a) {\n var name1 = _a[0], name2 = _a[1], width = _a[2];\n if (!acc[name1])\n acc[name1] = {};\n acc[name1][name2] = width;\n return acc;\n }, {});\n fontCache[fontName] = font;\n return font;\n };\n return Font;\n}());\nexport { Font };\n","import * as base64 from 'base64-arraybuffer';\nimport pako from 'pako';\nvar arrayToString = function (array) {\n var str = '';\n for (var i = 0; i < array.length; i++) {\n str += String.fromCharCode(array[i]);\n }\n return str;\n};\nexport var decompressJson = function (compressedJson) {\n return arrayToString(pako.inflate(base64.decode(compressedJson)));\n};\n","/* tslint:disable max-classes-per-file */\nimport { decompressJson } from './utils';\nimport AllEncodingsCompressed from './all-encodings.compressed.json';\nvar decompressedEncodings = decompressJson(AllEncodingsCompressed);\nvar allUnicodeMappings = JSON.parse(decompressedEncodings);\nvar Encoding = /** @class */ (function () {\n function Encoding(name, unicodeMappings) {\n var _this = this;\n this.canEncodeUnicodeCodePoint = function (codePoint) {\n return codePoint in _this.unicodeMappings;\n };\n this.encodeUnicodeCodePoint = function (codePoint) {\n var mapped = _this.unicodeMappings[codePoint];\n if (!mapped) {\n var str = String.fromCharCode(codePoint);\n var msg = _this.name + \" cannot encode \\\"\" + str + \"\\\"\";\n throw new Error(msg);\n }\n return { code: mapped[0], name: mapped[1] };\n };\n this.name = name;\n this.unicodeMappings = unicodeMappings;\n }\n return Encoding;\n}());\nexport var Encodings = {\n Symbol: new Encoding('Symbol', allUnicodeMappings.symbol),\n ZapfDingbats: new Encoding('ZapfDingbats', allUnicodeMappings.zapfdingbats),\n WinAnsi: new Encoding('WinAnsi', allUnicodeMappings.win1252),\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __metadata } from 'tslib';\nimport { EventEmitter, Input, Output, Directive, ElementRef, NgZone, NgModule, Renderer2, Injectable, Component } from '@angular/core';\nimport Draggable from '@telerik/kendo-draggable';\nimport { CommonModule } from '@angular/common';\nimport { auditTime } from 'rxjs/operators';\nimport { merge, fromEvent, from } from 'rxjs';\n\nimport * as ɵngcc0 from '@angular/core';\nconst isDocumentAvailable = () => typeof document !== 'undefined';\n\nconst isChanged = (propertyName, changes, skipFirstChange = true) => (typeof changes[propertyName] !== 'undefined' &&\n (!changes[propertyName].isFirstChange() || !skipFirstChange) &&\n changes[propertyName].previousValue !== changes[propertyName].currentValue);\n\nconst anyChanged = (propertyNames, changes, skipFirstChange = true) => propertyNames.some(name => isChanged(name, changes, skipFirstChange));\n\nconst hasObservers = (emitter) => emitter && emitter.observers.length > 0;\n\nconst guid = () => {\n let id = \"\";\n for (let i = 0; i < 32; i++) {\n const random = Math.random() * 16 | 0; // tslint:disable-line:no-bitwise\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n // tslint:disable-next-line:no-bitwise\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n\nlet DraggableDirective = class DraggableDirective {\n constructor(element, ngZone) {\n this.element = element;\n this.ngZone = ngZone;\n this.enableDrag = true;\n this.kendoPress = new EventEmitter();\n this.kendoDrag = new EventEmitter();\n this.kendoRelease = new EventEmitter();\n }\n ngOnInit() {\n this.toggleDraggable();\n }\n ngOnChanges(changes) {\n if (isChanged('enableDrag', changes)) {\n this.toggleDraggable();\n }\n }\n ngOnDestroy() {\n this.destroyDraggable();\n }\n toggleDraggable() {\n if (isDocumentAvailable()) {\n this.destroyDraggable();\n if (this.enableDrag) {\n this.draggable = new Draggable({\n drag: (e) => this.kendoDrag.next(e),\n press: (e) => this.kendoPress.next(e),\n release: (e) => this.kendoRelease.next(e)\n });\n this.ngZone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n }\n }\n destroyDraggable() {\n if (this.draggable) {\n this.draggable.destroy();\n this.draggable = null;\n }\n }\n};\nDraggableDirective.ɵfac = function DraggableDirective_Factory(t) { return new (t || DraggableDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nDraggableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DraggableDirective, selectors: [[\"\", \"kendoDraggable\", \"\"]], inputs: { enableDrag: \"enableDrag\" }, outputs: { kendoPress: \"kendoPress\", kendoDrag: \"kendoDrag\", kendoRelease: \"kendoRelease\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DraggableDirective.prototype, \"enableDrag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DraggableDirective.prototype, \"kendoPress\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DraggableDirective.prototype, \"kendoDrag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DraggableDirective.prototype, \"kendoRelease\", void 0);\nDraggableDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, NgZone])\n], DraggableDirective);\n\n/**\n * @hidden\n */\nlet DraggableModule = class DraggableModule {\n};\nDraggableModule.ɵfac = function DraggableModule_Factory(t) { return new (t || DraggableModule)(); };\nDraggableModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DraggableModule });\nDraggableModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\nconst contains = (parent, node, matchSelf = false) => {\n const outside = !closest(node, (child) => child === parent);\n if (outside) {\n return false;\n }\n const el = closest(node, (child) => child === node);\n return el && (matchSelf || el !== parent);\n};\n\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst isFocusable = (element) => {\n if (!element.tagName) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n const hasTabIndex = Boolean(element.getAttribute('tabIndex'));\n const focusable = !element.disabled && focusableRegex.test(tagName);\n return focusable || hasTabIndex;\n};\n\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n\nconst isFocusableWithTabKey = (element, checkVisibility = true) => {\n if (!isFocusable(element)) {\n return false;\n }\n const tabIndex = element.getAttribute('tabIndex');\n const visible = !checkVisibility || isVisible(element);\n return visible && tabIndex !== '-1';\n};\n\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility));\n};\n\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n\nconst matchesClasses = (classNames) => (element) => hasClasses(element, classNames);\n\nconst NODE_NAME_PREDICATES = {};\nconst matchesNodeName = (nodeName) => {\n if (!NODE_NAME_PREDICATES[nodeName]) {\n NODE_NAME_PREDICATES[nodeName] = (element) => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();\n }\n return NODE_NAME_PREDICATES[nodeName];\n};\n\n/**\n * Normalizes a scroll position value in RTL mode.\n */\nfunction rtlScrollPosition(position, element, initial) {\n let result = position;\n if (initial < 0) {\n result = -position;\n }\n else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\n\n/* tslint:disable:no-input-rename */\n/**\n * @hidden\n */\nlet EventsOutsideAngularDirective = class EventsOutsideAngularDirective {\n constructor(element, ngZone, renderer) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.events = {};\n }\n ngOnInit() {\n if (!this.element || !this.element.nativeElement) {\n return;\n }\n const events = this.events;\n this.subscriptions = [];\n this.ngZone.runOutsideAngular(() => {\n for (let name in events) {\n if (events.hasOwnProperty(name)) {\n this.subscriptions.push(this.renderer.listen(this.element.nativeElement, name, this.scope ? events[name].bind(this.scope) : events[name]));\n }\n }\n });\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n for (let idx = 0; idx < this.subscriptions.length; idx++) {\n this.subscriptions[idx]();\n }\n this.subscriptions = null;\n }\n }\n};\nEventsOutsideAngularDirective.ɵfac = function EventsOutsideAngularDirective_Factory(t) { return new (t || EventsOutsideAngularDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nEventsOutsideAngularDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EventsOutsideAngularDirective, selectors: [[\"\", \"kendoEventsOutsideAngular\", \"\"]], inputs: { events: [\"kendoEventsOutsideAngular\", \"events\"], scope: \"scope\" } });\n__decorate([\n Input('kendoEventsOutsideAngular'),\n __metadata(\"design:type\", Object)\n], EventsOutsideAngularDirective.prototype, \"events\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], EventsOutsideAngularDirective.prototype, \"scope\", void 0);\nEventsOutsideAngularDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Renderer2])\n], EventsOutsideAngularDirective);\n\n/**\n * @hidden\n */\nlet EventsModule = class EventsModule {\n};\nEventsModule.ɵfac = function EventsModule_Factory(t) { return new (t || EventsModule)(); };\nEventsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: EventsModule });\nEventsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\nclass ResizeService {\n constructor(resizeBatchService) {\n this.resizeBatchService = resizeBatchService;\n this.resize = new EventEmitter();\n this.acceptedSize = false;\n this.state = 0 /* Initial */;\n }\n acceptSize(size = this.measure()) {\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n this.acceptedSize = true;\n }\n checkChanges() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.state === 0 /* Initial */) {\n this.state = 1 /* Initializing */;\n // batch initial measure\n this.resizeBatchService.schedule(this, this.init);\n }\n }\n destroy() {\n this.resizeBatchService.cancel(this);\n }\n checkSize() {\n if (!this.parentElement) {\n return;\n }\n const { width, height } = this.measure();\n const sameSize = width === this.lastWidth && height === this.lastHeight;\n if (sameSize) {\n return;\n }\n this.lastWidth = width;\n this.lastHeight = height;\n this.acceptedSize = false;\n this.resize.emit();\n return true;\n }\n initSize() {\n const size = this.measure();\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n }\n measure() {\n let width = 0;\n let height = 0;\n if (this.parentElement) {\n height = this.parentElement.offsetHeight;\n width = this.parentElement.offsetWidth;\n }\n return { height, width };\n }\n}\n\n// tslint:disable:deprecation\nconst div = style => {\n const el = document.createElement('div');\n el.style.cssText = style;\n return el;\n};\nconst computedProp = (elem, prop) => getComputedStyle(elem, null).getPropertyValue(prop);\nconst WRAP_STYLE = 'position: absolute; display: block; left: 0; top: 0; right: 0; bottom: 0; z-index: -1;' +\n 'overflow: hidden; visibility: hidden;';\nconst EXPAND_CHILD_STYLE = 'position: absolute; left: 0; top: 0; transition: 0s;';\nconst SHRINK_CHILD_STYLE = EXPAND_CHILD_STYLE + 'width: 200%; height: 200%;';\nclass ResizeCompatService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n checkChanges() {\n if (this.state === 2 /* Initialized */) {\n if (!this.resizeBatchService.isScheduled(this)) {\n this.resizeBatchService.schedule(this, this.checkSize);\n }\n return;\n }\n super.checkChanges();\n }\n destroy() {\n super.destroy();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.expand) {\n const element = this.element.nativeElement;\n element.removeChild(this.expand);\n element.removeChild(this.shrink);\n this.expand.removeChild(this.expandChild);\n this.expand = this.expandChild = this.shrink = this.element = null;\n }\n }\n checkSize() {\n if (super.checkSize()) {\n this.reset();\n return true;\n }\n }\n init() {\n const parentElement = this.parentElement = this.element.nativeElement.parentElement;\n if (computedProp(parentElement, 'position') === 'static') {\n parentElement.style.position = 'relative';\n }\n this.state = 2 /* Initialized */;\n this.render();\n this.reset();\n this.initSize();\n this.subscribe();\n }\n render() {\n const element = this.element.nativeElement;\n element.style.cssText = WRAP_STYLE;\n element.setAttribute('dir', 'ltr');\n this.expand = div(WRAP_STYLE);\n this.expandChild = div(EXPAND_CHILD_STYLE);\n this.expand.appendChild(this.expandChild);\n element.appendChild(this.expand);\n this.shrink = div(WRAP_STYLE);\n const shrinkChild = div(SHRINK_CHILD_STYLE);\n this.shrink.appendChild(shrinkChild);\n element.appendChild(this.shrink);\n }\n reset() {\n const expandChild = this.expandChild;\n expandChild.style.width = 100000 + 'px';\n expandChild.style.height = 100000 + 'px';\n const expand = this.expand;\n expand.scrollLeft = 100000;\n expand.scrollTop = 100000;\n const shrink = this.shrink;\n shrink.scrollLeft = 100000;\n shrink.scrollTop = 100000;\n }\n subscribe() {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = merge(fromEvent(this.shrink, 'scroll'), fromEvent(this.expand, 'scroll'))\n .subscribe(() => {\n this.checkSize();\n });\n });\n }\n}\n\nconst HAS_OBSERVER = typeof ResizeObserver !== 'undefined';\n/**\n * @hidden\n */\nclass ResizeObserverService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n static supported() {\n return HAS_OBSERVER;\n }\n destroy() {\n super.destroy();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n this.parentElement = null;\n }\n init() {\n this.parentElement = this.element.nativeElement.parentElement;\n this.initSize();\n this.state = 2 /* Initialized */;\n this.ngZone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkSize();\n });\n this.resizeObserver.observe(this.parentElement);\n });\n }\n}\n\n/**\n * @hidden\n */\nlet ResizeBatchService = class ResizeBatchService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.scheduled = [];\n this.resolvedPromise = Promise.resolve(null);\n this.flush = this.flush.bind(this);\n }\n schedule(instance, method) {\n this.scheduled.push({ instance, method });\n if (!this.subscription) {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = from(this.resolvedPromise)\n .subscribe(this.flush);\n });\n }\n }\n isScheduled(instance) {\n return Boolean(this.scheduled.find(item => item.instance === instance));\n }\n cancel(instance) {\n const scheduled = this.scheduled;\n const count = scheduled.length;\n for (let idx = 0; idx < count; idx++) {\n if (scheduled[idx].instance === instance) {\n scheduled.splice(idx, 1);\n if (!scheduled.length) {\n this.unsubscribe();\n }\n return;\n }\n }\n }\n ngOnDestroy() {\n this.unsubscribe();\n }\n unsubscribe() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n }\n flush() {\n this.scheduled.forEach(item => {\n item.method.call(item.instance);\n });\n this.scheduled = [];\n this.unsubscribe();\n }\n};\nResizeBatchService.ɵfac = function ResizeBatchService_Factory(t) { return new (t || ResizeBatchService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nResizeBatchService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResizeBatchService, factory: function (t) { return ResizeBatchService.ɵfac(t); } });\nResizeBatchService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], ResizeBatchService);\n\n/**\n * Emit up to 10 resize events per second by default.\n * Chosen as a compromise between responsiveness and performance.\n */\nconst DEFAULT_RATE_LIMIT = 10;\n/**\n * Resize Sensor Component\n *\n * Triggers a \"resize\" event whenever the parent DOM element size changes.\n */\nlet ResizeSensorComponent = class ResizeSensorComponent {\n constructor(resizeBatchService, element, ngZone) {\n /**\n * The maximum number of resize events to emit per second.\n *\n * Defaults to 10.\n */\n this.rateLimit = DEFAULT_RATE_LIMIT;\n /**\n * Fires when the parent DOM element has been resized.\n */\n this.resize = new EventEmitter();\n const serviceType = ResizeObserverService.supported() ? ResizeObserverService : ResizeCompatService;\n this.resizeService = new serviceType(resizeBatchService, element, ngZone);\n const throttleTime = 1000 / (this.rateLimit || DEFAULT_RATE_LIMIT);\n this.subscription = this.resizeService.resize\n .pipe(auditTime(throttleTime))\n .subscribe(() => {\n if (!this.resizeService.acceptedSize) {\n this.resize.emit();\n }\n });\n }\n ngAfterViewChecked() {\n this.resizeService.checkChanges();\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.resizeService.destroy();\n }\n acceptSize(size) {\n this.resizeService.acceptSize(size);\n }\n};\nResizeSensorComponent.ɵfac = function ResizeSensorComponent_Factory(t) { return new (t || ResizeSensorComponent)(ɵngcc0.ɵɵdirectiveInject(ResizeBatchService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nResizeSensorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ResizeSensorComponent, selectors: [[\"kendo-resize-sensor\"]], inputs: { rateLimit: \"rateLimit\" }, outputs: { resize: \"resize\" }, decls: 0, vars: 0, template: function ResizeSensorComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ResizeSensorComponent.prototype, \"rateLimit\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ResizeSensorComponent.prototype, \"resize\", void 0);\nResizeSensorComponent = __decorate([ __metadata(\"design:paramtypes\", [ResizeBatchService, ElementRef, NgZone])\n], ResizeSensorComponent);\n\nconst COMPONENT_DIRECTIVES = [ResizeSensorComponent];\n/**\n * Resize Sensor module\n */\nlet ResizeSensorModule = class ResizeSensorModule {\n};\nResizeSensorModule.ɵfac = function ResizeSensorModule_Factory(t) { return new (t || ResizeSensorModule)(); };\nResizeSensorModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ResizeSensorModule });\nResizeSensorModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [ResizeBatchService] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDraggable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { enableDrag: [{\n type: Input\n }], kendoPress: [{\n type: Output\n }], kendoDrag: [{\n type: Output\n }], kendoRelease: [{\n type: Output\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableModule, [{\n type: NgModule,\n args: [{\n declarations: [DraggableDirective],\n exports: [DraggableDirective],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DraggableModule, { declarations: function () { return [DraggableDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [DraggableDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EventsOutsideAngularDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoEventsOutsideAngular]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { events: [{\n type: Input,\n args: ['kendoEventsOutsideAngular']\n }], scope: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EventsModule, [{\n type: NgModule,\n args: [{\n declarations: [EventsOutsideAngularDirective],\n exports: [EventsOutsideAngularDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(EventsModule, { declarations: [EventsOutsideAngularDirective], exports: [EventsOutsideAngularDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeBatchService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeSensorComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-resize-sensor',\n template: ''\n }]\n }], function () { return [{ type: ResizeBatchService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { rateLimit: [{\n type: Input\n }], resize: [{\n type: Output\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeSensorModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n providers: [ResizeBatchService]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ResizeSensorModule, { declarations: [ResizeSensorComponent], exports: [ResizeSensorComponent] }); })();\n\nclass KendoInput {\n}\n\n/**\n * Enum with key codes.\n */\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"Alt\"] = 18] = \"Alt\";\n Keys[Keys[\"ArrowDown\"] = 40] = \"ArrowDown\";\n Keys[Keys[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Keys[Keys[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Keys[Keys[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Keys[Keys[\"Backspace\"] = 8] = \"Backspace\";\n Keys[Keys[\"Control\"] = 17] = \"Control\";\n Keys[Keys[\"Delete\"] = 46] = \"Delete\";\n Keys[Keys[\"Digit0\"] = 48] = \"Digit0\";\n Keys[Keys[\"Digit1\"] = 49] = \"Digit1\";\n Keys[Keys[\"Digit2\"] = 50] = \"Digit2\";\n Keys[Keys[\"Digit3\"] = 51] = \"Digit3\";\n Keys[Keys[\"Digit4\"] = 52] = \"Digit4\";\n Keys[Keys[\"Digit5\"] = 53] = \"Digit5\";\n Keys[Keys[\"Digit6\"] = 54] = \"Digit6\";\n Keys[Keys[\"Digit7\"] = 55] = \"Digit7\";\n Keys[Keys[\"Digit8\"] = 56] = \"Digit8\";\n Keys[Keys[\"Digit9\"] = 57] = \"Digit9\";\n Keys[Keys[\"End\"] = 35] = \"End\";\n Keys[Keys[\"Enter\"] = 13] = \"Enter\";\n Keys[Keys[\"Escape\"] = 27] = \"Escape\";\n Keys[Keys[\"F1\"] = 112] = \"F1\";\n Keys[Keys[\"F2\"] = 113] = \"F2\";\n Keys[Keys[\"F10\"] = 121] = \"F10\";\n Keys[Keys[\"Home\"] = 36] = \"Home\";\n Keys[Keys[\"Insert\"] = 45] = \"Insert\";\n Keys[Keys[\"KeyA\"] = 65] = \"KeyA\";\n Keys[Keys[\"KeyB\"] = 66] = \"KeyB\";\n Keys[Keys[\"KeyC\"] = 67] = \"KeyC\";\n Keys[Keys[\"KeyD\"] = 68] = \"KeyD\";\n Keys[Keys[\"KeyE\"] = 69] = \"KeyE\";\n Keys[Keys[\"KeyF\"] = 70] = \"KeyF\";\n Keys[Keys[\"KeyG\"] = 71] = \"KeyG\";\n Keys[Keys[\"KeyH\"] = 72] = \"KeyH\";\n Keys[Keys[\"KeyI\"] = 73] = \"KeyI\";\n Keys[Keys[\"KeyJ\"] = 74] = \"KeyJ\";\n Keys[Keys[\"KeyK\"] = 75] = \"KeyK\";\n Keys[Keys[\"KeyL\"] = 76] = \"KeyL\";\n Keys[Keys[\"KeyM\"] = 77] = \"KeyM\";\n Keys[Keys[\"KeyN\"] = 78] = \"KeyN\";\n Keys[Keys[\"KeyO\"] = 79] = \"KeyO\";\n Keys[Keys[\"KeyP\"] = 80] = \"KeyP\";\n Keys[Keys[\"KeyQ\"] = 81] = \"KeyQ\";\n Keys[Keys[\"KeyR\"] = 82] = \"KeyR\";\n Keys[Keys[\"KeyS\"] = 83] = \"KeyS\";\n Keys[Keys[\"KeyT\"] = 84] = \"KeyT\";\n Keys[Keys[\"KeyU\"] = 85] = \"KeyU\";\n Keys[Keys[\"KeyV\"] = 86] = \"KeyV\";\n Keys[Keys[\"KeyW\"] = 87] = \"KeyW\";\n Keys[Keys[\"KeyX\"] = 88] = \"KeyX\";\n Keys[Keys[\"KeyY\"] = 89] = \"KeyY\";\n Keys[Keys[\"KeyZ\"] = 90] = \"KeyZ\";\n Keys[Keys[\"NumpadDecimal\"] = 110] = \"NumpadDecimal\";\n Keys[Keys[\"PageDown\"] = 34] = \"PageDown\";\n Keys[Keys[\"PageUp\"] = 33] = \"PageUp\";\n Keys[Keys[\"Shift\"] = 16] = \"Shift\";\n Keys[Keys[\"Space\"] = 32] = \"Space\";\n Keys[Keys[\"Tab\"] = 9] = \"Tab\";\n})(Keys || (Keys = {}));\n\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ResizeService, PreventableEvent, DraggableDirective, DraggableModule, closestInScope, closest, contains, findElement, findFocusableChild, findFocusable, hasClasses, isFocusableWithTabKey, isFocusable, isVisible, matchesClasses, matchesNodeName, rtlScrollPosition, EventsOutsideAngularDirective, EventsModule, ResizeSensorComponent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorModule, KendoInput, isDocumentAvailable, isChanged, anyChanged, hasObservers, guid, Keys };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, Injectable, Directive, Optional, TemplateRef, forwardRef, isDevMode, HostBinding, ViewChild, ViewContainerRef, Input, Output, ContentChild, Component, ChangeDetectionStrategy, ElementRef, ChangeDetectorRef, NgZone, Renderer2, ComponentFactoryResolver, Host, NgModule } from '@angular/core';\nimport { isDocumentAvailable, Keys, anyChanged, hasObservers, isChanged, guid } from '@progress/kendo-angular-common';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subject, of, BehaviorSubject, Subscription, EMPTY, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, setter } from '@progress/kendo-common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { filter, catchError, tap, finalize, switchMap, take, map, delay, takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport Draggable from '@telerik/kendo-draggable';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-inputs';\n\nconst _c0 = [\"assetsContainer\"];\nfunction TreeViewComponent_kendo_textbox_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 6);\n} }\nfunction TreeViewComponent_kendo_textbox_0_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-textbox\", 3, 4);\n ɵngcc0.ɵɵlistener(\"valueChange\", function TreeViewComponent_kendo_textbox_0_Template_kendo_textbox_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.filterChange.emit($event); });\n ɵngcc0.ɵɵtemplate(2, TreeViewComponent_kendo_textbox_0_ng_template_2_Template, 1, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", ctx_r0.filter)(\"clearButton\", true)(\"placeholder\", ctx_r0.filterInputPlaceholder);\n} }\nconst _c1 = [\"kendoTreeViewGroup\", \"\"];\nfunction TreeViewGroupComponent_li_0_span_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function TreeViewGroupComponent_li_0_span_2_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); const index_r3 = ctx_r10.index; const node_r2 = ctx_r10.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.expandNode(ctx_r9.nodeIndex(index_r3), node_r2, !ctx_r9.isExpanded(node_r2, ctx_r9.nodeIndex(index_r3))); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r12.$implicit;\n const index_r3 = ctx_r12.index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-i-collapse\", ctx_r4.isExpanded(node_r2, ctx_r4.nodeIndex(index_r3)))(\"k-i-expand\", !ctx_r4.isExpanded(node_r2, ctx_r4.nodeIndex(index_r3)));\n ɵngcc0.ɵɵproperty(\"kendoTreeViewLoading\", ctx_r4.nodeIndex(index_r3));\n} }\nfunction TreeViewGroupComponent_li_0_kendo_checkbox_3_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-checkbox\", 12);\n ɵngcc0.ɵɵlistener(\"checkStateChange\", function TreeViewGroupComponent_li_0_kendo_checkbox_3_Template_kendo_checkbox_checkStateChange_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const index_r3 = ɵngcc0.ɵɵnextContext().index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.checkNode(ctx_r13.nodeIndex(index_r3)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r16.$implicit;\n const index_r3 = ctx_r16.index;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"node\", node_r2)(\"index\", ctx_r5.nodeIndex(index_r3))(\"isChecked\", ctx_r5.isChecked);\n} }\nfunction TreeViewGroupComponent_li_0_ng_container_6_ng_template_1_Template(rf, ctx) { }\nconst _c2 = function (a0, a1) { return { $implicit: a0, index: a1 }; };\nfunction TreeViewGroupComponent_li_0_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TreeViewGroupComponent_li_0_ng_container_6_ng_template_1_Template, 0, 0, \"ng-template\", 13);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r18.$implicit;\n const index_r3 = ctx_r18.index;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r6.nodeTemplateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c2, node_r2, ctx_r6.nodeIndex(index_r3)));\n} }\nfunction TreeViewGroupComponent_li_0_ng_container_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const node_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r7.nodeText(node_r2), \" \");\n} }\nfunction TreeViewGroupComponent_li_0_ul_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 14);\n} if (rf & 2) {\n const ctx_r20 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r20.$implicit;\n const index_r3 = ctx_r20.index;\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"nodes\", ctx_r8.fetchChildren)(\"loadOnDemand\", ctx_r8.loadOnDemand)(\"checkboxes\", ctx_r8.checkboxes)(\"expandIcons\", ctx_r8.expandIcons)(\"selectable\", ctx_r8.selectable)(\"touchActions\", ctx_r8.touchActions)(\"children\", ctx_r8.children)(\"hasChildren\", ctx_r8.hasChildren)(\"isChecked\", ctx_r8.isChecked)(\"isDisabled\", ctx_r8.isDisabled)(\"disabled\", ctx_r8.disabled || ctx_r8.isDisabled(node_r2, ctx_r8.nodeIndex(index_r3)))(\"isExpanded\", ctx_r8.isExpanded)(\"isSelected\", ctx_r8.isSelected)(\"isVisible\", ctx_r8.isVisible)(\"nodeTemplateRef\", ctx_r8.nodeTemplateRef)(\"loadMoreButtonTemplateRef\", ctx_r8.loadMoreButtonTemplateRef)(\"parentIndex\", ctx_r8.nodeIndex(index_r3))(\"parentDataItem\", node_r2)(\"textField\", ctx_r8.nextFields)(\"loadMoreService\", ctx_r8.loadMoreService)(\"@toggle\", true)(\"trackBy\", ctx_r8.trackBy);\n} }\nfunction TreeViewGroupComponent_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 2)(1, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, TreeViewGroupComponent_li_0_span_2_Template, 1, 5, \"span\", 4);\n ɵngcc0.ɵɵtemplate(3, TreeViewGroupComponent_li_0_kendo_checkbox_3_Template, 1, 3, \"kendo-checkbox\", 5);\n ɵngcc0.ɵɵelementStart(4, \"span\", 6);\n ɵngcc0.ɵɵelementContainerStart(5, 7);\n ɵngcc0.ɵɵtemplate(6, TreeViewGroupComponent_li_0_ng_container_6_Template, 2, 5, \"ng-container\", 8);\n ɵngcc0.ɵɵtemplate(7, TreeViewGroupComponent_li_0_ng_container_7_Template, 2, 1, \"ng-container\", 9);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(8, TreeViewGroupComponent_li_0_ul_8_Template, 1, 22, \"ul\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const node_r2 = ctx.$implicit;\n const index_r3 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-display-none\", !ctx_r0.isVisible(node_r2, ctx_r0.nodeIndex(index_r3)));\n ɵngcc0.ɵɵproperty(\"dataItem\", node_r2)(\"index\", ctx_r0.nodeIndex(index_r3))(\"parentDataItem\", ctx_r0.parentDataItem)(\"parentIndex\", ctx_r0.parentIndex)(\"loadOnDemand\", ctx_r0.loadOnDemand)(\"checkable\", ctx_r0.checkboxes)(\"isChecked\", ctx_r0.isChecked(node_r2, ctx_r0.nodeIndex(index_r3)))(\"isDisabled\", ctx_r0.disabled || ctx_r0.isDisabled(node_r2, ctx_r0.nodeIndex(index_r3)))(\"isVisible\", ctx_r0.isVisible(node_r2, ctx_r0.nodeIndex(index_r3)))(\"expandable\", ctx_r0.expandIcons && ctx_r0.hasChildren(node_r2))(\"isExpanded\", ctx_r0.isExpanded(node_r2, ctx_r0.nodeIndex(index_r3)))(\"selectable\", ctx_r0.selectable)(\"isSelected\", ctx_r0.isSelected(node_r2, ctx_r0.nodeIndex(index_r3)));\n ɵngcc0.ɵɵattribute(\"aria-setsize\", ctx_r0.totalNodesCount)(\"data-treeindex\", ctx_r0.nodeIndex(index_r3));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.expandIcons && ctx_r0.hasChildren(node_r2));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.checkboxes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx_r0.touchActions ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"dataItem\", node_r2)(\"index\", ctx_r0.nodeIndex(index_r3))(\"initialSelection\", ctx_r0.isSelected(node_r2, ctx_r0.nodeIndex(index_r3)))(\"isSelected\", ctx_r0.isSelected);\n ɵngcc0.ɵɵattribute(\"data-treeindex\", ctx_r0.nodeIndex(index_r3));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx_r0.hasTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.isExpanded(node_r2, ctx_r0.nodeIndex(index_r3)) && ctx_r0.hasChildren(node_r2));\n} }\nfunction TreeViewGroupComponent_li_1_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 19);\n} }\nfunction TreeViewGroupComponent_li_1_4_ng_template_0_Template(rf, ctx) { }\nconst _c3 = function (a0) { return { index: a0 }; };\nfunction TreeViewGroupComponent_li_1_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeViewGroupComponent_li_1_4_ng_template_0_Template, 0, 0, \"ng-template\", 13);\n} if (rf & 2) {\n const ctx_r22 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r22.loadMoreButtonTemplateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r22.loadMoreButtonIndex));\n} }\nfunction TreeViewGroupComponent_li_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1, \" Load more \");\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction TreeViewGroupComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 15)(1, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, TreeViewGroupComponent_li_1_span_2_Template, 1, 0, \"span\", 16);\n ɵngcc0.ɵɵelementStart(3, \"span\", 17);\n ɵngcc0.ɵɵtemplate(4, TreeViewGroupComponent_li_1_4_Template, 1, 4, null, 18);\n ɵngcc0.ɵɵtemplate(5, TreeViewGroupComponent_li_1_ng_container_5_Template, 2, 0, \"ng-container\", 18);\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-treeview-load-more-checkboxes-container\", ctx_r1.checkboxes);\n ɵngcc0.ɵɵproperty(\"selectable\", false)(\"checkable\", false)(\"expandable\", false)(\"index\", ctx_r1.loadMoreButtonIndex)(\"parentDataItem\", ctx_r1.parentDataItem)(\"parentIndex\", ctx_r1.parentIndex);\n ɵngcc0.ɵɵattribute(\"data-treeindex\", ctx_r1.loadMoreButtonIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.loadingMoreNodes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"index\", ctx_r1.loadMoreButtonIndex);\n ɵngcc0.ɵɵattribute(\"data-treeindex\", ctx_r1.loadMoreButtonIndex);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.loadMoreButtonTemplateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.loadMoreButtonTemplateRef);\n} }\nfunction DragClueComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"span\");\n ɵngcc0.ɵɵelementStart(2, \"span\");\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"k-icon \", ctx_r0.statusIconClass, \" k-drag-status\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.text);\n} }\nfunction DragClueComponent_1_ng_template_0_Template(rf, ctx) { }\nconst _c4 = function (a0, a1, a2, a3) { return { text: a0, action: a1, sourceItem: a2, destinationItem: a3 }; };\nfunction DragClueComponent_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DragClueComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 1);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction4(2, _c4, ctx_r1.text, ctx_r1.action, ctx_r1.sourceItem, ctx_r1.destinationItem));\n} }\nfunction DropHintComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵelement(1, \"div\", 3)(2, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction DropHintComponent_1_ng_template_0_ng_template_0_Template(rf, ctx) { }\nfunction DropHintComponent_1_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropHintComponent_1_ng_template_0_ng_template_0_Template, 0, 0, \"ng-template\");\n} }\nconst _c5 = function (a0, a1, a2) { return { action: a0, sourceItem: a1, destinationItem: a2 }; };\nfunction DropHintComponent_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropHintComponent_1_ng_template_0_Template, 1, 0, \"ng-template\", 5);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c5, ctx_r1.action, ctx_r1.sourceItem, ctx_r1.destinationItem));\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-treeview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1638439762,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass DataChangeNotificationService {\n constructor() {\n this.changes = new EventEmitter();\n }\n notify() {\n this.changes.emit();\n }\n}\nDataChangeNotificationService.ɵfac = function DataChangeNotificationService_Factory(t) { return new (t || DataChangeNotificationService)(); };\nDataChangeNotificationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataChangeNotificationService, factory: DataChangeNotificationService.ɵfac });\n\n/**\n * @hidden\n */\nconst hasChildren = () => false;\n/**\n * @hidden\n */\nconst isChecked = () => 'none';\n/**\n * @hidden\n */\nconst isDisabled = () => false;\n/**\n * @hidden\n */\nconst isExpanded = () => true;\n/**\n * @hidden\n */\nconst isSelected = () => false;\n/**\n * @hidden\n */\nconst isVisible = () => true;\n/**\n * @hidden\n */\nconst trackBy = (_, item) => item;\n\n/**\n * @hidden\n */\nlet ExpandStateService = class ExpandStateService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new Subject();\n }\n expand(index, dataItem) {\n this.changes.next({ dataItem, index, expand: true });\n }\n collapse(index, dataItem) {\n this.changes.next({ dataItem, index, expand: false });\n }\n};\nExpandStateService.ɵfac = function ExpandStateService_Factory(t) { return new (t || ExpandStateService)(); };\nExpandStateService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ExpandStateService, factory: function (t) { return ExpandStateService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet IndexBuilderService = class IndexBuilderService {\n /**\n * @hidden\n */\n constructor() {\n this.INDEX_SEPARATOR = '_';\n }\n nodeIndex(index = '', parentIndex = '') {\n return `${parentIndex}${parentIndex ? this.INDEX_SEPARATOR : ''}${index}`;\n }\n indexForLevel(index, level) {\n return index.split(this.INDEX_SEPARATOR).slice(0, level).join(this.INDEX_SEPARATOR);\n }\n lastLevelIndex(index = '') {\n const parts = index.split(this.INDEX_SEPARATOR);\n if (!parts.length) {\n return NaN;\n }\n return parseInt(parts[parts.length - 1], 10);\n }\n level(index) {\n return index.split(this.INDEX_SEPARATOR).length;\n }\n};\nIndexBuilderService.ɵfac = function IndexBuilderService_Factory(t) { return new (t || IndexBuilderService)(); };\nIndexBuilderService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: IndexBuilderService, factory: function (t) { return IndexBuilderService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet LoadingNotificationService = class LoadingNotificationService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new Subject();\n }\n notifyLoaded(index) {\n this.changes.next(index);\n }\n};\nLoadingNotificationService.ɵfac = function LoadingNotificationService_Factory(t) { return new (t || LoadingNotificationService)(); };\nLoadingNotificationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LoadingNotificationService, factory: function (t) { return LoadingNotificationService.ɵfac(t); } });\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst match = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n */\nconst closestWithMatch = (element, selector) => {\n if (!document.documentElement.contains(element)) {\n return null;\n }\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (match(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n */\nconst noop = () => { };\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nconst isBoolean = (value) => typeof value === 'boolean';\n/**\n * @hidden\n */\nconst closestNode = (element) => {\n const selector = 'li.k-treeview-item';\n if (!isDocumentAvailable()) {\n return null;\n }\n if (element.closest) {\n return element.closest(selector);\n }\n else {\n return closestWithMatch(element, selector);\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst isContent = (element) => {\n const scopeSelector = '.k-in:not(.k-treeview-load-more-button),.k-treeview-item,.k-treeview';\n if (!isDocumentAvailable()) {\n return null;\n }\n let node = element;\n while (node && !match(node, scopeSelector)) {\n node = node.parentNode;\n }\n if (node) {\n return match(node, '.k-in:not(.k-treeview-load-more-button)');\n }\n};\n/**\n * @hidden\n *\n * Returns the nested .k-in:not(.k-treeview-load-more-button) element.\n * If the passed parent item is itself a content node, it is returned.\n */\nconst getContentElement = (parent) => {\n if (!isPresent(parent)) {\n return null;\n }\n const selector = '.k-in:not(.k-treeview-load-more-button)';\n if (match(parent, selector)) {\n return parent;\n }\n return parent.querySelector(selector);\n};\n/**\n * @hidden\n */\nconst isLoadMoreButton = (element) => {\n return isPresent(closestWithMatch(element, '.k-in.k-treeview-load-more-button'));\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst hasParent = (element, container) => {\n return Boolean(closest(element, (node) => node === container));\n};\n/**\n * @hidden\n */\nconst focusableNode = (element) => element.nativeElement.querySelector('li[tabindex=\"0\"]');\n/**\n * @hidden\n */\nconst nodeId = (node) => node ? node.getAttribute('data-treeindex') : '';\n/**\n * @hidden\n */\nconst nodeIndex = (item) => (item || {}).index;\n/**\n * @hidden\n */\nconst dataItemsEqual = (first, second) => {\n if (!isPresent(first) && !isPresent(second)) {\n return true;\n }\n return isPresent(first) && isPresent(second) && first.item.dataItem === second.item.dataItem;\n};\n/**\n * @hidden\n */\nconst getDataItem = (lookup) => {\n if (!isPresent(lookup)) {\n return lookup;\n }\n return lookup.item.dataItem;\n};\n/**\n * @hidden\n */\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\n/**\n * @hidden\n * A recursive tree-filtering algorithm that returns:\n * - all child nodes of matching nodes\n * - a chain parent nodes from the match to the root node\n */\nconst filterTree = (items, term, { operator, ignoreCase, mode }, textField, depth = 0) => {\n const field = typeof textField === \"string\" ? textField : textField[depth];\n items.forEach((wrapper) => {\n const matcher = typeof operator === \"string\" ? matchByFieldAndCase(field, operator, ignoreCase) : operator;\n const isMatch = matcher(wrapper.dataItem, term);\n wrapper.isMatch = isMatch;\n wrapper.visible = isMatch;\n wrapper.containsMatches = false;\n if (isMatch) {\n setParentChain(wrapper.parent);\n }\n if (wrapper.children && wrapper.children.length > 0) {\n if (mode === \"strict\" || !isMatch) {\n filterTree(wrapper.children, term, { operator, ignoreCase, mode }, textField, depth + 1);\n }\n else {\n makeAllVisible(wrapper.children);\n }\n }\n });\n};\nconst setParentChain = (node) => {\n if (!isPresent(node)) {\n return;\n }\n node.containsMatches = true;\n node.visible = true;\n if (isPresent(node.parent) && !node.parent.containsMatches) {\n setParentChain(node.parent);\n }\n};\nconst makeAllVisible = (nodes) => {\n nodes.forEach(node => {\n node.visible = true;\n if (node.children) {\n makeAllVisible(node.children);\n }\n });\n};\nconst ɵ2 = (a, b) => a.indexOf(b) >= 0, ɵ3 = (a, b) => a.indexOf(b) === -1, ɵ4 = (a, b) => a.lastIndexOf(b, 0) === 0, ɵ5 = (a, b) => a.lastIndexOf(b, 0) === -1, ɵ6 = (a, b) => a.indexOf(b, a.length - b.length) >= 0, ɵ7 = (a, b) => a.indexOf(b, a.length - b.length) < 0;\nconst operators = {\n contains: ɵ2,\n doesnotcontain: ɵ3,\n startswith: ɵ4,\n doesnotstartwith: ɵ5,\n endswith: ɵ6,\n doesnotendwith: ɵ7\n};\nconst matchByCase = (matcher, ignoreCase) => (a, b) => {\n if (ignoreCase) {\n return matcher(a.toLowerCase(), b.toLowerCase());\n }\n return matcher(a, b);\n};\nconst matchByFieldAndCase = (field, operator, ignoreCase) => (dataItem, term) => matchByCase(operators[operator], ignoreCase)(getter(field)(dataItem), term);\n/**\n * @hidden\n */\nconst buildTreeIndex = (parentIndex, itemIndex) => {\n return [parentIndex, itemIndex].filter(part => isPresent(part)).join('_');\n};\n/**\n * @hidden\n */\nconst buildTreeItem = (dataItem, currentLevelIndex, parentIndex) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n return {\n dataItem,\n index: buildTreeIndex(parentIndex, currentLevelIndex)\n };\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchLoadedDescendants = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(filterExpression);\n }\n descendants.forEach(child => descendants = descendants.concat(fetchLoadedDescendants(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Compares two arrays to determine whether all unique elements in one, are present in the other.\n * Important:\n * - it disregards the element order\n * - it disregards element repetitions - sameValues([1, 1, 2], [1, 2, 2]) will return true\n */\nconst sameValues = (a, b) => {\n if (a.length !== b.length) {\n return false;\n }\n const values = new Set(b);\n return a.every(v => values.has(v));\n};\n\nconst safe = node => (node || {});\nconst safeChildren = node => (safe(node).children || []);\nconst lastVisibleNode = (nodes) => {\n if (!Array.isArray(nodes) || nodes.length === 0) {\n return null;\n }\n const nodesCount = nodes.length;\n const lastIndex = nodesCount - 1;\n for (let index = lastIndex; index >= 0; index -= 1) {\n const node = nodes[index];\n if (node.visible) {\n return node;\n }\n }\n return null;\n};\n/**\n * @hidden\n */\nclass NavigationModel {\n constructor() {\n this.ib = new IndexBuilderService();\n this.nodes = [];\n }\n firstVisibleNode() {\n return (this.nodes || []).find(node => node.visible);\n }\n lastVisibleNode() {\n let node = lastVisibleNode(this.nodes);\n while (isPresent(node) && safeChildren(node).length > 0) {\n const children = safeChildren(node);\n const lastVisibleChild = lastVisibleNode(children);\n if (!isPresent(lastVisibleChild)) {\n return node;\n }\n node = lastVisibleChild;\n }\n return node;\n }\n closestNode(index) {\n const { prev } = safe(this.findNode(index));\n const sibling = prev || this.firstVisibleNode();\n return safe(sibling).index === index ? this.visibleSibling(sibling, 1) : sibling;\n }\n firstFocusableNode() {\n return this.nodes.find((node) => {\n return !node.disabled && node.visible;\n });\n }\n findNode(index) {\n return this.find(index, this.nodes);\n }\n findParent(index) {\n const parentLevel = this.ib.level(index) - 1;\n return this.findNode(this.ib.indexForLevel(index, parentLevel));\n }\n findVisibleChild(index) {\n const node = this.findNode(index);\n const children = safeChildren(node);\n return children.find((child) => child.visible);\n }\n findVisiblePrev(item) {\n const index = item.index;\n const parent = this.findParent(index);\n const levelIndex = this.ib.lastLevelIndex(index);\n const prevNodes = this.container(parent).slice(0, levelIndex);\n const prevNodesHidden = prevNodes.every(node => !node.visible);\n if (levelIndex === 0 || prevNodesHidden) {\n return parent;\n }\n const currentNode = this.findNode(index);\n let prev = this.visibleSibling(currentNode, -1);\n if (prev) {\n let children = this.container(prev);\n while (children.length > 0 && children.some(node => node.visible)) {\n prev = lastVisibleNode(children);\n children = this.container(prev);\n }\n }\n return prev;\n }\n findVisibleNext(item) {\n const children = this.container(item);\n const hasVisibleChildren = children.some(child => child.visible);\n if (children.length === 0 || !hasVisibleChildren) {\n return this.visibleSibling(item, 1);\n }\n return children.find(child => child.visible);\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const children = [];\n const level = this.ib.level(index);\n const parent = this.findParent(index);\n if (parent || level === 1) {\n const node = { id, children, index, parent, disabled, loadMoreButton, visible };\n this.insert(node, parent);\n }\n }\n unregisterItem(id, index) {\n const node = this.find(index, this.nodes);\n if (!node || node.id !== id) {\n return;\n }\n const children = this.container(node.parent);\n children.splice(children.indexOf(node), 1);\n }\n childLevel(nodes) {\n const children = nodes.filter(node => isPresent(node));\n if (!children || !children.length) {\n return 1;\n }\n return this.ib.level(children[0].index);\n }\n container(node) {\n return node ? node.children : this.nodes;\n }\n find(index, nodes) {\n const childLevel = this.childLevel(nodes);\n const indexToMatch = this.ib.indexForLevel(index, childLevel);\n const isLeaf = childLevel === this.ib.level(index);\n const node = nodes.find(n => n && n.index === indexToMatch);\n if (!node) {\n return null;\n }\n return isLeaf ? node : this.find(index, node.children);\n }\n insert(node, parent) {\n const nodes = this.container(parent);\n nodes.splice(this.ib.lastLevelIndex(node.index), 0, node);\n }\n visibleSibling(node, offset) {\n if (!node) {\n return null;\n }\n const parent = this.findParent(node.index);\n const container = this.container(parent);\n let nextItemIndex = container.indexOf(node) + offset;\n let nextItem = container[nextItemIndex];\n while (isPresent(nextItem)) {\n if (nextItem.visible) {\n return nextItem;\n }\n nextItemIndex += offset;\n nextItem = container[nextItemIndex];\n }\n return this.visibleSibling(parent, offset);\n }\n}\n\n/**\n * @hidden\n */\nlet NavigationService = class NavigationService {\n constructor(localization) {\n this.localization = localization;\n this.expands = new Subject();\n this.moves = new Subject();\n this.checks = new Subject();\n this.selects = new Subject();\n this.loadMore = new Subject();\n this.navigable = true;\n this.actions = {\n [Keys.ArrowUp]: () => this.activate(this.model.findVisiblePrev(this.focusableItem)),\n [Keys.ArrowDown]: () => this.activate(this.model.findVisibleNext(this.focusableItem)),\n [Keys.ArrowLeft]: () => !this.isLoadMoreButton && (this.expand({\n expand: this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToFirstVisibleChild : this.moveToParent\n })),\n [Keys.ArrowRight]: () => !this.isLoadMoreButton && (this.expand({\n expand: !this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToParent : this.moveToFirstVisibleChild\n })),\n [Keys.Home]: () => this.activate(this.model.firstVisibleNode()),\n [Keys.End]: () => this.activate(this.model.lastVisibleNode()),\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Space]: () => this.handleSpace()\n };\n this.isFocused = false;\n this._model = new NavigationModel();\n this.moveToFirstVisibleChild = this.moveToFirstVisibleChild.bind(this);\n this.moveToParent = this.moveToParent.bind(this);\n }\n get model() {\n return this._model;\n }\n set model(model) {\n this._model = model;\n }\n get activeIndex() {\n return nodeIndex(this.activeItem) || null;\n }\n get isActiveExpanded() {\n return this.activeItem && this.activeItem.children.length > 0;\n }\n get isLoadMoreButton() {\n return this.activeItem && this.activeItem.loadMoreButton;\n }\n get focusableItem() {\n return this.activeItem || this.model.firstFocusableNode();\n }\n activate(item) {\n if (!this.navigable || !item || this.isActive(nodeIndex(item))) {\n return;\n }\n this.isFocused = true;\n this.activeItem = item || this.activeItem;\n this.notifyMove();\n }\n activateParent(index) {\n this.activate(this.model.findParent(index));\n }\n activateIndex(index) {\n if (!index) {\n return;\n }\n this.activate(this.model.findNode(index));\n }\n activateClosest(index) {\n if (!index || nodeIndex(this.focusableItem) !== index) {\n return;\n }\n this.activeItem = this.model.closestNode(index);\n this.notifyMove();\n }\n activateFocusable() {\n if (this.activeItem) {\n return;\n }\n this.activeItem = this.model.firstVisibleNode();\n this.notifyMove();\n }\n deactivate() {\n if (!this.navigable || !this.isFocused) {\n return;\n }\n this.isFocused = false;\n this.notifyMove();\n }\n checkIndex(index) {\n if (!this.isDisabled(index)) {\n this.checks.next(index);\n }\n }\n selectIndex(index) {\n if (!this.isDisabled(index)) {\n this.selects.next(index);\n }\n }\n notifyLoadMore(index) {\n if (!isPresent(index)) {\n return;\n }\n this.loadMore.next(index);\n }\n isActive(index) {\n if (!index) {\n return false;\n }\n return this.isFocused && this.activeIndex === index;\n }\n isFocusable(index) {\n return nodeIndex(this.focusableItem) === index;\n }\n isDisabled(index) {\n return this.model.findNode(index).disabled;\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const itemAtIndex = this.model.findNode(index);\n if (isPresent(itemAtIndex)) {\n this.model.unregisterItem(itemAtIndex.id, itemAtIndex.index);\n if (this.isActive(index)) {\n this.deactivate();\n }\n }\n this.model.registerItem(id, index, disabled, loadMoreButton, visible);\n }\n unregisterItem(id, index) {\n if (this.isActive(index)) {\n this.activateParent(index);\n }\n this.model.unregisterItem(id, index);\n }\n move(e) {\n if (!this.navigable) {\n return;\n }\n const moveAction = this.actions[e.keyCode];\n if (!moveAction) {\n return;\n }\n moveAction();\n e.preventDefault();\n }\n expand({ expand, intercept }) {\n const index = nodeIndex(this.activeItem);\n if (!index || intercept(index)) {\n return;\n }\n this.notifyExpand(expand);\n }\n moveToParent() {\n if (this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findParent(nodeIndex(this.activeItem)));\n return true;\n }\n moveToFirstVisibleChild() {\n if (!this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findVisibleChild(nodeIndex(this.activeItem)));\n return true;\n }\n notifyExpand(expand) {\n this.expands.next(this.navigationState(expand));\n }\n notifyMove() {\n this.moves.next(this.navigationState());\n }\n navigationState(expand = false) {\n return ({ expand, index: this.activeIndex, isFocused: this.isFocused });\n }\n handleEnter() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.selectIndex(this.activeIndex);\n }\n }\n handleSpace() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.checkIndex(this.activeIndex);\n }\n }\n};\nNavigationService.ɵfac = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(ɵngcc1.LocalizationService)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], NavigationService);\n\n/**\n * @hidden\n */\nlet NodeChildrenService = class NodeChildrenService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new Subject();\n }\n childrenLoaded(item, children) {\n this.changes.next({ item, children });\n }\n};\nNodeChildrenService.ɵfac = function NodeChildrenService_Factory(t) { return new (t || NodeChildrenService)(); };\nNodeChildrenService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NodeChildrenService, factory: function (t) { return NodeChildrenService.ɵfac(t); } });\n\n/**\n * Represents the template for the TreeView nodes ([more information and example]({% slug nodetemplate_treeview %})).\n * The template helps to customize the content of the nodes. To define the node template, nest an ``\n * tag with the `kendoTreeViewNodeTemplate` directive inside a `` tag.\n *\n *\n * The node data item and its hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - available as implicit context variable\n * - `let-index=\"index\"` (`string`)\n *\n *\n * @example\n * ```ts\n *\n * import { Component } from '@angular/core';\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ index }}: {{ dataItem.text }}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * {\n * text: \"Inbox\",\n * items: [{ text: \"Read Mail\" }]\n * },\n * {\n * text: \"Drafts\"\n * },\n * {\n * text: \"Search Folders\",\n * items: [\n * { text: \"Categorized Mail\" },\n * { text: \"Large Mail\" },\n * { text: \"Unread Mail\"}\n * ]\n * },\n * { text: \"Settings\" }\n * ];\n * }\n *\n * ```\n */\nlet NodeTemplateDirective = class NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNodeTemplateDirective.ɵfac = function NodeTemplateDirective_Factory(t) { return new (t || NodeTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nNodeTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NodeTemplateDirective, selectors: [[\"\", \"kendoTreeViewNodeTemplate\", \"\"]] });\nNodeTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], NodeTemplateDirective);\n\n/**\n * Represents the template for the TreeView load more buttons.\n * To define a button template, nest an ``\n * tag with the `kendoTreeViewLoadMoreButtonTemplate` directive inside a `` tag\n * ([see example]({% slug loadmorebutton_treeview %}#toc-button-template)).\n *\n * The hierarchical index of the load more button node is available as a context variable:\n *\n * - `let-index=\"index\"` (`string`)\n */\nlet LoadMoreButtonTemplateDirective = class LoadMoreButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nLoadMoreButtonTemplateDirective.ɵfac = function LoadMoreButtonTemplateDirective_Factory(t) { return new (t || LoadMoreButtonTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nLoadMoreButtonTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LoadMoreButtonTemplateDirective, selectors: [[\"\", \"kendoTreeViewLoadMoreButtonTemplate\", \"\"]] });\nLoadMoreButtonTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], LoadMoreButtonTemplateDirective);\n\n/**\n * @hidden\n *\n * An injection token used by the data binding directives to interface with\n * the TreeView or the DropDownTree components.\n */\nlet DataBoundComponent = class DataBoundComponent {\n};\nDataBoundComponent.ɵfac = function DataBoundComponent_Factory(t) { return new (t || DataBoundComponent)(); };\nDataBoundComponent.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataBoundComponent, factory: function (t) { return DataBoundComponent.ɵfac(t); } });\n\n/**\n * @hidden\n *\n * An injection token used by the expand-directive to interface with\n * the TreeView or the DropDownTree components.\n */\nlet ExpandableComponent = class ExpandableComponent {\n};\nExpandableComponent.ɵfac = function ExpandableComponent_Factory(t) { return new (t || ExpandableComponent)(); };\nExpandableComponent.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ExpandableComponent, factory: function (t) { return ExpandableComponent.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet SelectionService = class SelectionService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new Subject();\n }\n isFirstSelected(index) {\n return this.firstIndex === index;\n }\n setFirstSelected(index, selected) {\n if (this.firstIndex === index && selected === false) {\n this.firstIndex = null;\n }\n else if (!this.firstIndex && selected) {\n this.firstIndex = index;\n }\n }\n select(index, dataItem) {\n this.changes.next({ dataItem, index });\n }\n};\nSelectionService.ɵfac = function SelectionService_Factory(t) { return new (t || SelectionService)(); };\nSelectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SelectionService, factory: function (t) { return SelectionService.ɵfac(t); } });\n\nconst INDEX_REGEX = /\\d+$/;\n/**\n * @hidden\n */\nlet TreeViewLookupService = class TreeViewLookupService {\n /**\n * @hidden\n */\n constructor() {\n this.map = new Map();\n }\n reset() {\n this.map.clear();\n }\n registerItem(item, parent) {\n const currentLookup = {\n children: [],\n item,\n parent: this.item(nodeIndex(parent))\n };\n this.map.set(item.index, currentLookup);\n }\n registerChildren(index, children) {\n const item = this.item(index);\n if (!item) {\n return;\n }\n item.children = children;\n }\n unregisterItem(index, dataItem) {\n const current = this.item(index);\n if (current && current.item.dataItem === dataItem) {\n this.map.delete(index);\n if (current.parent && current.parent.children) {\n current.parent.children = current.parent.children.filter(item => item.dataItem !== dataItem);\n }\n }\n }\n replaceItem(index, item, parent) {\n if (!item) {\n return;\n }\n this.unregisterItem(index, item.dataItem);\n this.registerItem(item, parent);\n this.addToParent(item, parent);\n }\n itemLookup(index) {\n const item = this.item(index);\n if (!item) {\n return null;\n }\n return {\n children: this.mapChildren(item.children),\n item: item.item,\n parent: item.parent\n };\n }\n hasItem(index) {\n return this.map.has(index);\n }\n item(index) {\n return this.map.get(index) || null;\n }\n addToParent(item, parent) {\n if (parent) {\n const parentItem = this.item(parent.index);\n const index = parseInt(INDEX_REGEX.exec(item.index)[0], 10);\n parentItem.children = parentItem.children || [];\n parentItem.children.splice(index, 0, item);\n }\n }\n mapChildren(children = []) {\n return children.map(c => {\n const { item, parent, children } = this.item(c.index);\n return {\n children: this.mapChildren(children),\n item,\n parent\n };\n });\n }\n};\nTreeViewLookupService.ɵfac = function TreeViewLookupService_Factory(t) { return new (t || TreeViewLookupService)(); };\nTreeViewLookupService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TreeViewLookupService, factory: function (t) { return TreeViewLookupService.ɵfac(t); } });\n\nconst LOAD_MORE_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\nconst providers = [\n ExpandStateService,\n IndexBuilderService,\n TreeViewLookupService,\n LoadingNotificationService,\n NodeChildrenService,\n NavigationService,\n SelectionService,\n DataChangeNotificationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.treeview'\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n }\n];\n/* tslint:disable:member-ordering */\n/**\n * Represents the [Kendo UI TreeView component for Angular]({% slug overview_treeview %}).\n *\n * @example\n * {% meta height:450 %}\n * {% embed_file get-started/app.component.ts preview %}\n * {% embed_file get-started/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nlet TreeViewComponent = class TreeViewComponent {\n constructor(element, changeDetectorRef, expandService, navigationService, nodeChildrenService, selectionService, treeViewLookupService, ngZone, renderer, dataChangeNotification, localization) {\n this.element = element;\n this.changeDetectorRef = changeDetectorRef;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.selectionService = selectionService;\n this.treeViewLookupService = treeViewLookupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.dataChangeNotification = dataChangeNotification;\n this.localization = localization;\n this.classNames = true;\n this.role = 'tree';\n /**\n * The hint which is displayed when the component is empty.\n */\n this.filterInputPlaceholder = \"\";\n /** @hidden */\n this.fetchNodes = () => this.data;\n /**\n * Fires when the children of the expanded node are loaded.\n */\n this.childrenLoaded = new EventEmitter();\n /**\n * Fires when the user blurs the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user focuses the component.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the user expands a TreeView node.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the user collapses a TreeView node.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires just before the dragging of the node starts ([see example]({% slug draganddrop_treeview %}#toc-setup)). This event is preventable.\n * If you prevent the event default, no drag hint will be created and the subsequent drag-related events will not be fired.\n */\n this.nodeDragStart = new EventEmitter();\n /**\n * Fires when an item is being dragged ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDrag = new EventEmitter();\n /**\n * Emits when the built-in filtering mechanism in the data-binding directives updates the node's visibility.\n * Used for the built-in auto-expand functionalities of the component and available for custom implementations.\n */\n this.filterStateChange = new EventEmitter();\n /**\n * Fires on the target TreeView when a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * This event is preventable. If you prevent the event default (`event.preventDefualt()`) or invalidate its state (`event.setValid(false)`),\n * the `addItem` and `removeItem` events will not be triggered.\n *\n * Both operations cancel the default drop operation, but the indication to the user is different. `event.setValid(false)` indicates that the operation was\n * unsuccessful by animating the drag clue to its original position. `event.preventDefault()` simply removes the clue, as if it has been dropped successfully.\n * As a general rule, use `preventDefault` to manually handle the add and remove operations, and `setValid(false)` to indicate the operation was unsuccessful.\n */\n this.nodeDrop = new EventEmitter();\n /**\n * Fires on the source TreeView after the dragged item has been dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDragEnd = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView where the item is dropped.\n */\n this.addItem = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView from where the item is dragged.\n */\n this.removeItem = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node checkbox\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n this.checkedChange = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the user clicks a TreeView node.\n */\n this.nodeClick = new EventEmitter();\n /**\n * Fires when the user double clicks a TreeView node.\n */\n this.nodeDblClick = new EventEmitter();\n /**\n * A function that defines how to track node changes.\n * By default, the TreeView tracks the nodes by data item object reference.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n *\n * public trackBy(index: number, item: any): any {\n * return item.text;\n * }\n * }\n * ```\n */\n this.trackBy = trackBy;\n /**\n * A function which determines if a specific node is disabled.\n */\n this.isDisabled = isDisabled;\n /**\n * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isVisible = isVisible;\n /**\n * Determines whether the TreeView keyboard navigable is enabled.\n */\n this.navigable = true;\n /**\n * A function which provides the child nodes for a given parent node\n * ([see example]({% slug databinding_treeview %})).\n */\n this.children = () => of([]);\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the TreeView.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the TreeView manually]({% slug filtering_treeview %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %}) and [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * Sets an initial value of the built-in input element used for filtering.\n */\n this.filter = '';\n this.checkboxes = false;\n this.expandIcons = false;\n this.selectable = false;\n this.touchActions = true;\n this.isActive = false;\n this.data = new BehaviorSubject([]);\n this._animate = true;\n this.subscriptions = new Subscription();\n this.domSubscriptions = [];\n validatePackage(packageMetadata);\n }\n /** @hidden */\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Determines whether the content animation is enabled.\n */\n set animate(value) {\n this._animate = value;\n }\n get animate() {\n return !this._animate;\n }\n /**\n * @hidden\n *\n * Defines the template for each node.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set nodeTemplateRef(template) {\n this._nodeTemplateRef = template;\n }\n get nodeTemplateRef() {\n return this._nodeTemplateRef || this.nodeTemplateQuery;\n }\n /**\n * @hidden\n *\n * Defines the template for each load-more button.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set loadMoreButtonTemplateRef(template) {\n this._loadMoreButtonTemplateRef = template;\n }\n get loadMoreButtonTemplateRef() {\n return this._loadMoreButtonTemplateRef || this.loadMoreButtonTemplateQuery;\n }\n /**\n * The nodes which will be displayed by the TreeView\n * ([see example]({% slug databinding_treeview %})).\n */\n set nodes(value) {\n this.data.next(value || []);\n this.dataChangeNotification.notify();\n }\n get nodes() {\n return this.data.value;\n }\n /**\n * A function which determines if a specific node has child nodes\n * ([see example]({% slug databinding_treeview %})).\n */\n get hasChildren() {\n return this._hasChildren || hasChildren;\n }\n set hasChildren(callback) {\n this._hasChildren = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is checked\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n get isChecked() {\n return this._isChecked || isChecked;\n }\n set isChecked(callback) {\n this._isChecked = callback;\n this.checkboxes = Boolean(this._isChecked);\n }\n /**\n * A function which determines if a specific node is expanded.\n */\n get isExpanded() {\n return this._isExpanded || isExpanded;\n }\n set isExpanded(callback) {\n this._isExpanded = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is selected\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n get isSelected() {\n return this._isSelected || isSelected;\n }\n set isSelected(callback) {\n this._isSelected = callback;\n this.selectable = Boolean(this._isSelected);\n }\n ngOnChanges(changes) {\n this.navigationService.navigable = Boolean(this.navigable);\n // TODO: should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'children', 'hasChildren', 'loadOnDemand'], changes, false) && !this.loadOnDemand) {\n this.preloadChildNodes();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domSubscriptions.forEach(subscription => subscription());\n }\n ngOnInit() {\n this.subscriptions.add(this.nodeChildrenService\n .changes\n .subscribe((x) => this.childrenLoaded.emit(x)));\n this.subscriptions.add(this.expandService.changes\n .subscribe(({ index, dataItem, expand }) => expand\n ? this.expand.emit({ index, dataItem })\n : this.collapse.emit({ index, dataItem })));\n this.subscriptions.add(this.navigationService.checks\n .subscribe((x) => this.checkedChange.emit(this.treeViewLookupService.itemLookup(x))));\n this.subscriptions.add(this.selectionService.changes\n .subscribe((x) => {\n if (hasObservers(this.selectionChange)) {\n this.ngZone.run(() => {\n this.selectionChange.emit(x);\n });\n }\n }));\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.attachDomHandlers();\n });\n }\n }\n /**\n * Blurs the focused TreeView item.\n */\n blur() {\n if (!isDocumentAvailable()) {\n return;\n }\n const target = focusableNode(this.element);\n if (document.activeElement === target) {\n target.blur();\n }\n }\n /**\n * Focuses the first focusable item in the TreeView component if no hierarchical index is provided.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n * }\n * ```\n */\n focus(index) {\n const focusIndex = index || nodeIndex(this.navigationService.focusableItem);\n this.navigationService.activateIndex(focusIndex);\n const target = focusableNode(this.element);\n if (target) {\n target.focus();\n }\n }\n /**\n * Based on the specified index, returns the TreeItemLookup node.\n *\n * @param index - The index of the node.\n * @returns {TreeItemLookup} - The item that was searched (looked up).\n */\n itemLookup(index) {\n return this.treeViewLookupService.itemLookup(index);\n }\n /**\n * Triggers the [`children`]({% slug api_treeview_treeviewcomponent %}#toc-children) function for every expanded node,\n * causing all rendered child nodes to be fetched again.\n */\n rebindChildren() {\n this.dataChangeNotification.notify();\n }\n /**\n * Triggers the `expand` event for the provided node and displays it's loading indicator.\n */\n expandNode(item, index) {\n this.expandService.expand(index, item);\n }\n /**\n * Triggers the `collapse` event for the provided node.\n */\n collapseNode(item, index) {\n this.expandService.collapse(index, item);\n }\n /**\n * Gets the current page size of the checked data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to get its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @returns {number} - The page size of the checked data item children collection.\n */\n getNodePageSize(dataItem) {\n this.verifyLoadMoreService();\n return this.loadMoreService.getGroupSize(dataItem);\n }\n /**\n * Sets the page size of the targeted data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to target its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @param pageSize {number} - The new page size.\n */\n setNodePageSize(dataItem, pageSize) {\n this.verifyLoadMoreService();\n this.loadMoreService.setGroupSize(dataItem, pageSize);\n }\n /**\n * @hidden\n *\n * Clears the current TreeViewLookupService node map and re-registers all nodes anew.\n * Child nodes are acquired through the provided `children` callback.\n */\n preloadChildNodes() {\n this.treeViewLookupService.reset();\n this.registerLookupItems(this.nodes);\n }\n attachDomHandlers() {\n const element = this.element.nativeElement;\n this.clickHandler = this.clickHandler.bind(this);\n this.domSubscriptions.push(this.renderer.listen(element, 'contextmenu', this.clickHandler), this.renderer.listen(element, 'click', this.clickHandler), this.renderer.listen(element, 'dblclick', this.clickHandler), this.renderer.listen(element, 'focusin', this.focusHandler.bind(this)), this.renderer.listen(element, 'focusout', this.blurHandler.bind(this)), this.renderer.listen(element, 'keydown', this.keydownHandler.bind(this)));\n }\n focusHandler(e) {\n let focusItem;\n if (match(e.target, '.k-treeview-item')) {\n focusItem = e.target;\n }\n else if (!isFocusable(e.target)) { // with compliments to IE\n focusItem = closestNode(e.target);\n }\n if (focusItem) {\n this.navigationService.activateIndex(nodeId(e.target));\n if (!this.isActive && hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n this.isActive = true;\n }\n }\n blurHandler(e) {\n if (this.isActive && match(e.target, '.k-treeview-item') &&\n (!e.relatedTarget || !match(e.relatedTarget, '.k-treeview-item') || !hasParent(e.relatedTarget, this.element.nativeElement))) {\n this.navigationService.deactivate();\n this.isActive = false;\n if (hasObservers(this.onBlur)) {\n this.ngZone.run(() => {\n this.onBlur.emit();\n });\n }\n }\n }\n clickHandler(e) {\n const target = e.target;\n if ((e.type === 'contextmenu' && !hasObservers(this.nodeClick)) ||\n (e.type === 'click' && !hasObservers(this.nodeClick) && !hasObservers(this.selectionChange) && !isLoadMoreButton(target)) ||\n (e.type === 'dblclick' && !hasObservers(this.nodeDblClick)) || isFocusable(target) ||\n (!isContent(target) && !isLoadMoreButton(target)) || !hasParent(target, this.element.nativeElement)) {\n return;\n }\n const index = nodeId(closestNode(target));\n // the disabled check is probably not needed due to the k-state-disabled styles\n if (!index || this.navigationService.isDisabled(index)) {\n return;\n }\n this.ngZone.run(() => {\n // record this value before emitting selectionChange (`this.navigationService.selectIndex`), as the treeview state may be changed on its emission\n const lookup = this.treeViewLookupService.itemLookup(index);\n if (e.type === 'click') {\n const loadMoreButton = this.navigationService.model.findNode(index).loadMoreButton;\n if (loadMoreButton) {\n this.navigationService.notifyLoadMore(index);\n return;\n }\n else {\n this.navigationService.selectIndex(index);\n }\n }\n const emitter = e.type === 'dblclick' ? this.nodeDblClick : this.nodeClick;\n emitter.emit({\n item: lookup.item,\n originalEvent: e,\n type: e.type\n });\n });\n }\n keydownHandler(e) {\n if (this.isActive && this.navigable) {\n this.ngZone.run(() => {\n this.navigationService.move(e);\n });\n }\n }\n verifyLoadMoreService() {\n if (isDevMode() && !isPresent(this.loadMoreService)) {\n throw new Error(`To use the TreeView paging functionality, you need to assign the \\`kendoTreeViewLoadMore\\` directive. See ${LOAD_MORE_DOC_LINK}.`);\n }\n }\n registerLookupItems(data, parentItem = null) {\n if (!isPresent(data) || data.length === 0) {\n return;\n }\n const parentIndex = nodeIndex(parentItem);\n const treeItems = data.map((node, index) => buildTreeItem(node, index, parentIndex));\n if (isPresent(parentItem)) {\n this.treeViewLookupService.registerChildren(parentIndex, treeItems);\n }\n treeItems.forEach(item => {\n this.treeViewLookupService.registerItem(item, parentItem);\n if (this.hasChildren(item.dataItem)) {\n this.children(item.dataItem)\n .subscribe(children => this.registerLookupItems(children, item));\n }\n });\n }\n};\nTreeViewComponent.ɵfac = function TreeViewComponent_Factory(t) { return new (t || TreeViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(NodeChildrenService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(TreeViewLookupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DataChangeNotificationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nTreeViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TreeViewComponent, selectors: [[\"kendo-treeview\"]], contentQueries: function TreeViewComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, LoadMoreButtonTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.nodeTemplateQuery = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadMoreButtonTemplateQuery = _t.first);\n } }, viewQuery: function TreeViewComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.assetsContainer = _t.first);\n } }, hostVars: 7, hostBindings: function TreeViewComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵsyntheticHostProperty(\"@.disabled\", ctx.animate);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.classNames)(\"k-treeview\", ctx.classNames);\n } }, inputs: { filterInputPlaceholder: \"filterInputPlaceholder\", trackBy: \"trackBy\", isDisabled: \"isDisabled\", isVisible: \"isVisible\", navigable: \"navigable\", children: \"children\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", animate: \"animate\", nodeTemplateRef: [\"nodeTemplate\", \"nodeTemplateRef\"], loadMoreButtonTemplateRef: [\"loadMoreButtonTemplate\", \"loadMoreButtonTemplateRef\"], nodes: \"nodes\", hasChildren: \"hasChildren\", isChecked: \"isChecked\", isExpanded: \"isExpanded\", isSelected: \"isSelected\", textField: \"textField\" }, outputs: { childrenLoaded: \"childrenLoaded\", onBlur: \"blur\", onFocus: \"focus\", expand: \"expand\", collapse: \"collapse\", nodeDragStart: \"nodeDragStart\", nodeDrag: \"nodeDrag\", filterStateChange: \"filterStateChange\", nodeDrop: \"nodeDrop\", nodeDragEnd: \"nodeDragEnd\", addItem: \"addItem\", removeItem: \"removeItem\", checkedChange: \"checkedChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", nodeClick: \"nodeClick\", nodeDblClick: \"nodeDblClick\" }, exportAs: [\"kendoTreeView\"], features: [ɵngcc0.ɵɵProvidersFeature(providers), ɵngcc0.ɵɵNgOnChangesFeature], decls: 4, vars: 19, consts: [[3, \"value\", \"clearButton\", \"placeholder\", \"valueChange\", 4, \"ngIf\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 1, \"k-treeview-lines\", 3, \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"textField\", \"nodes\", \"loadMoreService\", \"trackBy\"], [\"assetsContainer\", \"\"], [3, \"value\", \"clearButton\", \"placeholder\", \"valueChange\"], [\"filterInput\", \"\"], [\"kendoTextBoxPrefixTemplate\", \"\"], [1, \"k-icon\", \"k-i-search\"]], template: function TreeViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeViewComponent_kendo_textbox_0_Template, 3, 3, \"kendo-textbox\", 0);\n ɵngcc0.ɵɵelement(1, \"ul\", 1);\n ɵngcc0.ɵɵelementContainer(2, null, 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"loadOnDemand\", ctx.loadOnDemand)(\"checkboxes\", ctx.checkboxes)(\"expandIcons\", ctx.expandIcons)(\"selectable\", ctx.selectable)(\"touchActions\", ctx.touchActions)(\"children\", ctx.children)(\"hasChildren\", ctx.hasChildren)(\"isChecked\", ctx.isChecked)(\"isDisabled\", ctx.isDisabled)(\"isExpanded\", ctx.isExpanded)(\"isSelected\", ctx.isSelected)(\"isVisible\", ctx.isVisible)(\"nodeTemplateRef\", ctx.nodeTemplateRef == null ? null : ctx.nodeTemplateRef.templateRef)(\"loadMoreButtonTemplateRef\", ctx.loadMoreButtonTemplateRef == null ? null : ctx.loadMoreButtonTemplateRef.templateRef)(\"textField\", ctx.textField)(\"nodes\", ctx.fetchNodes)(\"loadMoreService\", ctx.loadMoreService)(\"trackBy\", ctx.trackBy);\n } }, directives: function () { return [ɵngcc2.NgIf, ɵngcc3.TextBoxComponent, ɵngcc3.TextBoxPrefixTemplateDirective, TreeViewGroupComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding(\"class.k-widget\"),\n HostBinding(\"class.k-treeview\"),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"classNames\", void 0);\n__decorate([\n HostBinding(\"attr.role\"),\n __metadata(\"design:type\", String)\n], TreeViewComponent.prototype, \"role\", void 0);\n__decorate([\n HostBinding(\"attr.dir\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TreeViewComponent.prototype, \"direction\", null);\n__decorate([\n ViewChild('assetsContainer', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], TreeViewComponent.prototype, \"assetsContainer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewComponent.prototype, \"filterInputPlaceholder\", void 0);\n__decorate([\n Input(),\n HostBinding('@.disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], TreeViewComponent.prototype, \"animate\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"childrenLoaded\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"collapse\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDragStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDrag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"filterStateChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDrop\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDragEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"addItem\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"removeItem\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"checkedChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDblClick\", void 0);\n__decorate([\n ContentChild(NodeTemplateDirective, { static: false }),\n __metadata(\"design:type\", NodeTemplateDirective)\n], TreeViewComponent.prototype, \"nodeTemplateQuery\", void 0);\n__decorate([\n Input('nodeTemplate'),\n __metadata(\"design:type\", NodeTemplateDirective),\n __metadata(\"design:paramtypes\", [NodeTemplateDirective])\n], TreeViewComponent.prototype, \"nodeTemplateRef\", null);\n__decorate([\n ContentChild(LoadMoreButtonTemplateDirective, { static: false }),\n __metadata(\"design:type\", LoadMoreButtonTemplateDirective)\n], TreeViewComponent.prototype, \"loadMoreButtonTemplateQuery\", void 0);\n__decorate([\n Input('loadMoreButtonTemplate'),\n __metadata(\"design:type\", LoadMoreButtonTemplateDirective),\n __metadata(\"design:paramtypes\", [LoadMoreButtonTemplateDirective])\n], TreeViewComponent.prototype, \"loadMoreButtonTemplateRef\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"trackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], TreeViewComponent.prototype, \"nodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"hasChildren\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"isChecked\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"isDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"isExpanded\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"isSelected\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"isVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"navigable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"children\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewComponent.prototype, \"filter\", void 0);\nTreeViewComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ChangeDetectorRef,\n ExpandStateService,\n NavigationService,\n NodeChildrenService,\n SelectionService,\n TreeViewLookupService,\n NgZone,\n Renderer2,\n DataChangeNotificationService,\n LocalizationService])\n], TreeViewComponent);\n\n/**\n * @hidden\n */\nlet TreeViewGroupComponent = class TreeViewGroupComponent {\n constructor(expandService, loadingService, indexBuilder, treeViewLookupService, navigationService, nodeChildrenService, dataChangeNotification, changeDetectorRef) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.indexBuilder = indexBuilder;\n this.treeViewLookupService = treeViewLookupService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.dataChangeNotification = dataChangeNotification;\n this.changeDetectorRef = changeDetectorRef;\n this.kGroupClass = true;\n this.role = 'group';\n this.loadOnDemand = true;\n this.textField = \"\";\n this.initialNodesLoaded = false;\n this.loadingMoreNodes = false;\n this._data = [];\n this.singleRecordSubscriptions = new Subscription();\n this.isChecked = () => 'none';\n this.isDisabled = () => false;\n this.isExpanded = () => false;\n this.isVisible = () => true;\n this.isSelected = () => false;\n this.children = () => of([]);\n this.hasChildren = () => false;\n }\n get moreNodesAvailable() {\n if (!isPresent(this.loadMoreService) || this.data.length === 0) {\n return false;\n }\n return this.pageSize < this.totalNodesCount;\n }\n get pageSize() {\n if (!isPresent(this.loadMoreService)) {\n return null;\n }\n return this.loadMoreService.getGroupSize(this.parentDataItem);\n }\n set pageSize(pageSize) {\n this.loadMoreService.setGroupSize(this.parentDataItem, pageSize);\n }\n get data() {\n if (isPresent(this.pageSize)) {\n const normalizedSizeValue = this.pageSize > 0 ? this.pageSize : 0;\n return this._data.slice(0, normalizedSizeValue);\n }\n return this._data;\n }\n set data(data) {\n this._data = data;\n this.registerLoadedNodes(this.data);\n }\n get loadMoreButtonIndex() {\n if (!this.loadMoreService) {\n return null;\n }\n return this.nodeIndex(this.data.length);\n }\n /**\n * Represents the total number of nodes for the current level.\n */\n get totalNodesCount() {\n if (!this.loadMoreService) {\n return this.data.length;\n }\n return this.loadMoreService.getTotalNodesCount(this.parentDataItem, this._data.length);\n }\n get hasTemplate() {\n return isPresent(this.nodeTemplateRef);\n }\n expandNode(index, dataItem, expand) {\n if (expand) {\n this.expandService.expand(index, dataItem);\n }\n else {\n this.expandService.collapse(index, dataItem);\n }\n }\n checkNode(index) {\n this.navigationService.checkIndex(index);\n this.navigationService.activateIndex(index);\n }\n nodeIndex(index) {\n return this.indexBuilder.nodeIndex(index.toString(), this.parentIndex);\n }\n nodeText(dataItem) {\n const textField = isArray(this.textField) ? this.textField[0] : this.textField;\n return getter(textField)(dataItem);\n }\n ngOnDestroy() {\n if (isPresent(this.nodesSubscription)) {\n this.nodesSubscription.unsubscribe();\n }\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.singleRecordSubscriptions.unsubscribe();\n }\n ngOnInit() {\n this.subscribeToNodesChange();\n this.singleRecordSubscriptions.add(this.dataChangeNotification\n .changes\n .subscribe(this.subscribeToNodesChange.bind(this)));\n this.singleRecordSubscriptions.add(this.navigationService.loadMore\n .pipe(filter(index => index === this.loadMoreButtonIndex))\n .subscribe(this.loadMoreNodes.bind(this)));\n }\n ngOnChanges(changes) {\n if (changes.parentIndex && this.loadOnDemand) {\n this.setNodeChildren(this.mapToTreeItem(this.data));\n }\n }\n fetchChildren(node, index) {\n return this.children(node)\n .pipe(catchError(() => {\n this.loadingService.notifyLoaded(index);\n return EMPTY;\n }), tap(() => this.loadingService.notifyLoaded(index)));\n }\n get nextFields() {\n if (isArray(this.textField)) {\n return this.textField.length > 1 ? this.textField.slice(1) : this.textField;\n }\n return [this.textField];\n }\n loadMoreNodes() {\n if (isPresent(this.loadMoreService.loadMoreNodes)) {\n this.fetchMoreNodes();\n }\n else {\n this.loadMoreLocalNodes();\n }\n }\n loadMoreLocalNodes() {\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += this.loadMoreService.getInitialPageSize(this.parentDataItem);\n this.registerLoadedNodes(this.data);\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n fetchMoreNodes() {\n if (this.loadingMoreNodes) {\n return;\n }\n this.loadingMoreNodes = true;\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.loadMoreNodesSubscription = this.loadMoreService\n .loadMoreNodes({\n dataItem: this.parentDataItem,\n skip: this.data.length,\n take: this.loadMoreService.getInitialPageSize(this.parentDataItem)\n })\n .pipe(finalize(() => this.loadingMoreNodes = false))\n .subscribe(items => {\n if (!(Array.isArray(items) && items.length > 0)) {\n return;\n }\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += items.length;\n this.data = this.data.concat(items);\n if (this.navigationService.isActive(initialLoadMoreButtonIndex)) {\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n });\n }\n setNodeChildren(children) {\n this.treeViewLookupService.registerChildren(this.parentIndex, children);\n }\n mapToTreeItem(data) {\n if (!this.parentIndex) {\n return [];\n }\n return data.map((dataItem, idx) => ({ dataItem, index: this.nodeIndex(idx) }));\n }\n emitChildrenLoaded(children) {\n if (!this.parentIndex) {\n return;\n }\n // ignores the registered load-more button\n const contentChildren = children.filter(item => item.dataItem);\n this.nodeChildrenService.childrenLoaded({ dataItem: this.parentDataItem, index: this.parentIndex }, contentChildren);\n }\n subscribeToNodesChange() {\n if (this.nodesSubscription) {\n this.nodesSubscription.unsubscribe();\n }\n this.nodesSubscription = this.nodes(this.parentDataItem, this.parentIndex)\n .subscribe(data => {\n this.data = data;\n this.initialNodesLoaded = true;\n });\n }\n reselectItemAt(index) {\n if (!isPresent(index)) {\n return;\n }\n // make sure the old index is cleared first\n this.navigationService.deactivate();\n this.navigationService.activateIndex(index);\n }\n registerLoadedNodes(nodes = []) {\n const mappedChildren = this.mapToTreeItem(nodes);\n if (this.loadOnDemand) {\n this.setNodeChildren(mappedChildren);\n }\n this.emitChildrenLoaded(mappedChildren);\n }\n};\nTreeViewGroupComponent.ɵfac = function TreeViewGroupComponent_Factory(t) { return new (t || TreeViewGroupComponent)(ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(LoadingNotificationService), ɵngcc0.ɵɵdirectiveInject(IndexBuilderService), ɵngcc0.ɵɵdirectiveInject(TreeViewLookupService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(NodeChildrenService), ɵngcc0.ɵɵdirectiveInject(DataChangeNotificationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTreeViewGroupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TreeViewGroupComponent, selectors: [[\"\", \"kendoTreeViewGroup\", \"\"]], hostVars: 3, hostBindings: function TreeViewGroupComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role);\n ɵngcc0.ɵɵclassProp(\"k-group\", ctx.kGroupClass);\n } }, inputs: { loadOnDemand: \"loadOnDemand\", textField: \"textField\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isVisible: \"isVisible\", isSelected: \"isSelected\", children: \"children\", hasChildren: \"hasChildren\", checkboxes: \"checkboxes\", expandIcons: \"expandIcons\", disabled: \"disabled\", selectable: \"selectable\", touchActions: \"touchActions\", trackBy: \"trackBy\", nodes: \"nodes\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", nodeTemplateRef: \"nodeTemplateRef\", loadMoreButtonTemplateRef: \"loadMoreButtonTemplateRef\", loadMoreService: \"loadMoreService\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c1, decls: 2, vars: 3, consts: [[\"class\", \"k-item k-treeview-item\", \"kendoTreeViewItem\", \"\", 3, \"k-display-none\", \"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"loadOnDemand\", \"checkable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"expandable\", \"isExpanded\", \"selectable\", \"isSelected\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"k-item k-treeview-item\", \"kendoTreeViewItem\", \"\", \"role\", \"button\", 3, \"k-treeview-load-more-checkboxes-container\", \"selectable\", \"checkable\", \"expandable\", \"index\", \"parentDataItem\", \"parentIndex\", 4, \"ngIf\"], [\"kendoTreeViewItem\", \"\", 1, \"k-item\", \"k-treeview-item\", 3, \"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"loadOnDemand\", \"checkable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"expandable\", \"isExpanded\", \"selectable\", \"isSelected\"], [1, \"k-mid\"], [\"class\", \"k-icon\", 3, \"k-i-collapse\", \"k-i-expand\", \"kendoTreeViewLoading\", \"click\", 4, \"ngIf\"], [\"tabindex\", \"-1\", 3, \"node\", \"index\", \"isChecked\", \"checkStateChange\", 4, \"ngIf\"], [\"kendoTreeViewItemContent\", \"\", 1, \"k-in\", 3, \"dataItem\", \"index\", \"initialSelection\", \"isSelected\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [4, \"ngSwitchDefault\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 3, \"nodes\", \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"disabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"parentIndex\", \"parentDataItem\", \"textField\", \"loadMoreService\", \"trackBy\", 4, \"ngIf\"], [1, \"k-icon\", 3, \"kendoTreeViewLoading\", \"click\"], [\"tabindex\", \"-1\", 3, \"node\", \"index\", \"isChecked\", \"checkStateChange\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 3, \"nodes\", \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"disabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"parentIndex\", \"parentDataItem\", \"textField\", \"loadMoreService\", \"trackBy\"], [\"kendoTreeViewItem\", \"\", \"role\", \"button\", 1, \"k-item\", \"k-treeview-item\", 3, \"selectable\", \"checkable\", \"expandable\", \"index\", \"parentDataItem\", \"parentIndex\"], [\"class\", \"k-icon k-i-loading k-i-expand\", 4, \"ngIf\"], [\"kendoTreeViewItemContent\", \"\", 1, \"k-in\", \"k-treeview-load-more-button\", 3, \"index\"], [4, \"ngIf\"], [1, \"k-icon\", \"k-i-loading\", \"k-i-expand\"]], template: function TreeViewGroupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeViewGroupComponent_li_0_Template, 9, 29, \"li\", 0);\n ɵngcc0.ɵɵtemplate(1, TreeViewGroupComponent_li_1_Template, 6, 14, \"li\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.initialNodesLoaded && ctx.moreNodesAvailable);\n } }, directives: function () { return [ɵngcc2.NgForOf, TreeViewItemDirective, ɵngcc2.NgIf, LoadingIndicatorDirective, CheckBoxComponent, TreeViewItemContentDirective, ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgSwitchDefault, TreeViewGroupComponent]; }, encapsulation: 2, data: { animation: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ] } });\n__decorate([\n HostBinding(\"class.k-group\"),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"kGroupClass\", void 0);\n__decorate([\n HostBinding(\"attr.role\"),\n __metadata(\"design:type\", String)\n], TreeViewGroupComponent.prototype, \"role\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"checkboxes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"expandIcons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"touchActions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"trackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"nodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewGroupComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewGroupComponent.prototype, \"parentDataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewGroupComponent.prototype, \"parentIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TreeViewGroupComponent.prototype, \"nodeTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TreeViewGroupComponent.prototype, \"loadMoreButtonTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewGroupComponent.prototype, \"loadMoreService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isChecked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isSelected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"children\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"hasChildren\", void 0);\nTreeViewGroupComponent = __decorate([ __metadata(\"design:paramtypes\", [ExpandStateService,\n LoadingNotificationService,\n IndexBuilderService,\n TreeViewLookupService,\n NavigationService,\n NodeChildrenService,\n DataChangeNotificationService,\n ChangeDetectorRef])\n], TreeViewGroupComponent);\n\nconst indexChecked = (keys, index) => keys.filter(k => k === index).length > 0;\nconst matchKey = index => k => {\n if (index === k) {\n return true;\n }\n if (!k.split) {\n return false;\n }\n return k.split('_').reduce(({ key, result }, part) => {\n key += part;\n if (index === key || result) {\n return { result: true };\n }\n key += \"_\";\n return { key, result: false };\n }, { key: \"\", result: false }).result;\n};\n/**\n * A directive which manages the in-memory checked state of the TreeView node\n * ([see example]({% slug checkboxes_treeview %})).\n */\nlet CheckDirective = class CheckDirective {\n constructor(treeView, zone) {\n this.treeView = treeView;\n this.zone = zone;\n /**\n * Fires when the `checkedKeys` collection was updated.\n */\n this.checkedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.checkActions = {\n 'multiple': (e) => this.checkMultiple(e),\n 'single': (e) => this.checkSingle(e)\n };\n this._checkedKeys = [];\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe((e) => this.check(e)));\n let expandedItems = [];\n this.subscriptions.add(this.treeView.childrenLoaded\n .pipe(filter(() => this.options.checkChildren && this.treeView.loadOnDemand), tap(item => expandedItems.push(item)), switchMap(() => this.zone.onStable.pipe(take(1))))\n .subscribe(() => this.addCheckedItemsChildren(expandedItems)));\n this.treeView.isChecked = this.isItemChecked.bind(this);\n }\n /**\n * @hidden\n */\n set isChecked(value) {\n this.treeView.isChecked = value;\n }\n /**\n * Defines the collection that will store the checked keys\n * ([see example]({% slug checkboxes_treeview %})).\n */\n get checkedKeys() {\n return this._checkedKeys;\n }\n set checkedKeys(keys) {\n this._checkedKeys = keys;\n }\n get options() {\n const defaultOptions = {\n checkChildren: true,\n checkParents: true,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.checkable) || typeof this.checkable === 'string') {\n return defaultOptions;\n }\n const checkSettings = isBoolean(this.checkable)\n ? { enabled: this.checkable }\n : this.checkable;\n return Object.assign(defaultOptions, checkSettings);\n }\n ngOnChanges(changes) {\n if (changes.checkable) {\n this.treeView.checkboxes = this.options.enabled;\n this.toggleCheckOnClick();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n isItemChecked(dataItem, index) {\n if (!this.checkKey) {\n return this.isIndexChecked(index);\n }\n const keyIndex = this.checkedKeys.indexOf(this.itemKey({ dataItem, index }));\n return keyIndex > -1 ? 'checked' : 'none';\n }\n isIndexChecked(index) {\n const checkedKeys = this.checkedKeys.filter(matchKey(index));\n if (indexChecked(checkedKeys, index)) {\n return 'checked';\n }\n const { mode, checkParents } = this.options;\n if (mode === 'multiple' && checkParents && checkedKeys.length) {\n return 'indeterminate';\n }\n return 'none';\n }\n itemKey(item) {\n if (!isPresent(this.checkKey)) {\n return item.index;\n }\n if (typeof this.checkKey === \"string\" && isPresent(item.dataItem)) {\n return item.dataItem[this.checkKey];\n }\n if (typeof this.checkKey === \"function\") {\n return this.checkKey(item);\n }\n }\n check(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.checkActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n checkSingle(node) {\n const key = this.itemKey(node.item);\n this.checkedKeys = this.checkedKeys[0] !== key ? [key] : [];\n this.notify();\n }\n checkMultiple(node) {\n this.checkNode(node);\n if (this.options.checkParents) {\n this.checkParents(node.parent);\n }\n this.notify();\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.options.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick.subscribe(args => {\n if (args.type === 'click') {\n const lookup = this.treeView.itemLookup(args.item.index);\n this.check(lookup);\n }\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(node) {\n if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index)) {\n return;\n }\n const currentKey = this.itemKey(node.item);\n if (!isPresent(currentKey)) {\n return;\n }\n const checkedKeys = new Set(this.checkedKeys);\n const pendingCheck = [currentKey];\n if (this.options.checkChildren) {\n const descendants = fetchLoadedDescendants(node, ({ item }) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index))\n .map(({ item }) => this.itemKey(item));\n pendingCheck.push(...descendants);\n }\n const shouldCheck = !checkedKeys.has(currentKey);\n pendingCheck.forEach(key => {\n if (shouldCheck) {\n checkedKeys.add(key);\n }\n else {\n checkedKeys.delete(key);\n }\n });\n this.checkedKeys = Array.from(checkedKeys);\n }\n checkParents(parent) {\n if (!isPresent(parent)) {\n return;\n }\n const checkedKeys = new Set(this.checkedKeys);\n let currentParent = parent;\n while (currentParent) {\n const parentKey = this.itemKey(currentParent.item);\n const allChildrenSelected = currentParent.children.every(item => checkedKeys.has(this.itemKey(item)));\n if (allChildrenSelected) {\n checkedKeys.add(parentKey);\n }\n else {\n checkedKeys.delete(parentKey);\n }\n currentParent = currentParent.parent;\n }\n this.checkedKeys = Array.from(checkedKeys);\n }\n notify() {\n this.checkedKeysChange.emit(this.checkedKeys.slice());\n }\n addCheckedItemsChildren(lookups) {\n if (!isPresent(lookups) || lookups.length === 0) {\n return;\n }\n const initiallyCheckedItemsCount = this.checkedKeys.length;\n const checkedKeys = new Set(this.checkedKeys);\n lookups.forEach(lookup => {\n const itemKey = this.itemKey(lookup.item);\n if (!checkedKeys.has(itemKey)) {\n return;\n }\n lookup.children.forEach(item => {\n // ensure both the parent item and each child node is enabled\n if (!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index)) {\n checkedKeys.add(this.itemKey(item));\n }\n });\n });\n const hasNewlyCheckedItems = initiallyCheckedItemsCount !== checkedKeys.size;\n if (hasNewlyCheckedItems) {\n this.checkedKeys = Array.from(checkedKeys);\n this.zone.run(() => this.notify());\n }\n }\n};\nCheckDirective.ɵfac = function CheckDirective_Factory(t) { return new (t || CheckDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCheckDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckDirective, selectors: [[\"\", \"kendoTreeViewCheckable\", \"\"]], inputs: { isChecked: \"isChecked\", checkedKeys: \"checkedKeys\", checkKey: [\"checkBy\", \"checkKey\"], checkable: [\"kendoTreeViewCheckable\", \"checkable\"] }, outputs: { checkedKeysChange: \"checkedKeysChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], CheckDirective.prototype, \"isChecked\", null);\n__decorate([\n Input(\"checkBy\"),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"checkKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], CheckDirective.prototype, \"checkedKeys\", null);\n__decorate([\n Input('kendoTreeViewCheckable'),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"checkable\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckDirective.prototype, \"checkedKeysChange\", void 0);\nCheckDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent,\n NgZone])\n], CheckDirective);\n\n/**\n * A directive which manages the disabled in-memory state of the TreeView node\n * ([see example]({% slug disabledstate_treeview %})).\n */\nlet DisableDirective = class DisableDirective {\n constructor(treeView, cdr) {\n this.treeView = treeView;\n this.cdr = cdr;\n /**\n * Defines the collection that will store the disabled keys.\n */\n this.disabledKeys = [];\n this.treeView.isDisabled = (dataItem, index) => (this.disabledKeys.indexOf(this.itemKey({ dataItem, index })) > -1);\n }\n /**\n * @hidden\n */\n set isDisabled(value) {\n this.treeView.isDisabled = value;\n }\n ngOnChanges(changes = {}) {\n const { disabledKeys } = changes;\n if (disabledKeys && !disabledKeys.firstChange) {\n this.cdr.markForCheck();\n }\n }\n itemKey(e) {\n if (!this.disableKey) {\n return e.index;\n }\n if (typeof this.disableKey === \"string\") {\n return e.dataItem[this.disableKey];\n }\n if (typeof this.disableKey === \"function\") {\n return this.disableKey(e);\n }\n }\n};\nDisableDirective.ɵfac = function DisableDirective_Factory(t) { return new (t || DisableDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDisableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DisableDirective, selectors: [[\"\", \"kendoTreeViewDisable\", \"\"]], inputs: { disabledKeys: \"disabledKeys\", isDisabled: \"isDisabled\", disableKey: [\"kendoTreeViewDisable\", \"disableKey\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], DisableDirective.prototype, \"isDisabled\", null);\n__decorate([\n Input(\"kendoTreeViewDisable\"),\n __metadata(\"design:type\", Object)\n], DisableDirective.prototype, \"disableKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DisableDirective.prototype, \"disabledKeys\", void 0);\nDisableDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent,\n ChangeDetectorRef])\n], DisableDirective);\n\nconst DEFAULT_FILTER_EXPAND_SETTINGS = {\n maxAutoExpandResults: -1,\n expandMatches: false,\n expandedOnClear: \"none\"\n};\n/**\n * A directive which manages the expanded state of the TreeView.\n * ([see example]({% slug expandedstate_treeview %})).\n */\nlet ExpandDirective = class ExpandDirective {\n constructor(component) {\n this.component = component;\n /**\n * Whether or not to auto-expand the nodes leading from the root node to each filter result.\n * To fine-tune this behavior, pass a [`FilterExpandSettings`]({% slug api_treeview_filterexpandsettings %}) object to this input.\n * @default false\n */\n this.expandOnFilter = false;\n /**\n * Fires when the `expandedKeys` collection was updated.\n */\n this.expandedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this._expandedKeys = [];\n this.originalExpandedKeys = [];\n this.isFiltered = false;\n /**\n * Fills array with the correct expand keys according to wrapper metadata.\n */\n this.updateExpandedNodes = (collection, node, autoExpandMatches) => {\n if (node.containsMatches || node.isMatch && autoExpandMatches && isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.updateExpandedNodes(collection, child, autoExpandMatches);\n });\n }\n };\n /**\n * Fills array with the expand key of every node.\n */\n this.getEveryExpandKey = (collection, node) => {\n if (isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.getEveryExpandKey(collection, child);\n });\n }\n };\n this.subscriptions.add(merge(this.component.expand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.component.collapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleExpand.bind(this)));\n if (this.component.filterStateChange) {\n this.subscriptions.add(this.component.filterStateChange.subscribe(this.handleAutoExpand.bind(this)));\n }\n this.component.isExpanded = (dataItem, index) => this.expandedKeys.indexOf(this.itemKey({ dataItem, index })) > -1;\n }\n /**\n * @hidden\n */\n set isExpanded(value) {\n this.component.isExpanded = value;\n }\n get filterExpandSettings() {\n const settings = isBoolean(this.expandOnFilter) ? { enabled: this.expandOnFilter } : Object.assign({}, this.expandOnFilter, { enabled: true });\n return Object.assign({}, DEFAULT_FILTER_EXPAND_SETTINGS, settings);\n }\n /**\n * Defines the collection that will store the expanded keys.\n */\n get expandedKeys() {\n return this._expandedKeys;\n }\n set expandedKeys(keys) {\n this._expandedKeys = keys;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n itemKey(e) {\n if (this.expandKey) {\n if (typeof this.expandKey === \"string\") {\n return e.dataItem[this.expandKey];\n }\n if (typeof this.expandKey === \"function\") {\n return this.expandKey(e);\n }\n }\n return e.index;\n }\n toggleExpand({ index, dataItem, expand }) {\n const item = this.itemKey({ index, dataItem });\n const idx = this.expandedKeys.indexOf(item);\n let notify = false;\n if (idx > -1 && !expand) {\n this.expandedKeys.splice(idx, 1);\n notify = true;\n }\n else if (idx === -1 && expand) {\n this.expandedKeys.push(item);\n notify = true;\n }\n if (notify) {\n this.expandedKeysChange.emit(this.expandedKeys);\n }\n }\n handleAutoExpand({ nodes, matchCount, term }) {\n if (!this.filterExpandSettings.enabled) {\n return;\n }\n const { maxAutoExpandResults, expandMatches: autoExpandMatches, expandedOnClear } = this.filterExpandSettings;\n if (!this.isFiltered) {\n this.originalExpandedKeys = this.expandedKeys.slice();\n }\n const exitingFilteredState = this.isFiltered && !term;\n const maxExceeded = maxAutoExpandResults !== -1 && matchCount > maxAutoExpandResults;\n const exitAutoExpandedState = exitingFilteredState || maxExceeded;\n if (exitAutoExpandedState) {\n switch (expandedOnClear) {\n case \"initial\": {\n if (!sameValues(this.expandedKeys, this.originalExpandedKeys)) {\n this.expandedKeys = this.originalExpandedKeys;\n this.expandedKeysChange.emit(this.expandedKeys);\n }\n break;\n }\n case \"all\": {\n this.expandedKeys = nodes.reduce((acc, rootNode) => {\n this.getEveryExpandKey(acc, rootNode);\n return acc;\n }, []);\n this.expandedKeysChange.emit(this.expandedKeys);\n break;\n }\n case \"unchanged\": {\n break;\n }\n case \"none\":\n default: {\n if (this.expandedKeys.length !== 0) {\n this.expandedKeys = [];\n this.expandedKeysChange.emit(this.expandedKeys);\n }\n break;\n }\n }\n this.isFiltered = false;\n return;\n }\n const indicesToExpand = nodes.reduce((acc, rootNode) => {\n this.updateExpandedNodes(acc, rootNode, autoExpandMatches);\n return acc;\n }, []);\n if (!sameValues(this.expandedKeys, indicesToExpand)) {\n this.expandedKeys = indicesToExpand;\n this.expandedKeysChange.emit(this.expandedKeys);\n }\n this.isFiltered = true;\n }\n};\nExpandDirective.ɵfac = function ExpandDirective_Factory(t) { return new (t || ExpandDirective)(ɵngcc0.ɵɵdirectiveInject(ExpandableComponent)); };\nExpandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ExpandDirective, selectors: [[\"\", \"kendoTreeViewExpandable\", \"\"]], inputs: { expandOnFilter: \"expandOnFilter\", isExpanded: \"isExpanded\", expandedKeys: \"expandedKeys\", expandKey: [\"expandBy\", \"expandKey\"] }, outputs: { expandedKeysChange: \"expandedKeysChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], ExpandDirective.prototype, \"isExpanded\", null);\n__decorate([\n Input(\"expandBy\"),\n __metadata(\"design:type\", Object)\n], ExpandDirective.prototype, \"expandKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ExpandDirective.prototype, \"expandOnFilter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpandDirective.prototype, \"expandedKeysChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ExpandDirective.prototype, \"expandedKeys\", null);\nExpandDirective = __decorate([ __metadata(\"design:paramtypes\", [ExpandableComponent])\n], ExpandDirective);\n\n/**\n * A directive which manages the in-memory selection state of the TreeView node\n * ([see example]({% slug selection_treeview %})).\n */\nlet SelectDirective = class SelectDirective {\n constructor(treeView) {\n this.treeView = treeView;\n /**\n * Fires when the `selectedKeys` collection was updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.selectActions = {\n 'multiple': (e) => this.selectMultiple(e),\n 'single': (e) => this.selectSingle(e)\n };\n this._selectedKeys = [];\n this.subscriptions.add(this.treeView.selectionChange.subscribe(this.select.bind(this)));\n this.treeView.isSelected = (dataItem, index) => (this.selectedKeys.indexOf(this.itemKey({ dataItem, index })) > -1);\n }\n /**\n * @hidden\n */\n set isSelected(value) {\n this.treeView.isSelected = value;\n }\n /**\n * Defines the collection that will store the selected keys\n * ([see example]({% slug selection_treeview %}#toc-selection-modes)).\n */\n get selectedKeys() {\n return this._selectedKeys;\n }\n set selectedKeys(keys) {\n this._selectedKeys = keys;\n }\n get getAriaMultiselectable() {\n return this.options.mode === 'multiple';\n }\n get options() {\n const defaultOptions = {\n enabled: true,\n mode: 'single'\n };\n if (!isPresent(this.selection) || typeof this.selection === 'string') {\n return defaultOptions;\n }\n const selectionSettings = isBoolean(this.selection) ? { enabled: this.selection } : this.selection;\n return Object.assign(defaultOptions, selectionSettings);\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n itemKey(e) {\n if (!this.selectKey) {\n return e.index;\n }\n if (typeof this.selectKey === 'string') {\n return e.dataItem[this.selectKey];\n }\n if (typeof this.selectKey === 'function') {\n return this.selectKey(e);\n }\n }\n select(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.selectActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n selectSingle(node) {\n const key = this.itemKey(node);\n if (this.selectedKeys[0] === key) {\n return;\n }\n this.selectedKeys = [key];\n this.notify();\n }\n selectMultiple(node) {\n const key = this.itemKey(node);\n const idx = this.selectedKeys.indexOf(key);\n const isSelected = idx > -1;\n if (!isPresent(key)) {\n return;\n }\n if (isSelected) {\n this.selectedKeys.splice(idx, 1);\n }\n else {\n this.selectedKeys.push(key);\n }\n this.notify();\n }\n notify() {\n this.selectedKeysChange.emit(this.selectedKeys.slice());\n }\n};\nSelectDirective.ɵfac = function SelectDirective_Factory(t) { return new (t || SelectDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent)); };\nSelectDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectDirective, selectors: [[\"\", \"kendoTreeViewSelectable\", \"\"]], hostVars: 1, hostBindings: function SelectDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", ctx.getAriaMultiselectable);\n } }, inputs: { isSelected: \"isSelected\", selectedKeys: \"selectedKeys\", selectKey: [\"selectBy\", \"selectKey\"], selection: [\"kendoTreeViewSelectable\", \"selection\"] }, outputs: { selectedKeysChange: \"selectedKeysChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], SelectDirective.prototype, \"isSelected\", null);\n__decorate([\n Input('selectBy'),\n __metadata(\"design:type\", Object)\n], SelectDirective.prototype, \"selectKey\", void 0);\n__decorate([\n Input('kendoTreeViewSelectable'),\n __metadata(\"design:type\", Object)\n], SelectDirective.prototype, \"selection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], SelectDirective.prototype, \"selectedKeys\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SelectDirective.prototype, \"selectedKeysChange\", void 0);\n__decorate([\n HostBinding('attr.aria-multiselectable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SelectDirective.prototype, \"getAriaMultiselectable\", null);\nSelectDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], SelectDirective);\n\n/**\n * Describes the attempted drop action during dragging.\n * Passed as `action` value to the [`kendoTreeViewDragClueTemplate`]({% slug api_treeview_dragcluetemplatedirective %}) directive.\n * By default, this value defines the rendered icon in the drag clue.\n */\nvar DropAction;\n(function (DropAction) {\n DropAction[DropAction[\"Add\"] = 0] = \"Add\";\n DropAction[DropAction[\"InsertTop\"] = 1] = \"InsertTop\";\n DropAction[DropAction[\"InsertBottom\"] = 2] = \"InsertBottom\";\n DropAction[DropAction[\"InsertMiddle\"] = 3] = \"InsertMiddle\";\n DropAction[DropAction[\"Invalid\"] = 4] = \"Invalid\";\n})(DropAction || (DropAction = {}));\n\n/**\n * Describes where the dragged item is dropped relative to the drop target item.\n */\nvar DropPosition;\n(function (DropPosition) {\n DropPosition[DropPosition[\"Over\"] = 0] = \"Over\";\n DropPosition[DropPosition[\"Before\"] = 1] = \"Before\";\n DropPosition[DropPosition[\"After\"] = 2] = \"After\";\n})(DropPosition || (DropPosition = {}));\n\n/**\n * @hidden\n */\nvar ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Up\"] = -1] = \"Up\";\n ScrollDirection[ScrollDirection[\"Down\"] = 1] = \"Down\";\n})(ScrollDirection || (ScrollDirection = {}));\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop) event.\n */\nclass TreeItemDropEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer, originalEvent) {\n super();\n /**\n * @hidden\n */\n this.isValid = true;\n Object.assign(this, initializer);\n this.originalEvent = originalEvent;\n }\n /**\n * Specifies if the drop action should be marked as valid.\n * If set to `false`, the [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events will not be fired and the drag clue\n * will be animated back to the source item to indicate the action is marked as invalid.\n */\n setValid(isValid) {\n this.isValid = isValid;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart) event.\n */\nclass TreeItemDragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer) {\n super();\n Object.assign(this, initializer);\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag) and\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend) events.\n */\nclass TreeItemDragEvent {\n}\n\nconst ɵ0$3 = () => {\n if (!(isDocumentAvailable() && isPresent(document.body))) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
child
`;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n};\n/**\n * Checks if the browser supports relative stacking context.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\nconst hasRelativeStackingContext = memoize(ɵ0$3);\n/**\n * Stores the result of the passed function's first invokation and returns it instead of invoking it again afterwards.\n */\nfunction memoize(fn) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fn(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n *\n * Gets the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the `fixed` children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n *\n * If no parent container is `transform`-ed the function will return `{ left: 0, top: 0 }`;\n */\nconst getContainerOffset = (element) => {\n if (!(element && hasRelativeStackingContext())) {\n return { left: 0, top: 0 };\n }\n let offsetParent = element.parentElement;\n while (offsetParent) {\n if (window.getComputedStyle(offsetParent).transform !== 'none') {\n break;\n }\n offsetParent = offsetParent.parentElement;\n }\n if (offsetParent) {\n const rect = offsetParent.getBoundingClientRect();\n return {\n left: rect.left - offsetParent.scrollLeft,\n top: rect.top - offsetParent.scrollTop\n };\n }\n return { left: 0, top: 0 };\n};\n/**\n * @hidden\n */\nconst getDropAction = (dropPosition, dropTarget) => {\n if (!(isPresent(dropPosition) && isPresent(dropTarget))) {\n return DropAction.Invalid;\n }\n switch (dropPosition) {\n case DropPosition.Over:\n return DropAction.Add;\n case DropPosition.Before:\n return isPresent(closestNode(dropTarget).previousElementSibling) ? DropAction.InsertMiddle : DropAction.InsertTop;\n case DropPosition.After:\n return isPresent(closestNode(dropTarget).nextElementSibling) ? DropAction.InsertMiddle : DropAction.InsertBottom;\n default:\n return DropAction.Invalid;\n }\n};\n/**\n * @hidden\n */\nconst getDropPosition = (draggedItem, target, clientY, targetTreeView, containerOffset) => {\n if (!(isPresent(draggedItem) && isPresent(target) && isPresent(targetTreeView) && isPresent(containerOffset))) {\n return;\n }\n // the .k-mid element starts just after the checkbox/expand arrow and stretches till the end of the treeview on the right\n const item = closestWithMatch(target, '.k-mid');\n if (!isPresent(item)) {\n return;\n }\n // the content element (.k-in:not(.k-treeview-load-more-button)) holds just the treeview item text\n const content = getContentElement(item);\n const targetChildOfDraggedItem = hasParent(item, closestNode(draggedItem));\n if (!isPresent(content) || (content === draggedItem) || targetChildOfDraggedItem) {\n return;\n }\n const itemViewPortCoords = content.getBoundingClientRect();\n /*\n if the user is hovering a treeview item, split the item height into four parts:\n - dropping into the top quarter should insert the dragged item before the drop target\n - dropping into the bottom quarter should insert the dragged item after the drop target\n - dropping into the second or third quarter should add the item as child node of the drop target\n\n if the user is NOT hovering a treeview item (he's dragging somewhere on the right), split the item height to just two parts:\n - dropping should insert before or after\n */\n const itemDivisionHeight = itemViewPortCoords.height / (isContent(target) ? 4 : 2);\n // clear any possible container offset created by parent elements with `transform` css property set\n const pointerPosition = clientY - containerOffset.top;\n const itemTop = itemViewPortCoords.top - containerOffset.top;\n if (pointerPosition < itemTop + itemDivisionHeight) {\n return DropPosition.Before;\n }\n if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {\n return DropPosition.After;\n }\n return DropPosition.Over;\n};\n/**\n * @hidden\n */\nconst treeItemFromEventTarget = (treeView, dropTarget) => {\n if (!(isPresent(treeView) && isPresent(dropTarget))) {\n return null;\n }\n const node = closestNode(dropTarget);\n const index = nodeId(node);\n const lookup = treeView.itemLookup(index);\n if (!(isPresent(lookup) && isPresent(lookup.item.dataItem))) {\n return null;\n }\n return lookup;\n};\n/**\n * @hidden\n *\n * Emits `collapse` on the specified TreeView node if the latter is left empty after its last child node was dragged out.\n */\nconst collapseEmptyParent = (parent, parentNodes, treeview) => {\n if (isPresent(parent) && parentNodes.length === 0 && treeview.isExpanded(parent.item.dataItem, parent.item.index)) {\n treeview.collapseNode(parent.item.dataItem, parent.item.index);\n }\n};\n/**\n * @hidden\n *\n * Expands the node if it's dropped into and it's not yet expanded.\n */\nconst expandDropTarget = (dropTarget, treeView) => {\n if (!treeView.isExpanded(dropTarget.item.dataItem, dropTarget.item.index)) {\n treeView.expandNode(dropTarget.item.dataItem, dropTarget.item.index);\n }\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = (event) => {\n if (!(isDocumentAvailable() && isPresent(document.elementFromPoint))) {\n return event.target;\n }\n return document.elementFromPoint(event.clientX, event.clientY);\n};\n/**\n * @hidden\n *\n * Checks if the original index is before the new one and corrects the new one by decrementing the index for the level, where the original item stood.\n */\nconst updateMovedItemIndex = (newIndex, originalIndex) => {\n const movedItemNewIndexParts = newIndex.split('_');\n const originalItemIndexParts = originalIndex.split('_');\n // if the original item was moved from a deeper level, there's no need for index correction\n // e.g. 4_0_1 is moved to 5_0 => removing 4_0_1 will not cause 5_0 to be moved\n if (movedItemNewIndexParts.length < originalItemIndexParts.length) {\n return newIndex;\n }\n // check if the parent item paths are the same - index correction is not required when the original item path differs from the path of the moved item - they belong to different hierarchies\n // e.g. 4_1 is moved to 5_1 - the parent item paths are differen (4 compared to 5) => removing 4_1 will not cause 5_1 to be moved\n // e.g 4_1 is moved to 4_3 - the parent paths are the same (both 4) => removing 4_1 will cause 4_3 to be moved\n const originalItemParentPathLength = originalItemIndexParts.length - 1;\n const originalItemParentPath = originalItemIndexParts.slice(0, originalItemParentPathLength).join('_');\n const movedItemParentPath = movedItemNewIndexParts.slice(0, originalItemParentPathLength).join('_');\n // check if the the index of the level where the original item is taken from is greater than the one of the moved item\n // e.g. 4_5 is moved to 4_1 (comapre 5 and 1) => removing 4_5 will not cause 4_1 to be moved\n // e.g. 4_1 is moved to 4_5 (comapre 1 and 5) => removing 4_1 will cause 4_5 to be moved\n const originalItemIndexLevel = originalItemIndexParts.length - 1;\n const originalItemLevelIndex = Number(originalItemIndexParts[originalItemIndexLevel]);\n const movedItemLevelIndex = Number(movedItemNewIndexParts[originalItemIndexLevel]);\n if ((originalItemParentPath === movedItemParentPath) && (movedItemLevelIndex > originalItemLevelIndex)) {\n // if the removed item causes the dropped item to be moved a position up - decrement the index at that level\n movedItemNewIndexParts[originalItemIndexLevel] = String(movedItemLevelIndex - 1);\n return movedItemNewIndexParts.join('_');\n }\n return newIndex;\n};\n/**\n * @hidden\n */\nconst SCROLLBAR_REG_EXP = new RegExp('(auto|scroll)');\n/**\n * @hidden\n *\n * Retrives the first scrollable element starting the search from the provided one, traversing to the top of the DOM tree.\n */\nconst getScrollableContainer = (node) => {\n while (isPresent(node) && node.nodeName !== 'HTML') {\n const hasOverflow = node.scrollHeight > node.clientHeight;\n const hasScrollbar = SCROLLBAR_REG_EXP.test(getComputedStyle(node).overflowY);\n if (hasOverflow && hasScrollbar) {\n return node;\n }\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n *\n * Checks if the top of the scrollable element is reached.\n * Floors the scrollTop value.\n */\nconst isTopReached = (element) => Math.floor(element.scrollTop) <= 0;\n/**\n * @hidden\n *\n * Checks if the bottom of the scrollable element is reached.\n * Ceils the scrollTop value.\n */\nconst isBottomReached = (element) => Math.ceil(element.scrollTop) >= element.scrollHeight - element.clientHeight;\n/**\n * @hidden\n *\n * Scrolls the element in the given direction by the provided step.\n *\n * If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),\n * increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.\n *\n * Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.\n */\nconst scrollElementBy = (element, step, direction) => {\n if (!(isPresent(element) && isDocumentAvailable())) {\n return;\n }\n const initialScrollTop = element.scrollTop;\n let currentStep = step;\n let iterations = 0;\n while (initialScrollTop === element.scrollTop &&\n !(direction === ScrollDirection.Up && isTopReached(element)) &&\n !(direction === ScrollDirection.Down && isBottomReached(element)) &&\n iterations < 20 // as the bulgarian saying goes - to ties our underpants\n ) {\n element.scrollTop += (currentStep * direction);\n currentStep += 1;\n iterations += 1;\n }\n};\n\n/**\n * @hidden\n */\nconst copyPageSize = (treeview, source, target) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const sourceGroupSize = treeview.getNodePageSize(source);\n treeview.setNodePageSize(target, sourceGroupSize);\n};\n/**\n * @hidden\n */\nconst incrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize + 1);\n};\n/**\n * @hidden\n */\nconst decrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize - 1);\n};\n\n/**\n * @hidden\n */\nclass HierarchyEditingService {\n constructor(hierarchyBinding) {\n this.hierarchyBinding = hierarchyBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationChildren = this.childrenFor(getDataItem(destinationItem));\n // add the moved node just before the load more button if load more is enabled\n const targetIndex = isPresent(destinationTree.loadMoreService) ?\n Math.min(destinationTree.loadMoreService.getGroupSize(getDataItem(destinationItem)), destinationChildren.length) : // the page size might be greater than the actual children array length\n destinationChildren.length;\n destinationChildren.splice(targetIndex, 0, clonedSourceDataItem);\n setter(this.hierarchyBinding.childrenField)(getDataItem(destinationItem), destinationChildren);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, targetIndex);\n }\n else {\n const destinationParentNodes = this.getParentNodes(destinationItem, destinationTree);\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = destinationParentNodes.indexOf(getDataItem(destinationItem)) + shiftIndex;\n destinationParentNodes.splice(targetIndex, 0, clonedSourceDataItem);\n const parentIndex = destinationItem.parent ? destinationItem.parent.item.index : null;\n this.movedItemNewIndex = buildTreeIndex(parentIndex, targetIndex);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceParentNodes = this.getParentNodes(sourceItem, sourceTree);\n const sourceItemIndex = sourceParentNodes.indexOf(getDataItem(sourceItem));\n sourceParentNodes.splice(sourceItemIndex, 1);\n // emit collapse for the parent node if its last child node was spliced\n collapseEmptyParent(sourceItem.parent, sourceParentNodes, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n getParentNodes(node, treeView) {\n return isPresent(node.parent) ?\n this.childrenFor(getDataItem(node.parent)) :\n treeView.nodes;\n }\n childrenFor(dataItem) {\n return getter(this.hierarchyBinding.childrenField)(dataItem) || [];\n }\n}\n\n/**\n * @hidden\n */\nlet DragClueComponent = class DragClueComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.hostClasses = true;\n this.posistionStyle = 'fixed';\n }\n get statusIconClass() {\n switch (this.action) {\n case DropAction.Add: return 'k-i-plus';\n case DropAction.InsertTop: return 'k-i-insert-up';\n case DropAction.InsertBottom: return 'k-i-insert-down';\n case DropAction.InsertMiddle: return 'k-i-insert-middle';\n case DropAction.Invalid:\n default: return 'k-i-cancel';\n }\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.cdr.detectChanges();\n }\n};\nDragClueComponent.ɵfac = function DragClueComponent_Factory(t) { return new (t || DragClueComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDragClueComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DragClueComponent, selectors: [[\"kendo-treeview-drag-clue\"]], hostVars: 6, hostBindings: function DragClueComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"position\", ctx.posistionStyle);\n ɵngcc0.ɵɵclassProp(\"k-header\", ctx.hostClasses)(\"k-drag-clue\", ctx.hostClasses);\n } }, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function DragClueComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DragClueComponent_ng_container_0_Template, 4, 4, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(1, DragClueComponent_1_Template, 1, 7, null, 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template);\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-header'),\n HostBinding('class.k-drag-clue'),\n __metadata(\"design:type\", Boolean)\n], DragClueComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('style.position'),\n __metadata(\"design:type\", String)\n], DragClueComponent.prototype, \"posistionStyle\", void 0);\nDragClueComponent = __decorate([ __metadata(\"design:paramtypes\", [ChangeDetectorRef])\n], DragClueComponent);\n\n/**\n * @hidden\n */\nclass DragAndDropAssetService {\n get componentRef() {\n if (!isPresent(this._componentRef)) {\n throw new Error('The `initalize` method must be called before calling other service methods.');\n }\n return this._componentRef;\n }\n set componentRef(componentRef) {\n this._componentRef = componentRef;\n }\n get element() {\n return this.componentRef.location.nativeElement;\n }\n ngOnDestroy() {\n if (!isPresent(this._componentRef)) {\n return;\n }\n this.element.parentElement.removeChild(this.element);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n move(left, top, offset = 0) {\n this.element.style.left = `${left + offset}px`;\n this.element.style.top = `${top + offset}px`;\n }\n}\nDragAndDropAssetService.ɵfac = function DragAndDropAssetService_Factory(t) { return new (t || DragAndDropAssetService)(); };\nDragAndDropAssetService.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragAndDropAssetService });\n\n/**\n * @hidden\n */\nconst CLUE_OFFSET = 10;\n/**\n * @hidden\n */\nconst RETURN_ANIMATION_DURATION = 200;\n/**\n * @hidden\n */\nlet DragClueService = class DragClueService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const clueComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DragClueComponent);\n this.componentRef = container.createComponent(clueComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n ngOnDestroy() {\n this.cancelReturnAnimation();\n this.cancelScroll();\n super.ngOnDestroy();\n }\n move(left, top) {\n super.move(left, top, CLUE_OFFSET);\n }\n animateDragClueToElementPosition(target) {\n if (!(isPresent(target) && isPresent(this.element.animate))) {\n this.hide();\n return;\n }\n const targetElementViewPortCoords = target.getBoundingClientRect();\n const clueElementViewPortCoords = this.element.getBoundingClientRect();\n this.returnAnimation = this.element.animate([\n { transform: 'translate(0, 0)' },\n { transform: `translate(${targetElementViewPortCoords.left - clueElementViewPortCoords.left}px, ${targetElementViewPortCoords.top - clueElementViewPortCoords.top}px)` }\n ], RETURN_ANIMATION_DURATION);\n this.returnAnimation.onfinish = () => this.hide();\n }\n cancelReturnAnimation() {\n if (!isPresent(this.returnAnimation)) {\n return;\n }\n this.returnAnimation.cancel();\n this.returnAnimation = null;\n }\n updateDragClueData(action, sourceItem, destinationItem) {\n const dragClue = this.componentRef.instance;\n if (action === dragClue.action && dataItemsEqual(sourceItem, dragClue.sourceItem) && dataItemsEqual(destinationItem, dragClue.destinationItem)) {\n return;\n }\n dragClue.action = action;\n dragClue.sourceItem = sourceItem;\n dragClue.destinationItem = destinationItem;\n dragClue.detectChanges();\n }\n updateText(text) {\n if (text === this.componentRef.instance.text) {\n return;\n }\n this.componentRef.instance.text = text;\n this.componentRef.instance.detectChanges();\n }\n /**\n * Triggers the first scrollable parent to scroll upwards or downwards.\n * Uses setInterval, so should be called outside the angular zone.\n */\n scrollIntoView({ step, interval }) {\n this.cancelScroll();\n const scrollableContainer = getScrollableContainer(this.element);\n if (!isPresent(scrollableContainer)) {\n return;\n }\n const containerRect = scrollableContainer.getBoundingClientRect();\n const clueRect = this.element.getBoundingClientRect();\n // if the beginning of the scrollable container is above the current viewport, fall-back to 0\n const firstVisibleClientTopPart = Math.max(containerRect.top, 0);\n // start scrolling up when the first visible item is dragged over\n const topLimit = firstVisibleClientTopPart + clueRect.height;\n // if the end of the scrollable container is beneath the current viewport, fall-back to its client height\n // add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached\n const bottomLimit = firstVisibleClientTopPart + Math.min(containerRect.bottom, scrollableContainer.clientHeight);\n if (clueRect.top < topLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Up), interval);\n }\n else if (clueRect.bottom > bottomLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Down), interval);\n }\n }\n /**\n * Cancels out the on-going scroll animation, if present.\n */\n cancelScroll() {\n if (isPresent(this.scrollInterval)) {\n clearInterval(this.scrollInterval);\n this.scrollInterval = null;\n }\n }\n};\nDragClueService.ɵfac = function DragClueService_Factory(t) { return new (t || DragClueService)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver)); };\nDragClueService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DragClueService, factory: function (t) { return DragClueService.ɵfac(t); } });\nDragClueService = __decorate([ __metadata(\"design:paramtypes\", [ComponentFactoryResolver])\n], DragClueService);\n\n/**\n * @hidden\n */\nlet DropHintComponent = class DropHintComponent {\n constructor(changeDetectorRef) {\n this.changeDetectorRef = changeDetectorRef;\n this.hostClass = true;\n this.position = 'fixed';\n this.pointerEvents = 'none';\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.changeDetectorRef.detectChanges();\n }\n};\nDropHintComponent.ɵfac = function DropHintComponent_Factory(t) { return new (t || DropHintComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDropHintComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DropHintComponent, selectors: [[\"kendo-treeview-drop-hint\"]], hostVars: 6, hostBindings: function DropHintComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"position\", ctx.position)(\"pointer-events\", ctx.pointerEvents);\n ɵngcc0.ɵɵclassProp(\"k-drop-hint-container\", ctx.hostClass);\n } }, decls: 2, vars: 2, consts: [[\"class\", \"k-drop-hint k-drop-hint-h\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-drop-hint\", \"k-drop-hint-h\"], [1, \"k-drop-hint-start\"], [1, \"k-drop-hint-line\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function DropHintComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropHintComponent_div_0_Template, 3, 0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, DropHintComponent_1_Template, 1, 6, null, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template);\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-drop-hint-container'),\n __metadata(\"design:type\", Boolean)\n], DropHintComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('style.position'),\n __metadata(\"design:type\", String)\n], DropHintComponent.prototype, \"position\", void 0);\n__decorate([\n HostBinding('style.pointer-events'),\n __metadata(\"design:type\", String)\n], DropHintComponent.prototype, \"pointerEvents\", void 0);\nDropHintComponent = __decorate([ __metadata(\"design:paramtypes\", [ChangeDetectorRef])\n], DropHintComponent);\n\n/**\n * @hidden\n */\nlet DropHintService = class DropHintService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const hintComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DropHintComponent);\n this.componentRef = container.createComponent(hintComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n updateDropHintData(action, sourceItem, destinationItem) {\n const dropHint = this.componentRef.instance;\n if (action === dropHint.action && dataItemsEqual(sourceItem, dropHint.sourceItem) && dataItemsEqual(destinationItem, dropHint.destinationItem)) {\n return;\n }\n dropHint.action = action;\n dropHint.sourceItem = sourceItem;\n dropHint.destinationItem = destinationItem;\n dropHint.detectChanges();\n }\n};\nDropHintService.ɵfac = function DropHintService_Factory(t) { return new (t || DropHintService)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver)); };\nDropHintService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DropHintService, factory: function (t) { return DropHintService.ɵfac(t); } });\nDropHintService = __decorate([ __metadata(\"design:paramtypes\", [ComponentFactoryResolver])\n], DropHintService);\n\n/**\n * Represents the template for the TreeView drag clue when an item is dragged. To define the clue template,\n * nest an `` tag with the `kendoTreeViewDragClueTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n *\n * The text, attempted drop action, source item and destination item are available as context variables in the template:\n *\n *\n * - `let-text=\"text\"` (`string`)\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nlet DragClueTemplateDirective = class DragClueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDragClueTemplateDirective.ɵfac = function DragClueTemplateDirective_Factory(t) { return new (t || DragClueTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDragClueTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragClueTemplateDirective, selectors: [[\"\", \"kendoTreeViewDragClueTemplate\", \"\"]] });\nDragClueTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DragClueTemplateDirective);\n\n/**\n * Represents the template for the TreeView drop hint when an item is dragged. To define the hint template,\n * nest an `` tag with the `kendoTreeViewDropHintTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n * The attempted drop action, source item and destination item are available as context variables in the template:\n *\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nlet DropHintTemplateDirective = class DropHintTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDropHintTemplateDirective.ɵfac = function DropHintTemplateDirective_Factory(t) { return new (t || DropHintTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDropHintTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropHintTemplateDirective, selectors: [[\"\", \"kendoTreeViewDropHintTemplate\", \"\"]] });\nDropHintTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DropHintTemplateDirective);\n\nconst DEFAULT_SCROLL_SETTINGS = {\n enabled: true,\n step: 1,\n interval: 1\n};\n/**\n * A directive which enables the dragging and dropping items inside the current TreeView or between multiple linked TreeView component instances\n * ([see example]({% slug draganddrop_treeview %})).\n *\n * Triggers the [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart),\n * [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag),\n * [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop),\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend),\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * events when the corresponding actions occur on the respective TreeView instance.\n */\nlet DragAndDropDirective = class DragAndDropDirective {\n constructor(element, zone, treeview, dragClueService, dropHintService) {\n this.element = element;\n this.zone = zone;\n this.treeview = treeview;\n this.dragClueService = dragClueService;\n this.dropHintService = dropHintService;\n /**\n * Specifies whether the `removeItem` event will be fired after an item is dropped when the `ctrl` key is pressed.\n * If enabled, the `removeItem` event will not be fired on the source TreeView\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n *\n * @default false\n */\n this.allowCopy = false;\n /**\n * Specifes the TreeViewComponent instances into which dragged items from the current TreeViewComponent can be dropped\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n */\n this.dropZoneTreeViews = [];\n /**\n * Specifies the distance in pixels from the initial item pointerdown event, before the dragging is initiated.\n * The `nodeDragStart` and all consequent TreeView drag events will not be fired until the actual dragging begins.\n *\n * @default 5\n */\n this.startDragAfter = 5;\n /**\n * Controlls the auto-scrolling behavior during drag-and-drop ([see example]({% slug draganddrop_treeview %}#toc-auto-scrolling)).\n * Enbaled by default. To turn the auto-scrolling off, set this prop to `false`.\n *\n * By default, the scrolling will be performed by 1 pixel at every 1 millisecond, when the dragged item reaches the top or the bottom of the scrollable container.\n * The `step` and `interval` can be overridden by providing a `DragAndDropScrollSettings` object to this prop.\n *\n * @default true\n */\n this.autoScroll = true;\n /**\n * @hidden\n */\n this.userSelectStyle = 'none';\n /**\n * Describes the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the fixed children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\n this.containerOffset = { top: 0, left: 0 };\n this.treeview.touchActions = false;\n }\n get scrollSettings() {\n const userProvidedSettings = typeof this.autoScroll === 'boolean' ?\n { enabled: this.autoScroll } :\n this.autoScroll;\n return Object.assign({}, DEFAULT_SCROLL_SETTINGS, userProvidedSettings);\n }\n ngAfterContentInit() {\n this.initalizeDraggable();\n this.dragClueService.initialize(this.treeview.assetsContainer, this.dragClueTemplate && this.dragClueTemplate.templateRef);\n this.dropHintService.initialize(this.treeview.assetsContainer, this.dropHintTemplate && this.dropHintTemplate.templateRef);\n }\n ngOnDestroy() {\n this.draggable.destroy();\n }\n /**\n * @hidden\n */\n handlePress({ originalEvent }) {\n if (!isContent(originalEvent.target)) {\n return;\n }\n // store the drag target on press, show it only when it's actually dragged\n this.draggedItem = closestWithMatch(originalEvent.target, '.k-in');\n // record the current pointer down coords - copared to the `startDragAfter` value to calculate whether to initiate dragging\n this.pendingDragStartEvent = originalEvent;\n }\n /**\n * @hidden\n */\n handleDrag({ originalEvent, clientX, clientY }) {\n if (this.shouldInitiateDragStart({ clientX, clientY })) {\n this.initiateDragStart();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n if (hasObservers(this.treeview.nodeDrag)) {\n this.zone.run(() => this.notifyDrag(originalEvent, dropTarget));\n }\n const targetTreeView = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, targetTreeView, this.containerOffset);\n const dropHintAnchor = closestWithMatch(dropTarget, '.k-mid');\n const dropAction = getDropAction(dropPosition, dropTarget);\n const sourceItem = treeItemFromEventTarget(this.treeview, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(targetTreeView, dropTarget);\n this.updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem);\n this.updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem);\n if (this.scrollSettings.enabled) {\n this.dragClueService.scrollIntoView(this.scrollSettings);\n }\n }\n /**\n * @hidden\n */\n handleRelease({ originalEvent, clientY }) {\n if (this.scrollSettings.enabled) {\n this.dragClueService.cancelScroll();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n const sourceTree = this.treeview;\n const destinationTree = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, this.getTargetTreeView(dropTarget), this.containerOffset);\n const sourceItem = treeItemFromEventTarget(sourceTree, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(destinationTree, dropTarget);\n if (isPresent(destinationItem) && isPresent(dropPosition)) {\n this.zone.run(() => this.notifyDrop({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }, originalEvent));\n }\n else {\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n if (hasObservers(this.treeview.nodeDragEnd)) {\n this.zone.run(() => this.notifyDragEnd({ sourceItem, destinationItem, originalEvent }));\n }\n this.dropHintService.hide();\n this.draggedItem = null;\n }\n updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem) {\n if (!isPresent(dropHintAnchor) || dropPosition === DropPosition.Over || !isPresent(dropPosition)) {\n this.dropHintService.hide();\n return;\n }\n const anchorViewPortCoords = dropHintAnchor.getBoundingClientRect();\n const insertBefore = dropPosition === DropPosition.Before;\n const top = insertBefore ? anchorViewPortCoords.top : (anchorViewPortCoords.top + anchorViewPortCoords.height);\n this.dropHintService.updateDropHintData(dropAction, sourceItem, destinationItem);\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dropHintService.move(anchorViewPortCoords.left - this.containerOffset.left, top - this.containerOffset.top);\n this.dropHintService.show();\n }\n updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem) {\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dragClueService.move(clientX - this.containerOffset.left, clientY - this.containerOffset.top);\n this.dragClueService.updateDragClueData(dropAction, sourceItem, destinationItem);\n this.dragClueService.show();\n }\n initalizeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n notifyDragStart(originalEvent, dropTarget) {\n const sourceItem = treeItemFromEventTarget(this.treeview, dropTarget);\n const event = new TreeItemDragStartEvent({ sourceItem, originalEvent });\n this.treeview.nodeDragStart.emit(event);\n return event;\n }\n notifyDrag(originalEvent, dropTarget) {\n const dragEvent = {\n sourceItem: treeItemFromEventTarget(this.treeview, this.draggedItem),\n destinationItem: treeItemFromEventTarget(this.getTargetTreeView(dropTarget), dropTarget),\n originalEvent\n };\n this.treeview.nodeDrag.emit(dragEvent);\n }\n notifyDrop(args, originalEvent) {\n const event = new TreeItemDropEvent(args, originalEvent);\n args.destinationTree.nodeDrop.emit(event);\n // disable the animations on drop and restore them afterwards (if they were initially turned on)\n this.disableAnimationsForNextTick(args.destinationTree);\n if (args.sourceTree !== args.destinationTree) {\n this.disableAnimationsForNextTick(args.sourceTree);\n }\n if (!event.isDefaultPrevented() && event.isValid) {\n this.dragClueService.hide();\n // order matters in a flat data binding scenario (first add, then remove)\n args.destinationTree.addItem.emit(args);\n if (!(originalEvent.ctrlKey && this.allowCopy)) {\n args.sourceTree.removeItem.emit(args);\n }\n }\n else if (event.isDefaultPrevented()) {\n // directly hide the clue if the default is prevented\n this.dragClueService.hide();\n }\n else if (!event.isValid) {\n // animate the clue back to the source item position if marked as invalid\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n }\n notifyDragEnd(dragEndEvent) {\n this.treeview.nodeDragEnd.emit(dragEndEvent);\n }\n getTargetTreeView(dropTarget) {\n const treeViewTagName = this.treeview.element.nativeElement.tagName;\n const targetTreeView = closestWithMatch(dropTarget, treeViewTagName);\n return [this.treeview, ...this.dropZoneTreeViews].find(treeView => isPresent(treeView) && treeView.element.nativeElement === targetTreeView);\n }\n disableAnimationsForNextTick(treeView) {\n // the treeView.animate getter returns `true` when the animations are turned off\n // confusing, but seems on purpose (the `animate` prop sets the value of the @.disabled host-bound attribute)\n if (treeView.animate) {\n return;\n }\n treeView.animate = false;\n this.zone.runOutsideAngular(() => setTimeout(() => treeView.animate = true));\n }\n shouldInitiateDragStart(currentPointerCoords) {\n if (!isPresent(this.pendingDragStartEvent)) {\n return false;\n }\n const distanceFromPointerDown = Math.sqrt(Math.pow((this.pendingDragStartEvent.clientX - currentPointerCoords.clientX), 2) +\n Math.pow((this.pendingDragStartEvent.clientY - currentPointerCoords.clientY), 2));\n return distanceFromPointerDown >= this.startDragAfter;\n }\n initiateDragStart() {\n if (hasObservers(this.treeview.nodeDragStart)) {\n const dragStartEvent = this.zone.run(() => this.notifyDragStart(this.pendingDragStartEvent, getDropTarget(this.pendingDragStartEvent)));\n if (dragStartEvent.isDefaultPrevented()) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n }\n this.dragClueService.cancelReturnAnimation();\n this.dragClueService.updateText(this.draggedItem.innerText);\n this.containerOffset = getContainerOffset(this.draggedItem);\n this.pendingDragStartEvent = null;\n }\n};\nDragAndDropDirective.ɵfac = function DragAndDropDirective_Factory(t) { return new (t || DragAndDropDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(TreeViewComponent), ɵngcc0.ɵɵdirectiveInject(DragClueService), ɵngcc0.ɵɵdirectiveInject(DropHintService)); };\nDragAndDropDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragAndDropDirective, selectors: [[\"\", \"kendoTreeViewDragAndDrop\", \"\"]], contentQueries: function DragAndDropDirective_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DragClueTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DropHintTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dragClueTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropHintTemplate = _t.first);\n } }, hostVars: 8, hostBindings: function DragAndDropDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"user-select\", ctx.userSelectStyle)(\"-ms-user-select\", ctx.userSelectStyle)(\"-moz-user-select\", ctx.userSelectStyle)(\"-webkit-user-select\", ctx.userSelectStyle);\n } }, inputs: { allowCopy: \"allowCopy\", dropZoneTreeViews: \"dropZoneTreeViews\", startDragAfter: \"startDragAfter\", autoScroll: \"autoScroll\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n DragClueService,\n DropHintService\n ])] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DragAndDropDirective.prototype, \"allowCopy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DragAndDropDirective.prototype, \"dropZoneTreeViews\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DragAndDropDirective.prototype, \"startDragAfter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DragAndDropDirective.prototype, \"autoScroll\", void 0);\n__decorate([\n ContentChild(DragClueTemplateDirective, { static: false }),\n __metadata(\"design:type\", DragClueTemplateDirective)\n], DragAndDropDirective.prototype, \"dragClueTemplate\", void 0);\n__decorate([\n ContentChild(DropHintTemplateDirective, { static: false }),\n __metadata(\"design:type\", DropHintTemplateDirective)\n], DragAndDropDirective.prototype, \"dropHintTemplate\", void 0);\n__decorate([\n HostBinding('style.user-select'),\n HostBinding('style.-ms-user-select'),\n HostBinding('style.-moz-user-select'),\n HostBinding('style.-webkit-user-select'),\n __metadata(\"design:type\", String)\n], DragAndDropDirective.prototype, \"userSelectStyle\", void 0);\nDragAndDropDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n TreeViewComponent,\n DragClueService,\n DropHintService])\n], DragAndDropDirective);\n\n/**\n * @hidden\n */\nconst DEFAULT_FILTER_SETTINGS = {\n operator: 'contains',\n ignoreCase: true,\n mode: \"lenient\"\n};\n\n/**\n * @hidden\n */\nclass FilteringBase {\n constructor(component) {\n this.component = component;\n this.visibleNodes = new Set();\n this._filterSettings = DEFAULT_FILTER_SETTINGS;\n }\n /**\n * The settings which are applied when performing a filter on the component's data.\n */\n set filterSettings(settings) {\n this._filterSettings = Object.assign({}, DEFAULT_FILTER_SETTINGS, settings);\n }\n get filterSettings() {\n return this._filterSettings;\n }\n /**\n * Applies a filter and changes the visibility of the component's nodes accordingly.\n */\n set filter(term) {\n this.handleFilterChange(term);\n }\n /**\n * @hidden\n */\n handleFilterChange(term) {\n if (!this.filterData) {\n return;\n }\n this.resetNodesVisibility(this.filterData);\n if (term) {\n filterTree(this.filterData, term, this.filterSettings, this.component.textField);\n }\n this.updateVisibleNodes(this.filterData);\n if (isPresent(this.component.filterStateChange)) {\n this.component.filterStateChange.emit({\n nodes: this.filterData,\n matchCount: this.visibleNodes.size,\n term,\n filterSettings: this.filterSettings\n });\n }\n }\n updateVisibleNodes(items) {\n items.forEach((wrapper) => {\n if (wrapper.visible) {\n this.visibleNodes.add(wrapper.dataItem);\n }\n if (wrapper.children) {\n this.updateVisibleNodes(wrapper.children);\n }\n });\n }\n resetNodesVisibility(items) {\n this.visibleNodes.clear();\n items.forEach((wrapper) => {\n wrapper.visible = true;\n if (wrapper.children) {\n this.resetNodesVisibility(wrapper.children);\n }\n });\n }\n}\nFilteringBase.ɵfac = function FilteringBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nFilteringBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilteringBase, inputs: { filterSettings: \"filterSettings\", filter: \"filter\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FilteringBase.prototype, \"filterSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FilteringBase.prototype, \"filter\", null);\n\nconst indexBuilder = new IndexBuilderService();\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of child nodes.\n */\nlet HierarchyBindingDirective = class HierarchyBindingDirective extends FilteringBase {\n constructor(component, dragAndDropDirective) {\n super(component);\n this.component = component;\n this.dragAndDropDirective = dragAndDropDirective;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n this.originalData = [];\n const shouldFilter = !isPresent(this.dragAndDropDirective);\n this.component.isVisible = shouldFilter ? (node) => this.visibleNodes.has(node) : isVisible;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n set childrenField(value) {\n if (!value) {\n throw new Error(\"'childrenField' cannot be empty\");\n }\n this._childrenField = value;\n }\n /**\n * The nodes which will be displayed by the TreeView.\n */\n set nodes(values) {\n this.originalData = values || [];\n this.filterData = mapToWrappers(values, this.childrenField) || [];\n this.updateVisibleNodes(this.filterData);\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n get childrenField() {\n return this._childrenField;\n }\n ngOnInit() {\n if (isPresent(this.childrenField)) {\n this.component.children = item => of(getter(this.childrenField)(item));\n this.component.hasChildren = item => {\n const children = getter(this.childrenField)(item);\n return Boolean(children && children.length);\n };\n this.component.editService = new HierarchyEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n ngOnChanges(changes) {\n if (isChanged('childrenField', changes, false)) {\n this.nodes = this.originalData;\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n};\nHierarchyBindingDirective.ɵfac = function HierarchyBindingDirective_Factory(t) { return new (t || HierarchyBindingDirective)(ɵngcc0.ɵɵdirectiveInject(DataBoundComponent), ɵngcc0.ɵɵdirectiveInject(DragAndDropDirective, 9)); };\nHierarchyBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: HierarchyBindingDirective, selectors: [[\"\", \"kendoTreeViewHierarchyBinding\", \"\"]], inputs: { loadOnDemand: \"loadOnDemand\", childrenField: \"childrenField\", nodes: \"nodes\", isVisible: \"isVisible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], HierarchyBindingDirective.prototype, \"childrenField\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], HierarchyBindingDirective.prototype, \"nodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], HierarchyBindingDirective.prototype, \"isVisible\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HierarchyBindingDirective.prototype, \"loadOnDemand\", void 0);\nHierarchyBindingDirective = __decorate([ __param(1, Optional()), __param(1, Host()),\n __metadata(\"design:paramtypes\", [DataBoundComponent,\n DragAndDropDirective])\n], HierarchyBindingDirective);\n\n/**\n * @hidden\n */\nlet LoadingIndicatorDirective = class LoadingIndicatorDirective {\n constructor(expandService, loadingService, cd) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.cd = cd;\n this._loading = false;\n }\n get loading() {\n return this._loading;\n }\n set loading(value) {\n this._loading = value;\n this.cd.markForCheck();\n }\n ngOnInit() {\n const loadingNotifications = this.loadingService\n .changes\n .pipe(filter(index => index === this.index));\n this.subscription = this.expandService\n .changes\n .pipe(filter(({ index }) => index === this.index), tap(({ expand }) => {\n if (!expand && this.loading) {\n this.loading = false;\n }\n }), filter(({ expand }) => expand), switchMap(x => of(x).pipe(delay(100), takeUntil(loadingNotifications))))\n .subscribe(() => this.loading = true);\n this.subscription.add(loadingNotifications.subscribe(() => this.loading = false));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n};\nLoadingIndicatorDirective.ɵfac = function LoadingIndicatorDirective_Factory(t) { return new (t || LoadingIndicatorDirective)(ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(LoadingNotificationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nLoadingIndicatorDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LoadingIndicatorDirective, selectors: [[\"\", \"kendoTreeViewLoading\", \"\"]], hostVars: 2, hostBindings: function LoadingIndicatorDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-i-loading\", ctx.loading);\n } }, inputs: { index: [\"kendoTreeViewLoading\", \"index\"] } });\n__decorate([\n HostBinding(\"class.k-i-loading\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], LoadingIndicatorDirective.prototype, \"loading\", null);\n__decorate([\n Input(\"kendoTreeViewLoading\"),\n __metadata(\"design:type\", String)\n], LoadingIndicatorDirective.prototype, \"index\", void 0);\nLoadingIndicatorDirective = __decorate([ __metadata(\"design:paramtypes\", [ExpandStateService,\n LoadingNotificationService,\n ChangeDetectorRef])\n], LoadingIndicatorDirective);\n\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions must have a unary.\n */\nconst compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n\n/**\n * @hidden\n */\nclass FlatEditingService {\n constructor(flatBinding) {\n this.flatBinding = flatBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationItemId = getter(this.flatBinding.idField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemId);\n const lastChildNodeIndex = this.getLastVisibleChildNodeIndex(destinationTree, this.flatBinding.originalData, getDataItem(destinationItem));\n // insert after the last visible child\n const targetIndex = lastChildNodeIndex + 1;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const focusTarget = this.fetchChildNodes(getDataItem(destinationItem), destinationTree).indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, focusTarget);\n }\n else {\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = this.flatBinding.originalData.indexOf(getDataItem(destinationItem)) + shiftIndex;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n const destinationItemParentId = getter(this.flatBinding.parentIdField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemParentId);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const parentIndex = destinationItem.parent ?\n destinationItem.parent.item.index :\n null;\n const parentContainer = destinationItem.parent ?\n this.fetchChildNodes(getDataItem(destinationItem.parent), destinationTree) :\n destinationTree.nodes;\n const focusTarget = parentContainer.indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(parentIndex, focusTarget);\n }\n if (sourceTree !== destinationTree) {\n this.addChildNodes(clonedSourceDataItem, sourceTree);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceDataItem = getDataItem(sourceItem);\n const sourceItemIndex = this.flatBinding.originalData.indexOf(sourceDataItem);\n this.flatBinding.originalData.splice(sourceItemIndex, 1);\n if (sourceTree !== destinationTree) {\n this.removeChildNodes(sourceDataItem, sourceTree);\n }\n this.rebindData();\n // emit collapse for the parent node if its last child node was spliced\n const parentChildren = sourceItem.parent ? sourceItem.parent.children : [];\n collapseEmptyParent(sourceItem.parent, parentChildren, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n addChildNodes(dataItem, source) {\n const itemChildren = this.fetchAllDescendantNodes(dataItem, source);\n this.flatBinding.originalData.push(...itemChildren);\n }\n removeChildNodes(dataItem, source) {\n const sourceChildren = this.fetchAllDescendantNodes(dataItem, source);\n sourceChildren.forEach(item => {\n const index = this.flatBinding.originalData.indexOf(item);\n this.flatBinding.originalData.splice(index, 1);\n });\n }\n fetchAllDescendantNodes(node, treeview) {\n let nodes = this.fetchChildNodes(node, treeview);\n nodes.forEach(node => nodes = nodes.concat(this.fetchAllDescendantNodes(node, treeview) || []));\n return nodes;\n }\n fetchChildNodes(node, treeview) {\n if (!node) {\n return [];\n }\n let nodes = [];\n treeview\n .children(node)\n .pipe(take(1))\n .subscribe(children => nodes = nodes.concat(children || []));\n return nodes;\n }\n getLastVisibleChildNodeIndex(treeview, data, node) {\n if (!isPresent(treeview.loadMoreService) || !treeview.hasChildren(node)) {\n return data.length;\n }\n const visibleNodesCount = treeview.loadMoreService.getGroupSize(node);\n const visibleChildren = this.fetchChildNodes(node, treeview).slice(0, visibleNodesCount);\n const lastNode = visibleChildren[visibleChildren.length - 1];\n const lastNodeIndex = data.indexOf(lastNode);\n return lastNodeIndex;\n }\n rebindData() {\n this.flatBinding.nodes = this.flatBinding.originalData;\n }\n}\n\nconst findChildren = (prop, nodes, value) => nodes.filter((x) => prop(x) === value);\nconst indexBuilder$1 = new IndexBuilderService();\nconst mapToTree = (currentLevelNodes, allNodes, parentIdField, idField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder$1.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToTree(findChildren(getter(parentIdField), allNodes || [], getter(idField)(node)), allNodes, parentIdField, idField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes.\n */\nlet FlatDataBindingDirective = class FlatDataBindingDirective extends FilteringBase {\n constructor(component) {\n super(component);\n this.component = component;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n /**\n * @hidden\n */\n this.originalData = [];\n this.component.isVisible = (node) => this.visibleNodes.has(node);\n }\n /**\n * The nodes which will be displayed by the TreeView.\n */\n set nodes(values) {\n this.originalData = values || [];\n if (!isNullOrEmptyString(this.parentIdField)) {\n const prop = getter(this.parentIdField);\n this.component.nodes = this.originalData.filter(compose(isBlank, prop));\n this.filterData = mapToTree(this.component.nodes, this.originalData, this.parentIdField, this.idField);\n this.updateVisibleNodes(this.filterData);\n }\n else {\n this.component.nodes = this.originalData.slice(0);\n }\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (isPresent(this.parentIdField) && isPresent(this.idField)) {\n const fetchChildren = (node) => findChildren(getter(this.parentIdField), this.originalData || [], getter(this.idField)(node));\n this.component.hasChildren = (node) => fetchChildren(node).length > 0;\n this.component.children = (node) => of(fetchChildren(node));\n this.component.editService = new FlatEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (isChanged('parentIdField', changes, false)) {\n this.nodes = this.originalData;\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n};\nFlatDataBindingDirective.ɵfac = function FlatDataBindingDirective_Factory(t) { return new (t || FlatDataBindingDirective)(ɵngcc0.ɵɵdirectiveInject(DataBoundComponent)); };\nFlatDataBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlatDataBindingDirective, selectors: [[\"\", \"kendoTreeViewFlatDataBinding\", \"\"]], inputs: { loadOnDemand: \"loadOnDemand\", nodes: \"nodes\", isVisible: \"isVisible\", parentIdField: \"parentIdField\", idField: \"idField\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], FlatDataBindingDirective.prototype, \"nodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatDataBindingDirective.prototype, \"parentIdField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatDataBindingDirective.prototype, \"idField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FlatDataBindingDirective.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], FlatDataBindingDirective.prototype, \"isVisible\", null);\nFlatDataBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], FlatDataBindingDirective);\n\nconst buildItem = (index, dataItem) => ({ dataItem, index });\nlet id = 0;\nconst TREE_ITEM_ROLE = 'treeitem';\nconst BUTTON_ROLE = 'button';\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nlet TreeViewItemDirective = class TreeViewItemDirective {\n constructor(element, expandService, navigationService, selectionService, lookupService, renderer, ib) {\n this.element = element;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.lookupService = lookupService;\n this.renderer = renderer;\n this.ib = ib;\n this.role = TREE_ITEM_ROLE;\n this.loadOnDemand = true;\n this.isDisabled = false;\n this.isVisible = true;\n this.ariaChecked = 'false';\n this.id = id++;\n this.isInitialized = false;\n this.subscriptions = [];\n this.subscribe();\n }\n set isChecked(checked) {\n if (checked === 'checked') {\n this.ariaChecked = 'true';\n }\n else if (checked === 'indeterminate') {\n this.ariaChecked = 'mixed';\n }\n else {\n this.ariaChecked = 'false';\n }\n }\n get isExpanded() {\n return this._isExpanded || false;\n }\n set isExpanded(isExpanded) {\n this._isExpanded = isExpanded;\n }\n get isSelected() {\n return this._isSelected || false;\n }\n set isSelected(isSelected) {\n this._isSelected = isSelected;\n }\n get isButton() {\n return this.role === BUTTON_ROLE;\n }\n get treeItem() {\n return buildItem(this.index, this.dataItem);\n }\n get parentTreeItem() {\n return this.parentDataItem ? buildItem(this.parentIndex, this.parentDataItem) : null;\n }\n ngOnInit() {\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.registerItem(this.treeItem, this.parentTreeItem);\n }\n this.registerNavigationItem();\n this.isInitialized = true;\n this.setAttribute('role', this.role);\n this.setAriaAttributes();\n this.setDisabledClass();\n this.updateTabIndex();\n }\n ngOnChanges(changes) {\n const { index, isDisabled } = changes;\n if (anyChanged(['index', 'checkable', 'isChecked', 'expandable', 'isExpanded', 'selectable', 'isSelected'], changes)) {\n this.setAriaAttributes();\n }\n if (isDisabled) {\n this.setDisabledClass();\n }\n if (this.loadOnDemand && !this.isButton) {\n this.moveLookupItem(changes);\n }\n this.moveNavigationItem(index);\n if (anyChanged(['isDisabled', 'isVisible'], changes)) {\n this.updateNodeAvailability();\n }\n }\n ngOnDestroy() {\n this.navigationService.unregisterItem(this.id, this.index);\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.unregisterItem(this.index, this.dataItem);\n }\n this.subscriptions = this.subscriptions.reduce((list, callback) => (callback.unsubscribe(), list), []);\n }\n subscribe() {\n this.subscriptions = [\n this.navigationService.moves\n .subscribe(() => {\n this.updateTabIndex();\n this.focusItem();\n }),\n this.navigationService.expands\n .pipe(filter(({ index }) => index === this.index && !this.isDisabled))\n .subscribe(({ expand }) => this.expand(expand))\n ];\n }\n registerNavigationItem() {\n this.navigationService.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n this.activateItem();\n }\n activateItem() {\n if (this.isDisabled) {\n return;\n }\n const navigationService = this.navigationService;\n const selectionService = this.selectionService;\n const index = this.index;\n selectionService.setFirstSelected(index, this.isSelected);\n if (!navigationService.isActive(index) && selectionService.isFirstSelected(index)) {\n navigationService.activateIndex(index);\n }\n }\n expand(shouldExpand) {\n this.expandService[shouldExpand ? 'expand' : 'collapse'](this.index, this.dataItem);\n }\n isFocusable() {\n return !this.isDisabled && this.navigationService.isFocusable(this.index);\n }\n focusItem() {\n if (this.isInitialized && this.navigationService.isActive(this.index)) {\n this.element.nativeElement.focus();\n }\n }\n moveLookupItem(changes = {}) {\n const { dataItem, index, parentDataItem, parentIndex } = changes;\n if ((index && index.firstChange) || //skip first change\n (!dataItem && !index && !parentDataItem && !parentIndex)) {\n return;\n }\n const oldIndex = (index || {}).previousValue || this.index;\n this.lookupService.replaceItem(oldIndex, this.treeItem, this.parentTreeItem);\n }\n moveNavigationItem(indexChange = {}) {\n const { currentValue, firstChange, previousValue } = indexChange;\n if (!firstChange && isPresent(currentValue) && isPresent(previousValue)) {\n this.navigationService.unregisterItem(this.id, previousValue);\n this.navigationService.registerItem(this.id, currentValue, this.isDisabled, this.isButton);\n }\n }\n updateNodeAvailability() {\n const service = this.navigationService;\n if (this.isDisabled || !this.isVisible) {\n service.activateClosest(this.index); // activate before unregister the item\n }\n else {\n service.activateFocusable();\n }\n service.unregisterItem(this.id, this.index);\n service.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n }\n setAriaAttributes() {\n this.setAttribute('aria-level', this.ib.level(this.index).toString());\n // don't render attributes when the component configuration doesn't allow the specified state\n this.setAttribute('aria-expanded', this.expandable ? this.isExpanded.toString() : null);\n this.setAttribute('aria-selected', this.selectable ? this.isSelected.toString() : null);\n this.setAttribute('aria-checked', this.checkable ? this.ariaChecked : null);\n }\n setDisabledClass() {\n this.setClass('k-state-disabled', this.isDisabled);\n }\n setClass(className, toggle) {\n const action = toggle ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n updateTabIndex() {\n this.setAttribute('tabIndex', this.isFocusable() ? '0' : '-1');\n }\n setAttribute(attr, value) {\n if (!isPresent(value)) {\n this.renderer.removeAttribute(this.element.nativeElement, attr);\n return;\n }\n this.renderer.setAttribute(this.element.nativeElement, attr, value);\n }\n};\nTreeViewItemDirective.ɵfac = function TreeViewItemDirective_Factory(t) { return new (t || TreeViewItemDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(TreeViewLookupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(IndexBuilderService)); };\nTreeViewItemDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TreeViewItemDirective, selectors: [[\"\", \"kendoTreeViewItem\", \"\"]], inputs: { role: \"role\", loadOnDemand: \"loadOnDemand\", isDisabled: \"isDisabled\", isVisible: \"isVisible\", isChecked: \"isChecked\", isExpanded: \"isExpanded\", isSelected: \"isSelected\", dataItem: \"dataItem\", index: \"index\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", checkable: \"checkable\", selectable: \"selectable\", expandable: \"expandable\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewItemDirective.prototype, \"dataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemDirective.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewItemDirective.prototype, \"parentDataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemDirective.prototype, \"parentIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemDirective.prototype, \"role\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"checkable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"expandable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], TreeViewItemDirective.prototype, \"isChecked\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"isDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"isVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], TreeViewItemDirective.prototype, \"isExpanded\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], TreeViewItemDirective.prototype, \"isSelected\", null);\nTreeViewItemDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ExpandStateService,\n NavigationService,\n SelectionService,\n TreeViewLookupService,\n Renderer2,\n IndexBuilderService])\n], TreeViewItemDirective);\n\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nlet TreeViewItemContentDirective = class TreeViewItemContentDirective {\n constructor(element, navigationService, selectionService, renderer) {\n this.element = element;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.renderer = renderer;\n this.initialSelection = false;\n this.isSelected = isSelected;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.navigationService.moves\n .subscribe(this.updateFocusClass.bind(this)));\n this.subscriptions.add(this.navigationService.selects\n .pipe(filter((index) => index === this.index))\n .subscribe((index) => this.selectionService.select(index, this.dataItem)));\n this.subscriptions.add(this.selectionService.changes\n .subscribe(() => {\n this.updateSelectionClass(this.isSelected(this.dataItem, this.index));\n }));\n }\n ngOnChanges(changes) {\n if (changes.initialSelection) {\n this.updateSelectionClass(this.initialSelection);\n }\n if (changes.index) {\n this.updateFocusClass();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n updateFocusClass() {\n this.render(this.navigationService.isActive(this.index), 'k-state-focused');\n }\n updateSelectionClass(selected) {\n this.render(selected, 'k-state-selected');\n }\n render(addClass, className) {\n const action = addClass ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n};\nTreeViewItemContentDirective.ɵfac = function TreeViewItemContentDirective_Factory(t) { return new (t || TreeViewItemContentDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTreeViewItemContentDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TreeViewItemContentDirective, selectors: [[\"\", \"kendoTreeViewItemContent\", \"\"]], inputs: { initialSelection: \"initialSelection\", isSelected: \"isSelected\", dataItem: \"dataItem\", index: \"index\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewItemContentDirective.prototype, \"dataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemContentDirective.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemContentDirective.prototype, \"initialSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewItemContentDirective.prototype, \"isSelected\", void 0);\nTreeViewItemContentDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NavigationService,\n SelectionService,\n Renderer2])\n], TreeViewItemContentDirective);\n\n/**\n * @hidden\n *\n * Represents the CheckBox component of the Kendo UI TreeView for Angular.\n *\n */\nlet CheckBoxComponent = class CheckBoxComponent {\n constructor(element, renderer, changeDetector) {\n this.element = element;\n this.renderer = renderer;\n this.changeDetector = changeDetector;\n /**\n * Specifies the [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) of the component.\n */\n this.id = `_${guid()}`;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires when the user changes the check state of the component.\n */\n this.checkStateChange = new EventEmitter();\n this.checkState = 'none';\n }\n //XXX: implement ComponentValueAccessor\n //XXX: focus/blur methods\n get classWrapper() { return true; }\n get indeterminate() {\n return this.checkState === 'indeterminate';\n }\n get checked() {\n return this.checkState === 'checked';\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.element.nativeElement, \"tabindex\");\n }\n ngDoCheck() {\n this.checkState = this.isChecked(this.node, this.index);\n }\n handleChange(e) {\n const state = e.target.checked ? 'checked' : 'none';\n // update the View State so that Angular updates the input if the isChecked value is the same\n this.checkState = state;\n this.changeDetector.detectChanges();\n this.checkStateChange.emit(state);\n }\n};\nCheckBoxComponent.ɵfac = function CheckBoxComponent_Factory(t) { return new (t || CheckBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nCheckBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CheckBoxComponent, selectors: [[\"kendo-checkbox\"]], hostVars: 2, hostBindings: function CheckBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-checkbox-wrapper\", ctx.classWrapper);\n } }, inputs: { id: \"id\", tabindex: \"tabindex\", isChecked: \"isChecked\", node: \"node\", index: \"index\", labelText: \"labelText\" }, outputs: { checkStateChange: \"checkStateChange\" }, decls: 3, vars: 6, consts: [[\"type\", \"checkbox\", 1, \"k-checkbox\", 3, \"id\", \"checked\", \"indeterminate\", \"tabindex\", \"change\"], [\"tabindex\", \"-1\", 1, \"k-checkbox-label\", 3, \"for\"]], template: function CheckBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"input\", 0);\n ɵngcc0.ɵɵlistener(\"change\", function CheckBoxComponent_Template_input_change_0_listener($event) { return ctx.handleChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(1, \"label\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.id)(\"checked\", ctx.checked)(\"indeterminate\", ctx.indeterminate)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"for\", ctx.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.labelText);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-checkbox-wrapper'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CheckBoxComponent.prototype, \"classWrapper\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckBoxComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckBoxComponent.prototype, \"isChecked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckBoxComponent.prototype, \"node\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckBoxComponent.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckBoxComponent.prototype, \"labelText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CheckBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckBoxComponent.prototype, \"checkStateChange\", void 0);\nCheckBoxComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ChangeDetectorRef])\n], CheckBoxComponent);\n\nconst COMPONENT_DIRECTIVES = [\n CheckBoxComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the CheckBox component.\n */\nlet CheckBoxModule = class CheckBoxModule {\n};\nCheckBoxModule.ɵfac = function CheckBoxModule_Factory(t) { return new (t || CheckBoxModule)(); };\nCheckBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CheckBoxModule });\nCheckBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * A directive which enables the update of the initially provided data array during drag-and-drop.\n *\n * Either use this directive in combination with one of the data binding directives ([`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %})\n * or [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %})) which set their own edit handlers, or provide\n * your own [`editService`]({% slug api_treeview_editservice %}) to this directive. The latter subscribes to and calls the\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * handlers when the corresponding events are triggered by the TreeView component.\n */\nlet DragAndDropEditingDirective = class DragAndDropEditingDirective {\n constructor(treeview) {\n this.treeview = treeview;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeview.addItem.subscribe(this.handleAdd.bind(this)));\n this.subscriptions.add(this.treeview.removeItem.subscribe(this.handleRemove.bind(this)));\n }\n /**\n * Specifies the handlers called on drag-and-drop [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem)\n * and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events.\n */\n set editService(service) {\n this.treeview.editService = service;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleAdd(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.add(args);\n }\n handleRemove(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.remove(args);\n }\n};\nDragAndDropEditingDirective.ɵfac = function DragAndDropEditingDirective_Factory(t) { return new (t || DragAndDropEditingDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent)); };\nDragAndDropEditingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragAndDropEditingDirective, selectors: [[\"\", \"kendoTreeViewDragAndDropEditing\", \"\"]], inputs: { editService: \"editService\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DragAndDropEditingDirective.prototype, \"editService\", null);\nDragAndDropEditingDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], DragAndDropEditingDirective);\n\nconst LOAD_MORE_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\n/**\n * A directive that enables the display of only a limited amount of nodes per level\n * ([see example]({% slug loadmorebutton_treeview %})).\n */\nlet LoadMoreDirective = class LoadMoreDirective {\n constructor(treeview) {\n this.treeview = treeview;\n /**\n * Keeps track of the current page size of each node over expand/collapse cycles.\n */\n this.pageSizes = new Map();\n /**\n * Used as an identifier for the root page size as the root collection of nodes is not associated with a data item.\n */\n this.rootLevelId = guid();\n this.treeview.loadMoreService = {\n getInitialPageSize: this.getInitalPageSize.bind(this),\n getGroupSize: this.getGroupSize.bind(this),\n setGroupSize: this.setGroupSize.bind(this),\n getTotalNodesCount: this.getTotalNodesCount.bind(this)\n };\n }\n /**\n * Specifies the callback that will be called when the load more button is clicked.\n * Providing a function is only required when additional nodes are fetched on demand\n * ([see example]({% slug loadmorebutton_treeview %}#toc-remote-data)).\n */\n set loadMoreNodes(loadMoreNodes) {\n if (typeof loadMoreNodes === 'string') {\n return;\n }\n this.treeview.loadMoreService.loadMoreNodes = loadMoreNodes;\n }\n ngOnChanges() {\n this.verifySettings();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.pageSize)) {\n throw new Error(`To use the TreeView \\`kendoTreeViewLoadMore\\` directive, you need to assign a \\`pageSize\\` value. See ${LOAD_MORE_DOC_LINK$1}.`);\n }\n const loadMoreNodes = this.treeview.loadMoreService.loadMoreNodes;\n if (isPresent(loadMoreNodes) && typeof loadMoreNodes !== 'function') {\n throw new Error(`The passed value to the \\`kendoTreeViewLoadMore\\` directive must be a function that retrieves additional nodes. See ${LOAD_MORE_DOC_LINK$1}.`);\n }\n if (isPresent(loadMoreNodes) && !isPresent(this.totalField)) {\n throw new Error(`When a function to fetch additional nodes is provided to the \\`kendoTreeViewLoadMore\\` directive, the \\`totalField\\` and \\`totalRootNodes\\` values must also be provided. See ${LOAD_MORE_DOC_LINK$1}.`);\n }\n }\n getGroupSize(dataItem) {\n const itemKey = dataItem || this.rootLevelId;\n return this.pageSizes.has(itemKey) ? this.pageSizes.get(itemKey) : this.pageSize;\n }\n setGroupSize(dataItem, pageSize) {\n const itemKey = dataItem || this.rootLevelId;\n const normalizedSizeValue = pageSize > 0 ? pageSize : 0;\n this.pageSizes.set(itemKey, normalizedSizeValue);\n }\n getTotalNodesCount(dataItem, loadedNodesCount) {\n if (isPresent(dataItem) && isPresent(this.totalField)) {\n return dataItem[this.totalField];\n }\n else if (!isPresent(dataItem) && isPresent(this.totalRootNodes)) {\n return this.totalRootNodes;\n }\n else {\n return loadedNodesCount;\n }\n }\n getInitalPageSize() {\n return this.pageSize;\n }\n};\nLoadMoreDirective.ɵfac = function LoadMoreDirective_Factory(t) { return new (t || LoadMoreDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent)); };\nLoadMoreDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LoadMoreDirective, selectors: [[\"\", \"kendoTreeViewLoadMore\", \"\"]], inputs: { loadMoreNodes: [\"kendoTreeViewLoadMore\", \"loadMoreNodes\"], pageSize: \"pageSize\", totalRootNodes: \"totalRootNodes\", totalField: \"totalField\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('kendoTreeViewLoadMore'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], LoadMoreDirective.prototype, \"loadMoreNodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LoadMoreDirective.prototype, \"pageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LoadMoreDirective.prototype, \"totalRootNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LoadMoreDirective.prototype, \"totalField\", void 0);\nLoadMoreDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], LoadMoreDirective);\n\nconst COMPONENT_DIRECTIVES$1 = [\n TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * @hidden\n */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n CheckBoxModule,\n InputsModule\n ]] });\n\nconst EXPORTS = [\n TreeViewComponent,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DropHintTemplateDirective,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the TreeView component.\n */\nlet TreeViewModule = class TreeViewModule {\n};\nTreeViewModule.ɵfac = function TreeViewModule_Factory(t) { return new (t || TreeViewModule)(); };\nTreeViewModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TreeViewModule });\nTreeViewModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandStateService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IndexBuilderService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadingNotificationService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NodeChildrenService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NodeTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewNodeTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadMoreButtonTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMoreButtonTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataBoundComponent, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandableComponent, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewLookupService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.Default,\n exportAs: 'kendoTreeView',\n providers: providers,\n selector: 'kendo-treeview',\n template: `\n \n \n \n \n \n
    \n
\n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ExpandStateService }, { type: NavigationService }, { type: NodeChildrenService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: DataChangeNotificationService }, { type: ɵngcc1.LocalizationService }]; }, { classNames: [{\n type: HostBinding,\n args: [\"class.k-widget\"]\n }, {\n type: HostBinding,\n args: [\"class.k-treeview\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], filterInputPlaceholder: [{\n type: Input\n }], childrenLoaded: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], nodeDragStart: [{\n type: Output\n }], nodeDrag: [{\n type: Output\n }], filterStateChange: [{\n type: Output\n }], nodeDrop: [{\n type: Output\n }], nodeDragEnd: [{\n type: Output\n }], addItem: [{\n type: Output\n }], removeItem: [{\n type: Output\n }], checkedChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], nodeClick: [{\n type: Output\n }], nodeDblClick: [{\n type: Output\n }], trackBy: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], navigable: [{\n type: Input\n }], children: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], animate: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['@.disabled']\n }], nodeTemplateRef: [{\n type: Input,\n args: ['nodeTemplate']\n }], loadMoreButtonTemplateRef: [{\n type: Input,\n args: ['loadMoreButtonTemplate']\n }], nodes: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], assetsContainer: [{\n type: ViewChild,\n args: ['assetsContainer', { read: ViewContainerRef, static: true }]\n }], nodeTemplateQuery: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], loadMoreButtonTemplateQuery: [{\n type: ContentChild,\n args: [LoadMoreButtonTemplateDirective, { static: false }]\n }], textField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewGroupComponent, [{\n type: Component,\n args: [{\n animations: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ],\n selector: '[kendoTreeViewGroup]',\n template: `\n \n
\n \n \n \n \n \n \n \n \n \n \n {{nodeText(node)}}\n \n \n \n
\n \n \n \n \n
\n \n \n \n \n \n \n Load more\n \n \n
\n \n `\n }]\n }], function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: IndexBuilderService }, { type: TreeViewLookupService }, { type: NavigationService }, { type: NodeChildrenService }, { type: DataChangeNotificationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { kGroupClass: [{\n type: HostBinding,\n args: [\"class.k-group\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], loadOnDemand: [{\n type: Input\n }], textField: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], children: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], expandIcons: [{\n type: Input\n }], disabled: [{\n type: Input\n }], selectable: [{\n type: Input\n }], touchActions: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], nodes: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], nodeTemplateRef: [{\n type: Input\n }], loadMoreButtonTemplateRef: [{\n type: Input\n }], loadMoreService: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewCheckable]' }]\n }], function () { return [{ type: TreeViewComponent }, { type: ɵngcc0.NgZone }]; }, { checkedKeysChange: [{\n type: Output\n }], isChecked: [{\n type: Input\n }], checkedKeys: [{\n type: Input\n }], checkKey: [{\n type: Input,\n args: [\"checkBy\"]\n }], checkable: [{\n type: Input,\n args: ['kendoTreeViewCheckable']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DisableDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewDisable]' }]\n }], function () { return [{ type: TreeViewComponent }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabledKeys: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], disableKey: [{\n type: Input,\n args: [\"kendoTreeViewDisable\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewExpandable]' }]\n }], function () { return [{ type: ExpandableComponent }]; }, { expandOnFilter: [{\n type: Input\n }], expandedKeysChange: [{\n type: Output\n }], isExpanded: [{\n type: Input\n }], expandedKeys: [{\n type: Input\n }], expandKey: [{\n type: Input,\n args: [\"expandBy\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewSelectable]' }]\n }], function () { return [{ type: TreeViewComponent }]; }, { selectedKeysChange: [{\n type: Output\n }], isSelected: [{\n type: Input\n }], selectedKeys: [{\n type: Input\n }], getAriaMultiselectable: [{\n type: HostBinding,\n args: ['attr.aria-multiselectable']\n }], selectKey: [{\n type: Input,\n args: ['selectBy']\n }], selection: [{\n type: Input,\n args: ['kendoTreeViewSelectable']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragClueComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drag-clue',\n template: `\n \n \n {{text}}\n \n\n \n
\n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-header']\n }, {\n type: HostBinding,\n args: ['class.k-drag-clue']\n }], posistionStyle: [{\n type: HostBinding,\n args: ['style.position']\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragClueService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropHintComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drop-hint',\n template: `\n \n
\n
\n \n\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-drop-hint-container']\n }], position: [{\n type: HostBinding,\n args: ['style.position']\n }], pointerEvents: [{\n type: HostBinding,\n args: ['style.pointer-events']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropHintService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragClueTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragClueTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropHintTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDropHintTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDrop]',\n providers: [\n DragClueService,\n DropHintService\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: TreeViewComponent }, { type: DragClueService }, { type: DropHintService }]; }, { allowCopy: [{\n type: Input\n }], dropZoneTreeViews: [{\n type: Input\n }], startDragAfter: [{\n type: Input\n }], autoScroll: [{\n type: Input\n }], userSelectStyle: [{\n type: HostBinding,\n args: ['style.user-select']\n }, {\n type: HostBinding,\n args: ['style.-ms-user-select']\n }, {\n type: HostBinding,\n args: ['style.-moz-user-select']\n }, {\n type: HostBinding,\n args: ['style.-webkit-user-select']\n }], dragClueTemplate: [{\n type: ContentChild,\n args: [DragClueTemplateDirective, { static: false }]\n }], dropHintTemplate: [{\n type: ContentChild,\n args: [DropHintTemplateDirective, { static: false }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HierarchyBindingDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewHierarchyBinding]' }]\n }], function () { return [{ type: DataBoundComponent }, { type: DragAndDropDirective, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { loadOnDemand: [{\n type: Input\n }], childrenField: [{\n type: Input\n }], nodes: [{\n type: Input\n }], isVisible: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadingIndicatorDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewLoading]' }]\n }], function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { loading: [{\n type: HostBinding,\n args: [\"class.k-i-loading\"]\n }], index: [{\n type: Input,\n args: [\"kendoTreeViewLoading\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlatDataBindingDirective, [{\n type: Directive,\n args: [{ selector: \"[kendoTreeViewFlatDataBinding]\" }]\n }], function () { return [{ type: DataBoundComponent }]; }, { loadOnDemand: [{\n type: Input\n }], nodes: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], parentIdField: [{\n type: Input\n }], idField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewItemDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItem]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ExpandStateService }, { type: NavigationService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: ɵngcc0.Renderer2 }, { type: IndexBuilderService }]; }, { role: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], checkable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], expandable: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewItemContentDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItemContent]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: NavigationService }, { type: SelectionService }, { type: ɵngcc0.Renderer2 }]; }, { initialSelection: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-checkbox',\n template: `\n \n {{labelText}}\n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { id: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], checkStateChange: [{\n type: Output\n }], classWrapper: [{\n type: HostBinding,\n args: ['class.k-checkbox-wrapper']\n }], isChecked: [{\n type: Input\n }], node: [{\n type: Input\n }], index: [{\n type: Input\n }], labelText: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CheckBoxModule, { declarations: [CheckBoxComponent], exports: [CheckBoxComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropEditingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDropEditing]'\n }]\n }], function () { return [{ type: TreeViewComponent }]; }, { editService: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadMoreDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMore]'\n }]\n }], function () { return [{ type: TreeViewComponent }]; }, { loadMoreNodes: [{\n type: Input,\n args: ['kendoTreeViewLoadMore']\n }], pageSize: [{\n type: Input\n }], totalRootNodes: [{\n type: Input\n }], totalField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1],\n imports: [\n CommonModule,\n CheckBoxModule,\n InputsModule\n ],\n entryComponents: [\n DragClueComponent,\n DropHintComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: function () { return [TreeViewComponent, TreeViewGroupComponent, TreeViewItemDirective, TreeViewItemContentDirective, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, HierarchyBindingDirective, LoadingIndicatorDirective, FlatDataBindingDirective, DragAndDropDirective, DragClueTemplateDirective, DragClueComponent, DropHintTemplateDirective, DropHintComponent, DragAndDropEditingDirective, LoadMoreDirective, LoadMoreButtonTemplateDirective]; }, imports: function () { return [CommonModule, CheckBoxModule, InputsModule]; }, exports: function () { return [TreeViewComponent, TreeViewGroupComponent, TreeViewItemDirective, TreeViewItemContentDirective, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, HierarchyBindingDirective, LoadingIndicatorDirective, FlatDataBindingDirective, DragAndDropDirective, DragClueTemplateDirective, DragClueComponent, DropHintTemplateDirective, DropHintComponent, DragAndDropEditingDirective, LoadMoreDirective, LoadMoreButtonTemplateDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewModule, [{\n type: NgModule,\n args: [{\n exports: [EXPORTS],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TreeViewModule, { imports: [SharedModule], exports: [TreeViewComponent, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, HierarchyBindingDirective, FlatDataBindingDirective, DragAndDropDirective, DragClueTemplateDirective, DropHintTemplateDirective, DragAndDropEditingDirective, LoadMoreDirective, LoadMoreButtonTemplateDirective] }); })();\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckBoxComponent, CheckBoxModule, DataChangeNotificationService, DragClueComponent, DragClueService, DropHintComponent, DropHintService, DragAndDropAssetService, PreventableEvent, ExpandStateService, FilteringBase, IndexBuilderService, LoadingIndicatorDirective, LoadingNotificationService, NavigationService, NodeChildrenService, SelectionService, SharedModule, TreeViewGroupComponent, TreeViewItemContentDirective, TreeViewItemDirective, TreeViewLookupService, TreeViewComponent, TreeViewModule, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, DataBoundComponent, ExpandableComponent, HierarchyBindingDirective, FlatDataBindingDirective, DragAndDropDirective, DragAndDropEditingDirective, DropHintTemplateDirective, DragClueTemplateDirective, DropAction, DropPosition, TreeItemDropEvent, TreeItemDragStartEvent, TreeItemDragEvent, LoadMoreDirective, LoadMoreButtonTemplateDirective };\n\n","export function not(pred, thisArg) {\n function notPred() {\n return !(notPred.pred.apply(notPred.thisArg, arguments));\n }\n notPred.pred = pred;\n notPred.thisArg = thisArg;\n return notPred;\n}\n","import { Subscriber } from '../Subscriber';\nexport function skipWhile(predicate) {\n return (source) => source.lift(new SkipWhileOperator(predicate));\n}\nclass SkipWhileOperator {\n constructor(predicate) {\n this.predicate = predicate;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n }\n}\nclass SkipWhileSubscriber extends Subscriber {\n constructor(destination, predicate) {\n super(destination);\n this.predicate = predicate;\n this.skipping = true;\n this.index = 0;\n }\n _next(value) {\n const destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n if (!this.skipping) {\n destination.next(value);\n }\n }\n tryCallPredicate(value) {\n try {\n const result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n }\n catch (err) {\n this.destination.error(err);\n }\n }\n}\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, Input, Output, ViewChild, ElementRef, HostBinding, Component, Renderer2, Directive, TemplateRef, Injectable, ViewChildren, QueryList, ChangeDetectorRef, NgZone, InjectionToken, forwardRef, isDevMode, ContentChild, ViewContainerRef, Optional, Inject, KeyValueDiffers, ContentChildren, ChangeDetectionStrategy, NgModule, HostListener } from '@angular/core';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, pointers, touchEnabled } from '@progress/kendo-common';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { merge, fromEvent, Subject, Subscription, of, interval } from 'rxjs';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@progress/kendo-angular-common';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@progress/kendo-angular-popup';\nimport * as ɵngcc5 from '@angular/forms';\nimport * as ɵngcc6 from '@progress/kendo-angular-treeview';\n\nconst _c0 = [\"input\"];\nconst _c1 = function (a0, a1) { return { focus: a0, blur: a1 }; };\nconst _c2 = [\"content\"];\nconst _c3 = [\"list\"];\nconst _c4 = [\"virtualContainer\"];\nfunction ListComponent_div_0_1_ng_template_0_Template(rf, ctx) { }\nconst _c5 = function (a0, a1) { return { templateRef: a0, $implicit: a1 }; };\nfunction ListComponent_div_0_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_div_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r7.fixedGroupTemplate.templateRef, ctx_r7.currentGroup));\n} }\nfunction ListComponent_div_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r8.currentGroup);\n} }\nconst _c6 = function (a0) { return { \"k-virtual-item\": a0 }; };\nconst _c7 = function (a0, a1, a2) { return { \"height.px\": a0, \"minHeight.px\": a1, \"boxSizing\": a2 }; };\nfunction ListComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, ListComponent_div_0_1_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(2, ListComponent_div_0_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(4, _c6, ctx_r0.virtual))(\"ngStyle\", ɵngcc0.ɵɵpureFunction3(6, _c7, ctx_r0.virtual == null ? null : ctx_r0.virtual.itemHeight, ctx_r0.virtual == null ? null : ctx_r0.virtual.itemHeight, ctx_r0.virtual ? \"border-box\" : \"inherit\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.fixedGroupTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.fixedGroupTemplate);\n} }\nfunction ListComponent_5_ng_template_0_label_1_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"label\", 14)(1, \"input\", 15);\n ɵngcc0.ɵɵlistener(\"change\", function ListComponent_5_ng_template_0_label_1_Template_input_change_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const itemIndex_r12 = ɵngcc0.ɵɵnextContext().index; const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.onCheckedChange($event, itemIndex_r12); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const itemIndex_r12 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"checked\", ctx_r13.isChecked(itemIndex_r12));\n} }\nfunction ListComponent_5_ng_template_0_2_ng_template_0_Template(rf, ctx) { }\nfunction ListComponent_5_ng_template_0_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_5_ng_template_0_2_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const dataItem_r11 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r14.template.templateRef, dataItem_r11));\n} }\nfunction ListComponent_5_ng_template_0_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const dataItem_r11 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r15 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r15.getText(dataItem_r11));\n} }\nconst _c8 = function (a0, a1) { return { \"k-virtual-item\": a0, \"k-state-disabled\": a1 }; };\nfunction ListComponent_5_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 12);\n ɵngcc0.ɵɵtemplate(1, ListComponent_5_ng_template_0_label_1_Template, 2, 1, \"label\", 13);\n ɵngcc0.ɵɵtemplate(2, ListComponent_5_ng_template_0_2_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(3, ListComponent_5_ng_template_0_ng_template_3_Template, 1, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r11 = ctx.$implicit;\n const itemIndex_r12 = ctx.index;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"checkboxes\", ctx_r10.checkboxes)(\"height\", ctx_r10.virtual == null ? null : ctx_r10.virtual.itemHeight)(\"index\", itemIndex_r12 + ctx_r10.startFrom)(\"multipleSelection\", ctx_r10.multipleSelection)(\"ngClass\", ɵngcc0.ɵɵpureFunction2(10, _c8, ctx_r10.virtual, ctx_r10.isDisabled(itemIndex_r12)));\n ɵngcc0.ɵɵattribute(\"id\", ctx_r10.optionPrefix + \"-\" + ctx_r10.getValue(dataItem_r11))(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r10.checkboxes.enabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r10.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r10.template);\n} }\nfunction ListComponent_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_5_ng_template_0_Template, 4, 13, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.data);\n} }\nfunction ListComponent_6_ng_template_0_li_0_1_ng_template_0_Template(rf, ctx) { }\nfunction ListComponent_6_ng_template_0_li_0_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r28.groupTemplate.templateRef, dataItem_r24.value));\n} }\nfunction ListComponent_6_ng_template_0_li_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r24.value, \"\");\n} }\nfunction ListComponent_6_ng_template_0_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 18);\n ɵngcc0.ɵɵtemplate(1, ListComponent_6_ng_template_0_li_0_1_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(2, ListComponent_6_ng_template_0_li_0_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(7, _c6, ctx_r26.virtual))(\"ngStyle\", ɵngcc0.ɵɵpureFunction3(9, _c7, ctx_r26.virtual == null ? null : ctx_r26.virtual.itemHeight, ctx_r26.virtual == null ? null : ctx_r26.virtual.itemHeight, ctx_r26.virtual ? \"border-box\" : \"inherit\"));\n ɵngcc0.ɵɵattribute(\"group-index\", dataItem_r24.index)(\"id\", ctx_r26.optionPrefix + \"-\" + ctx_r26.getValue(dataItem_r24.value))(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r26.groupTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r26.groupTemplate);\n} }\nfunction ListComponent_6_ng_template_0_li_1_1_ng_template_0_Template(rf, ctx) { }\nfunction ListComponent_6_ng_template_0_li_1_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r34 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r34.template.templateRef, dataItem_r24.value));\n} }\nfunction ListComponent_6_ng_template_0_li_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r35 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r35.getText(dataItem_r24.value));\n} }\nfunction ListComponent_6_ng_template_0_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 19);\n ɵngcc0.ɵɵtemplate(1, ListComponent_6_ng_template_0_li_1_1_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(2, ListComponent_6_ng_template_0_li_1_ng_template_2_Template, 1, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r27 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"height\", ctx_r27.virtual == null ? null : ctx_r27.virtual.itemHeight)(\"index\", dataItem_r24.offsetIndex)(\"multipleSelection\", ctx_r27.multipleSelection)(\"ngClass\", ɵngcc0.ɵɵpureFunction2(9, _c8, ctx_r27.virtual, ctx_r27.isDisabled(dataItem_r24.offsetIndex)));\n ɵngcc0.ɵɵattribute(\"absolute-index\", dataItem_r24.index)(\"id\", ctx_r27.optionPrefix + \"-\" + ctx_r27.getValue(dataItem_r24.value))(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r27.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r27.template);\n} }\nfunction ListComponent_6_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_0_Template, 3, 13, \"li\", 16);\n ɵngcc0.ɵɵtemplate(1, ListComponent_6_ng_template_0_li_1_Template, 3, 12, \"li\", 17);\n} if (rf & 2) {\n const dataItem_r24 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", dataItem_r24.header && dataItem_r24.index > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !dataItem_r24.header);\n} }\nfunction ListComponent_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_Template, 2, 2, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.data);\n} }\nfunction ListComponent_kendo_resize_sensor_7_Template(rf, ctx) { if (rf & 1) {\n const _r41 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function ListComponent_kendo_resize_sensor_7_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r41); const ctx_r40 = ɵngcc0.ɵɵnextContext(); return ctx_r40.listResize.emit(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction ListComponent_div_8_Template(rf, ctx) { if (rf & 1) {\n const _r44 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 21, 22)(2, \"div\")(3, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function ListComponent_div_8_Template_kendo_resize_sensor_resize_3_listener() { ɵngcc0.ɵɵrestoreView(_r44); const ctx_r43 = ɵngcc0.ɵɵnextContext(); return ctx_r43.listResize.emit(); });\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r6.scrollHeight, \"px\");\n} }\nconst _c9 = function (a0, a1) { return { \"k-virtual-content\": a0, \"k-list-scroller\": a1 }; };\nconst _c10 = function (a0) { return { \"k-virtual-list\": a0 }; };\nconst _c11 = [\"container\"];\nconst _c12 = [\"popupTemplate\"];\nconst _c13 = [\"optionsList\"];\nfunction AutoCompleteComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function AutoCompleteComponent_span_3_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.clearValue($event); })(\"mousedown\", function AutoCompleteComponent_span_3_Template_span_mousedown_0_listener($event) { return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r1.clearButtonVisiblity);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r1.clearTitle);\n} }\nfunction AutoCompleteComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} }\nfunction AutoCompleteComponent_ng_template_5_0_ng_template_0_Template(rf, ctx) { }\nconst _c18 = function (a0) { return { templateRef: a0 }; };\nfunction AutoCompleteComponent_ng_template_5_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_5_0_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate.templateRef));\n} }\nfunction AutoCompleteComponent_ng_template_5_div_3_ng_template_1_Template(rf, ctx) { }\nfunction AutoCompleteComponent_ng_template_5_div_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r16.noDataText);\n} }\nfunction AutoCompleteComponent_ng_template_5_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 15);\n ɵngcc0.ɵɵtemplate(1, AutoCompleteComponent_ng_template_5_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 16);\n ɵngcc0.ɵɵtemplate(2, AutoCompleteComponent_ng_template_5_div_3_ng_template_2_Template, 2, 1, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r12.noDataTemplate == null ? null : ctx_r12.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r12.noDataTemplate);\n} }\nfunction AutoCompleteComponent_ng_template_5_4_ng_template_0_Template(rf, ctx) { }\nfunction AutoCompleteComponent_ng_template_5_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_5_4_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate.templateRef));\n} }\nfunction AutoCompleteComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_5_0_Template, 1, 3, null, 10);\n ɵngcc0.ɵɵelementStart(1, \"kendo-list\", 11, 12);\n ɵngcc0.ɵɵlistener(\"pageChange\", function AutoCompleteComponent_ng_template_5_Template_kendo_list_pageChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, AutoCompleteComponent_ng_template_5_div_3_Template, 3, 5, \"div\", 13);\n ɵngcc0.ɵɵtemplate(4, AutoCompleteComponent_ng_template_5_4_Template, 1, 3, null, 10);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r4.listBoxId)(\"optionPrefix\", ctx_r4.optionPrefix)(\"data\", ctx_r4.data)(\"textField\", ctx_r4.valueField)(\"valueField\", ctx_r4.valueField)(\"template\", ctx_r4.template)(\"groupTemplate\", ctx_r4.groupTemplate)(\"fixedGroupTemplate\", ctx_r4.fixedGroupTemplate)(\"height\", ctx_r4.listHeight)(\"show\", ctx_r4.isOpen)(\"virtual\", ctx_r4.virtual);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.footerTemplate);\n} }\nfunction AutoCompleteComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 17);\n ɵngcc0.ɵɵlistener(\"resize\", function AutoCompleteComponent_ng_template_7_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c19 = [\"wrapper\"];\nconst _c20 = [\"select\"];\nconst _c25 = function (a0) { return { mousedown: a0 }; };\nfunction ComboBoxComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function ComboBoxComponent_span_5_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearValue($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r2.clearButtonVisiblity);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c25, ctx_r2.preventEventDefault));\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.clearTitle);\n} }\nfunction ComboBoxComponent_ng_template_9_0_ng_template_0_Template(rf, ctx) { }\nfunction ComboBoxComponent_ng_template_9_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ComboBoxComponent_ng_template_9_0_ng_template_0_Template, 0, 0, \"ng-template\", 17);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate.templateRef));\n} }\nfunction ComboBoxComponent_ng_template_9_div_3_ng_template_1_Template(rf, ctx) { }\nfunction ComboBoxComponent_ng_template_9_div_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r16.noDataText);\n} }\nfunction ComboBoxComponent_ng_template_9_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, ComboBoxComponent_ng_template_9_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 19);\n ɵngcc0.ɵɵtemplate(2, ComboBoxComponent_ng_template_9_div_3_ng_template_2_Template, 2, 1, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r12.noDataTemplate ? ctx_r12.noDataTemplate.templateRef : undefined));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r12.noDataTemplate);\n} }\nfunction ComboBoxComponent_ng_template_9_4_ng_template_0_Template(rf, ctx) { }\nfunction ComboBoxComponent_ng_template_9_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ComboBoxComponent_ng_template_9_4_ng_template_0_Template, 0, 0, \"ng-template\", 17);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate.templateRef));\n} }\nfunction ComboBoxComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, ComboBoxComponent_ng_template_9_0_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵelementStart(1, \"kendo-list\", 14, 15);\n ɵngcc0.ɵɵlistener(\"pageChange\", function ComboBoxComponent_ng_template_9_Template_kendo_list_pageChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ComboBoxComponent_ng_template_9_div_3_Template, 3, 5, \"div\", 16);\n ɵngcc0.ɵɵtemplate(4, ComboBoxComponent_ng_template_9_4_Template, 1, 3, null, 13);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r5.listBoxId)(\"optionPrefix\", ctx_r5.optionPrefix)(\"data\", ctx_r5.data)(\"textField\", ctx_r5.textField)(\"valueField\", ctx_r5.valueField)(\"template\", ctx_r5.template)(\"groupTemplate\", ctx_r5.groupTemplate)(\"fixedGroupTemplate\", ctx_r5.fixedGroupTemplate)(\"height\", ctx_r5.listHeight)(\"show\", ctx_r5.isOpen)(\"virtual\", ctx_r5.virtual);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n} }\nfunction ComboBoxComponent_ng_template_11_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function ComboBoxComponent_ng_template_11_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c26 = function (a0) { return { \"k-state-disabled\": a0 }; };\nfunction DropDownListComponent_4_ng_template_0_Template(rf, ctx) { }\nfunction DropDownListComponent_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r1.valueTemplate.templateRef, ctx_r1.dataItem));\n} }\nfunction DropDownListComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.getText());\n} }\nfunction DropDownListComponent_ng_template_8_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function DropDownListComponent_ng_template_8_ng_template_0_Template_span_click_0_listener($event) { return $event.stopImmediatePropagation(); });\n ɵngcc0.ɵɵelementStart(1, \"input\", 15);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.filterText = $event; })(\"keydown\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.keydown($event); })(\"input\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_input_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.handleFilter($event); })(\"focus\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_focus_1_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.onFilterFocus(); })(\"blur\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_blur_1_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r21 = ɵngcc0.ɵɵnextContext(2); return ctx_r21.blurFilterInput(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"span\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"filterInput\", ctx_r8.isFocused && !ctx_r8.touchEnabled)(\"dir\", ctx_r8.direction)(\"ngModel\", ctx_r8.filterText);\n ɵngcc0.ɵɵattribute(\"aria-owns\", ctx_r8.ariaOwns)(\"aria-activedescendant\", ctx_r8.ariaActivedescendant)(\"aria-label\", ctx_r8.noDataLabel);\n} }\nfunction DropDownListComponent_ng_template_8_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c26, ctx_r9.isDisabledDefaultItem))(\"index\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r9.getDefaultItemText(), \" \");\n} }\nfunction DropDownListComponent_ng_template_8_ng_template_2_ng_template_1_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n ɵngcc0.ɵɵtemplate(1, DropDownListComponent_ng_template_8_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c26, ctx_r10.isDisabledDefaultItem))(\"index\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(5, _c5, ctx_r10.itemTemplate.templateRef, ctx_r10.defaultItem));\n} }\nfunction DropDownListComponent_ng_template_8_3_ng_template_0_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_ng_template_8_3_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r11.headerTemplate.templateRef));\n} }\nfunction DropDownListComponent_ng_template_8_div_6_ng_template_1_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_div_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r25 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r25.noDataText);\n} }\nfunction DropDownListComponent_ng_template_8_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, DropDownListComponent_ng_template_8_div_6_ng_template_1_Template, 0, 0, \"ng-template\", 19);\n ɵngcc0.ɵɵtemplate(2, DropDownListComponent_ng_template_8_div_6_ng_template_2_Template, 2, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r13.noDataTemplate ? ctx_r13.noDataTemplate.templateRef : undefined));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r13.noDataTemplate);\n} }\nfunction DropDownListComponent_ng_template_8_7_ng_template_0_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_ng_template_8_7_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r14.footerTemplate.templateRef));\n} }\nfunction DropDownListComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n const _r28 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_ng_template_8_ng_template_0_Template, 3, 6, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(1, DropDownListComponent_ng_template_8_ng_template_1_Template, 2, 5, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(2, DropDownListComponent_ng_template_8_ng_template_2_Template, 2, 8, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(3, DropDownListComponent_ng_template_8_3_Template, 1, 3, null, 4);\n ɵngcc0.ɵɵelementStart(4, \"kendo-list\", 11, 12);\n ɵngcc0.ɵɵlistener(\"pageChange\", function DropDownListComponent_ng_template_8_Template_kendo_list_pageChange_4_listener($event) { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r27 = ɵngcc0.ɵɵnextContext(); return ctx_r27.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, DropDownListComponent_ng_template_8_div_6_Template, 3, 5, \"div\", 13);\n ɵngcc0.ɵɵtemplate(7, DropDownListComponent_ng_template_8_7_Template, 1, 3, null, 4);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.defaultItem && !ctx_r4.itemTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.defaultItem && ctx_r4.itemTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r4.listBoxId)(\"optionPrefix\", ctx_r4.optionPrefix)(\"data\", ctx_r4.data)(\"textField\", ctx_r4.textField)(\"valueField\", ctx_r4.valueField)(\"template\", ctx_r4.itemTemplate)(\"groupTemplate\", ctx_r4.groupTemplate)(\"fixedGroupTemplate\", ctx_r4.fixedGroupTemplate)(\"height\", ctx_r4.listHeight)(\"show\", ctx_r4.isOpen)(\"virtual\", ctx_r4.virtual);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.footerTemplate);\n} }\nfunction DropDownListComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n const _r30 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function DropDownListComponent_ng_template_10_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r30); const ctx_r29 = ɵngcc0.ɵɵnextContext(); return ctx_r29.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c29 = function (a1) { return { \"k-dropdown-wrap\": true, \"k-state-disabled\": a1 }; };\nfunction MultiSelectComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 11);\n ɵngcc0.ɵɵlistener(\"mousedown\", function MultiSelectComponent_span_6_Template_span_mousedown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearAll($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r2.clearButtonVisiblity);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.clearTitle);\n} }\nfunction MultiSelectComponent_span_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 12);\n} }\nfunction MultiSelectComponent_ng_template_8_0_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_0_ng_template_0_Template, 0, 0, \"ng-template\", 18);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate.templateRef));\n} }\nfunction MultiSelectComponent_ng_template_8_div_1_2_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_div_1_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_div_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 18);\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r16.customItemTemplate.templateRef, ctx_r16.text));\n} }\nfunction MultiSelectComponent_ng_template_8_div_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵtextInterpolate(ctx_r18.text);\n} }\nfunction MultiSelectComponent_ng_template_8_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 19)(1, \"div\", 20);\n ɵngcc0.ɵɵtemplate(2, MultiSelectComponent_ng_template_8_div_1_2_Template, 1, 4, null, 21);\n ɵngcc0.ɵɵtemplate(3, MultiSelectComponent_ng_template_8_div_1_ng_template_3_Template, 1, 1, \"ng-template\", null, 22, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelement(5, \"span\", 23);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const _r17 = ɵngcc0.ɵɵreference(4);\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"multipleSelection\", true)(\"index\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r11.customItemTemplate)(\"ngIfElse\", _r17);\n} }\nfunction MultiSelectComponent_ng_template_8_div_4_ng_template_1_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_div_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r21 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r21.noDataText);\n} }\nfunction MultiSelectComponent_ng_template_8_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 24);\n ɵngcc0.ɵɵtemplate(1, MultiSelectComponent_ng_template_8_div_4_ng_template_1_Template, 0, 0, \"ng-template\", 25);\n ɵngcc0.ɵɵtemplate(2, MultiSelectComponent_ng_template_8_div_4_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r13.noDataTemplate ? ctx_r13.noDataTemplate.templateRef : undefined));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r13.noDataTemplate);\n} }\nfunction MultiSelectComponent_ng_template_8_5_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_5_ng_template_0_Template, 0, 0, \"ng-template\", 18);\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r14.footerTemplate.templateRef));\n} }\nfunction MultiSelectComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n const _r24 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_0_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵtemplate(1, MultiSelectComponent_ng_template_8_div_1_Template, 6, 4, \"div\", 14);\n ɵngcc0.ɵɵelementStart(2, \"kendo-list\", 15, 16);\n ɵngcc0.ɵɵlistener(\"pageChange\", function MultiSelectComponent_ng_template_8_Template_kendo_list_pageChange_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r23 = ɵngcc0.ɵɵnextContext(); return ctx_r23.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, MultiSelectComponent_ng_template_8_div_4_Template, 3, 5, \"div\", 17);\n ɵngcc0.ɵɵtemplate(5, MultiSelectComponent_ng_template_8_5_Template, 1, 3, null, 13);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.allowCustom && ctx_r5.text);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r5.listBoxId)(\"optionPrefix\", ctx_r5.optionPrefix)(\"data\", ctx_r5.data)(\"textField\", ctx_r5.textField)(\"valueField\", ctx_r5.valueField)(\"height\", ctx_r5.listHeight)(\"template\", ctx_r5.template)(\"groupTemplate\", ctx_r5.groupTemplate)(\"fixedGroupTemplate\", ctx_r5.fixedGroupTemplate)(\"show\", ctx_r5.isOpen)(\"multipleSelection\", true)(\"virtual\", ctx_r5.virtual)(\"checkboxes\", ctx_r5.checkboxes);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n} }\nfunction MultiSelectComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n const _r26 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 26);\n ɵngcc0.ɵɵlistener(\"resize\", function MultiSelectComponent_ng_template_10_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r26); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c34 = [\"header\"];\nfunction MultiColumnComboBoxComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function MultiColumnComboBoxComponent_span_5_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearValue($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r2.clearButtonVisiblity);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c25, ctx_r2.preventEventDefault));\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.clearTitle);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_0_ng_template_0_Template(rf, ctx) { }\nfunction MultiColumnComboBoxComponent_ng_template_9_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_0_ng_template_0_Template, 0, 0, \"ng-template\", 23);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate == null ? null : ctx_r10.headerTemplate.templateRef));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_6_col_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"col\");\n} if (rf & 2) {\n const column_r20 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵstyleProp(\"width\", column_r20.width, \"px\");\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_container_6_col_1_Template, 1, 2, \"col\", 24);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r20 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r20.hidden && column_r20.matchesMedia);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r23 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", column_r23.title || column_r23.field, \" \");\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_ng_template_0_Template(rf, ctx) { }\nconst _c39 = function (a0, a1, a2) { return { templateRef: a0, $implicit: a1, column: a2 }; };\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 23);\n} if (rf & 2) {\n const column_r23 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction3(1, _c39, column_r23.headerTemplate == null ? null : column_r23.headerTemplate.templateRef, column_r23, column_r23));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 26);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_ng_container_1_Template, 2, 1, \"ng-container\", 13);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_Template, 1, 5, null, 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r23 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"ngStyle\", column_r23.headerStyle)(\"ngClass\", column_r23.headerClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r23.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", column_r23.headerTemplate);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_Template, 3, 4, \"th\", 25);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r23 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r23.hidden && column_r23.matchesMedia);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r33 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const dataItem_r31 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r35 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r35.textFrom(dataItem_r31, column_r33.field), \" \");\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_ng_template_0_Template(rf, ctx) { }\nconst _c40 = function (a0, a1, a2, a3) { return { templateRef: a0, $implicit: a1, dataItem: a2, column: a3 }; };\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 23);\n} if (rf & 2) {\n const column_r33 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const dataItem_r31 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction4(1, _c40, column_r33.cellTemplate == null ? null : column_r33.cellTemplate.templateRef, dataItem_r31, dataItem_r31, column_r33));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 28);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_ng_container_1_Template, 2, 1, \"ng-container\", 13);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_Template, 1, 6, null, 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r33 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵstyleProp(\"width\", column_r33.width, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", column_r33.class)(\"ngStyle\", column_r33.style);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r33.cellTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", column_r33.cellTemplate);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_Template, 3, 6, \"span\", 27);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r33 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r33.hidden && column_r33.matchesMedia);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_Template, 2, 1, \"ng-container\", 18);\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r15.columns);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_1_Template(rf, ctx) { }\nfunction MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r44 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r44.noDataText);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_div_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 29);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_1_Template, 0, 0, \"ng-template\", 30);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_2_Template, 2, 1, \"ng-template\", 31);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r17.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r17.noDataTemplate == null ? null : ctx_r17.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r17.noDataTemplate);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_15_ng_template_2_Template(rf, ctx) { }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_15_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 32);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_ng_container_15_ng_template_2_Template, 0, 0, \"ng-template\", 23);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r18.footerTemplate.templateRef));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n const _r47 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_0_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵelementStart(1, \"div\", 14, 15)(3, \"div\", 16)(4, \"table\", 17)(5, \"colgroup\");\n ɵngcc0.ɵɵtemplate(6, MultiColumnComboBoxComponent_ng_template_9_ng_container_6_Template, 2, 1, \"ng-container\", 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"tbody\")(8, \"tr\");\n ɵngcc0.ɵɵtemplate(9, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_Template, 2, 1, \"ng-container\", 18);\n ɵngcc0.ɵɵelementEnd()()()()();\n ɵngcc0.ɵɵtemplate(10, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_Template, 1, 1, \"ng-template\", null, 19, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(12, \"kendo-list\", 20, 21);\n ɵngcc0.ɵɵlistener(\"pageChange\", function MultiColumnComboBoxComponent_ng_template_9_Template_kendo_list_pageChange_12_listener($event) { ɵngcc0.ɵɵrestoreView(_r47); const ctx_r46 = ɵngcc0.ɵɵnextContext(); return ctx_r46.pageChange($event); })(\"listResize\", function MultiColumnComboBoxComponent_ng_template_9_Template_kendo_list_listResize_12_listener() { ɵngcc0.ɵɵrestoreView(_r47); const _r11 = ɵngcc0.ɵɵreference(2); const ctx_r48 = ɵngcc0.ɵɵnextContext(); return ctx_r48.updateHeaderPadding(_r11); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(14, MultiColumnComboBoxComponent_ng_template_9_div_14_Template, 3, 5, \"div\", 22);\n ɵngcc0.ɵɵtemplate(15, MultiColumnComboBoxComponent_ng_template_9_ng_container_15_Template, 3, 3, \"ng-container\", 13);\n} if (rf & 2) {\n const _r14 = ɵngcc0.ɵɵreference(11);\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.columns);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.columns);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r5.listBoxId)(\"optionPrefix\", ctx_r5.optionPrefix)(\"data\", ctx_r5.data)(\"textField\", ctx_r5.textField)(\"valueField\", ctx_r5.valueField)(\"template\", ɵngcc0.ɵɵpureFunction1(17, _c18, _r14))(\"groupTemplate\", ctx_r5.groupTemplate)(\"fixedGroupTemplate\", ctx_r5.fixedGroupTemplate)(\"height\", ctx_r5.listHeight)(\"show\", ctx_r5.isOpen)(\"virtual\", ctx_r5.virtual)(\"listClass\", \"k-reset k-grid-list\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n} }\nfunction MultiColumnComboBoxComponent_kendo_resize_sensor_11_Template(rf, ctx) { if (rf & 1) {\n const _r50 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 33);\n ɵngcc0.ɵɵlistener(\"resize\", function MultiColumnComboBoxComponent_kendo_resize_sensor_11_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r50); const ctx_r49 = ɵngcc0.ɵɵnextContext(); return ctx_r49.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c41 = [\"treeview\"];\nconst _c42 = [\"filterInput\"];\nfunction DropDownTreeComponent_4_ng_template_0_Template(rf, ctx) { }\nfunction DropDownTreeComponent_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r1.valueTemplate.templateRef, ctx_r1.dataItem));\n} }\nfunction DropDownTreeComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r2.text || ctx_r2.placeholder, \" \");\n} }\nfunction DropDownTreeComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function DropDownTreeComponent_span_6_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearValue($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r3.clearButtonVisiblity);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.messageFor(\"clearTitle\"));\n} }\nconst _c47 = function (a0) { return { blur: a0 }; };\nfunction DropDownTreeComponent_ng_template_9_span_0_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 16)(1, \"input\", 17, 18);\n ɵngcc0.ɵɵlistener(\"input\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_input_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleFilterInputChange($event.target.value); })(\"keydown.arrowdown\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_keydown_arrowdown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.handleKeydown($event); })(\"keydown.alt.arrowup\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_keydown_alt_arrowup_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.handleKeydown($event); })(\"ngModelChange\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.filter = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"span\", 19);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"filterInput\", ctx_r10.filterable && !ctx_r10.touchEnabled)(\"ngModel\", ctx_r10.filter)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c47, ctx_r10.handleBlur))(\"scope\", ctx_r10);\n} }\nfunction DropDownTreeComponent_ng_template_9_1_ng_template_0_Template(rf, ctx) { }\nfunction DropDownTreeComponent_ng_template_9_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_9_1_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r11.headerTemplate == null ? null : ctx_r11.headerTemplate.templateRef));\n} }\nfunction DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template(rf, ctx) { if (rf & 1) {\n const _r24 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-treeview\", 20, 21);\n ɵngcc0.ɵɵlistener(\"selectedKeysChange\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_selectedKeysChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r23 = ɵngcc0.ɵɵnextContext(2); return ctx_r23.selectedKeys = $event; })(\"focusout\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_focusout_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r25 = ɵngcc0.ɵɵnextContext(2); return ctx_r25.handleBlur($event); })(\"keydown\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r26 = ɵngcc0.ɵɵnextContext(2); return ctx_r26.handleKeydown($event); })(\"selectionChange\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_selectionChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r27 = ɵngcc0.ɵɵnextContext(2); return ctx_r27.onSelectionChange($event); })(\"expand\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_expand_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r28 = ɵngcc0.ɵɵnextContext(2); return ctx_r28.nodeExpand.emit($event); })(\"collapse\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_collapse_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r29 = ɵngcc0.ɵɵnextContext(2); return ctx_r29.nodeCollapse.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"max-height\", ctx_r12.listHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"nodes\", ctx_r12.data)(\"animate\", false)(\"selectedKeys\", ctx_r12.selectedKeys)(\"selectBy\", ctx_r12.selectBy)(\"textField\", ctx_r12.textField)(\"children\", ctx_r12.children)(\"hasChildren\", ctx_r12.hasChildren)(\"loadOnDemand\", ctx_r12.loadOnDemand)(\"isExpanded\", ctx_r12.isNodeExpanded)(\"isDisabled\", ctx_r12.itemDisabled)(\"nodeTemplate\", ctx_r12.nodeTemplate)(\"filter\", ctx_r12.filter)(\"isVisible\", ctx_r12.isNodeVisible);\n} }\nfunction DropDownTreeComponent_ng_template_9_3_ng_template_0_Template(rf, ctx) { }\nfunction DropDownTreeComponent_ng_template_9_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_9_3_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate == null ? null : ctx_r13.footerTemplate.templateRef));\n} }\nfunction DropDownTreeComponent_ng_template_9_div_4_ng_template_1_Template(rf, ctx) { }\nfunction DropDownTreeComponent_ng_template_9_div_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r32 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r32.messageFor(\"noDataText\"));\n} }\nfunction DropDownTreeComponent_ng_template_9_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 22);\n ɵngcc0.ɵɵtemplate(1, DropDownTreeComponent_ng_template_9_div_4_ng_template_1_Template, 0, 0, \"ng-template\", 23);\n ɵngcc0.ɵɵtemplate(2, DropDownTreeComponent_ng_template_9_div_4_ng_template_2_Template, 2, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r14.noDataTemplate == null ? null : ctx_r14.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r14.noDataTemplate);\n} }\nfunction DropDownTreeComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_9_span_0_Template, 4, 6, \"span\", 13);\n ɵngcc0.ɵɵtemplate(1, DropDownTreeComponent_ng_template_9_1_Template, 1, 3, null, 4);\n ɵngcc0.ɵɵtemplate(2, DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template, 2, 15, \"kendo-treeview\", 14);\n ɵngcc0.ɵɵtemplate(3, DropDownTreeComponent_ng_template_9_3_Template, 1, 3, null, 4);\n ɵngcc0.ɵɵtemplate(4, DropDownTreeComponent_ng_template_9_div_4_Template, 3, 5, \"div\", 15);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length !== 0 && !ctx_r5.allNodesHidden);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0 || ctx_r5.allNodesHidden);\n} }\nconst _c48 = [\"checkAllInput\"];\nfunction MultiSelectTreeComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.placeholder, \" \");\n} }\nfunction MultiSelectTreeComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_span_5_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.clearAll($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.messageFor(\"clearTitle\"));\n} }\nfunction MultiSelectTreeComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 11);\n} }\nfunction MultiSelectTreeComponent_ng_template_7_span_0_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 18)(1, \"input\", 19, 20);\n ɵngcc0.ɵɵlistener(\"input\", function MultiSelectTreeComponent_ng_template_7_span_0_Template_input_input_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleFilterInputChange($event.target.value); })(\"keydown\", function MultiSelectTreeComponent_ng_template_7_span_0_Template_input_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.handleKeydown($event); })(\"ngModelChange\", function MultiSelectTreeComponent_ng_template_7_span_0_Template_input_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.filter = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"span\", 21);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"filterInput\", ctx_r9.filterable && !ctx_r9.touchEnabled)(\"ngModel\", ctx_r9.filter)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c47, ctx_r9.handleBlur))(\"scope\", ctx_r9);\n} }\nfunction MultiSelectTreeComponent_ng_template_7_1_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectTreeComponent_ng_template_7_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_7_1_ng_template_0_Template, 0, 0, \"ng-template\", 22);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate == null ? null : ctx_r10.headerTemplate.templateRef));\n} }\nfunction MultiSelectTreeComponent_ng_template_7_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23)(1, \"input\", 24, 25);\n ɵngcc0.ɵɵlistener(\"checkedItemsChange\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_input_checkedItemsChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(2); return ctx_r22.handleCheckedItemsChange($event); })(\"keydown\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_input_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(2); return ctx_r24.handleKeydown($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 26);\n ɵngcc0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_span_click_3_listener() { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(2); return ctx_r25.toggleCheckAll(); })(\"mousedown\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_span_mousedown_3_listener($event) { return $event.preventDefault(); });\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n ɵngcc0.ɵɵnextContext();\n const _r12 = ɵngcc0.ɵɵreference(4);\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"checkAll\", !ctx_r11.filterable && !ctx_r11.touchEnabled)(\"treeview\", _r12)(\"checkedItems\", ctx_r11.checkedItems)(\"valueField\", ctx_r11.valueField)(\"lastAction\", ctx_r11.lastAction)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(8, _c47, ctx_r11.handleBlur))(\"scope\", ctx_r11);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r11.messageFor(\"checkAllText\"), \" \");\n} }\nfunction MultiSelectTreeComponent_ng_template_7_5_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectTreeComponent_ng_template_7_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_7_5_ng_template_0_Template, 0, 0, \"ng-template\", 22);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate == null ? null : ctx_r13.footerTemplate.templateRef));\n} }\nfunction MultiSelectTreeComponent_ng_template_7_div_6_ng_template_1_Template(rf, ctx) { }\nfunction MultiSelectTreeComponent_ng_template_7_div_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r29 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r29.messageFor(\"noDataText\"));\n} }\nfunction MultiSelectTreeComponent_ng_template_7_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 27);\n ɵngcc0.ɵɵtemplate(1, MultiSelectTreeComponent_ng_template_7_div_6_ng_template_1_Template, 0, 0, \"ng-template\", 28);\n ɵngcc0.ɵɵtemplate(2, MultiSelectTreeComponent_ng_template_7_div_6_ng_template_2_Template, 2, 1, \"ng-template\", 29);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r14.noDataTemplate == null ? null : ctx_r14.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r14.noDataTemplate);\n} }\nconst _c55 = function (a0) { return { focusout: a0 }; };\nfunction MultiSelectTreeComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n const _r31 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_7_span_0_Template, 4, 6, \"span\", 12);\n ɵngcc0.ɵɵtemplate(1, MultiSelectTreeComponent_ng_template_7_1_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵtemplate(2, MultiSelectTreeComponent_ng_template_7_div_2_Template, 5, 10, \"div\", 14);\n ɵngcc0.ɵɵelementStart(3, \"kendo-treeview\", 15, 16);\n ɵngcc0.ɵɵlistener(\"keydown\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_keydown_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r30 = ɵngcc0.ɵɵnextContext(); return ctx_r30.handleKeydown($event); })(\"nodeClick\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_nodeClick_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r32 = ɵngcc0.ɵɵnextContext(); return ctx_r32.handleNodeClick($event); })(\"expand\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_expand_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r33 = ɵngcc0.ɵɵnextContext(); return ctx_r33.nodeExpand.emit($event); })(\"collapse\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_collapse_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r34 = ɵngcc0.ɵɵnextContext(); return ctx_r34.nodeCollapse.emit($event); })(\"checkedItemsChange\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_checkedItemsChange_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r35 = ɵngcc0.ɵɵnextContext(); return ctx_r35.handleCheckedItemsChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, MultiSelectTreeComponent_ng_template_7_5_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵtemplate(6, MultiSelectTreeComponent_ng_template_7_div_6_Template, 3, 5, \"div\", 17);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.checkAll);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"max-height\", ctx_r5.listHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"nodes\", ctx_r5.data)(\"animate\", false)(\"checkable\", ctx_r5.checkableSettings)(\"checkedItems\", ctx_r5.checkedItems)(\"valueField\", ctx_r5.valueField)(\"textField\", ctx_r5.textField)(\"children\", ctx_r5.children)(\"hasChildren\", ctx_r5.hasChildren)(\"isExpanded\", ctx_r5.isNodeExpanded)(\"isDisabled\", ctx_r5.itemDisabled)(\"nodeTemplate\", ctx_r5.nodeTemplate)(\"loadOnDemand\", ctx_r5.loadOnDemand)(\"filter\", ctx_r5.filter)(\"isVisible\", ctx_r5.isNodeVisible)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(23, _c55, ctx_r5.handleBlur))(\"scope\", ctx_r5);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (ctx_r5.data == null ? null : ctx_r5.data.length) === 0 || ctx_r5.allNodesHidden);\n} }\nconst _c56 = function (a2) { return { \"k-multiselect-wrap\": true, \"k-floatwrap\": true, \"k-state-disabled\": a2 }; };\nfunction TagListComponent_li_1_1_ng_template_0_Template(rf, ctx) { }\nfunction TagListComponent_li_1_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TagListComponent_li_1_1_ng_template_0_Template, 0, 0, \"ng-template\");\n} }\nfunction TagListComponent_li_1_ng_template_2_1_ng_template_0_Template(rf, ctx) { }\nfunction TagListComponent_li_1_ng_template_2_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TagListComponent_li_1_ng_template_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const tag_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r9.groupTemplate.templateRef, tag_r1));\n} }\nfunction TagListComponent_li_1_ng_template_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const tag_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵtextInterpolate2(\"\", tag_r1.length, \" \", tag_r1.length === 1 ? \"item\" : \"items\", \" selected\");\n} }\nfunction TagListComponent_li_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_ng_template_2_1_Template, 1, 4, null, 8);\n ɵngcc0.ɵɵtemplate(2, TagListComponent_li_1_ng_template_2_ng_template_2_Template, 1, 2, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.groupTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r5.groupTemplate);\n} }\nfunction TagListComponent_li_1_ng_template_4_1_ng_template_0_Template(rf, ctx) { }\nfunction TagListComponent_li_1_ng_template_4_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TagListComponent_li_1_ng_template_4_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const tag_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r14.template.templateRef, tag_r1));\n} }\nfunction TagListComponent_li_1_ng_template_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(2);\n const tag_r1 = ctx_r18.$implicit;\n const index_r2 = ctx_r18.index;\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate(ctx_r15.tagProp(tag_r1, ctx_r15.textField, index_r2));\n} }\nfunction TagListComponent_li_1_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_ng_template_4_1_Template, 1, 4, null, 8);\n ɵngcc0.ɵɵtemplate(2, TagListComponent_li_1_ng_template_4_ng_template_2_Template, 1, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r7.template);\n} }\nconst _c57 = function (a0, a1) { return { \"k-state-focused\": a0, \"k-state-disabled\": a1 }; };\nfunction TagListComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 2);\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_1_Template, 1, 0, null, 3);\n ɵngcc0.ɵɵtemplate(2, TagListComponent_li_1_ng_template_2_Template, 3, 2, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, TagListComponent_li_1_ng_template_4_Template, 3, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(6, \"span\", 6)(7, \"span\", 7);\n ɵngcc0.ɵɵlistener(\"mousedown\", function TagListComponent_li_1_Template_span_mousedown_7_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r20); const tag_r1 = restoredCtx.$implicit; const index_r2 = restoredCtx.index; const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ctx_r19.deleteTag($event, tag_r1, index_r2); });\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const tag_r1 = ctx.$implicit;\n const index_r2 = ctx.index;\n const _r4 = ɵngcc0.ɵɵreference(3);\n const _r6 = ɵngcc0.ɵɵreference(5);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(8, _c57, index_r2 === ctx_r0.focused, ctx_r0.isTagDisabled(tag_r1, index_r2)));\n ɵngcc0.ɵɵattribute(\"id\", ctx_r0.itemId(tag_r1, index_r2))(\"aria-hidden\", ctx_r0.tagAriaHidden(index_r2))(\"aria-setsize\", ctx_r0.tags == null ? null : ctx_r0.tags.length);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.isGroupTag(tag_r1))(\"ngIfThen\", _r4)(\"ngIfElse\", _r6);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", index_r2 !== ctx_r0.focused);\n} }\nexport { PopupComponent } from '@progress/kendo-angular-popup';\nimport { map, switchMap, take, auditTime, tap, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil } from 'rxjs/operators';\nimport { TreeViewComponent, DataBoundComponent, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, ExpandDirective, TreeViewModule } from '@progress/kendo-angular-treeview';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dropdowns',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1639043976,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/* tslint:disable:no-bitwise */\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isNumber = (value) => !isNaN(value);\n/**\n * @hidden\n */\nconst guid$1 = () => {\n let id = \"\";\n let i;\n let random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n/**\n * @hidden\n */\nconst combineStr = (begin, end) => {\n return begin.concat(end.substr(end.toLowerCase().indexOf(begin.toLowerCase()) + begin.length));\n};\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isObject = (value) => isPresent(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isEmptyString = (value) => typeof value === 'string' && value.length === 0;\n/**\n * @hidden\n */\nconst resolveValuesInArray = (values, data = [], valueField) => values\n .map(value => {\n return data.find(item => getter$1(item, valueField) === value);\n})\n .filter(value => value !== undefined);\n/**\n * @hidden\n */\nconst validateComplexValues = (values, valueField) => isArray(values) && values.filter(item => {\n return isObject(item) && isPresent(getter$1(item, valueField));\n});\n/**\n * @hidden\n */\nconst resolveAllValues = (value, data, valueField) => {\n const customValues = validateComplexValues(value, valueField) || [];\n const resolvedValues = resolveValuesInArray(value, data, valueField) || [];\n return resolvedValues.concat(customValues);\n};\n/**\n * @hidden\n */\nconst isObjectArray = (values) => {\n return isArray(values) && values.every(item => isObject(item));\n};\n/**\n * @hidden\n */\nconst selectedIndices = (values, data, valueField) => {\n const extractedValues = data.map(item => {\n return isPresent(item) && isPresent(getter$1(item, valueField)) ? getter$1(item, valueField) : item;\n });\n return values.reduce((arr, item) => {\n const value = isPresent(item) && isPresent(getter$1(item, valueField)) ? getter$1(item, valueField) : item;\n const index = extractedValues.indexOf(value);\n if (index !== -1) {\n arr.push(index);\n }\n return arr;\n }, []);\n};\n/**\n * @hidden\n */\nconst getter$1 = (dataItem, field) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n if (!isPresent(field) || !isObject(dataItem)) {\n return dataItem;\n }\n // creates a field accessor supporting nested fields processing\n const valueFrom = getter(field);\n return valueFrom(dataItem);\n};\n/**\n * @hidden\n */\nconst sameCharsOnly = (word, character) => {\n for (let idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nconst shuffleData = (data, splitIndex, defaultItem) => {\n let result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nconst matchText = (text, word, ignoreCase) => {\n if (!isPresent(text)) {\n return false;\n }\n let temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n *\n * Checks whether the passed object has all of the listed properties.\n */\nconst hasProps = (obj, props) => {\n if (!isPresent(obj)) {\n return false;\n }\n return props.every(prop => obj.hasOwnProperty(prop));\n};\n/**\n * @hidden\n *\n * Checks whether an element is untouched by looking for the ng-untouched css class\n */\nconst isUntouched = (element) => element.className.includes('ng-untouched');\n/**\n * @hidden\n */\nconst noop = (_) => { };\n/**\n * IE element `matches` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\nconst matches = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n *\n * IE element `closest` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n */\nconst closest = (element, selector) => {\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (matches(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n *\n * Parses a provided value to its type 'number' representation.\n * If the parsed value (via Number(value)) is NaN, the provided default value is returned.\n * Uses 0 as default value if a second param is not provided.\n */\nconst parseNumber = (num, defaultValue = 0) => {\n const normalizedValue = Number(num);\n return isNaN(normalizedValue) ? defaultValue : normalizedValue;\n};\n/**\n * @hidden\n *\n * Checks whether the passed target element is inside the provided host or popupRef.\n */\nconst inDropDown = (host, target, popupRef) => {\n return host.nativeElement.contains(target) || (popupRef && popupRef.popupElement.contains(target));\n};\n/**\n * @hidden\n *\n * Calculates the hierarchical level of an item, based on the provided index.\n * The result level is zero-based (starts from 0).\n */\nconst getHierarchicalItemLevel = (index) => {\n return (index || '').split('_').length - 1;\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchDescendentNodes = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(descendent => filterExpression(descendent.item));\n }\n descendants.forEach(child => descendants = descendants.concat(fetchDescendentNodes(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Retrieves the correct value based on the item's level and the provided value field/s.\n * Used in the MultiSelectTree component.\n */\nconst valueFrom = ({ dataItem, index, level }, valueField) => {\n const fields = Array.isArray(valueField) ? valueField : [valueField];\n // either use the explicitly provided value level, or infer it from the item index\n const valueLevel = isPresent(level) ? level : getHierarchicalItemLevel(index);\n // fall-back to the last available one, if the current node is in a deeper level\n const normalizedLevel = Math.min(valueLevel, fields.length - 1);\n const field = fields[normalizedLevel];\n return getter(field)(dataItem);\n};\n\n/* tslint:disable:member-ordering */\n/**\n * @hidden\n */\nlet SearchBarComponent = class SearchBarComponent {\n constructor(localization, renderer) {\n this.localization = localization;\n this.valueChange = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onNavigate = new EventEmitter();\n this.searchBarClass = true;\n this._userInput = \"\";\n this._previousValue = \"\";\n this._placeholder = \"\";\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer = renderer;\n }\n get userInput() {\n return this._userInput;\n }\n set userInput(userInput) {\n this._userInput = userInput || \"\";\n }\n get value() {\n return this.input.nativeElement.value;\n }\n set placeholder(text) {\n this._placeholder = text || '';\n this.setInputSize();\n }\n get placeholder() {\n return this._placeholder;\n }\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnChanges(changes) {\n let previousUserInput;\n if (this.input && (changes.userInput || changes.suggestedText)) {\n if (changes.userInput && changes.userInput.previousValue) {\n if (this._previousValue === changes.userInput.previousValue) {\n previousUserInput = this._previousValue;\n }\n else {\n previousUserInput = changes.userInput.currentValue || \"\";\n }\n }\n else {\n previousUserInput = this._previousValue;\n }\n const caretIndex = this.input.nativeElement.selectionStart;\n const caretAtEnd = previousUserInput.length === caretIndex;\n this.writeInputValue(this.suggestedText ? combineStr(this.userInput, this.suggestedText) : this.userInput);\n if (this.suggestedText) {\n this.setInputSelection(this.userInput.length, this.suggestedText.length);\n }\n else if (caretAtEnd) {\n this.setInputSelection(this.userInput.length, this.userInput.length);\n }\n else {\n this.setInputSelection(caretIndex, caretIndex);\n }\n this._previousValue = this.userInput;\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n writeInputValue(text) {\n if (isDocumentAvailable()) {\n this.renderer.setProperty(this.input.nativeElement, 'value', text);\n }\n }\n setInputSelection(start, end) {\n if (isDocumentAvailable() && this.input.nativeElement === document.activeElement) {\n try {\n this.input.nativeElement.setSelectionRange(start, end);\n }\n catch (e) {\n //Make sure that the element is in the DOM before you invoke its methods\n }\n }\n }\n handleInput(event) {\n const value = event.target.value;\n if (value !== this.userInput) {\n this._previousValue = value;\n this.valueChange.emit(value);\n }\n }\n handleFocus(event) {\n this.onFocus.emit(event);\n }\n handleBlur(event) {\n this.onBlur.emit(event);\n }\n handleKeydown(event) {\n const keyCode = event.keyCode;\n const keys = [Keys.ArrowUp, Keys.ArrowDown, Keys.ArrowLeft, Keys.ArrowRight, Keys.Enter,\n Keys.Escape, Keys.Delete, Keys.Backspace, Keys.Home, Keys.End];\n if (keys.indexOf(keyCode) > -1) {\n this.onNavigate.emit(event);\n }\n }\n focus() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.focus();\n }\n }\n blur() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.blur();\n }\n }\n setInputSize() {\n const lengthOf = x => x ? x.length : 0;\n const input = this.input.nativeElement;\n const placeholderLength = lengthOf(this.placeholder);\n const textLength = lengthOf(this.value);\n const size = Math.max(placeholderLength, textLength, 1);\n this.renderer.setAttribute(input, 'size', size.toString());\n }\n};\nSearchBarComponent.ɵfac = function SearchBarComponent_Factory(t) { return new (t || SearchBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nSearchBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SearchBarComponent, selectors: [[\"kendo-searchbar\"]], viewQuery: function SearchBarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 2, hostBindings: function SearchBarComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-searchbar\", ctx.searchBarClass);\n } }, inputs: { userInput: \"userInput\", placeholder: \"placeholder\", id: \"id\", listId: \"listId\", tagListId: \"tagListId\", activeDescendant: \"activeDescendant\", noDataLabel: \"noDataLabel\", disabled: \"disabled\", readonly: \"readonly\", tabIndex: \"tabIndex\", popupOpen: \"popupOpen\", role: \"role\", suggestedText: \"suggestedText\" }, outputs: { valueChange: \"valueChange\", onBlur: \"onBlur\", onFocus: \"onFocus\", onClick: \"onClick\", onNavigate: \"onNavigate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 21, consts: [[\"autocomplete\", \"off\", \"aria-haspopup\", \"listbox\", 3, \"id\", \"disabled\", \"readonly\", \"placeholder\", \"kendoEventsOutsideAngular\", \"scope\", \"input\", \"keydown\"], [\"input\", \"\"]], template: function SearchBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"input\", 0, 1);\n ɵngcc0.ɵɵlistener(\"input\", function SearchBarComponent_Template_input_input_0_listener($event) { return ctx.handleInput($event); })(\"keydown\", function SearchBarComponent_Template_input_keydown_0_listener($event) { return ctx.handleKeydown($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"k-input\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.id)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"placeholder\", ctx.placeholder)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(18, _c1, ctx.handleFocus, ctx.handleBlur))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"tabIndex\", ctx.tabIndex)(\"dir\", ctx.direction)(\"role\", ctx.role)(\"aria-disabled\", ctx.disabled)(\"aria-readonly\", ctx.readonly)(\"aria-expanded\", ctx.popupOpen)(\"aria-owns\", ctx.listId)(\"aria-describedby\", ctx.tagListId)(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-label\", ctx.noDataLabel);\n } }, directives: [ɵngcc2.EventsOutsideAngularDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"listId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"tagListId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"activeDescendant\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"noDataLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SearchBarComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"popupOpen\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"role\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], SearchBarComponent.prototype, \"userInput\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"suggestedText\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onNavigate\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SearchBarComponent.prototype, \"input\", void 0);\n__decorate([\n HostBinding('class.k-searchbar'),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"searchBarClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], SearchBarComponent.prototype, \"placeholder\", null);\nSearchBarComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n Renderer2])\n], SearchBarComponent);\n\n/**\n * Renders the list item content. To define the item template, nest an `` tag\n * with the `kendoItemTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * - [Using `ItemTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-item-template)\n * - [Using `ItemTemplate` with the ComboBox]({% slug templates_combobox %}#toc-item-template)\n * - [Using `ItemTemplate` with the DropDownList]({% slug templates_ddl %}#toc-item-template)\n * - [Using `ItemTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-item-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet ItemTemplateDirective = class ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nItemTemplateDirective.ɵfac = function ItemTemplateDirective_Factory(t) { return new (t || ItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ItemTemplateDirective, selectors: [[\"\", \"kendoDropDownListItemTemplate\", \"\"], [\"\", \"kendoComboBoxItemTemplate\", \"\"], [\"\", \"kendoAutoCompleteItemTemplate\", \"\"], [\"\", \"kendoMultiSelectItemTemplate\", \"\"]] });\nItemTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ItemTemplateDirective);\n\n/**\n * Renders the header content of the list. To define the header template, nest an `` tag\n * with the `kendoHeaderTemplate` directive inside the component tag.\n *\n * - [Using `HeaderTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-header-template)\n * - [Using `HeaderTemplate` with the ComboBox]({% slug templates_combobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownList]({% slug templates_ddl %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-header-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Header template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet HeaderTemplateDirective = class HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nHeaderTemplateDirective.ɵfac = function HeaderTemplateDirective_Factory(t) { return new (t || HeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: HeaderTemplateDirective, selectors: [[\"\", \"kendoDropDownListHeaderTemplate\", \"\"], [\"\", \"kendoComboBoxHeaderTemplate\", \"\"], [\"\", \"kendoDropDownTreeHeaderTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxHeaderTemplate\", \"\"], [\"\", \"kendoAutoCompleteHeaderTemplate\", \"\"], [\"\", \"kendoMultiSelectHeaderTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeHeaderTemplate\", \"\"]] });\nHeaderTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], HeaderTemplateDirective);\n\n/**\n * Renders the footer content of the list. To define the footer template, nest an `` tag\n * with the `kendoFooterTemplate` directive inside the component tag.\n *\n * - [Using `FooterTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-footer-template)\n * - [Using `FooterTemplate` with the ComboBox]({% slug templates_combobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownList]({% slug templates_ddl %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-footer-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Footer template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet FooterTemplateDirective = class FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFooterTemplateDirective.ɵfac = function FooterTemplateDirective_Factory(t) { return new (t || FooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FooterTemplateDirective, selectors: [[\"\", \"kendoDropDownListFooterTemplate\", \"\"], [\"\", \"kendoComboBoxFooterTemplate\", \"\"], [\"\", \"kendoDropDownTreeFooterTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxFooterTemplate\", \"\"], [\"\", \"kendoAutoCompleteFooterTemplate\", \"\"], [\"\", \"kendoMultiSelectFooterTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeFooterTemplate\", \"\"]] });\nFooterTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], FooterTemplateDirective);\n\n/**\n * Renders the group header content. To define the group template, nest an `` tag\n * with the `kendoGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `GroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-group-template)\n * - [Using `GroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-group-template)\n * - [Using `GroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-group-template)\n * - [Using `GroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-group-template)\n * - [Using `GroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-group-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nlet GroupTemplateDirective = class GroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupTemplateDirective.ɵfac = function GroupTemplateDirective_Factory(t) { return new (t || GroupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nGroupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupTemplateDirective, selectors: [[\"\", \"kendoDropDownListGroupTemplate\", \"\"], [\"\", \"kendoComboBoxGroupTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxGroupTemplate\", \"\"], [\"\", \"kendoAutoCompleteGroupTemplate\", \"\"], [\"\", \"kendoMultiSelectGroupTemplate\", \"\"]] });\nGroupTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupTemplateDirective);\n\n/**\n * Renders the fixed group header content. To define the fixed group template, nest an `` tag\n * with the `kendoFixedGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `FixedGroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-fixed-group-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nlet FixedGroupTemplateDirective = class FixedGroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFixedGroupTemplateDirective.ɵfac = function FixedGroupTemplateDirective_Factory(t) { return new (t || FixedGroupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nFixedGroupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FixedGroupTemplateDirective, selectors: [[\"\", \"kendoDropDownListFixedGroupTemplate\", \"\"], [\"\", \"kendoComboBoxFixedGroupTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxFixedGroupTemplate\", \"\"], [\"\", \"kendoAutoCompleteFixedGroupTemplate\", \"\"], [\"\", \"kendoMultiSelectFixedGroupTemplate\", \"\"]] });\nFixedGroupTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], FixedGroupTemplateDirective);\n\n/**\n * @hidden\n */\nlet SelectionService = class SelectionService {\n /**\n * @hidden\n */\n constructor() {\n this.onSelect = new EventEmitter();\n this.onChange = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.total = 0;\n this.selectedIndices = [];\n }\n getTotal() {\n return this.total;\n }\n isSelected(index) {\n return isPresent(this.selectedIndices.find(current => current === index));\n }\n isFocused(index) {\n return index === this.focused;\n }\n focus(index) {\n if (this.isFocused(index)) {\n return;\n }\n this.focused = index;\n this.onFocus.emit(index);\n }\n select(index) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices = [index];\n this.focused = index;\n this.onSelect.emit({\n indices: [index],\n newSelection: isPresent(index)\n });\n }\n add(index) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices.push(index);\n this.focused = index;\n this.onChange.emit({\n added: index,\n indices: this.selectedIndices.slice()\n });\n }\n unselect(index) {\n if (!this.isSelected(index)) {\n return;\n }\n const position = this.selectedIndices.indexOf(index);\n this.selectedIndices.splice(position, 1);\n this.focused = index;\n this.onChange.emit({\n indices: this.selectedIndices.slice(),\n removed: index\n });\n }\n change(index) {\n const newSelection = isPresent(index) && !this.isSelected(index);\n this.selectedIndices = [index];\n this.focused = index;\n this.onChange.emit({\n indices: [index],\n newSelection: newSelection\n });\n }\n resetSelection(index) {\n this.selectedIndices = index instanceof Array ? index : [index];\n this.focused = this.selectedIndices[this.selectedIndices.length - 1];\n }\n get selected() {\n return this.selectedIndices.slice();\n }\n get focused() {\n return this.focusedIndex;\n }\n set focused(index) {\n if (this.focusedIndex !== index) {\n this.focusedIndex = index;\n this.onFocus.emit(index);\n }\n }\n};\nSelectionService.ɵfac = function SelectionService_Factory(t) { return new (t || SelectionService)(); };\nSelectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SelectionService, factory: function (t) { return SelectionService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nvar NavigationAction;\n(function (NavigationAction) {\n NavigationAction[NavigationAction[\"Undefined\"] = 0] = \"Undefined\";\n NavigationAction[NavigationAction[\"Open\"] = 1] = \"Open\";\n NavigationAction[NavigationAction[\"Close\"] = 2] = \"Close\";\n NavigationAction[NavigationAction[\"Enter\"] = 3] = \"Enter\";\n NavigationAction[NavigationAction[\"Tab\"] = 4] = \"Tab\";\n NavigationAction[NavigationAction[\"Esc\"] = 5] = \"Esc\";\n NavigationAction[NavigationAction[\"Delete\"] = 6] = \"Delete\";\n NavigationAction[NavigationAction[\"Backspace\"] = 7] = \"Backspace\";\n NavigationAction[NavigationAction[\"Home\"] = 8] = \"Home\";\n NavigationAction[NavigationAction[\"End\"] = 9] = \"End\";\n NavigationAction[NavigationAction[\"Up\"] = 10] = \"Up\";\n NavigationAction[NavigationAction[\"Down\"] = 11] = \"Down\";\n NavigationAction[NavigationAction[\"Left\"] = 12] = \"Left\";\n NavigationAction[NavigationAction[\"Right\"] = 13] = \"Right\";\n})(NavigationAction || (NavigationAction = {}));\n\n/**\n * @hidden\n */\nlet DataService = class DataService {\n /**\n * @hidden\n */\n constructor() {\n this.grouped = false;\n this.groupIndices = [];\n }\n set data(data) {\n this._data = data;\n this.grouped = this.isGrouped(data);\n if (this.grouped) {\n this.groupIndices = this.getGroupIndices(data);\n this._flatData = this.flatten(data);\n }\n }\n get data() {\n if (this.grouped) {\n return this._flatData;\n }\n return this._data;\n }\n /**\n * @hidden\n * Used to get the actual items count, i.e. excluding the header items in case of grouping.\n */\n get itemsCount() {\n if (!isPresent(this.data) || this.data.length === 0) {\n return 0;\n }\n const items = this.grouped ? this._flatData.filter(item => !item.header) : this.data;\n return items.length;\n }\n /**\n * @hidden\n * Used to determine if the component received grouped data.\n */\n isGrouped(data) {\n // GroupResult { aggregates: AggregateResult, field: string, items: object[], value: any }\n // https://www.telerik.com/kendo-angular-ui/components/dataquery/api/GroupResult/\n return (isPresent(data) && data.length !== 0) && isPresent(data[0]) && hasProps(data[0], ['aggregates', 'field', 'items', 'value']);\n }\n /**\n * @hidden\n * Used to calculate the last item index of each group.\n */\n getGroupIndices(data) {\n let groupIndices = [];\n for (let i = 0; i <= data.length - 1; i++) {\n groupIndices[i] = (groupIndices[i - 1] || 0) + data[i].items.length;\n }\n return groupIndices;\n }\n /**\n * @hidden\n * Used to get a flat array containing all items matching certain criteria.\n */\n filter(predicate) {\n let result = [];\n if (this.isGrouped(this.data)) {\n for (let i = 0; i <= this.groupIndices.length - 1; i++) {\n const matches = this.data[i].items.filter(predicate);\n if (matches) {\n result = result.concat(matches);\n }\n }\n }\n else {\n result = this.data.filter(predicate);\n }\n return result;\n }\n /**\n * @hidden\n * Used to get the index of a given data item.\n */\n indexOf(item, startFrom = 0) {\n let predicate = (element) => {\n return element === item;\n };\n if (this.grouped) {\n predicate = (element) => {\n return element.value === item;\n };\n }\n return this.findIndex(predicate, startFrom);\n }\n /**\n * @hidden\n * Used to get the index of a data item based on an expression.\n */\n findIndex(predicate, startFrom = 0) {\n let index = -1;\n if (this.grouped) {\n const data = this._flatData.filter(item => !item.header && item.offsetIndex >= startFrom);\n index = data.findIndex(predicate);\n index = data[index] ? data[index].offsetIndex : -1;\n }\n else {\n const data = this.data.slice(startFrom);\n const itemIndex = data.findIndex(predicate);\n index = itemIndex !== -1 ? itemIndex + startFrom : -1;\n }\n return index;\n }\n /**\n * @hidden\n * Used to get the closest group header prior to an item index.\n */\n closestGroup(index) {\n for (let i = index; i >= 0; i--) {\n if (this._flatData[i].header) {\n return this._flatData[i];\n }\n }\n }\n /**\n * @hidden\n * Used to get the first item matching the criteria.\n */\n find(predicate) {\n const index = this.findIndex(predicate);\n return this.itemAt(index);\n }\n /**\n * @hidden\n * Used to get the true index in a flattened data array.\n */\n flatIndex(index) {\n if (this.itemsCount === 0) {\n return -1;\n }\n if (this.grouped) {\n const match = this._flatData.find((item) => !item.header && item.offsetIndex === index);\n if (match) {\n return match.index;\n }\n }\n else {\n return index;\n }\n return -1;\n }\n /**\n * @hidden\n * Used to get the item at the provided index.\n */\n itemAt(index) {\n let dataItem;\n if (this.itemsCount === 0) {\n return dataItem;\n }\n if (this.grouped) {\n const match = this._flatData.find((item) => !item.header && item.offsetIndex === index);\n if (match) {\n dataItem = match.value;\n }\n }\n else {\n dataItem = this.data[index];\n }\n return dataItem;\n }\n /**\n * @hidden\n * Used to get the group at the provided index.\n */\n groupAt(index) {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n return this._flatData.find((item) => item.header && item.index === index);\n }\n /**\n * @hidden\n * Used to get the field by which the data is grouped.\n */\n groupField() {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return null;\n }\n return this._data[0].field;\n }\n /**\n * @hidden\n * Used to get the group to which a dataItem belongs.\n */\n itemGroup(item) {\n if (!item || this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n const fieldName = this.groupField();\n if (fieldName) {\n return getter$1(item, fieldName);\n }\n }\n flatten(data, group = undefined, offset = 0, groupIndex = 0) {\n let flat = [];\n if (isPresent(group)) {\n flat.push({\n header: true,\n index: groupIndex + offset,\n offsetIndex: groupIndex,\n value: group\n });\n }\n for (let i = 0; i < data.length; i++) {\n let result = [];\n if (data[i].items) {\n result = this.flatten(data[i].items, data[i].value, offset, i);\n offset = offset + data[i].items.length;\n }\n else {\n result.push({\n header: false,\n index: groupIndex + offset + i + 1,\n offsetIndex: offset + i,\n value: data[i]\n });\n }\n flat = flat.concat(result);\n }\n return flat;\n }\n};\nDataService.ɵfac = function DataService_Factory(t) { return new (t || DataService)(); };\nDataService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataService, factory: function (t) { return DataService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet DisabledItemsService = class DisabledItemsService {\n constructor(dataService) {\n this.dataService = dataService;\n this.itemDisabled = null;\n }\n isIndexDisabled(index) {\n if (this.itemDisabled) {\n const item = this.dataService.itemAt(index);\n if (isPresent(item)) {\n return this.itemDisabled({ dataItem: item, index });\n }\n else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({ dataItem: this.defaultItem, index: -1 });\n }\n }\n }\n isItemDisabled(item) {\n if (this.itemDisabled) {\n const index = this.dataService.indexOf(item);\n if (index !== -1) {\n return this.itemDisabled({ dataItem: item, index });\n }\n else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({ dataItem: this.defaultItem, index: -1 });\n }\n }\n }\n};\nDisabledItemsService.ɵfac = function DisabledItemsService_Factory(t) { return new (t || DisabledItemsService)(ɵngcc0.ɵɵinject(DataService)); };\nDisabledItemsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DisabledItemsService, factory: function (t) { return DisabledItemsService.ɵfac(t); } });\nDisabledItemsService = __decorate([ __metadata(\"design:paramtypes\", [DataService])\n], DisabledItemsService);\n\nconst MIN_INDEX = 0;\n/**\n * @hidden\n */\nclass NavigationEvent {\n /**\n * The index of the item to which the user navigated.\n */\n constructor(index, originalEvent) {\n this.index = index;\n this.originalEvent = originalEvent;\n }\n}\n/**\n * @hidden\n */\nlet NavigationService = class NavigationService {\n constructor(disabledItemsService, selectionService) {\n this.disabledItemsService = disabledItemsService;\n this.selectionService = selectionService;\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n this.enter = new EventEmitter();\n this.tab = new EventEmitter();\n this.esc = new EventEmitter();\n this.up = new EventEmitter();\n this.right = new EventEmitter();\n this.down = new EventEmitter();\n this.left = new EventEmitter();\n this.delete = new EventEmitter();\n this.backspace = new EventEmitter();\n this.home = new EventEmitter();\n this.end = new EventEmitter();\n }\n process(args) {\n const keyCode = args.originalEvent.keyCode;\n const altKey = args.originalEvent.altKey;\n let index;\n let action = NavigationAction.Undefined;\n if (altKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.Open;\n }\n else if (altKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.Close;\n }\n else if (keyCode === Keys.Enter) {\n action = NavigationAction.Enter;\n }\n else if (keyCode === Keys.Escape) {\n action = NavigationAction.Esc;\n }\n else if (keyCode === Keys.Tab) {\n action = NavigationAction.Tab;\n }\n else if (keyCode === Keys.ArrowUp) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: -1 });\n action = NavigationAction.Up;\n }\n else if (keyCode === Keys.ArrowLeft) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: -1 });\n action = NavigationAction.Left;\n }\n else if (keyCode === Keys.ArrowDown) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: 1 });\n action = NavigationAction.Down;\n }\n else if (keyCode === Keys.ArrowRight) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: 1 });\n action = NavigationAction.Right;\n }\n else if (keyCode === Keys.Home) {\n index = this.isDisabled(MIN_INDEX) ? args.current : MIN_INDEX;\n action = NavigationAction.Home;\n }\n else if (keyCode === Keys.End) {\n index = this.isDisabled(args.max) ? args.current : args.max;\n action = NavigationAction.End;\n }\n else if (keyCode === Keys.Delete) {\n action = NavigationAction.Delete;\n }\n else if (keyCode === Keys.Backspace) {\n action = NavigationAction.Backspace;\n }\n const eventData = new NavigationEvent(index, args.originalEvent);\n if (action !== NavigationAction.Undefined) {\n this[NavigationAction[action].toLowerCase()].emit(eventData);\n }\n return action;\n }\n next(args) {\n const { current, start, end, step } = args;\n const nextIndex = !isPresent(current) ? start : this.clampIndex(current + step, start, end);\n const firstFocusableIndex = this.firstFocusableIndex(nextIndex, start, end, step);\n if (isPresent(firstFocusableIndex)) {\n return firstFocusableIndex;\n }\n if (this.selectionService.isSelected(current) && current >= start) {\n return current;\n }\n const inversedStep = -1 * step;\n return this.firstFocusableIndex(nextIndex, start, end, inversedStep);\n }\n clampIndex(index, min, max) {\n if (!isPresent(index) || index < min) {\n return min;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n firstFocusableIndex(startIndex, min, max, step) {\n while (min <= startIndex && startIndex <= max) {\n if (!this.isDisabled(startIndex)) {\n return startIndex;\n }\n startIndex += step;\n }\n return undefined;\n }\n isDisabled(index) {\n if (this.disabledItemsService) {\n return this.disabledItemsService.isIndexDisabled(index);\n }\n }\n};\nNavigationService.ɵfac = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(DisabledItemsService), ɵngcc0.ɵɵinject(SelectionService)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [DisabledItemsService,\n SelectionService])\n], NavigationService);\n\n/**\n * Renders content when no data is available. To define the no-data template, nest a `` tag\n * with the `kendoNoDataTemplate` directive inside the component tag.\n *\n * - [Using `NoDataTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the ComboBox]({% slug templates_combobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownList]({% slug templates_ddl %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-no-data-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

No data!

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [];\n * }\n * ```\n */\nlet NoDataTemplateDirective = class NoDataTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNoDataTemplateDirective.ɵfac = function NoDataTemplateDirective_Factory(t) { return new (t || NoDataTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNoDataTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NoDataTemplateDirective, selectors: [[\"\", \"kendoDropDownListNoDataTemplate\", \"\"], [\"\", \"kendoDropDownTreeNoDataTemplate\", \"\"], [\"\", \"kendoComboBoxNoDataTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxNoDataTemplate\", \"\"], [\"\", \"kendoAutoCompleteNoDataTemplate\", \"\"], [\"\", \"kendoMultiSelectNoDataTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeNoDataTemplate\", \"\"]] });\nNoDataTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], NoDataTemplateDirective);\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Defines the mandatory properties of the `kendoDropDownFilter` directive\n * so that `kendoDropDownFilter` can be used with any of the DropDowns components\n * which implement the `FilterableDropDownComponentBase` class.\n *\n * @hidden\n */\nclass FilterableComponent {\n}\n\n/**\n * @hidden\n */\nlet ListItemDirective = class ListItemDirective {\n constructor(element) {\n this.element = element;\n }\n};\nListItemDirective.ɵfac = function ListItemDirective_Factory(t) { return new (t || ListItemDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nListItemDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ListItemDirective, selectors: [[\"li\", \"role\", \"option\"], [\"li\", \"role\", \"group\"]] });\nListItemDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef])\n], ListItemDirective);\n\n/**\n * @hidden\n */\nlet ListComponent = class ListComponent {\n /* tslint:disable:member-ordering */\n constructor(dataService, wrapper, selectionService, disabledItemsService, cdr, zone, renderer) {\n this.dataService = dataService;\n this.wrapper = wrapper;\n this.selectionService = selectionService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.zone = zone;\n this.renderer = renderer;\n this.selected = [];\n this.focused = -1;\n this.show = true;\n this.multipleSelection = false;\n this.listClass = 'k-list k-reset';\n this.checkboxes = { enabled: false };\n this.onClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.listResize = new EventEmitter();\n this.startFrom = 0;\n this.lastLoaded = 0;\n this.lastScrollTop = 0;\n this.scrollToFocused = false;\n this.selectSubscription = merge(this.selectionService.onSelect.pipe(map((args) => args.indices[0])), this.selectionService.onFocus)\n .pipe(\n // handle only the very last onSelect/onFocus emission\n switchMap(event => this.zone.onStable.pipe(take(1), map(() => event))))\n .subscribe(this.scrollToItem.bind(this));\n }\n set data(data) {\n this._data = data[0] && data[0].header ? data.slice(0) : data;\n }\n get data() {\n return this._data;\n }\n get pageSize() {\n if (this.virtual.pageSize) {\n return this.virtual.pageSize;\n }\n let size = Math.round(this.height / this.virtual.itemHeight);\n return size;\n }\n get scrollHeight() {\n return (this.dataService.grouped ? this.virtual.total - 1 : this.virtual.total) * this.virtual.itemHeight;\n }\n get overflowY() {\n if (isPresent(this.virtual)) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n return overflow;\n }\n }\n ngOnChanges(changes) {\n if (isChanged('data', changes, false)) {\n if (this.lastLoaded <= 0) {\n this.lastLoaded = this.data.length - 1;\n this.scrollToFocused = !changes.data.isFirstChange();\n }\n this.setOverflow();\n }\n if (isChanged('virtual', changes, false)) {\n this.setOverflow();\n }\n }\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.scrollSubscription = fromEvent(this.content.nativeElement, \"scroll\").pipe(auditTime(100), tap(this.prefetchData.bind(this)), tap(this.findCurrentGroup.bind(this))).subscribe(() => {\n this.lastScrollTop = this.content.nativeElement.scrollTop;\n });\n });\n this.setOverflow();\n }\n ngAfterViewChecked() {\n if (this.virtual) {\n this.positionItems();\n }\n if (this.items && this.scrollToFocused) {\n this.scrollToFocused = false;\n const scrollTarget = this.items.length && this.selectionService.focused === -1 ? 0 : this.selectionService.focused;\n this.scrollToItem(scrollTarget);\n }\n if (this.dataService.grouped) {\n this.findCurrentGroup();\n }\n }\n ngOnDestroy() {\n this.selectSubscription.unsubscribe();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n onCheckedChange(e, index) {\n const isChecked = e.target['checked'];\n if (isChecked && !this.selectionService.isSelected(index)) {\n this.selectionService.add(index);\n }\n if (!isChecked && this.selectionService.isSelected(index)) {\n this.selectionService.unselect(index);\n }\n }\n isChecked(index) {\n const normalizedIndex = this.virtual ? index + this.virtual.skip : index;\n return this.selectionService.isSelected(normalizedIndex);\n }\n firstVisibleItem() {\n const content = this.content.nativeElement;\n const rect = content.getBoundingClientRect();\n // IE9 hack\n const disabled = Array.prototype.slice.call(content.querySelectorAll(\".k-state-disabled\"));\n // This is a workaround for finding elements with pointer-events: none;\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"auto\"));\n const item = document.elementFromPoint(rect.left + 1, rect.top + 1);\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"none\"));\n // return the closest `li` item to cover the custom template scenario\n return closest(item, 'li');\n }\n findCurrentGroup() {\n if (!this.dataService.grouped) {\n this.currentGroup = undefined;\n return;\n }\n const item = this.firstVisibleItem();\n if (item) {\n let index;\n if (item.getAttribute(\"role\") === \"group\") {\n index = parseInt(item.getAttribute(\"group-index\"), 10);\n this.currentGroup = this.dataService.groupAt(index).value;\n }\n else {\n index = parseInt(item.getAttribute(\"index\"), 10);\n this.currentGroup = this.dataService.itemGroup(this.dataService.itemAt(index));\n }\n }\n else {\n this.currentGroup = undefined;\n }\n this.cdr.detectChanges();\n }\n prefetchData() {\n if (!this.virtual) {\n return;\n }\n const visibleItems = Math.trunc(this.content.nativeElement.clientHeight / this.virtual.itemHeight);\n const offsetY = this.content.nativeElement.scrollTop;\n const start = Math.trunc(offsetY / this.virtual.itemHeight);\n const down = offsetY > this.lastScrollTop;\n const nextPage = (start + visibleItems >= this.lastLoaded) && this.lastLoaded < this.virtual.total - 1;\n const leftOver = this.pageSize - (this.lastLoaded - this.startFrom);\n const prevPage = this.lastLoaded - this.pageSize + visibleItems >= start - leftOver;\n if (down && nextPage) {\n this.changePage(start);\n }\n if (!down && prevPage) {\n this.changePage(start - this.pageSize + visibleItems + 1);\n }\n }\n changePage(start) {\n this.zone.run(() => {\n let end = this.pageSize + start;\n if (end > this.virtual.total) {\n start--;\n end = this.virtual.total;\n }\n if (start < 0) {\n start = 0;\n }\n this.startFrom = start;\n this.lastLoaded = end;\n this.pageChange.emit({ skip: start, take: this.pageSize });\n });\n }\n index(groupIndex, itemIndex) {\n return groupIndex > 0 ? (this.dataService.groupIndices[groupIndex - 1] + itemIndex) : itemIndex;\n }\n getText(dataItem) {\n return getter$1(dataItem, this.textField);\n }\n getValue(dataItem) {\n return getter$1(dataItem, this.valueField);\n }\n isDisabled(index) {\n if (isPresent(this.virtual)) {\n index += this.virtual.skip;\n }\n return this.disabledItemsService.isIndexDisabled(index);\n }\n scrollToItem(index) {\n let flatIndex = index;\n if (this.dataService.grouped) {\n // takes into account the group header items\n flatIndex = this.dataService.flatIndex(index);\n /* The first group header item is not rendered in the list (see template), so subtract 1 when calulating the flat index.\n With virtualization enabled, the first group header could be in a previous page, in which case don't subtract anything. */\n const groupHeaderOffset = this.firstGroupHeaderInTargetedPage(flatIndex) ? -1 : 0;\n flatIndex += groupHeaderOffset;\n }\n if (this.virtual && flatIndex > -1) {\n this.scrollToIndex(flatIndex);\n return;\n }\n const items = this.items.toArray();\n if (isPresent(items[flatIndex]) && flatIndex !== -1) {\n this.scroll(items[flatIndex].element);\n }\n }\n scrollToIndex(index) {\n let content = this.content.nativeElement;\n let contentScrollTop = content.scrollTop;\n const itemOffsetTop = index * this.virtual.itemHeight;\n const itemOffsetHeight = this.virtual.itemHeight;\n const contentOffsetHeight = content.clientHeight;\n const bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n scroll(item) {\n if (!item) {\n return;\n }\n const nativeElement = item.nativeElement;\n let content = this.content.nativeElement, itemOffsetTop = nativeElement.offsetTop, itemOffsetHeight = nativeElement.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n /**\n * Indicates whether a scrollbar is currently rendered in the list.\n */\n hasScrollbar() {\n if (!(isPresent(this.items) && this.items.length && isPresent(this.list) && isPresent(this.content))) {\n return false;\n }\n const hasVirtualScroll = isPresent(this.virtual) && this.hasVirtualScrollbar();\n return hasVirtualScroll || this.list.nativeElement.scrollHeight > this.content.nativeElement.offsetHeight;\n }\n /**\n * Sets the list's content overflow (hides/shows scrollbar)\n */\n setOverflow() {\n if (this.virtual) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n this.renderer.setStyle(this.content.nativeElement, 'overflow-y', overflow);\n }\n }\n /**\n * Indicates whether the scrollbar should be visible in virtual mode.\n */\n hasVirtualScrollbar() {\n const contentOffsetHeight = this.content.nativeElement.offsetHeight;\n const virtualOffsetHeight = this.virtualContainer && this.virtualContainer.nativeElement.offsetHeight;\n return this.virtualContainer && virtualOffsetHeight > contentOffsetHeight;\n }\n positionItems() {\n this.items.forEach((item, index) => {\n const offsetY = (index + this.startFrom) * this.virtual.itemHeight;\n this.renderer.setStyle(item.element.nativeElement, \"transform\", `translateY(${offsetY}px`);\n });\n }\n /**\n * Indicates whether the first group header from the data set is in the targeted virtual page.\n */\n firstGroupHeaderInTargetedPage(itemIndex) {\n if (!isPresent(this.virtual)) {\n return true;\n }\n return this.virtual.skip === 0 && (this.virtual.pageSize > itemIndex);\n }\n};\nListComponent.ɵfac = function ListComponent_Factory(t) { return new (t || ListComponent)(ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ListComponent, selectors: [[\"kendo-list\"]], viewQuery: function ListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c2, 7);\n ɵngcc0.ɵɵviewQuery(_c3, 7);\n ɵngcc0.ɵɵviewQuery(_c4, 5);\n ɵngcc0.ɵɵviewQuery(ListItemDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.content = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.list = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.virtualContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n } }, inputs: { selected: \"selected\", focused: \"focused\", show: \"show\", multipleSelection: \"multipleSelection\", listClass: \"listClass\", checkboxes: \"checkboxes\", data: \"data\", textField: \"textField\", valueField: \"valueField\", height: \"height\", template: \"template\", groupTemplate: \"groupTemplate\", fixedGroupTemplate: \"fixedGroupTemplate\", id: \"id\", optionPrefix: \"optionPrefix\", virtual: \"virtual\" }, outputs: { onClick: \"onClick\", pageChange: \"pageChange\", listResize: \"listResize\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 9, vars: 20, consts: [[\"class\", \"k-outer-group-header k-first\", 3, \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"unselectable\", \"on\", 3, \"ngClass\"], [\"content\", \"\"], [\"role\", \"listbox\", 3, \"ngClass\"], [\"list\", \"\"], [4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [\"class\", \"k-height-container\", \"role\", \"presentation\", 4, \"ngIf\"], [1, \"k-outer-group-header\", \"k-first\", 3, \"ngClass\", \"ngStyle\"], [3, \"ngIf\"], [3, \"templateContext\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", 1, \"k-item\", 3, \"checkboxes\", \"height\", \"index\", \"multipleSelection\", \"ngClass\"], [\"class\", \"k-checkbox-label\", 4, \"ngIf\"], [1, \"k-checkbox-label\"], [\"type\", \"checkbox\", 1, \"k-checkbox\", 3, \"checked\", \"change\"], [\"role\", \"group\", \"class\", \"k-outer-group-header\", 3, \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", \"class\", \"k-item\", 3, \"height\", \"index\", \"multipleSelection\", \"ngClass\", 4, \"ngIf\"], [\"role\", \"group\", 1, \"k-outer-group-header\", 3, \"ngClass\", \"ngStyle\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", 1, \"k-item\", 3, \"height\", \"index\", \"multipleSelection\", \"ngClass\"], [3, \"resize\"], [\"role\", \"presentation\", 1, \"k-height-container\"], [\"virtualContainer\", \"\"]], template: function ListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_div_0_Template, 3, 10, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2)(3, \"ul\", 3, 4);\n ɵngcc0.ɵɵtemplate(5, ListComponent_5_Template, 1, 1, null, 5);\n ɵngcc0.ɵɵtemplate(6, ListComponent_6_Template, 1, 1, null, 5);\n ɵngcc0.ɵɵtemplate(7, ListComponent_kendo_resize_sensor_7_Template, 1, 0, \"kendo-resize-sensor\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, ListComponent_div_8_Template, 4, 2, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dataService.grouped);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"overscroll-behavior\", \"none\")(\"max-height\", ctx.height, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(15, _c9, ctx.virtual, !ctx.virtual));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassMap(ctx.listClass);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(18, _c10, ctx.virtual));\n ɵngcc0.ɵɵattribute(\"id\", ctx.id)(\"aria-hidden\", !ctx.show);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.dataService.grouped && ctx.show);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dataService.grouped);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.virtual);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.virtual);\n } }, directives: function () { return [ɵngcc3.NgIf, ɵngcc3.NgClass, ɵngcc3.NgStyle, TemplateContextDirective, ɵngcc3.NgForOf, ListItemDirective, SelectableDirective, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ListComponent.prototype, \"selected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"focused\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ItemTemplateDirective)\n], ListComponent.prototype, \"template\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", GroupTemplateDirective)\n], ListComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], ListComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"show\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"optionPrefix\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"multipleSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"virtual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"listClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"checkboxes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ListComponent.prototype, \"data\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"onClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"pageChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"listResize\", void 0);\n__decorate([\n ViewChildren(ListItemDirective),\n __metadata(\"design:type\", QueryList)\n], ListComponent.prototype, \"items\", void 0);\n__decorate([\n ViewChild('content', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"content\", void 0);\n__decorate([\n ViewChild('list', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"list\", void 0);\n__decorate([\n ViewChild('virtualContainer', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"virtualContainer\", void 0);\nListComponent = __decorate([ __metadata(\"design:paramtypes\", [DataService,\n ElementRef,\n SelectionService,\n DisabledItemsService,\n ChangeDetectorRef,\n NgZone,\n Renderer2])\n], ListComponent);\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n pageSize: 50,\n itemHeight: 28\n};\n/**\n * @hidden\n */\nconst normalizeVirtualizationSettings = (settings, defaultOverrides) => {\n const defaults = Object.assign({}, DEFAULTS, defaultOverrides);\n if (settings === true) {\n return defaults;\n }\n if (!settings) {\n return null;\n }\n return Object.assign({ pageSize: DEFAULTS.pageSize }, settings);\n};\n\n/**\n * @hidden\n */\nconst TOUCH_ENABLED = new InjectionToken('dropdowns-touch-enabled');\n\n/* tslint:disable:member-ordering */\nvar AutoCompleteComponent_1;\nconst NO_VALUE = \"\";\n/**\n * @hidden\n */\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoCompleteComponent)\n};\n/**\n * Represents the [Kendo UI AutoComplete component for Angular]({% slug overview_autocomplete %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public placeholder: string = 'Type \"it\" for suggestions';\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet AutoCompleteComponent = AutoCompleteComponent_1 = class AutoCompleteComponent {\n constructor(localization, dataService, popupService, selectionService, navigationService, disabledItemsService, _zone, cdr, renderer, hostElement, touchEnabled$$1) {\n this.localization = localization;\n this.dataService = dataService;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this._zone = _zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.touchEnabled = touchEnabled$$1;\n /**\n * Defines whether the first match from the suggestions list will be automatically focused.\n * By default, `highlightFirst` is set to `true`.\n */\n this.highlightFirst = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * @hidden\n *\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_autocomplete %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the AutoComplete.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the AutoComplete gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this.listBoxId = guid$1();\n this.optionPrefix = guid$1();\n this.onChangeCallback = noop;\n this.onTouchedCallback = noop;\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this._popupSettings = { animate: true };\n this._open = false;\n this._value = \"\";\n this.valueChangeSubject = new Subject();\n this._isFocused = false;\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.wrapper = this.hostElement.nativeElement;\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.selectionService.resetSelection([-1]);\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n get suggestion() {\n if (!this.text || !this.suggestedText) {\n this.suggestedText = undefined;\n return;\n }\n const hasMatch = this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase());\n const shouldSuggest = this.suggest && !this.backspacePressed;\n if (shouldSuggest && hasMatch) {\n return this.suggestedText;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * Toggles the visibility of the popup.\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + getter$1(dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.noDataText;\n }\n }\n get clearTitle() {\n return this.localization.get('clearTitle');\n }\n /**\n * Sets the data of the AutoComplete.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.filterable) {\n this.selectionService.focused = this.isOpen && this.data.length && this.highlightFirst ? this.firstFocusableIndex(0) : -1;\n }\n if (this.suggest && this.dataService.itemsCount > 0) {\n this.suggestedText = getter$1(this.dataService.itemAt(0), this.valueField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the AutoComplete.\n */\n set value(newValue) {\n this.verifySettings(newValue);\n this._value = newValue || NO_VALUE;\n this.text = this.value;\n this.cdr.markForCheck();\n }\n get value() {\n return this._value || NO_VALUE;\n }\n /**\n * Configures the popup of the AutoComplete.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_autocomplete %})).\n * Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_autocomplete %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, \"k-state-focused\");\n this._isFocused = isFocused;\n }\n get isDisabled() {\n return this.disabled;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.localizationChangeSubscription = this.localization\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.setMessages();\n });\n this.setMessages();\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n clearTimeout(this.messagesTimeout);\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n }\n /**\n * Resets the value of the AutoComplete.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = NO_VALUE;\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.change(NO_VALUE);\n if (this.filterable) {\n this.filterChange.emit('');\n }\n this.selectionService.resetSelection([]);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Focuses a specific item of the AutoComplete based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the AutoComplete.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the AutoComplete.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n verifySettings(newValue) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(newValue) && typeof newValue !== \"string\") {\n throw new Error(\"Expected value of type string. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/value-binding/\");\n }\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter$1(this.dataService.itemAt(index), this.valueField);\n }\n }\n }\n navigate(index) {\n if (!this.isOpen) {\n return;\n }\n this.selectionService.focus(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n if (this.disabled || this.readonly || isNaN(focused)) {\n return;\n }\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n action !== NavigationAction.Home &&\n action !== NavigationAction.End &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter(event) {\n const focused = this.selectionService.focused;\n let value;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focused >= 0) {\n value = getter$1(this.dataService.itemAt(focused), this.valueField);\n }\n else {\n const match = this.suggest && this.suggestedText && this.data.length &&\n getter$1(this.dataService.itemAt(0), this.valueField).toLowerCase() === this.searchbar.value.toLowerCase();\n if (this.isOpen && match) {\n value = this.suggestedText;\n }\n else {\n value = this.searchbar.value;\n }\n }\n this.change(value);\n }\n handleEscape() {\n this.togglePopup(false);\n this.selectionService.focused = -1;\n this.suggestedText = null;\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = isPresent(this.text) ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n this.togglePopup(text.length > 0);\n if (!this.highlightFirst) {\n this.selectionService.focused = -1;\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else if (this.highlightFirst) {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n const focused = this.filterable ? this.selectionService.focused : -1;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n let dataItem;\n let text;\n if (focused !== -1) {\n dataItem = this.dataService.itemAt(focused);\n text = getter$1(dataItem, this.valueField) || \"\";\n }\n else {\n text = this.searchbar.value;\n }\n const exactMatch = text === this.searchbar.value;\n const insensitiveMatch = text.toLowerCase() === this.searchbar.value.toLowerCase();\n if (!exactMatch && insensitiveMatch) {\n this.selectionService.resetSelection([]);\n }\n this.isFocused = false;\n const valueHasChanged = this.value !== this.text;\n const runInZone = hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper) || valueHasChanged;\n if (runInZone) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.change(this.searchbar.value);\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(value) {\n this.togglePopup(false);\n this.valueChangeSubject.next(value);\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.valueChangeSubscription = this.valueChangeSubject\n .subscribe(value => {\n const hasChange = this.value !== value;\n this.value = value;\n this.text = value;\n // emit change after assigning `this.value` => allows the user to modify the component value on `valueChange`\n if (hasChange) {\n this.emitChange(value);\n }\n });\n this.changeSubscription = this.selectionService.onChange.subscribe(this.handleItemChange.bind(this));\n this.focusSubscription = this.selectionService.onFocus.subscribe(this.handleItemFocus.bind(this));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down).subscribe((event) => this.navigate(event.index));\n this.closeSubscription = this.navigationService.close.subscribe(() => this.togglePopup(false));\n this.enterSubscription = this.navigationService.enter.subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc.subscribe(this.handleEscape.bind(this));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up AutoComplete on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => this.blur());\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.changeSubscription.unsubscribe();\n this.navigationSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.valueChangeSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleItemChange(event) {\n const index = event.indices.length ? event.indices[0] : undefined;\n this.selectionService.resetSelection([-1]);\n if (!isPresent(index)) {\n return;\n }\n let text = getter$1(this.dataService.itemAt(index), this.valueField);\n this.change(text);\n }\n handleItemFocus(_event) {\n const focused = this.selectionService.focused;\n const shouldSuggest = Boolean(this.suggest && this.data && this.data.length && focused >= 0);\n if (shouldSuggest) {\n this.suggestedText = getter$1(this.dataService.itemAt(focused), this.valueField);\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n popupAlign: popupPosition,\n anchorAlign: anchorPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter$1(item.value, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter$1(item, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n setMessages() {\n this._zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\n }\n};\nAutoCompleteComponent.ɵfac = function AutoCompleteComponent_Factory(t) { return new (t || AutoCompleteComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nAutoCompleteComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AutoCompleteComponent, selectors: [[\"kendo-autocomplete\"]], contentQueries: function AutoCompleteComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n } }, viewQuery: function AutoCompleteComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(SearchBarComponent, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n } }, hostVars: 7, hostBindings: function AutoCompleteComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-autocomplete\", ctx.widgetClasses)(\"k-state-disabled\", ctx.isDisabled);\n } }, inputs: { highlightFirst: \"highlightFirst\", focusableId: \"focusableId\", placeholder: \"placeholder\", listHeight: \"listHeight\", clearButton: \"clearButton\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", filterable: \"filterable\", data: \"data\", value: \"value\", popupSettings: \"popupSettings\", itemDisabled: \"itemDisabled\", tabIndex: \"tabIndex\", virtual: \"virtual\", valueField: \"valueField\", loading: \"loading\", suggest: \"suggest\" }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoAutoComplete\"], features: [ɵngcc0.ɵɵProvidersFeature([\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 15, consts: function () { let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.autocomplete.noDataText\n */\n const MSG_EXTERNAL_2690656529626907484$$DIST_FESM2015_INDEX_JS_15 = goog.getMsg(\"NO DATA FOUND\");\n i18n_14 = MSG_EXTERNAL_2690656529626907484$$DIST_FESM2015_INDEX_JS_15;\n }\n else {\n i18n_14 = $localize `:kendo.autocomplete.noDataText|The text displayed in the popup when there are no items␟4e9993e088a293543eb0c2801343518c115b6f20␟2690656529626907484:NO DATA FOUND`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.autocomplete.clearTitle\n */\n const MSG_EXTERNAL_4821453594854847070$$DIST_FESM2015_INDEX_JS_17 = goog.getMsg(\"clear\");\n i18n_16 = MSG_EXTERNAL_4821453594854847070$$DIST_FESM2015_INDEX_JS_17;\n }\n else {\n i18n_16 = $localize `:kendo.autocomplete.clearTitle|The title of the clear button␟7cf49cc2d50eebd29f8d61564512383caaaac7a6␟4821453594854847070:clear`;\n } return [[\"kendoAutoCompleteLocalizedMessages\", \"\", \"noDataText\", i18n_14, \"clearTitle\", i18n_16], [3, \"role\", \"id\", \"listId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"visibility\", \"click\", \"mousedown\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [3, \"ngIf\"], [\"container\", \"\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"click\", \"mousedown\"], [1, \"k-icon\", \"k-i-loading\"], [4, \"ngIf\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function AutoCompleteComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-searchbar\", 1, 2);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function AutoCompleteComponent_Template_kendo_searchbar_onNavigate_1_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function AutoCompleteComponent_Template_kendo_searchbar_valueChange_1_listener($event) { return ctx.searchBarChange($event); })(\"onBlur\", function AutoCompleteComponent_Template_kendo_searchbar_onBlur_1_listener() { return ctx.handleBlur(); })(\"onFocus\", function AutoCompleteComponent_Template_kendo_searchbar_onFocus_1_listener() { return ctx.handleFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, AutoCompleteComponent_span_3_Template, 1, 3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, AutoCompleteComponent_span_4_Template, 1, 0, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, AutoCompleteComponent_ng_template_5_Template, 5, 14, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(7, AutoCompleteComponent_ng_template_7_Template, 1, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementContainer(8, null, 7);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"role\", \"combobox\")(\"id\", ctx.focusableId)(\"listId\", ctx.listBoxId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"suggestedText\", ctx.suggestion)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && (ctx.clearButton && (ctx.text == null ? null : ctx.text.length)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, SearchBarComponent, ɵngcc3.NgIf, TemplateContextDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"highlightFirst\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AutoCompleteComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], AutoCompleteComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], AutoCompleteComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AutoCompleteComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AutoCompleteComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], AutoCompleteComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AutoCompleteComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"suggest\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], AutoCompleteComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AutoCompleteComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], AutoCompleteComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], AutoCompleteComponent.prototype, \"virtual\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], AutoCompleteComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], AutoCompleteComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], AutoCompleteComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], AutoCompleteComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], AutoCompleteComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], AutoCompleteComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], AutoCompleteComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], AutoCompleteComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild(SearchBarComponent, { static: true }),\n __metadata(\"design:type\", SearchBarComponent)\n], AutoCompleteComponent.prototype, \"searchbar\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], AutoCompleteComponent.prototype, \"optionsList\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-autocomplete'),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], AutoCompleteComponent.prototype, \"isDisabled\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], AutoCompleteComponent.prototype, \"dir\", null);\nAutoCompleteComponent = AutoCompleteComponent_1 = __decorate([ __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n DataService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n ElementRef, Boolean])\n], AutoCompleteComponent);\n\n/* tslint:disable:variable-name */\n/**\n * @hidden\n */\nconst MultiselectMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'object': 'Expected values of Object type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst MultiSelectTreeMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-primitive-values',\n 'object': 'Expected values of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-object-values',\n 'dataItems': 'Expected dataItems of type Object[] to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'dataItemsLength': 'Expected dataItems length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding',\n 'valueDepth': 'Expected valueDepth of type number[] to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth',\n 'valueDepthLength': 'Expected valueDepth length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth'\n};\n/**\n * @hidden\n */\nconst ComboBoxMessages = {\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-bind-to-arrays-of-complex-data',\n 'noItemHeight': 'Expected virtual.itemHeight of type number.'\n};\n/**\n * @hidden\n */\nconst MultiColumnComboBoxMessages = {\n 'data': 'Provided data must consist only of objects. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/#toc-fields-configuration'\n};\n/**\n * @hidden\n */\nconst DropDownListMessages = {\n 'defaultItem': 'defaultItem and data items must be of same type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownListComponent/#toc-defaultitem',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst DropDownTreeMessages = {\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-primitive-values',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-object-values',\n 'dataItem': 'Expected dataItem of type Object to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownTreeComponent/#toc-dataitem',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding',\n 'valueDepth': 'Expected valueDepth to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/DropDownTreeComponent/#toc-valuedepth'\n};\n\n/* tslint:disable:member-ordering */\nvar ComboBoxComponent_1;\n/**\n * @hidden\n */\nconst COMBOBOX_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboBoxComponent)\n};\n/**\n * Represents the [Kendo UI ComboBox component for Angular]({% slug overview_combobox %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, hostElement, touchEnabled$$1) {\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.touchEnabled = touchEnabled$$1;\n this.selected = [];\n /**\n * @hidden\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * Specifies whether the ComboBox allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_combobox %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n * @param { Any } value - The custom value defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return { ProductID: null, ProductName: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => userInput));\n /**\n * The hint that is displayed when the component is empty.\n *\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Enables the auto-completion of the text based on the first data item.\n */\n this.suggest = false;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_combobox %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_combobox %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time an item selection is changed\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the ComboBox.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ComboBox gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this._isFocused = false;\n this.listBoxId = guid$1();\n this.optionPrefix = guid$1();\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualItemHeight = 28;\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualPageSize = 50;\n this._filtering = false;\n this._text = '';\n this.filterText = '';\n this._open = false;\n this._popupSettings = { animate: true };\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this.customValueSubject = new Subject();\n this.valueSubject = new Subject();\n this.clearValueSubject = new Subject();\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n }\n set text(text) {\n this._text = isPresent(text) ? text.toString() : \"\";\n }\n get text() {\n return this._text;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + (dataItem ? getter$1(dataItem, this.valueField) : \"\");\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.noDataText;\n }\n }\n get clearTitle() {\n return this.localization.get('clearTitle');\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the ComboBox.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n if (this._filtering) {\n const queryAndDataPresent = this.text.length > 0 && this.dataService.itemsCount > 0;\n const index = queryAndDataPresent ? this.firstFocusableIndex(0) : -1;\n this.selectionService.focused = index;\n }\n if (this.suggest && this.dataService.itemsCount && this.text) {\n this.suggestedText = getter$1(this.dataService.itemAt(0), this.textField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the ComboBox.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the dataset are considered custom values.\n * > When the `Enter` key is pressed or the component loses focus, custom values get dismissed unless `allowCustom` is set to `true`.\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_combobox %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * Configures the popup of the ComboBox.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_combobox %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_combobox %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings, {\n itemHeight: this.defaultVirtualItemHeight,\n pageSize: this.defaultVirtualPageSize\n });\n }\n get virtual() {\n return this._virtualSettings;\n }\n get clearable() {\n return this.clearButton;\n }\n get dir() {\n return this.direction;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n this.renderer[value ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, \"k-state-focused\");\n this._isFocused = value;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n get popupWidth() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get popupHeight() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, 'tabindex');\n this.attachStreams();\n this.createValueStream();\n this.subscribeTouchEvents();\n this.attachSelectClickHandler();\n this.setMessages();\n }\n createValueStream() {\n const valueStream = this.valueSubject.pipe(filter((candidate) => {\n const current = getter$1(this.value, this.valueField);\n const newValue = getter$1(candidate, this.valueField);\n let newText = getter$1(candidate, this.textField);\n if (!isPresent(this.value) && !isPresent(newValue)) {\n return false;\n }\n if (isPresent(newText)) {\n newText = newText.toString();\n }\n if (current === newValue && this.text === newText) {\n this.clearFilter();\n return false;\n }\n else {\n return true;\n }\n }), map((candidate) => {\n const newValue = getter$1(candidate, this.valueField);\n const newText = getter$1(candidate, this.textField);\n return {\n dataItem: candidate,\n text: newText,\n value: this.valuePrimitive ? newValue : candidate\n };\n }));\n const customValueStreams = partition(() => this.allowCustom)(this.customValueSubject.pipe(throttleTime(300)));\n const allowCustomValueStream = customValueStreams[0].pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), filter(() => {\n const hasChange = this.text !== getter$1(this.value, this.valueField);\n this.loading = hasChange;\n this.disabled = hasChange;\n if (!hasChange) {\n this.clearFilter();\n }\n return hasChange;\n }), this.valueNormalizer, map((normalizedValue) => {\n return {\n custom: true,\n dataItem: normalizedValue,\n text: this.text,\n value: normalizedValue\n };\n }));\n const disableCustomValueStream = customValueStreams[1].pipe(map(() => {\n return {\n custom: true,\n dataItem: undefined,\n text: undefined,\n value: undefined\n };\n }));\n const clearValueStream = this.clearValueSubject.pipe(map(() => ({\n dataItem: undefined,\n text: undefined,\n value: undefined\n })));\n if (this.valueSubscription) {\n this.valueSubscription.unsubscribe();\n }\n const merged = merge(valueStream, allowCustomValueStream, disableCustomValueStream, clearValueStream);\n this.valueSubscription = merged.pipe(catchError(() => {\n const selectionChanged = getter$1(this.dataItem, this.valueField) !== undefined;\n this.dataItem = undefined;\n this.value = undefined;\n this.text = undefined;\n this.loading = false;\n this.disabled = false;\n if (selectionChanged) {\n this.selectionChange.emit(undefined);\n }\n this.emitValueChange();\n this.createValueStream();\n return of(null);\n }))\n .subscribe((state) => {\n const selectionChanged = getter$1(this.dataItem, this.valueField) !== getter$1(state.dataItem, this.valueField);\n this.dataItem = state.dataItem;\n this.value = state.value;\n this.text = state.text;\n this.loading = false;\n this.disabled = false;\n this.clearFilter();\n if (state.custom) {\n this.selectionService.focused = -1;\n }\n if (selectionChanged) {\n const selectionArgs = state.custom ? undefined : this.dataItem;\n this.selectionChange.emit(selectionArgs);\n }\n this.emitValueChange();\n });\n }\n attachStreams() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.setMessages();\n }));\n this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => isPresent(event.index)))\n .subscribe((event) => this.navigate(event.index)));\n this.subs.add(this.navigationService.open.subscribe(this.handleNavigationOpen.bind(this)));\n this.subs.add(this.navigationService.close.subscribe(() => this.togglePopup(false)));\n this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));\n this.subs.add(this.navigationService.enter.pipe(tap((event) => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n }))\n .subscribe(this.handleEnter.bind(this)));\n this.subs.add(merge(this.selectionService.onChange, this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)))\n .pipe(tap(_ => {\n this._filtering = false;\n this.togglePopup(false);\n }), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n this.change(dataItem);\n }));\n this.subs.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), tap(_ => this._filtering = false), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n const selectionChanged = getter$1(dataItem, this.valueField) !== getter$1(this.dataItem, this.valueField);\n this.updateState({ dataItem });\n if (selectionChanged) {\n this.selectionChange.emit(dataItem);\n }\n }));\n }\n ngOnDestroy() {\n this.destroyPopup();\n clearTimeout(this.messagesTimeout);\n this.subs.unsubscribe();\n if (isPresent(this.valueSubscription)) {\n this.valueSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectClickDisposeHandler) {\n this.selectClickDisposeHandler();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the ComboBox based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the ComboBox.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the ComboBox.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to open or close the popup,\n * the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the ComboBox.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n this.clearState();\n this.resetSelection();\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label\n * should be rendered in the input when the component is not focused.\n */\n isEmpty() {\n const textEmpty = !isPresent(this.text) || isEmptyString(this.text);\n const valueEmpty = !isPresent(this.value) || isEmptyString(this.value);\n return textEmpty && valueEmpty;\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this._filtering = true;\n this._previousDataItem = undefined;\n this.selectionService.resetSelection([]);\n this.clearValueSubject.next();\n this._filtering = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isOpen) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(ComboBoxMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(ComboBoxMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(ComboBoxMessages.textAndValue);\n }\n if (this.virtual && isNaN(this.virtual.itemHeight)) {\n throw new Error(ComboBoxMessages.noItemHeight);\n }\n }\n setState() {\n // Filtering in process, do nothing.\n if (this._filtering) {\n return;\n }\n const value = this.value;\n const valueField = this.valueField;\n const resolved = this.findDataItem({ valueField, value });\n if (isPresent(resolved.index) && resolved.index !== -1) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && this.allowCustom) {\n this.updateState({ dataItem: value });\n this.resetSelection(-1);\n }\n else if (this._previousDataItem && this.value) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection(-1);\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter$1(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index) || index < 0;\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = index;\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter$1(item.value, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter$1(item, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const comparer = (element) => {\n const dataItem = this.dataService.grouped ? element.value : element;\n return getter$1(dataItem, valueField) === getter$1(value, valueField);\n };\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter$1(this.dataService.itemAt(index), this.textField);\n }\n }\n }\n /**\n * @hidden\n */\n getSuggestion() {\n const hasSelected = !!this.selectionService.selected.length;\n const shouldSuggest = this.suggest && !this.backspacePressed && this.suggestedText && this.text;\n if (!hasSelected && shouldSuggest && this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase())) {\n return this.suggestedText;\n }\n else {\n this.suggestedText = undefined;\n }\n }\n navigate(index) {\n if (this.dataService.itemsCount === 0) {\n return;\n }\n this.text = getter$1(this.dataService.itemAt(index), this.textField);\n this.selectionService.select(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n if (event.keyCode === Keys.Home || event.keyCode === Keys.End) {\n return;\n }\n if (!hasSelected) {\n if (event.keyCode === Keys.ArrowDown) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp) {\n offset = 1;\n }\n }\n const action = this.navigationService.process({\n current: offset + focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter() {\n const text = this.text;\n const focused = this.selectionService.focused;\n const hasFocused = isPresent(focused) && focused !== -1;\n const previousText = getter$1(this._previousDataItem, this.textField) || \"\";\n const focusedItemText = getter$1(this.dataService.itemAt(focused), this.textField);\n const textHasChanged = text !== previousText;\n this.togglePopup(false);\n this._filtering = false;\n if (this.allowCustom && textHasChanged) {\n if (text === focusedItemText || this.useSuggestion()) {\n this.selectionService.change(focused);\n }\n else {\n this.change(text, true);\n }\n }\n if (!this.allowCustom) {\n if (hasFocused) {\n this.selectionService.change(focused);\n }\n else if (textHasChanged) {\n this.change(text, true);\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n this._filtering = false;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n this.isFocused = false;\n const unresolvedSelection = getter$1(this.dataItem, this.valueField) !== getter$1(this.value, this.valueField);\n const currentText = this.searchbar.value;\n const textHasChanged = currentText !== (getter$1(this.dataItem, this.textField) || '');\n const valueHasChanged = unresolvedSelection || textHasChanged;\n const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.hostElement.nativeElement);\n if (runInZone) {\n this.zone.run(() => {\n if (valueHasChanged) {\n const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();\n if (lowerCaseMatch || unresolvedSelection) {\n this.selectionService.change(this.selectionService.focused);\n }\n else {\n this.change(currentText, true);\n }\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleEscape() {\n this.togglePopup(false);\n // clear the focus only if the focused item is not selected\n const hasSelected = this.selectionService.selected.length > 0;\n if (!hasSelected) {\n this.suggestedText = null;\n this.selectionService.focused = -1;\n }\n }\n /**\n * @hidden\n */\n handleNavigationOpen() {\n this.restoreItemFocus();\n this.togglePopup(true);\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = this.text ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n // Reset the selection prior to filter. If a match is present, it will be resolved. If a match is not present, it is not needed.\n this.selectionService.resetSelection([]);\n this.togglePopup(true);\n this._filtering = true;\n if (this.filterable && this.filterText !== text) {\n this.filterText = text;\n this.filterChange.emit(text);\n }\n else {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => this.onFocus.emit());\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(candidate, isCustom = false) {\n if (isCustom) {\n this.customValueSubject.next(candidate);\n }\n else {\n this.valueSubject.next(candidate);\n }\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n this._previousDataItem = this.dataItem;\n }\n /**\n * @hidden\n */\n selectClick() {\n if (!this.touchEnabled) {\n this.searchbar.focus();\n }\n if (!this.isOpen) {\n this.restoreItemFocus();\n }\n this.togglePopup(!this.isOpen);\n }\n get listContainerClasses() {\n return ['k-list-container', 'k-reset'].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n get focusedItemText() {\n const focused = this.selectionService.focused;\n if (!isPresent(focused) || focused === -1) {\n return null;\n }\n const itemText = getter$1(this.dataService.itemAt(focused), this.textField);\n return !isPresent(itemText) ? \"\" : itemText.toString();\n }\n /**\n * Focuses the first match when there's text in the input field, but no focused item.\n */\n restoreItemFocus() {\n const hasFocus = isPresent(this.selectionService.focused) && this.selectionService.focused > -1;\n if (!hasFocus && this.text && this.dataService.itemsCount) {\n if (this.filterable) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else {\n this.search(this.text);\n }\n }\n }\n useSuggestion() {\n if (!(this.suggest && isPresent(this.searchbar.value))) {\n return false;\n }\n const focusedDataItem = this.dataService.itemAt(this.selectionService.focused);\n const focusedItemText = getter$1(focusedDataItem, this.textField);\n if (!isPresent(focusedItemText)) {\n return false;\n }\n return this.searchbar.value.toLowerCase() === focusedItemText.toLowerCase();\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n anchorAlign: anchorPosition,\n popupAlign: popupPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.popupHeight;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = '';\n this.filterChange.emit(this.filterText);\n }\n setMessages() {\n this.zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this.zone.runOutsideAngular(() => \n // Roll up ComboBox on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n const isInDropDown = inDropDown(this.hostElement, target, this.popupRef);\n if (this.isFocused && !isInDropDown) {\n // Close popup and mobile keyboard if searchbar is focused\n this.zone.run(() => this.blur());\n }\n else if (this.isOpen && !isInDropDown) {\n // Close popup if the popup is opened via the select click\n this.zone.run(() => this.togglePopup(false));\n }\n }));\n }\n attachSelectClickHandler() {\n const selectElement = this.select.nativeElement;\n const event = pointers ? 'pointerdown' : 'click';\n this.selectClickDisposeHandler = this.renderer.listen(selectElement, event, this.selectClick.bind(this));\n }\n};\nComboBoxComponent.ɵfac = function ComboBoxComponent_Factory(t) { return new (t || ComboBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nComboBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ComboBoxComponent, selectors: [[\"kendo-combobox\"]], contentQueries: function ComboBoxComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n } }, viewQuery: function ComboBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(SearchBarComponent, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c20, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.select = _t.first);\n } }, hostVars: 7, hostBindings: function ComboBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-combobox\", ctx.widgetClasses)(\"k-combobox-clearable\", ctx.clearable);\n } }, inputs: { focusableId: \"focusableId\", allowCustom: \"allowCustom\", valueNormalizer: \"valueNormalizer\", placeholder: \"placeholder\", listHeight: \"listHeight\", suggest: \"suggest\", clearButton: \"clearButton\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", filterable: \"filterable\", data: \"data\", value: \"value\", valuePrimitive: \"valuePrimitive\", popupSettings: \"popupSettings\", itemDisabled: \"itemDisabled\", tabIndex: \"tabIndex\", virtual: \"virtual\", loading: \"loading\", textField: \"textField\", valueField: \"valueField\", iconClass: \"iconClass\" }, outputs: { valueChange: \"valueChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoComboBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 21, consts: function () { let i18n_21; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.combobox.noDataText\n */\n const MSG_EXTERNAL_7708502966028483300$$DIST_FESM2015_INDEX_JS_22 = goog.getMsg(\"NO DATA FOUND\");\n i18n_21 = MSG_EXTERNAL_7708502966028483300$$DIST_FESM2015_INDEX_JS_22;\n }\n else {\n i18n_21 = $localize `:kendo.combobox.noDataText|The text displayed in the popup when there are no items␟2b6e00c74a6d9c98c03a6274d0224e9bd457ff89␟7708502966028483300:NO DATA FOUND`;\n } let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.combobox.clearTitle\n */\n const MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_24 = goog.getMsg(\"clear\");\n i18n_23 = MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_24;\n }\n else {\n i18n_23 = $localize `:kendo.combobox.clearTitle|The title of the clear button␟069e8fae80677e3e785861123bef446b3ff41ab4␟2025597431468961462:clear`;\n } return [[\"kendoComboBoxLocalizedMessages\", \"\", \"noDataText\", i18n_21, \"clearTitle\", i18n_23], [\"unselectable\", \"on\", 1, \"k-dropdown-wrap\", 3, \"ngClass\"], [\"wrapper\", \"\"], [3, \"role\", \"id\", \"listId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"aria-hidden\", \"true\", 3, \"visibility\", \"kendoEventsOutsideAngular\", \"click\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", \"unselectable\", \"on\", 1, \"k-select\", 3, \"kendoEventsOutsideAngular\"], [\"select\", \"\"], [1, \"k-icon\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [3, \"ngIf\"], [\"container\", \"\"], [\"aria-hidden\", \"true\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"kendoEventsOutsideAngular\", \"click\"], [4, \"ngIf\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function ComboBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2)(3, \"kendo-searchbar\", 3, 4);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function ComboBoxComponent_Template_kendo_searchbar_onNavigate_3_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function ComboBoxComponent_Template_kendo_searchbar_valueChange_3_listener($event) { return ctx.searchBarChange($event); })(\"onBlur\", function ComboBoxComponent_Template_kendo_searchbar_onBlur_3_listener() { return ctx.handleBlur(); })(\"onFocus\", function ComboBoxComponent_Template_kendo_searchbar_onFocus_3_listener() { return ctx.handleFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, ComboBoxComponent_span_5_Template, 1, 6, \"span\", 5);\n ɵngcc0.ɵɵelementStart(6, \"span\", 6, 7);\n ɵngcc0.ɵɵelement(8, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, ComboBoxComponent_ng_template_9_Template, 5, 14, \"ng-template\", null, 9, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, ComboBoxComponent_ng_template_11_Template, 1, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementContainer(12, null, 11);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(17, _c26, ctx.disabled));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"role\", \"combobox\")(\"id\", ctx.focusableId)(\"listId\", ctx.listBoxId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"suggestedText\", ctx.getSuggestion())(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.clearButton && !ctx.loading && !ctx.disabled && !ctx.readonly && (ctx.text == null ? null : ctx.text.length));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(19, _c25, ctx.preventEventDefault));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, SearchBarComponent, ɵngcc3.NgIf, ɵngcc2.EventsOutsideAngularDirective, TemplateContextDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"allowCustom\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ComboBoxComponent.prototype, \"valuePrimitive\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ComboBoxComponent.prototype, \"valueNormalizer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ComboBoxComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"suggest\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], ComboBoxComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ComboBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ComboBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"virtual\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], ComboBoxComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], ComboBoxComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], ComboBoxComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], ComboBoxComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], ComboBoxComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], ComboBoxComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], ComboBoxComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ComboBoxComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild(SearchBarComponent, { static: true }),\n __metadata(\"design:type\", SearchBarComponent)\n], ComboBoxComponent.prototype, \"searchbar\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], ComboBoxComponent.prototype, \"optionsList\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ComboBoxComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('select', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ComboBoxComponent.prototype, \"select\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-combobox'),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('class.k-combobox-clearable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ComboBoxComponent.prototype, \"clearable\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ComboBoxComponent.prototype, \"dir\", null);\nComboBoxComponent = ComboBoxComponent_1 = __decorate([ __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n DataService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n ElementRef, Boolean])\n], ComboBoxComponent);\n\n/**\n * Renders the selected value of the dropdown. To define the header template, nest an `` tag\n * with the `kendoValueTemplate` directive inside the component tag.\n *\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `ValueTemplate` directive can only be used with the DropDownList and DropDownTree components.\n *\n * - [Using `ValueTemplate` with the DropDownList]({% slug templates_ddl %}#toc-value-template)\n * - [Using `ValueTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-value-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet ValueTemplateDirective = class ValueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nValueTemplateDirective.ɵfac = function ValueTemplateDirective_Factory(t) { return new (t || ValueTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nValueTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueTemplateDirective, selectors: [[\"\", \"kendoDropDownListValueTemplate\", \"\"], [\"\", \"kendoDropDownTreeValueTemplate\", \"\"]] });\nValueTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ValueTemplateDirective);\n\n/* tslint:disable:member-ordering */\nvar DropDownListComponent_1;\n/**\n * @hidden\n */\nconst DROPDOWNLIST_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownListComponent)\n};\n/**\n * Represents the [Kendo UI DropDownList component for Angular]({% slug overview_ddl %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet DropDownListComponent = DropDownListComponent_1 = class DropDownListComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, hostElement, cdr, touchEnabled$$1) {\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this._zone = _zone;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled$$1;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_ddl %}) functionality of the DropDownList.\n */\n this.filterable = false;\n /**\n * Enables a case-insensitive search. When filtration is disabled, use this option.\n */\n this.ignoreCase = true;\n /**\n * Sets the delay before an item search is performed. When filtration is disabled, use this option.\n */\n this.delay = 500;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires each time the value is changed ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field\n * ([see example]({% slug overview_ddl %}#toc-events)).\n * You can filter the source based on the passed filtration value.\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the item selection is changed\n * ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownList.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownList gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this.groupIndices = [];\n this.listBoxId = guid$1();\n this.optionPrefix = guid$1();\n this.filterText = \"\";\n this._isFocused = false;\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n this.word = \"\";\n this.last = \"\";\n this.filterFocused = new EventEmitter();\n this.filterBlurred = new EventEmitter();\n this.wrapperFocused = new EventEmitter();\n this.wrapperBlurred = new EventEmitter();\n this.selectionSubscription = new Subscription();\n this._open = false;\n this._popupSettings = { animate: true };\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n }\n get width() {\n const wrapperWidth = isDocumentAvailable() ? this.wrapper.nativeElement.offsetWidth : 0;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get widgetTabIndex() {\n if (this.disabled) {\n return undefined;\n }\n const providedTabIndex = Number(this.tabIndex);\n const defaultTabIndex = 0;\n return !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get ariaExpanded() {\n return this.isOpen;\n }\n get ariaOwns() {\n if (!this.isOpen) {\n return;\n }\n return this.listBoxId;\n }\n get ariaActivedescendant() {\n if (!isPresent(this.dataItem)) {\n return;\n }\n return this.optionPrefix + \"-\" + getter$1(this.dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.noDataText;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the DropDownList.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the DropDownList.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(newValue) {\n if (!isPresent(newValue)) {\n this._previousDataItem = undefined;\n }\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownList.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_ddl %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_ddl %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddl %}#toc-primitive-values-from-object-fields)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n blurComponent() {\n this.wrapperBlurred.emit();\n }\n /**\n * @hidden\n */\n blurFilterInput() {\n this.filterBlurred.emit();\n }\n /**\n * @hidden\n */\n focusComponent() {\n this.wrapperFocused.emit();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n keydown(event) {\n const firstIndex = isPresent(this.defaultItem) ? -1 : 0;\n let focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(firstIndex) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n const isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;\n const isFilterFocused = this.filterable && this.isFocused && this.isOpen;\n if (isFilterFocused && isHomeEnd) {\n return;\n }\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);\n if (!hasSelected || focusedItemNotSelected) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft) {\n offset = 1;\n }\n }\n const eventData = event;\n const action = this.navigationService.process({\n current: focused + offset,\n max: this.dataService.itemsCount - 1,\n min: this.defaultItem ? -1 : 0,\n originalEvent: eventData\n });\n const leftRightKeys = (action === NavigationAction.Left) || (action === NavigationAction.Right);\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n !(leftRightKeys && this.filterable) &&\n action !== NavigationAction.Enter //enter when popup is opened is handled before `handleEnter`\n ) {\n eventData.preventDefault();\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n if (this.disabled || this.readonly || this.filterable) {\n return;\n }\n this.onKeyPress(event);\n }\n /**\n * @hidden\n */\n click(event) {\n event.preventDefault();\n this.focus();\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get dir() {\n return this.direction;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-state-focused');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n this.localizationChangesSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.setMessages();\n });\n this.setMessages();\n this.assignAriaDescribedBy();\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n const value = this.value;\n return !(value === 0 || value === false || value || this.defaultItem);\n }\n /**\n * @hidden\n */\n onFilterFocus() {\n this.filterFocused.emit();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n clearTimeout(this.messagesTimeout);\n if (this.localizationChangesSubscription) {\n this.localizationChangesSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('defaultItem', changes, false)) {\n this.disabledItemsService.defaultItem = this.defaultItem;\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive', 'defaultItem', 'itemDisabled'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the DropDownList based on a provided index.\n * If there is a default item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = isPresent(this.defaultItem) ? -1 : 0;\n const isInRange = minIndex <= index && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the DropDownList.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownList.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddl %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n if (!open && this.filterable && this.isFocused) {\n this.focus();\n }\n this._toggle(open);\n }\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the DropDownList.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get isDisabledDefaultItem() {\n return this.disabledItemsService.isItemDisabled(this.defaultItem);\n }\n /**\n * @hidden\n */\n getText() {\n return this.text;\n }\n /**\n * @hidden\n */\n getDefaultItemText() {\n return getter$1(this.defaultItem, this.textField);\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n if (!this.filterable) {\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter$1(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index);\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = clear ? this.firstFocusableIndex(0) : index;\n }\n onSelectionChange({ dataItem }) {\n this.updateState({ dataItem });\n this.selectionChange.emit(dataItem);\n // reassigning the value label ID as aria-deascibedby forces firefox/nvda, forefox/jaws to read\n // the new value when the popup is closed and the value is changed with the arrow keys (up/down)\n this.assignAriaDescribedBy();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n // Item selection when the popup is open.\n this.selectionSubscription.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), map(this.itemFromEvent.bind(this)))\n .subscribe(this.onSelectionChange.bind(this)));\n // Item selection when the popup is closed | clicked | enter, and so on.\n this.selectionSubscription.add(merge(this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)), this.selectionService.onChange).pipe(map(this.itemFromEvent.bind(this)), tap(_ => this.togglePopup(false)))\n .subscribe(({ dataItem, value: newValue, newSelection }) => {\n if (newSelection) {\n this.onSelectionChange({ dataItem });\n }\n const shouldUsePrevious = !isPresent(dataItem) && this._previousDataItem;\n const shouldUseNewValue = newValue !== getter$1(this.value, this.valueField);\n if (shouldUsePrevious) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else if (shouldUseNewValue) {\n this.value = this.valuePrimitive ? newValue : dataItem;\n this._previousDataItem = dataItem;\n this.emitChange(this.value);\n }\n this.clearFilter();\n }));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down, this.navigationService.left.pipe(skipWhile(() => this.filterable)), this.navigationService.right.pipe(skipWhile(() => this.filterable)), this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => !isNaN(event.index)))\n .subscribe((event) => this.selectionService.select(event.index));\n this.openSubscription = this.navigationService.open.subscribe(() => this.togglePopup(true));\n this.closeSubscription = this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n });\n this.enterSubscription = this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc\n .subscribe(this.handleEscape.bind(this));\n this.filterBlurredSubscription = this.filterBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.wrapperFocused))))\n .subscribe(() => {\n this.wrapperBlurred.emit();\n });\n this._zone.runOutsideAngular(() => {\n this.componentBlurredSubscription =\n merge(this.wrapperBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.filterFocused)))), this.navigationService.tab).pipe(tap(event => event instanceof NavigationEvent && this.focus()), filter(() => this.isFocused))\n .subscribe(() => this.componentBlur());\n });\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownList on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.filterFocused) {\n // Close popup if filter is focused\n this.togglePopup(false);\n }\n this.blur();\n });\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.navigationSubscription.unsubscribe();\n this.openSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.componentBlurredSubscription.unsubscribe();\n this.filterBlurredSubscription.unsubscribe();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n }\n itemFromEvent(event) {\n const index = event.indices[0];\n let dataItem = this.dataService.itemAt(index);\n dataItem = isPresent(dataItem) ? dataItem : this.currentOrDefault(index);\n const value = getter$1(dataItem, this.valueField);\n const newSelection = event.newSelection;\n return {\n dataItem,\n index,\n newSelection,\n value\n };\n }\n currentOrDefault(selectedIndex) {\n const defaultItemIndex = -1;\n if (isPresent(this.dataItem) && selectedIndex !== defaultItemIndex) {\n return this.dataItem;\n }\n else {\n return this.defaultItem;\n }\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n handleEnter() {\n if (this.isOpen) {\n this.selectionService.change(this.selectionService.focused);\n this.focus();\n }\n else {\n this.togglePopup(true);\n }\n }\n handleEscape() {\n if (isPresent(this.selectionService.selected[0])) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n else {\n this.togglePopup(false);\n this.clearFilter();\n }\n this.focus();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = \"\";\n this.cdr.markForCheck();\n this.filterChange.emit(this.filterText);\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.defaultItem && this.valueField && typeof this.defaultItem !== \"object\") {\n throw new Error(DropDownListMessages.defaultItem);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownListMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownListMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(DropDownListMessages.textAndValue);\n }\n }\n componentBlur() {\n this.isFocused = false;\n const selectionPresent = isPresent(this.selectionService.selected[0]);\n const valueHasChanged = selectionPresent && getter$1(this.value, this.valueField) !== getter$1(this.dataService.itemAt(this.selectionService.selected[0]), this.valueField);\n if (valueHasChanged ||\n hasObservers(this.close) ||\n hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n isUntouched(this.hostElement.nativeElement)) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n this.togglePopup(false);\n this.clearFilter();\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n const tagName = event.target.tagName.toLowerCase();\n if (tagName !== \"input\") {\n event.preventDefault();\n }\n }\n onKeyPress(event) {\n if (event.which === 0 || event.keyCode === Keys.Enter) {\n return;\n }\n let character = String.fromCharCode(event.charCode || event.keyCode);\n if (this.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === \" \") {\n event.preventDefault();\n }\n this.word += character;\n this.last = character;\n this.search();\n }\n search() {\n clearTimeout(this.typingTimeout);\n if (!this.filterable) {\n this.typingTimeout = setTimeout(() => { this.word = \"\"; }, this.delay);\n this.selectNext();\n }\n }\n selectNext() {\n let data = this.dataService\n .filter((item) => isPresent(item) && !item.header && !this.disabledItemsService.isItemDisabled(item))\n .map((item) => {\n if (this.dataService.grouped) {\n return { item: item.value, itemIndex: item.offsetIndex };\n }\n return { item: item, itemIndex: this.dataService.indexOf(item) };\n });\n const isInLoop = sameCharsOnly(this.word, this.last);\n let dataLength = data.length;\n let hasSelected = !isNaN(this.selectionService.selected[0]);\n let startIndex = !hasSelected ? 0 : this.selectionService.selected[0];\n let text, index, defaultItem;\n if (this.defaultItem && !this.disabledItemsService.isItemDisabled(this.defaultItem)) {\n defaultItem = { item: this.defaultItem, itemIndex: -1 };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop && hasSelected ? 1 : 0;\n data = shuffleData(data, startIndex, defaultItem);\n index = 0;\n for (; index < dataLength; index++) {\n text = getter$1(data[index].item, this.textField);\n const loopMatch = Boolean(isInLoop && matchText(text, this.last, this.ignoreCase));\n const nextMatch = Boolean(matchText(text, this.word, this.ignoreCase));\n if (loopMatch || nextMatch) {\n index = data[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n this.navigate(index);\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n navigate(index) {\n this.selectionService.select(index);\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const prop = dataItem => getter$1(dataItem, valueField);\n let comparer;\n if (this.dataService.grouped) {\n comparer = (element) => {\n return prop(element.value) === prop(value);\n };\n }\n else {\n comparer = (element) => {\n return prop(element) === prop(value);\n };\n }\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n setState() {\n const value = this.value;\n const valueField = this.valueField;\n const textField = this.textField;\n const primitive = this.valuePrimitive;\n if (this.defaultItem) {\n const defaultValue = getter$1(this.defaultItem, valueField);\n const currentValue = getter$1(value, valueField);\n if (!isPresent(value) || (currentValue === defaultValue)) {\n this.updateState({ dataItem: this.defaultItem, confirm: true });\n this.resetSelection(-1);\n if (this.filterable && this.filterText && this.dataService.itemsCount) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n return;\n }\n }\n const resolved = this.findDataItem({ valueField, value });\n // The data and value are of same shape,\n // for example, value: 'foo', data: ['foo', 'bar']\n // or value: { value: 1, text: 'foo' }, data: [{ value: 1, text: 'foo' }].\n const ofSameType = !(primitive && textField);\n if (resolved.dataItem) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && ofSameType) {\n this.updateState({ dataItem: value });\n this.resetSelection();\n }\n else if (this._previousDataItem) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection();\n }\n }\n /**\n * @hidden\n */\n handleFilter(event) {\n this.filterChange.emit(event.target.value);\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n setMessages() {\n this._zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n const trimmed = currentValue.replace(this.valueLabelId, '').trim();\n // reset the value label ID to force readers to read the new value\n this.valueLabelId = guid$1();\n // add to the current value - don't replace it\n const newValue = `${this.valueLabelId} ${trimmed}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n};\nDropDownListComponent.ɵfac = function DropDownListComponent_Factory(t) { return new (t || DropDownListComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nDropDownListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DropDownListComponent, selectors: [[\"kendo-dropdownlist\"]], contentQueries: function DropDownListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ValueTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.valueTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n } }, viewQuery: function DropDownListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n } }, hostVars: 5, hostBindings: function DropDownListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-dropdown\", ctx.widgetClasses);\n } }, inputs: { focusableId: \"focusableId\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", filterable: \"filterable\", ignoreCase: \"ignoreCase\", delay: \"delay\", tabindex: \"tabindex\", data: \"data\", value: \"value\", popupSettings: \"popupSettings\", itemDisabled: \"itemDisabled\", virtual: \"virtual\", valuePrimitive: \"valuePrimitive\", tabIndex: \"tabIndex\", iconClass: \"iconClass\", loading: \"loading\", textField: \"textField\", valueField: \"valueField\", defaultItem: \"defaultItem\" }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", selectionChange: \"selectionChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoDropDownList\"], features: [ɵngcc0.ɵɵProvidersFeature([\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 23, consts: function () { let i18n_27; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.dropdownlist.noDataText\n */\n const MSG_EXTERNAL_8289552890585138350$$DIST_FESM2015_INDEX_JS_28 = goog.getMsg(\"NO DATA FOUND\");\n i18n_27 = MSG_EXTERNAL_8289552890585138350$$DIST_FESM2015_INDEX_JS_28;\n }\n else {\n i18n_27 = $localize `:kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items␟4fc2f70c9c8cf7b18affd6b938105996d6ac3306␟8289552890585138350:NO DATA FOUND`;\n } return [[\"kendoDropDownListLocalizedMessages\", \"\", \"noDataText\", i18n_27], [\"unselectable\", \"on\", \"role\", \"listbox\", \"aria-haspopup\", \"listbox\", 3, \"id\", \"ngClass\", \"kendoEventsOutsideAngular\", \"scope\", \"keydown\", \"keypress\", \"click\"], [\"wrapper\", \"\"], [\"unselectable\", \"on\", 1, \"k-input\", 3, \"id\"], [4, \"ngIf\"], [3, \"ngIf\"], [\"unselectable\", \"on\", 1, \"k-select\"], [\"unselectable\", \"on\", 1, \"k-icon\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"templateContext\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [1, \"k-list-filter\", 3, \"click\"], [\"tabindex\", \"-1\", 1, \"k-textbox\", 3, \"filterInput\", \"dir\", \"ngModel\", \"ngModelChange\", \"keydown\", \"input\", \"focus\", \"blur\"], [\"unselectable\", \"on\", 1, \"k-icon\", \"k-i-search\"], [\"kendoDropDownsSelectable\", \"\", 1, \"k-list-optionlabel\", 3, \"ngClass\", \"index\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function DropDownListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵlistener(\"keydown\", function DropDownListComponent_Template_span_keydown_1_listener($event) { return ctx.keydown($event); })(\"keypress\", function DropDownListComponent_Template_span_keypress_1_listener($event) { return ctx.keypress($event); })(\"click\", function DropDownListComponent_Template_span_click_1_listener($event) { return ctx.click($event); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, DropDownListComponent_4_Template, 1, 4, null, 4);\n ɵngcc0.ɵɵtemplate(5, DropDownListComponent_ng_template_5_Template, 1, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"span\", 6);\n ɵngcc0.ɵɵelement(7, \"span\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, DropDownListComponent_ng_template_8_Template, 8, 17, \"ng-template\", null, 8, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, DropDownListComponent_ng_template_10_Template, 1, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementContainer(11, null, 9);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"ngClass\", ɵngcc0.ɵɵpureFunction1(18, _c29, ctx.disabled))(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(20, _c1, ctx.focusComponent, ctx.blurComponent))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"readonly\", ctx.readonly)(\"tabindex\", ctx.widgetTabIndex)(\"aria-disabled\", ctx.disabled)(\"aria-readonly\", ctx.readonly)(\"aria-expanded\", ctx.ariaExpanded)(\"aria-owns\", ctx.ariaOwns)(\"aria-activedescendant\", ctx.ariaActivedescendant)(\"aria-label\", ctx.noDataLabel);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.valueLabelId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, TemplateContextDirective, ɵngcc5.DefaultValueAccessor, FilterInputDirective, ɵngcc5.NgControlStatus, ɵngcc5.NgModel, SelectableDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownListComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropDownListComponent.prototype, \"defaultItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], DropDownListComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"virtual\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"ignoreCase\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownListComponent.prototype, \"delay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], DropDownListComponent.prototype, \"valuePrimitive\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownListComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DropDownListComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], DropDownListComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], DropDownListComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], DropDownListComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ContentChild(ValueTemplateDirective, { static: false }),\n __metadata(\"design:type\", ValueTemplateDirective)\n], DropDownListComponent.prototype, \"valueTemplate\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], DropDownListComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], DropDownListComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], DropDownListComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], DropDownListComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], DropDownListComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], DropDownListComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], DropDownListComponent.prototype, \"optionsList\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-dropdown'),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], DropDownListComponent.prototype, \"dir\", null);\nDropDownListComponent = DropDownListComponent_1 = __decorate([ __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n DataService,\n NgZone,\n Renderer2,\n ElementRef,\n ChangeDetectorRef, Boolean])\n], DropDownListComponent);\n\n/**\n * Renders the content of the custom list item in the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-customizing-the-item-content)).\n * The template context is set to the current component.\n * To get a reference to the current text that is typed by the\n * user, use the `let-customItem` directive.\n *\n * > The `CustomItemTemplate` directive can only be used with the MultiSelect component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * New Item: {{customItem}}\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n *\n */\nlet CustomItemTemplateDirective = class CustomItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nCustomItemTemplateDirective.ɵfac = function CustomItemTemplateDirective_Factory(t) { return new (t || CustomItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCustomItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CustomItemTemplateDirective, selectors: [[\"\", \"kendoMultiSelectCustomItemTemplate\", \"\"]] });\nCustomItemTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], CustomItemTemplateDirective);\n\n/**\n * Renders the selected tag value of the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-tag-template)).\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `TagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet TagTemplateDirective = class TagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTagTemplateDirective.ɵfac = function TagTemplateDirective_Factory(t) { return new (t || TagTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nTagTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TagTemplateDirective, selectors: [[\"\", \"kendoMultiSelectTagTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeTagTemplate\", \"\"]] });\nTagTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], TagTemplateDirective);\n\n/**\n * Renders the grouped tag values in the MultiSelect\n * ([see example]({% slug summarytagmode_multiselect %})).\n * The template context is set to the current component.\n * To get a reference to the current grouped\n * data items collection, use the `let-dataItems` directive.\n *\n * > The `GroupTagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItems.length}} item(s) selected\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet GroupTagTemplateDirective = class GroupTagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupTagTemplateDirective.ɵfac = function GroupTagTemplateDirective_Factory(t) { return new (t || GroupTagTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nGroupTagTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupTagTemplateDirective, selectors: [[\"\", \"kendoMultiSelectGroupTagTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeGroupTagTemplate\", \"\"]] });\nGroupTagTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupTagTemplateDirective);\n\n/**\n * Arguments for the `removeTag` event. The `removeTag` event fires when a tag is about\n * to the removed. If you cancel the event, the removal is prevented.\n */\nclass RemoveTagEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `remove` event.\n * @param dataItem - The data item or an array of data items that will be removed.\n */\n constructor(dataItem) {\n super();\n this.dataItem = dataItem;\n }\n}\n\n/**\n * @hidden\n */\nconst normalizeCheckboxesSettings = (settings) => {\n if (isObject(settings)) {\n const defaultSettings = { enabled: true, checkOnClick: true };\n return Object.assign({}, defaultSettings, settings);\n }\n return { enabled: Boolean(settings), checkOnClick: true };\n};\n\n/* tslint:disable:member-ordering */\nvar MultiSelectComponent_1;\nconst MULTISELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => MultiSelectComponent)\n};\n/**\n * Represents the [Kendo UI MultiSelect component for Angular]({% slug overview_multiselect %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet MultiSelectComponent = MultiSelectComponent_1 = class MultiSelectComponent {\n constructor(localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, hostElement, _zone, touchEnabled$$1) {\n this.localization = localization;\n this.popupService = popupService;\n this.dataService = dataService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.differs = differs;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this._zone = _zone;\n this.touchEnabled = touchEnabled$$1;\n this.listBoxId = guid$1();\n this.tagListId = guid$1();\n this.tagPrefix = \"tag-\" + guid$1();\n this.optionPrefix = \"option-\" + guid$1();\n this.focusedTagIndex = undefined;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * Determines whether to close the options list of the MultiSelect after the item selection is finished\n * ([see example]({% slug openstate_multiselect %}#toc-keeping-the-options-list-open-while-on-focus)).\n * @default true\n */\n this.autoClose = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_multiselect %}) functionality of the MultiSelect.\n */\n this.filterable = false;\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to an empty array and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags.\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Specifies whether the MultiSelect allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_multiselect %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback function which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n *\n * @param { Any } value - The custom value that is defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return {\n * value: Math.floor(Math.random() * (1000 - 100) + 1000), //generate unique valueField\n * text: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => {\n const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();\n const matchingValue = this.value.find(comparer);\n if (matchingValue) {\n return matchingValue;\n }\n const matchingItem = this.dataService.find(comparer);\n return matchingItem ? matchingItem : userInput;\n }));\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_multiselect %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the MultiSelect.\n */\n this.onFocus = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the MultiSelect gets blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time a tag is about to be removed.\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n this.widgetClasses = true;\n this.initialized = false;\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n this._placeholder = '';\n this._open = false;\n this._value = [];\n this._popupSettings = { animate: true };\n this._checkboxes = { enabled: false };\n this._isFocused = false;\n this.selectedDataItems = [];\n this.customValueSubject = new Subject();\n this.observableSubscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n this.data = [];\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n }\n /**\n * Focuses a specific item of the MultiSelect based on a provided index.\n * If there is a custom item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = this.allowCustom ? -1 : 0;\n const isInRange = minIndex <= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the MultiSelect.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * @hidden\n */\n onSearchBarFocus() {\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * Blurs the MultiSelect.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onSearchBarBlur() {\n if (!this.isFocused) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n hasObservers(this.close) ||\n isUntouched(this.hostElement.nativeElement)) {\n this._zone.run(() => {\n this.closePopup();\n if (!(this.isOpen && this.allowCustom)) {\n this.clearFilter();\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n if (!this.allowCustom) {\n this.clearFilter();\n }\n this.closePopup();\n }\n }\n /**\n * @hidden\n */\n wrapperMousedown(event) {\n const inputElement = this.searchbar.input.nativeElement;\n if (event.button === 0) {\n if (this.isFocused && this.isOpen && event.target === inputElement) {\n return;\n }\n if (!this.touchEnabled || (this.touchEnabled && event.target.tagName !== 'SPAN')) {\n this.searchbar.focus();\n }\n this.togglePopup(!this.isOpen);\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the MultiSelect.\n *\n * > The data has to be provided in an array-like list of items.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n //Use length instead of itemsCount because of grouping\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the MultiSelect. It can be either of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(values) {\n this._value = values ? values : [];\n if (!this.differ && this.value) {\n this.differ = this.differs.find(this.value).create();\n }\n this.valueChangeDetected = true;\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * The hint which is displayed when the component is empty.\n * When the values are selected, it disappears.\n */\n set placeholder(text) {\n this._placeholder = text || '';\n }\n get placeholder() {\n return this.selectedDataItems.length ? '' : this._placeholder;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_multiselect %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Specifies whether checkboxes will be rendered before each item in the popup list.\n */\n set checkboxes(settings) {\n this._checkboxes = normalizeCheckboxesSettings(settings);\n }\n get checkboxes() {\n return this._checkboxes;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_multiselect %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Configures the popup of the MultiSelect.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_multiselect %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n get dir() {\n return this.direction;\n }\n get disabledClass() {\n return this.disabled;\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get activeDescendant() {\n const focusedTagIndex = this.focusedTagIndex;\n const focusedListIndex = this.selectionService.focused;\n let prefix;\n let item;\n if (isPresent(focusedTagIndex) && !this.isOpen) {\n item = this.tags[focusedTagIndex];\n prefix = this.tagPrefix;\n }\n else if (isPresent(focusedListIndex) && focusedListIndex !== -1 && this.isOpen) {\n item = this.dataService.itemAt(focusedListIndex);\n prefix = this.optionPrefix;\n }\n else {\n return null;\n }\n return prefix + \"-\" + getter$1(item, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.noDataText;\n }\n }\n get clearTitle() {\n return this.localization.get('clearTitle');\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n */\n verifySettings() {\n if (!isDevMode() || this.value.length === 0) {\n return;\n }\n if (!isArray(this.value)) {\n throw new Error(MultiselectMessages.array);\n }\n if (this.valuePrimitive === true && isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.primitive);\n }\n if (this.valuePrimitive === false && !isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(MultiselectMessages.textAndValue);\n }\n }\n /**\n * @hidden\n */\n change(event) {\n const isCustomItem = (isPresent(event.added) || isPresent(event.removed)) && (event.added === -1 || event.removed === -1);\n if (isCustomItem) {\n this.addCustomValue(this.text);\n return; // The change is emited asynchronosly.\n }\n // Existing items.\n if (isPresent(event.added)) {\n const dataItem = this.dataService.itemAt(event.added);\n const newItem = (this.valuePrimitive && isPresent(dataItem) && isPresent(dataItem[this.valueField])) ? dataItem[this.valueField] : dataItem;\n this.value = [...this.value, newItem];\n }\n if (isPresent(event.removed)) {\n const dataItem = this.dataService.itemAt(event.removed);\n const filter$$1 = (item) => getter$1(item, this.valueField) !== getter$1(dataItem, this.valueField);\n this.value = this.value.filter(filter$$1);\n this.selectionService.focused = event.removed;\n this.cdr.detectChanges();\n }\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n setState(value) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const selection = selectedIndices(this.value, data, this.valueField);\n this.selectionService.resetSelection(selection);\n if (this.disabledItemsService.isIndexDisabled(this.selectionService.focused)) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n if (this.isOpen && this.selectionService.focused === undefined) {\n if (this.dataService.itemsCount > 0) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else if (this.allowCustom) {\n this.selectionService.focused = -1;\n }\n }\n if (this.valuePrimitive && !this.valueField) {\n this.selectedDataItems = value.slice();\n }\n if (isObjectArray(value) || this.valuePrimitive && this.valueField) {\n this.selectedDataItems = resolveAllValues(value, data, this.valueField);\n }\n if (this.selectedDataItems.length < value.length) {\n this.selectedDataItems = value\n .map(current => {\n const dataItem = this.selectedDataItems.find(item => getter$1(item, this.valueField) === getter$1(current, this.valueField));\n return isPresent(dataItem) ? dataItem : this.resolveDataItemFromTags(current);\n })\n .filter(dataItem => isPresent(dataItem));\n }\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.disabledIndices = this.disabledItemsMapper();\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilter(text) {\n this.text = text;\n if (text && !this.isOpen) {\n this.openPopup();\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else {\n this.searchTextAndFocus(text);\n }\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n /**\n * @hidden\n */\n clearFilter() {\n if (this.filterable && this.text) {\n this.filterChange.emit(\"\");\n }\n this.text = \"\";\n /* Clearing the value from the input as the setInputSize calculation will be incorrect otherwise.\n Calling cdr.detectChanges to clear the input value as a result of property binding\n causes JAWS to read outdated tag values in IE upon tag selection for some reason. */\n this.searchbar.input.nativeElement.value = \"\";\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;\n const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;\n const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || navigateInput && !selectValue) {\n return;\n }\n const eventData = event;\n const focused = isNaN(this.selectionService.focused) ? -1 : this.selectionService.focused;\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: this.allowCustom && this.text ? -1 : 0,\n open: this.isOpen,\n originalEvent: eventData\n });\n if (action !== NavigationAction.Undefined &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag }) {\n const eventArgs = new RemoveTagEvent(tag);\n if (this.disabled || this.readonly) {\n return;\n }\n this.focus();\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n if (tag instanceof Array) {\n this.removeGroupTag(tag);\n }\n else {\n this.removeSingleTag(tag);\n }\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.clearFilter();\n const selected = this.selectionService.selected;\n this.value = this.value.filter((_item, index) => this.disabledItemsService.isIndexDisabled(selected[index]));\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n addCustomValue(text) {\n this.customValueSubject.next(text);\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n ngDoCheck() {\n const valueChanges = this.differ && this.differ.diff(this.value);\n if (valueChanges && !this.valueChangeDetected) {\n this.setState(this.value);\n }\n this.valueChangeDetected = false;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n this.createCustomValueStream();\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.setMessages();\n });\n this.setMessages();\n this.setState(this.value);\n this.initialized = true;\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createCustomValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes)) {\n this.setState(this.value);\n }\n }\n ngAfterViewInit() {\n this.searchbar.setInputSize();\n }\n ngOnDestroy() {\n this._toggle(false);\n this.unsubscribeEvents();\n clearTimeout(this.messagesTimeout);\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselect %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the respective `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required for opening the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the MultiSelect.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.text = \"\";\n this.value = [];\n }\n // NG MODEL BINDINGS\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n onTagMapperChange() {\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.cdr.markForCheck();\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.hostElement.nativeElement, 'k-state-focused');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n const isOpen = () => this.isOpen;\n const isClosed = () => !this.isOpen;\n const isTagFocused = () => !this.isOpen && this.focusedTagIndex !== undefined;\n [\n this.selectionService.onChange.subscribe(this.handleItemChange.bind(this)),\n this.navigationService.esc.subscribe(this.closePopup.bind(this)),\n this.navigationService.enter.pipe(filter(isOpen)).subscribe(this.handleEnter.bind(this)),\n this.navigationService.open.subscribe(this.openPopup.bind(this)),\n this.navigationService.close.subscribe(this.handleClose.bind(this)),\n this.navigationService.up.pipe(filter(isOpen)).subscribe((event) => this.handleUp(event.index)),\n this.navigationService.home.pipe(filter(() => isClosed)).subscribe(this.handleHome.bind(this)),\n this.navigationService.end.pipe(filter(() => isClosed)).subscribe(this.handleEnd.bind(this)),\n this.navigationService.backspace.pipe(filter(isTagFocused)).subscribe(this.handleBackspace.bind(this)),\n this.navigationService.delete.pipe(filter(isTagFocused)).subscribe(this.handleDelete.bind(this)),\n this.navigationService.left.subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)),\n this.navigationService.right.subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)),\n this.navigationService.down.subscribe((event) => this.handleDownKey(event.index))\n ].forEach(s => this.observableSubscriptions.add(s));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up MultiSelect on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if ((this.isFocused || this.isOpen) && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => {\n this.blur();\n if (this.isOpen) {\n this.togglePopup(false);\n }\n });\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.observableSubscriptions.unsubscribe();\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n removeGroupTag(dataItems) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const dataItemValues = new Set(dataItems.map(item => getter$1(item, this.valueField)));\n this.value = this.value.filter(value => {\n const index = selectedIndices([value], data, this.valueField)[0];\n const isDataItemDisabled = this.disabledItemsService.isIndexDisabled(index);\n return !dataItemValues.has(getter$1(value, this.valueField)) || isDataItemDisabled;\n });\n this.emitValueChange();\n }\n removeSingleTag(dataItem) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const index = selectedIndices([dataItem], data, this.valueField)[0];\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return;\n }\n if (isNumber(index)) {\n this.selectionService.unselect(index);\n this.selectionService.focused = index;\n this.togglePopup(false);\n }\n else { // the deleted item is not present in the source\n const filter$$1 = item => getter$1(item, this.valueField) !== getter$1(dataItem, this.valueField);\n this.value = this.value.filter(filter$$1);\n this.emitValueChange();\n }\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n const { selected } = this.selectionService;\n return new Set(this.selectedDataItems.reduce((indices, _item, index) => {\n if (this.disabledItemsService.isIndexDisabled(selected[index])) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n createCustomValueStream() {\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n this.customValueSubscription = this.customValueSubject.pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), this.valueNormalizer, catchError(() => {\n this.loading = false;\n this.disabled = false;\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n this.createCustomValueStream();\n return of(null);\n }))\n .subscribe((normalizedValue) => {\n this.loading = false;\n this.disabled = false;\n if (isPresent(normalizedValue)) { // if valueNormalizer returns `null` or `undefined` custom value is discarded\n const newValue = this.valuePrimitive ? getter$1(normalizedValue, this.valueField) : normalizedValue;\n const itemIndex = this.dataService.indexOf(newValue);\n const customItem = itemIndex === -1;\n if (this.value.indexOf(newValue) === -1) {\n this.tags = this.tagMapper([...this.selectedDataItems, normalizedValue]);\n if (!customItem) {\n this.selectionService.add(itemIndex);\n }\n else {\n this.value = [...this.value, newValue];\n }\n }\n else {\n if (!customItem && this.selectionService.isSelected(itemIndex)) {\n this.selectionService.unselect(itemIndex);\n this.selectionService.focused = itemIndex;\n }\n else {\n this.value = this.value.filter(item => getter$1(item, this.valueField) !== newValue);\n }\n }\n this.emitValueChange();\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n });\n }\n handleItemChange(event) {\n this.change(event);\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleEnter(event) {\n const service = this.selectionService;\n const focusedIndex = this.selectionService.focused;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focusedIndex === -1) {\n if (this.allowCustom && this.text) {\n this.addCustomValue(this.text);\n }\n return; // Clear filter & close are done at customValueSubscription due to race conditions.\n }\n if (service.isSelected(focusedIndex)) {\n service.unselect(focusedIndex);\n service.focused = focusedIndex;\n }\n else {\n service.add(focusedIndex);\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleClose() {\n this.closePopup();\n this.searchbar.focus();\n }\n handleEnd() {\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome() {\n this.focusedTagIndex = 0;\n }\n handleUp(index) {\n this.selectionService.focused = index;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n this.handleRemoveTag({ tag: this.tags[this.tags.length - 1] });\n this.searchbar.focus();\n }\n }\n handleDelete() {\n this.handleRemoveTag({ tag: this.tags[this.focusedTagIndex] });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n handleLeftKey() {\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleDownKey(index) {\n if (this.isOpen) {\n this.selectionService.focused = index || this.firstFocusableIndex(0);\n }\n else {\n this.openPopup();\n }\n }\n handleRightKey() {\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n }\n findIndex(text, startsFrom = 0) {\n let itemText;\n text = text.toLowerCase();\n let index = this.dataService.findIndex(item => {\n if (this.dataService.grouped) {\n itemText = getter$1(item.value, this.textField);\n }\n else {\n itemText = getter$1(item, this.textField);\n }\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return text && itemText.startsWith(text);\n }, startsFrom);\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index + 1 > this.dataService.itemsCount) ? -1 : this.findIndex(text, index + 1);\n }\n else {\n return index;\n }\n }\n searchTextAndFocus(text) {\n const index = this.findIndex(text);\n this.selectionService.focused = index;\n }\n closePopup() {\n this.togglePopup(false);\n this.focusedTagIndex = undefined;\n }\n openPopup() {\n this.togglePopup(true);\n this.focusedTagIndex = undefined;\n }\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.togglePopup(false);\n });\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n }\n resolveDataItemFromTags(value) {\n if (!(this.tags && this.tags.length && isPresent(value))) {\n return undefined;\n }\n // Flattening the tags array in case of a summary tag occurrence.\n const tags = this.tags.reduce((acc, tag) => {\n const items = isArray(tag) ? tag : [tag];\n acc.push(...items);\n return acc;\n }, []);\n return tags.find(tag => getter$1(tag, this.valueField) === getter$1(value, this.valueField));\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n const nextIndex = index + 1;\n return (nextIndex < maxIndex) ? this.firstFocusableIndex(nextIndex) : undefined;\n }\n else {\n return index;\n }\n }\n nextTick(f) {\n this._zone.runOutsideAngular(() => {\n // Use `setTimeout` instead of a resolved promise\n // because the latter does not wait long enough.\n setTimeout(() => this._zone.run(f));\n });\n }\n setMessages() {\n this._zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\n }\n};\nMultiSelectComponent.ɵfac = function MultiSelectComponent_Factory(t) { return new (t || MultiSelectComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nMultiSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiSelectComponent, selectors: [[\"kendo-multiselect\"]], contentQueries: function MultiSelectComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CustomItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TagTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTagTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.customItemTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n } }, viewQuery: function MultiSelectComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(SearchBarComponent, 7);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n } }, hostVars: 7, hostBindings: function MultiSelectComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-multiselect\", ctx.widgetClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", autoClose: \"autoClose\", tabindex: \"tabindex\", disabled: \"disabled\", readonly: \"readonly\", filterable: \"filterable\", listHeight: \"listHeight\", clearButton: \"clearButton\", tagMapper: \"tagMapper\", allowCustom: \"allowCustom\", valueNormalizer: \"valueNormalizer\", data: \"data\", value: \"value\", tabIndex: \"tabIndex\", placeholder: \"placeholder\", itemDisabled: \"itemDisabled\", checkboxes: \"checkboxes\", virtual: \"virtual\", popupSettings: \"popupSettings\", valuePrimitive: \"valuePrimitive\", loading: \"loading\", valueField: \"valueField\", textField: \"textField\" }, outputs: { filterChange: \"filterChange\", valueChange: \"valueChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\", removeTag: \"removeTag\" }, exportAs: [\"kendoMultiSelect\"], features: [ɵngcc0.ɵɵProvidersFeature([\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 24, consts: function () { let i18n_30; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multiselect.noDataText\n */\n const MSG_EXTERNAL_1450213984397806503$$DIST_FESM2015_INDEX_JS_31 = goog.getMsg(\"NO DATA FOUND\");\n i18n_30 = MSG_EXTERNAL_1450213984397806503$$DIST_FESM2015_INDEX_JS_31;\n }\n else {\n i18n_30 = $localize `:kendo.multiselect.noDataText|The text displayed in the popup when there are no items␟3cc1323f79a5fe012960578e513f8a35b2af1e96␟1450213984397806503:NO DATA FOUND`;\n } let i18n_32; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.combobox.clearTitle\n */\n const MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_33 = goog.getMsg(\"clear\");\n i18n_32 = MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_33;\n }\n else {\n i18n_32 = $localize `:kendo.combobox.clearTitle|The title of the clear button␟069e8fae80677e3e785861123bef446b3ff41ab4␟2025597431468961462:clear`;\n } return [[\"kendoMultiSelectLocalizedMessages\", \"\", \"noDataText\", i18n_30, \"clearTitle\", i18n_32], [1, \"k-multiselect-wrap\", \"k-floatwrap\", 3, \"mousedown\"], [\"wrapper\", \"\"], [3, \"id\", \"tags\", \"textField\", \"valueField\", \"focused\", \"disabled\", \"template\", \"groupTemplate\", \"tagPrefix\", \"disabledIndices\", \"removeTag\"], [3, \"id\", \"role\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"visibility\", \"mousedown\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [3, \"ngIf\"], [\"container\", \"\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"mousedown\"], [1, \"k-icon\", \"k-i-loading\"], [4, \"ngIf\"], [\"class\", \"k-list\", 4, \"ngIf\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"multipleSelection\", \"virtual\", \"checkboxes\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-list\"], [\"kendoDropDownsSelectable\", \"\", 1, \"k-item\", \"k-custom-item\", 3, \"multipleSelection\", \"index\"], [4, \"ngIf\", \"ngIfElse\"], [\"default_custom_item_template\", \"\"], [1, \"k-icon\", \"k-i-plus\", 2, \"float\", \"right\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function MultiSelectComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵlistener(\"mousedown\", function MultiSelectComponent_Template_div_mousedown_1_listener($event) { return ctx.wrapperMousedown($event); });\n ɵngcc0.ɵɵelementStart(3, \"kendo-taglist\", 3);\n ɵngcc0.ɵɵlistener(\"removeTag\", function MultiSelectComponent_Template_kendo_taglist_removeTag_3_listener($event) { return ctx.handleRemoveTag($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"kendo-searchbar\", 4, 5);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function MultiSelectComponent_Template_kendo_searchbar_onNavigate_4_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function MultiSelectComponent_Template_kendo_searchbar_valueChange_4_listener($event) { return ctx.handleFilter($event); })(\"onBlur\", function MultiSelectComponent_Template_kendo_searchbar_onBlur_4_listener() { return ctx.onSearchBarBlur(); })(\"onFocus\", function MultiSelectComponent_Template_kendo_searchbar_onFocus_4_listener() { return ctx.onSearchBarFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, MultiSelectComponent_span_6_Template, 1, 3, \"span\", 6);\n ɵngcc0.ɵɵtemplate(7, MultiSelectComponent_span_7_Template, 1, 0, \"span\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, MultiSelectComponent_ng_template_8_Template, 6, 17, \"ng-template\", null, 8, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(10, MultiSelectComponent_ng_template_10_Template, 1, 0, \"ng-template\", 9);\n ɵngcc0.ɵɵelementContainer(11, null, 10);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", ctx.tagListId)(\"tags\", ctx.tags)(\"textField\", ctx.textField)(\"valueField\", ctx.valueField)(\"focused\", ctx.focusedTagIndex)(\"disabled\", ctx.disabled)(\"template\", ctx.tagTemplate)(\"groupTemplate\", ctx.groupTagTemplate)(\"tagPrefix\", ctx.tagPrefix)(\"disabledIndices\", ctx.disabledIndices);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"role\", \"listbox\")(\"tagListId\", ctx.tagListId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && ctx.clearButton && ((ctx.tags == null ? null : ctx.tags.length) || (ctx.text == null ? null : ctx.text.length)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, TagListComponent, SearchBarComponent, ɵngcc3.NgIf, TemplateContextDirective, SelectableDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"autoClose\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiSelectComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], MultiSelectComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], MultiSelectComponent.prototype, \"placeholder\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], MultiSelectComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectComponent.prototype, \"checkboxes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectComponent.prototype, \"virtual\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiSelectComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], MultiSelectComponent.prototype, \"valuePrimitive\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectComponent.prototype, \"tagMapper\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"allowCustom\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectComponent.prototype, \"valueNormalizer\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"removeTag\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], MultiSelectComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild(SearchBarComponent, { static: true }),\n __metadata(\"design:type\", SearchBarComponent)\n], MultiSelectComponent.prototype, \"searchbar\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], MultiSelectComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], MultiSelectComponent.prototype, \"optionsList\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], MultiSelectComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChild(CustomItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", CustomItemTemplateDirective)\n], MultiSelectComponent.prototype, \"customItemTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], MultiSelectComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], MultiSelectComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], MultiSelectComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], MultiSelectComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(TagTemplateDirective, { static: false }),\n __metadata(\"design:type\", TagTemplateDirective)\n], MultiSelectComponent.prototype, \"tagTemplate\", void 0);\n__decorate([\n ContentChild(GroupTagTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTagTemplateDirective)\n], MultiSelectComponent.prototype, \"groupTagTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], MultiSelectComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-multiselect'),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], MultiSelectComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], MultiSelectComponent.prototype, \"disabledClass\", null);\nMultiSelectComponent = MultiSelectComponent_1 = __decorate([ __param(11, Optional()), __param(11, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n ChangeDetectorRef,\n KeyValueDiffers,\n Renderer2,\n ElementRef,\n NgZone, Boolean])\n], MultiSelectComponent);\n\n/**\n * Renders the column cell content of the MultiColumnComboBox. To define a column cell template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnCellTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) and data item are available as context variables:\n *\n * - `let-dataItem=\"dataItem\"` (`any`) - The current data item. Also available as implicit context variable.\n * - `let-column=\"column\"` ([`ColumnComponent`]({% slug api_dropdowns_comboboxcolumncomponent %})) - The current column configuration obejct.\n */\nlet ColumnCellTemplateDirective = class ColumnCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nColumnCellTemplateDirective.ɵfac = function ColumnCellTemplateDirective_Factory(t) { return new (t || ColumnCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nColumnCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnCellTemplateDirective, selectors: [[\"\", \"kendoMultiColumnComboBoxColumnCellTemplate\", \"\"]] });\nColumnCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ColumnCellTemplateDirective);\n\n/**\n * Renders the column header content of the MultiColumnComboBox. To define a column header template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnHeaderTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) is available as implicit context variable.\n */\nlet ColumnHeaderTemplateDirective = class ColumnHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nColumnHeaderTemplateDirective.ɵfac = function ColumnHeaderTemplateDirective_Factory(t) { return new (t || ColumnHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nColumnHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnHeaderTemplateDirective, selectors: [[\"\", \"kendoMultiColumnComboBoxColumnHeaderTemplate\", \"\"]] });\nColumnHeaderTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ColumnHeaderTemplateDirective);\n\n/**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\nlet ComboBoxColumnComponent = class ComboBoxColumnComponent {\n /**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\n constructor() {\n /**\n * Sets the visibility of the column.\n *\n * @default false\n */\n this.hidden = false;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n }\n};\nComboBoxColumnComponent.ɵfac = function ComboBoxColumnComponent_Factory(t) { return new (t || ComboBoxColumnComponent)(); };\nComboBoxColumnComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ComboBoxColumnComponent, selectors: [[\"kendo-combobox-column\"]], contentQueries: function ComboBoxColumnComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnHeaderTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n } }, inputs: { hidden: \"hidden\", field: \"field\", title: \"title\", width: \"width\", style: \"style\", headerStyle: \"headerStyle\", class: \"class\", headerClass: \"headerClass\", media: \"media\" }, decls: 0, vars: 0, template: function ComboBoxColumnComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChild(ColumnCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", ColumnCellTemplateDirective)\n], ComboBoxColumnComponent.prototype, \"cellTemplate\", void 0);\n__decorate([\n ContentChild(ColumnHeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", ColumnHeaderTemplateDirective)\n], ComboBoxColumnComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxColumnComponent.prototype, \"field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxColumnComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ComboBoxColumnComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxColumnComponent.prototype, \"hidden\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"style\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"headerStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"class\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"headerClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxColumnComponent.prototype, \"media\", void 0);\n\n/**\n * Persists the intially resolved scrollbar width value.\n */\nlet SCROLLBAR_WIDTH;\n/**\n * @hidden\n *\n * Gets the default scrollbar width accoring to the current environment.\n */\nconst scrollbarWidth = () => {\n // calculate scrollbar width only once, then return the memoized value\n if (isNaN(SCROLLBAR_WIDTH)) {\n const div = document.createElement('div');\n div.style.cssText = 'overflow: scroll; overflow-x: hidden; zoom: 1; clear: both; display: block;';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n SCROLLBAR_WIDTH = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return SCROLLBAR_WIDTH;\n};\n/**\n * Checks if all columns have a valid user-defined width.\n */\nconst allColumnsWidthsSet = (columns) => {\n if (!isPresent(columns) || columns.length === 0) {\n return false;\n }\n return columns.toArray().every(column => !isNaN(column.width) && column.width > 0);\n};\n/**\n * @hidden\n *\n * Calculates the row width according to the passed columns width configuration.\n * Hidden columns and such that don't match the provided media query are ignored.\n * If some of the columns don't have a preset width or have an invalid width value, the function returns `null`.\n */\nconst getRowWidthFromColumnsMeta = (columns) => {\n if (!allColumnsWidthsSet(columns)) {\n return null;\n }\n const bordersWidth = 2;\n const initialRowWidht = scrollbarWidth() + bordersWidth;\n return columns.reduce((totalWidth, column) => {\n if (!column.hidden && column.matchesMedia) {\n totalWidth += parseInt(column.width, 10);\n }\n return totalWidth;\n }, initialRowWidht);\n};\n\nvar MultiColumnComboBoxComponent_1;\n/**\n * Represents the [Kendo UI MultiColumnComboBox component for Angular]({% slug overview_multicolumncombobox %}).\n */\nlet MultiColumnComboBoxComponent = MultiColumnComboBoxComponent_1 = class MultiColumnComboBoxComponent extends ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, hostElement, touchEnabled$$1) {\n super(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, hostElement, touchEnabled$$1);\n /**\n * @hidden\n */\n this.hostClasses = true;\n this.removeWindowResizeListener = noop;\n // the row height in @progress/kendo-theme-default\n this.defaultVirtualItemHeight = 36;\n // use a smaller virtual page size as columns with multiple cells can cause poor performance\n this.defaultVirtualPageSize = 30;\n }\n /**\n * @hidden\n */\n set header(header) {\n // updates the header padding on initial render as the resize senzor doesn't kick in as early\n this.updateHeaderPadding(header && header.nativeElement);\n }\n get popupWidth() {\n const wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n const min = `${wrapperOffsetWidth}px`;\n const width = this.popupSettings.width || getRowWidthFromColumnsMeta(this.columns) || wrapperOffsetWidth;\n const max = isNaN(width) ? width : `${width}px`;\n return { min, max };\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n return [\n 'k-list-container',\n 'k-popup',\n 'k-reset',\n 'k-group',\n 'k-dropdowngrid-popup',\n 'k-popup-flush',\n 'k-state-border-up'\n ].concat(this.popupSettings.popupClass || []);\n }\n ngAfterViewInit() {\n this.updateColumnsMediaState();\n this.addWindowResizeListener();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeWindowResizeListener();\n }\n /**\n * @hidden\n */\n textFrom(dataItem, field) {\n return getter$1(dataItem, field);\n }\n /**\n * @hidden\n *\n * Adds or removes a padding value at the end of the header container equal to the size of the scrollbar.\n * As when the items container has a scrollbar, the column headers and the cells are misaligned.\n * When the container has a scrollbar, the padding style is added, and when there is none - it is removed.\n */\n updateHeaderPadding(header) {\n if (!isPresent(header)) {\n return;\n }\n // the scrollbar is rendered on the left in rtl\n const headerPaddingPosition = this.localization.rtl ? 'padding-left' : 'padding-right';\n if (this.optionsList.hasScrollbar() && scrollbarWidth() > 0) {\n this.renderer.setStyle(header, headerPaddingPosition, `${scrollbarWidth()}px`);\n }\n else {\n this.renderer.removeStyle(header, headerPaddingPosition);\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(this.data) && this.data.length > 0 && this.data.some(item => !isObject(item))) {\n throw new Error(MultiColumnComboBoxMessages.data);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiColumnComboBoxMessages.textAndValue);\n }\n super.verifySettings();\n }\n addWindowResizeListener() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.zone.runOutsideAngular(() => this.removeWindowResizeListener = this.renderer.listen(window, 'resize', this.updateColumnsMediaState.bind(this)));\n }\n updateColumnsMediaState() {\n if (!(isPresent(this.columns) && isDocumentAvailable())) {\n return;\n }\n this.columns.forEach(column => {\n const matchesMedia = !column.media || window.matchMedia(column.media).matches;\n if (column.matchesMedia !== matchesMedia) {\n column.matchesMedia = matchesMedia;\n if (this.isOpen) {\n // enter the zone only if the popup is actually open\n // update its width in case it's dependent on the columns' width\n this.zone.run(() => this.popupRef.popupElement.style.width = this.popupWidth.max);\n }\n }\n });\n }\n};\nMultiColumnComboBoxComponent.ɵfac = function MultiColumnComboBoxComponent_Factory(t) { return new (t || MultiColumnComboBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED)); };\nMultiColumnComboBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiColumnComboBoxComponent, selectors: [[\"kendo-multicolumncombobox\"]], contentQueries: function MultiColumnComboBoxComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ComboBoxColumnComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n } }, viewQuery: function MultiColumnComboBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c34, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.header = _t.first);\n } }, hostVars: 2, hostBindings: function MultiColumnComboBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-dropdowngrid\", ctx.hostClasses);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 14, vars: 20, consts: function () { let i18n_35; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multicolumncombobox.noDataText\n */\n const MSG_EXTERNAL_3227251500690942605$$DIST_FESM2015_INDEX_JS_36 = goog.getMsg(\"NO DATA FOUND\");\n i18n_35 = MSG_EXTERNAL_3227251500690942605$$DIST_FESM2015_INDEX_JS_36;\n }\n else {\n i18n_35 = $localize `:kendo.multicolumncombobox.noDataText|The text displayed in the popup when there are no items␟23a18095f2c16d40a04251fa2fb15d3927e7a79a␟3227251500690942605:NO DATA FOUND`;\n } let i18n_37; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.multicolumncombobox.clearTitle\n */\n const MSG_EXTERNAL_326603149056291198$$DIST_FESM2015_INDEX_JS_38 = goog.getMsg(\"clear\");\n i18n_37 = MSG_EXTERNAL_326603149056291198$$DIST_FESM2015_INDEX_JS_38;\n }\n else {\n i18n_37 = $localize `:kendo.multicolumncombobox.clearTitle|The title of the clear button␟6b371962a2564e2e50986f7ec238e513b466d553␟326603149056291198:clear`;\n } return [[\"kendoMultiColumnComboBoxLocalizedMessages\", \"\", \"noDataText\", i18n_35, \"clearTitle\", i18n_37], [\"unselectable\", \"on\", 1, \"k-dropdown-wrap\"], [\"wrapper\", \"\"], [3, \"role\", \"id\", \"listId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"aria-hidden\", \"true\", 3, \"visibility\", \"kendoEventsOutsideAngular\", \"click\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", \"unselectable\", \"on\", 1, \"k-select\", 3, \"kendoEventsOutsideAngular\"], [\"select\", \"\"], [1, \"k-icon\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [3, \"resize\", 4, \"ngIf\"], [\"container\", \"\"], [\"aria-hidden\", \"true\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"kendoEventsOutsideAngular\", \"click\"], [4, \"ngIf\"], [1, \"k-grid-header\"], [\"header\", \"\"], [1, \"k-grid-header-wrap\"], [\"role\", \"presentation\"], [4, \"ngFor\", \"ngForOf\"], [\"rowTemplate\", \"\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"listClass\", \"pageChange\", \"listResize\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [3, \"width\", 4, \"ngIf\"], [\"class\", \"k-header\", 3, \"ngStyle\", \"ngClass\", 4, \"ngIf\"], [1, \"k-header\", 3, \"ngStyle\", \"ngClass\"], [\"class\", \"k-cell\", 3, \"ngClass\", \"width\", \"ngStyle\", 4, \"ngIf\"], [1, \"k-cell\", 3, \"ngClass\", \"ngStyle\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"], [1, \"k-footer\"], [3, \"resize\"]]; }, template: function MultiColumnComboBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2)(3, \"kendo-searchbar\", 3, 4);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_onNavigate_3_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_valueChange_3_listener($event) { return ctx.searchBarChange($event); })(\"onBlur\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_onBlur_3_listener() { return ctx.handleBlur(); })(\"onFocus\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_onFocus_3_listener() { return ctx.handleFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, MultiColumnComboBoxComponent_span_5_Template, 1, 6, \"span\", 5);\n ɵngcc0.ɵɵelementStart(6, \"span\", 6, 7);\n ɵngcc0.ɵɵelement(8, \"span\", 8);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(9, MultiColumnComboBoxComponent_ng_template_9_Template, 16, 19, \"ng-template\", null, 9, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(11, MultiColumnComboBoxComponent_kendo_resize_sensor_11_Template, 1, 0, \"kendo-resize-sensor\", 10);\n ɵngcc0.ɵɵelementContainer(12, null, 11);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"role\", \"combobox\")(\"id\", ctx.focusableId)(\"listId\", ctx.listBoxId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"suggestedText\", ctx.getSuggestion())(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.clearButton && !ctx.loading && !ctx.disabled && !ctx.readonly && (ctx.text == null ? null : ctx.text.length));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(18, _c25, ctx.preventEventDefault));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, SearchBarComponent, ɵngcc3.NgIf, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgClass, TemplateContextDirective, ɵngcc3.NgForOf, ɵngcc3.NgStyle, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-dropdowngrid'),\n __metadata(\"design:type\", Boolean)\n], MultiColumnComboBoxComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n ContentChildren(ComboBoxColumnComponent),\n __metadata(\"design:type\", QueryList)\n], MultiColumnComboBoxComponent.prototype, \"columns\", void 0);\n__decorate([\n ViewChild('header', { static: false }),\n __metadata(\"design:type\", ElementRef),\n __metadata(\"design:paramtypes\", [ElementRef])\n], MultiColumnComboBoxComponent.prototype, \"header\", null);\nMultiColumnComboBoxComponent = MultiColumnComboBoxComponent_1 = __decorate([ __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n DataService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n ElementRef, Boolean])\n], MultiColumnComboBoxComponent);\n\n/**\n * Renders the content of each node in the DropDownTree. To define a node template, nest an `` tag\n * with the `kendoDropDownTreeNodeTemplate` directive inside the `` tag.\n *\n * The current data item and hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - The current data item. Available as implicit context variable.\n * - `let-index=\"index\"` (`string`) - The current item hierarchical index.\n */\nlet NodeTemplateDirective = class NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNodeTemplateDirective.ɵfac = function NodeTemplateDirective_Factory(t) { return new (t || NodeTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNodeTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NodeTemplateDirective, selectors: [[\"\", \"kendoDropDownTreeNodeTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeNodeTemplate\", \"\"]] });\nNodeTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], NodeTemplateDirective);\n\nvar DropDownTreeComponent_1;\n/* tslint:disable:member-ordering */\nconst DEFAULT_POPUP_SETTINGS = { animate: true };\nconst hasChildren = () => false;\nconst fetchChildren = () => of([]);\nconst itemDisabled = () => false;\nconst isNodeVisible = () => true;\n/**\n * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).\n */\nlet DropDownTreeComponent = DropDownTreeComponent_1 = class DropDownTreeComponent {\n constructor(popupService, navigationService, renderer, hostElement, _zone, cdr, localization, touchEnabled$$1) {\n this.popupService = popupService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this._zone = _zone;\n this.cdr = cdr;\n this.localization = localization;\n this.touchEnabled = touchEnabled$$1;\n this.hostClasses = true;\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_ddt %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddt %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n this.valuePrimitive = false;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the DropDownTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually]({% slug filtering_ddt %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`]({% slug api_dropdowns_dropdowntreehierarchybindingdirective %}) and [`kendoDropDownTreeFlatBinding`]({% slug api_dropdowns_dropdowntreeflatbindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * @hidden\n */\n this.filter = '';\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid()}`;\n /**\n * @hidden\n */\n this.selectedKeys = [];\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n /**\n * @hidden\n *\n * Used to associate the value label with the wrapper via aria-describedby.\n */\n this.valueLabelId = `k-${guid()}`;\n this._popupSettings = DEFAULT_POPUP_SETTINGS;\n this._tabindex = 0;\n this._isFocused = false;\n this.subscriptions = [];\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n }\n get clearable() {\n return this.clearButton;\n }\n set treeview(treeview) {\n if (treeview) {\n if (this.isFocused && !this.filterable || this.touchEnabled) {\n treeview.focus();\n }\n // the treeview animations are initially disabled (we don't want expand animations during popup opening)\n // re-enables the animations for user interaction\n treeview.animate = true;\n this._treeview = treeview;\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Sets the data of the DropDownTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the DropDownTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Keeps the current `dataItem` object in order to resolve selection.\n * Needs to be provided when `value` is bound in and `valuePrimitive` is set to true.\n */\n set dataItem(item) {\n this._dataItem = item;\n this.setState();\n }\n get dataItem() {\n return this._dataItem ? this._dataItem : this.value;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = Number(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-state-focused');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, 'tabindex');\n this.assignAriaDescribedBy();\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !this.text && !this.placeholder;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n open ?\n this.createPopup() :\n this.destroyPopup();\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.hostElement.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n isUntouched(this.hostElement.nativeElement)) {\n this._zone.run(() => {\n this.togglePopup(false);\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n this.navigationService.process({\n originalEvent: eventData\n });\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * Focuses a specific item of the DropDownTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n let isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Focuses the DropDownTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Resets the value of the DropDownTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = undefined;\n this.dataItem = undefined;\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddt %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree', 'k-reset', 'k-group', 'k-list-container'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n onSelectionChange({ dataItem, index }) {\n this.valueDepth = index.split('_').length - 1;\n const valueField = this.getField(this.valueField, dataItem);\n const newValue = this.valuePrimitive ?\n getter(valueField)(dataItem) :\n dataItem;\n const shouldUpdateValue = newValue !== this.value;\n if (shouldUpdateValue) {\n this.value = newValue;\n this.dataItem = dataItem;\n this.emitValueChange(this.value);\n }\n this.togglePopup(false);\n this.focus();\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.value = undefined;\n this.dataItem = undefined;\n this.clearState();\n this.valueChange.emit(undefined);\n this.emitValueChange();\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n // If the user resets the value by providing null/undefined we need to reset the `dataItem`\n // Because upon initialization of the component the `writeValue` is being called twice -\n // first time with `null` value regardless of sync/async value - an extra check is added to\n // distinguish between client reset and initial phanotm 'null' value\n if (!isPresent(value) && isPresent(this.value)) {\n this.dataItem = null;\n }\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(term) {\n this.filterChange.next(term);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading' : 'k-i-arrow-s';\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownTreeMessages.primitive);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.dataItem !== \"object\") {\n throw new Error(DropDownTreeMessages.dataItem);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownTreeMessages.object);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(DropDownTreeMessages.textAndValue);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && isPresent(this.value) && !isPresent(this.valueDepth)) {\n throw new Error(DropDownTreeMessages.valueDepth);\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n getText(textField, dataItem) {\n if (isPresent(dataItem) && isPresent(textField)) {\n const field = this.getField(textField, dataItem);\n return getter(field)(dataItem);\n }\n return null;\n }\n /**\n * @hidden\n *\n * Determines the `valueField` and `textField` for a specific level in the data set\n * @param field - the field value (string | string[])\n * @param value - current value\n */\n getField(field, value) {\n const fieldsCount = field.length - 1;\n if (typeof field === 'string') {\n // If the `valueField` | `textField` is the same for all levels\n return field;\n }\n else if (isPresent(this.valueDepth)) {\n // When `valueDepth` can be defined from the index on selectionChange or provided by the user\n return fieldsCount < this.valueDepth ? field[fieldsCount] : field[this.valueDepth];\n }\n else {\n // Fallback: Look to find a match of each field in the current data item\n // Side effect may occur if all of the listed fields are present in the data item\n return field.find(item => item in value);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n handleEscape() {\n this.togglePopup(false);\n this.focus();\n }\n setState() {\n if (isPresent(this.value) && isPresent(this.dataItem) && isPresent(this.valueField)) {\n this.text = this.getText(this.textField, this.dataItem);\n const valueField = this.getField(this.valueField, this.dataItem);\n this.selectBy = valueField;\n this.selectedKeys = [getter(valueField)(this.dataItem)];\n }\n else {\n this.clearState();\n }\n this.cdr.markForCheck();\n }\n clearState() {\n this.text = undefined;\n this.selectedKeys = [];\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n }), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), this.navigationService.esc\n .subscribe(() => this.handleEscape()), this.navigationService.tab.subscribe(() => this.focus()), this.navigationService.down.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n }), this.navigationService.up.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (this.filterable && this.treeview['navigationService']['activeIndex'] === '0') {\n this.filterInput.nativeElement.focus();\n }\n }));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownTree on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.isOpen) {\n this.treeview.blur();\n }\n this.blur();\n });\n }\n }));\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n // add to the current value - don't replace it (the aria-describedby is used by the FormField component as well)\n const newValue = `${this.valueLabelId} ${currentValue.trim()}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n};\nDropDownTreeComponent.ɵfac = function DropDownTreeComponent_Factory(t) { return new (t || DropDownTreeComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nDropDownTreeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DropDownTreeComponent, selectors: [[\"kendo-dropdowntree\"]], contentQueries: function DropDownTreeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ValueTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.nodeTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.valueTemplate = _t.first);\n } }, viewQuery: function DropDownTreeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c41, 5);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c42, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.treeview = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterInput = _t.first);\n } }, hostVars: 7, hostBindings: function DropDownTreeComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-dropdowntree\", ctx.hostClasses)(\"k-dropdowntree-clearable\", ctx.clearable);\n } }, inputs: { clearButton: \"clearButton\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", placeholder: \"placeholder\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", itemDisabled: \"itemDisabled\", isNodeVisible: \"isNodeVisible\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", focusableId: \"focusableId\", data: \"data\", value: \"value\", popupSettings: \"popupSettings\", dataItem: \"dataItem\", tabindex: \"tabindex\", isNodeExpanded: \"isNodeExpanded\", valueDepth: \"valueDepth\", loading: \"loading\", textField: \"textField\", valueField: \"valueField\" }, outputs: { open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\", filterChange: \"filterChange\" }, exportAs: [\"kendoDropDownTree\"], features: [ɵngcc0.ɵɵProvidersFeature([\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 18, consts: function () { let i18n_43; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.dropdowntree.noDataText\n */\n const MSG_EXTERNAL_8377764809518564323$$DIST_FESM2015_INDEX_JS_44 = goog.getMsg(\"NO DATA FOUND\");\n i18n_43 = MSG_EXTERNAL_8377764809518564323$$DIST_FESM2015_INDEX_JS_44;\n }\n else {\n i18n_43 = $localize `:kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items␟b5507b240a829a596159da3600ea1c73810d8708␟8377764809518564323:NO DATA FOUND`;\n } let i18n_45; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.dropdowntree.clearTitle\n */\n const MSG_EXTERNAL_5091538317194981642$$DIST_FESM2015_INDEX_JS_46 = goog.getMsg(\"clear\");\n i18n_45 = MSG_EXTERNAL_5091538317194981642$$DIST_FESM2015_INDEX_JS_46;\n }\n else {\n i18n_45 = $localize `:kendo.dropdowntree.clearTitle|The title of the clear button␟549a21c02a5be9711c5297a917390d5f4c06448b␟5091538317194981642:clear`;\n } return [[\"kendoDropDownTreeLocalizedMessages\", \"\", \"noDataText\", i18n_43, \"clearTitle\", i18n_45], [\"role\", \"listbox\", \"aria-haspopup\", \"tree\", 3, \"ngClass\", \"kendoEventsOutsideAngular\", \"scope\", \"click\", \"keydown\"], [\"wrapper\", \"\"], [1, \"k-input\"], [4, \"ngIf\"], [3, \"ngIf\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"aria-hidden\", \"true\", 3, \"visibility\", \"click\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", 1, \"k-select\"], [1, \"k-icon\", \"k-i-arrow-60-down\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"templateContext\"], [\"aria-hidden\", \"true\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"click\"], [\"class\", \"k-list-filter\", 4, \"ngIf\"], [\"kendoTreeViewSelectable\", \"\", 3, \"nodes\", \"maxHeight\", \"animate\", \"selectedKeys\", \"selectBy\", \"textField\", \"children\", \"hasChildren\", \"loadOnDemand\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"filter\", \"isVisible\", \"selectedKeysChange\", \"focusout\", \"keydown\", \"selectionChange\", \"expand\", \"collapse\", 4, \"ngIf\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [1, \"k-list-filter\"], [\"role\", \"textbox\", \"aria-haspopup\", \"true\", \"aria-expanded\", \"false\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-textbox\", 3, \"filterInput\", \"ngModel\", \"kendoEventsOutsideAngular\", \"scope\", \"input\", \"keydown.arrowdown\", \"keydown.alt.arrowup\", \"ngModelChange\"], [\"filterInput\", \"\"], [1, \"k-icon\", \"k-i-zoom\"], [\"kendoTreeViewSelectable\", \"\", 3, \"nodes\", \"animate\", \"selectedKeys\", \"selectBy\", \"textField\", \"children\", \"hasChildren\", \"loadOnDemand\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"filter\", \"isVisible\", \"selectedKeysChange\", \"focusout\", \"keydown\", \"selectionChange\", \"expand\", \"collapse\"], [\"treeview\", \"\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"]]; }, template: function DropDownTreeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵlistener(\"click\", function DropDownTreeComponent_Template_span_click_1_listener() { return ctx.handleClick(); })(\"keydown\", function DropDownTreeComponent_Template_span_keydown_1_listener($event) { return ctx.handleKeydown($event); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, DropDownTreeComponent_4_Template, 1, 4, null, 4);\n ɵngcc0.ɵɵtemplate(5, DropDownTreeComponent_ng_template_5_Template, 1, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, DropDownTreeComponent_span_6_Template, 1, 3, \"span\", 6);\n ɵngcc0.ɵɵelementStart(7, \"span\", 7);\n ɵngcc0.ɵɵelement(8, \"span\", 8);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(9, DropDownTreeComponent_ng_template_9_Template, 5, 5, \"ng-template\", null, 9, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(11, null, 10);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(13, _c29, ctx.disabled))(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(15, _c1, ctx.handleFocus, ctx.handleBlur))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"id\", ctx.focusableId)(\"aria-expanded\", ctx.isOpen)(\"aria-readonly\", ctx.readonly)(\"tabindex\", ctx.tabindex)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.valueLabelId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && ctx.clearButton && (ctx.text == null ? null : ctx.text.length) && !ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, TemplateContextDirective, ɵngcc5.DefaultValueAccessor, FilterInputDirective, ɵngcc5.NgControlStatus, ɵngcc5.NgModel, ɵngcc6.TreeViewComponent, ɵngcc6.SelectDirective]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-dropdowntree'),\n HostBinding('class.k-dropdowntree-clearable'),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-dropdowntree-clearable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DropDownTreeComponent.prototype, \"clearable\", null);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], DropDownTreeComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], DropDownTreeComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], DropDownTreeComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NodeTemplateDirective, { static: false }),\n __metadata(\"design:type\", NodeTemplateDirective)\n], DropDownTreeComponent.prototype, \"nodeTemplate\", void 0);\n__decorate([\n ContentChild(ValueTemplateDirective, { static: false }),\n __metadata(\"design:type\", ValueTemplateDirective)\n], DropDownTreeComponent.prototype, \"valueTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], DropDownTreeComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], DropDownTreeComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], DropDownTreeComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('treeview', { static: false }),\n __metadata(\"design:type\", TreeViewComponent),\n __metadata(\"design:paramtypes\", [TreeViewComponent])\n], DropDownTreeComponent.prototype, \"treeview\", null);\n__decorate([\n ViewChild('filterInput', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], DropDownTreeComponent.prototype, \"filterInput\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"closed\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"nodeExpand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"nodeCollapse\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DropDownTreeComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownTreeComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropDownTreeComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropDownTreeComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownTreeComponent.prototype, \"valueDepth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"hasChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"fetchChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownTreeComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownTreeComponent.prototype, \"dataItem\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownTreeComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"valuePrimitive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DropDownTreeComponent.prototype, \"tabindex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"itemDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"isNodeExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"isNodeVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"focusableId\", void 0);\nDropDownTreeComponent = DropDownTreeComponent_1 = __decorate([ __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [PopupService,\n NavigationService,\n Renderer2,\n ElementRef,\n NgZone,\n ChangeDetectorRef,\n LocalizationService, Boolean])\n], DropDownTreeComponent);\n\nvar MultiSelectTreeComponent_1;\n/* tslint:disable:member-ordering */\nconst DEFAULT_POPUP_SETTINGS$1 = { animate: true };\nconst DEFAULT_CHECKABLE_SETTINGS = { checkChildren: true, checkOnClick: true };\nconst hasChildren$1 = () => false;\nconst fetchChildren$1 = () => of([]);\nconst itemDisabled$1 = () => false;\nconst isNodeVisible$1 = () => true;\n/**\n * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).\n */\nlet MultiSelectTreeComponent = MultiSelectTreeComponent_1 = class MultiSelectTreeComponent {\n constructor(popupService, renderer, hostElement, navigationService, _zone, localization, cdr, touchEnabled$$1) {\n this.popupService = popupService;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.navigationService = navigationService;\n this._zone = _zone;\n this.localization = localization;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled$$1;\n this.hostClasses = true;\n /**\n * Sets the levels in the data set where the values can be found when `valueField` is an Array.\n * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.\n */\n this.valueDepth = [];\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_multiselecttree %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be a primitive one.\n */\n this.valuePrimitive = false;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default false\n */\n this.loadOnDemand = false;\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid()}`;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n * @default true\n */\n this.clearButton = true;\n /**\n * Renders the built-in input element for filtering the MultiSelectTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the MultiSelectTree manually]({% slug filtering_multiselecttree %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoMultiSelectTreeHierarchyBinding`]({% slug api_dropdowns_multiselecttreehierarchybindingdirective %}) and [`kendoMultiSelectTreeFlatBinding`]({% slug api_dropdowns_multiselecttreeflatbindingdirective %}) directives.\n * @default false\n */\n this.filterable = false;\n /**\n * If `checkАll` is set to `true` and the checkboxes are enabled, a tri-state checkbox appears above the embedded treeview.\n * Clicking the checkbox checks or unchecks all enabled items of the treeview that are loaded.\n * @default false\n */\n this.checkAll = false;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren$1;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren$1;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible$1;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled$1;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags.\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Fires each time the user focuses the MultiSelectTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelectTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_multiselecttree %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed.\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.checkedItems = [];\n /**\n * @hidden\n */\n this.checkBy = (item) => item;\n /**\n * @hidden\n */\n this.showAfter = 0;\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n this.tagListId = guid();\n this.tagPrefix = \"tag-\" + guid();\n this.focusedTagIndex = undefined;\n this._value = [];\n this._tabindex = 0;\n this._popupSettings = DEFAULT_POPUP_SETTINGS$1;\n this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;\n this._isFocused = false;\n this.subscriptions = [];\n this.lastAction = 'check';\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n }\n set treeview(treeview) {\n this._treeview = treeview;\n if (treeview) {\n // If filtering is enabled, focus the TreeView on mobile devices instead of the filter input\n if (this.isFocused && !this.filterable && !this.checkAll || this.touchEnabled) {\n treeview.focus();\n }\n /**\n * the treeview animations are initially disabled (we don't want expand animations during popup opening)\n * re-enables the animations for user interaction\n * The Promise is required to properly change the `animate` property when\n * the popup is appended to a container and opened upon initialization.\n * Otherwise, the \"Expression has changed...\" type error will be thrown.\n */\n Promise.resolve(null).then(() => this.treeview.animate = true);\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = parseNumber(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Configures the popup of the MultiSelectTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings);\n // `detectChanges` needed, otherwise upon value initialization and `appendTo` property\n // an error is thrown => ExpressionChangedAfterItHasBeenCheckedError\n this.cdr.detectChanges();\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines the checkable settings of the MultiSelecTree nodes.\n * If no value is provided, the default [`CheckableSettings`]({% slug api_dropdowns_multiselecttreecheckablesettings %}) are applied.\n */\n set checkableSettings(settings) {\n this._checkableSettings = Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings);\n }\n get checkableSettings() {\n return this._checkableSettings;\n }\n /**\n * Sets the data of the MultiSelectTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the MultiSelectTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(value) {\n this._value = value ? value : [];\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Keeps the current `dataItems` object in order to resolve selection.\n * Needs to be provided when when programmatically setting a `value` and `valuePrimitive` is set to `true`.\n */\n set dataItems(items) {\n this._dataItems = (items || []).map((item, index) => {\n if (hasProps(item, ['dataItem', 'index', 'level'])) {\n return item;\n }\n return {\n dataItem: item,\n index: null,\n level: this.valueDepth[index] || 0\n };\n });\n this.setState();\n }\n get dataItems() {\n return this._dataItems || this.value.map((value, index) => ({\n dataItem: value,\n index: null,\n level: this.valueDepth[index] || 0\n }));\n }\n /**\n * @hidden\n */\n get focusedTagId() {\n if (!isPresent(this.focusedTagIndex) || this.isOpen) {\n return null;\n }\n const dataItem = this.tags[this.focusedTagIndex];\n return `${this.tagPrefix}-${valueFrom({ dataItem }, this.valueField)}`;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.hostElement.nativeElement, 'k-state-focused');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree', 'k-reset', 'k-group', 'k-list-container'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n get isTagFocused() {\n return !this.isOpen && this.focusedTagIndex !== undefined;\n }\n get isTreeViewActive() {\n return this.treeview && this.treeview.isActive;\n }\n get isWrapperActive() {\n return document.activeElement === this.wrapper.nativeElement;\n }\n get isFilterActive() {\n return this.filterInput && document.activeElement === this.filterInput.nativeElement;\n }\n get isCheckAllActive() {\n return this.checkAllInput && document.activeElement === this.checkAllInput.nativeElement;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, 'tabindex');\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', String(this.isOpen));\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n if (anyChanged(['valueDepth', 'value', 'dataItems'], changes, false)) {\n if (changes.value && !changes.dataItems && !this.valuePrimitive) {\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n this.dataItems = this.value;\n }\n else {\n // Re-map the dataItems because `valueDepth` is not yet available when the check directive parses the items\n this.dataItems = this.dataItems.map((item, index) => (Object.assign({}, item, { level: this.valueDepth[index] || 0 })));\n }\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !Boolean(this.placeholder) && (!isPresent(this.value) || this.value.length === 0);\n }\n /**\n * Focuses the MultiSelectTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the MultiSelectTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Focuses a specific item of the MultiSelectTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n const isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Resets the value of the MultiSelectTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = [];\n this.dataItems = [];\n this.valueDepth = [];\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselecttree %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n // Re-focus the treeview if `close` is prevented\n if (this.isOpen && this.treeview) {\n this.lastNodeOnFocus.setAttribute('tabindex', '0');\n this.treeview.focus();\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.hostElement.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n this.togglePopup(false);\n if (hasObservers(this.onBlur) ||\n isUntouched(this.hostElement.nativeElement)) {\n this._zone.run(() => {\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n const action = this.navigationService.process({\n originalEvent: eventData\n });\n if (action === NavigationAction.Open) {\n eventData.preventDefault();\n }\n }\n /**\n * @hidden\n */\n handleNodeClick(node) {\n if (!this.isFocused) {\n // Re-focus the MultiSelectTree when popup close is prevented and a node is clicked\n // On click the focus should be on the clicked element which is why we need to update the lastNodeOnFocus\n const parent = node.originalEvent.target.parentElement.parentElement;\n this.lastNodeOnFocus = parent;\n this.focus();\n }\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n this._zone.run(() => {\n this.focusedTagIndex = undefined;\n });\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n open ?\n this.createPopup() :\n this.destroyPopup();\n }\n else {\n this.removeTreeViewFromTabOrder();\n }\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n handleCheckedItemsChange(items) {\n this.valueDepth = items.map(item => item.level);\n this.lastAction = items.length > this.dataItems.length ? 'check' : 'uncheck';\n this.dataItems = items.slice();\n this.updateValue(this.dataItems);\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag, index }) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventArgs = new RemoveTagEvent(tag);\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n // Remove tags based on their position index\n if (tag instanceof Array) {\n // Remove group tag\n this.dataItems = this.dataItems.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n }\n else {\n // Remove single tag\n this.dataItems = this.dataItems.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n }\n this.updateValue(this.dataItems);\n // focus the wrapper if the component is not focused - the floating label reacts to focus/blur\n if (!this.isFocused) {\n this.focus();\n }\n }\n /**\n * @hidden\n */\n handleTagMapperChange(showAfter) {\n this.showAfter = parseNumber(showAfter);\n this.setTags();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.value = this.value.filter((_item, index) => this.disabledIndices.has(index));\n this.dataItems = this.dataItems.filter((_item, index) => this.disabledIndices.has(index));\n this.valueDepth = this.valueDepth.filter((_depth, index) => this.disabledIndices.has(index));\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n if (!this.valuePrimitive) {\n this.dataItems = this.value;\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(term) {\n this.filterChange.next(term);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n toggleCheckAll() {\n this.checkAllInput.nativeElement.focus();\n this.checkAllInput.nativeElement.click();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiSelectTreeMessages.textAndValue);\n }\n if (!isArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.array);\n }\n if (this.value.length > 0) {\n if (this.valuePrimitive && this.value.some(item => isObject(item))) {\n throw new Error(MultiSelectTreeMessages.primitive);\n }\n const isEveryDataItemObject = this.dataItems.every(item => isObject(item.dataItem));\n if (this.valuePrimitive && !isArray(this.dataItems)) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && !isEveryDataItemObject) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && this.dataItems.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.dataItemsLength);\n }\n if (!this.valuePrimitive && !isObjectArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.object);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && !isArray(this.valueDepth)) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length === 0) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.valueDepthLength);\n }\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n open ?\n this.open.emit(eventArgs) :\n this.close.emit(eventArgs);\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n this.renderer.setAttribute(popupWrapper, 'dir', this.direction);\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), merge(this.navigationService.close, this.navigationService.esc).subscribe(() => {\n this.focus();\n this.togglePopup(false);\n }), this.navigationService.tab.subscribe(this.handleTabKey.bind(this)), this.navigationService.up.subscribe(this.handleUpKey.bind(this)), this.navigationService.down.subscribe(this.handleDownKey.bind(this)), this.navigationService.left\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)), this.navigationService.right\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)), this.navigationService.home.pipe(filter(() => !this.isOpen)).subscribe(this.handleHome.bind(this)), this.navigationService.end.pipe(filter(() => !this.isOpen)).subscribe(this.handleEnd.bind(this)), this.navigationService.backspace.pipe(filter(() => this.isTagFocused)).subscribe(this.handleBackspace.bind(this)), this.navigationService.delete.pipe(filter(() => this.isTagFocused)).subscribe(this.handleDelete.bind(this)));\n }\n handleTabKey() {\n this.focus();\n if (this.isOpen) {\n this.treeview.blur();\n this.removeTreeViewFromTabOrder();\n }\n }\n handleUpKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Prevent toggling the focus between the filterInput and the wrapper elements with `up` key\n if (this.isWrapperActive) {\n return;\n }\n const isFirstNodeActive = this.treeview['navigationService']['activeIndex'] === '0';\n // Current focus is on the filter input => should focus the wrapper\n if (this.filterable && this.isFilterActive) {\n this.focus();\n // Current focus is on the treeview first node => should focus the check all checkbox if enabled\n }\n else if (this.checkAll && !this.isCheckAllActive && isFirstNodeActive) {\n this.checkAllInput.nativeElement.focus();\n // Current focus is either on the check all checkbox or the treeview's first node\n // => should focus either the filter input (if enabled) or the wrapper\n }\n else if (this.isCheckAllActive || isFirstNodeActive) {\n this.filterable ?\n this.filterInput.nativeElement.focus() :\n this.focus();\n }\n }\n handleDownKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Current focus is on the wrapper => should focus the filter input\n if (this.filterable && this.isWrapperActive) {\n this.filterInput.nativeElement.focus();\n // Current focus is on the wrapper/filter input => should focus check all checkbox if enabled\n }\n else if (this.checkAll && (this.isWrapperActive || this.isFilterActive)) {\n this.checkAllInput.nativeElement.focus();\n // Should focus the treeview if filterable and check all are disabled\n }\n else if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n this.focusedTagIndex = undefined;\n }\n handleRightKey(event) {\n event.originalEvent.preventDefault();\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n else if (!this.focusedTagIndex) {\n this.focusedTagIndex = 0;\n }\n }\n handleLeftKey(event) {\n event.originalEvent.preventDefault();\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleEnd(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = 0;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n const tag = this.tags[this.tags.length - 1];\n const index = this.tags.length - 1;\n this.handleRemoveTag({ tag, index });\n }\n }\n handleDelete() {\n const tag = this.tags[this.focusedTagIndex];\n const index = this.focusedTagIndex;\n this.handleRemoveTag({ tag, index });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n /**\n * Remove the `TreeView` from the tab order, otherwise a focus loop between the page elements will occur\n * and the user will not be able to tab to the rest of the browser elements\n */\n removeTreeViewFromTabOrder() {\n const nodes = this.treeview.element.nativeElement.querySelectorAll('li');\n nodes.forEach(item => {\n if (item.getAttribute('tabindex') === '0') {\n this.lastNodeOnFocus = item;\n this.lastNodeOnFocus.setAttribute('tabindex', '-1');\n }\n });\n }\n setState() {\n if (isPresent(this.dataItems) && isPresent(this.valueField)) {\n this.setTags();\n this.checkedItems = this.dataItems.slice();\n }\n this.cdr.markForCheck();\n }\n setTags() {\n const source = this.dataItems.map(item => item.dataItem);\n this.tags = this.tagMapper(source);\n this.disabledIndices = this.disabledItemsMapper();\n }\n updateValue(value) {\n const newValue = this.valuePrimitive ?\n value.map(item => valueFrom(item, this.valueField)) :\n value.map(item => item.dataItem);\n this.value = newValue;\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n return new Set(this.dataItems.reduce((indices, item, index) => {\n if (this.itemDisabled(item.dataItem, item.index)) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n};\nMultiSelectTreeComponent.ɵfac = function MultiSelectTreeComponent_Factory(t) { return new (t || MultiSelectTreeComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nMultiSelectTreeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiSelectTreeComponent, selectors: [[\"kendo-multiselecttree\"]], contentQueries: function MultiSelectTreeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TagTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTagTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.nodeTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTagTemplate = _t.first);\n } }, viewQuery: function MultiSelectTreeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c41, 5);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c42, 5);\n ɵngcc0.ɵɵviewQuery(_c48, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.treeview = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.checkAllInput = _t.first);\n } }, hostVars: 5, hostBindings: function MultiSelectTreeComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-dropdowntree\", ctx.hostClasses);\n } }, inputs: { valueDepth: \"valueDepth\", placeholder: \"placeholder\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", loadOnDemand: \"loadOnDemand\", focusableId: \"focusableId\", clearButton: \"clearButton\", filterable: \"filterable\", checkAll: \"checkAll\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", isNodeVisible: \"isNodeVisible\", itemDisabled: \"itemDisabled\", tagMapper: \"tagMapper\", tabindex: \"tabindex\", popupSettings: \"popupSettings\", checkableSettings: \"checkableSettings\", data: \"data\", value: \"value\", dataItems: \"dataItems\", isNodeExpanded: \"isNodeExpanded\", textField: \"textField\", valueField: \"valueField\", loading: \"loading\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", valueChange: \"valueChange\", removeTag: \"removeTag\", filterChange: \"filterChange\" }, exportAs: [\"kendoMultiSelectTree\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 28, consts: function () { let i18n_49; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multiselecttree.noDataText\n */\n const MSG_EXTERNAL_5589893825114548617$$DIST_FESM2015_INDEX_JS_50 = goog.getMsg(\"NO DATA FOUND\");\n i18n_49 = MSG_EXTERNAL_5589893825114548617$$DIST_FESM2015_INDEX_JS_50;\n }\n else {\n i18n_49 = $localize `:kendo.multiselecttree.noDataText|The text displayed in the popup when there are no items␟1689309191709bbbb071c889072707cb3f12dc93␟5589893825114548617:NO DATA FOUND`;\n } let i18n_51; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.multiselecttree.clearTitle\n */\n const MSG_EXTERNAL_7268188619735862842$$DIST_FESM2015_INDEX_JS_52 = goog.getMsg(\"clear\");\n i18n_51 = MSG_EXTERNAL_7268188619735862842$$DIST_FESM2015_INDEX_JS_52;\n }\n else {\n i18n_51 = $localize `:kendo.multiselecttree.clearTitle|The title of the clear button␟f99cf5ed2ae05c7d1df8dc97f56176a4934c8db9␟7268188619735862842:clear`;\n } let i18n_53; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed for the check-all checkbox\n * @meaning kendo.multiselecttree.checkAllText\n */\n const MSG_EXTERNAL_4511060501589211517$$DIST_FESM2015_INDEX_JS_54 = goog.getMsg(\"Check all\");\n i18n_53 = MSG_EXTERNAL_4511060501589211517$$DIST_FESM2015_INDEX_JS_54;\n }\n else {\n i18n_53 = $localize `:kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox␟7213da1304801b92c6dd35231b5305408e2734e3␟4511060501589211517:Check all`;\n } return [[\"kendoMultiSelectTreeLocalizedMessages\", \"\", \"noDataText\", i18n_49, \"clearTitle\", i18n_51, \"checkAllText\", i18n_53], [\"role\", \"listbox\", \"aria-haspopup\", \"tree\", 3, \"ngClass\", \"kendoEventsOutsideAngular\", \"scope\", \"click\", \"keydown\"], [\"wrapper\", \"\"], [3, \"id\", \"tags\", \"focused\", \"textField\", \"valueField\", \"valueDepth\", \"disabled\", \"tagPrefix\", \"template\", \"groupTemplate\", \"disabledIndices\", \"removeTag\"], [\"class\", \"k-input k-readonly\", 4, \"ngIf\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [1, \"k-input\", \"k-readonly\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"click\"], [1, \"k-icon\", \"k-i-loading\"], [\"class\", \"k-list-filter\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-check-all\", 4, \"ngIf\"], [\"kendoMultiSelectTreeCheckable\", \"\", 3, \"nodes\", \"animate\", \"checkable\", \"checkedItems\", \"valueField\", \"textField\", \"children\", \"hasChildren\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"loadOnDemand\", \"filter\", \"isVisible\", \"kendoEventsOutsideAngular\", \"scope\", \"keydown\", \"nodeClick\", \"expand\", \"collapse\", \"checkedItemsChange\"], [\"treeview\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [1, \"k-list-filter\"], [\"role\", \"textbox\", \"aria-haspopup\", \"true\", \"aria-expanded\", \"false\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-textbox\", 3, \"filterInput\", \"ngModel\", \"kendoEventsOutsideAngular\", \"scope\", \"input\", \"keydown\", \"ngModelChange\"], [\"filterInput\", \"\"], [1, \"k-icon\", \"k-i-zoom\"], [3, \"templateContext\"], [1, \"k-check-all\"], [\"type\", \"checkbox\", \"role\", \"checkbox\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-checkbox\", 3, \"checkAll\", \"treeview\", \"checkedItems\", \"valueField\", \"lastAction\", \"kendoEventsOutsideAngular\", \"scope\", \"checkedItemsChange\", \"keydown\"], [\"checkAllInput\", \"\"], [1, \"k-checkbox-label\", 3, \"click\", \"mousedown\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"]]; }, template: function MultiSelectTreeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_Template_div_click_1_listener() { return ctx.handleClick(); })(\"keydown\", function MultiSelectTreeComponent_Template_div_keydown_1_listener($event) { return ctx.handleKeydown($event); });\n ɵngcc0.ɵɵelementStart(3, \"kendo-taglist\", 3);\n ɵngcc0.ɵɵlistener(\"removeTag\", function MultiSelectTreeComponent_Template_kendo_taglist_removeTag_3_listener($event) { return ctx.handleRemoveTag($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, MultiSelectTreeComponent_span_4_Template, 2, 1, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, MultiSelectTreeComponent_span_5_Template, 1, 1, \"span\", 5);\n ɵngcc0.ɵɵtemplate(6, MultiSelectTreeComponent_span_6_Template, 1, 0, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, MultiSelectTreeComponent_ng_template_7_Template, 7, 25, \"ng-template\", null, 7, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(9, null, 8);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(23, _c56, ctx.disabled))(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(25, _c1, ctx.handleFocus, ctx.handleBlur))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"aria-describedby\", ctx.tagListId)(\"aria-readonly\", ctx.readonly)(\"aria-activedescendant\", ctx.focusedTagId)(\"tabindex\", ctx.tabindex)(\"id\", ctx.focusableId)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.tagListId)(\"tags\", ctx.tags)(\"focused\", ctx.focusedTagIndex)(\"textField\", ctx.textField)(\"valueField\", ctx.valueField)(\"valueDepth\", ctx.valueDepth)(\"disabled\", ctx.disabled)(\"tagPrefix\", ctx.tagPrefix)(\"template\", ctx.tagTemplate)(\"groupTemplate\", ctx.groupTagTemplate)(\"disabledIndices\", ctx.disabledIndices);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tags || !ctx.tags.length);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.disabled && !ctx.loading && !ctx.readonly && ctx.clearButton && (ctx.tags == null ? null : ctx.tags.length));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective, TagListComponent, ɵngcc3.NgIf, ɵngcc5.DefaultValueAccessor, FilterInputDirective, ɵngcc5.NgControlStatus, ɵngcc5.NgModel, TemplateContextDirective, CheckAllDirective, ɵngcc6.TreeViewComponent, CheckDirective]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-dropdowntree'),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], MultiSelectTreeComponent.prototype, \"direction\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NodeTemplateDirective, { static: false }),\n __metadata(\"design:type\", NodeTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"nodeTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(TagTemplateDirective, { static: false }),\n __metadata(\"design:type\", TagTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"tagTemplate\", void 0);\n__decorate([\n ContentChild(GroupTagTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTagTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"groupTagTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], MultiSelectTreeComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectTreeComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], MultiSelectTreeComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('treeview', { static: false }),\n __metadata(\"design:type\", TreeViewComponent),\n __metadata(\"design:paramtypes\", [TreeViewComponent])\n], MultiSelectTreeComponent.prototype, \"treeview\", null);\n__decorate([\n ViewChild('filterInput', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectTreeComponent.prototype, \"filterInput\", void 0);\n__decorate([\n ViewChild('checkAllInput', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectTreeComponent.prototype, \"checkAllInput\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], MultiSelectTreeComponent.prototype, \"tabindex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectTreeComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectTreeComponent.prototype, \"checkableSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeComponent.prototype, \"dataItems\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], MultiSelectTreeComponent.prototype, \"valueDepth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectTreeComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiSelectTreeComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"valuePrimitive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectTreeComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"checkAll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"hasChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"fetchChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"isNodeExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"isNodeVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"itemDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeComponent.prototype, \"tagMapper\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"closed\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"nodeExpand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"nodeCollapse\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"removeTag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"filterChange\", void 0);\nMultiSelectTreeComponent = MultiSelectTreeComponent_1 = __decorate([ __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [PopupService,\n Renderer2,\n ElementRef,\n NavigationService,\n NgZone,\n LocalizationService,\n ChangeDetectorRef, Boolean])\n], MultiSelectTreeComponent);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nlet DropDownTreeFlatBindingDirective = class DropDownTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n }\n};\nDropDownTreeFlatBindingDirective.ɵfac = function DropDownTreeFlatBindingDirective_Factory(t) { return new (t || DropDownTreeFlatBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nDropDownTreeFlatBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropDownTreeFlatBindingDirective, selectors: [[\"\", \"kendoDropDownTreeFlatBinding\", \"\"]], inputs: { nodes: [\"kendoDropDownTreeFlatBinding\", \"nodes\"], idField: [\"valueField\", \"idField\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoDropDownTreeFlatBinding'),\n __metadata(\"design:type\", Array)\n], DropDownTreeFlatBindingDirective.prototype, \"nodes\", void 0);\n__decorate([\n Input('valueField'),\n __metadata(\"design:type\", String)\n], DropDownTreeFlatBindingDirective.prototype, \"idField\", void 0);\nDropDownTreeFlatBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], DropDownTreeFlatBindingDirective);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nlet DropDownTreeHierarchyBindingDirective = class DropDownTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * The nodes which will be displayed by the DropDownTree.\n */\n set data(nodes) {\n this.dropDownTree.nodes = nodes;\n this.nodes = nodes;\n }\n};\nDropDownTreeHierarchyBindingDirective.ɵfac = function DropDownTreeHierarchyBindingDirective_Factory(t) { return new (t || DropDownTreeHierarchyBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nDropDownTreeHierarchyBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropDownTreeHierarchyBindingDirective, selectors: [[\"\", \"kendoDropDownTreeHierarchyBinding\", \"\"]], inputs: { data: [\"kendoDropDownTreeHierarchyBinding\", \"data\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoDropDownTreeHierarchyBinding'),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DropDownTreeHierarchyBindingDirective.prototype, \"data\", null);\nDropDownTreeHierarchyBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], DropDownTreeHierarchyBindingDirective);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nlet MultiSelectTreeFlatBindingDirective = class MultiSelectTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n }\n};\nMultiSelectTreeFlatBindingDirective.ɵfac = function MultiSelectTreeFlatBindingDirective_Factory(t) { return new (t || MultiSelectTreeFlatBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nMultiSelectTreeFlatBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MultiSelectTreeFlatBindingDirective, selectors: [[\"\", \"kendoMultiSelectTreeFlatBinding\", \"\"]], inputs: { nodes: [\"kendoMultiSelectTreeFlatBinding\", \"nodes\"], idField: [\"valueField\", \"idField\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoMultiSelectTreeFlatBinding'),\n __metadata(\"design:type\", Array)\n], MultiSelectTreeFlatBindingDirective.prototype, \"nodes\", void 0);\n__decorate([\n Input('valueField'),\n __metadata(\"design:type\", String)\n], MultiSelectTreeFlatBindingDirective.prototype, \"idField\", void 0);\nMultiSelectTreeFlatBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], MultiSelectTreeFlatBindingDirective);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nlet MultiSelectTreeHierarchyBindingDirective = class MultiSelectTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * The nodes which will be displayed by the MultiSelectTree.\n */\n set data(nodes) {\n this.multiSelectTree.nodes = nodes;\n this.nodes = nodes;\n }\n};\nMultiSelectTreeHierarchyBindingDirective.ɵfac = function MultiSelectTreeHierarchyBindingDirective_Factory(t) { return new (t || MultiSelectTreeHierarchyBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nMultiSelectTreeHierarchyBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MultiSelectTreeHierarchyBindingDirective, selectors: [[\"\", \"kendoMultiSelectTreeHierarchyBinding\", \"\"]], inputs: { data: [\"kendoMultiSelectTreeHierarchyBinding\", \"data\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoMultiSelectTreeHierarchyBinding'),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeHierarchyBindingDirective.prototype, \"data\", null);\nMultiSelectTreeHierarchyBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], MultiSelectTreeHierarchyBindingDirective);\n\n/**\n * A directive which manages the expanded state of the popup TreeView.\n */\nlet DropDownTreesExpandDirective = class DropDownTreesExpandDirective extends ExpandDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n }\n};\nDropDownTreesExpandDirective.ɵfac = function DropDownTreesExpandDirective_Factory(t) { return new (t || DropDownTreesExpandDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ExpandableComponent)); };\nDropDownTreesExpandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropDownTreesExpandDirective, selectors: [[\"\", \"kendoDropDownTreeExpandable\", \"\"], [\"\", \"kendoMultiSelectTreeExpandable\", \"\"]], inputs: { isExpanded: [\"isNodeExpanded\", \"isExpanded\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('isNodeExpanded'),\n __metadata(\"design:type\", Function)\n], DropDownTreesExpandDirective.prototype, \"isExpanded\", void 0);\nDropDownTreesExpandDirective = __decorate([ __metadata(\"design:paramtypes\", [ExpandableComponent])\n], DropDownTreesExpandDirective);\n\n/**\n * @hidden\n */\nlet TagListComponent = class TagListComponent {\n /**\n * @hidden\n */\n constructor() {\n /**\n * A collection with the disabled tags' indices.\n */\n this.disabledIndices = new Set();\n this.removeTag = new EventEmitter();\n }\n tagProp(tag, prop, index) {\n const propField = prop && this.getPropField(tag, prop, index);\n return getter$1(tag, propField);\n }\n isTagDisabled(tag, positionIndex) {\n if (this.isGroupTag(tag)) {\n /** The `positionIndex` is used to determine after how many single tags is the group tag displayed =>\n * => it is used to increment the indices inside the group tag so that we determine the actual position index\n * of each group tag item as they appear in the `value` (important to check against `disabledIndices`)\n * e.g. `disabledIndices = [0, 1]` && `tags = ['Small', ['Medium', 'Large']]` => without the incrementation with\n * `positionIndex`, the group tag would yield [0, 1] as indices, while it should yield [1, 2]\n */\n return tag.every((_tag, index) => this.disabledIndices.has(index + positionIndex));\n }\n return this.disabledIndices.has(positionIndex);\n }\n deleteTag(event, tag, index) {\n event.preventDefault();\n event.stopImmediatePropagation();\n if (!this.disabled && event.which === 1) {\n this.removeTag.emit({ tag, index });\n }\n }\n itemId(tag, index) {\n if (tag) { //because of custom values\n return this.tagPrefix + \"-\" + this.tagProp(tag, this.valueField, index);\n }\n }\n isGroupTag(tag) {\n return tag instanceof Array;\n }\n tagAriaHidden(index) {\n return isPresent(this.focused) && this.focused !== index;\n }\n getPropField(tag, prop, index) {\n // Needed for MultiSelectTree value binding (Heterogeneous Data)\n const fieldsCount = prop.length - 1;\n if (typeof prop === 'string') {\n return prop;\n }\n else if (this.valueDepth) {\n const depth = this.valueDepth[index];\n return fieldsCount < depth ? prop[fieldsCount] : prop[depth];\n }\n else {\n return prop.find(item => item in tag);\n }\n }\n};\nTagListComponent.ɵfac = function TagListComponent_Factory(t) { return new (t || TagListComponent)(); };\nTagListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TagListComponent, selectors: [[\"kendo-taglist\"]], inputs: { disabledIndices: \"disabledIndices\", tags: \"tags\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", focused: \"focused\", template: \"template\", groupTemplate: \"groupTemplate\", disabled: \"disabled\", tagPrefix: \"tagPrefix\", id: \"id\" }, outputs: { removeTag: \"removeTag\" }, decls: 2, vars: 2, consts: [[1, \"k-reset\"], [\"role\", \"option\", \"aria-selected\", \"true\", \"class\", \"k-button\", 3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"option\", \"aria-selected\", \"true\", 1, \"k-button\", 3, \"ngClass\"], [4, \"ngIf\", \"ngIfThen\", \"ngIfElse\"], [\"groupTag\", \"\"], [\"singleTag\", \"\"], [\"aria-label\", \"delete\", 1, \"k-select\"], [1, \"k-icon\", \"k-i-close\", 3, \"mousedown\"], [4, \"ngIf\"], [3, \"ngIf\"], [3, \"templateContext\"]], template: function TagListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_Template, 8, 11, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.tags);\n } }, directives: function () { return [ɵngcc3.NgForOf, ListItemDirective, ɵngcc3.NgClass, ɵngcc3.NgIf, TemplateContextDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TagListComponent.prototype, \"tags\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TagListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TagListComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TagListComponent.prototype, \"valueDepth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TagListComponent.prototype, \"focused\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TagTemplateDirective)\n], TagListComponent.prototype, \"template\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", GroupTagTemplateDirective)\n], TagListComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TagListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TagListComponent.prototype, \"tagPrefix\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TagListComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Set)\n], TagListComponent.prototype, \"disabledIndices\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TagListComponent.prototype, \"removeTag\", void 0);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { noDataText: \"noDataText\", clearTitle: \"clearTitle\", checkAllText: \"checkAllText\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"noDataText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"clearTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"checkAllText\", void 0);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoDropDownListLocalizedMessages\", \"\"], [\"\", \"kendoDropDownTreeLocalizedMessages\", \"\"], [\"\", \"kendoComboBoxLocalizedMessages\", \"\"], [\"\", \"kendoMultiColumnComboBoxLocalizedMessages\", \"\"], [\"\", \"kendoAutoCompleteLocalizedMessages\", \"\"], [\"\", \"kendoMultiSelectLocalizedMessages\", \"\"], [\"\", \"kendoMultiSelectTreeLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nvar CustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_dropdowns %}#toc-messages)).\n */\nlet CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(t) { return new (t || CustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CustomMessagesComponent, selectors: [[\"kendo-dropdownlist-messages\"], [\"kendo-combobox-messages\"], [\"kendo-multicolumncombobox-messages\"], [\"kendo-autocomplete-messages\"], [\"kendo-multiselect-messages\"], [\"kendo-dropdowntree-messages\"], [\"kendo-multiselecttree-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCustomMessagesComponent = CustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CustomMessagesComponent);\n\nconst DEFAULT_FILTER_SETTINGS = {\n caseSensitive: false,\n operator: 'startsWith'\n};\n/**\n * Implements an event handler for the `filterChange` event of a DropDowns component\n * which performs simple data filtering.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [\"Albania\", \"Andorra\", \"Armenia\", \"Austria\", \"Azerbaijan\"];\n * }\n * ```\n * > Currently, the built-in filtering does not work with [grouped data]({% slug api_kendo-data-query_groupby %}).\n */\nlet FilterDirective = class FilterDirective {\n constructor(component) {\n this.component = component;\n /**\n * @hidden\n *\n * Sets whether the filtering functionality is enabled on component init.\n */\n this.filterable = true;\n this._data = [];\n }\n /**\n * The initial data that will be used as a source array for the filtering operations.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.component.filterable = this.filterable;\n this.filterChangeSubscription = this.component.filterChange\n .subscribe(this.handleFilterChange.bind(this));\n }\n ngOnDestroy() {\n if (isPresent(this.filterChangeSubscription)) {\n this.filterChangeSubscription.unsubscribe();\n }\n }\n handleFilterChange(query) {\n this.component.data = this.data.filter(item => this.matchesAnyField(item, query));\n }\n matchesAnyField(item, query) {\n const normalizedQuery = this.normalizeValue(query);\n const { fields } = this.filterSettings;\n // if no filter fields are present, we are dealing with primitive data\n if (fields.length === 0) {\n return this.checkItem(item, normalizedQuery);\n }\n return fields.some(field => this.checkItem(getter$1(item, field), normalizedQuery));\n }\n checkItem(target, query) {\n target = this.normalizeValue(target);\n if (this.filterSettings.operator === 'contains') {\n return target.indexOf(query) !== -1;\n }\n else {\n return target.indexOf(query) === 0;\n }\n }\n normalizeValue(value) {\n const normalizedValue = isPresent(value) ? value.toString() : '';\n return this.filterSettings.caseSensitive ? normalizedValue : normalizedValue.toLowerCase();\n }\n getFilterFields(providedFields) {\n // ignore provided fields if the component deals with primitive data\n if (!this.component.textField && !this.component.valueField) {\n return [];\n }\n if (isArray(providedFields) && providedFields.length > 0) {\n return providedFields;\n }\n else {\n // the autocomplete uses `valueField` for text extraction\n const textField = this.component.textField || this.component.valueField;\n return [textField];\n }\n }\n get filterSettings() {\n const settings = this.rawSettings;\n const providedFields = isPresent(settings) && typeof settings === 'object' ? settings.fields : [];\n return Object.assign({}, DEFAULT_FILTER_SETTINGS, settings, { fields: this.getFilterFields(providedFields) });\n }\n};\nFilterDirective.ɵfac = function FilterDirective_Factory(t) { return new (t || FilterDirective)(ɵngcc0.ɵɵdirectiveInject(FilterableComponent)); };\nFilterDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterDirective, selectors: [[\"\", \"kendoDropDownFilter\", \"\"]], inputs: { filterable: \"filterable\", data: \"data\", rawSettings: [\"kendoDropDownFilter\", \"rawSettings\"] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], FilterDirective.prototype, \"data\", null);\n__decorate([\n Input('kendoDropDownFilter'),\n __metadata(\"design:type\", Object)\n], FilterDirective.prototype, \"rawSettings\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterDirective.prototype, \"filterable\", void 0);\nFilterDirective = __decorate([ __metadata(\"design:paramtypes\", [FilterableComponent])\n], FilterDirective);\n\n/**\n * @hidden\n */\nlet FilterInputDirective = class FilterInputDirective {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n }\n ngOnChanges() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n};\nFilterInputDirective.ɵfac = function FilterInputDirective_Factory(t) { return new (t || FilterInputDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nFilterInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterInputDirective, selectors: [[\"\", \"filterInput\", \"\"]], inputs: { focused: [\"filterInput\", \"focused\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('filterInput'),\n __metadata(\"design:type\", Boolean)\n], FilterInputDirective.prototype, \"focused\", void 0);\nFilterInputDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone])\n], FilterInputDirective);\n\nconst SHARED_DIRECTIVES = [\n HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The noData template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n */\nlet SharedDirectivesModule = class SharedDirectivesModule {\n};\nSharedDirectivesModule.ɵfac = function SharedDirectivesModule_Factory(t) { return new (t || SharedDirectivesModule)(); };\nSharedDirectivesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedDirectivesModule });\nSharedDirectivesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * @hidden\n */\nlet SelectableDirective = class SelectableDirective {\n constructor(selectionService) {\n this.checkboxes = { enabled: false };\n // @HostBinding('attr.offset-index')\n // @Input() public offsetIndex: number;\n this.multipleSelection = false;\n this.selectionService = selectionService;\n }\n get focusedClassName() {\n return this.selectionService.isFocused(this.index);\n }\n get selectedClassName() {\n return !this.checkboxes.enabled && this.selectionService.isSelected(this.index);\n }\n onClick(event) {\n event.stopPropagation();\n if (this.checkboxes.enabled && !this.checkboxes.checkOnClick) {\n return;\n }\n if (this.multipleSelection) {\n if (this.selectionService.isSelected(this.index)) {\n this.selectionService.unselect(this.index);\n }\n else {\n this.selectionService.add(this.index);\n }\n }\n else {\n this.selectionService.change(this.index);\n }\n }\n};\nSelectableDirective.ɵfac = function SelectableDirective_Factory(t) { return new (t || SelectableDirective)(ɵngcc0.ɵɵdirectiveInject(SelectionService)); };\nSelectableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectableDirective, selectors: [[\"\", \"kendoDropDownsSelectable\", \"\"]], hostVars: 9, hostBindings: function SelectableDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function SelectableDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"index\", ctx.index);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height, \"px\")(\"min-height\", ctx.height, \"px\");\n ɵngcc0.ɵɵclassProp(\"k-state-focused\", ctx.focusedClassName)(\"k-state-selected\", ctx.selectedClassName);\n } }, inputs: { checkboxes: \"checkboxes\", multipleSelection: \"multipleSelection\", index: \"index\", height: \"height\" } });\n__decorate([\n HostBinding('attr.index'),\n Input(),\n __metadata(\"design:type\", Number)\n], SelectableDirective.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SelectableDirective.prototype, \"checkboxes\", void 0);\n__decorate([\n HostBinding('style.height.px'),\n HostBinding('style.minHeight.px'),\n Input(),\n __metadata(\"design:type\", Number)\n], SelectableDirective.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SelectableDirective.prototype, \"multipleSelection\", void 0);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SelectableDirective.prototype, \"focusedClassName\", null);\n__decorate([\n HostBinding('class.k-state-selected'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SelectableDirective.prototype, \"selectedClassName\", null);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], SelectableDirective.prototype, \"onClick\", null);\nSelectableDirective = __decorate([ __metadata(\"design:paramtypes\", [SelectionService])\n], SelectableDirective);\n\n/**\n * @hidden\n */\nlet TemplateContextDirective = class TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n};\nTemplateContextDirective.ɵfac = function TemplateContextDirective_Factory(t) { return new (t || TemplateContextDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nTemplateContextDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TemplateContextDirective, selectors: [[\"\", \"templateContext\", \"\"]], inputs: { templateContext: \"templateContext\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TemplateContextDirective.prototype, \"templateContext\", null);\nTemplateContextDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef])\n], TemplateContextDirective);\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass BaseCheckDirective {\n addItem(item) {\n if (this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign({}, item, { level });\n this.checkedItems.push(candidate);\n this.checkedKeys.add(valueFrom(candidate, this.valueField));\n }\n removeItem(item) {\n if (!this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign({}, item, { level });\n this.checkedItems = this.checkedItems\n .filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));\n this.checkedKeys.delete(valueFrom(candidate, this.valueField));\n }\n isItemChecked(item) {\n return this.checkedKeys.has(valueFrom(item, this.valueField));\n }\n updateItems() {\n this.checkedItems = this.checkedItems || [];\n this.checkedKeys = new Set(this.checkedItems.map(item => valueFrom(item, this.valueField)));\n }\n}\nBaseCheckDirective.ɵfac = function BaseCheckDirective_Factory(t) { return new (t || BaseCheckDirective)(); };\nBaseCheckDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BaseCheckDirective, inputs: { checkedItems: \"checkedItems\", valueField: \"valueField\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], BaseCheckDirective.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], BaseCheckDirective.prototype, \"checkedItems\", void 0);\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nlet CheckDirective = class CheckDirective extends BaseCheckDirective {\n constructor(treeView) {\n super();\n this.treeView = treeView;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe(this.handleCheckedChange.bind(this)));\n this.treeView.isChecked = this.getCheckedState.bind(this);\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkable)) {\n this.toggleCheckOnClick();\n }\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n getCheckedState(dataItem, index) {\n if (this.isItemChecked({ dataItem, index })) {\n return 'checked';\n }\n else if (this.checkable.checkChildren && this.isItemIndeterminate(this.treeView.itemLookup(index))) {\n return 'indeterminate';\n }\n else {\n return 'none';\n }\n }\n handleCheckedChange(node) {\n this.checkNode(node);\n // parents should be checked if `checkChildren` is set to `true` (single config option for both)\n const checkParents = this.checkable.checkChildren;\n if (checkParents) {\n this.checkParents(node.parent);\n }\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.checkable.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick\n .pipe(filter(event => event.type === 'click'))\n .subscribe(event => {\n const lookup = this.treeView.itemLookup(event.item.index);\n this.handleCheckedChange(lookup);\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(lookup) {\n if (this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index)) {\n return;\n }\n const target = lookup.item;\n const pendingCheck = [target];\n // TODO: extract in a separate `checkChildren` method?\n if (this.checkable.checkChildren) {\n const filter$$1 = (item) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index);\n fetchDescendentNodes(lookup, filter$$1)\n .forEach(lookup => pendingCheck.push(lookup.item));\n }\n const shouldCheck = !this.isItemChecked(target);\n pendingCheck.forEach(item => {\n if (shouldCheck) {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n });\n }\n checkParents(parent) {\n let currentParent = parent;\n while (currentParent) {\n const allChildrenSelected = currentParent.children.every(item => this.isItemChecked(item));\n if (allChildrenSelected) {\n this.addItem(currentParent.item);\n }\n else {\n this.removeItem(currentParent.item);\n }\n currentParent = currentParent.parent;\n }\n }\n isItemIndeterminate(lookup) {\n const children = lookup.children;\n if (!Array.isArray(children) || children.length === 0) {\n return false;\n }\n let index = 0;\n let child = children[index];\n while (isPresent(child)) {\n if (this.isItemChecked(child.item) || this.isItemIndeterminate(child)) {\n return true;\n }\n index += 1;\n child = children[index];\n }\n return false;\n }\n};\nCheckDirective.ɵfac = function CheckDirective_Factory(t) { return new (t || CheckDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.TreeViewComponent)); };\nCheckDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckDirective, selectors: [[\"\", \"kendoMultiSelectTreeCheckable\", \"\"]], inputs: { checkable: \"checkable\", valueField: \"valueField\", checkedItems: \"checkedItems\" }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"checkable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CheckDirective.prototype, \"checkedItems\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckDirective.prototype, \"checkedItemsChange\", void 0);\nCheckDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], CheckDirective);\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nlet CheckAllDirective = class CheckAllDirective extends BaseCheckDirective {\n constructor(element, zone, cdr, renderer) {\n super();\n this.element = element;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n }\n handleChange(event) {\n // Need to store the current checkbox state at the moment of click\n this.currentCheckedState = event.checked;\n this.currentIndeterminateState = this.isIndeterminate;\n this.treeview.nodes.map((_value, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n this.checkNode(itemLookup);\n });\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n get isIndeterminate() {\n const isIndeterminate = this.treeview.nodes.some((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.someChecked(itemLookup);\n });\n return this.isChecked ? false : isIndeterminate;\n }\n get isChecked() {\n const isChecked = this.treeview.nodes.every((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.allChecked(itemLookup);\n });\n return isChecked;\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n this.renderer.setProperty(this.element.nativeElement, 'checked', this.isChecked);\n this.renderer.setProperty(this.element.nativeElement, 'indeterminate', this.isIndeterminate);\n }\n }\n ngOnInit() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n checkNode(itemLookup) {\n if (this.treeview.isDisabled(itemLookup.item.dataItem, itemLookup.item.index)) {\n return;\n }\n const pendingCheck = [];\n const filter$$1 = (item) => this.treeview.isVisible(item.dataItem, item.index) &&\n !this.treeview.isDisabled(item.dataItem, item.index);\n pendingCheck.push(itemLookup.item);\n fetchDescendentNodes(itemLookup, filter$$1)\n .forEach(lookup => pendingCheck.push(lookup.item));\n pendingCheck.forEach(item => {\n if (this.currentIndeterminateState) {\n this.lastAction === 'check' ?\n this.addItem(item) :\n this.removeItem(item);\n return;\n }\n this.currentCheckedState ?\n this.addItem(item) :\n this.removeItem(item);\n });\n }\n allChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.every(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) && this.allChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked && this.isItemChecked(lookup.item);\n }\n someChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.some(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) || this.someChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked || this.isItemChecked(lookup.item);\n }\n};\nCheckAllDirective.ɵfac = function CheckAllDirective_Factory(t) { return new (t || CheckAllDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nCheckAllDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckAllDirective, selectors: [[\"\", \"checkAll\", \"\"]], hostBindings: function CheckAllDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function CheckAllDirective_change_HostBindingHandler($event) { return ctx.handleChange($event.target); });\n } }, inputs: { lastAction: \"lastAction\", treeview: \"treeview\", checkedItems: \"checkedItems\", valueField: \"valueField\", focused: [\"checkAll\", \"focused\"] }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckAllDirective.prototype, \"lastAction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TreeViewComponent)\n], CheckAllDirective.prototype, \"treeview\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CheckAllDirective.prototype, \"checkedItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckAllDirective.prototype, \"valueField\", void 0);\n__decorate([\n Input('checkAll'),\n __metadata(\"design:type\", Boolean)\n], CheckAllDirective.prototype, \"focused\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckAllDirective.prototype, \"checkedItemsChange\", void 0);\n__decorate([\n HostListener('change', ['$event.target']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], CheckAllDirective.prototype, \"handleChange\", null);\nCheckAllDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, NgZone, ChangeDetectorRef, Renderer2])\n], CheckAllDirective);\n\nconst INTERNAL_DIRECTIVES = [\n ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective\n];\n/**\n * @hidden\n */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\n\n/**\n * A directive which configures the MultiSelectTree to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug api_dropdowns_multiselecttreesummarytagdirective %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet MultiSelectTreeSummaryTagDirective = class MultiSelectTreeSummaryTagDirective {\n constructor(multiSelectTreeComponent) {\n this.multiSelectTreeComponent = multiSelectTreeComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectTreeComponent.handleTagMapperChange(this.showAfter);\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectTreeComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n // tags provided in an array are rendered as a single group tag\n return [...tags.slice(0, showAfter), tags.slice(showAfter)];\n }\n else {\n return tags;\n }\n };\n }\n};\nMultiSelectTreeSummaryTagDirective.ɵfac = function MultiSelectTreeSummaryTagDirective_Factory(t) { return new (t || MultiSelectTreeSummaryTagDirective)(ɵngcc0.ɵɵdirectiveInject(MultiSelectTreeComponent)); };\nMultiSelectTreeSummaryTagDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MultiSelectTreeSummaryTagDirective, selectors: [[\"\", \"kendoMultiSelectTreeSummaryTag\", \"\"]], inputs: { showAfter: [\"kendoMultiSelectTreeSummaryTag\", \"showAfter\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('kendoMultiSelectTreeSummaryTag'),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeSummaryTagDirective.prototype, \"showAfter\", void 0);\nMultiSelectTreeSummaryTagDirective = __decorate([ __metadata(\"design:paramtypes\", [MultiSelectTreeComponent])\n], MultiSelectTreeSummaryTagDirective);\n\nconst DROPDOWNTREE_DIRECTIVES = [\n DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective\n];\n/**\n * @hidden\n */\nlet DropDownTreesModule = class DropDownTreesModule {\n};\nDropDownTreesModule.ɵfac = function DropDownTreesModule_Factory(t) { return new (t || DropDownTreesModule)(); };\nDropDownTreesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DropDownTreesModule });\nDropDownTreesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule, TreeViewModule], SharedDirectivesModule] });\n\n/**\n * A directive which configures the MultiSelect to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug summarytagmode_multiselect %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet SummaryTagDirective = class SummaryTagDirective {\n constructor(multiSelectComponent) {\n this.multiSelectComponent = multiSelectComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectComponent.onTagMapperChange();\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n let result;\n result = tags.slice(0, showAfter);\n result.push(tags.slice(showAfter, tags.length));\n return result;\n }\n else {\n return tags;\n }\n };\n }\n};\nSummaryTagDirective.ɵfac = function SummaryTagDirective_Factory(t) { return new (t || SummaryTagDirective)(ɵngcc0.ɵɵdirectiveInject(MultiSelectComponent)); };\nSummaryTagDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SummaryTagDirective, selectors: [[\"\", \"kendoMultiSelectSummaryTag\", \"\"]], inputs: { showAfter: [\"kendoMultiSelectSummaryTag\", \"showAfter\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('kendoMultiSelectSummaryTag'),\n __metadata(\"design:type\", Object)\n], SummaryTagDirective.prototype, \"showAfter\", void 0);\nSummaryTagDirective = __decorate([ __metadata(\"design:paramtypes\", [MultiSelectComponent])\n], SummaryTagDirective);\n\nconst AUTOCOMPLETE_DIRECTIVES = [\n AutoCompleteComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `AutoCompleteComponent`—The AutoComplete component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nlet AutoCompleteModule = class AutoCompleteModule {\n};\nAutoCompleteModule.ɵfac = function AutoCompleteModule_Factory(t) { return new (t || AutoCompleteModule)(); };\nAutoCompleteModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AutoCompleteModule });\nAutoCompleteModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule], SharedDirectivesModule] });\n\nconst COMBOBOX_DIRECTIVES = [\n ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective\n];\nconst ɵ0$4 = touchEnabled;\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ComboBoxComponent`—The ComboBox component class.\n * - `MultiColumnComboBoxComponent`—The MultiColumnComboBox component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `ColumnHeaderTemplateDirective`—The column header template directive.\n * - `ColumnCellTemplateDirective`—The column cell template directive.\n */\nlet ComboBoxModule = class ComboBoxModule {\n};\nComboBoxModule.ɵfac = function ComboBoxModule_Factory(t) { return new (t || ComboBoxModule)(); };\nComboBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ComboBoxModule });\nComboBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$4 }], imports: [[SharedModule], SharedDirectivesModule] });\n\nconst DROPDOWNLIST_DIRECTIVES = [\n DropDownListComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownListComponent`—The DropDownList component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nlet DropDownListModule = class DropDownListModule {\n};\nDropDownListModule.ɵfac = function DropDownListModule_Factory(t) { return new (t || DropDownListModule)(); };\nDropDownListModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DropDownListModule });\nDropDownListModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule], SharedDirectivesModule] });\n\nconst MULTISELECT_DIRECTIVES = [\n MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective\n];\nconst ɵ0$5 = touchEnabled;\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `MultiSelectComponent`—The MultiSelect component class.\n * - `SummaryTagDirective`—The MultiSelect summary tag directive.\n * - `ItemTemplateDirective`—The item template directive.\n * - `CustomItemTemplateDirective`—The custom item template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no-data template directive.\n */\nlet MultiSelectModule = class MultiSelectModule {\n};\nMultiSelectModule.ɵfac = function MultiSelectModule_Factory(t) { return new (t || MultiSelectModule)(); };\nMultiSelectModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MultiSelectModule });\nMultiSelectModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$5 }], imports: [[SharedModule], SharedDirectivesModule] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dropdowns components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Dropdowns module\n * import { DropDownsModule } from '@progress/kendo-angular-dropdowns';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DropDownsModule], // import the Dropdowns module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet DropDownsModule = class DropDownsModule {\n};\nDropDownsModule.ɵfac = function DropDownsModule_Factory(t) { return new (t || DropDownsModule)(); };\nDropDownsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DropDownsModule });\nDropDownsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SearchBarComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-searchbar',\n template: `\n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Renderer2 }]; }, { valueChange: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onNavigate: [{\n type: Output\n }], searchBarClass: [{\n type: HostBinding,\n args: ['class.k-searchbar']\n }], userInput: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], id: [{\n type: Input\n }], listId: [{\n type: Input\n }], tagListId: [{\n type: Input\n }], activeDescendant: [{\n type: Input\n }], noDataLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], popupOpen: [{\n type: Input\n }], role: [{\n type: Input\n }], suggestedText: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListGroupTemplate],[kendoComboBoxGroupTemplate],[kendoMultiColumnComboBoxGroupTemplate],[kendoAutoCompleteGroupTemplate],[kendoMultiSelectGroupTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FixedGroupTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFixedGroupTemplate],[kendoComboBoxFixedGroupTemplate],[kendoMultiColumnComboBoxFixedGroupTemplate],[kendoAutoCompleteFixedGroupTemplate],[kendoMultiSelectFixedGroupTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DisabledItemsService, [{\n type: Injectable\n }], function () { return [{ type: DataService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: DisabledItemsService }, { type: SelectionService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoDataTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListItemDirective, [{\n type: Directive,\n args: [{\n selector: '\"li[role=option], li[role=group]\"' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-list',\n template: `\n
\n \n \n {{ currentGroup }} \n
\n
\n
    \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n 0\"\n role=\"group\"\n class='k-outer-group-header'\n [ngClass]=\"{ 'k-virtual-item': virtual }\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n \n \n {{ dataItem.value }} \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `\n }]\n }], function () { return [{ type: DataService }, { type: ɵngcc0.ElementRef }, { type: SelectionService }, { type: DisabledItemsService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { selected: [{\n type: Input\n }], focused: [{\n type: Input\n }], show: [{\n type: Input\n }], multipleSelection: [{\n type: Input\n }], listClass: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], onClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], listResize: [{\n type: Output\n }], data: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], height: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], fixedGroupTemplate: [{\n type: Input\n }], id: [{\n type: Input\n }], optionPrefix: [{\n type: Input\n }], virtual: [{\n type: Input\n }], items: [{\n type: ViewChildren,\n args: [ListItemDirective]\n }], content: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], virtualContainer: [{\n type: ViewChild,\n args: ['virtualContainer', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AutoCompleteComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoAutoComplete',\n providers: [\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent_1)\n }\n ],\n selector: 'kendo-autocomplete',\n template: `\n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: DataService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { highlightFirst: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], filterable: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-autocomplete']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], virtual: [{\n type: Input\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], valueField: [{\n type: Input\n }], loading: [{\n type: Input\n }], suggest: [{\n type: Input\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ComboBoxComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoComboBox',\n providers: [\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent_1)\n }\n ],\n selector: 'kendo-combobox',\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
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { focusableId: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], suggest: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], filterable: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-combobox']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], virtual: [{\n type: Input\n }], clearable: [{\n type: HostBinding,\n args: ['class.k-combobox-clearable']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], loading: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], select: [{\n type: ViewChild,\n args: ['select', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownListComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownList',\n providers: [\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent_1)\n }\n ],\n selector: 'kendo-dropdownlist',\n template: `\n \n \n \n \n \n \n {{ getText() }}\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n {{ getDefaultItemText() }}\n
\n
\n \n
\n \n \n
\n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { focusableId: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], ignoreCase: [{\n type: Input\n }], delay: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-dropdown']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], virtual: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], itemTemplate: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectCustomItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupTagTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelect',\n providers: [\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent_1)\n }\n ],\n selector: 'kendo-multiselect',\n template: `\n \n \n
\n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n
\n \n \n {{ text }}\n \n
\n
\n \n \n \n \n
\n \n \n \n
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: DataService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { focusableId: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], filterChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], removeTag: [{\n type: Output\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-multiselect']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], placeholder: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], virtual: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], loading: [{\n type: Input\n }], valueField: [{\n type: Input\n }], textField: [{\n type: Input\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], customItemTemplate: [{\n type: ContentChild,\n args: [CustomItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ComboBoxColumnComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-combobox-column',\n template: ''\n }]\n }], function () { return []; }, { hidden: [{\n type: Input\n }], cellTemplate: [{\n type: ContentChild,\n args: [ColumnCellTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [ColumnHeaderTemplateDirective, { static: false }]\n }], field: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], style: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], class: [{\n type: Input\n }], headerClass: [{\n type: Input\n }], media: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiColumnComboBoxComponent, [{\n type: Component,\n args: [{\n providers: [\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n }\n ],\n selector: 'kendo-multicolumncombobox',\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 {{ column.title || column.field }}\n \n \n \n \n \n \n \n
\n
\n \n\n \n \n \n \n \n {{ textFrom(dataItem, column.field) }}\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n
{{ noDataText }}
\n
\n \n\n \n \n
\n \n \n
\n
\n \n\n \n \n\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowngrid']\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], columns: [{\n type: ContentChildren,\n args: [ComboBoxColumnComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NodeTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreeComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownTree',\n providers: [\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n }\n ],\n selector: 'kendo-dropdowntree',\n template: `\n \n \n \n \n \n \n {{ text || placeholder }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc4.PopupService }, { type: NavigationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-dropdowntree-clearable']\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], clearButton: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], clearable: [{\n type: HostBinding,\n args: ['class.k-dropdowntree-clearable']\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], loading: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelectTree',\n providers: [\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n }\n ],\n selector: 'kendo-multiselecttree',\n template: `\n \n \n
\n \n \n \n {{ placeholder }}\n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n
\n \n \n {{ messageFor('checkAllText') }}\n \n
\n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc4.PopupService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: NavigationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }], valueDepth: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], filterable: [{\n type: Input\n }], checkAll: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], removeTag: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], tabindex: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], checkableSettings: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], dataItems: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], checkAllInput: [{\n type: ViewChild,\n args: ['checkAllInput', { static: false }]\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], loading: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreeFlatBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeFlatBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { nodes: [{\n type: Input,\n args: ['kendoDropDownTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreeHierarchyBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeHierarchyBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { data: [{\n type: Input,\n args: ['kendoDropDownTreeHierarchyBinding']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeFlatBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeFlatBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { nodes: [{\n type: Input,\n args: ['kendoMultiSelectTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeHierarchyBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeHierarchyBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { data: [{\n type: Input,\n args: ['kendoMultiSelectTreeHierarchyBinding']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreesExpandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]'\n }]\n }], function () { return [{ type: ɵngcc6.ExpandableComponent }]; }, { isExpanded: [{\n type: Input,\n args: ['isNodeExpanded']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagListComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-taglist',\n template: `\n
    \n \n \n \n \n \n \n {{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected\n \n \n \n \n \n \n {{ tagProp(tag, textField, index) }}\n \n \n\n \n \n \n \n \n
\n `\n }]\n }], function () { return []; }, { disabledIndices: [{\n type: Input\n }], removeTag: [{\n type: Output\n }], tags: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], focused: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tagPrefix: [{\n type: Input\n }], id: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: `\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-dropdownlist-messages,kendo-combobox-messages,kendo-multicolumncombobox-messages,kendo-autocomplete-messages,kendo-multiselect-messages,kendo-dropdowntree-messages,kendo-multiselecttree-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownFilter]'\n }]\n }], function () { return [{ type: FilterableComponent }]; }, { filterable: [{\n type: Input\n }], data: [{\n type: Input\n }], rawSettings: [{\n type: Input,\n args: ['kendoDropDownFilter']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterInputDirective, [{\n type: Directive,\n args: [{\n selector: '[filterInput]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { focused: [{\n type: Input,\n args: ['filterInput']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedDirectivesModule, [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedDirectivesModule, { declarations: [HeaderTemplateDirective, FooterTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, NoDataTemplateDirective, ValueTemplateDirective, TagTemplateDirective, GroupTagTemplateDirective, LocalizedMessagesDirective, CustomMessagesComponent, FilterDirective, FilterInputDirective], exports: [HeaderTemplateDirective, FooterTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, NoDataTemplateDirective, ValueTemplateDirective, TagTemplateDirective, GroupTagTemplateDirective, LocalizedMessagesDirective, CustomMessagesComponent, FilterDirective, FilterInputDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectableDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownsSelectable]'\n }]\n }], function () { return [{ type: SelectionService }]; }, { checkboxes: [{\n type: Input\n }], multipleSelection: [{\n type: Input\n }], focusedClassName: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], selectedClassName: [{\n type: HostBinding,\n args: ['class.k-state-selected']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], index: [{\n type: HostBinding,\n args: ['attr.index']\n }, {\n type: Input\n }], height: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: HostBinding,\n args: ['style.minHeight.px']\n }, {\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplateContextDirective, [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { templateContext: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeCheckable]'\n }]\n }], function () { return [{ type: ɵngcc6.TreeViewComponent }]; }, { checkedItemsChange: [{\n type: Output\n }], checkable: [{\n type: Input\n }], valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckAllDirective, [{\n type: Directive,\n args: [{\n selector: '[checkAll]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }]; }, { checkedItemsChange: [{\n type: Output\n }], handleChange: [{\n type: HostListener,\n args: ['change', ['$event.target']]\n }], lastAction: [{\n type: Input\n }], treeview: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }], valueField: [{\n type: Input\n }], focused: [{\n type: Input,\n args: ['checkAll']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_DIRECTIVES],\n exports: [INTERNAL_DIRECTIVES, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule],\n imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: function () { return [ListComponent, ListItemDirective, SelectableDirective, SearchBarComponent, TemplateContextDirective, TagListComponent, CheckDirective, CheckAllDirective]; }, imports: function () { return [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]; }, exports: function () { return [ListComponent, ListItemDirective, SelectableDirective, SearchBarComponent, TemplateContextDirective, TagListComponent, CheckDirective, CheckAllDirective, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeSummaryTagDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeSummaryTag]'\n }]\n }], function () { return [{ type: MultiSelectTreeComponent }]; }, { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectTreeSummaryTag']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreesModule, [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNTREE_DIRECTIVES],\n exports: [DROPDOWNTREE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule, TreeViewModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DropDownTreesModule, { declarations: function () { return [DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, NodeTemplateDirective, MultiSelectTreeSummaryTagDirective]; }, imports: function () { return [SharedModule, TreeViewModule]; }, exports: function () { return [DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, NodeTemplateDirective, MultiSelectTreeSummaryTagDirective, SharedDirectivesModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SummaryTagDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectSummaryTag]'\n }]\n }], function () { return [{ type: MultiSelectComponent }]; }, { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectSummaryTag']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AutoCompleteModule, [{\n type: NgModule,\n args: [{\n declarations: [AUTOCOMPLETE_DIRECTIVES],\n exports: [AUTOCOMPLETE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AutoCompleteModule, { declarations: [AutoCompleteComponent], imports: [SharedModule], exports: [AutoCompleteComponent, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ComboBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [COMBOBOX_DIRECTIVES],\n exports: [COMBOBOX_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$4 }]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ComboBoxModule, { declarations: [ComboBoxComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnHeaderTemplateDirective, ColumnCellTemplateDirective], imports: [SharedModule], exports: [ComboBoxComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnHeaderTemplateDirective, ColumnCellTemplateDirective, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownListModule, [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNLIST_DIRECTIVES],\n exports: [DROPDOWNLIST_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DropDownListModule, { declarations: [DropDownListComponent], imports: [SharedModule], exports: [DropDownListComponent, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectModule, [{\n type: NgModule,\n args: [{\n declarations: [MULTISELECT_DIRECTIVES],\n exports: [MULTISELECT_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$5 }]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MultiSelectModule, { declarations: [MultiSelectComponent, SummaryTagDirective, CustomItemTemplateDirective], imports: [SharedModule], exports: [MultiSelectComponent, SummaryTagDirective, CustomItemTemplateDirective, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownsModule, [{\n type: NgModule,\n args: [{\n exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DropDownsModule, { exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTOCOMPLETE_VALUE_ACCESSOR, COMBOBOX_VALUE_ACCESSOR, TOUCH_ENABLED, DataService, DisabledItemsService, FilterInputDirective, FilterableComponent, ListItemDirective, CustomMessagesComponent, LocalizedMessagesDirective, Messages, NavigationService, SearchBarComponent, SelectionService, TagListComponent, NoDataTemplateDirective, TagTemplateDirective, DROPDOWNLIST_VALUE_ACCESSOR, BaseCheckDirective, CheckAllDirective, CheckDirective, MultiSelectTreeSummaryTagDirective, AutoCompleteComponent, ComboBoxComponent, DropDownListComponent, MultiSelectComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, NodeTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, CustomItemTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ValueTemplateDirective, TemplateContextDirective, GroupTagTemplateDirective, SelectableDirective, SummaryTagDirective, FilterDirective, DropDownsModule, MultiSelectModule, SharedModule, AutoCompleteModule, ComboBoxModule, DropDownListModule, SharedDirectivesModule, ListComponent, PreventableEvent, RemoveTagEvent };\n\n","import { not } from '../util/not';\nimport { filter } from './filter';\nexport function partition(predicate, thisArg) {\n return (source) => [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg))(source)\n ];\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __param, __metadata } from 'tslib';\nimport { isDevMode, Directive, Optional, TemplateRef, EventEmitter, Input, Output, HostBinding, ViewChild, ElementRef, ContentChild, Component, forwardRef, Injector, Renderer2, NgZone, ChangeDetectorRef, Inject, Injectable, HostListener, ViewChildren, QueryList, NgModule, ViewContainerRef, ContentChildren } from '@angular/core';\nimport { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, RadioControlValueAccessor } from '@angular/forms';\nimport { Subscription, fromEvent, interval, merge, Observable, Subject } from 'rxjs';\nimport { take, filter, concatMap, startWith, takeUntil, skip, debounceTime, throttleTime } from 'rxjs/operators';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages, MessageService } from '@progress/kendo-angular-l10n';\nimport { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { browser, mobileOS, detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';\nimport { IntlService } from '@progress/kendo-angular-intl';\nimport { CommonModule } from '@angular/common';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { Color, parseColor, namedColors } from '@progress/kendo-drawing';\n\n/**\n * @hidden\n *\n * Checks if the value is `null` or `undefined`. Falsy values like '', 0, false, NaN, etc. are regarded as present.\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@progress/kendo-angular-common';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@progress/kendo-angular-intl';\nimport * as ɵngcc5 from '@progress/kendo-angular-popup';\n\nconst _c0 = [\"wrap\"];\nconst _c1 = [\"track\"];\nconst _c2 = [\"sliderSelection\"];\nconst _c3 = [\"ticks\"];\nconst _c4 = [\"draghandle\"];\nconst _c5 = [\"decreaseButton\"];\nconst _c6 = [\"increaseButton\"];\nfunction SliderComponent_button_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 14, 15);\n ɵngcc0.ɵɵelement(2, \"span\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"title\", ctx_r1.decrementMessage);\n ɵngcc0.ɵɵattribute(\"tabindex\", -1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-i-arrow-w\", !ctx_r1.vertical)(\"k-i-arrow-s\", ctx_r1.vertical);\n} }\nfunction SliderComponent_ul_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 17, 18);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tickTitle\", ctx_r2.title)(\"vertical\", ctx_r2.vertical)(\"step\", ctx_r2.smallStep)(\"largeStep\", ctx_r2.largeStep)(\"min\", ctx_r2.min)(\"max\", ctx_r2.max)(\"labelTemplate\", ctx_r2.labelTemplate == null ? null : ctx_r2.labelTemplate.templateRef);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n} }\nfunction SliderComponent_button_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 19, 20);\n ɵngcc0.ɵɵlistener(\"click\", function SliderComponent_button_12_Template_button_click_0_listener($event) { return $event.preventDefault(); });\n ɵngcc0.ɵɵelement(2, \"span\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"title\", ctx_r6.incrementMessage);\n ɵngcc0.ɵɵattribute(\"tabindex\", -1)(\"aria-label\", ctx_r6.currentValue);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-i-arrow-e\", !ctx_r6.vertical)(\"k-i-arrow-n\", ctx_r6.vertical);\n} }\nconst _c13 = function (a0, a1) { return { click: a0, keydown: a1 }; };\nconst _c14 = [\"draghandleStart\"];\nconst _c15 = [\"draghandleEnd\"];\nfunction RangeSliderComponent_ul_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 13, 14);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tickTitle\", ctx_r1.title)(\"vertical\", ctx_r1.vertical)(\"step\", ctx_r1.smallStep)(\"largeStep\", ctx_r1.largeStep)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"labelTemplate\", ctx_r1.labelTemplate == null ? null : ctx_r1.labelTemplate.templateRef);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n} }\nconst _c20 = [\"wrapper\"];\nconst _c25 = function (a0, a1, a2, a3) { return { click: a0, keydown: a1, focus: a2, blur: a3 }; };\nfunction TextBoxContainerComponent_label_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"label\", 1);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"for\", ctx_r0.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.floatingLabel);\n} }\nconst _c26 = [\"*\"];\nconst _c27 = [\"numericInput\"];\nconst _c28 = [\"numericWrap\"];\nconst _c33 = function (a0, a1) { return { mouseup: a0, mouseleave: a1 }; };\nconst _c34 = function (a0) { return { mousedown: a0 }; };\nfunction NumericTextBoxComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6)(1, \"span\", 7);\n ɵngcc0.ɵɵelement(2, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 9);\n ɵngcc0.ɵɵelement(4, \"span\", 10);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(11, _c33, ctx_r2.releaseArrow, ctx_r2.releaseArrow));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r2.arrowDirection === ctx_r2.ArrowDirection.Up);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(14, _c34, ctx_r2.increasePress))(\"title\", ctx_r2.incrementTitle);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.incrementTitle);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r2.arrowDirection === ctx_r2.ArrowDirection.Down);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(16, _c34, ctx_r2.decreasePress))(\"title\", ctx_r2.decrementTitle);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.decrementTitle);\n} }\nconst _c35 = function (a0, a1) { return { mousewheel: a0, DOMMouseScroll: a1 }; };\nconst _c36 = function (a0, a1, a2, a3, a4, a5, a6) { return { mousedown: a0, dragenter: a1, keydown: a2, input: a3, focus: a4, blur: a5, paste: a6 }; };\nconst _c37 = [\"input\"];\nconst _c38 = function (a0, a1, a2, a3, a4) { return { focus: a0, blur: a1, click: a2, dragstart: a3, drop: a4 }; };\nconst _c39 = [\"tickElement\"];\nconst _c40 = [\"kendoSliderTicks\", \"\"];\nfunction SliderTicksComponent_li_0_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 7);\n ɵngcc0.ɵɵelementContainer(1, 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n const _r1 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.labelTemplate || _r1)(\"ngTemplateOutletContext\", tick_r3);\n} }\nfunction SliderTicksComponent_li_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1, \"\\u00A0\");\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction SliderTicksComponent_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 2, 3);\n ɵngcc0.ɵɵelementContainerStart(2, 4);\n ɵngcc0.ɵɵtemplate(3, SliderTicksComponent_li_0_span_3_Template, 2, 2, \"span\", 5);\n ɵngcc0.ɵɵtemplate(4, SliderTicksComponent_li_0_ng_container_4_Template, 2, 0, \"ng-container\", 6);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r3 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵpropertyInterpolate(\"title\", ctx_r0.tickTitle(tick_r3.value));\n ɵngcc0.ɵɵproperty(\"ngClass\", tick_r3.classes);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", tick_r3.large);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n} }\nfunction SliderTicksComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const value_r8 = ctx.value;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r2.tickTitle(value_r8), \" \");\n} }\nfunction TextBoxComponent_2_ng_template_0_Template(rf, ctx) { }\nfunction TextBoxComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TextBoxComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.prefixTemplate == null ? null : ctx_r0.prefixTemplate.templateRef);\n} }\nfunction TextBoxComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r2.errorIconClasses);\n} }\nfunction TextBoxComponent_span_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r3.successIconClasses);\n} }\nfunction TextBoxComponent_span_8_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function TextBoxComponent_span_8_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.clearValue(); })(\"mousedown\", function TextBoxComponent_span_8_Template_span_mousedown_0_listener($event) { return $event.preventDefault(); })(\"keydown.enter\", function TextBoxComponent_span_8_Template_span_keydown_enter_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.clearValue($event); })(\"keydown.space\", function TextBoxComponent_span_8_Template_span_keydown_space_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.clearValue($event); });\n ɵngcc0.ɵɵelement(1, \"span\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r4.tabIndex)(\"title\", ctx_r4.clearTitle());\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r4.clearTitle());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.clearButtonClasses);\n} }\nfunction TextBoxComponent_9_ng_template_0_Template(rf, ctx) { }\nfunction TextBoxComponent_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TextBoxComponent_9_ng_template_0_Template, 0, 0, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.suffixTemplate == null ? null : ctx_r5.suffixTemplate.templateRef);\n} }\nconst _c43 = function (a0, a1, a2) { return { focus: a0, blur: a1, input: a2 }; };\nconst _c44 = [[[\"kendo-textarea-suffix\"]]];\nconst _c45 = [\"kendo-textarea-suffix\"];\nconst _c46 = [\"opacityInput\"];\nconst _c47 = [\"toggleFormatButton\"];\nfunction ColorInputComponent_input_4_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"input\", 6, 7);\n ɵngcc0.ɵɵlistener(\"blur\", function ColorInputComponent_input_4_Template_input_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.handleHexInputBlur(); })(\"input\", function ColorInputComponent_input_4_Template_input_input_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const _r3 = ɵngcc0.ɵɵreference(1); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.handleHexValueChange(_r3.value); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled)(\"readonly\", ctx_r1.readonly)(\"value\", ctx_r1.hex || \"\")(\"placeholder\", ctx_r1.textFor(\"hexInputPlaceholder\"));\n} }\nfunction ColorInputComponent_ng_container_5_div_16_Template(rf, ctx) { if (rf & 1) {\n const _r14 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"kendo-numerictextbox\", 14, 15);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_div_16_Template_kendo_numerictextbox_valueChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r13 = ɵngcc0.ɵɵnextContext(2); return ctx_r13.rgba.a = $event; })(\"blur\", function ColorInputComponent_ng_container_5_div_16_Template_kendo_numerictextbox_blur_1_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_div_16_Template_kendo_numerictextbox_valueChange_1_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"label\", 10);\n ɵngcc0.ɵɵtext(5, \"A\");\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const _r12 = ɵngcc0.ɵɵreference(3);\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r10.disabled)(\"readonly\", ctx_r10.readonly)(\"min\", 0)(\"max\", 1)(\"placeholder\", ctx_r10.textFor(\"alphaInputPlaceholder\"))(\"value\", ctx_r10.rgba.a)(\"autoCorrect\", true)(\"spinners\", false)(\"step\", 0.01)(\"format\", \"n2\")(\"decimals\", 2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"for\", _r12.focusableId);\n} }\nfunction ColorInputComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 0)(2, \"kendo-numerictextbox\", 8, 9);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ctx_r17.rgba.r = $event; })(\"blur\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_blur_2_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ctx_r19.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_2_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"label\", 10);\n ɵngcc0.ɵɵtext(5, \"R\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(6, \"div\", 0)(7, \"kendo-numerictextbox\", 8, 11);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_7_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.rgba.g = $event; })(\"blur\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_blur_7_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_7_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r23 = ɵngcc0.ɵɵnextContext(); return ctx_r23.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"label\", 10);\n ɵngcc0.ɵɵtext(10, \"G\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(11, \"div\", 0)(12, \"kendo-numerictextbox\", 8, 12);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_12_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.rgba.b = $event; })(\"blur\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_blur_12_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_12_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r26 = ɵngcc0.ɵɵnextContext(); return ctx_r26.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(14, \"label\", 10);\n ɵngcc0.ɵɵtext(15, \"B\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(16, ColorInputComponent_ng_container_5_div_16_Template, 6, 12, \"div\", 13);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r7 = ɵngcc0.ɵɵreference(3);\n const _r8 = ɵngcc0.ɵɵreference(8);\n const _r9 = ɵngcc0.ɵɵreference(13);\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"readonly\", ctx_r2.readonly)(\"min\", 0)(\"max\", 255)(\"placeholder\", ctx_r2.textFor(\"redInputPlaceholder\"))(\"value\", ctx_r2.rgba.r)(\"autoCorrect\", true)(\"spinners\", false)(\"format\", \"n\")(\"decimals\", 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", _r7.focusableId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"readonly\", ctx_r2.readonly)(\"min\", 0)(\"max\", 255)(\"placeholder\", ctx_r2.textFor(\"greenInputPlaceholder\"))(\"value\", ctx_r2.rgba.g)(\"autoCorrect\", true)(\"spinners\", false)(\"format\", \"n\")(\"decimals\", 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", _r8.focusableId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"readonly\", ctx_r2.readonly)(\"min\", 0)(\"max\", 255)(\"placeholder\", ctx_r2.textFor(\"blueInputPlaceholder\"))(\"value\", ctx_r2.rgba.b)(\"autoCorrect\", true)(\"spinners\", false)(\"format\", \"n\")(\"decimals\", 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", _r9.focusableId);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.opacity);\n} }\nconst _c48 = [\"gradientDragHandle\"];\nconst _c49 = [\"inputs\"];\nconst _c50 = [\"alphaSlider\"];\nconst _c51 = [\"gradientWrapper\"];\nfunction ColorGradientComponent_span_8_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 13);\n ɵngcc0.ɵɵlistener(\"click\", function ColorGradientComponent_span_8_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.reset(); })(\"keydown.enter\", function ColorGradientComponent_span_8_Template_span_keydown_enter_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.reset(); })(\"keydown.space\", function ColorGradientComponent_span_8_Template_span_keydown_space_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.reset(); });\n ɵngcc0.ɵɵelement(1, \"span\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.clearButtonTitle)(\"title\", ctx_r2.clearButtonTitle);\n} }\nconst _c78 = function (a0) { return { \"k-align-self-end\": a0 }; };\nfunction ColorGradientComponent_kendo_slider_10_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-slider\", 15, 16);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorGradientComponent_kendo_slider_10_Template_kendo_slider_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.handleAlphaSliderChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(12, _c78, ctx_r3.clearButton))(\"dragHandleTitle\", ctx_r3.opacitySliderTitle)(\"disabled\", ctx_r3.disabled)(\"readonly\", ctx_r3.readonly)(\"showButtons\", false)(\"tickPlacement\", \"none\")(\"vertical\", true)(\"min\", 0)(\"max\", 100)(\"smallStep\", 1)(\"largeStep\", 10)(\"value\", ctx_r3.alphaSliderValue);\n} }\nfunction ColorGradientComponent_div_13_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 17);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", ctx_r5.value)(\"ratio\", ctx_r5.contrastTool);\n} }\nconst _c79 = [\"palette\"];\nconst _c80 = [\"container\"];\nconst _c81 = [\"popupTemplate\"];\nconst _c82 = [\"colorGradient\"];\nfunction ColorPickerComponent_span_3_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 11);\n} }\nfunction ColorPickerComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerComponent_span_3_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.handleActiveColorClick(); });\n ɵngcc0.ɵɵtemplate(1, ColorPickerComponent_span_3_span_1_Template, 1, 0, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx_r1.value);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.value);\n} }\nfunction ColorPickerComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerComponent_span_4_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.handleActiveColorClick(); });\n ɵngcc0.ɵɵelement(1, \"span\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r2.iconStyles);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx_r2.value);\n} }\nfunction ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-colorgradient\", 16, 17);\n ɵngcc0.ɵɵlistener(\"focusout\", function ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template_kendo_colorgradient_focusout_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.handlePopupBlur($event); })(\"valueChange\", function ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template_kendo_colorgradient_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleValueChange($event, false); })(\"keydown\", function ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template_kendo_colorgradient_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r17 = ɵngcc0.ɵɵnextContext(2); return ctx_r17.handlePopupKeyDown($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r11.value)(\"format\", ctx_r11.format)(\"opacity\", ctx_r11.gradientSettings.opacity)(\"clearButton\", ctx_r11.gradientSettings.clearButton)(\"delay\", ctx_r11.gradientSettings.delay);\n} }\nfunction ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-colorpalette\", 18, 19);\n ɵngcc0.ɵɵlistener(\"blur\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_blur_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.handlePopupBlur($event); })(\"cellSelection\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_cellSelection_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r21 = ɵngcc0.ɵɵnextContext(2); return ctx_r21.handleValueChange($event, true); })(\"mousedown\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_mousedown_0_listener($event) { return $event.preventDefault(); })(\"keydown\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r23 = ɵngcc0.ɵɵnextContext(2); return ctx_r23.handlePopupKeyDown($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"palette\", ctx_r12.paletteSettings.palette)(\"columns\", ctx_r12.paletteSettings.columns)(\"tileSize\", ctx_r12.paletteSettings.tileSize)(\"format\", ctx_r12.format)(\"value\", ctx_r12.value);\n} }\nfunction ColorPickerComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template, 2, 5, \"kendo-colorgradient\", 14);\n ɵngcc0.ɵɵtemplate(1, ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template, 2, 5, \"kendo-colorpalette\", 15);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.view === \"gradient\" || ctx_r4.view === \"combo\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.view === \"palette\" || ctx_r4.view === \"combo\");\n} }\nconst _c101 = function (a1, a2) { return { \"k-picker-wrap\": true, \"k-state-disabled\": a1, \"k-state-focused\": a2 }; };\nconst _c104 = function (a0, a1, a2, a3) { return { backgroundColor: a0, width: a1, height: a2, minWidth: a3 }; };\nfunction ColorPaletteComponent_tr_4_td_1_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPaletteComponent_tr_4_td_1_Template_td_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const color_r4 = restoredCtx.$implicit; const colIndex_r5 = restoredCtx.index; const rowIndex_r2 = ɵngcc0.ɵɵnextContext().index; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.handleCellSelection(color_r4, { row: rowIndex_r2, col: colIndex_r5 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const color_r4 = ctx.$implicit;\n const colIndex_r5 = ctx.index;\n const rowIndex_r2 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-state-selected\", (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.row) === rowIndex_r2 && (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.col) === colIndex_r5)(\"k-state-focus\", ctx_r3.focusInComponent && (ctx_r3.focusedCell == null ? null : ctx_r3.focusedCell.row) === rowIndex_r2 && (ctx_r3.focusedCell == null ? null : ctx_r3.focusedCell.col) === colIndex_r5);\n ɵngcc0.ɵɵproperty(\"id\", rowIndex_r2 + \"-\" + colIndex_r5)(\"ngStyle\", ɵngcc0.ɵɵpureFunction4(9, _c104, color_r4, ctx_r3.tileLayout.width + \"px\", ctx_r3.tileLayout.height + \"px\", ctx_r3.tileLayout.width + \"px\"));\n ɵngcc0.ɵɵattribute(\"aria-selected\", (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.row) === rowIndex_r2 && (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.col) === colIndex_r5)(\"aria-label\", color_r4)(\"value\", color_r4);\n} }\nfunction ColorPaletteComponent_tr_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, ColorPaletteComponent_tr_4_td_1_Template, 1, 14, \"td\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const row_r1 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", row_r1);\n} }\nconst _c105 = [\"kendoContrastValidation\", \"\"];\nfunction ContrastValidationComponent_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelement(2, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.passMessage, \" \");\n} }\nfunction ContrastValidationComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelement(2, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.failMessage, \" \");\n} }\nconst _c106 = [\"kendoContrastTool\", \"\"];\nfunction ContrastComponent_span_3_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 7);\n} }\nfunction ContrastComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵelement(1, \"span\", 7);\n ɵngcc0.ɵɵtemplate(2, ContrastComponent_span_3_span_2_Template, 1, 0, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.satisfiesAAACondition);\n} }\nfunction ContrastComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵelement(1, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction FormFieldComponent_ng_content_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 2, [\"*ngIf\", \"hasHints\"]);\n} }\nfunction FormFieldComponent_ng_content_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 3, [\"*ngIf\", \"hasErrors\"]);\n} }\nconst _c107 = [[[\"label\"], [\"kendo-label\"]], \"*\", [[\"kendo-formhint\"]], [[\"kendo-formerror\"]]];\nconst _c108 = [\"label, kendo-label\", \"*\", \"kendo-formhint\", \"kendo-formerror\"];\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst areSame = (value1, value2) => value1 === value2 || (value1 === null && value2 === undefined) || (value1 === undefined && value2 === null);\n/**\n * @hidden\n */\nconst requiresZoneOnBlur = (ngControl) => ngControl &&\n (!ngControl.touched || (ngControl.control && ngControl.control.updateOn === 'blur'));\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds. If the number is NaN or null, the min is returned.\n *\n * @param contender Represents the number you want to fit into specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\nconst fitIntoBounds = (contender, min, max) => {\n if (!isPresent(contender) || isNaN(contender)) {\n return min;\n }\n return contender <= min ? min : contender >= max ? max : contender;\n};\n\n/**\n * @hidden\n */\nconst MAX_PRECISION = 20;\n/**\n * @hidden\n */\nconst limitPrecision = (precision) => Math.min(precision, MAX_PRECISION);\n/**\n * @hidden\n */\nconst fractionLength = (value) => {\n return (String(value).split('.')[1] || \"\").length;\n};\nconst maxFractionLength = (value1, value2) => {\n return Math.max(fractionLength(value1), fractionLength(value2));\n};\n/**\n * @hidden\n */\nconst toFixedPrecision = (value, precision) => {\n const maxPrecision = limitPrecision(precision);\n return parseFloat(value.toFixed(maxPrecision));\n};\n/**\n * @hidden\n */\nconst add = (value1, value2) => {\n const maxPrecision = maxFractionLength(value1, value2);\n return toFixedPrecision(value1 + value2, maxPrecision);\n};\n/**\n * @hidden\n */\nconst subtract = (value1, value2) => {\n return add(value1, -value2);\n};\n/**\n * @hidden\n */\nconst multiply = (value1, value2) => {\n const maxPrecision = fractionLength(value1) + fractionLength(value2);\n return toFixedPrecision(value1 * value2, maxPrecision);\n};\n/**\n * @hidden\n */\nconst divide = (dividend, divisor) => {\n if (divisor === 0) {\n return NaN;\n }\n const power = maxFractionLength(dividend, divisor);\n const correctionValue = Math.pow(10, power);\n return ((correctionValue * dividend) / (correctionValue * divisor));\n};\n/**\n * @hidden\n */\nconst remainder = (dividend, divisor) => {\n return Math.abs(subtract(dividend, multiply(divisor, Math.floor(divide(dividend, divisor)))));\n};\n\n/**\n * @hidden\n */\nconst calculateFixedTrackSize = ({ max, min, smallStep, fixedTickWidth }) => ((max - min) / smallStep) * fixedTickWidth;\n/**\n * @hidden\n */\nconst calculateTicksCount = (min = 0, max = 0, smallStep = 1) => {\n if (smallStep <= 0) {\n throw new Error('Invalid argument: smallStep must be a positive number');\n }\n const adjustedRange = Math.abs(subtract(max, min));\n const adjustedRatio = Math.floor(divide(adjustedRange, smallStep));\n const result = add(adjustedRatio, 1);\n return result;\n};\n/**\n * @hidden\n */\nconst calculateValueFromTick = (index, { max, min, smallStep, reverse, vertical }) => {\n const value = add(min, multiply(index, smallStep));\n return vertical || reverse ? Math.abs(subtract(value, max)) : value;\n};\n/**\n * @hidden\n */\nconst calculateHandlePosition = ({ trackWidth, min, max, reverse, value }) => {\n const step = trackWidth / Math.abs(max - min);\n let pos = isPresent(value) ? step * (value - min) : min;\n if (reverse) {\n pos = trackWidth - pos;\n }\n return Math.floor(pos);\n};\n/**\n * @hidden\n */\nconst decreaseValueToStep = (value, { max, min, smallStep, largeStep }, large = false) => {\n const step = large && largeStep ? multiply(smallStep, largeStep) : smallStep;\n const stepValue = subtract(value, min);\n let result;\n const stepRemainder = remainder(stepValue, step);\n if (stepRemainder === 0) {\n result = subtract(stepValue, step);\n }\n else {\n result = subtract(stepValue, stepRemainder);\n }\n return limitValue(add(result, min), min, max);\n};\n/**\n * @hidden\n */\nconst increaseValueToStep = (value, { max, min, smallStep, largeStep }, large = false) => {\n const step = large && largeStep ? multiply(smallStep, largeStep) : smallStep;\n const stepValue = subtract(value, min);\n const stepRemainder = remainder(stepValue, step);\n const result = add(subtract(stepValue, stepRemainder), step);\n return limitValue(add(result, min), min, max);\n};\n/**\n * @hidden\n */\nconst isStartHandle = (dragHandle) => dragHandle.id.indexOf('k-start-handle') > -1;\n/**\n * @hidden\n */\nconst snapValue = (value, options) => {\n const { smallStep, min, max } = options;\n const limited = limitValue(value, min, max);\n if (value !== limited) {\n return limited;\n }\n const left = decreaseValueToStep(value, options);\n const right = increaseValueToStep(value, options);\n if ((value - min) % smallStep === 0) {\n return value;\n }\n if (right - value <= (right - left) / 2) {\n return right;\n }\n return left;\n};\n/**\n * @hidden\n */\nconst trimValue = (max, min, value) => {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n return value;\n};\n/**\n * @hidden\n */\nconst trimValueRange = (max, min, value) => {\n return value ? [trimValue(max, min, value[0]), trimValue(max, min, value[1])] : [min, min];\n};\n/**\n * @hidden\n */\nconst identity = (value) => value;\n/**\n * @hidden\n */\nconst isSameRange = (value1, value2) => areSame(value1[0], value2[0]) && areSame(value1[1], value2[1]);\n/**\n * @hidden\n */\nconst elementOffset = (element) => {\n const box = element.getBoundingClientRect();\n const documentElement = document.documentElement;\n return {\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0),\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0)\n };\n};\n/**\n * @hidden\n */\nconst limitValue = (value, min, max) => {\n return Math.max(Math.min(value, max), min);\n};\n/**\n * @hidden\n */\nconst eventValue = (eventArgs, scaleElement, options) => {\n const { min, max, vertical, rtl } = options;\n const trackOffset = elementOffset(scaleElement);\n const offset = vertical ? eventArgs.pageY - trackOffset.top : eventArgs.pageX - trackOffset.left;\n const scale = (max - min) / (vertical ? scaleElement.clientHeight : scaleElement.clientWidth);\n const offsetValue = offset * scale;\n let value = rtl || vertical ? max - offsetValue : min + offsetValue;\n const stepFractionLength = fractionLength(options.smallStep);\n value = toFixedPrecision(value, stepFractionLength + 1);\n return snapValue(value, options);\n};\n/**\n * @hidden\n */\nconst isButton = (element) => {\n return element.className.indexOf('k-button-increase') >= 0 || element.className.indexOf('k-button-decrease') >= 0;\n};\n/**\n * @hidden\n */\nconst increment = (options) => {\n return increaseValueToStep(options.value, options);\n};\n/**\n * @hidden\n */\nconst decrement = (options) => {\n return decreaseValueToStep(options.value, options);\n};\n/**\n * @hidden\n */\nconst incrementLarge = (options) => {\n return increaseValueToStep(options.value, options, true);\n};\n/**\n * @hidden\n */\nconst decrementLarge = (options) => {\n return decreaseValueToStep(options.value, options, true);\n};\n/**\n * @hidden\n */\nconst validateValue = (value) => {\n if (isDevMode && value && value[0] > value[1]) {\n throw new Error('[RangeSlider] The start value should not be greater than the end value.');\n }\n};\n\n/**\n * @hidden\n */\nclass SliderModelBase {\n constructor(props, wrapper, track, renderer) {\n this.props = props;\n this.wrapper = wrapper;\n this.track = track;\n this.renderer = renderer;\n this.props = props;\n this.wrapper = wrapper;\n this.track = track;\n this.tickSizes = this.getTickSizes();\n }\n resizeTrack() {\n const orientation = this.props.vertical ? 'height' : 'width';\n const altOrientation = this.props.vertical ? 'width' : 'height';\n const trackWidth = this.trackWidth();\n this.track.parentElement.style[orientation] = `${trackWidth}px`;\n this.track.parentElement.style[altOrientation] = '';\n }\n resizeTicks(ticksContainer, ticks) {\n const dimension = this.props.vertical ? \"height\" : \"width\";\n [...ticks].map((tick, index) => tick.style[dimension] = `${this.tickSizes[index]}px`);\n if (this.props.vertical) {\n this.adjustPadding(ticksContainer);\n }\n }\n resizeWrapper() {\n const dimension = this.props.vertical ? \"height\" : \"width\";\n const fixedTrackWidth = calculateFixedTrackSize(this.props);\n const wrapperParentEl = this.wrapper.parentElement;\n if (fixedTrackWidth) {\n wrapperParentEl.style[dimension] = \"auto\";\n }\n }\n trackWidth() {\n if (this.props.fixedTickWidth) {\n return calculateFixedTrackSize(this.props);\n }\n return this.elementSize(this.track.parentElement);\n }\n getTickSizes() {\n const { min, max, smallStep } = this.props;\n const count = calculateTicksCount(min, max, smallStep);\n const trackSize = this.trackWidth();\n const distStep = trackSize / subtract(max, min);\n const result = [];\n let usedSpace = 0;\n let endPoint = 0;\n for (let i = 0; i < count; i++) {\n if (i === 0 || i === count - 1) {\n endPoint += (smallStep / 2) * distStep;\n }\n else {\n endPoint += smallStep * distStep;\n }\n // ensure that the sum of the tick sizes does not exceed the track width\n endPoint = +endPoint.toFixed(2) - 0.01;\n const size = Math.round(endPoint - usedSpace);\n result.push(size);\n usedSpace += size;\n }\n if (usedSpace >= trackSize) {\n result[result.length - 1] -= 1;\n }\n return result;\n }\n adjustPadding(ticksContainer) {\n const totalTickSize = this.tickSizes.reduce((prev, curr) => prev + curr, 0);\n const trackWidth = this.trackWidth();\n const reminder = trackWidth - totalTickSize;\n if (reminder !== 0) {\n const padding = reminder + this.elementOffset(this.track);\n ticksContainer.style.paddingTop = `${padding}px`;\n }\n }\n elementOffset(element) {\n const { vertical } = this.props;\n const style = getComputedStyle(element);\n return parseInt(vertical ? style.bottom : style.left, 10);\n }\n elementSize(element) {\n const { vertical } = this.props;\n return vertical ? element.clientHeight : element.clientWidth;\n }\n}\n\n/**\n * @hidden\n */\nclass SliderModel extends SliderModelBase {\n positionHandle(dragHandle) {\n const { max, min, reverse, vertical } = this.props;\n const position = vertical ? 'bottom' : 'left';\n const trackWidth = this.trackWidth();\n const value = trimValue(max, min, this.props.value);\n this.handlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.handlePosition}px`);\n }\n positionSelection(selection) {\n const { reverse, vertical } = this.props;\n const dimension = vertical ? 'height' : 'width';\n let size = this.handlePosition;\n if (reverse) {\n size = this.trackWidth() - size;\n }\n this.renderer.setStyle(selection, dimension, `${size}px`);\n }\n}\n\nconst UNTOUCHED = 'ng-untouched';\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClass = (element, className) => Boolean(toClassList(element.className).find((name) => name === className));\n/**\n * @hidden\n */\nfunction invokeElementMethod(element, name, ...args) {\n if (element && element.nativeElement) {\n return element.nativeElement[name].apply(element.nativeElement, args);\n }\n}\n/**\n * @hidden\n */\nconst isUntouched = (element) => element && element.nativeElement && hasClass(element.nativeElement, UNTOUCHED);\n/**\n * @hidden\n */\nconst containsFocus = (hostElement, contender) => hostElement && contender && (hostElement === contender || hostElement.contains(contender));\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-inputs',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1642518309,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the template for the labels of the Slider.\n * To define the labels template, nest an `` tag with the `kendoSliderLabelTemplate` directive inside\n * the `` tag. The template context is passed to the `label` value.\n *\n * @example\n * ```ts-no-run\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{value}}\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * }\n *\n * ```\n */\nlet LabelTemplateDirective = class LabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nLabelTemplateDirective.ɵfac = function LabelTemplateDirective_Factory(t) { return new (t || LabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LabelTemplateDirective, selectors: [[\"\", \"kendoSliderLabelTemplate\", \"\"]] });\nLabelTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], LabelTemplateDirective);\n\n/**\n * @hidden\n */\nclass SliderBase {\n constructor(localizationService, injector, renderer, ngZone, changeDetector, hostElement) {\n this.localizationService = localizationService;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * Defines the title of the ticks ([see example]({% slug ticks_slider %}#toc-titles)). The default title\n * for each tick is its Slider value. If you use a callback function, the function accepts an argument\n * that holds the value of the component and returns a string with the new title.\n */\n this.title = identity;\n /**\n * Denotes the location of the tick marks in the Slider ([see example]({% slug ticks_slider %}#toc-placement)).\n *\n * The available options are:\n * * `before`—The tick marks are located to the top side of the horizontal track or to the left side of a vertical track.\n * * `after`—The tick marks are located to the bottom side of the horizontal track or to the right side of the vertical track.\n * * `both`— (Default) The tick marks are located on both sides of the track.\n * * `none`—The tick marks are not visible. The actual elements are not added to the DOM tree.\n */\n this.tickPlacement = 'both';\n /**\n * If `vertical` is set to `true`, the orientation of the Slider changes from horizontal to vertical\n * ([see example]({% slug orientation_slider %})).\n */\n this.vertical = false;\n /**\n * The minimum value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * The attribute accepts both integers and floating-point numbers.\n */\n this.min = 0;\n /**\n * The maximum value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * The attribute accepts both integers and floating-point numbers.\n */\n this.max = 10;\n /**\n * The step value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * Accepts positive values only. Can be an integer or a floating-point number.\n */\n this.smallStep = 1;\n /**\n * Specifies that every nth tick will be large and will have a label\n * ([see example]({% slug predefinedsteps_slider %}#toc-large-steps)).\n * Accepts positive integer values only.\n */\n this.largeStep = null;\n /**\n * Determines whether the Slider is disabled ([see example]({% slug disabledstate_slider %})).\n */\n this.disabled = false;\n /**\n * Determines whether the Slider is in its read-only state ([see example]({% slug readonly_slider %})).\n */\n this.readonly = false;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the Slider.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the component.\n */\n this.onFocus = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the component is blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.sliderClass = true;\n this.widgetClass = true;\n this.subscriptions = new Subscription();\n /**\n * @hidden\n */\n this.ifEnabled = (callback, event) => {\n if (!this.isDisabled) {\n callback.call(this, event);\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get horizontalClass() {\n return !this.vertical;\n }\n get verticalClass() {\n return this.vertical;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n ngOnInit() {\n this.subscriptions.add(this.localizationService\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.sizeComponent();\n }));\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n get reverse() {\n return this.localizationService.rtl && !this.vertical;\n }\n get keyBinding() {\n const reverse = this.reverse;\n return {\n [Keys.ArrowLeft]: reverse ? increment : decrement,\n [Keys.ArrowRight]: reverse ? decrement : increment,\n [Keys.ArrowDown]: decrement,\n [Keys.ArrowUp]: increment,\n [Keys.PageUp]: incrementLarge,\n [Keys.PageDown]: decrementLarge,\n [Keys.Home]: ({ min }) => min,\n [Keys.End]: ({ max }) => max\n };\n }\n resetStyles(elements) {\n elements.forEach(el => {\n if (el) {\n if (this.vertical) {\n this.renderer.removeStyle(el, 'width');\n this.renderer.removeStyle(el, 'left');\n this.renderer.removeStyle(el, 'right');\n }\n else {\n this.renderer.removeStyle(el, 'height');\n this.renderer.removeStyle(el, 'bottom');\n }\n this.renderer.removeStyle(el, 'padding-top');\n }\n });\n }\n}\nSliderBase.ɵfac = function SliderBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSliderBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderBase, contentQueries: function SliderBase_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, LabelTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n } }, viewQuery: function SliderBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c2, 7);\n ɵngcc0.ɵɵviewQuery(_c3, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c3, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.track = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.sliderSelection = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticks = _t.first);\n } }, hostVars: 11, hostBindings: function SliderBase_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-slider\", ctx.sliderClass)(\"k-widget\", ctx.widgetClass)(\"k-slider-horizontal\", ctx.horizontalClass)(\"k-slider-vertical\", ctx.verticalClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { title: \"title\", tickPlacement: \"tickPlacement\", vertical: \"vertical\", min: \"min\", max: \"max\", smallStep: \"smallStep\", largeStep: \"largeStep\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", fixedTickWidth: \"fixedTickWidth\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SliderBase.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderBase.prototype, \"tickPlacement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"smallStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"largeStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"fixedTickWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"tabindex\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], SliderBase.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], SliderBase.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SliderBase.prototype, \"valueChange\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], SliderBase.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-slider-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SliderBase.prototype, \"horizontalClass\", null);\n__decorate([\n HostBinding('class.k-slider-vertical'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SliderBase.prototype, \"verticalClass\", null);\n__decorate([\n HostBinding('class.k-slider'),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"sliderClass\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"widgetClass\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SliderBase.prototype, \"disabledClass\", null);\n__decorate([\n ViewChild('wrap', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('track', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"track\", void 0);\n__decorate([\n ViewChild('sliderSelection', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"sliderSelection\", void 0);\n__decorate([\n ViewChild('ticks', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"ticksContainer\", void 0);\n__decorate([\n ViewChild('ticks', { static: false }),\n __metadata(\"design:type\", Object)\n], SliderBase.prototype, \"ticks\", void 0);\n__decorate([\n ContentChild(LabelTemplateDirective, { static: false }),\n __metadata(\"design:type\", LabelTemplateDirective)\n], SliderBase.prototype, \"labelTemplate\", void 0);\n\nvar SliderComponent_1;\nconst PRESSED = 'k-pressed';\n/**\n * Represents the [Kendo UI Slider component for Angular]({% slug overview_slider %}).\n */\nlet SliderComponent = SliderComponent_1 = class SliderComponent extends SliderBase {\n constructor(localization, injector, renderer, ngZone, changeDetector, hostElement) {\n super(localization, injector, renderer, ngZone, changeDetector, hostElement);\n this.localization = localization;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines if the animation will be played on value change.\n * Regardless of this setting, no animation will be played during the initial rendering.\n */\n this.animate = true;\n /**\n * Renders the arrow side buttons of the Slider ([see example]({% slug sidebuttons_slider %}#toc-hidden-state)).\n * When `showButtons` is set to `false`, the buttons are not displayed.\n */\n this.showButtons = true;\n /**\n * The current value of the Slider when it is initially displayed.\n * The component can use either NgModel or the `value` binding but not both of them at the same time.\n */\n this.value = this.min;\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.onWrapClick = (args) => {\n const target = args.target;\n if (!this.isDisabled && !(isButton(target) || isButton(target.parentNode))) {\n const value = eventValue(args, this.track.nativeElement, this.getProps());\n this.changeValue(value);\n }\n invokeElementMethod(this.draghandle, 'focus');\n };\n /**\n * @hidden\n */\n this.onKeyDown = (e) => {\n const options = this.getProps();\n const { max, min } = options;\n const handler = this.keyBinding[e.keyCode];\n if (this.isDisabled || !handler) {\n return;\n }\n const value = handler(options);\n this.changeValue(trimValue(max, min, value));\n e.preventDefault();\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.decreaseValue = () => {\n this.changeValue(decreaseValueToStep(this.value, this.getProps()));\n };\n this.increaseValue = () => {\n this.changeValue(increaseValueToStep(this.value, this.getProps()));\n };\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n });\n }\n };\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n get currentValue() {\n return isPresent(this.value) ? this.value.toString() : '';\n }\n /**\n * Focuses the Slider.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.disabled) {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandle, 'focus');\n this.focusChangedProgrammatically = false;\n }\n }\n /**\n * Blurs the Slider.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandle, 'blur');\n this.handleBlur();\n this.focusChangedProgrammatically = false;\n }\n ngOnChanges(changes) {\n if (anyChanged(['value', 'fixedTickWidth', 'tickPlacement'], changes, true)) {\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this.sizeComponent(false);\n });\n }\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.showButtons) {\n this.setValueChangeInterval(this.increaseButton.nativeElement, () => this.increaseValue());\n this.setValueChangeInterval(this.decreaseButton.nativeElement, () => this.decreaseValue());\n }\n this.sizeComponent(false);\n if (this.ticks) {\n this.ticks.tickElements\n .changes\n .subscribe(() => this.sizeComponent(false));\n }\n this.attachElementEventHandlers();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get incrementMessage() {\n return this.incrementTitle || this.localizationService.get('increment');\n }\n /**\n * @hidden\n */\n get decrementMessage() {\n return this.decrementTitle || this.localizationService.get('decrement');\n }\n /**\n * @hidden\n */\n get dragHandleMessage() {\n return this.dragHandleTitle || this.localizationService.get('dragHandle');\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (args.originalEvent) {\n args.originalEvent.preventDefault();\n }\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n this.dragging = true;\n this.changeValue(eventValue(args, this.track.nativeElement, this.getProps()));\n }\n /**\n * @hidden\n */\n onHandleRelease() {\n this.dragging = false; //needed for animation\n this.renderer.addClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n this.changeDetector.markForCheck();\n this.value = value;\n this.sizeComponent(this.animate);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n changeValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.sizeComponent(this.animate);\n this.changeDetector.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n sizeComponent(animate) {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const track = this.track.nativeElement;\n const selectionEl = this.sliderSelection.nativeElement;\n const dragHandleEl = this.draghandle.nativeElement;\n const ticks = this.ticks ? this.ticksContainer.nativeElement : null;\n if (!animate) {\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n this.resetStyles([track, selectionEl, dragHandleEl, ticks, this.hostElement.nativeElement]);\n const props = this.getProps();\n const model = new SliderModel(props, wrapper, track, this.renderer);\n model.resizeTrack();\n if (this.ticks) { //for case when tickPlacement: none\n model.resizeTicks(this.ticksContainer.nativeElement, this.ticks.tickElements.map(element => element.nativeElement));\n }\n model.positionHandle(dragHandleEl);\n model.positionSelection(selectionEl);\n if (!animate) {\n this.hostElement.nativeElement.getBoundingClientRect();\n this.renderer.addClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n if (this.fixedTickWidth) {\n model.resizeWrapper();\n }\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n this.isFocused = value;\n }\n }\n set dragging(value) {\n if (this.isDragged !== value && this.sliderSelection && this.draghandle) {\n const sliderSelection = this.sliderSelection.nativeElement;\n const draghandle = this.draghandle.nativeElement;\n if (value) {\n this.renderer.addClass(sliderSelection, PRESSED);\n this.renderer.addClass(draghandle, PRESSED);\n }\n else {\n this.renderer.removeClass(sliderSelection, PRESSED);\n this.renderer.removeClass(draghandle, PRESSED);\n }\n this.isDragged = value;\n }\n }\n setValueChangeInterval(element, callback) {\n this.ngZone.runOutsideAngular(() => {\n const mousedown = fromEvent(element, 'mousedown');\n const mouseup = fromEvent(element, 'mouseup');\n const mouseout = fromEvent(element, 'mouseout');\n const subscription = mousedown.pipe(filter((e) => e.button === 0 && !this.isDisabled), concatMap(() => interval(150).pipe(startWith(-1), takeUntil(merge(mouseup, mouseout))))).subscribe(() => {\n if (!this.isFocused) {\n invokeElementMethod(this.draghandle, 'focus');\n }\n callback();\n });\n this.subscriptions.add(subscription);\n });\n }\n getProps() {\n return {\n buttons: this.showButtons,\n disabled: this.disabled,\n fixedTickWidth: this.fixedTickWidth,\n largeStep: this.largeStep,\n max: this.max,\n min: this.min,\n readonly: this.readonly,\n reverse: this.reverse,\n rtl: this.localizationService.rtl,\n smallStep: this.smallStep,\n value: trimValue(this.max, this.min, this.value),\n vertical: this.vertical\n };\n }\n attachElementEventHandlers() {\n const hostElement = this.hostElement.nativeElement;\n let tabbing = false;\n let cursorInsideWrapper = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onFocus.emit();\n }\n this.focused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n if (args.relatedTarget !== this.draghandle.nativeElement) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n};\nSliderComponent.ɵfac = function SliderComponent_Factory(t) { return new (t || SliderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nSliderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderComponent, selectors: [[\"kendo-slider\"]], viewQuery: function SliderComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 7);\n ɵngcc0.ɵɵviewQuery(_c5, 5);\n ɵngcc0.ɵɵviewQuery(_c6, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.draghandle = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.decreaseButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.increaseButton = _t.first);\n } }, inputs: { focusableId: \"focusableId\", animate: \"animate\", showButtons: \"showButtons\", value: \"value\", tabIndex: \"tabIndex\", dragHandleTitle: \"dragHandleTitle\", incrementTitle: \"incrementTitle\", decrementTitle: \"decrementTitle\" }, exportAs: [\"kendoSlider\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.slider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent_1) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent_1) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 25, consts: function () { let i18n_7; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **Increase** button of the Slider.\n * @meaning kendo.slider.increment\n */\n const MSG_EXTERNAL_8302125540024939132$$DIST_FESM2015_INDEX_JS_8 = goog.getMsg(\"increment\");\n i18n_7 = MSG_EXTERNAL_8302125540024939132$$DIST_FESM2015_INDEX_JS_8;\n }\n else {\n i18n_7 = $localize `:kendo.slider.increment|The title of the **Increase** button of the Slider.␟0fa71630d40c425b9c366afd7f6c3cecc5bef59d␟8302125540024939132:increment`;\n } let i18n_9; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **Decrease** button of the Slider.\n * @meaning kendo.slider.decrement\n */\n const MSG_EXTERNAL_652458644240352212$$DIST_FESM2015_INDEX_JS_10 = goog.getMsg(\"decrement\");\n i18n_9 = MSG_EXTERNAL_652458644240352212$$DIST_FESM2015_INDEX_JS_10;\n }\n else {\n i18n_9 = $localize `:kendo.slider.decrement|The title of the **Decrease** button of the Slider.␟042c26f68d78afd6834ea46a5f7533850fe8c800␟652458644240352212:decrement`;\n } let i18n_11; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the drag handle of the Slider.\n * @meaning kendo.slider.dragHandle\n */\n const MSG_EXTERNAL_9117416417579607469$$DIST_FESM2015_INDEX_JS_12 = goog.getMsg(\"Drag\");\n i18n_11 = MSG_EXTERNAL_9117416417579607469$$DIST_FESM2015_INDEX_JS_12;\n }\n else {\n i18n_11 = $localize `:kendo.slider.dragHandle|The title of the drag handle of the Slider.␟481eb98e9cd8ef8e8b22051796441901e883763d␟9117416417579607469:Drag`;\n } return [[\"kendoSliderLocalizedMessages\", \"\", \"increment\", i18n_7, \"decrement\", i18n_9, \"dragHandle\", i18n_11], [1, \"k-slider-wrap\", 3, \"kendoEventsOutsideAngular\"], [\"wrap\", \"\"], [\"type\", \"button\", \"class\", \"k-button-decrease k-button k-button-md k-rounded-full k-button-rectangle k-button-solid k-button-solid-base k-icon-button\", \"role\", \"presentation\", 3, \"title\", 4, \"ngIf\"], [1, \"k-slider-track-wrap\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\", 4, \"ngIf\"], [1, \"k-slider-track\"], [\"track\", \"\"], [1, \"k-slider-selection\"], [\"sliderSelection\", \"\"], [\"role\", \"slider\", \"kendoDraggable\", \"\", 1, \"k-draghandle\", 3, \"title\", \"id\", \"kendoPress\", \"kendoDrag\", \"kendoRelease\"], [\"draghandle\", \"\"], [\"type\", \"button\", \"class\", \"k-button-increase k-button k-button-md k-rounded-full k-button-rectangle k-button-solid k-button-solid-base k-icon-button\", \"role\", \"presentation\", 3, \"title\", \"click\", 4, \"ngIf\"], [3, \"resize\"], [\"type\", \"button\", \"role\", \"presentation\", 1, \"k-button-decrease\", \"k-button\", \"k-button-md\", \"k-rounded-full\", \"k-button-rectangle\", \"k-button-solid\", \"k-button-solid-base\", \"k-icon-button\", 3, \"title\"], [\"decreaseButton\", \"\"], [1, \"k-button-icon\", \"k-icon\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"], [\"ticks\", \"\"], [\"type\", \"button\", \"role\", \"presentation\", 1, \"k-button-increase\", \"k-button\", \"k-button-md\", \"k-rounded-full\", \"k-button-rectangle\", \"k-button-solid\", \"k-button-solid-base\", \"k-icon-button\", 3, \"title\", \"click\"], [\"increaseButton\", \"\"]]; }, template: function SliderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵtemplate(3, SliderComponent_button_3_Template, 3, 6, \"button\", 3);\n ɵngcc0.ɵɵelementStart(4, \"div\", 4);\n ɵngcc0.ɵɵtemplate(5, SliderComponent_ul_5_Template, 2, 8, \"ul\", 5);\n ɵngcc0.ɵɵelementStart(6, \"div\", 6, 7);\n ɵngcc0.ɵɵelement(8, \"div\", 8, 9);\n ɵngcc0.ɵɵelementStart(10, \"a\", 10, 11);\n ɵngcc0.ɵɵlistener(\"kendoPress\", function SliderComponent_Template_a_kendoPress_10_listener($event) { return ctx.ifEnabled(ctx.handleDragPress, $event); })(\"kendoDrag\", function SliderComponent_Template_a_kendoDrag_10_listener($event) { return ctx.ifEnabled(ctx.onHandleDrag, $event); })(\"kendoRelease\", function SliderComponent_Template_a_kendoRelease_10_listener($event) { return ctx.ifEnabled(ctx.onHandleRelease, $event); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(12, SliderComponent_button_12_Template, 3, 7, \"button\", 12);\n ɵngcc0.ɵɵelementStart(13, \"kendo-resize-sensor\", 13);\n ɵngcc0.ɵɵlistener(\"resize\", function SliderComponent_Template_kendo_resize_sensor_resize_13_listener() { return ctx.sizeComponent(false); });\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-slider-buttons\", ctx.showButtons)(\"k-slider-topleft\", ctx.tickPlacement === \"before\")(\"k-slider-bottomright\", ctx.tickPlacement === \"after\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(22, _c13, ctx.onWrapClick, ctx.onKeyDown));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showButtons);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.tickPlacement !== \"none\");\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.isDisabled ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"title\", ctx.dragHandleMessage)(\"id\", ctx.focusableId);\n ɵngcc0.ɵɵattribute(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.currentValue)(\"aria-valuetext\", ctx.currentValue)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\")(\"tabindex\", ctx.disabled ? \"-1\" : ctx.tabIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showButtons);\n } }, directives: function () { return [LocalizedSliderMessagesDirective, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, SliderTicksComponent, ɵngcc2.DraggableDirective, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"dragHandleTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"incrementTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"decrementTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderComponent.prototype, \"showButtons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], SliderComponent.prototype, \"tabIndex\", null);\n__decorate([\n ViewChild('draghandle', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderComponent.prototype, \"draghandle\", void 0);\n__decorate([\n ViewChild('decreaseButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], SliderComponent.prototype, \"decreaseButton\", void 0);\n__decorate([\n ViewChild('increaseButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], SliderComponent.prototype, \"increaseButton\", void 0);\nSliderComponent = SliderComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n Injector,\n Renderer2,\n NgZone,\n ChangeDetectorRef,\n ElementRef])\n], SliderComponent);\n\n/**\n * @hidden\n */\nclass RangeSliderModel extends SliderModelBase {\n positionHandle(dragHandle) {\n if (!dragHandle.id) {\n return;\n }\n const { max, min, reverse, vertical } = this.props;\n const position = vertical ? 'bottom' : 'left';\n const trackWidth = this.trackWidth();\n const value = isStartHandle(dragHandle) ? trimValueRange(max, min, this.props.value)[0]\n : trimValueRange(max, min, this.props.value)[1];\n if (isStartHandle(dragHandle)) {\n this.startHandlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.startHandlePosition}px`);\n }\n else {\n this.endHandlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.endHandlePosition}px`);\n }\n }\n positionSelection(dragHandle, selection) {\n const { reverse, vertical } = this.props;\n const dimension = vertical ? 'height' : 'width';\n const position = vertical ? 'bottom' : reverse ? 'right' : 'left';\n const size = Math.abs(this.endHandlePosition - this.startHandlePosition);\n const currentSelectionPosition = vertical ? dragHandle.style.bottom : dragHandle.style.left;\n this.renderer.setStyle(selection, dimension, `${size}px`);\n this.renderer.setStyle(selection, position, reverse ? this.trackWidth() - parseFloat(currentSelectionPosition) + 'px'\n : parseFloat(currentSelectionPosition) + 'px');\n }\n}\n\nvar RangeSliderComponent_1;\nconst PRESSED$1 = 'k-pressed';\n/**\n * Represents the [Kendo UI RangeSlider component for Angular]({% slug overview_rangeslider %}).\n */\nlet RangeSliderComponent = RangeSliderComponent_1 = class RangeSliderComponent extends SliderBase {\n constructor(localization, injector, renderer, ngZone, changeDetector, hostElement) {\n super(localization, injector, renderer, ngZone, changeDetector, hostElement);\n this.localization = localization;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.startHandleId = `k-start-handle-${guid()}`;\n /**\n * @hidden\n */\n this.endHandleId = `k-end-handle-${guid()}`;\n /**\n * @hidden\n */\n this.focusableId = this.startHandleId;\n this.handleZIndex = 0;\n this.activeHandle = 'startHandle';\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.onWrapClick = (args) => {\n if (!this.isDisabled) {\n this.value = this.value || [this.min, this.min];\n const trackValue = eventValue(args, this.track.nativeElement, this.getProps());\n let newRangeValue;\n const [startValue, endValue] = newRangeValue = this.value;\n if (trackValue <= startValue) {\n newRangeValue = [trackValue, endValue];\n this.activeHandle = 'startHandle';\n }\n else if (startValue < trackValue && trackValue < endValue) {\n if (trackValue < (startValue + endValue) / 2) {\n newRangeValue = [trackValue, endValue];\n this.activeHandle = 'startHandle';\n }\n else {\n newRangeValue = [startValue, trackValue];\n this.activeHandle = 'endHandle';\n }\n }\n else if (trackValue >= endValue) {\n newRangeValue = [startValue, trackValue];\n this.activeHandle = 'endHandle';\n }\n const activeHandle = this.activeHandle === 'startHandle' ? this.draghandleStart : this.draghandleEnd;\n invokeElementMethod(activeHandle, 'focus');\n this.changeValue(newRangeValue);\n }\n };\n /**\n * @hidden\n */\n this.onKeyDown = (e) => {\n this.value = this.value || [this.min, this.min];\n const options = this.getProps();\n const { max, min } = options;\n const handler = this.keyBinding[e.keyCode];\n if (this.isDisabled || !handler) {\n return;\n }\n this.renderer.setStyle(e.target, 'zIndex', ++this.handleZIndex);\n const startHandleIsActive = isStartHandle(e.target);\n const value = handler(Object.assign({}, options, { value: startHandleIsActive ? this.value[0] : this.value[1] }));\n if (startHandleIsActive) {\n if (value > this.value[1]) {\n this.value[1] = value;\n }\n }\n else {\n if (value < this.value[0]) {\n this.value[0] = value;\n }\n }\n const trimmedValue = trimValue(max, min, value);\n const newValue = startHandleIsActive ? [trimmedValue, this.value[1]]\n : [this.value[0], trimmedValue];\n this.changeValue(newValue);\n e.preventDefault();\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n });\n }\n };\n }\n /**\n * Focuses the RangeSlider.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
\n * \n *
\n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandleStart, 'focus');\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the RangeSlider.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const activeHandle = this.activeHandle === 'startHandle' ? this.draghandleStart : this.draghandleEnd;\n invokeElementMethod(activeHandle, 'blur');\n this.handleBlur();\n this.focusChangedProgrammatically = false;\n }\n ngOnInit() {\n if (!this.value) {\n this.value = [this.min, this.max];\n }\n super.ngOnInit();\n }\n ngOnChanges(changes) {\n if (anyChanged(['value', 'fixedTickWidth', 'tickPlacement'], changes, true)) {\n if (changes.value && changes.value.currentValue) {\n validateValue(changes.value.currentValue);\n }\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this.sizeComponent();\n });\n }\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.sizeComponent();\n if (this.ticks) {\n this.ticks.tickElements\n .changes\n .subscribe(() => this.sizeComponent());\n }\n this.attachElementEventHandlers();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get valueText() {\n return this.value ? `${this.value[0]} - ${this.value[1]}` : '';\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (args.originalEvent) {\n args.originalEvent.preventDefault();\n }\n const target = args.originalEvent.target;\n this.draggedHandle = target;\n this.renderer.setStyle(target, 'zIndex', ++this.handleZIndex);\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n this.value = this.value || [this.min, this.min];\n const target = args.originalEvent.target;\n const lastCoords = this.draggedHandle.getBoundingClientRect();\n this.lastHandlePosition = { x: lastCoords.left, y: lastCoords.top };\n this.dragging = { value: true, target };\n const left = args.pageX < this.lastHandlePosition.x;\n const right = args.pageX > this.lastHandlePosition.x;\n const up = args.pageY > this.lastHandlePosition.y;\n const moveStartHandle = () => this.changeValue([eventValue(args, this.track.nativeElement, this.getProps()), this.value[1]]);\n const moveEndHandle = () => this.changeValue([this.value[0], eventValue(args, this.track.nativeElement, this.getProps())]);\n const moveBothHandles = () => this.changeValue([eventValue(args, this.track.nativeElement, this.getProps()), eventValue(args, this.track.nativeElement, this.getProps())]);\n const activeStartHandle = isStartHandle(this.draggedHandle);\n const vertical = this.vertical;\n const horizontal = !vertical;\n const forward = (vertical && up) || (this.reverse ? horizontal && right : horizontal && left);\n // const forward = (this.reverse ? (!this.vertical && !left) : (!this.vertical && left)) || (this.vertical && up);\n if (this.value[0] === this.value[1]) {\n if (forward) {\n activeStartHandle ? moveStartHandle() : moveBothHandles();\n }\n else {\n activeStartHandle ? moveBothHandles() : moveEndHandle();\n }\n }\n else {\n activeStartHandle ? moveStartHandle() : moveEndHandle();\n }\n }\n /**\n * @hidden\n */\n onHandleRelease(args) {\n this.dragging = { value: false, target: args.originalEvent.target }; //needed for animation\n this.draggedHandle = undefined;\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n validateValue(value);\n this.value = value;\n this.sizeComponent();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n changeValue(value) {\n if (!this.value || !isSameRange(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n if (this.value) {\n this.valueChange.emit(value);\n }\n this.sizeComponent();\n });\n }\n }\n /**\n * @hidden\n */\n sizeComponent() {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const track = this.track.nativeElement;\n const selectionEl = this.sliderSelection.nativeElement;\n const dragHandleStartEl = this.draghandleStart.nativeElement;\n const dragHandleEndEl = this.draghandleEnd.nativeElement;\n const ticks = this.ticks ? this.ticksContainer.nativeElement : null;\n this.resetStyles([track, selectionEl, dragHandleStartEl, dragHandleEndEl, ticks, this.hostElement.nativeElement]);\n const props = this.getProps();\n const model = new RangeSliderModel(props, wrapper, track, this.renderer);\n model.resizeTrack();\n if (this.ticks) { //for case when tickPlacement: none\n model.resizeTicks(this.ticksContainer.nativeElement, this.ticks.tickElements.map(element => element.nativeElement));\n }\n model.positionHandle(dragHandleStartEl);\n model.positionHandle(dragHandleEndEl);\n model.positionSelection(dragHandleStartEl, selectionEl);\n if (this.fixedTickWidth) {\n model.resizeWrapper();\n }\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n this.isFocused = value;\n }\n }\n set dragging(data) {\n if (this.isDragged !== data.value && this.sliderSelection && this.draghandleStart && this.draghandleEnd) {\n const sliderSelection = this.sliderSelection.nativeElement;\n const draghandle = data.target;\n if (data.value) {\n this.renderer.addClass(sliderSelection, PRESSED$1);\n this.renderer.addClass(draghandle, PRESSED$1);\n }\n else {\n this.renderer.removeClass(sliderSelection, PRESSED$1);\n this.renderer.removeClass(draghandle, PRESSED$1);\n }\n this.isDragged = data.value;\n }\n }\n getProps() {\n return {\n disabled: this.disabled,\n fixedTickWidth: this.fixedTickWidth,\n largeStep: this.largeStep,\n max: this.max,\n min: this.min,\n readonly: this.readonly,\n reverse: this.reverse,\n rtl: this.localizationService.rtl,\n smallStep: this.smallStep,\n value: trimValueRange(this.max, this.min, this.value),\n vertical: this.vertical,\n buttons: false\n };\n }\n attachElementEventHandlers() {\n const hostElement = this.hostElement.nativeElement;\n let tabbing = false;\n let cursorInsideWrapper = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onFocus.emit();\n }\n this.focused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n if (args.relatedTarget !== this.draghandleStart.nativeElement && args.relatedTarget !== this.draghandleEnd.nativeElement) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n};\nRangeSliderComponent.ɵfac = function RangeSliderComponent_Factory(t) { return new (t || RangeSliderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nRangeSliderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RangeSliderComponent, selectors: [[\"kendo-rangeslider\"]], viewQuery: function RangeSliderComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c14, 7);\n ɵngcc0.ɵɵviewQuery(_c15, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.draghandleStart = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.draghandleEnd = _t.first);\n } }, inputs: { value: \"value\" }, exportAs: [\"kendoRangeSlider\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rangeslider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RangeSliderComponent_1) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent_1) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 33, consts: function () { let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **Start** drag handle of the Slider.\n * @meaning kendo.rangeslider.dragHandleStart\n */\n const MSG_EXTERNAL_1512034289801794423$$DIST_FESM2015_INDEX_JS_17 = goog.getMsg(\"Drag\");\n i18n_16 = MSG_EXTERNAL_1512034289801794423$$DIST_FESM2015_INDEX_JS_17;\n }\n else {\n i18n_16 = $localize `:kendo.rangeslider.dragHandleStart|The title of the **Start** drag handle of the Slider.␟4487c64285c2d8cdb336be783b6cb9304ce86007␟1512034289801794423:Drag`;\n } let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **End** drag handle of the Slider.\n * @meaning kendo.rangeslider.dragHandleEnd\n */\n const MSG_EXTERNAL_6915505327582510906$$DIST_FESM2015_INDEX_JS_19 = goog.getMsg(\"Drag\");\n i18n_18 = MSG_EXTERNAL_6915505327582510906$$DIST_FESM2015_INDEX_JS_19;\n }\n else {\n i18n_18 = $localize `:kendo.rangeslider.dragHandleEnd|The title of the **End** drag handle of the Slider.␟d6af522570cc1aff06104cee4b7780d6835e01d1␟6915505327582510906:Drag`;\n } return [[\"kendoSliderLocalizedMessages\", \"\", \"dragHandleStart\", i18n_16, \"dragHandleEnd\", i18n_18], [1, \"k-slider-wrap\", 3, \"kendoEventsOutsideAngular\"], [\"wrap\", \"\"], [1, \"k-slider-track-wrap\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\", 4, \"ngIf\"], [1, \"k-slider-track\"], [\"track\", \"\"], [1, \"k-slider-selection\"], [\"sliderSelection\", \"\"], [\"role\", \"slider\", \"kendoDraggable\", \"\", 1, \"k-draghandle\", 3, \"id\", \"title\", \"kendoPress\", \"kendoDrag\", \"kendoRelease\"], [\"draghandleStart\", \"\"], [\"draghandleEnd\", \"\"], [3, \"resize\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"], [\"ticks\", \"\"]]; }, template: function RangeSliderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2)(3, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, RangeSliderComponent_ul_4_Template, 2, 8, \"ul\", 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5, 6);\n ɵngcc0.ɵɵelement(7, \"div\", 7, 8);\n ɵngcc0.ɵɵelementStart(9, \"a\", 9, 10);\n ɵngcc0.ɵɵlistener(\"kendoPress\", function RangeSliderComponent_Template_a_kendoPress_9_listener($event) { return ctx.ifEnabled(ctx.handleDragPress, $event); })(\"kendoDrag\", function RangeSliderComponent_Template_a_kendoDrag_9_listener($event) { return ctx.ifEnabled(ctx.onHandleDrag, $event); })(\"kendoRelease\", function RangeSliderComponent_Template_a_kendoRelease_9_listener($event) { return ctx.ifEnabled(ctx.onHandleRelease, $event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"a\", 9, 11);\n ɵngcc0.ɵɵlistener(\"kendoPress\", function RangeSliderComponent_Template_a_kendoPress_11_listener($event) { return ctx.ifEnabled(ctx.handleDragPress, $event); })(\"kendoDrag\", function RangeSliderComponent_Template_a_kendoDrag_11_listener($event) { return ctx.ifEnabled(ctx.onHandleDrag, $event); })(\"kendoRelease\", function RangeSliderComponent_Template_a_kendoRelease_11_listener($event) { return ctx.ifEnabled(ctx.onHandleRelease, $event); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(13, \"kendo-resize-sensor\", 12);\n ɵngcc0.ɵɵlistener(\"resize\", function RangeSliderComponent_Template_kendo_resize_sensor_resize_13_listener() { return ctx.sizeComponent(); });\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-slider-topleft\", ctx.tickPlacement === \"before\")(\"k-slider-bottomright\", ctx.tickPlacement === \"after\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(30, _c13, ctx.onWrapClick, ctx.onKeyDown));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.tickPlacement !== \"none\");\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.isDisabled ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.startHandleId)(\"title\", ctx.textFor(\"dragHandleStart\"));\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? undefined : ctx.tabindex)(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.value ? ctx.value[0] : null)(\"aria-valuetext\", ctx.valueText)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.isDisabled ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.endHandleId)(\"title\", ctx.textFor(\"dragHandleEnd\"));\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? undefined : ctx.tabindex)(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.value ? ctx.value[1] : null)(\"aria-valuetext\", ctx.valueText)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\");\n } }, directives: function () { return [LocalizedRangeSliderMessagesDirective, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, SliderTicksComponent, ɵngcc2.DraggableDirective, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], RangeSliderComponent.prototype, \"value\", void 0);\n__decorate([\n ViewChild('draghandleStart', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], RangeSliderComponent.prototype, \"draghandleStart\", void 0);\n__decorate([\n ViewChild('draghandleEnd', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], RangeSliderComponent.prototype, \"draghandleEnd\", void 0);\nRangeSliderComponent = RangeSliderComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n Injector,\n Renderer2,\n NgZone,\n ChangeDetectorRef,\n ElementRef])\n], RangeSliderComponent);\n\nvar SwitchComponent_1;\nconst FOCUSED = 'k-state-focused';\n/**\n * Represents the [Kendo UI Switch component for Angular]({% slug overview_switch %}).\n */\nlet SwitchComponent = SwitchComponent_1 = class SwitchComponent {\n constructor(renderer, hostElement, localizationService, injector, changeDetector, ngZone) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.localizationService = localizationService;\n this.injector = injector;\n this.changeDetector = changeDetector;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the Switch is disabled ([see example]({% slug disabled_switch %})).\n */\n this.disabled = false;\n /**\n * Determines whether the Switch is in its read-only state ([see example]({% slug readonly_switch %})).\n */\n this.readonly = false;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the Switch.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.onFocus = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.initialized = false;\n this._checked = false;\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n /**\n * @hidden\n */\n this.handleFocus = () => {\n this.focused = true;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n });\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n this.keyDownHandler = this.keyDownHandler.bind(this);\n this.clickHandler = this.clickHandler.bind(this);\n }\n /**\n * Sets the value of the Switch when it is initially displayed.\n */\n set checked(value) {\n this.setHostClasses(value);\n this._checked = value;\n }\n get checked() {\n return this._checked;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get ieClass() {\n return browser && browser.msie;\n }\n get ariaDisabled() {\n return this.disabled ? true : undefined;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get onLabelMessage() {\n return this.onLabel || this.localizationService.get('on');\n }\n /**\n * @hidden\n */\n get offLabelMessage() {\n return this.offLabel || this.localizationService.get('off');\n }\n get isEnabled() {\n return !this.disabled && !this.readonly;\n }\n ngOnInit() {\n if (this.hostElement) {\n const wrapper = this.hostElement.nativeElement;\n this.renderer.removeAttribute(wrapper, \"tabindex\");\n }\n this.localizationChangeSubscription = this.localizationService\n .changes\n .pipe(skip(1))\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.control = this.injector.get(NgControl, null);\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialized = true);\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n /**\n * Focuses the Switch.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.wrapper) {\n return;\n }\n this.wrapper.nativeElement.focus();\n }\n /**\n * Blurs the Switch.\n */\n blur() {\n if (!this.wrapper) {\n return;\n }\n this.wrapper.nativeElement.blur();\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.checked = value === null ? false : value;\n this.changeDetector.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n keyDownHandler(e) {\n const keyCode = e.keyCode;\n if (this.isEnabled && (keyCode === Keys.Space || keyCode === Keys.Enter)) {\n this.changeValue(!this.checked);\n e.preventDefault();\n }\n }\n /**\n * @hidden\n */\n clickHandler() {\n if (this.isEnabled) {\n this.changeValue(!this.checked);\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n changeValue(value) {\n if (this.checked !== value) {\n this.ngZone.run(() => {\n this.checked = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(element, FOCUSED);\n }\n else {\n this.renderer.removeClass(element, FOCUSED);\n }\n this.isFocused = value;\n }\n }\n setHostClasses(value) {\n if (value) {\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-switch-off');\n this.renderer.addClass(this.hostElement.nativeElement, 'k-switch-on');\n }\n else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-switch-on');\n this.renderer.addClass(this.hostElement.nativeElement, 'k-switch-off');\n }\n }\n};\nSwitchComponent.ɵfac = function SwitchComponent_Factory(t) { return new (t || SwitchComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nSwitchComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SwitchComponent, selectors: [[\"kendo-switch\"]], viewQuery: function SwitchComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c20, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n } }, hostVars: 9, hostBindings: function SwitchComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"aria-disabled\", ctx.ariaDisabled)(\"aria-readonly\", ctx.ariaReadonly);\n ɵngcc0.ɵɵclassProp(\"k-switch\", ctx.hostClasses)(\"k-ie\", ctx.ieClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", checked: \"checked\", tabIndex: \"tabIndex\", onLabel: \"onLabel\", offLabel: \"offLabel\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, exportAs: [\"kendoSwitch\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.switch' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent_1)\n }\n ])], decls: 8, vars: 17, consts: function () { let i18n_21; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The **On** label of the Switch.\n * @meaning kendo.switch.on\n */\n const MSG_EXTERNAL_818154782831456441$$DIST_FESM2015_INDEX_JS_22 = goog.getMsg(\"ON\");\n i18n_21 = MSG_EXTERNAL_818154782831456441$$DIST_FESM2015_INDEX_JS_22;\n }\n else {\n i18n_21 = $localize `:kendo.switch.on|The **On** label of the Switch.␟155f0a38198ffbf0429c5dbf9765e74f246a8617␟818154782831456441:ON`;\n } let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The **Off** label of the Switch.\n * @meaning kendo.switch.off\n */\n const MSG_EXTERNAL_759820891948194060$$DIST_FESM2015_INDEX_JS_24 = goog.getMsg(\"OFF\");\n i18n_23 = MSG_EXTERNAL_759820891948194060$$DIST_FESM2015_INDEX_JS_24;\n }\n else {\n i18n_23 = $localize `:kendo.switch.off|The **Off** label of the Switch.␟79df1a6d2b35c32b2948e3cee56dd3ffe28127bc␟759820891948194060:OFF`;\n } return [[\"kendoSwitchLocalizedMessages\", \"\", \"on\", i18n_21, \"off\", i18n_23], [\"role\", \"switch\", 1, \"k-switch-container\", 3, \"id\", \"kendoEventsOutsideAngular\"], [\"wrapper\", \"\"], [1, \"k-switch-label-on\"], [1, \"k-switch-label-off\"], [1, \"k-switch-handle\"]]; }, template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2)(3, \"span\", 3);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"span\", 4);\n ɵngcc0.ɵɵtext(6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(7, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transition-duration\", ctx.initialized ? \"200ms\" : \"0ms\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction4(12, _c25, ctx.clickHandler, ctx.keyDownHandler, ctx.handleFocus, ctx.handleBlur));\n ɵngcc0.ɵɵattribute(\"aria-checked\", ctx.checked)(\"tabindex\", ctx.disabled ? undefined : ctx.tabIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.onLabelMessage);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.offLabelMessage);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transition-duration\", ctx.initialized ? \"200ms\" : \"0ms\");\n } }, directives: function () { return [LocalizedSwitchMessagesDirective, ɵngcc2.EventsOutsideAngularDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"onLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"offLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], SwitchComponent.prototype, \"checked\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SwitchComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SwitchComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SwitchComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], SwitchComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], SwitchComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], SwitchComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SwitchComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", Object)\n], SwitchComponent.prototype, \"wrapper\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-ie'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"ieClass\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"ariaDisabled\", null);\n__decorate([\n HostBinding('attr.aria-readonly'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"ariaReadonly\", null);\n__decorate([\n HostBinding('class.k-switch'),\n __metadata(\"design:type\", Boolean)\n], SwitchComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"disabledClass\", null);\nSwitchComponent = SwitchComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n LocalizationService,\n Injector,\n ChangeDetectorRef,\n NgZone])\n], SwitchComponent);\n\nvar TextAreaDirective_1;\n/**\n * Represents the [Kendo UI TextArea directive for the Inputs components for Angular]({% slug overview_textarea %}).\n * Provides floating labels to `textarea` elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet TextAreaDirective = TextAreaDirective_1 = class TextAreaDirective {\n constructor(renderer, element, zone, changeDetector, injector, rtl) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.changeDetector = changeDetector;\n this.injector = injector;\n this.elementClass = true;\n this.autofillClass = true;\n /**\n * Fires each time the textarea value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Specifies if the `textarea` element will resize its height automatically\n * ([see example]({% slug overview_textarea %}#toc-auto-resizing)).\n *\n * @default false\n */\n this.autoSize = false;\n /**\n * @hidden\n */\n this.onFocus = new EventEmitter();\n /**\n * @hidden\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.onValueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillStart = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillEnd = new EventEmitter();\n this.listeners = [];\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.direction = rtl ? 'rtl' : 'ltr';\n }\n get id() {\n return this.element.nativeElement.id;\n }\n set id(id) {\n this.renderer.setAttribute(this.element.nativeElement, 'id', id);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.elementValue = value;\n this.resize();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.setElementProperty('disabled', isDisabled);\n }\n ngOnInit() {\n const element = this.element.nativeElement;\n this.zone.runOutsideAngular(() => {\n this.listeners = [\n this.renderer.listen(element, 'focus', this.handleFocus.bind(this)),\n this.renderer.listen(element, 'blur', this.handleBlur.bind(this)),\n this.renderer.listen(element, 'animationstart', (e) => {\n if (e.animationName === 'autoFillStart') {\n this.autoFillStart.emit();\n }\n else if (e.animationName === 'autoFillEnd') {\n this.autoFillEnd.emit();\n }\n })\n ];\n if (isDocumentAvailable() && this.autoSize) {\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe((debounceTime(50)))\n .subscribe(() => this.resize());\n }\n this.inputSubscription = fromEvent(element, 'input')\n .subscribe(this.handleInput.bind(this));\n });\n this.control = this.injector.get(NgControl, null);\n }\n ngOnChanges(changes) {\n const element = this.element.nativeElement;\n if (changes.value) {\n this.elementValue = this.value;\n }\n if (changes.autoSize) {\n if (this.autoSize) {\n this.initialHeight = element.offsetHeight;\n this.renderer.setStyle(element, 'resize', 'none');\n }\n else {\n this.renderer.setStyle(element, 'overflow-y', 'auto');\n this.renderer.setStyle(element, 'resize', 'both');\n element.style.height = `${this.initialHeight}px`;\n }\n }\n this.resize();\n }\n ngOnDestroy() {\n this.listeners.forEach(listener => listener());\n if (this.inputSubscription) {\n this.inputSubscription.unsubscribe();\n }\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n get elementValue() {\n if (this.element) {\n return this.element.nativeElement.value;\n }\n return '';\n }\n set elementValue(value) {\n this.setElementProperty('value', (value === undefined || value === null) ? '' : value);\n }\n setElementProperty(name, value) {\n if (this.element) {\n this.renderer.setProperty(this.element.nativeElement, name, value);\n }\n }\n resize() {\n if (!this.autoSize) {\n return;\n }\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, 'overflow-y', 'hidden');\n element.style.height = `${this.initialHeight}px`;\n const scrollHeight = element.scrollHeight;\n if (scrollHeight > this.initialHeight) {\n element.style.height = `${scrollHeight}px`;\n }\n }\n handleInput() {\n const value = this.elementValue;\n this.value = value;\n if (this.control || hasObservers(this.onValueChange) || hasObservers(this.valueChange)) {\n this.zone.run(() => {\n this.ngChange(value);\n this.onValueChange.emit(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n this.resize();\n }\n handleFocus() {\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleBlur() {\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n this.changeDetector.markForCheck();\n });\n }\n }\n};\nTextAreaDirective.ɵfac = function TextAreaDirective_Factory(t) { return new (t || TextAreaDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nTextAreaDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextAreaDirective, selectors: [[\"textarea\", \"kendoTextArea\", \"\"]], hostVars: 5, hostBindings: function TextAreaDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-textarea\", ctx.elementClass)(\"k-autofill\", ctx.autofillClass);\n } }, inputs: { autoSize: \"autoSize\", value: \"value\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective_1),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective_1)\n }]), ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n HostBinding('class.k-textarea'),\n __metadata(\"design:type\", Boolean)\n], TextAreaDirective.prototype, \"elementClass\", void 0);\n__decorate([\n HostBinding('class.k-autofill'),\n __metadata(\"design:type\", Boolean)\n], TextAreaDirective.prototype, \"autofillClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextAreaDirective.prototype, \"direction\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaDirective.prototype, \"valueChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextAreaDirective.prototype, \"autoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaDirective.prototype, \"value\", void 0);\nTextAreaDirective = TextAreaDirective_1 = __decorate([ __param(5, Optional()), __param(5, Inject(RTL)),\n __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n NgZone,\n ChangeDetectorRef,\n Injector, Boolean])\n], TextAreaDirective);\n\n/**\n * @hidden\n */\nclass FloatingLabelInputAdapter {\n constructor(component, formControl) {\n this.component = component;\n const isObservableOrEventEmitter = (event) => event instanceof Observable || event instanceof EventEmitter;\n if (isObservableOrEventEmitter(component.onFocus)) {\n this.onFocus = component.onFocus;\n }\n if (isObservableOrEventEmitter(component.autoFillStart)) {\n this.autoFillStart = component.autoFillStart;\n }\n if (isObservableOrEventEmitter(component.autoFillEnd)) {\n this.autoFillEnd = component.autoFillEnd;\n }\n if (isObservableOrEventEmitter(component.onBlur)) {\n this.onBlur = component.onBlur;\n }\n if (formControl) {\n this.onValueChange = formControl.valueChanges;\n }\n else if (component.onValueChange) {\n this.onValueChange = component.onValueChange;\n }\n }\n get focusableId() {\n const component = this.component;\n if ('focusableId' in component) {\n return component.focusableId;\n }\n else if ('id' in component) {\n return component.id;\n }\n return \"\";\n }\n set focusableId(value) {\n const component = this.component;\n if ('focusableId' in component) {\n component.focusableId = value;\n }\n else if ('id' in component) {\n component.id = value;\n }\n }\n}\n\nconst isFunction = (x) => Object.prototype.toString.call(x) === '[object Function]';\n/**\n * @hidden\n */\nlet TextBoxContainerComponent = class TextBoxContainerComponent {\n constructor(elementRef, renderer, changeDetectorRef, rtl) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.changeDetectorRef = changeDetectorRef;\n /**\n * @hidden\n */\n this.focused = false;\n /**\n * @hidden\n */\n this.empty = true;\n /**\n * @hidden\n */\n this.invalid = false;\n this._subscriptions = [];\n this.autoFillStarted = false;\n this.direction = rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, \"id\");\n }\n get hostClasses() {\n return true;\n }\n get textareaElementClass() {\n return !!this.textarea;\n }\n get focusedClass() {\n return this.focused;\n }\n get invalidClass() {\n return this.invalid;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n if (!this.formControl && !this.kendoInput) {\n if (isDevMode()) {\n throw new Error(\"The TextBoxContainer requires a Kendo Input component\" +\n \" or a forms-bound component to function properly.\");\n }\n return;\n }\n // add focus/blur/valueChange handlers\n const control = new FloatingLabelInputAdapter(this.kendoInput || this.formControl.valueAccessor, this.formControl);\n const setFocus = (isFocused) => () => {\n this.focused = isFocused;\n this.updateState();\n };\n this.subscribe(control, 'onFocus', setFocus(true));\n this.subscribe(control, 'onBlur', setFocus(false));\n this.subscribe(control, 'autoFillStart', () => {\n this.autoFillStarted = true;\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-state-empty');\n });\n this.subscribe(control, 'autoFillEnd', () => {\n if (this.autoFillStarted) {\n this.autoFillStarted = false;\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-state-empty');\n }\n }\n });\n const updateState = () => this.updateState();\n updateState();\n this.subscribe(control, 'onValueChange', updateState);\n // set label id for floating label\n if (this.id && control.focusableId) {\n // input wins\n this.id = control.focusableId;\n }\n else if (this.id) {\n control.focusableId = this.id;\n }\n else if (control.focusableId) {\n this.id = control.focusableId;\n }\n else {\n const id = \"_\" + guid();\n control.focusableId = id;\n this.id = id;\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this._subscriptions.forEach(s => s.unsubscribe());\n this._subscriptions = [];\n }\n subscribe(control, eventName, handler) {\n if (control[eventName] instanceof EventEmitter) {\n const subscription = control[eventName].subscribe(handler);\n this._subscriptions.push(subscription);\n }\n }\n updateState() {\n const empty = value => {\n // zero is not an empty value (e.g., NumericTextBox)\n if (value === 0 || value === false) {\n return false;\n }\n // empty arrays are an empty value (e.g., MultiSelect)\n if (Array.isArray(value) && !value.length) {\n return true;\n }\n return !value;\n };\n const formControl = this.formControl;\n if (formControl) {\n const valueAccessor = formControl.valueAccessor;\n if (isFunction(valueAccessor.isEmpty)) {\n this.empty = valueAccessor.isEmpty();\n }\n else {\n this.empty = empty(formControl.value);\n }\n this.invalid = formControl.invalid && (formControl.touched || formControl.dirty);\n }\n else {\n this.empty = isFunction(this.kendoInput.isEmpty) ?\n this.kendoInput.isEmpty() : empty(this.kendoInput.value);\n }\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-state-empty');\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-state-empty');\n }\n this.changeDetectorRef.markForCheck();\n }\n};\nTextBoxContainerComponent.ɵfac = function TextBoxContainerComponent_Factory(t) { return new (t || TextBoxContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nTextBoxContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextBoxContainerComponent, selectors: [[\"kendo-textbox-container\"]], contentQueries: function TextBoxContainerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, KendoInput, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TextAreaDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgControl, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textarea = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formControl = _t.first);\n } }, hostVars: 9, hostBindings: function TextBoxContainerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-textbox-container\", ctx.hostClasses)(\"k-textarea-wrapper\", ctx.textareaElementClass)(\"k-state-focused\", ctx.focusedClass)(\"k-state-invalid\", ctx.invalidClass);\n } }, inputs: { id: \"id\", floatingLabel: \"floatingLabel\" }, ngContentSelectors: _c26, decls: 2, vars: 1, consts: [[\"class\", \"k-label\", 3, \"for\", 4, \"ngIf\"], [1, \"k-label\", 3, \"for\"]], template: function TextBoxContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, TextBoxContainerComponent_label_1_Template, 2, 2, \"label\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.floatingLabel);\n } }, directives: [ɵngcc3.NgIf], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-textbox-container'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"hostClasses\", null);\n__decorate([\n HostBinding('class.k-textarea-wrapper'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"textareaElementClass\", null);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"focusedClass\", null);\n__decorate([\n HostBinding('class.k-state-invalid'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"invalidClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextBoxContainerComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxContainerComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxContainerComponent.prototype, \"floatingLabel\", void 0);\n__decorate([\n ContentChild(KendoInput, { static: false }),\n __metadata(\"design:type\", Object)\n], TextBoxContainerComponent.prototype, \"kendoInput\", void 0);\n__decorate([\n ContentChild(TextAreaDirective, { static: false }),\n __metadata(\"design:type\", TextAreaDirective)\n], TextBoxContainerComponent.prototype, \"textarea\", void 0);\n__decorate([\n ContentChild(NgControl, { static: false }),\n __metadata(\"design:type\", NgControl)\n], TextBoxContainerComponent.prototype, \"formControl\", void 0);\nTextBoxContainerComponent = __decorate([ __param(3, Optional()), __param(3, Inject(RTL)),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ChangeDetectorRef, Boolean])\n], TextBoxContainerComponent);\n\nvar TextBoxDirective_1;\n/**\n * Represents the [Kendo UI TextBox directive]({% slug overview_textbox %}) for the Inputs components for Angular.\n * Used to style the textbox of any `input` element.\n *\n * @example\n * ```ts-no-run\n * \n * \n * \n * ```\n */\nlet TextBoxDirective = TextBoxDirective_1 = class TextBoxDirective {\n constructor(renderer, inputElement, ngZone) {\n this.renderer = renderer;\n this.inputElement = inputElement;\n this.ngZone = ngZone;\n this.hostClass = true;\n /**\n * @hidden\n */\n this.onFocus = new EventEmitter();\n /**\n * @hidden\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.onValueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillStart = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillEnd = new EventEmitter();\n this.listeners = [];\n }\n /**\n * @hidden\n */\n set value(text) {\n if (!this.inputElement) {\n return;\n }\n this.inputElement.nativeElement.value = (text === undefined || text === null) ? '' : text;\n this.onValueChange.emit();\n }\n /**\n * @hidden\n */\n get value() {\n return this.inputElement.nativeElement.value;\n }\n get id() {\n return this.inputElement.nativeElement.id;\n }\n set id(id) {\n this.renderer.setAttribute(this.inputElement.nativeElement, 'id', id);\n }\n ngAfterViewInit() {\n const input = this.inputElement.nativeElement;\n this.listeners = [\n this.renderer.listen(input, 'focus', () => this.onFocus.emit()),\n this.renderer.listen(input, 'blur', () => this.onBlur.emit())\n ];\n this.ngZone.runOutsideAngular(() => {\n this.renderer.listen(input, 'animationstart', (e) => {\n if (e.animationName === 'autoFillStart') {\n this.autoFillStart.emit();\n }\n else if (e.animationName === 'autoFillEnd') {\n this.autoFillEnd.emit();\n }\n });\n });\n }\n ngOnDestroy() {\n this.listeners.forEach(listener => listener());\n }\n};\nTextBoxDirective.ɵfac = function TextBoxDirective_Factory(t) { return new (t || TextBoxDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nTextBoxDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxDirective, selectors: [[\"input\", \"kendoTextBox\", \"\"]], hostVars: 2, hostBindings: function TextBoxDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-textbox\", ctx.hostClass);\n } }, inputs: { value: \"value\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective_1)\n }])] });\n__decorate([\n HostBinding('class.k-textbox'),\n __metadata(\"design:type\", Boolean)\n], TextBoxDirective.prototype, \"hostClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], TextBoxDirective.prototype, \"value\", null);\nTextBoxDirective = TextBoxDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n NgZone])\n], TextBoxDirective);\n\n/**\n * @hidden\n */\nconst createMaxValidator = (maxValue) => {\n return (c) => {\n if (!isPresent(maxValue) || !isPresent(c.value) || c.value <= maxValue) {\n return null;\n }\n return {\n maxError: {\n maxValue: maxValue,\n value: c.value\n }\n };\n };\n};\n\n/**\n * @hidden\n */\nconst createMinValidator = (minValue) => {\n return (c) => {\n if (!isPresent(minValue) || !isPresent(c.value) || c.value >= minValue) {\n return null;\n }\n return {\n minError: {\n minValue: minValue,\n value: c.value\n }\n };\n };\n};\n\n/**\n * @hidden\n */\nconst MIN_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/inputs/api/NumericTextBoxComponent/#toc-min';\n/**\n * @hidden\n */\nconst MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/inputs/api/NumericTextBoxComponent/#toc-max';\n/**\n * @hidden\n */\nconst POINT = \".\";\n/**\n * @hidden\n */\nconst INITIAL_SPIN_DELAY = 500;\n/**\n * @hidden\n */\nconst SPIN_DELAY = 50;\n/**\n * @hidden\n */\nconst EXPONENT_REGEX = /[eE][\\-+]?([0-9]+)/;\n\n/**\n * @hidden\n */\nconst numericRegex = (options) => {\n const { autoCorrect, decimals, min } = options;\n let separator = options.separator;\n if (separator === POINT) {\n separator = '\\\\' + separator;\n }\n const signPattern = autoCorrect && min !== null && min >= 0 ? '' : '-?';\n let numberPattern;\n if (decimals === 0) {\n numberPattern = '\\\\d*';\n }\n else {\n numberPattern = `(?:(?:\\\\d+(${separator}\\\\d*)?)|(?:${separator}\\\\d*))?`;\n }\n return new RegExp(`^${signPattern}${numberPattern}$`);\n};\n/**\n * @hidden\n */\nconst decimalPart = (value) => {\n return value >= 0 ? Math.floor(value) : Math.ceil(value);\n};\n/**\n * @hidden\n */\nconst noop = (_) => { }; // tslint:disable-line:no-empty\n/**\n * @hidden\n */\nconst defined = (value) => {\n return typeof value !== 'undefined';\n};\n/**\n * @hidden\n */\nconst isNumber = (value) => {\n return !isNaN(value) && value !== null;\n};\n/**\n * @hidden\n */\nfunction pad(value, digits) {\n const count = digits - String(value).length;\n let result = value;\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = parseFloat(value + padString);\n }\n return result;\n}\n/**\n * @hidden\n */\nconst getDeltaFromMouseWheel = (e) => {\n let delta = 0;\n if (e.wheelDelta) {\n delta = e.wheelDelta / 120;\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n }\n else if (e.detail) {\n delta = Math.round(-e.detail / 3);\n }\n return delta;\n};\n/**\n * @hidden\n */\nconst getCaretPosition = (element) => element.selectionStart;\n/**\n * @hidden\n */\nconst extractSignificantNumericChars = (formattedString, separator) => {\n const significantCharacters = `${separator}0123456789-`;\n return formattedString.split('').reduce((acc, curr) => significantCharacters.includes(curr) ? ++acc : acc, 0);\n};\n/**\n * @hidden\n */\nconst isRightClick = (event) => {\n const isRightClickIE = event.button && event.button === 2;\n const isRightClickOther = event.which && event.which === 3;\n return isRightClickIE || isRightClickOther;\n};\n\n/**\n * @hidden\n */\nvar ArrowDirection;\n(function (ArrowDirection) {\n ArrowDirection[ArrowDirection[\"Down\"] = -1] = \"Down\";\n ArrowDirection[ArrowDirection[\"None\"] = 0] = \"None\";\n ArrowDirection[ArrowDirection[\"Up\"] = 1] = \"Up\";\n})(ArrowDirection || (ArrowDirection = {}));\n\nvar NumericTextBoxComponent_1;\nconst PARSABLE_OPTIONS = ['min', 'max', 'step', 'decimals'];\nconst PARSABLE_DEFAULTS = {\n decimals: null,\n max: null,\n min: null,\n step: 1\n};\nconst FOCUSED$1 = 'k-state-focused';\nconst FORMATTED_VALUE = 'k-formatted-value';\n/**\n * Represents the [Kendo UI NumericTextBox component for Angular]({% slug overview_numerictextbox %}).\n */\nlet NumericTextBoxComponent = NumericTextBoxComponent_1 = class NumericTextBoxComponent {\n constructor(intl, renderer, localizationService, injector, ngZone, changeDetector, hostElement) {\n this.intl = intl;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.injector = injector;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the NumericTextBox is disabled ([see example]({% slug disabled_numerictextbox %})).\n */\n this.disabled = false;\n /**\n * Determines whether the NumericTextBox is in its read-only state ([see example]({% slug readonly_numerictextbox %})).\n */\n this.readonly = false;\n /**\n * Sets the title of the `input` element of the NumericTextBox.\n */\n this.title = '';\n /**\n * Specifies whether the value will be auto-corrected based on the minimum and maximum values\n * ([see example]({% slug precision_numerictextbox %})).\n */\n this.autoCorrect = false;\n /**\n * Specifies the number of decimals that the user can enter when the input is focused\n * ([see example]({% slug precision_numerictextbox %})).\n */\n this.decimals = null;\n /**\n * Specifies the value that is used to increment or decrement the component value\n * ([see example]({% slug predefinedsteps_numerictextbox %})).\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered\n * ([see example]({% slug spinbuttons_numerictextbox %})).\n */\n this.spinners = true;\n /**\n * Determines whether the built-in minimum or maximum validators are enforced when a form is validated.\n *\n * > The 4.2.0 Angular version introduces the `min` and `max` validation directives. As a result, even if you set `rangeValidation`\n * to `false`, the built-in Angular validators will be executed.\n */\n this.rangeValidation = true;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Determines whether the value of the NumericTextBox will be changed via scrolling. Defaults to `true`.\n *\n * @default true\n */\n this.changeValueOnScroll = true;\n /**\n * Determines whether the whole value will be selected when the NumericTextBox is clicked. Defaults to `true`.\n */\n this.selectOnFocus = true;\n /**\n * Specifies the value of the NumericTextBox\n * ([see example]({% slug formats_numerictextbox %})).\n */\n this.value = null;\n /**\n * Fires each time the user selects a new value ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.ArrowDirection = ArrowDirection;\n /**\n * @hidden\n */\n this.arrowDirection = ArrowDirection.None;\n this.inputValue = '';\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\n this._format = \"n2\";\n this.isPasted = false;\n this.mouseDown = false;\n this.ngChange = noop;\n this.ngTouched = noop;\n this.ngValidatorChange = noop;\n /**\n * @hidden\n */\n this.increasePress = (e) => {\n this.arrowPress(ArrowDirection.Up, e);\n };\n /**\n * @hidden\n */\n this.decreasePress = (e) => {\n this.arrowPress(ArrowDirection.Down, e);\n };\n /**\n * @hidden\n */\n this.releaseArrow = () => {\n clearTimeout(this.spinTimeout);\n if (this.arrowDirection !== ArrowDirection.None) {\n this.arrowDirection = ArrowDirection.None;\n this.changeDetector.detectChanges();\n }\n };\n /**\n * @hidden\n */\n this.handlePaste = () => {\n this.isPasted = true;\n };\n /**\n * @hidden\n */\n this.handleInput = () => {\n const input = this.numericInput.nativeElement;\n let { selectionStart, selectionEnd, value: inputValue } = input;\n if (this.pressedKey === Keys.NumpadDecimal) {\n inputValue = this.replaceNumpadDotValue();\n }\n if (this.isPasted) {\n inputValue = this.formatInputValue(this.intl.parseNumber(inputValue));\n }\n if (!this.isValid(inputValue)) {\n input.value = this.inputValue;\n this.setSelection(selectionStart - 1, selectionEnd - 1);\n return;\n }\n const parsedValue = this.intl.parseNumber(inputValue);\n let value = this.restrictDecimals(parsedValue);\n if (this.autoCorrect) {\n const limited = this.limitInputValue(value);\n value = limited.value;\n selectionStart = limited.selectionStart;\n selectionEnd = limited.selectionEnd;\n }\n if (parsedValue !== value || this.hasTrailingZeros(inputValue) || !this.focused) {\n this.setInputValue(value);\n this.setSelection(selectionStart, selectionEnd);\n }\n else {\n this.inputValue = inputValue;\n }\n if (this.isPasted) {\n input.value = this.inputValue;\n }\n this.updateValue(value);\n this.previousSelection = null;\n this.isPasted = false;\n };\n /**\n * @hidden\n */\n this.handleDragEnter = () => {\n if (!this.focused && !this.isDisabled) {\n this.setInputValue(this.value, true);\n }\n };\n /**\n * @hidden\n */\n this.handleMouseDown = () => {\n this.mouseDown = true;\n };\n /**\n * @hidden\n */\n this.handleFocus = () => {\n if (!this.focused) {\n this.focused = true;\n if (!this.isDisabled) {\n const shouldSelectAll = this.selectOnFocus || !this.mouseDown;\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n if (shouldSelectAll) {\n this.selectAll();\n }\n else {\n this.selectCaret();\n }\n }, 0);\n });\n }\n }\n this.mouseDown = false;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n //blur is thrown before input when dragging the input text in IE\n if (this.inputValue !== this.elementValue) {\n this.handleInput();\n }\n this.setInputValue();\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleKeyDown = (e) => {\n if (this.isDisabled) {\n return;\n }\n let step;\n if (e.keyCode === Keys.ArrowDown) {\n step = -1;\n }\n else if (e.keyCode === Keys.ArrowUp) {\n step = 1;\n }\n if (step && this.step) {\n e.preventDefault();\n this.addStep(step);\n }\n const input = this.numericInput.nativeElement;\n this.previousSelection = {\n end: input.selectionEnd,\n start: input.selectionStart\n };\n this.pressedKey = e.keyCode;\n };\n /**\n * @hidden\n */\n this.handleWheel = (e) => {\n if (this.focused && !this.isDisabled && this.changeValueOnScroll) {\n e.preventDefault();\n const delta = getDeltaFromMouseWheel(e);\n this.addStep(delta);\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Specifies the number format which is used when the NumericTextBox is not focused\n * ([see example]({% slug formats_numerictextbox %})).\n * If `format` is set to `null` or `undefined`, the default format will be used.\n */\n get format() {\n const format = this._format;\n return format !== null && format !== undefined ? format : 'n2';\n }\n set format(value) {\n this._format = value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get widgetClasses() {\n return true;\n }\n ngOnInit() {\n this.subscriptions = this.localizationService\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(PARSABLE_OPTIONS, changes, false)) {\n this.parseOptions(PARSABLE_OPTIONS.filter(option => changes[option]));\n }\n this.verifySettings();\n if (anyChanged(['min', 'max', 'rangeValidation'], changes, false)) {\n this.minValidateFn = this.rangeValidation ? createMinValidator(this.min) : noop;\n this.maxValidateFn = this.rangeValidation ? createMaxValidator(this.max) : noop;\n this.ngValidatorChange();\n }\n if (anyChanged(['autoCorrect', 'decimals', 'min'], changes)) {\n delete this.numericRegex;\n }\n if (anyChanged(['value', 'format'], changes, false)) {\n this.verifyValue(this.value);\n this.value = this.restrictModelValue(this.value);\n if (!this.focused || (this.intl.parseNumber(this.elementValue) !== this.value)) {\n this.setInputValue();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n clearTimeout(this.spinTimeout);\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.ngValidatorChange = fn;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n let restrictedValue = this.restrictModelValue(value);\n this.value = restrictedValue;\n this.setInputValue();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * Focuses the NumericTextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n invokeElementMethod(this.numericInput, 'focus');\n }\n /**\n * Blurs the NumericTextBox.\n */\n blur() {\n invokeElementMethod(this.numericInput, 'blur');\n }\n /**\n * Notifies the `NumericTextBoxComponent` that the input value should be changed.\n * Can be used to update the input after setting the component properties directly.\n */\n notifyValueChange() {\n this.setInputValue();\n }\n /**\n * @hidden\n */\n get incrementTitle() {\n return this.localizationService.get('increment');\n }\n /**\n * @hidden\n */\n get decrementTitle() {\n return this.localizationService.get('decrement');\n }\n get decimalSeparator() {\n const numberSymbols = this.intl.numberSymbols();\n return numberSymbols.decimal;\n }\n get elementValue() {\n return this.numericInput.nativeElement.value;\n }\n set elementValue(value) {\n this.renderer.setProperty(this.numericInput.nativeElement, 'value', value);\n }\n get focused() {\n return this.isFocused;\n }\n get hasDecimals() {\n return this.decimals !== null && this.decimals >= 0;\n }\n set focused(value) {\n if (this.isFocused !== value && this.numericWrap) {\n const wrap = this.numericWrap.nativeElement;\n const input = this.numericInput.nativeElement;\n if (value) {\n this.renderer.addClass(wrap, FOCUSED$1);\n if (!this.isDisabled) {\n this.renderer.removeClass(input, FORMATTED_VALUE);\n }\n }\n else {\n this.renderer.removeClass(wrap, FOCUSED$1);\n this.renderer.addClass(input, FORMATTED_VALUE);\n }\n this.isFocused = value;\n }\n }\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n arrowPress(direction, e) {\n e.preventDefault();\n if (this.isDisabled || isRightClick(e)) {\n return;\n }\n if (!mobileOS) {\n this.focused = true;\n this.focus();\n }\n if (this.arrowDirection !== direction) {\n this.arrowDirection = direction;\n this.changeDetector.detectChanges();\n }\n if (this.step) {\n this.spin(direction, INITIAL_SPIN_DELAY);\n }\n else {\n this.setInputValue();\n }\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n replaceNumpadDotValue() {\n let value = this.inputValue || \"\";\n if (this.previousSelection) {\n const input = this.numericInput.nativeElement;\n const { selectionStart, selectionEnd } = input;\n const { start, end } = this.previousSelection;\n input.value = value = value.substring(0, start) + this.decimalSeparator + value.substring(end);\n this.setSelection(selectionStart, selectionEnd);\n }\n return value;\n }\n isValid(value) {\n if (!this.numericRegex) {\n this.numericRegex = numericRegex({\n autoCorrect: this.autoCorrect,\n decimals: this.decimals,\n min: this.min,\n separator: this.decimalSeparator\n });\n }\n return this.numericRegex.test(value);\n }\n spin(step, timeout) {\n clearTimeout(this.spinTimeout);\n this.spinTimeout = window.setTimeout(() => {\n this.spin(step, SPIN_DELAY);\n }, timeout);\n this.addStep(step);\n }\n addStep(step) {\n let value = add(this.value || 0, this.step * step);\n value = this.limitValue(value);\n value = this.restrictDecimals(value);\n this.setInputValue(value);\n this.updateValue(value);\n }\n setSelection(start, end) {\n if (this.focused) {\n invokeElementMethod(this.numericInput, 'setSelectionRange', start, end);\n }\n }\n limitValue(value) {\n let result = value;\n if (!this.isInRange(value)) {\n if (isNumber(this.max) && value > this.max) {\n result = this.max;\n }\n if (isNumber(this.min) && value < this.min) {\n result = this.min;\n }\n }\n return result;\n }\n limitInputValue(value) {\n let { selectionStart, selectionEnd, value: enteredValue } = this.numericInput.nativeElement;\n let limitedValue = value;\n let selectToEnd = false;\n if (!this.isInRange(value)) {\n const lengthChange = enteredValue.length - String(this.inputValue).length;\n const { min, max } = this;\n const hasMax = isNumber(max);\n const hasMin = isNumber(min);\n let padLimit, replaceNext;\n let correctedValue = value;\n if (selectionStart === 0 && this.inputValue.substr(1) === enteredValue) {\n return {\n selectionEnd: selectionEnd,\n selectionStart: selectionStart,\n value: null\n };\n }\n if (hasMax && value > max) {\n if (value > 0) {\n replaceNext = true;\n }\n else {\n padLimit = max;\n }\n }\n else if (hasMin && value < min) {\n if (value > 0) {\n padLimit = min;\n }\n else {\n replaceNext = true;\n }\n }\n if (padLimit) {\n const paddedValue = this.tryPadValue(value, padLimit);\n if (paddedValue && decimalPart(value) !== decimalPart(padLimit)) {\n correctedValue = paddedValue;\n selectToEnd = true;\n }\n }\n else if (replaceNext) {\n if (this.inputValue && selectionStart !== enteredValue.length) {\n correctedValue = parseFloat(enteredValue.substr(0, selectionStart) +\n enteredValue.substr(selectionStart + lengthChange));\n }\n }\n limitedValue = this.limitValue(correctedValue);\n selectToEnd = (selectToEnd || limitedValue !== correctedValue) && this.previousSelection &&\n (this.previousSelection.end - this.previousSelection.start + lengthChange) > 0;\n }\n return {\n selectionEnd: selectToEnd ? String(limitedValue).length : selectionEnd,\n selectionStart: selectionStart,\n value: limitedValue\n };\n }\n tryPadValue(value, limit) {\n const limitLength = String(Math.floor(limit)).length;\n const zeroPadded = pad(value, limitLength);\n const zeroPaddedNext = pad(value, limitLength + 1);\n let result;\n if (this.isInRange(zeroPadded)) {\n result = zeroPadded;\n }\n else if (this.isInRange(zeroPaddedNext)) {\n result = zeroPaddedNext;\n }\n return result;\n }\n isInRange(value) {\n return !isNumber(value) || ((!isNumber(this.min) || this.min <= value) && (!isNumber(this.max) || value <= this.max));\n }\n restrictModelValue(value) {\n let result = this.restrictDecimals(value, true);\n if (this.autoCorrect && this.limitValue(result) !== result) {\n result = null;\n }\n return result;\n }\n restrictDecimals(value, round) {\n let result = value;\n if (value && this.hasDecimals) {\n const decimals = this.decimals;\n const stringValue = String(value);\n if (round || EXPONENT_REGEX.test(stringValue)) {\n result = toFixedPrecision(value, decimals);\n }\n else {\n const parts = stringValue.split(POINT);\n let fraction = parts[1];\n if (fraction && fraction.length > decimals) {\n fraction = fraction.substr(0, decimals);\n result = parseFloat(`${parts[0]}${POINT}${fraction}`);\n }\n }\n }\n return result;\n }\n formatInputValue(value) {\n let stringValue = String(value);\n const exponentMatch = EXPONENT_REGEX.exec(stringValue);\n if (exponentMatch) {\n stringValue = value.toFixed(limitPrecision(parseInt(exponentMatch[1], 10)));\n }\n return stringValue.replace(POINT, this.decimalSeparator);\n }\n formatValue(value, focused) {\n let formattedValue;\n if (value === null || !defined(value) || value === '') {\n formattedValue = '';\n }\n else if (focused && !this.readonly) {\n formattedValue = this.formatInputValue(value);\n }\n else {\n formattedValue = this.intl.formatNumber(value, this.format);\n }\n return formattedValue;\n }\n setInputValue(value = this.value, focused = this.focused) {\n const formattedValue = this.formatValue(value, focused);\n this.elementValue = formattedValue;\n this.inputValue = formattedValue;\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.min !== null && this.max !== null && this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK} and ${MAX_DOC_LINK}.`);\n }\n }\n verifyValue(value) {\n if (isDevMode() && value && typeof value !== 'number') {\n throw new Error(`The NumericTextBox component requires value of type Number and ${JSON.stringify(value)} was set.`);\n }\n }\n parseOptions(options) {\n for (let idx = 0; idx < options.length; idx++) {\n const name = options[idx];\n const value = this[name];\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n const valid = !isNaN(parsed);\n if (isDevMode() && !valid && value !== '') {\n throw new Error('The NumericTextBox component requires value of type Number or a String representing ' +\n `a number for the ${name} property and ${JSON.stringify(value)} was set.`);\n }\n this[name] = valid ? parsed : PARSABLE_DEFAULTS[name];\n }\n }\n }\n intlChange() {\n delete this.numericRegex;\n if (this.numericInput && (!this.focused || !this.isValid(this.elementValue))) {\n this.setInputValue();\n }\n }\n hasTrailingZeros(inputValue) {\n if (this.hasDecimals && this.focused) {\n const fraction = inputValue.split(this.decimalSeparator)[1];\n return fraction && fraction.length > this.decimals && fraction.lastIndexOf('0') === fraction.length - 1;\n }\n }\n selectAll() {\n this.setInputValue();\n this.setSelection(0, this.inputValue.length);\n }\n selectCaret() {\n const caretPosition = getCaretPosition(this.numericInput.nativeElement);\n const formattedValue = this.elementValue;\n const partialValue = formattedValue.substring(0, caretPosition);\n this.setInputValue();\n if (partialValue.length) {\n const significantCharsInFormattedValue = extractSignificantNumericChars(partialValue, this.decimalSeparator);\n const adjustedSignificantChars = this.adjustSignificantChars(formattedValue, significantCharsInFormattedValue);\n this.setSelection(adjustedSignificantChars, adjustedSignificantChars);\n }\n else {\n this.setSelection(0, 0);\n }\n }\n numberOfLeadingZeroes(formattedValue) {\n const separatorIndex = formattedValue.indexOf(this.decimalSeparator);\n const matchedLeadingZeroes = formattedValue.match(/^[^1-9]*?(0+)/);\n if (matchedLeadingZeroes) {\n const lengthOfMatch = matchedLeadingZeroes[0].length;\n const lengthOfLeadingZeroesMatch = matchedLeadingZeroes[1].length;\n return lengthOfMatch === separatorIndex ? lengthOfLeadingZeroesMatch - 1 : lengthOfLeadingZeroesMatch;\n }\n return 0;\n }\n adjustSignificantChars(formattedValue, significantChars) {\n const leadingZeroes = this.numberOfLeadingZeroes(formattedValue);\n if (leadingZeroes > 0) {\n return Math.max(0, significantChars - leadingZeroes);\n }\n return significantChars;\n }\n};\nNumericTextBoxComponent.ɵfac = function NumericTextBoxComponent_Factory(t) { return new (t || NumericTextBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNumericTextBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumericTextBoxComponent, selectors: [[\"kendo-numerictextbox\"]], viewQuery: function NumericTextBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c27, 7);\n ɵngcc0.ɵɵviewQuery(_c28, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.numericInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.numericWrap = _t.first);\n } }, hostVars: 5, hostBindings: function NumericTextBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-numerictextbox\", ctx.widgetClasses);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", autoCorrect: \"autoCorrect\", decimals: \"decimals\", step: \"step\", spinners: \"spinners\", rangeValidation: \"rangeValidation\", tabindex: \"tabindex\", changeValueOnScroll: \"changeValueOnScroll\", selectOnFocus: \"selectOnFocus\", value: \"value\", format: \"format\", tabIndex: \"tabIndex\", max: \"max\", min: \"min\", placeholder: \"placeholder\", maxlength: \"maxlength\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoNumericTextBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent_1) }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 6, vars: 26, consts: function () { let i18n_29; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Increment** button in the NumericTextBox\n * @meaning kendo.numerictextbox.increment\n */\n const MSG_EXTERNAL_4467784268438010275$$DIST_FESM2015_INDEX_JS_30 = goog.getMsg(\"Increase value\");\n i18n_29 = MSG_EXTERNAL_4467784268438010275$$DIST_FESM2015_INDEX_JS_30;\n }\n else {\n i18n_29 = $localize `:kendo.numerictextbox.increment|The title for the **Increment** button in the NumericTextBox␟0fc68540ffa04fdc246cf6cf8a1fed085f8b19a5␟4467784268438010275:Increase value`;\n } let i18n_31; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Decrement** button in the NumericTextBox\n * @meaning kendo.numerictextbox.decrement\n */\n const MSG_EXTERNAL_3960022057994897997$$DIST_FESM2015_INDEX_JS_32 = goog.getMsg(\"Decrease value\");\n i18n_31 = MSG_EXTERNAL_3960022057994897997$$DIST_FESM2015_INDEX_JS_32;\n }\n else {\n i18n_31 = $localize `:kendo.numerictextbox.decrement|The title for the **Decrement** button in the NumericTextBox␟df4751834075bf970c77d0da2c960b4e19a6b0dd␟3960022057994897997:Decrease value`;\n } return [[\"kendoNumericTextBoxLocalizedMessages\", \"\", \"increment\", i18n_29, \"decrement\", i18n_31], [1, \"k-numeric-wrap\", 3, \"kendoEventsOutsideAngular\"], [\"numericWrap\", \"\"], [\"role\", \"spinbutton\", \"autocomplete\", \"off\", \"autocorrect\", \"off\", 1, \"k-input\", \"k-formatted-value\", 3, \"id\", \"tabindex\", \"disabled\", \"readonly\", \"kendoEventsOutsideAngular\"], [\"numericInput\", \"\"], [\"class\", \"k-select\", 3, \"kendoEventsOutsideAngular\", 4, \"ngIf\"], [1, \"k-select\", 3, \"kendoEventsOutsideAngular\"], [\"role\", \"button\", 1, \"k-link\", \"k-link-increase\", 3, \"kendoEventsOutsideAngular\", \"title\"], [1, \"k-icon\", \"k-i-arrow-n\"], [\"role\", \"button\", 1, \"k-link\", \"k-link-decrease\", 3, \"kendoEventsOutsideAngular\", \"title\"], [1, \"k-icon\", \"k-i-arrow-s\"]]; }, template: function NumericTextBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"input\", 3, 4);\n ɵngcc0.ɵɵtemplate(5, NumericTextBoxComponent_span_5_Template, 5, 18, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(15, _c35, ctx.handleWheel, ctx.handleWheel));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"tabindex\", ctx.tabIndex)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction7(18, _c36, ctx.handleMouseDown, ctx.handleDragEnter, ctx.handleKeyDown, ctx.handleInput, ctx.handleFocus, ctx.handleBlur, ctx.handlePaste));\n ɵngcc0.ɵɵattribute(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.value)(\"title\", ctx.title)(\"placeholder\", ctx.placeholder)(\"maxLength\", ctx.maxlength);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n } }, directives: function () { return [LocalizedNumericTextBoxMessagesDirective, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"autoCorrect\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], NumericTextBoxComponent.prototype, \"format\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"decimals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"spinners\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], NumericTextBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"changeValueOnScroll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"selectOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"maxlength\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], NumericTextBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], NumericTextBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], NumericTextBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ViewChild('numericInput', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], NumericTextBoxComponent.prototype, \"numericInput\", void 0);\n__decorate([\n ViewChild('numericWrap', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], NumericTextBoxComponent.prototype, \"numericWrap\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-numerictextbox'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], NumericTextBoxComponent.prototype, \"widgetClasses\", null);\nNumericTextBoxComponent = NumericTextBoxComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [IntlService,\n Renderer2,\n LocalizationService,\n Injector,\n NgZone,\n ChangeDetectorRef,\n ElementRef])\n], NumericTextBoxComponent);\n\n/**\n * @hidden\n */\nclass NumericTextBoxMessages extends ComponentMessages {\n}\nNumericTextBoxMessages.ɵfac = /*@__PURE__*/ function () { let ɵNumericTextBoxMessages_BaseFactory; return function NumericTextBoxMessages_Factory(t) { return (ɵNumericTextBoxMessages_BaseFactory || (ɵNumericTextBoxMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NumericTextBoxMessages)))(t || NumericTextBoxMessages); }; }();\nNumericTextBoxMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NumericTextBoxMessages, inputs: { decrement: \"decrement\", increment: \"increment\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxMessages.prototype, \"decrement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxMessages.prototype, \"increment\", void 0);\n\nvar NumericTextBoxCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet NumericTextBoxCustomMessagesComponent = NumericTextBoxCustomMessagesComponent_1 = class NumericTextBoxCustomMessagesComponent extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nNumericTextBoxCustomMessagesComponent.ɵfac = function NumericTextBoxCustomMessagesComponent_Factory(t) { return new (t || NumericTextBoxCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nNumericTextBoxCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumericTextBoxCustomMessagesComponent, selectors: [[\"kendo-numerictextbox-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NumericTextBoxCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nNumericTextBoxCustomMessagesComponent = NumericTextBoxCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], NumericTextBoxCustomMessagesComponent);\n\n/**\n * @hidden\n */\nvar ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nclass Result {\n constructor(value, rest, type = ResultType.Undefined) {\n this.value = value;\n this.rest = rest;\n this.type = type;\n }\n //map :: Functor f => f a ~> (a -> b) -> f b\n map(fn) {\n return new Result(fn(this.value), this.rest);\n }\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n chain(fn) {\n return fn(this.value, this.rest);\n }\n fold(s, _ /*we don't need it*/) {\n return s(this.value, this.rest);\n }\n concat(r) {\n return this.map((vs, _) => r.chain((v, __) => vs.concat([v])));\n }\n toString() {\n return `Result({ value: '${this.value}', rest: ${this.rest} })`;\n }\n}\n\n/**\n * @hidden\n */\nclass Stream {\n constructor(input = [], control = []) {\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n eof() {\n return this.inputCursor >= this.input.length;\n }\n // Get the first value from the input.\n next() {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n }\n peek() {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n }\n eat_input() {\n this.inputCursor++;\n }\n eat_control() {\n this.controlCursor++;\n }\n eat() {\n this.inputCursor++;\n this.controlCursor++;\n }\n}\n\nconst toArray = (value) => (value || '').split('');\nconst ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nclass Parser {\n constructor(parse) {\n this.parse = parse;\n }\n run(input, control = '') {\n if (input instanceof Stream) {\n return this.parse(input);\n }\n else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n }\n //map :: Functor f => f a ~> (a -> b) -> f b\n map(f) {\n return new Parser(stream => this.parse(stream).map(f));\n }\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n chain(f) {\n return new Parser(stream => this.parse(stream).chain((v, s) => f(v).run(s)));\n }\n isLiteral(c) {\n return this.run(c).type === ResultType.Literal;\n }\n}\n/**\n * @hidden\n */\nconst mask = ({ prompt, promptPlaceholder }) => rule => new Parser(stream => {\n while (!stream.eof()) {\n const { char, control } = stream.peek();\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n});\n/**\n * @hidden\n */\nconst literal = _token => new Parser(stream => {\n // let {char, control} = stream.peek();\n let char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n }\n // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n return new Result(_token, stream, ResultType.Literal);\n});\n/**\n * @hidden\n */\nconst unmask = prompt => rule => new Parser(stream => {\n while (!stream.eof()) {\n const { char, control } = stream.peek();\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result('', stream);\n});\n/**\n * @hidden\n */\nconst unliteral = _token => new Parser(stream => {\n if (stream.eof()) {\n return new Result('', stream);\n }\n const { char } = stream.peek();\n if (char === _token) {\n stream.eat();\n }\n return new Result(_token, stream);\n});\n/**\n * @hidden\n */\nconst token = (rules, creator) => new Parser(stream => {\n let { char } = stream.next();\n const rule = rules[char];\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n return new Result(creator.mask(rule), stream);\n});\n/**\n * @hidden\n */\nconst rawMask = ({ prompt, promptPlaceholder }) => new Parser(stream => {\n let { char } = stream.next();\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n return new Result(char, stream);\n});\n/**\n * @hidden\n */\nconst rawLiteral = includeLiterals => new Parser(stream => {\n let { char } = stream.next();\n if (includeLiterals) {\n return new Result(char, stream);\n }\n return new Result('', stream);\n});\n\n/**\n * @hidden\n */\nconst always = value => new Parser(stream => new Result(value, stream));\n/**\n * @hidden\n */\nconst append = (p1, p2) => p1.chain(vs => p2.map(v => vs.concat([v])));\n/**\n * @hidden\n */\nconst sequence = list => list.reduce((acc, parser) => append(acc, parser), always([]));\n/**\n * @hidden\n */\nconst greedy = parser => new Parser(stream => {\n let result = new Result([], stream);\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n return result;\n});\n\n/**\n * @hidden\n */\nlet MaskingService = class MaskingService {\n /**\n * @hidden\n */\n constructor() {\n this.rules = {};\n this.prompt = \"_\";\n this.mask = \"\";\n this.promptPlaceholder = \" \";\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n update({ mask: mask$$1 = '', prompt = '', promptPlaceholder = ' ', rules = {}, includeLiterals = false }) {\n this.mask = mask$$1;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n }\n validationValue(maskedValue = '') {\n let value = maskedValue;\n sequence(this.validationTokens)\n .run(maskedValue)\n .fold(unmasked => {\n value = unmasked.join('');\n });\n return value;\n }\n rawValue(maskedValue = '') {\n let value = maskedValue;\n if (!this.rawTokens.length) {\n return value;\n }\n sequence(this.rawTokens)\n .run(maskedValue)\n .fold(unmasked => {\n value = unmasked.join('');\n });\n return value;\n }\n /**\n * @hidden\n */\n maskRaw(rawValue = '') {\n let value = rawValue;\n if (!this.maskTokens.length) {\n return value;\n }\n sequence(this.maskTokens)\n .run(rawValue)\n .fold(masked => {\n value = masked.join('');\n });\n return value;\n }\n maskInput(input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n return this.maskInserted(input, control, splitPoint);\n }\n maskInRange(pasted, oldValue, start, end) {\n let value = '';\n let selection = end;\n const beforeChange = oldValue.split('').slice(0, start);\n const afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end))\n .run(pasted)\n .fold(masked => {\n value = beforeChange\n .concat(masked)\n .concat(afterChange)\n .join('');\n });\n return {\n selection,\n value\n };\n }\n maskRemoved(input, control, splitPoint) {\n let value = '';\n let selection = splitPoint;\n const unchanged = input.split('').slice(splitPoint);\n const changed = input.split('').slice(0, splitPoint).join('');\n const take$$1 = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take$$1))\n .run(changed, control)\n .fold(masked => {\n selection = this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection,\n value\n };\n }\n adjustPosition(input, selection) {\n const caretChar = input[selection];\n const isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n return selection;\n }\n maskInserted(input, control, splitPoint) {\n let value = '';\n let selection = splitPoint;\n const changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens)\n .run(changed, control)\n .chain(unmasked => {\n selection = unmasked.join('').length;\n const unchanged = control.slice(selection);\n return sequence(this.maskTokens)\n .run(unmasked.join('') + unchanged, control);\n })\n .fold(masked => {\n value = masked.join('');\n });\n return {\n selection,\n value\n };\n }\n get maskTokenCreator() {\n const { prompt, promptPlaceholder } = this;\n return {\n literal: rule => literal(rule),\n mask: rule => mask({ prompt, promptPlaceholder })(rule)\n };\n }\n get unmaskTokenCreator() {\n return {\n literal: rule => unliteral(rule),\n mask: rule => unmask(this.prompt)(rule)\n };\n }\n get rawTokenCreator() {\n const { prompt, promptPlaceholder, includeLiterals } = this;\n return {\n literal: _ => rawLiteral(includeLiterals),\n mask: _ => rawMask({ prompt, promptPlaceholder })\n };\n }\n get validationTokenCreator() {\n const { prompt } = this;\n return {\n literal: _ => rawLiteral(false),\n mask: _ => rawMask({ prompt, promptPlaceholder: '' })\n };\n }\n tokenize() {\n greedy(token(this.rules, this.maskTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.validationTokens = tokens;\n });\n }\n};\nMaskingService.ɵfac = function MaskingService_Factory(t) { return new (t || MaskingService)(); };\nMaskingService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MaskingService, factory: function (t) { return MaskingService.ɵfac(t); } });\n\nvar MaskedTextBoxComponent_1;\nconst resolvedPromise = Promise.resolve(null);\nconst FOCUSED$2 = 'k-state-focused';\n/**\n * Represents the [Kendo UI MaskedTextBox component for Angular]({% slug overview_maskedtextbox %}).\n *\n * @example\n * ```ts-no-run\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public value: string = \"9580128055807792\";\n * public mask: string = \"0000-0000-0000-0000\";\n * }\n * ```\n */\nlet MaskedTextBoxComponent = MaskedTextBoxComponent_1 = class MaskedTextBoxComponent {\n constructor(service, renderer, hostElement, ngZone, injector, changeDetector, rtl) {\n this.service = service;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.injector = injector;\n this.changeDetector = changeDetector;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the MaskedTextBox is disabled ([see example]({% slug disabled_maskedtextbox %})).\n */\n this.disabled = false;\n /**\n * Determines whether the MaskedTextBox is in its read-only state ([see example]({% slug readonly_maskedtextbox %})).\n */\n this.readonly = false;\n this.hostClasses = true;\n /**\n * Represents a prompt character for the masked value.\n * @default `_`\n */\n this.prompt = '_';\n /**\n * Indicates a character which represents an empty position in the raw value.\n * @default ' '\n */\n this.promptPlaceholder = ' ';\n /**\n * Indicates whether to include literals in the raw value ([see example]({% slug value_maskedtextbox %})).\n * @default false\n */\n this.includeLiterals = false;\n /**\n * Specifies if the mask should be shown on focus for empty value.\n */\n this.maskOnFocus = false;\n /**\n * Determines whether the built-in mask validator is enforced when a form is validated\n * ([see example]({% slug validation_maskedtextbox %})).\n * @default true\n */\n this.maskValidation = true;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the `input` element.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the `input` element gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the value changes.\n */\n this.valueChange = new EventEmitter();\n this.focusClick = false;\n this.defaultRules = {\n \"#\": /[\\d\\s\\+\\-]/,\n \"&\": /[\\S]/,\n \"0\": /[\\d]/,\n \"9\": /[\\d\\s]/,\n \"?\": /[a-zA-Z\\s]/,\n \"A\": /[a-zA-Z0-9]/,\n \"C\": /./,\n \"L\": /[a-zA-Z]/,\n \"a\": /[a-zA-Z0-9\\s]/\n };\n this.isPasted = false;\n this.selection = [0, 0];\n /**\n * @hidden\n */\n this.handleFocus = () => {\n this.focused = true;\n if (this.maskOnFocus && this.emptyMask) {\n this.updateInput(this.service.maskRaw(this.value));\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => { this.setSelection(0, 0); }, 0);\n });\n }\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleClick = () => {\n if (this.focused && !this.focusClick) {\n this.focusClick = true;\n const { selectionStart, selectionEnd } = this.input.nativeElement;\n if (selectionStart === selectionEnd) {\n this.setFocusSelection();\n }\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n this.focusClick = false;\n if (this.maskOnFocus && this.emptyMask) {\n this.updateInput(this.maskedValue);\n }\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.onTouched();\n this.onBlur.emit();\n });\n }\n };\n this.onChange = (_) => { };\n this.onTouched = () => { };\n validatePackage(packageMetadata);\n this.direction = rtl ? 'rtl' : 'ltr';\n this.updateService();\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n /**\n * Exposes the RegExp-based mask validation array ([see example]({% slug masks_maskedtextbox %})).\n */\n get rules() {\n return this._rules || this.defaultRules;\n }\n set rules(value) {\n this._rules = Object.assign({}, this.defaultRules, value);\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n ngOnInit() {\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the MaskedTextBox is empty.\n */\n isEmpty() {\n if (this.input) {\n return !Boolean(this.input.nativeElement.value);\n }\n }\n /**\n * @hidden\n */\n handleDragDrop() {\n return false;\n }\n /**\n * Focuses the MaskedTextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.input.nativeElement.focus();\n this.setFocusSelection();\n }\n /**\n * Blurs the MaskedTextBox.\n */\n blur() {\n if (!this.input) {\n return;\n }\n this.input.nativeElement.blur();\n }\n /**\n * @hidden\n */\n pasteHandler(e) {\n const { selectionStart, selectionEnd } = e.target;\n if (selectionEnd === selectionStart) {\n return;\n }\n this.isPasted = true;\n this.selection = [selectionStart, selectionEnd];\n }\n /**\n * @hidden\n */\n inputHandler(e) {\n const value = e.target.value;\n const [start, end] = this.selection;\n if (!this.mask) {\n this.updateValue(value);\n this.isPasted = false;\n return;\n }\n let result;\n if (this.isPasted) {\n this.isPasted = false;\n const rightPart = this.maskedValue.length - end;\n const to = value.length - rightPart;\n result = this.service.maskInRange(value.slice(start, to), this.maskedValue, start, end);\n }\n else {\n result = this.service.maskInput(value, this.maskedValue, e.target.selectionStart);\n }\n this.updateInput(result.value, result.selection);\n this.updateValue(result.value);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.value) {\n this.value = this.normalizeValue();\n }\n if (!this.mask) {\n this.updateInput(this.value);\n return;\n }\n const next = this.extractChanges(changes);\n this.updateService(next);\n if (isChanged('value', changes)) {\n const maskedValue = this.service.maskRaw(this.value);\n if (maskedValue !== this.maskedValue) {\n this.updateInput(maskedValue);\n }\n }\n else if (anyChanged(['promptPlaceholder', 'includeLiterals'], changes)) {\n resolvedPromise.then(() => {\n this.updateValue(this.maskedValue);\n });\n }\n else {\n this.updateInput(this.service.maskRaw(this.value));\n }\n }\n /**\n * @hidden\n * Writes a new value to the element.\n */\n writeValue(value) {\n this.value = this.normalizeValue(value);\n this.updateInput(this.service.maskRaw(this.value));\n }\n /**\n * @hidden\n * Sets the function that will be called when a `change` event is triggered.\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * @hidden\n * Sets the function that will be called when a `touch` event is triggered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n validate(_) {\n if (this.maskValidation === false || !this.mask) {\n return null;\n }\n if (!this.service.validationValue(this.maskedValue)) {\n return null;\n }\n if (this.maskedValue.indexOf(this.prompt) !== -1) {\n return {\n patternError: {\n mask: this.mask,\n maskedValue: this.maskedValue,\n value: this.value\n }\n };\n }\n return null;\n }\n /**\n * @hidden\n */\n updateValue(maskedValue) {\n if (this.mask && !this.service.validationValue(maskedValue)) {\n this.value = '';\n }\n else {\n this.value = this.service.rawValue(maskedValue);\n }\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n }\n updateInput(maskedValue = '', selection) {\n this.maskedValue = maskedValue;\n const value = this.maskOnFocus && !this.focused && this.emptyMask ? '' : maskedValue;\n this.renderer.setProperty(this.input.nativeElement, \"value\", value);\n if (selection !== undefined) {\n this.setSelection(selection, selection);\n }\n }\n extractChanges(changes) {\n return Object.keys(changes).filter(key => key !== 'rules').reduce((obj, key) => {\n obj[key] = changes[key].currentValue;\n return obj;\n }, {}); // tslint:disable-line:align\n }\n updateService(extra) {\n const config = Object.assign({\n includeLiterals: this.includeLiterals,\n mask: this.mask,\n prompt: this.prompt,\n promptPlaceholder: this.promptPlaceholder,\n rules: this.rules\n }, extra); // tslint:disable-line:align\n this.service.update(config);\n }\n setSelection(start = this.selection[0], end = this.selection[1]) {\n if (this.focused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n get emptyMask() {\n return this.service.maskRaw() === this.maskedValue;\n }\n setFocusSelection() {\n const selectionStart = this.input.nativeElement.selectionStart;\n const index = this.maskedValue ? this.maskedValue.indexOf(this.prompt) : 0;\n if (index >= 0 && index < selectionStart) {\n this.selection = [index, index];\n this.setSelection();\n }\n }\n get focused() {\n return this.isFocused;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(element, FOCUSED$2);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$2);\n }\n this.isFocused = value;\n }\n }\n normalizeValue(value = this.value) {\n const present = isPresent(value);\n if (present && typeof value !== 'string') {\n if (isDevMode()) {\n throw new Error('The MaskedTextBox component supports only string values.');\n }\n return String(value);\n }\n return present ? value : '';\n }\n};\nMaskedTextBoxComponent.ɵfac = function MaskedTextBoxComponent_Factory(t) { return new (t || MaskedTextBoxComponent)(ɵngcc0.ɵɵdirectiveInject(MaskingService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nMaskedTextBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MaskedTextBoxComponent, selectors: [[\"kendo-maskedtextbox\"]], viewQuery: function MaskedTextBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c37, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 7, hostBindings: function MaskedTextBoxComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"paste\", function MaskedTextBoxComponent_paste_HostBindingHandler($event) { return ctx.pasteHandler($event); })(\"input\", function MaskedTextBoxComponent_input_HostBindingHandler($event) { return ctx.inputHandler($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-maskedtextbox\", ctx.hostClasses)(\"k-state-disabled\", ctx.hostDisabledClass);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", prompt: \"prompt\", promptPlaceholder: \"promptPlaceholder\", includeLiterals: \"includeLiterals\", maskOnFocus: \"maskOnFocus\", maskValidation: \"maskValidation\", tabindex: \"tabindex\", rules: \"rules\", tabIndex: \"tabIndex\", value: \"value\", title: \"title\", mask: \"mask\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, exportAs: [\"kendoMaskedTextBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\n MaskingService,\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1) /* tslint:disable-line */\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 12, consts: [[\"type\", \"text\", \"autocomplete\", \"off\", \"autocorrect\", \"off\", \"autocapitalize\", \"off\", \"spellcheck\", \"false\", 1, \"k-textbox\", 3, \"id\", \"tabindex\", \"disabled\", \"readonly\", \"kendoEventsOutsideAngular\"], [\"input\", \"\"]], template: function MaskedTextBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"input\", 0, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"tabindex\", ctx.tabIndex)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction5(6, _c38, ctx.handleFocus, ctx.handleBlur, ctx.handleClick, ctx.handleDragDrop, ctx.handleDragDrop));\n ɵngcc0.ɵɵattribute(\"title\", ctx.title);\n } }, directives: [ɵngcc2.EventsOutsideAngularDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"title\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-maskedtextbox'),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], MaskedTextBoxComponent.prototype, \"hostDisabledClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"mask\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MaskedTextBoxComponent.prototype, \"rules\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"prompt\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"promptPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"includeLiterals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"maskOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"maskValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MaskedTextBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], MaskedTextBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], MaskedTextBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], MaskedTextBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MaskedTextBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], MaskedTextBoxComponent.prototype, \"input\", void 0);\n__decorate([\n HostListener('paste', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskedTextBoxComponent.prototype, \"pasteHandler\", null);\n__decorate([\n HostListener('input', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskedTextBoxComponent.prototype, \"inputHandler\", null);\nMaskedTextBoxComponent = MaskedTextBoxComponent_1 = __decorate([ __param(6, Optional()), __param(6, Inject(RTL)),\n __metadata(\"design:paramtypes\", [MaskingService,\n Renderer2,\n ElementRef,\n NgZone,\n Injector,\n ChangeDetectorRef, Boolean])\n], MaskedTextBoxComponent);\n\n/**\n * @hidden\n */\nclass SliderTick {\n constructor(value) {\n this.value = value;\n this.classes = {\n 'k-tick': true\n };\n }\n}\n/**\n * @hidden\n */\nlet SliderTicksComponent = class SliderTicksComponent {\n /**\n * @hidden\n */\n constructor() {\n this.wrapperClasses = 'k-reset k-slider-items';\n this.ticks = [];\n }\n ngOnChanges(_) {\n this.createTicks();\n }\n createTicks() {\n const count = calculateTicksCount(this.min, this.max, this.step);\n const largeStep = this.largeStep;\n const tickValueProps = {\n max: this.max,\n min: this.min,\n smallStep: this.step\n };\n let result = [];\n for (let i = 0; i < count; i++) {\n result.push(new SliderTick(calculateValueFromTick(i, tickValueProps)));\n if (largeStep && i % largeStep === 0) {\n result[i].large = true;\n result[i].classes['k-tick-large'] = true;\n }\n }\n if (result.length > 0) {\n Object.assign(result[0].classes, this.endTickClasses(true));\n Object.assign(result[result.length - 1].classes, this.endTickClasses(false));\n }\n this.ticks = result;\n }\n endTickClasses(first) {\n return {\n 'k-first': (first && !this.vertical) || (!first && this.vertical),\n 'k-last': (!first && !this.vertical) || (first && this.vertical)\n };\n }\n};\nSliderTicksComponent.ɵfac = function SliderTicksComponent_Factory(t) { return new (t || SliderTicksComponent)(); };\nSliderTicksComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderTicksComponent, selectors: [[\"\", \"kendoSliderTicks\", \"\"]], viewQuery: function SliderTicksComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c39, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tickElements = _t);\n } }, hostVars: 2, hostBindings: function SliderTicksComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.wrapperClasses);\n } }, inputs: { tickTitle: \"tickTitle\", vertical: \"vertical\", step: \"step\", largeStep: \"largeStep\", min: \"min\", max: \"max\", labelTemplate: \"labelTemplate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c40, decls: 3, vars: 1, consts: [[\"role\", \"presentation\", 3, \"ngClass\", \"title\", 4, \"ngFor\", \"ngForOf\"], [\"defaultLabel\", \"\"], [\"role\", \"presentation\", 3, \"ngClass\", \"title\"], [\"tickElement\", \"\"], [3, \"ngSwitch\"], [\"class\", \"k-label\", 4, \"ngSwitchCase\"], [4, \"ngSwitchCase\"], [1, \"k-label\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function SliderTicksComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SliderTicksComponent_li_0_Template, 5, 5, \"li\", 0);\n ɵngcc0.ɵɵtemplate(1, SliderTicksComponent_ng_template_1_Template, 1, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n } }, directives: [ɵngcc3.NgForOf, ɵngcc3.NgClass, ɵngcc3.NgSwitch, ɵngcc3.NgSwitchCase, ɵngcc3.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n HostBinding('class'),\n __metadata(\"design:type\", String)\n], SliderTicksComponent.prototype, \"wrapperClasses\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SliderTicksComponent.prototype, \"tickTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderTicksComponent.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"largeStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], SliderTicksComponent.prototype, \"labelTemplate\", void 0);\n__decorate([\n ViewChildren('tickElement'),\n __metadata(\"design:type\", QueryList)\n], SliderTicksComponent.prototype, \"tickElements\", void 0);\n\n/**\n * @hidden\n */\nlet SlidersCommonModule = class SlidersCommonModule {\n};\nSlidersCommonModule.ɵfac = function SlidersCommonModule_Factory(t) { return new (t || SlidersCommonModule)(); };\nSlidersCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SlidersCommonModule });\nSlidersCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, DraggableModule, EventsModule, ResizeSensorModule], DraggableModule,\n EventsModule,\n ResizeSensorModule] });\n\n/**\n * @hidden\n */\nclass SliderMessages extends ComponentMessages {\n}\nSliderMessages.ɵfac = /*@__PURE__*/ function () { let ɵSliderMessages_BaseFactory; return function SliderMessages_Factory(t) { return (ɵSliderMessages_BaseFactory || (ɵSliderMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(SliderMessages)))(t || SliderMessages); }; }();\nSliderMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderMessages, inputs: { decrement: \"decrement\", increment: \"increment\", dragHandle: \"dragHandle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderMessages.prototype, \"decrement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderMessages.prototype, \"increment\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderMessages.prototype, \"dragHandle\", void 0);\n\nvar LocalizedSliderMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedSliderMessagesDirective = LocalizedSliderMessagesDirective_1 = class LocalizedSliderMessagesDirective extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedSliderMessagesDirective.ɵfac = function LocalizedSliderMessagesDirective_Factory(t) { return new (t || LocalizedSliderMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedSliderMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedSliderMessagesDirective, selectors: [[\"\", \"kendoSliderLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedSliderMessagesDirective = LocalizedSliderMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedSliderMessagesDirective);\n\nvar SliderCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet SliderCustomMessagesComponent = SliderCustomMessagesComponent_1 = class SliderCustomMessagesComponent extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nSliderCustomMessagesComponent.ɵfac = function SliderCustomMessagesComponent_Factory(t) { return new (t || SliderCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nSliderCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderCustomMessagesComponent, selectors: [[\"kendo-slider-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SliderCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nSliderCustomMessagesComponent = SliderCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], SliderCustomMessagesComponent);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Slider component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { SliderModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, SliderModule], // import Slider module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet SliderModule = class SliderModule {\n};\nSliderModule.ɵfac = function SliderModule_Factory(t) { return new (t || SliderModule)(); };\nSliderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SliderModule });\nSliderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, SlidersCommonModule]] });\n\n/**\n * @hidden\n */\nclass RangeSliderMessages extends ComponentMessages {\n}\nRangeSliderMessages.ɵfac = /*@__PURE__*/ function () { let ɵRangeSliderMessages_BaseFactory; return function RangeSliderMessages_Factory(t) { return (ɵRangeSliderMessages_BaseFactory || (ɵRangeSliderMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(RangeSliderMessages)))(t || RangeSliderMessages); }; }();\nRangeSliderMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: RangeSliderMessages, inputs: { dragHandleStart: \"dragHandleStart\", dragHandleEnd: \"dragHandleEnd\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], RangeSliderMessages.prototype, \"dragHandleStart\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], RangeSliderMessages.prototype, \"dragHandleEnd\", void 0);\n\nvar LocalizedRangeSliderMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedRangeSliderMessagesDirective = LocalizedRangeSliderMessagesDirective_1 = class LocalizedRangeSliderMessagesDirective extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedRangeSliderMessagesDirective.ɵfac = function LocalizedRangeSliderMessagesDirective_Factory(t) { return new (t || LocalizedRangeSliderMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedRangeSliderMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedRangeSliderMessagesDirective, selectors: [[\"\", \"kendoSliderLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedRangeSliderMessagesDirective = LocalizedRangeSliderMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedRangeSliderMessagesDirective);\n\nvar RangeSliderCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet RangeSliderCustomMessagesComponent = RangeSliderCustomMessagesComponent_1 = class RangeSliderCustomMessagesComponent extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nRangeSliderCustomMessagesComponent.ɵfac = function RangeSliderCustomMessagesComponent_Factory(t) { return new (t || RangeSliderCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nRangeSliderCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RangeSliderCustomMessagesComponent, selectors: [[\"kendo-rangeslider-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RangeSliderCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nRangeSliderCustomMessagesComponent = RangeSliderCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], RangeSliderCustomMessagesComponent);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the RangeSlider component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { RangeSliderModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, RangeSliderModule], // import RangeSlider module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet RangeSliderModule = class RangeSliderModule {\n};\nRangeSliderModule.ɵfac = function RangeSliderModule_Factory(t) { return new (t || RangeSliderModule)(); };\nRangeSliderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: RangeSliderModule });\nRangeSliderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, SlidersCommonModule]] });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { on: \"on\", off: \"off\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"on\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"off\", void 0);\n\nvar LocalizedSwitchMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedSwitchMessagesDirective = LocalizedSwitchMessagesDirective_1 = class LocalizedSwitchMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedSwitchMessagesDirective.ɵfac = function LocalizedSwitchMessagesDirective_Factory(t) { return new (t || LocalizedSwitchMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedSwitchMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedSwitchMessagesDirective, selectors: [[\"\", \"kendoSwitchLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedSwitchMessagesDirective = LocalizedSwitchMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedSwitchMessagesDirective);\n\nvar SwitchCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet SwitchCustomMessagesComponent = SwitchCustomMessagesComponent_1 = class SwitchCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nSwitchCustomMessagesComponent.ɵfac = function SwitchCustomMessagesComponent_Factory(t) { return new (t || SwitchCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nSwitchCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SwitchCustomMessagesComponent, selectors: [[\"kendo-switch-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SwitchCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nSwitchCustomMessagesComponent = SwitchCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], SwitchCustomMessagesComponent);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Switch component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Switch module\n * import { SwitchModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, SwitchModule], // import Switch module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet SwitchModule = class SwitchModule {\n};\nSwitchModule.ɵfac = function SwitchModule_Factory(t) { return new (t || SwitchModule)(); };\nSwitchModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SwitchModule });\nSwitchModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule, ResizeSensorModule]] });\n\nvar LocalizedNumericTextBoxMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedNumericTextBoxMessagesDirective = LocalizedNumericTextBoxMessagesDirective_1 = class LocalizedNumericTextBoxMessagesDirective extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedNumericTextBoxMessagesDirective.ɵfac = function LocalizedNumericTextBoxMessagesDirective_Factory(t) { return new (t || LocalizedNumericTextBoxMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedNumericTextBoxMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedNumericTextBoxMessagesDirective, selectors: [[\"\", \"kendoNumericTextBoxLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedNumericTextBoxMessagesDirective = LocalizedNumericTextBoxMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedNumericTextBoxMessagesDirective);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the NumericTextBox component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the NumericTextBox module\n * import { NumericTextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NumericTextBoxModule], // import NumericTextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet NumericTextBoxModule = class NumericTextBoxModule {\n};\nNumericTextBoxModule.ɵfac = function NumericTextBoxModule_Factory(t) { return new (t || NumericTextBoxModule)(); };\nNumericTextBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NumericTextBoxModule });\nNumericTextBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule]] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the MaskedTextBox component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the MaskedTextBox module\n * import { MaskedTextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, MaskedTextBoxModule], // import MaskedTextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet MaskedTextBoxModule = class MaskedTextBoxModule {\n};\nMaskedTextBoxModule.ɵfac = function MaskedTextBoxModule_Factory(t) { return new (t || MaskedTextBoxModule)(); };\nMaskedTextBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MaskedTextBoxModule });\nMaskedTextBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule]] });\n\n/**\n * @hidden\n *\n * Returns true if the used browser is Safari.\n */\nconst isSafari = (userAgent) => {\n return detectDesktopBrowser(userAgent).safari ||\n (detectMobileOS(userAgent) && detectMobileOS(userAgent).browser === 'mobilesafari');\n};\n/**\n * @hidden\n *\n * Checks if input is Japanese IME\n */\nconst isJapanese = (input) => {\n const japaneseRegex = /[\\u3000-\\u303F]|[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\uFF00-\\uFFEF]|[\\u4E00-\\u9FAF]|[\\u2605-\\u2606]|[\\u2190-\\u2195]|\\u203B/g;\n return japaneseRegex.test(input);\n};\n\n/**\n * Specifies the adornments in the suffix container ([see examples]({% slug adornments_textbox %}#toc-suffixadornments)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nlet TextBoxSuffixTemplateDirective = class TextBoxSuffixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTextBoxSuffixTemplateDirective.ɵfac = function TextBoxSuffixTemplateDirective_Factory(t) { return new (t || TextBoxSuffixTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nTextBoxSuffixTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxSuffixTemplateDirective, selectors: [[\"\", \"kendoTextBoxSuffixTemplate\", \"\"]] });\nTextBoxSuffixTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], TextBoxSuffixTemplateDirective);\n\n/**\n * Specifies the adornments in the prefix container ([see examples]({% slug adornments_textbox %}#toc-prefixadornments)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nlet TextBoxPrefixTemplateDirective = class TextBoxPrefixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTextBoxPrefixTemplateDirective.ɵfac = function TextBoxPrefixTemplateDirective_Factory(t) { return new (t || TextBoxPrefixTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nTextBoxPrefixTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxPrefixTemplateDirective, selectors: [[\"\", \"kendoTextBoxPrefixTemplate\", \"\"]] });\nTextBoxPrefixTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], TextBoxPrefixTemplateDirective);\n\nvar TextBoxComponent_1;\nconst FOCUSED$3 = 'k-state-focused';\nlet TextBoxComponent = TextBoxComponent_1 = class TextBoxComponent {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets the `title` attribute of the `input` element of the TextBox.\n */\n this.title = '';\n /**\n * Sets the disabled state of the component.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the `tabindex` of the TextBox.\n *\n * @default 0\n */\n this.tabindex = 0;\n /**\n * Provides a value for the TextBox.\n */\n this.value = null;\n /**\n * Determines whether the whole value will be selected when the TextBox is clicked. Defaults to `false`.\n *\n * @default false\n */\n this.selectOnFocus = false;\n /**\n * Specifies when the Success icon will be shown ([see example]({% slug validation_textbox %})).\n *\n * The possible values are:\n *\n * `boolean`—The Success icon is displayed, if the condition given by the developer is met.\n *\n * `initial`—The Success icon will be displayed when the component state is neither `invalid` nor `touched` or `dirty`.\n *\n * @default false\n */\n this.showSuccessIcon = false;\n /**\n * Specifies when the Error icon will be shown ([see example]({% slug validation_textbox %})).\n *\n * The possible values are:\n *\n * * `initial`—The Error icon will be displayed when the component state is\n * `invalid` and `touched` or `dirty`.\n * * `boolean`—The Error icon is displayed, if the condition given by the developer is met.\n *\n * @default false\n */\n this.showErrorIcon = false;\n /**\n * Specifies whether a Clear button will be rendered.\n *\n * @default false\n */\n this.clearButton = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_textbox %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.inputBlur = new EventEmitter();\n /**\n * Fires each time the user focuses the TextBox component.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log('Component is isFocused');\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the TextBox component gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log('Component is blurred');\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n this.hostClass = true;\n this._isFocused = false;\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.handleInputFocus = () => {\n if (!this.disabled) {\n if (this.selectOnFocus && this.value) {\n this.ngZone.run(() => {\n setTimeout(() => { this.selectAll(); });\n });\n }\n if (hasObservers(this.onFocus)) {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n if (hasObservers(this.inputFocus)) {\n if (!this.focusChangedProgrammatically || (this.focusChangedProgrammatically && this.clearButtonClicked)) {\n this.ngZone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n this.ngZone.run(() => {\n this.isFocused = true;\n });\n }\n };\n /**\n * @hidden\n */\n this.handleInputBlur = () => {\n this.changeDetector.markForCheck();\n if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.inputBlur.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleInput = (ev) => {\n let incomingValue = isSafari(navigator.userAgent) && isJapanese(ev.target.value) ? ev.data : ev.target.value;\n this.updateValue(incomingValue);\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get disabledClass() {\n return this.disabled;\n }\n ngOnInit() {\n this.control = this.injector.get(NgControl, null);\n this.checkClearButton();\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n let cursorInsideWrapper = false;\n let tabbing = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n this.isFocused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);\n if (!closestTextbox) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper && !this.clearButtonClicked) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n ngOnChanges(changes) {\n if (changes.disabled || changes.readonly || changes.value) {\n this.checkClearButton();\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * Focuses the TextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.focusChangedProgrammatically = true;\n this.isFocused = true;\n this.input.nativeElement.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the TextBox.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const isFocusedElement = this.hostElement.nativeElement.querySelector(':focus');\n if (isFocusedElement) {\n isFocusedElement.blur();\n }\n this.isFocused = false;\n this.focusChangedProgrammatically = false;\n }\n /**\n * @hidden\n */\n clearTitle() {\n return this.localizationService.get('clear');\n }\n /**\n * @hidden\n */\n checkClearButton() {\n this.showClearButton =\n !this.disabled &&\n !this.readonly &&\n this.clearButton &&\n !!this.value;\n }\n /**\n * @hidden\n */\n clearValue(ev) {\n if (ev) {\n ev.preventDefault();\n }\n this.clearButtonClicked = true;\n this.input.nativeElement.value = '';\n this.input.nativeElement.focus();\n this.updateValue('');\n this.checkClearButton();\n this.clearButtonClicked = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.checkClearButton();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n showErrorsInitial() {\n if (!this.control) {\n return false;\n }\n const { invalid, dirty, touched } = this.control;\n return invalid && (dirty || touched);\n }\n /**\n * @hidden\n */\n showSuccessInitial() {\n if (!this.control) {\n return false;\n }\n const { valid, dirty, touched } = this.control;\n return valid && (dirty || touched);\n }\n /**\n * @hidden\n */\n get successIconClasses() {\n return this.successIcon\n ? `k-text-success ${this.successIcon}`\n : `k-text-success k-icon k-i-check-outline`;\n }\n /**\n * @hidden\n */\n get errorIconClasses() {\n return this.errorIcon\n ? `k-text-error ${this.errorIcon}`\n : `k-text-error k-icon k-i-warning`;\n }\n /**\n * @hidden\n */\n get clearButtonClasses() {\n return this.clearButtonIcon\n ? this.clearButtonIcon\n : `k-icon k-i-close-circle`;\n }\n /**\n * @hidden\n */\n get hasErrors() {\n return this.showErrorIcon === 'initial'\n ? this.showErrorsInitial()\n : this.showErrorIcon;\n }\n /**\n * @hidden\n */\n get isSuccessful() {\n return this.showSuccessIcon === 'initial'\n ? this.showSuccessInitial()\n : this.showSuccessIcon;\n }\n setSelection(start, end) {\n if (this.isFocused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n selectAll() {\n if (this.value) {\n this.setSelection(0, this.value.length);\n }\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.checkClearButton();\n this.changeDetector.markForCheck();\n });\n }\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n if (this._isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value && !this.disabled) {\n this.renderer.addClass(element, FOCUSED$3);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$3);\n }\n this._isFocused = value;\n }\n }\n handleBlur() {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n this.isFocused = false;\n });\n }\n};\nTextBoxComponent.ɵfac = function TextBoxComponent_Factory(t) { return new (t || TextBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nTextBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextBoxComponent, selectors: [[\"kendo-textbox\"]], contentQueries: function TextBoxComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TextBoxSuffixTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TextBoxPrefixTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.suffixTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.prefixTemplate = _t.first);\n } }, viewQuery: function TextBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c37, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 5, hostBindings: function TextBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-textbox\", ctx.hostClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", value: \"value\", selectOnFocus: \"selectOnFocus\", showSuccessIcon: \"showSuccessIcon\", showErrorIcon: \"showErrorIcon\", clearButton: \"clearButton\", tabIndex: \"tabIndex\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", clearButtonIcon: \"clearButtonIcon\", placeholder: \"placeholder\", maxlength: \"maxlength\" }, outputs: { valueChange: \"valueChange\", inputFocus: \"inputFocus\", inputBlur: \"inputBlur\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoTextBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textbox' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextBoxComponent_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent_1) }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 18, consts: function () { let i18n_41; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Clear** button in the TextBox.\n * @meaning kendo.textbox.clear\n */\n const MSG_EXTERNAL_2651889799249671820$$DIST_FESM2015_INDEX_JS_42 = goog.getMsg(\"Clear\");\n i18n_41 = MSG_EXTERNAL_2651889799249671820$$DIST_FESM2015_INDEX_JS_42;\n }\n else {\n i18n_41 = $localize `:kendo.textbox.clear|The title for the **Clear** button in the TextBox.␟e6edd360fd0d3c873c0d94a3aecd3c407d31da5a␟2651889799249671820:Clear`;\n } return [[\"kendoTextBoxLocalizedMessages\", \"\", \"clear\", i18n_41], [1, \"k-input-prefix\"], [4, \"ngIf\"], [1, \"k-input\", 3, \"id\", \"disabled\", \"readonly\", \"value\", \"kendoEventsOutsideAngular\"], [\"input\", \"\"], [1, \"k-input-suffix\"], [3, \"ngClass\", 4, \"ngIf\"], [\"role\", \"button\", \"class\", \"k-clear-value\", 3, \"tabindex\", \"title\", \"click\", \"mousedown\", \"keydown.enter\", \"keydown.space\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\"], [3, \"ngClass\"], [\"role\", \"button\", 1, \"k-clear-value\", 3, \"tabindex\", \"title\", \"click\", \"mousedown\", \"keydown.enter\", \"keydown.space\"]]; }, template: function TextBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1);\n ɵngcc0.ɵɵtemplate(2, TextBoxComponent_2_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"input\", 3, 4);\n ɵngcc0.ɵɵelementStart(5, \"span\", 5);\n ɵngcc0.ɵɵtemplate(6, TextBoxComponent_span_6_Template, 1, 1, \"span\", 6);\n ɵngcc0.ɵɵtemplate(7, TextBoxComponent_span_7_Template, 1, 1, \"span\", 6);\n ɵngcc0.ɵɵtemplate(8, TextBoxComponent_span_8_Template, 2, 4, \"span\", 7);\n ɵngcc0.ɵɵtemplate(9, TextBoxComponent_9_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"value\", ctx.value)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(14, _c43, ctx.handleInputFocus, ctx.handleInputBlur, ctx.handleInput));\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? undefined : ctx.tabindex)(\"placeholder\", ctx.placeholder)(\"title\", ctx.title)(\"maxlength\", ctx.maxlength);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasErrors);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isSuccessful);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showClearButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate);\n } }, directives: function () { return [LocalizedTextBoxMessagesDirective, ɵngcc3.NgIf, ɵngcc3.NgTemplateOutlet, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgClass]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"selectOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TextBoxComponent.prototype, \"showSuccessIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TextBoxComponent.prototype, \"showErrorIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"successIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"errorIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"clearButtonIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], TextBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextBoxComponent.prototype, \"maxlength\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"inputFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"inputBlur\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], TextBoxComponent.prototype, \"input\", void 0);\n__decorate([\n ContentChild(TextBoxSuffixTemplateDirective, { static: false }),\n __metadata(\"design:type\", TextBoxSuffixTemplateDirective)\n], TextBoxComponent.prototype, \"suffixTemplate\", void 0);\n__decorate([\n ContentChild(TextBoxPrefixTemplateDirective, { static: false }),\n __metadata(\"design:type\", TextBoxPrefixTemplateDirective)\n], TextBoxComponent.prototype, \"prefixTemplate\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('class.k-textbox'),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"direction\", void 0);\nTextBoxComponent = TextBoxComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n Injector,\n ElementRef])\n], TextBoxComponent);\n\n/**\n * @hidden\n */\nclass TextBoxMessages extends ComponentMessages {\n}\nTextBoxMessages.ɵfac = /*@__PURE__*/ function () { let ɵTextBoxMessages_BaseFactory; return function TextBoxMessages_Factory(t) { return (ɵTextBoxMessages_BaseFactory || (ɵTextBoxMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TextBoxMessages)))(t || TextBoxMessages); }; }();\nTextBoxMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxMessages, inputs: { clear: \"clear\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxMessages.prototype, \"clear\", void 0);\n\nvar TextBoxCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet TextBoxCustomMessagesComponent = TextBoxCustomMessagesComponent_1 = class TextBoxCustomMessagesComponent extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nTextBoxCustomMessagesComponent.ɵfac = function TextBoxCustomMessagesComponent_Factory(t) { return new (t || TextBoxCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nTextBoxCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextBoxCustomMessagesComponent, selectors: [[\"kendo-textbox-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function TextBoxCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nTextBoxCustomMessagesComponent = TextBoxCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], TextBoxCustomMessagesComponent);\n\nvar LocalizedTextBoxMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedTextBoxMessagesDirective = LocalizedTextBoxMessagesDirective_1 = class LocalizedTextBoxMessagesDirective extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedTextBoxMessagesDirective.ɵfac = function LocalizedTextBoxMessagesDirective_Factory(t) { return new (t || LocalizedTextBoxMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedTextBoxMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedTextBoxMessagesDirective, selectors: [[\"\", \"kendoTextBoxLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedTextBoxMessagesDirective = LocalizedTextBoxMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedTextBoxMessagesDirective);\n\n/**\n * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nlet InputSeparatorComponent = class InputSeparatorComponent {\n /**\n * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\n constructor() {\n this.hostClass = true;\n }\n};\nInputSeparatorComponent.ɵfac = function InputSeparatorComponent_Factory(t) { return new (t || InputSeparatorComponent)(); };\nInputSeparatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: InputSeparatorComponent, selectors: [[\"kendo-input-separator\"], [\"kendo-textbox-separator\"]], hostVars: 2, hostBindings: function InputSeparatorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-input-separator\", ctx.hostClass);\n } }, decls: 0, vars: 0, template: function InputSeparatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-input-separator'),\n __metadata(\"design:type\", Boolean)\n], InputSeparatorComponent.prototype, \"hostClass\", void 0);\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n InputSeparatorComponent,\n TextAreaDirective\n];\n/**\n * @hidden\n */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextBox directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the TextBox module\n * import { TextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TextBoxModule], // import TextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet TextBoxModule = class TextBoxModule {\n};\nTextBoxModule.ɵfac = function TextBoxModule_Factory(t) { return new (t || TextBoxModule)(); };\nTextBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TextBoxModule });\nTextBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\n\n/**\n * @hidden\n */\nclass TextFieldsBase {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * Sets the `title` attribute of the internal textarea input element of the component.\n */\n this.title = '';\n /**\n * Sets the disabled state of the TextArea component.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the TextArea component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Provides a value for the TextArea component.\n */\n this.value = null;\n /**\n * Determines whether the whole value will be selected when the TextArea is clicked. Defaults to `false`.\n *\n * @default false\n */\n this.selectOnFocus = false;\n /**\n * Fires each time the user focuses the internal textarea element of the component.\n * This event is useful when you need to distinguish between focusing the textarea element and focusing one of its adornments.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the internal textarea element gets blurred.\n * This event is useful when adornments are used, in order to distinguish between blurring the textarea element and blurring the whole TextArea component.\n */\n this.inputBlur = new EventEmitter();\n this.subscriptions = new Subscription();\n this._isFocused = false;\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.handleInputBlur = () => {\n this.changeDetector.markForCheck();\n if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.inputBlur.emit();\n });\n }\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n }\n get disabledClass() {\n return this.disabled;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n}\nTextFieldsBase.ɵfac = function TextFieldsBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nTextFieldsBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextFieldsBase, viewQuery: function TextFieldsBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c37, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 3, hostBindings: function TextFieldsBase_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { title: \"title\", disabled: \"disabled\", readonly: \"readonly\", value: \"value\", selectOnFocus: \"selectOnFocus\", placeholder: \"placeholder\" }, outputs: { inputFocus: \"inputFocus\", inputBlur: \"inputBlur\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextFieldsBase.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextFieldsBase.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextFieldsBase.prototype, \"selectOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"placeholder\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextFieldsBase.prototype, \"inputFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextFieldsBase.prototype, \"inputBlur\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], TextFieldsBase.prototype, \"input\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextFieldsBase.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"direction\", void 0);\n\nvar TextAreaComponent_1;\nconst resizeClasses = {\n 'vertical': 'k-resize-vertical',\n 'horizontal': 'k-resize-horizontal',\n 'both': 'k-resize-both',\n 'none': 'k-resize-none',\n 'auto': 'k-resize-none'\n};\nconst FOCUSED$4 = 'k-state-focus';\n/**\n * Represents the [Kendo UI TextArea component for Angular]({% slug overview_textarea %}).\n */\nlet TextAreaComponent = TextAreaComponent_1 = class TextAreaComponent extends TextFieldsBase {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n super(localizationService, ngZone, changeDetector, renderer, injector, hostElement);\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n this.hostClass = true;\n /**\n * Specifies the flow direction of the TextArea sections. This property is useful when adornments are used, in order to specify\n * their position in relation to the textarea element.\n *\n * The possible values are:\n * * `vertical`(Default) —TextArea sections are placed from top to bottom.\n * * `horizontal`—TextArea sections are placed from left to right in `ltr`, and from right to left in `rtl` mode.\n */\n this.flow = 'vertical';\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Configures the resize behavior of the TextArea.\n *\n * The possible values are:\n * * `vertical`(Default)—The TextArea component can be resized only vertically.\n * * `horizontal`—The TextArea component can be resized only horizontally.\n * * `both`—The TextArea component can be resized in both (horizontal and vertical) directions.\n * * `auto`—Specifies whether the TextArea component will adjust its height automatically, based on the content.\n * * `none`—The TextArea cannot be resized.\n *\n */\n this.resizable = 'vertical';\n /**\n * Fires each time the user focuses the TextArea component.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log('Component is focused');\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the TextArea component gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log('Component is blurred');\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed or the component is blurred\n * ([see example]({% slug overview_textarea %}#toc-events)).\n * When the component value is changed programmatically or via its form control binding, the valueChange event is not emitted.\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.handleInput = (ev) => {\n let incomingValue = ev.target.value;\n this.updateValue(incomingValue);\n this.resize();\n };\n /**\n * @hidden\n */\n this.handleInputFocus = () => {\n if (!this.disabled) {\n if (this.selectOnFocus && this.value) {\n this.ngZone.run(() => {\n setTimeout(() => { this.selectAll(); });\n });\n }\n if (hasObservers(this.onFocus)) {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n if (hasObservers(this.inputFocus)) {\n if (!this.focusChangedProgrammatically) {\n this.ngZone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n this.ngZone.run(() => {\n this.isFocused = true;\n });\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get flowCol() {\n return this.flow === 'vertical';\n }\n get flowRow() {\n return this.flow === 'horizontal';\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n let cursorInsideWrapper = false;\n let tabbing = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n this.isFocused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);\n if (!closestTextbox) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n ngOnInit() {\n this.control = this.injector.get(NgControl, null);\n if (isDocumentAvailable() && this.resizable === 'auto') {\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe((debounceTime(50)))\n .subscribe(() => this.resize());\n }\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n ngOnChanges(changes) {\n const hostElement = this.hostElement.nativeElement;\n const element = this.input.nativeElement;\n if (changes.resizable) {\n if (this.resizable === 'auto') {\n this.initialHeight = element.offsetHeight;\n }\n else {\n this.renderer.setStyle(element, 'overflow-y', 'auto');\n this.renderer.setStyle(element, 'resize', 'both');\n element.style.height = `${this.initialHeight}px`;\n }\n }\n if (changes.cols) {\n if (isPresent(changes.cols.currentValue)) {\n this.renderer.setStyle(hostElement, 'width', 'auto');\n }\n else {\n this.renderer.removeStyle(hostElement, 'width');\n }\n }\n }\n ngAfterViewChecked() {\n this.resize();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get resizableClass() {\n return resizeClasses[this.resizable];\n }\n /**\n * Focuses the TextArea component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.focusChangedProgrammatically = true;\n this.isFocused = true;\n this.input.nativeElement.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the TextArea component.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const isFocusedElement = this.hostElement.nativeElement.querySelector(':focus');\n if (isFocusedElement) {\n isFocusedElement.blur();\n }\n this.isFocused = false;\n this.focusChangedProgrammatically = false;\n }\n resize() {\n if (this.resizable !== 'auto') {\n return;\n }\n const element = this.input.nativeElement;\n this.renderer.setStyle(element, 'overflow-y', 'hidden');\n this.renderer.setStyle(element, 'height', `${this.initialHeight}px`);\n const scrollHeight = element.scrollHeight;\n if (scrollHeight > this.initialHeight) {\n element.style.height = `${scrollHeight}px`;\n }\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n if (this._isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value && !this.disabled) {\n this.renderer.addClass(element, FOCUSED$4);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$4);\n }\n this._isFocused = value;\n }\n }\n handleBlur() {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n this.isFocused = false;\n });\n }\n setSelection(start, end) {\n if (this.isFocused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n selectAll() {\n if (this.value) {\n this.setSelection(0, this.value.length);\n }\n }\n};\nTextAreaComponent.ɵfac = function TextAreaComponent_Factory(t) { return new (t || TextAreaComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nTextAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextAreaComponent, selectors: [[\"kendo-textarea\"]], hostVars: 6, hostBindings: function TextAreaComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-textarea\", ctx.hostClass)(\"k-flex-col\", ctx.flowCol)(\"k-flex-row\", ctx.flowRow);\n } }, inputs: { focusableId: \"focusableId\", flow: \"flow\", tabindex: \"tabindex\", resizable: \"resizable\", tabIndex: \"tabIndex\", rows: \"rows\", cols: \"cols\", maxlength: \"maxlength\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, exportAs: [\"kendoTextArea\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textarea' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent_1) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c45, decls: 4, vars: 19, consts: [[1, \"k-input\", 3, \"ngClass\", \"id\", \"value\", \"disabled\", \"readonly\", \"kendoEventsOutsideAngular\"], [\"input\", \"\"]], template: function TextAreaComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c44);\n ɵngcc0.ɵɵelementStart(0, \"textarea\", 0, 1);\n ɵngcc0.ɵɵtext(2, \" \");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(3);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.resizableClass)(\"id\", ctx.focusableId)(\"value\", ctx.value)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(15, _c43, ctx.handleInputFocus, ctx.handleInputBlur, ctx.handleInput));\n ɵngcc0.ɵɵattribute(\"aria-multiline\", true)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"placeholder\", ctx.placeholder)(\"rows\", ctx.rows)(\"cols\", ctx.cols)(\"tabindex\", ctx.tabIndex)(\"title\", ctx.title)(\"maxlength\", ctx.maxlength);\n } }, directives: [ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaComponent.prototype, \"focusableId\", void 0);\n__decorate([\n HostBinding('class.k-textarea'),\n __metadata(\"design:type\", Boolean)\n], TextAreaComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-flex-col'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextAreaComponent.prototype, \"flowCol\", null);\n__decorate([\n HostBinding('class.k-flex-row'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextAreaComponent.prototype, \"flowRow\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaComponent.prototype, \"flow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"rows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"cols\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"maxlength\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], TextAreaComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaComponent.prototype, \"resizable\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaComponent.prototype, \"valueChange\", void 0);\nTextAreaComponent = TextAreaComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n Injector,\n ElementRef])\n], TextAreaComponent);\n\n/**\n * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %}).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nlet TextAreaSuffixComponent = class TextAreaSuffixComponent {\n /**\n * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %}).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\n constructor() {\n this.hostClass = true;\n }\n};\nTextAreaSuffixComponent.ɵfac = function TextAreaSuffixComponent_Factory(t) { return new (t || TextAreaSuffixComponent)(); };\nTextAreaSuffixComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextAreaSuffixComponent, selectors: [[\"kendo-textarea-suffix\"]], hostVars: 2, hostBindings: function TextAreaSuffixComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-textarea-suffix\", ctx.hostClass);\n } }, exportAs: [\"kendoTextAreaSuffix\"], ngContentSelectors: _c26, decls: 1, vars: 0, template: function TextAreaSuffixComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-textarea-suffix'),\n __metadata(\"design:type\", Boolean)\n], TextAreaSuffixComponent.prototype, \"hostClass\", void 0);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextArea component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the TextArea module\n * import { TextAreaModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TextAreaModule], // import TextArea module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet TextAreaModule = class TextAreaModule {\n};\nTextAreaModule.ɵfac = function TextAreaModule_Factory(t) { return new (t || TextAreaModule)(); };\nTextAreaModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TextAreaModule });\nTextAreaModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns - `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Fires each time the left side of the ColorPicker wrapper is clicked.\n * The event is triggered regardless of whether a ColorPicker icon is set or not.\n *\n * Provides information about the current active color and gives the option to prevent the opening of the popup.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public handleActiveColorClick(event: ActiveColorClickEvent): void {\n * event.preventOpen();\n *\n * console.log('Open prevented:', event.isOpenPrevented());\n * console.log('Current color:', event.color);\n * }\n * }\n * ```\n */\nclass ActiveColorClickEvent {\n /**\n * @hidden\n * @param color Represents the current value of the ColorPicker.\n */\n constructor(color) {\n this.color = color;\n this.openPrevented = false;\n }\n /**\n * Prevents the opening of the popup.\n */\n preventOpen() {\n this.openPrevented = true;\n }\n /**\n * Returns `true` if the popup opening is prevented by any of its subscribers.\n *\n * @returns - Returns `true` if the open action was prevented. Otherwise, returns `false`.\n */\n isOpenPrevented() {\n return this.openPrevented;\n }\n}\n\n/**\n * @hidden\n *\n * Returns the hex or rgba string representation of the color.\n */\nconst parseColor$1 = (value, format, safe = true) => {\n const allowedFormats = ['hex', 'rgba', 'name'];\n if (allowedFormats.indexOf(format) === -1) {\n throw new Error(`Unsupported color output format '${format}'. The available options are 'hex', 'rgba' or 'name'.`);\n }\n if (!isPresent(value)) {\n return;\n }\n if (format === 'name') {\n return nameFormat(value, safe);\n }\n const parsedColor = parseColor(value.trim(), safe);\n if (!isPresent(parsedColor)) {\n return;\n }\n return format === 'hex' ? parsedColor.toCss() : parsedColor.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\nconst getHSV = (value, safe = true) => {\n const parsed = parseColor(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\nconst getRGBA = (value, safe = true) => {\n const parsed = parseColor(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nconst getColorFromHSV = (hsva) => {\n const hue = fitIntoBounds(hsva.h, 0, 359.9);\n const saturation = fitIntoBounds(hsva.s, 0, 1);\n const value = fitIntoBounds(hsva.v, 0, 1);\n const alpha = fitIntoBounds(hsva.a, 0, 1);\n return Color.fromHSV(hue, saturation, value, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue`, assuming the `value`, `saturation` and `alpha` have value of `1`.\n */\nconst getColorFromHue = (hue) => {\n return getColorFromHSV({ h: hue, s: 1, v: 1, a: 1 });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nconst getColorFromRGBA = (rgba) => {\n const red = fitIntoBounds(rgba.r, 0, 255);\n const green = fitIntoBounds(rgba.g, 0, 255);\n const blue = fitIntoBounds(rgba.b, 0, 255);\n const alpha = fitIntoBounds(rgba.a, 0, 1);\n return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};\n/**\n *\n * @hidden\n */\nfunction nameFormat(value, safe) {\n value = value.toLowerCase().trim();\n if (isPresent(namedColors[value])) {\n return value;\n }\n if (parseColor(value, safe)) {\n value = parseColor(value, safe).toHex();\n }\n const key = Object.keys(namedColors).find(key => namedColors[key] === value);\n if (!key && !safe) {\n throw new Error(`The provided color ${value} is not supported for 'format=\"name\"' property.To display ${value} color, the component 'format' property shoud be set to 'hex' or 'rgba' `);\n }\n return key;\n}\n/**\n * @hidden\n *\n * Returns the RGB object representation of the color based on the background color.\n */\nconst getRGBFromRGBA = (foregroundColor, backgroundColor) => {\n const r1 = fitIntoBounds(foregroundColor.r, 0, 255);\n const g1 = fitIntoBounds(foregroundColor.g, 0, 255);\n const b1 = fitIntoBounds(foregroundColor.b, 0, 255);\n const a1 = fitIntoBounds(foregroundColor.a, 0, 1);\n const r2 = fitIntoBounds(backgroundColor.r, 0, 255);\n const g2 = fitIntoBounds(backgroundColor.g, 0, 255);\n const b2 = fitIntoBounds(backgroundColor.b, 0, 255);\n return {\n r: Math.round(((1 - a1) * r2) + (a1 * r1)),\n g: Math.round(((1 - a1) * g2) + (a1 * g1)),\n b: Math.round(((1 - a1) * b2) + (a1 * b1))\n };\n};\n/**\n * @hidden\n *\n * Returns the relative luminance.\n */\nconst getLuminance = (rgb) => {\n let a = [rgb.r, rgb.g, rgb.b].map(function (v) {\n v /= 255;\n return v <= 0.03928\n ? v / 12.92\n : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n};\n/**\n * @hidden\n *\n * Returns the color contrast.\n */\nconst getContrast = (luminance1, luminance2) => {\n const brightest = Math.max(luminance1, luminance2);\n const darkest = Math.min(luminance1, luminance2);\n return (brightest + 0.05)\n / (darkest + 0.05);\n};\n/**\n * @hidden\n *\n * Returns the color contrast from two RGBA colors.\n */\nconst getContrastFromTwoRGBAs = (a, b) => {\n return getContrast(getLuminance(getRGBFromRGBA(a, b)), getLuminance(getRGBFromRGBA(b, { r: 0, g: 0, b: 0, a: 1 })));\n};\n\n// tslint:disable:max-line-length\n/**\n * @hidden\n */\nconst PALETTEPRESETS = {\n basic: {\n colors: '000000,7f7f7f,880015,ed1c24,ff7f27,fff200,22b14c,00a2e8,3f48cc,a349a4,ffffff,c3c3c3,b97a57,ffaec9,ffc90e,efe4b0,b5e61d,99d9ea,7092be,c8bfe7',\n columns: 10\n },\n office: {\n colors: 'ffffff, 000000, e6e6e6, 435569, 4371c4, ed7e32, a5a4a5, febf04, 5a9bd5, 71ae48, f2f2f3, 7f7f7f, d1cece, d5dde3, dae1f4, fce5d4, deeded, fff2cc, deeaf6, e1efd9, d7d8d8, 585959, aeabab, adbaca, b4c5e7, f6caac, dbdbdb, ffe498, bcd6ee, c5e0b2, bfbfc0, 3f3f3f, 767070, 8595b1, 8fabdb, f5b183, c9c8c9, fed965, 9bc4e5, a8d08d, a5a5a6, 262625, 393939, 334050, 2e5496, c45a11, 7b7b7a, bf9000, 2f75b5, 548235, 7f7f7f, 0b0c0c, 161616, 222a34, 203764, 843d0b, 525252, 7f6000, 1d4d79, 375623',\n columns: 10\n },\n apex: {\n colors: 'ffffff, 000000, c9c2d1, 69676d, ceb966, 9cb084, 6bb1c9, 6585cf, 7e6bc9, a379bb, f2f2f2, 7f7f7f, f4f2f5, e0e0e2, f5f1e0, ebefe6, e1eff4, e0e6f5, e5e1f4, ece4f1, d8d8d8, 595959, e9e6ec, c2c1c5, ebe3c1, d7dfcd, c3dfe9, c1ceeb, cbc3e9, dac9e3, bfbfbf, 3f3f3f, dedae3, a4a3a8, e1d5a3, c3cfb5, a6d0de, a2b5e2, b1a6de, c7aed6, a5a5a5, 262626, 9688a5, 4e4d51, ae9638, 758c5a, 3d8da9, 365bb0, 533da9, 7d4d99, 7f7f7f, 0c0c0c, 635672, 343336, 746425, 4e5d3c, 295e70, 243c75, 372970, 533366',\n columns: 10\n },\n austin: {\n colors: 'ffffff, 000000, caf278, 3e3d2d, 94c600, 71685a, ff6700, 909465, 956b43, fea022, f2f2f2, 7f7f7f, f4fce4, dddcd0, efffc0, e3e1dc, ffe0cb, e8e9df, ece1d6, feecd2, d8d8d8, 595959, e9f9c9, bbb9a1, dfff82, c8c3ba, ffc299, d2d4c0, dac3ad, fed9a6, bfbfbf, 3f3f3f, dff7ae, ada598, cfff43, ada598, ffa365, bcbfa1, c8a585, fec67a, a5a5a5, 262626, a9ea25, 2e2d21, 6f9400, 544e43, bf4d00, 6c6f4b, 6f5032, d77b00, 7f7f7f, 0c0c0c, 74a50f, 1f1e16, 4a6300, 38342d, 7f3300, 484a32, 4a3521, 8f5200',\n columns: 10\n },\n clarity: {\n colors: 'ffffff, 292934, f3f2dc, d2533c, 93a299, ad8f67, 726056, 4c5a6a, 808da0, 79463d, f2f2f2, e7e7ec, e7e5b9, f6dcd8, e9ecea, eee8e0, e4dedb, d8dde3, e5e8ec, e9d6d3, d8d8d8, c4c4d1, d5d185, edbab1, d3d9d6, ded2c2, c9beb8, b2bcc8, ccd1d9, d3aea7, bfbfbf, 8a8aa3, aca73b, e4978a, bec7c1, cdbba3, af9e94, 8c9bac, b2bac6, bd857c, a5a5a5, 56566e, 56531d, a43925, 6b7c72, 866b48, 554840, 39434f, 5c697b, 5a342d, 7f7f7f, 3b3b4b, 22210b, 6d2619, 47534c, 594730, 39302b, 262d35, 3d4652, 3c231e',\n columns: 10\n },\n slipstream: {\n colors: 'ffffff, 000000, b4dcfa, 212745, 4e67c8, 5eccf3, a7ea52, 5dceaf, ff8021, f14124, f2f2f2, 7f7f7f, 8bc9f7, c7cce4, dbe0f4, def4fc, edfadc, def5ef, ffe5d2, fcd9d3, d8d8d8, 595959, 4facf3, 909aca, b8c2e9, beeafa, dbf6b9, beebdf, ffcca6, f9b3a7, bfbfbf, 3f3f3f, 0d78c9, 5967af, 94a3de, 9ee0f7, caf297, 9de1cf, ffb279, f68d7b, a5a5a5, 262626, 063c64, 181d33, 31479f, 11b2eb, 81d319, 34ac8b, d85c00, c3260c, 7f7f7f, 0c0c0c, 021828, 101322, 202f6a, 0b769c, 568c11, 22725c, 903d00, 821908',\n columns: 10\n },\n metro: {\n colors: 'ffffff, 000000, d6ecff, 4e5b6f, 7fd13b, ea157a, feb80a, 00addc, 738ac8, 1ab39f, f2f2f2, 7f7f7f, a7d6ff, d9dde4, e5f5d7, fad0e4, fef0cd, c5f2ff, e2e7f4, c9f7f1, d8d8d8, 595959, 60b5ff, b3bcca, cbecb0, f6a1c9, fee29c, 8be6ff, c7d0e9, 94efe3, bfbfbf, 3f3f3f, 007dea, 8d9baf, b2e389, f272af, fed46b, 51d9ff, aab8de, 5fe7d5, a5a5a5, 262626, 003e75, 3a4453, 5ea226, af0f5b, c58c00, 0081a5, 425ea9, 138677, 7f7f7f, 0c0c0c, 00192e, 272d37, 3f6c19, 750a3d, 835d00, 00566e, 2c3f71, 0c594f',\n columns: 10\n },\n flow: {\n colors: 'ffffff, 000000, dbf5f9, 04617b, 0f6fc6, 009dd9, 0bd0d9, 10cf9b, 7cca62, a5c249, f2f2f2, 7f7f7f, b2e9f2, b4ecfc, c7e2fa, c4eeff, c9fafc, c9faed, e4f4df, edf2da, d8d8d8, 595959, 76d9e8, 6adafa, 90c6f6, 89deff, 93f5f9, 94f6db, cae9c0, dbe6b6, bfbfbf, 3f3f3f, 21b2c8, 20c8f7, 59a9f2, 4fceff, 5df0f6, 5ff2ca, b0dfa0, c9da91, a5a5a5, 262626, 105964, 02485c, 0b5394, 0075a2, 089ca2, 0b9b74, 54a838, 7e9532, 7f7f7f, 0c0c0c, 062328, 01303d, 073763, 004e6c, 05686c, 07674d, 387025, 546321',\n columns: 10\n },\n hardcover: {\n colors: 'ffffff, 000000, ece9c6, 895d1d, 873624, d6862d, d0be40, 877f6c, 972109, aeb795, f2f2f2, 7f7f7f, e1dca5, f2e0c6, f0d0c9, f6e6d5, f5f2d8, e7e5e1, fbc7bc, eef0e9, d8d8d8, 595959, d0c974, e6c28d, e2a293, eeceaa, ece5b2, cfccc3, f78f7a, dee2d4, bfbfbf, 3f3f3f, a29a36, daa454, d4735e, e6b681, e2d88c, b7b2a5, f35838, ced3bf, a5a5a5, 262626, 514d1b, 664515, 65281a, a2641f, a39428, 655f50, 711806, 879464, 7f7f7f, 0c0c0c, 201e0a, 442e0e, 431b11, 6c4315, 6d621a, 433f35, 4b1004, 5a6243',\n columns: 10\n },\n trek: {\n colors: 'ffffff, 000000, fbeec9, 4e3b30, f0a22e, a5644e, b58b80, c3986d, a19574, c17529, f2f2f2, 7f7f7f, f7e09e, e1d6cf, fcecd5, eddfda, f0e7e5, f3eae1, ece9e3, f5e3d1, d8d8d8, 595959, f3cc5f, c4ad9f, f9d9ab, dcc0b6, e1d0cc, e7d5c4, d9d4c7, ebc7a3, bfbfbf, 3f3f3f, d29f0f, a78470, f6c781, cba092, d2b9b2, dbc1a7, c6bfab, e1ac76, a5a5a5, 262626, 694f07, 3a2c24, c87d0e, 7b4b3a, 926255, a17242, 7b7153, 90571e, 7f7f7f, 0c0c0c, 2a1f03, 271d18, 855309, 523226, 614138, 6b4c2c, 524b37, 603a14',\n columns: 10\n },\n verve: {\n colors: 'ffffff, 000000, d2d2d2, 666666, ff388c, e40059, 9c007f, 68007f, 005bd3, 00349e, f2f2f2, 7f7f7f, bdbdbd, e0e0e0, ffd7e8, ffc6dc, ffb8f1, f1b2ff, c3dcff, b8cfff, d8d8d8, 595959, 9d9d9d, c1c1c1, ffafd1, ff8eba, ff71e4, e365ff, 87baff, 72a0ff, bfbfbf, 3f3f3f, 696969, a3a3a3, ff87ba, ff5597, ff2ad7, d519ff, 4b98ff, 2b71ff, a5a5a5, 262626, 343434, 4c4c4c, e90062, ab0042, 75005f, 4e005f, 00449e, 002676, 7f7f7f, 0c0c0c, 151515, 333333, 9b0041, 72002c, 4e003f, 34003f, 002d69, 00194f',\n columns: 10\n },\n monochrome: {\n colors: '000000, 1a1a1a, 333333, 4d4d4d, 666666, 808080, 999999, b3b3b3, cccccc, e6e6e6, f2f2f2, ffffff',\n columns: 12\n },\n accessible: {\n colors: 'black, grey, darkred, red, darkorange, gold, green, blue, darkblue, purple, white, darkgrey, saddlebrown, pink, orange, yellow, lightgreen, lightskyblue, lightblue, mediumpurple',\n columns: 10\n }\n};\n\n/**\n * @hidden\n */\nlet ColorPickerLocalizationService = class ColorPickerLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl) {\n super(prefix, messageService, _rtl);\n }\n};\nColorPickerLocalizationService.ɵfac = function ColorPickerLocalizationService_Factory(t) { return new (t || ColorPickerLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc1.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8)); };\nColorPickerLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorPickerLocalizationService, factory: function (t) { return ColorPickerLocalizationService.ɵfac(t); } });\nColorPickerLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean])\n], ColorPickerLocalizationService);\n\n/**\n * @hidden\n */\nlet ColorGradientLocalizationService = class ColorGradientLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, colorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.colorPickerLocalization = colorPickerLocalization;\n }\n get(shortKey) {\n if (this.colorPickerLocalization) {\n return this.colorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n};\nColorGradientLocalizationService.ɵfac = function ColorGradientLocalizationService_Factory(t) { return new (t || ColorGradientLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc1.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8), ɵngcc0.ɵɵinject(ColorPickerLocalizationService, 8)); };\nColorGradientLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorGradientLocalizationService, factory: function (t) { return ColorGradientLocalizationService.ɵfac(t); } });\nColorGradientLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __param(3, Optional()), __param(3, Inject(ColorPickerLocalizationService)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean, ColorPickerLocalizationService])\n], ColorGradientLocalizationService);\n\n/**\n * @hidden\n */\nlet ColorInputComponent = class ColorInputComponent {\n constructor(localization, host, renderer) {\n this.localization = localization;\n this.host = host;\n this.renderer = renderer;\n /**\n * Sets whether the alpha slider will be shown.\n */\n this.opacity = true;\n /**\n * Sets the disabled state of the ColorInput.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorInput.\n */\n this.readonly = false;\n /**\n * Emits a parsed rgba string color.\n */\n this.valueChange = new EventEmitter();\n this.colorInputClass = true;\n /**\n * The rgba inputs values.\n */\n this.rgba = {};\n this.subscriptions = new Subscription();\n }\n /**\n * Indicates whether any of the inputs are focused.\n */\n get isFocused() {\n if (!(isDocumentAvailable() && isPresent(this.host))) {\n return false;\n }\n const activeElement = document.activeElement;\n return this.host.nativeElement.contains(activeElement);\n }\n /**\n * Indicates whether any of the rgba inputs have value.\n */\n get rgbaInputValid() {\n return Object.keys(this.rgba).every(key => isPresent(this.rgba[key]));\n }\n ngAfterViewInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n if (isPresent(changes.value) && !this.isFocused) {\n this.hex = parseColor$1(this.value, 'hex');\n this.rgba = getRGBA(this.value);\n this.rgba.a = parseColor$1(this.value, 'rgba') ? this.rgba.a : 1;\n }\n }\n handleRgbaValueChange() {\n const color = getColorFromRGBA(this.rgba);\n if (!this.rgbaInputValid || color === this.value) {\n return;\n }\n this.value = color;\n this.rgba = getRGBA(this.value);\n this.hex = parseColor$1(color, 'hex');\n this.valueChange.emit(color);\n }\n handleHexValueChange(hex) {\n this.hex = hex;\n const color = parseColor$1(hex, 'rgba');\n if (!isPresent(color) || color === this.value) {\n return;\n }\n this.value = color;\n this.rgba = getRGBA(color);\n this.valueChange.emit(color);\n }\n handleRgbaInputBlur() {\n if (!this.rgbaInputValid) {\n this.rgba = getRGBA(this.value);\n }\n }\n handleHexInputBlur() {\n this.hex = parseColor$1(this.value, 'hex');\n }\n textFor(key) {\n return this.localization.get(key);\n }\n toggleFormatView() {\n this.formatView = this.formatView === 'hex' ? 'rgba' : 'hex';\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n this.subscriptions.add(this.renderer.listen(this.toggleFormatButton.nativeElement, 'click', () => this.toggleFormatView()));\n }\n};\nColorInputComponent.ɵfac = function ColorInputComponent_Factory(t) { return new (t || ColorInputComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nColorInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorInputComponent, selectors: [[\"kendo-colorinput\"]], viewQuery: function ColorInputComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c46, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c47, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.opacityInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toggleFormatButton = _t.first);\n } }, hostVars: 4, hostBindings: function ColorInputComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-colorgradient-inputs\", ctx.colorInputClass)(\"k-hstack\", ctx.colorInputClass);\n } }, inputs: { opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\", value: \"value\", formatView: \"formatView\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 6, vars: 2, consts: [[1, \"k-vstack\"], [1, \"k-colorgradient-toggle-mode\", \"k-button\", \"k-icon-button\", \"k-flat\"], [\"toggleFormatButton\", \"\"], [1, \"k-button-icon\", \"k-icon\", \"k-i-arrows-kpi\"], [\"class\", \"k-textbox k-hex-value\", 3, \"disabled\", \"readonly\", \"value\", \"placeholder\", \"blur\", \"input\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-textbox\", \"k-hex-value\", 3, \"disabled\", \"readonly\", \"value\", \"placeholder\", \"blur\", \"input\"], [\"hexInput\", \"\"], [3, \"disabled\", \"readonly\", \"min\", \"max\", \"placeholder\", \"value\", \"autoCorrect\", \"spinners\", \"format\", \"decimals\", \"valueChange\", \"blur\"], [\"red\", \"\"], [1, \"k-colorgradient-input-label\", 3, \"for\"], [\"green\", \"\"], [\"blue\", \"\"], [\"class\", \"k-vstack\", 4, \"ngIf\"], [3, \"disabled\", \"readonly\", \"min\", \"max\", \"placeholder\", \"value\", \"autoCorrect\", \"spinners\", \"step\", \"format\", \"decimals\", \"valueChange\", \"blur\"], [\"opacityInput\", \"\", \"alpha\", \"\"]], template: function ColorInputComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"button\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"span\", 3);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(4, ColorInputComponent_input_4_Template, 2, 4, \"input\", 4);\n ɵngcc0.ɵɵtemplate(5, ColorInputComponent_ng_container_5_Template, 17, 34, \"ng-container\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.formatView === \"hex\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.formatView === \"rgba\");\n } }, directives: [ɵngcc3.NgIf, NumericTextBoxComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorInputComponent.prototype, \"formatView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorInputComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"readonly\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorInputComponent.prototype, \"valueChange\", void 0);\n__decorate([\n HostBinding('class.k-colorgradient-inputs'),\n HostBinding('class.k-hstack'),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"colorInputClass\", void 0);\n__decorate([\n ViewChild('opacityInput', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorInputComponent.prototype, \"opacityInput\", void 0);\n__decorate([\n ViewChild('toggleFormatButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorInputComponent.prototype, \"toggleFormatButton\", void 0);\nColorInputComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ElementRef,\n Renderer2])\n], ColorInputComponent);\n\n/**\n * @hidden\n */\nconst DEFAULT_OUTPUT_FORMAT = 'rgba';\n/**\n * @hidden\n */\nconst DEFAULT_GRADIENT_BACKGROUND_COLOR = 'rgba(255, 0, 0, 1)';\n/**\n * @hidden\n */\nconst DRAGHANDLE_MOVE_SPEED = 5;\n/**\n * @hidden\n */\nconst AAA_RATIO = 7.0;\n/**\n * @hidden\n */\nconst AA_RATIO = 4.5;\n\nvar ColorGradientComponent_1;\nlet serial = 0;\n/**\n * The ColorGradient component enables smooth color transitions and provides options for selecting specific colors over the drag handle.\n * The ColorGradient is independently used by `kendo-colorpicker` and can be directly added to the page.\n */\nlet ColorGradientComponent = ColorGradientComponent_1 = class ColorGradientComponent {\n constructor(host, ngZone, renderer, cdr, localizationService) {\n this.host = host;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.localizationService = localizationService;\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.id = `k-colorgradient-${serial++}`;\n /**\n * Defines whether the alpha slider will be displayed.\n */\n this.opacity = true;\n /**\n * Sets the disabled state of the ColorGradient.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorGradient.\n */\n this.readonly = false;\n /**\n * Specifies whether the ColorGradient should display a 'Clear color' button.\n */\n this.clearButton = false;\n /**\n * Determines the delay time (in milliseconds) before the value is changed on handle drag. A value of 0 indicates no delay.\n *\n * @default 0\n */\n this.delay = 0;\n /**\n * Fires each time the user selects a new color.\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.backgroundColor = DEFAULT_GRADIENT_BACKGROUND_COLOR;\n /**\n * @hidden\n *\n * Represents the currently selected `hue`, `saturation`, `value`, and `alpha` values.\n * The values are initially set in `ngOnInit` or in `ngOnChanges` and are\n * updated on moving the drag handle or the sliders.\n */\n this.hsva = {};\n /**\n * Specifies the output format of the ColorGradientComponent.\n * The input value may be in a different format. However, it will be parsed into the output `format`\n * after the component processes it.\n *\n * The supported values are:\n * * (Default) `rgba`\n * * `hex`\n */\n this.format = DEFAULT_OUTPUT_FORMAT;\n this._tabindex = 0;\n this.listeners = [];\n this.updateValues = new Subject();\n this.notifyNgChanged = () => { };\n this.notifyNgTouched = () => { };\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * @hidden\n */\n get readonlyAttribute() {\n return this.readonly;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n get gradientId() {\n return this.id;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor$1(value, this.format);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * Indicates whether the ColorGradient or any of its content is focused.\n */\n get isFocused() {\n if (!(isDocumentAvailable() && isPresent(this.host))) {\n return false;\n }\n return this.host.nativeElement === document.activeElement || this.host.nativeElement.contains(document.activeElement);\n }\n /**\n * @hidden\n */\n get alphaSliderValue() {\n // setting the initial value to undefined to force the slider to recalculate the height of the slider track on the next cdr run\n if (!(isPresent(this.hsva) && isPresent(this.hsva.a))) {\n return;\n }\n return this.hsva.a * 100;\n }\n get gradientRect() {\n return this.gradientWrapper.nativeElement.getBoundingClientRect();\n }\n /**\n * @hidden\n */\n get contrastToolVisible() {\n return typeof this.contrastTool === 'string' && this.contrastTool !== '';\n }\n ngAfterViewInit() {\n this.updateUI();\n this.cdr.detectChanges();\n this.addEventListeners();\n this.subscribeChanges();\n }\n ngOnChanges(changes) {\n if (isChanged('value', changes) && !this.isFocused) {\n this.updateUI();\n }\n if (isChanged('delay', changes)) {\n this.unsubscribeChanges();\n this.subscribeChanges();\n }\n }\n ngOnDestroy() {\n this.listeners.forEach(removeListener => removeListener());\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.unsubscribeChanges();\n }\n /**\n * Focuses the component.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n reset() {\n this.handleValueChange(undefined);\n this.updateUI();\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (this.disabled || this.readonly || !isPresent(args.originalEvent)) {\n return;\n }\n this.focus();\n args.originalEvent.preventDefault();\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.renderer.addClass(this.gradientWrapper.nativeElement, 'k-dragging');\n this.changePosition(args);\n }\n /**\n * @hidden\n */\n onHandleRelease() {\n if (this.disabled || this.readonly) {\n return;\n }\n this.renderer.removeClass(this.gradientWrapper.nativeElement, 'k-dragging');\n this.handleValueChange(getColorFromHSV(this.hsva));\n }\n /**\n * @hidden\n */\n onKeyboardAction(args) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (args.key && args.key.indexOf('Arrow') !== -1) {\n args.preventDefault();\n const dragHandleElement = this.gradientDragHandle.nativeElement;\n this.renderer.addClass(this.gradientWrapper.nativeElement, 'k-dragging');\n let keyboardMoveX = 0;\n let keyboardMoveY = 0;\n switch (args.key) {\n case 'ArrowRight':\n keyboardMoveX = DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowLeft':\n keyboardMoveX = -DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowUp':\n keyboardMoveY = -DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowDown':\n keyboardMoveY = DRAGHANDLE_MOVE_SPEED;\n break;\n default: break;\n }\n const newY = parseInt(dragHandleElement.style.top, 10) + keyboardMoveY;\n const newX = parseInt(dragHandleElement.style.left, 10) + keyboardMoveX;\n this.renderer.setStyle(dragHandleElement, 'top', `${newY}px`);\n this.renderer.setStyle(dragHandleElement, 'left', `${newX}px`);\n this.ngZone.run(() => this.moveDragHandle(newX, newY));\n }\n }\n /**\n * @hidden\n */\n changePosition(position) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.gradientDragHandle.nativeElement.focus();\n const newX = position.clientX - this.gradientRect.left;\n const newY = position.clientY - this.gradientRect.top;\n this.ngZone.run(() => this.moveDragHandle(newX, newY));\n }\n /**\n * @hidden\n */\n handleHueSliderChange(hue) {\n this.handleValueChange(getColorFromHSV(this.hsva));\n this.backgroundColor = getColorFromHue(hue);\n this.setAlphaSliderBackground(this.backgroundColor);\n }\n /**\n * @hidden\n */\n handleAlphaSliderChange(alpha) {\n this.hsva.a = alpha / 100;\n this.handleValueChange(getColorFromHSV(this.hsva));\n }\n /**\n * @hidden\n */\n handleInputsValueChange(color) {\n const parsed = parseColor$1(color, this.format);\n if (this.value !== parsed) {\n this.handleValueChange(parsed);\n this.updateUI();\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n if (isPresent(this.gradientWrapper)) {\n this.updateUI();\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get colorGradientHandleTitle() {\n return this.localizationService.get('colorGradientHandle');\n }\n /**\n * @hidden\n */\n get colorGradientHandleAriaLabel() {\n const parsed = parseColor$1(this.value, this.format);\n return `${this.value ? parsed : this.localizationService.get('colorGradientHandle')}`;\n }\n /**\n * @hidden\n */\n get hueSliderTitle() {\n return this.localizationService.get('hueSliderHandle');\n }\n /**\n * @hidden\n */\n get opacitySliderTitle() {\n return this.localizationService.get('opacitySliderHandle');\n }\n /**\n * @hidden\n */\n get clearButtonTitle() {\n return this.localizationService.get('clearButton');\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n moveDragHandle(positionX, positionY) {\n const top = fitIntoBounds(positionY, 0, this.gradientRect.height);\n const left = fitIntoBounds(positionX, 0, this.gradientRect.width);\n this.setDragHandleElementPosition(top, left);\n this.hsva.s = left / this.gradientRect.width;\n this.hsva.v = 1 - top / this.gradientRect.height;\n this.updateValues.next(getColorFromHSV(this.hsva));\n this.setAlphaSliderBackground(getColorFromHSV(Object.assign({}, this.hsva, { a: 1 })));\n }\n updateUI() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.hsva = this.value ? getHSV(this.value) : { h: 0, s: 0, v: 1, a: 1 };\n const top = (1 - this.hsva.v) * this.gradientRect.height;\n const left = this.hsva.s * this.gradientRect.width;\n this.setDragHandleElementPosition(top, left);\n this.backgroundColor = getColorFromHue(this.hsva.h);\n this.setAlphaSliderBackground(this.backgroundColor);\n this.setHostElementAriaLabel();\n }\n handleValueChange(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n setDragHandleElementPosition(top, left) {\n const dragHandle = this.gradientDragHandle.nativeElement;\n this.renderer.setStyle(dragHandle, 'top', `${top}px`);\n this.renderer.setStyle(dragHandle, 'left', `${left}px`);\n }\n setAlphaSliderBackground(backgroundColor) {\n if (!isPresent(this.alphaSlider)) {\n return;\n }\n const sliderTrack = this.alphaSlider.track.nativeElement;\n this.renderer.setStyle(sliderTrack, 'background', `linear-gradient(to top, transparent, ${backgroundColor})`);\n }\n setHostElementAriaLabel() {\n const parsed = parseColor$1(this.value, this.format);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorGradientNoColor')}`);\n }\n addEventListeners() {\n this.ngZone.runOutsideAngular(() => {\n const focusOutListener = this.renderer.listen(this.host.nativeElement, 'focusout', (event) => {\n if (!containsFocus(this.host.nativeElement, event.relatedTarget) && isUntouched(this.host)) {\n this.ngZone.run(() => this.notifyNgTouched());\n }\n });\n const keydownListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'keydown', (event) => {\n this.onKeyboardAction(event);\n });\n const keyupListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'keyup', () => {\n this.renderer.removeClass(this.gradientWrapper.nativeElement, 'k-dragging');\n if (!this.readonly && !this.disabled) {\n this.ngZone.run(() => this.handleValueChange(getColorFromHSV(this.hsva)));\n }\n });\n const dragHandleFocusInListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'focusin', () => {\n this.renderer.addClass(this.gradientDragHandle.nativeElement, 'k-state-focus');\n });\n const dragHandleFocusOutListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'focusout', () => {\n this.renderer.removeClass(this.gradientDragHandle.nativeElement, 'k-state-focus');\n });\n this.listeners.push(focusOutListener, keydownListener, keyupListener, dragHandleFocusInListener, dragHandleFocusOutListener);\n });\n }\n subscribeChanges() {\n this.changeRequestsSubscription = this.updateValues.pipe(throttleTime(this.delay)).subscribe(value => {\n this.handleValueChange(value);\n });\n }\n unsubscribeChanges() {\n if (this.changeRequestsSubscription) {\n this.changeRequestsSubscription.unsubscribe();\n }\n }\n};\nColorGradientComponent.ɵfac = function ColorGradientComponent_Factory(t) { return new (t || ColorGradientComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nColorGradientComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorGradientComponent, selectors: [[\"kendo-colorgradient\"]], viewQuery: function ColorGradientComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c48, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c49, 5);\n ɵngcc0.ɵɵviewQuery(_c50, 5);\n ɵngcc0.ɵɵviewQuery(_c51, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.gradientDragHandle = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.inputs = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.alphaSlider = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.gradientWrapper = _t.first);\n } }, hostVars: 8, hostBindings: function ColorGradientComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"aria-readonly\", ctx.readonlyAttribute)(\"tabindex\", ctx.hostTabindex)(\"id\", ctx.gradientId);\n ɵngcc0.ɵɵclassProp(\"k-colorgradient\", ctx.hostClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { id: \"id\", opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\", clearButton: \"clearButton\", delay: \"delay\", format: \"format\", value: \"value\", tabindex: \"tabindex\", contrastTool: \"contrastTool\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent_1)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 29, consts: function () { let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The aria-label applied to the ColorGradient component when the value is empty.\n * @meaning kendo.colorgradient.colorGradientNoColor\n */\n const MSG_EXTERNAL_3796155240301823948$$DIST_FESM2015_INDEX_JS_53 = goog.getMsg(\"Colorgradient no color chosen\");\n i18n_52 = MSG_EXTERNAL_3796155240301823948$$DIST_FESM2015_INDEX_JS_53;\n }\n else {\n i18n_52 = $localize `:kendo.colorgradient.colorGradientNoColor|The aria-label applied to the ColorGradient component when the value is empty.␟136a6a537523c480df0e58c17cc6d4c2dda8e626␟3796155240301823948:Colorgradient no color chosen`;\n } let i18n_54; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the gradient color drag handle chooser.\n * @meaning kendo.colorgradient.colorGradientHandle\n */\n const MSG_EXTERNAL_8537406358423916512$$DIST_FESM2015_INDEX_JS_55 = goog.getMsg(\"Choose color\");\n i18n_54 = MSG_EXTERNAL_8537406358423916512$$DIST_FESM2015_INDEX_JS_55;\n }\n else {\n i18n_54 = $localize `:kendo.colorgradient.colorGradientHandle|The title for the gradient color drag handle chooser.␟462ab46551fd64dca63ba38254e46a52aeb05205␟8537406358423916512:Choose color`;\n } let i18n_56; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the clear button.\n * @meaning kendo.colorgradient.clearButton\n */\n const MSG_EXTERNAL_7605097752673642325$$DIST_FESM2015_INDEX_JS_57 = goog.getMsg(\"Clear value\");\n i18n_56 = MSG_EXTERNAL_7605097752673642325$$DIST_FESM2015_INDEX_JS_57;\n }\n else {\n i18n_56 = $localize `:kendo.colorgradient.clearButton|The title for the clear button.␟6dc40c4a4ff302d1fe29e7bf9eadf1440b4654cf␟7605097752673642325:Clear value`;\n } let i18n_58; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the hue slider handle.\n * @meaning kendo.colorgradient.hueSliderHandle\n */\n const MSG_EXTERNAL_8568799441668530127$$DIST_FESM2015_INDEX_JS_59 = goog.getMsg(\"Set hue\");\n i18n_58 = MSG_EXTERNAL_8568799441668530127$$DIST_FESM2015_INDEX_JS_59;\n }\n else {\n i18n_58 = $localize `:kendo.colorgradient.hueSliderHandle|The title for the hue slider handle.␟22a98afddf46223dce8a3e122f4fe84ca76488b9␟8568799441668530127:Set hue`;\n } let i18n_60; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the opacity slider handle.\n * @meaning kendo.colorgradient.opacitySliderHandle\n */\n const MSG_EXTERNAL_2665102430468067218$$DIST_FESM2015_INDEX_JS_61 = goog.getMsg(\"Set opacity\");\n i18n_60 = MSG_EXTERNAL_2665102430468067218$$DIST_FESM2015_INDEX_JS_61;\n }\n else {\n i18n_60 = $localize `:kendo.colorgradient.opacitySliderHandle|The title for the opacity slider handle.␟ad3087c7bf139a41bf6a7fc454f4e857492c9d22␟2665102430468067218:Set opacity`;\n } let i18n_62; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the HEX color input.\n * @meaning kendo.colorgradient.hexInputPlaceholder\n */\n const MSG_EXTERNAL_1551996638068326100$$DIST_FESM2015_INDEX_JS_63 = goog.getMsg(\"HEX Color\");\n i18n_62 = MSG_EXTERNAL_1551996638068326100$$DIST_FESM2015_INDEX_JS_63;\n }\n else {\n i18n_62 = $localize `:kendo.colorgradient.hexInputPlaceholder|The placeholder for the HEX color input.␟0223abe5dc060383b58df6d9f83dc98b08ba8e2b␟1551996638068326100:HEX Color`;\n } let i18n_64; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the red color input.\n * @meaning kendo.colorgradient.redInputPlaceholder\n */\n const MSG_EXTERNAL_865798719701025148$$DIST_FESM2015_INDEX_JS_65 = goog.getMsg(\"Red\");\n i18n_64 = MSG_EXTERNAL_865798719701025148$$DIST_FESM2015_INDEX_JS_65;\n }\n else {\n i18n_64 = $localize `:kendo.colorgradient.redInputPlaceholder|The placeholder for the red color input.␟ec8e6ab816ff2b3686ad6594068d26e3c72e49d3␟865798719701025148:Red`;\n } let i18n_66; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the green color input.\n * @meaning kendo.colorgradient.greenInputPlaceholder\n */\n const MSG_EXTERNAL_7119549617208224702$$DIST_FESM2015_INDEX_JS_67 = goog.getMsg(\"Green\");\n i18n_66 = MSG_EXTERNAL_7119549617208224702$$DIST_FESM2015_INDEX_JS_67;\n }\n else {\n i18n_66 = $localize `:kendo.colorgradient.greenInputPlaceholder|The placeholder for the green color input.␟50e5480cded07f92356e43143800db6b44dce024␟7119549617208224702:Green`;\n } let i18n_68; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the blue color input.\n * @meaning kendo.colorgradient.blueInputPlaceholder\n */\n const MSG_EXTERNAL_8925567330503382499$$DIST_FESM2015_INDEX_JS_69 = goog.getMsg(\"Blue\");\n i18n_68 = MSG_EXTERNAL_8925567330503382499$$DIST_FESM2015_INDEX_JS_69;\n }\n else {\n i18n_68 = $localize `:kendo.colorgradient.blueInputPlaceholder|The placeholder for the blue color input.␟f07b6e271e4cb957c512029298715c8f4970eca8␟8925567330503382499:Blue`;\n } let i18n_70; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the alpha input.\n * @meaning kendo.colorgradient.alphaInputPlaceholder\n */\n const MSG_EXTERNAL_6303797935938211585$$DIST_FESM2015_INDEX_JS_71 = goog.getMsg(\"Alpha\");\n i18n_70 = MSG_EXTERNAL_6303797935938211585$$DIST_FESM2015_INDEX_JS_71;\n }\n else {\n i18n_70 = $localize `:kendo.colorgradient.alphaInputPlaceholder|The placeholder for the alpha input.␟122a5434fa0f1ee3ef735e859c1db1606542c995␟6303797935938211585:Alpha`;\n } let i18n_72; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The pass message for the contrast tool.\n * @meaning kendo.colorgradient.passContrast\n */\n const MSG_EXTERNAL_200461871469242251$$DIST_FESM2015_INDEX_JS_73 = goog.getMsg(\"Pass\");\n i18n_72 = MSG_EXTERNAL_200461871469242251$$DIST_FESM2015_INDEX_JS_73;\n }\n else {\n i18n_72 = $localize `:kendo.colorgradient.passContrast|The pass message for the contrast tool.␟ec167f04d318f2b1f1edbca6318a74fddf436c76␟200461871469242251:Pass`;\n } let i18n_74; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The fail message for the contrast tool.\n * @meaning kendo.colorgradient.failContrast\n */\n const MSG_EXTERNAL_2780397365913372676$$DIST_FESM2015_INDEX_JS_75 = goog.getMsg(\"Fail\");\n i18n_74 = MSG_EXTERNAL_2780397365913372676$$DIST_FESM2015_INDEX_JS_75;\n }\n else {\n i18n_74 = $localize `:kendo.colorgradient.failContrast|The fail message for the contrast tool.␟79015428999551ebe50f69bb5a1ebd31de4c3bdf␟2780397365913372676:Fail`;\n } let i18n_76; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The contrast ratio message for the contrast tool.\n * @meaning kendo.colorgradient.contrastRatio\n */\n const MSG_EXTERNAL_713630549826115578$$DIST_FESM2015_INDEX_JS_77 = goog.getMsg(\"Contrast ratio\");\n i18n_76 = MSG_EXTERNAL_713630549826115578$$DIST_FESM2015_INDEX_JS_77;\n }\n else {\n i18n_76 = $localize `:kendo.colorgradient.contrastRatio|The contrast ratio message for the contrast tool.␟408650dd85473f406520edd1d60c8df0c475a8fa␟713630549826115578:Contrast ratio`;\n } return [[\"kendoColorGradientLocalizedMessages\", \"\", \"colorGradientNoColor\", i18n_52, \"colorGradientHandle\", i18n_54, \"clearButton\", i18n_56, \"hueSliderHandle\", i18n_58, \"opacitySliderHandle\", i18n_60, \"hexInputPlaceholder\", i18n_62, \"redInputPlaceholder\", i18n_64, \"greenInputPlaceholder\", i18n_66, \"blueInputPlaceholder\", i18n_68, \"alphaInputPlaceholder\", i18n_70, \"passContrast\", i18n_72, \"failContrast\", i18n_74, \"contrastRatio\", i18n_76], [1, \"k-colorgradient-canvas\", \"k-hstack\"], [1, \"k-hsv-rectangle\"], [\"kendoDraggable\", \"\", 1, \"k-hsv-gradient\", 3, \"click\", \"kendoPress\", \"kendoDrag\", \"kendoRelease\"], [\"gradientWrapper\", \"\"], [\"tabindex\", \"0\", 1, \"k-hsv-draghandle\", \"k-draghandle\"], [\"gradientDragHandle\", \"\"], [\"class\", \"k-clear-color k-button k-flat k-button-icon\", \"tabindex\", \"0\", 3, \"click\", \"keydown.enter\", \"keydown.space\", 4, \"ngIf\"], [1, \"k-hue-slider\", \"k-colorgradient-slider\", 3, \"ngClass\", \"dragHandleTitle\", \"disabled\", \"readonly\", \"showButtons\", \"tickPlacement\", \"vertical\", \"min\", \"max\", \"smallStep\", \"largeStep\", \"value\", \"valueChange\"], [\"class\", \"k-alpha-slider k-colorgradient-slider\", 3, \"ngClass\", \"dragHandleTitle\", \"disabled\", \"readonly\", \"showButtons\", \"tickPlacement\", \"vertical\", \"min\", \"max\", \"smallStep\", \"largeStep\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"opacity\", \"formatView\", \"value\", \"disabled\", \"readonly\", \"valueChange\"], [\"inputs\", \"\"], [\"class\", \"k-colorgradient-color-contrast k-vbox\", \"kendoContrastTool\", \"\", 3, \"value\", \"ratio\", 4, \"ngIf\"], [\"tabindex\", \"0\", 1, \"k-clear-color\", \"k-button\", \"k-flat\", \"k-button-icon\", 3, \"click\", \"keydown.enter\", \"keydown.space\"], [1, \"k-icon\", \"k-i-reset-color\"], [1, \"k-alpha-slider\", \"k-colorgradient-slider\", 3, \"ngClass\", \"dragHandleTitle\", \"disabled\", \"readonly\", \"showButtons\", \"tickPlacement\", \"vertical\", \"min\", \"max\", \"smallStep\", \"largeStep\", \"value\", \"valueChange\"], [\"alphaSlider\", \"\"], [\"kendoContrastTool\", \"\", 1, \"k-colorgradient-color-contrast\", \"k-vbox\", 3, \"value\", \"ratio\"]]; }, template: function ColorGradientComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2)(3, \"div\", 3, 4);\n ɵngcc0.ɵɵlistener(\"click\", function ColorGradientComponent_Template_div_click_3_listener($event) { return ctx.changePosition($event); })(\"kendoPress\", function ColorGradientComponent_Template_div_kendoPress_3_listener($event) { return ctx.handleDragPress($event); })(\"kendoDrag\", function ColorGradientComponent_Template_div_kendoDrag_3_listener($event) { return ctx.onHandleDrag($event); })(\"kendoRelease\", function ColorGradientComponent_Template_div_kendoRelease_3_listener() { return ctx.onHandleRelease(); });\n ɵngcc0.ɵɵelement(5, \"div\", 5, 6);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(7, \"div\");\n ɵngcc0.ɵɵtemplate(8, ColorGradientComponent_span_8_Template, 2, 2, \"span\", 7);\n ɵngcc0.ɵɵelementStart(9, \"kendo-slider\", 8);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorGradientComponent_Template_kendo_slider_valueChange_9_listener($event) { return ctx.hsva.h = $event; })(\"valueChange\", function ColorGradientComponent_Template_kendo_slider_valueChange_9_listener($event) { return ctx.handleHueSliderChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, ColorGradientComponent_kendo_slider_10_Template, 2, 14, \"kendo-slider\", 9);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(11, \"kendo-colorinput\", 10, 11);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorGradientComponent_Template_kendo_colorinput_valueChange_11_listener($event) { return ctx.handleInputsValueChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(13, ColorGradientComponent_div_13_Template, 1, 2, \"div\", 12);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"background\", ctx.backgroundColor);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵattribute(\"title\", ctx.colorGradientHandleTitle)(\"aria-label\", ctx.colorGradientHandleAriaLabel);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassMapInterpolate1(\"k-hsv-controls k-hstack \", ctx.clearButton ? \"k-sliders-wrap-clearable\" : \"\", \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.clearButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(27, _c78, ctx.clearButton))(\"dragHandleTitle\", ctx.hueSliderTitle)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"showButtons\", false)(\"tickPlacement\", \"none\")(\"vertical\", true)(\"min\", 0)(\"max\", 360)(\"smallStep\", 5)(\"largeStep\", 10)(\"value\", ctx.hsva.h);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.opacity && ctx.format === \"rgba\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"opacity\", ctx.opacity)(\"formatView\", ctx.format)(\"value\", ctx.value)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contrastToolVisible);\n } }, directives: function () { return [LocalizedColorPickerMessagesDirective, ɵngcc2.DraggableDirective, ɵngcc3.NgIf, SliderComponent, ɵngcc3.NgClass, ColorInputComponent, ContrastComponent]; }, styles: [\".k-clear-color[_ngcontent-%COMP%] {\\n position: absolute;\\n left: 50%;\\n transform: translateX(-50%);\\n }\\n .k-align-self-end[_ngcontent-%COMP%] {\\n height: 140px;\\n }\"] });\n__decorate([\n HostBinding('class.k-colorgradient'),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.aria-readonly'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"readonlyAttribute\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"hostTabindex\", null);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"gradientId\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"id\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ColorGradientComponent.prototype, \"delay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ColorGradientComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"contrastTool\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorGradientComponent.prototype, \"tabindex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorGradientComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"format\", void 0);\n__decorate([\n ViewChild('gradientDragHandle', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorGradientComponent.prototype, \"gradientDragHandle\", void 0);\n__decorate([\n ViewChild('inputs', { static: false }),\n __metadata(\"design:type\", ColorInputComponent)\n], ColorGradientComponent.prototype, \"inputs\", void 0);\n__decorate([\n ViewChild('alphaSlider', { static: false }),\n __metadata(\"design:type\", SliderComponent)\n], ColorGradientComponent.prototype, \"alphaSlider\", void 0);\n__decorate([\n ViewChild('gradientWrapper', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorGradientComponent.prototype, \"gradientWrapper\", void 0);\nColorGradientComponent = ColorGradientComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Renderer2,\n ChangeDetectorRef,\n LocalizationService])\n], ColorGradientComponent);\n\nvar ColorPickerComponent_1;\nconst DEFAULT_PRESET = 'office';\nconst DEFAULT_ACCESSIBLE_PRESET = 'accessible';\nlet serial$1 = 0;\n/**\n * Represents the [Kendo UI ColorPicker component for Angular]({% slug overview_colorpicker %}).\n * Designed to replace the `` HTML5 tag which is not widely supported in browsers.\n */\nlet ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {\n constructor(popupService, cdr, localizationService, ngZone) {\n this.popupService = popupService;\n this.cdr = cdr;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.focusableId = `k-colorpicker-${serial$1++}`;\n /**\n * Sets what view the ColorPicker will render in the popup.\n */\n this.view = 'gradient';\n /**\n * Sets the read-only state of the ColorPicker.\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the ColorPicker.\n */\n this.disabled = false;\n /**\n * Specifies the output format of the ColorPicker.\n * The input value may be in a different format. However, it will be parsed into the output `format`\n * after the component processes it.\n *\n * If the `gradient` view is used with the `opacity` option set to true, this setting will be ignored and `rgba` will be used instead.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n * * [name](https://www.w3.org/wiki/CSS/Properties/color/keywords)\n */\n this.format = 'rgba';\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time ColorPicker is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ColorPicker is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the left side of the ColorPicker wrapper is clicked.\n * The event is triggered regardless of whether a ColorPicker icon is set or not.\n *\n * The [ActiveColorClickEvent]({% slug api_inputs_activecolorclickevent %}) event provides the option to prevent the popup opening.\n */\n this.activeColorClick = new EventEmitter();\n this._tabindex = 0;\n this._popupSettings = { animate: true };\n this._paletteSettings = {};\n this._gradientSettings = { opacity: true, clearButton: false, delay: 0 };\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor$1(value, this.format);\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the ColorPicker.\n */\n set popupSettings(value) {\n this._popupSettings = Object.assign(this._popupSettings, value);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Configures the palette that is displayed in the ColorPicker popup.\n */\n set paletteSettings(value) {\n this._paletteSettings = Object.assign(this._paletteSettings, value);\n }\n get paletteSettings() {\n return this._paletteSettings;\n }\n /**\n * Configures the gradient that is displayed in the ColorPicker popup.\n */\n set gradientSettings(value) {\n this._gradientSettings = Object.assign(this._gradientSettings, value);\n }\n get gradientSettings() {\n return this._gradientSettings;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * Indicates whether the ColorPicker popup is open.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n /**\n * @hidden\n */\n get iconStyles() {\n if (this.iconClass) {\n return this.iconClass;\n }\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n }\n ngOnInit() {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET : DEFAULT_ACCESSIBLE_PRESET;\n const settingsPalette = this._paletteSettings.palette;\n const presetColumns = typeof settingsPalette === 'string' && PALETTEPRESETS[settingsPalette] ?\n PALETTEPRESETS[settingsPalette].columns :\n undefined;\n this._paletteSettings = {\n palette: settingsPalette || defaultPreset,\n tileSize: this._paletteSettings.tileSize || 24,\n columns: this._paletteSettings.columns || presetColumns || 10\n };\n }\n ngOnChanges(changes) {\n if (changes.format && changes.format.currentValue === 'name') {\n this.view = 'palette';\n }\n if (this.view === 'gradient' && this.gradientSettings.opacity) {\n this.format = 'rgba';\n this.value = parseColor$1(this.value, this.format);\n }\n }\n ngOnDestroy() {\n this.closePopup();\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleWrapperClick() {\n this.toggleWithEvents(!this.isOpen);\n this.focus();\n }\n /**\n * @hidden\n */\n handleActiveColorClick() {\n this.focus();\n const event = new ActiveColorClickEvent(this.value);\n this.activeColorClick.emit(event);\n if (!event.isOpenPrevented() || this.isOpen) {\n this.handleWrapperClick();\n }\n }\n /**\n * Focuses the wrapper of the ColorPicker.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n this.wrapper.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleWrapperFocus() {\n if (isPresent(this.palette)) {\n this.palette.nativeElement.focus();\n }\n if (this.isFocused) {\n return;\n }\n this.isFocused = true;\n this.onFocus.emit();\n }\n /**\n * Blurs the ColorPicker.\n */\n blur() {\n this.wrapper.nativeElement.blur();\n }\n /**\n * @hidden\n */\n handleWrapperBlur() {\n if (this.isOpen) {\n return;\n }\n this.isFocused = false;\n this.onBlur.emit();\n this.notifyNgTouched();\n }\n /**\n * Clears the color value of the ColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this._value = undefined;\n this.notifyNgChanged(undefined);\n }\n /**\n * Toggles the popup of the ColorPicker.\n * Does not trigger the `open` and `close` events of the component.\n *\n * @param open An optional parameter. Specifies whether the popup will be opened or closed.\n */\n toggle(open) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.closePopup();\n open = isPresent(open) ? open : !this.isOpen;\n if (open) {\n this.openPopup();\n }\n }\n /**\n * @hidden\n */\n handleValueChange(color, closePopup) {\n const parsedColor = parseColor$1(color, this.format);\n const valueChange = parsedColor !== this.value;\n if (closePopup) {\n this.toggleWithEvents(false);\n this.focus();\n }\n if (valueChange) {\n this.value = parsedColor;\n this.valueChange.emit(parsedColor);\n this.notifyNgChanged(parsedColor);\n }\n }\n /**\n * @hidden\n */\n handlePopupBlur(event) {\n const focusInPopupElement = this.popupRef.popupElement.contains(event.relatedTarget);\n const wrapperClicked = event.relatedTarget === this.wrapper.nativeElement;\n if (!this.isFocused || wrapperClicked || focusInPopupElement) {\n return;\n }\n this.isFocused = false;\n this.onBlur.emit();\n this.notifyNgTouched();\n this.toggleWithEvents(false);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n handleWrapperKeyDown(event) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.Enter) {\n event.preventDefault();\n this.toggleWithEvents(true);\n }\n }\n /**\n * @hidden\n */\n handlePopupKeyDown(event) {\n if (event.keyCode === Keys.Escape) {\n this.toggleWithEvents(false);\n this.wrapper.nativeElement.focus();\n }\n if (event.keyCode === Keys.Tab) {\n const firstElement = this.colorGradient ? this.colorGradient.gradientDragHandle.nativeElement : this.palette.nativeElement;\n const lastElement = this.palette ? this.palette.nativeElement :\n this.colorGradient.inputs.opacityInput.nativeElement.childNodes[1].children[0];\n if (event.shiftKey) {\n if (event.target === firstElement) {\n event.preventDefault();\n lastElement.focus();\n return;\n }\n }\n else {\n if (event.target === lastElement) {\n event.preventDefault();\n firstElement.focus();\n return;\n }\n }\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n toggleWithEvents(open) {\n const sameState = this.isOpen === open;\n if (this.disabled || this.readonly || sameState) {\n return;\n }\n const eventArgs = new PreventableEvent();\n open ? this.open.emit(eventArgs) : this.close.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.toggle(open);\n }\n if (open) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n if (this.colorGradient) {\n this.colorGradient.gradientDragHandle.nativeElement.focus();\n }\n });\n });\n }\n }\n openPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.popupSettings.appendTo,\n popupAlign: popupPosition,\n anchorAlign: anchorPosition,\n popupClass: 'k-colorpicker-popup',\n content: this.popupTemplate,\n positionMode: 'absolute'\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.toggleWithEvents(false);\n if (!this.isOpen) {\n this.wrapper.nativeElement.focus({\n preventScroll: true\n });\n }\n });\n }\n closePopup() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.close();\n this.popupRef = null;\n this.palette = null;\n }\n};\nColorPickerComponent.ɵfac = function ColorPickerComponent_Factory(t) { return new (t || ColorPickerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc5.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nColorPickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorPickerComponent, selectors: [[\"kendo-colorpicker\"]], viewQuery: function ColorPickerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c79, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c80, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c20, 7);\n ɵngcc0.ɵɵviewQuery(_c81, 7);\n ɵngcc0.ɵɵviewQuery(_c82, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.palette = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.colorGradient = _t.first);\n } }, hostVars: 5, hostBindings: function ColorPickerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-colorpicker\", ctx.hostClasses);\n } }, inputs: { focusableId: \"focusableId\", view: \"view\", readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", popupSettings: \"popupSettings\", paletteSettings: \"paletteSettings\", gradientSettings: \"gradientSettings\", tabindex: \"tabindex\", icon: \"icon\", iconClass: \"iconClass\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\", activeColorClick: \"activeColorClick\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 12, consts: function () { let i18n_83; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the gradient color drag handle chooser.\n * @meaning kendo.colorpicker.colorGradientHandle\n */\n const MSG_EXTERNAL_8067778471922495440$$DIST_FESM2015_INDEX_JS_84 = goog.getMsg(\"Choose color\");\n i18n_83 = MSG_EXTERNAL_8067778471922495440$$DIST_FESM2015_INDEX_JS_84;\n }\n else {\n i18n_83 = $localize `:kendo.colorpicker.colorGradientHandle|The title for the gradient color drag handle chooser.␟8d537502a437254763c963398484bd362820af61␟8067778471922495440:Choose color`;\n } let i18n_85; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the clear button.\n * @meaning kendo.colorpicker.clearButton\n */\n const MSG_EXTERNAL_935472034136733879$$DIST_FESM2015_INDEX_JS_86 = goog.getMsg(\"Clear value\");\n i18n_85 = MSG_EXTERNAL_935472034136733879$$DIST_FESM2015_INDEX_JS_86;\n }\n else {\n i18n_85 = $localize `:kendo.colorpicker.clearButton|The title for the clear button.␟aae9caf1dbc689cd51ace5c265cbf45552a580b6␟935472034136733879:Clear value`;\n } let i18n_87; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the hue slider handle.\n * @meaning kendo.colorpicker.hueSliderHandle\n */\n const MSG_EXTERNAL_1739045502529621844$$DIST_FESM2015_INDEX_JS_88 = goog.getMsg(\"Set hue\");\n i18n_87 = MSG_EXTERNAL_1739045502529621844$$DIST_FESM2015_INDEX_JS_88;\n }\n else {\n i18n_87 = $localize `:kendo.colorpicker.hueSliderHandle|The title for the hue slider handle.␟7af8ad339d09d41bfa8fa5f4e44d16e326cafd54␟1739045502529621844:Set hue`;\n } let i18n_89; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the opacity slider handle.\n * @meaning kendo.colorpicker.opacitySliderHandle\n */\n const MSG_EXTERNAL_1818720388700598438$$DIST_FESM2015_INDEX_JS_90 = goog.getMsg(\"Set opacity\");\n i18n_89 = MSG_EXTERNAL_1818720388700598438$$DIST_FESM2015_INDEX_JS_90;\n }\n else {\n i18n_89 = $localize `:kendo.colorpicker.opacitySliderHandle|The title for the opacity slider handle.␟21883ee2927bd4cde8071c9cbec41901a0bc4bd2␟1818720388700598438:Set opacity`;\n } let i18n_91; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the HEX color input.\n * @meaning kendo.colorpicker.hexInputPlaceholder\n */\n const MSG_EXTERNAL_67581802130075115$$DIST_FESM2015_INDEX_JS_92 = goog.getMsg(\"HEX Color\");\n i18n_91 = MSG_EXTERNAL_67581802130075115$$DIST_FESM2015_INDEX_JS_92;\n }\n else {\n i18n_91 = $localize `:kendo.colorpicker.hexInputPlaceholder|The placeholder for the HEX color input.␟88c518588be223639d20666430d42b88990166c9␟67581802130075115:HEX Color`;\n } let i18n_93; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the red color input.\n * @meaning kendo.colorpicker.redInputPlaceholder\n */\n const MSG_EXTERNAL_1242921922786989001$$DIST_FESM2015_INDEX_JS_94 = goog.getMsg(\"Red\");\n i18n_93 = MSG_EXTERNAL_1242921922786989001$$DIST_FESM2015_INDEX_JS_94;\n }\n else {\n i18n_93 = $localize `:kendo.colorpicker.redInputPlaceholder|The placeholder for the red color input.␟60f46a6db83b89c15885de76451bb26478637d2c␟1242921922786989001:Red`;\n } let i18n_95; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the green color input.\n * @meaning kendo.colorpicker.greenInputPlaceholder\n */\n const MSG_EXTERNAL_564969508273982379$$DIST_FESM2015_INDEX_JS_96 = goog.getMsg(\"Green\");\n i18n_95 = MSG_EXTERNAL_564969508273982379$$DIST_FESM2015_INDEX_JS_96;\n }\n else {\n i18n_95 = $localize `:kendo.colorpicker.greenInputPlaceholder|The placeholder for the green color input.␟0c1eef35af82330d89cacecb2aa482d9da1e3a4b␟564969508273982379:Green`;\n } let i18n_97; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the blue color input.\n * @meaning kendo.colorpicker.blueInputPlaceholder\n */\n const MSG_EXTERNAL_2815824305218491249$$DIST_FESM2015_INDEX_JS_98 = goog.getMsg(\"Blue\");\n i18n_97 = MSG_EXTERNAL_2815824305218491249$$DIST_FESM2015_INDEX_JS_98;\n }\n else {\n i18n_97 = $localize `:kendo.colorpicker.blueInputPlaceholder|The placeholder for the blue color input.␟c8f1ad22547f56cec39eb563a9a1bfe5a85cc14a␟2815824305218491249:Blue`;\n } let i18n_99; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the alpha input.\n * @meaning kendo.colorpicker.alphaInputPlaceholder\n */\n const MSG_EXTERNAL_7522085117867122625$$DIST_FESM2015_INDEX_JS_100 = goog.getMsg(\"Alpha\");\n i18n_99 = MSG_EXTERNAL_7522085117867122625$$DIST_FESM2015_INDEX_JS_100;\n }\n else {\n i18n_99 = $localize `:kendo.colorpicker.alphaInputPlaceholder|The placeholder for the alpha input.␟4e4aed4804d59e87f4f96959d0113c5ca292d98c␟7522085117867122625:Alpha`;\n } return [[\"kendoColorPickerLocalizedMessages\", \"\", \"colorGradientNoColor\", \"Colorgradient no color chosen\", \"colorPaletteNoColor\", \"Colorpalette no color chosen\", \"colorGradientHandle\", i18n_83, \"clearButton\", i18n_85, \"hueSliderHandle\", i18n_87, \"opacitySliderHandle\", i18n_89, \"hexInputPlaceholder\", i18n_91, \"redInputPlaceholder\", i18n_93, \"greenInputPlaceholder\", i18n_95, \"blueInputPlaceholder\", i18n_97, \"alphaInputPlaceholder\", i18n_99], [\"role\", \"listbox\", 3, \"ngClass\", \"id\", \"focus\", \"blur\", \"mousedown\", \"keydown\"], [\"wrapper\", \"\"], [\"class\", \"k-selected-color\", 3, \"background-color\", \"click\", 4, \"ngIf\"], [\"class\", \"k-tool-icon\", 3, \"ngClass\", \"click\", 4, \"ngIf\"], [1, \"k-select\", 3, \"click\"], [1, \"k-icon\", \"k-i-arrow-s\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [1, \"k-selected-color\", 3, \"click\"], [\"class\", \"k-icon k-i-line\", 4, \"ngIf\"], [1, \"k-icon\", \"k-i-line\"], [1, \"k-tool-icon\", 3, \"ngClass\", \"click\"], [1, \"k-selected-color\"], [3, \"value\", \"format\", \"opacity\", \"clearButton\", \"delay\", \"focusout\", \"valueChange\", \"keydown\", 4, \"ngIf\"], [\"kendoFocusOnDomReady\", \"\", 3, \"palette\", \"columns\", \"tileSize\", \"format\", \"value\", \"blur\", \"cellSelection\", \"mousedown\", \"keydown\", 4, \"ngIf\"], [3, \"value\", \"format\", \"opacity\", \"clearButton\", \"delay\", \"focusout\", \"valueChange\", \"keydown\"], [\"colorGradient\", \"\"], [\"kendoFocusOnDomReady\", \"\", 3, \"palette\", \"columns\", \"tileSize\", \"format\", \"value\", \"blur\", \"cellSelection\", \"mousedown\", \"keydown\"], [\"palette\", \"\"]]; }, template: function ColorPickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵlistener(\"focus\", function ColorPickerComponent_Template_span_focus_1_listener() { return ctx.handleWrapperFocus(); })(\"blur\", function ColorPickerComponent_Template_span_blur_1_listener() { return ctx.handleWrapperBlur(); })(\"mousedown\", function ColorPickerComponent_Template_span_mousedown_1_listener($event) { return $event.preventDefault(); })(\"keydown\", function ColorPickerComponent_Template_span_keydown_1_listener($event) { return ctx.handleWrapperKeyDown($event); });\n ɵngcc0.ɵɵtemplate(3, ColorPickerComponent_span_3_Template, 2, 3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, ColorPickerComponent_span_4_Template, 2, 3, \"span\", 4);\n ɵngcc0.ɵɵelementStart(5, \"span\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerComponent_Template_span_click_5_listener() { return ctx.handleWrapperClick(); });\n ɵngcc0.ɵɵelement(6, \"span\", 6);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(7, ColorPickerComponent_ng_template_7_Template, 2, 2, \"ng-template\", null, 7, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(9, null, 8);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(9, _c101, ctx.disabled, ctx.isFocused))(\"id\", ctx.focusableId);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.isOpen)(\"aria-readonly\", ctx.readonly)(\"aria-disabled\", ctx.disabled)(\"aria-label\", ctx.value)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.iconStyles);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.iconStyles);\n } }, directives: function () { return [LocalizedColorPickerMessagesDirective, ɵngcc3.NgClass, ɵngcc3.NgIf, ColorGradientComponent, ColorPaletteComponent, FocusOnDomReadyDirective]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-colorpicker'),\n __metadata(\"design:type\", Boolean)\n], ColorPickerComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"view\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPickerComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPickerComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ColorPickerComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPickerComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPickerComponent.prototype, \"paletteSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPickerComponent.prototype, \"gradientSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColorPickerComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorPickerComponent.prototype, \"tabindex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"close\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"activeColorClick\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], ColorPickerComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ColorPickerComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ColorPickerComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('palette', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorPickerComponent.prototype, \"palette\", void 0);\n__decorate([\n ViewChild('colorGradient', { static: false }),\n __metadata(\"design:type\", ColorGradientComponent)\n], ColorPickerComponent.prototype, \"colorGradient\", void 0);\nColorPickerComponent = ColorPickerComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [PopupService,\n ChangeDetectorRef,\n LocalizationService,\n NgZone])\n], ColorPickerComponent);\n\n/**\n * @hidden\n */\nlet ColorPaletteService = class ColorPaletteService {\n /**\n * @hidden\n */\n constructor() {\n this.colorRows = [];\n }\n setColorMatrix(palette, columns) {\n this.colorRows = [];\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n columns = columns || palette.length;\n for (let start = 0; start < palette.length; start += columns) {\n const row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n }\n getCellCoordsFor(color) {\n if (!isPresent(color)) {\n return;\n }\n for (let row = 0; row < this.colorRows.length; row++) {\n for (let col = 0; col < this.colorRows[row].length; col++) {\n if (this.colorRows[row][col] === color) {\n return { row, col };\n }\n }\n }\n }\n getColorAt(cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n return this.colorRows[cellCoords.row][cellCoords.col];\n }\n getNextCell(current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return { row: 0, col: 0 };\n }\n const row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n const col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return { row, col };\n }\n clampIndex(index, max) {\n const minArrayIndex = 0;\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n};\nColorPaletteService.ɵfac = function ColorPaletteService_Factory(t) { return new (t || ColorPaletteService)(); };\nColorPaletteService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorPaletteService, factory: function (t) { return ColorPaletteService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet ColorPaletteLocalizationService = class ColorPaletteLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, colorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.colorPickerLocalization = colorPickerLocalization;\n }\n get(shortKey) {\n if (this.colorPickerLocalization) {\n return this.colorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n};\nColorPaletteLocalizationService.ɵfac = function ColorPaletteLocalizationService_Factory(t) { return new (t || ColorPaletteLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc1.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8), ɵngcc0.ɵɵinject(ColorPickerLocalizationService, 8)); };\nColorPaletteLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorPaletteLocalizationService, factory: function (t) { return ColorPaletteLocalizationService.ɵfac(t); } });\nColorPaletteLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __param(3, Optional()), __param(3, Inject(ColorPickerLocalizationService)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean, ColorPickerLocalizationService])\n], ColorPaletteLocalizationService);\n\nvar ColorPaletteComponent_1;\nconst DEFAULT_TILE_SIZE = 24;\nconst DEFAULT_COLUMNS_COUNT = 10;\nconst DEFAULT_PRESET$1 = 'office';\nconst DEFAULT_ACCESSIBLE_PRESET$1 = 'accessible';\nlet serial$2 = 0;\n/**\n * The ColorPalette component provides a set of predefined palette presets and enables you to implement a custom color palette.\n * The ColorPalette is independently used by `kendo-colorpicker` and can be directly added to the page.\n */\nlet ColorPaletteComponent = ColorPaletteComponent_1 = class ColorPaletteComponent {\n constructor(host, service, cdr, renderer, localizationService) {\n this.host = host;\n this.service = service;\n this.cdr = cdr;\n this.renderer = renderer;\n this.localizationService = localizationService;\n /**\n * @hidden\n */\n this.id = `k-colorpalette-${serial$2++}`;\n /**\n * Specifies the output format of the ColorPaletteComponent.\n * The input value may be in a different format. However, it will be parsed into the output `format`\n * after the component processes it.\n *\n * The supported values are:\n * * (Default) `hex`\n * * `rgba`\n * * `name`\n */\n this.format = 'hex';\n /**\n * Sets the disabled state of the ColorPalette.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorPalette.\n */\n this.readonly = false;\n /**\n * Specifies the size of a color cell.\n *\n * The possible values are:\n * * (Default) `tileSize = 24`\n * * `{ width: number, height: number }`\n */\n this.tileSize = { width: DEFAULT_TILE_SIZE, height: DEFAULT_TILE_SIZE };\n /**\n * Fires each time the color selection is changed.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user selects a cell with the mouse or presses `Enter`.\n *\n * @hidden\n */\n this.cellSelection = new EventEmitter();\n /**\n * @hidden\n */\n this.hostClasses = true;\n this._tabindex = 0;\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * @hidden\n */\n get paletteId() {\n return this.id;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor$1(value, this.format);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the number of columns that will be displayed.\n * Defaults to `10`.\n */\n set columns(value) {\n const minColumnsCount = 1;\n this._columns = value > minColumnsCount ? value : minColumnsCount;\n }\n get columns() {\n return this._columns;\n }\n /**\n * The color palette that will be displayed.\n *\n * The supported values are:\n * * The name of the predefined palette preset (for example, `office`, `basic`, and `apex`).\n * * A string with comma-separated colors.\n * * A string array.\n */\n set palette(value) {\n if (!isPresent(value)) {\n value = DEFAULT_PRESET$1;\n }\n if (typeof value === 'string' && isPresent(PALETTEPRESETS[value])) {\n this.columns = this.columns || PALETTEPRESETS[value].columns;\n value = PALETTEPRESETS[value].colors;\n }\n const colors = (typeof value === 'string') ? value.split(',') : value;\n this._palette = colors.map(color => parseColor$1(color, this.format, false));\n }\n get palette() {\n return this._palette;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * @hidden\n */\n get tileLayout() {\n if (typeof this.tileSize !== 'number') {\n return this.tileSize;\n }\n return { width: this.tileSize, height: this.tileSize };\n }\n /**\n * @hidden\n */\n get colorRows() {\n return this.service.colorRows;\n }\n /**\n * @hidden\n */\n get hostTabindex() { return this.tabindex; }\n /**\n * @hidden\n */\n get disabledClass() { return this.disabled; }\n /**\n * @hidden\n */\n get readonlyAttribute() { return this.readonly; }\n ngOnInit() {\n if (this.colorRows.length === 0) {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET$1 : DEFAULT_ACCESSIBLE_PRESET$1;\n this.palette = this.palette || defaultPreset;\n this.setRows();\n this.focusedCell = this.service.getCellCoordsFor(this.value);\n }\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n if (changes.palette || changes.columns) {\n this.setRows();\n }\n if (changes.palette || changes.value || changes.columns) {\n this.focusedCell = this.service.getCellCoordsFor(this.value);\n this.setHostElementAriaLabel();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const isRTL = this.direction === 'rtl';\n switch (event.keyCode) {\n case Keys.ArrowDown:\n this.handleCellNavigation(0, 1);\n break;\n case Keys.ArrowUp:\n this.handleCellNavigation(0, -1);\n break;\n case Keys.ArrowRight:\n this.handleCellNavigation(isRTL ? -1 : 1, 0);\n break;\n case Keys.ArrowLeft:\n this.handleCellNavigation(isRTL ? 1 : -1, 0);\n break;\n case Keys.Enter:\n this.handleEnter();\n break;\n default: return;\n }\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleHostBlur() {\n this.notifyNgTouched();\n this.handleCellFocusOnBlur();\n }\n /**\n * @hidden\n */\n handleCellSelection(value, cell) {\n if (this.readonly) {\n return;\n }\n this.selectedCell = cell;\n this.focusedCell = this.selectedCell;\n this.focusInComponent = true;\n const parsedColor = parseColor$1(value, this.format, false);\n this.cellSelection.emit(parsedColor);\n if (this.value !== parsedColor) {\n this.value = parsedColor;\n this.valueChange.emit(parsedColor);\n this.notifyNgChanged(parsedColor);\n this.setHostElementAriaLabel();\n }\n if (this.selection !== parsedColor) {\n this.selection = parsedColor;\n this.selectionChange.emit(parsedColor);\n }\n if (cell) {\n this.activeCellId = `${this.selectedCell.row}-${this.selectedCell.col}`;\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.focusedCell = this.service.getCellCoordsFor(this.value);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Clears the color value of the ColorPalette.\n */\n reset() {\n this.focusedCell = null;\n if (isPresent(this.value)) {\n this._value = undefined;\n this.notifyNgChanged(undefined);\n }\n }\n handleCellFocusOnBlur() {\n this.focusInComponent = false;\n this.focusedCell = this.selectedCell;\n }\n setRows() {\n if (!isPresent(this.palette)) {\n return;\n }\n this.columns = this.columns || DEFAULT_COLUMNS_COUNT;\n this.service.setColorMatrix(this.palette, this.columns);\n }\n handleCellNavigation(horizontalStep, verticalStep) {\n if (this.readonly) {\n return;\n }\n this.focusedCell = this.service.getNextCell(this.focusedCell, horizontalStep, verticalStep);\n this.focusInComponent = true;\n }\n setHostElementAriaLabel() {\n const parsed = parseColor$1(this.value, this.format);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorPaletteNoColor')}`);\n }\n handleEnter() {\n if (!isPresent(this.focusedCell)) {\n return;\n }\n const selectedColor = this.service.getColorAt(this.focusedCell);\n this.handleCellSelection(selectedColor, this.focusedCell);\n }\n};\nColorPaletteComponent.ɵfac = function ColorPaletteComponent_Factory(t) { return new (t || ColorPaletteComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ColorPaletteService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nColorPaletteComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorPaletteComponent, selectors: [[\"kendo-colorpalette\"]], hostVars: 9, hostBindings: function ColorPaletteComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function ColorPaletteComponent_keydown_HostBindingHandler($event) { return ctx.handleKeydown($event); })(\"blur\", function ColorPaletteComponent_blur_HostBindingHandler() { return ctx.handleHostBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"id\", ctx.paletteId)(\"tabindex\", ctx.hostTabindex)(\"aria-disabled\", ctx.disabledClass)(\"aria-readonly\", ctx.readonlyAttribute);\n ɵngcc0.ɵɵclassProp(\"k-colorpalette\", ctx.hostClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { id: \"id\", format: \"format\", disabled: \"disabled\", readonly: \"readonly\", tileSize: \"tileSize\", value: \"value\", columns: \"columns\", palette: \"palette\", tabindex: \"tabindex\" }, outputs: { selectionChange: \"selectionChange\", valueChange: \"valueChange\", cellSelection: \"cellSelection\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent_1) // tslint:disable-line:no-forward-ref\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent_1)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 2, consts: function () { let i18n_102; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The aria-label applied to the ColorPalette component when the value is empty.\n * @meaning kendo.colorpalette.colorPaletteNoColor\n */\n const MSG_EXTERNAL_4885193165402402447$$DIST_FESM2015_INDEX_JS_103 = goog.getMsg(\"Colorpalette no color chosen\");\n i18n_102 = MSG_EXTERNAL_4885193165402402447$$DIST_FESM2015_INDEX_JS_103;\n }\n else {\n i18n_102 = $localize `:kendo.colorpalette.colorPaletteNoColor|The aria-label applied to the ColorPalette component when the value is empty.␟9828bb7d78de6289366052cdc37cf0bc74577313␟4885193165402402447:Colorpalette no color chosen`;\n } return [[\"kendoColorPaletteLocalizedMessages\", \"\", \"colorPaletteNoColor\", i18n_102], [\"role\", \"listbox\", 1, \"k-colorpalette-table-wrap\"], [1, \"k-colorpalette-table\", \"k-palette\"], [4, \"ngFor\", \"ngForOf\"], [\"role\", \"option\", \"class\", \"k-colorpalette-tile\", 3, \"k-state-selected\", \"k-state-focus\", \"id\", \"ngStyle\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"option\", 1, \"k-colorpalette-tile\", 3, \"id\", \"ngStyle\", \"click\"]]; }, template: function ColorPaletteComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"table\", 2)(3, \"tbody\");\n ɵngcc0.ɵɵtemplate(4, ColorPaletteComponent_tr_4_Template, 2, 1, \"tr\", 3);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-activedescendant\", ctx.activeCellId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.colorRows);\n } }, directives: function () { return [LocalizedColorPickerMessagesDirective, ɵngcc3.NgForOf, ɵngcc3.NgStyle]; }, encapsulation: 2 });\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ColorPaletteComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"paletteId\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPaletteComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPaletteComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ColorPaletteComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorPaletteComponent.prototype, \"columns\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPaletteComponent.prototype, \"palette\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorPaletteComponent.prototype, \"tabindex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPaletteComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPaletteComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColorPaletteComponent.prototype, \"tileSize\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPaletteComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPaletteComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPaletteComponent.prototype, \"cellSelection\", void 0);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"hostTabindex\", null);\n__decorate([\n HostBinding('class.k-colorpalette'),\n __metadata(\"design:type\", Boolean)\n], ColorPaletteComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.aria-readonly'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"readonlyAttribute\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ColorPaletteComponent.prototype, \"handleKeydown\", null);\n__decorate([\n HostListener('blur'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ColorPaletteComponent.prototype, \"handleHostBlur\", null);\nColorPaletteComponent = ColorPaletteComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ColorPaletteService,\n ChangeDetectorRef,\n Renderer2,\n LocalizationService])\n], ColorPaletteComponent);\n\n/**\n * @hidden\n */\nclass ColorPickerMessages extends ComponentMessages {\n}\nColorPickerMessages.ɵfac = /*@__PURE__*/ function () { let ɵColorPickerMessages_BaseFactory; return function ColorPickerMessages_Factory(t) { return (ɵColorPickerMessages_BaseFactory || (ɵColorPickerMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ColorPickerMessages)))(t || ColorPickerMessages); }; }();\nColorPickerMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColorPickerMessages, inputs: { colorPaletteNoColor: \"colorPaletteNoColor\", colorGradientNoColor: \"colorGradientNoColor\", colorGradientHandle: \"colorGradientHandle\", clearButton: \"clearButton\", hueSliderHandle: \"hueSliderHandle\", opacitySliderHandle: \"opacitySliderHandle\", hexInputPlaceholder: \"hexInputPlaceholder\", redInputPlaceholder: \"redInputPlaceholder\", greenInputPlaceholder: \"greenInputPlaceholder\", blueInputPlaceholder: \"blueInputPlaceholder\", alphaInputPlaceholder: \"alphaInputPlaceholder\", passContrast: \"passContrast\", failContrast: \"failContrast\", contrastRatio: \"contrastRatio\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"colorPaletteNoColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"colorGradientNoColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"colorGradientHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"hueSliderHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"opacitySliderHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"hexInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"redInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"greenInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"blueInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"alphaInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"passContrast\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"failContrast\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"contrastRatio\", void 0);\n\nvar ColorPickerCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet ColorPickerCustomMessagesComponent = ColorPickerCustomMessagesComponent_1 = class ColorPickerCustomMessagesComponent extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nColorPickerCustomMessagesComponent.ɵfac = function ColorPickerCustomMessagesComponent_Factory(t) { return new (t || ColorPickerCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nColorPickerCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorPickerCustomMessagesComponent, selectors: [[\"kendo-colorpicker-messages\"], [\"kendo-colorgradient-messages\"], [\"kendo-colorpalette-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColorPickerCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nColorPickerCustomMessagesComponent = ColorPickerCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ColorPickerCustomMessagesComponent);\n\nvar LocalizedColorPickerMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedColorPickerMessagesDirective = LocalizedColorPickerMessagesDirective_1 = class LocalizedColorPickerMessagesDirective extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedColorPickerMessagesDirective.ɵfac = function LocalizedColorPickerMessagesDirective_Factory(t) { return new (t || LocalizedColorPickerMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedColorPickerMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedColorPickerMessagesDirective, selectors: [[\"\", \"kendoColorPickerLocalizedMessages\", \"\"], [\"\", \"kendoColorGradientLocalizedMessages\", \"\"], [\"\", \"kendoColorPaletteLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedColorPickerMessagesDirective = LocalizedColorPickerMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedColorPickerMessagesDirective);\n\n/**\n * @hidden\n */\nlet FocusOnDomReadyDirective = class FocusOnDomReadyDirective {\n constructor(host, ngZone) {\n this.host = host;\n this.ngZone = ngZone;\n }\n ngAfterContentInit() {\n this.focusOnNextTick();\n }\n focusOnNextTick() {\n this.ngZone.runOutsideAngular(() => setTimeout(() => this.host.nativeElement.focus()));\n }\n};\nFocusOnDomReadyDirective.ɵfac = function FocusOnDomReadyDirective_Factory(t) { return new (t || FocusOnDomReadyDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nFocusOnDomReadyDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FocusOnDomReadyDirective, selectors: [[\"\", \"kendoFocusOnDomReady\", \"\"]] });\nFocusOnDomReadyDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone])\n], FocusOnDomReadyDirective);\n\n/**\n * @hidden\n */\nlet ContrastValidationComponent = class ContrastValidationComponent {\n constructor(localization) {\n this.localization = localization;\n }\n get passMessage() {\n return this.localization.get('passContrast');\n }\n get failMessage() {\n return this.localization.get('failContrast');\n }\n get contrastText() {\n return `${this.type}: ${this.ratio.toFixed(1)}`;\n }\n};\nContrastValidationComponent.ɵfac = function ContrastValidationComponent_Factory(t) { return new (t || ContrastValidationComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nContrastValidationComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ContrastValidationComponent, selectors: [[\"\", \"kendoContrastValidation\", \"\"]], inputs: { type: \"type\", ratio: \"ratio\", pass: \"pass\" }, attrs: _c105, decls: 4, vars: 3, consts: [[\"class\", \"k-contrast-validation k-text-success\", 4, \"ngIf\"], [\"class\", \"k-contrast-validation k-text-error\", 4, \"ngIf\"], [1, \"k-contrast-validation\", \"k-text-success\"], [1, \"k-icon\", \"k-i-check\"], [1, \"k-contrast-validation\", \"k-text-error\"], [1, \"k-icon\", \"k-i-close\"]], template: function ContrastValidationComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, ContrastValidationComponent_span_2_Template, 3, 1, \"span\", 0);\n ɵngcc0.ɵɵtemplate(3, ContrastValidationComponent_span_3_Template, 3, 1, \"span\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.contrastText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.pass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.pass);\n } }, directives: [ɵngcc3.NgIf], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContrastValidationComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ContrastValidationComponent.prototype, \"ratio\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ContrastValidationComponent.prototype, \"pass\", void 0);\nContrastValidationComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ContrastValidationComponent);\n\n/**\n * @hidden\n */\nlet ContrastComponent = class ContrastComponent {\n constructor(localization) {\n this.localization = localization;\n this.aaRatio = AA_RATIO;\n this.aaaRatio = AAA_RATIO;\n }\n get formatedRatio() {\n return this.contrastRatio.toFixed(2);\n }\n get contrastRatioMessage() {\n return this.localization.get('contrastRatio');\n }\n get satisfiesAACondition() {\n return this.contrastRatio >= this.aaRatio;\n }\n get satisfiesAAACondition() {\n return this.contrastRatio >= this.aaaRatio;\n }\n get contrastRatio() {\n let contrast = getContrastFromTwoRGBAs(getRGBA(this.value), getRGBA(this.ratio));\n return contrast;\n }\n};\nContrastComponent.ɵfac = function ContrastComponent_Factory(t) { return new (t || ContrastComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nContrastComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ContrastComponent, selectors: [[\"\", \"kendoContrastTool\", \"\"]], inputs: { value: \"value\", ratio: \"ratio\" }, attrs: _c106, decls: 7, vars: 8, consts: [[1, \"k-contrast-ratio\"], [1, \"k-contrast-ratio-text\"], [\"class\", \"k-contrast-validation k-text-success\", 4, \"ngIf\"], [\"class\", \"k-contrast-validation k-text-error\", 4, \"ngIf\"], [\"kendoContrastValidation\", \"\", \"type\", \"AA\", 3, \"ratio\", \"pass\"], [\"kendoContrastValidation\", \"\", \"type\", \"AAA\", 3, \"ratio\", \"pass\"], [1, \"k-contrast-validation\", \"k-text-success\"], [1, \"k-icon\", \"k-i-check\"], [\"class\", \"k-icon k-i-check\", 4, \"ngIf\"], [1, \"k-contrast-validation\", \"k-text-error\"], [1, \"k-icon\", \"k-i-close\"]], template: function ContrastComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"span\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ContrastComponent_span_3_Template, 3, 1, \"span\", 2);\n ɵngcc0.ɵɵtemplate(4, ContrastComponent_span_4_Template, 2, 0, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"div\", 4)(6, \"div\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate2(\"\", ctx.contrastRatioMessage, \": \", ctx.formatedRatio, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.satisfiesAACondition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.satisfiesAACondition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ratio\", ctx.aaaRatio)(\"pass\", ctx.satisfiesAACondition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ratio\", ctx.aaaRatio)(\"pass\", ctx.satisfiesAAACondition);\n } }, directives: [ɵngcc3.NgIf, ContrastValidationComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContrastComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContrastComponent.prototype, \"ratio\", void 0);\nContrastComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ContrastComponent);\n\nconst PUBLIC_DIRECTIVES = [\n ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent\n];\nconst INTERNAL_DIRECTIVES = [\n ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ColorPicker.\n */\nlet ColorPickerModule = class ColorPickerModule {\n};\nColorPickerModule.ɵfac = function ColorPickerModule_Factory(t) { return new (t || ColorPickerModule)(); };\nColorPickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ColorPickerModule });\nColorPickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule\n ]] });\n\n/**\n * Represents the directive that renders the [Kendo UI CheckBox]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"checkbox\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet CheckBoxDirective = class CheckBoxDirective {\n /**\n * Represents the directive that renders the [Kendo UI CheckBox]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"checkbox\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\n constructor() {\n this.kendoClass = true;\n }\n};\nCheckBoxDirective.ɵfac = function CheckBoxDirective_Factory(t) { return new (t || CheckBoxDirective)(); };\nCheckBoxDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckBoxDirective, selectors: [[\"input\", \"kendoCheckBox\", \"\"]], hostVars: 2, hostBindings: function CheckBoxDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-checkbox\", ctx.kendoClass);\n } } });\n__decorate([\n HostBinding('class.k-checkbox'),\n __metadata(\"design:type\", Boolean)\n], CheckBoxDirective.prototype, \"kendoClass\", void 0);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the CheckBox directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the CheckBox module\n * import { CheckBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CheckBoxModule], // import CheckBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet CheckBoxModule = class CheckBoxModule {\n};\nCheckBoxModule.ɵfac = function CheckBoxModule_Factory(t) { return new (t || CheckBoxModule)(); };\nCheckBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CheckBoxModule });\nCheckBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * Represents the directive that renders the [Kendo UI RadioButton]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"radio\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet RadioButtonDirective = class RadioButtonDirective {\n /**\n * Represents the directive that renders the [Kendo UI RadioButton]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"radio\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\n constructor() {\n this.kendoClass = true;\n }\n};\nRadioButtonDirective.ɵfac = function RadioButtonDirective_Factory(t) { return new (t || RadioButtonDirective)(); };\nRadioButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: RadioButtonDirective, selectors: [[\"input\", \"kendoRadioButton\", \"\"]], hostVars: 2, hostBindings: function RadioButtonDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-radio\", ctx.kendoClass);\n } } });\n__decorate([\n HostBinding('class.k-radio'),\n __metadata(\"design:type\", Boolean)\n], RadioButtonDirective.prototype, \"kendoClass\", void 0);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the RadioButton directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the RadioButton module\n * import { RadioButtonModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, RadioButtonModule], // import RadioButton module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet RadioButtonModule = class RadioButtonModule {\n};\nRadioButtonModule.ɵfac = function RadioButtonModule_Factory(t) { return new (t || RadioButtonModule)(); };\nRadioButtonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: RadioButtonModule });\nRadioButtonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nlet serial$3 = 0;\n/**\n * Represents an error message that will be shown underneath\n * a Kendo control or native HTML form-bound component after a validation.\n */\nlet ErrorComponent = class ErrorComponent {\n /**\n * Represents an error message that will be shown underneath\n * a Kendo control or native HTML form-bound component after a validation.\n */\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the alignment of the Error message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-error-${serial$3++}`;\n this.roleAttribute = 'alert';\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n};\nErrorComponent.ɵfac = function ErrorComponent_Factory(t) { return new (t || ErrorComponent)(); };\nErrorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ErrorComponent, selectors: [[\"kendo-formerror\"]], hostVars: 8, hostBindings: function ErrorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.roleAttribute)(\"id\", ctx.idAttribute);\n ɵngcc0.ɵɵclassProp(\"k-form-error\", ctx.hostClass)(\"k-text-start\", ctx.startClass)(\"k-text-end\", ctx.endClass);\n } }, inputs: { align: \"align\" }, ngContentSelectors: _c26, decls: 1, vars: 0, template: function ErrorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-form-error'),\n __metadata(\"design:type\", Boolean)\n], ErrorComponent.prototype, \"hostClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ErrorComponent.prototype, \"align\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], ErrorComponent.prototype, \"roleAttribute\", void 0);\n__decorate([\n HostBinding('class.k-text-start'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ErrorComponent.prototype, \"startClass\", null);\n__decorate([\n HostBinding('class.k-text-end'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ErrorComponent.prototype, \"endClass\", null);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ErrorComponent.prototype, \"idAttribute\", null);\n\nlet serial$4 = 0;\n/**\n * Represents a hint message that will be shown underneath a form-bound component.\n */\nlet HintComponent = class HintComponent {\n /**\n * Represents a hint message that will be shown underneath a form-bound component.\n */\n constructor() {\n /**\n * Specifies the alignment of the Hint message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-hint-${serial$4++}`;\n this.hostClass = true;\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n};\nHintComponent.ɵfac = function HintComponent_Factory(t) { return new (t || HintComponent)(); };\nHintComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HintComponent, selectors: [[\"kendo-formhint\"]], hostVars: 7, hostBindings: function HintComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.idAttribute);\n ɵngcc0.ɵɵclassProp(\"k-form-hint\", ctx.hostClass)(\"k-text-start\", ctx.startClass)(\"k-text-end\", ctx.endClass);\n } }, inputs: { align: \"align\" }, ngContentSelectors: _c26, decls: 1, vars: 0, template: function HintComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], HintComponent.prototype, \"align\", void 0);\n__decorate([\n HostBinding('class.k-form-hint'),\n __metadata(\"design:type\", Boolean)\n], HintComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-text-start'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HintComponent.prototype, \"startClass\", null);\n__decorate([\n HostBinding('class.k-text-end'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HintComponent.prototype, \"endClass\", null);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], HintComponent.prototype, \"idAttribute\", null);\n\n/**\n * Specifies a container for form-bound controls (Kendo controls or native HTML controls).\n * Applies styling and behavior rules.\n */\nlet FormFieldComponent = class FormFieldComponent {\n constructor(renderer, localizationService, hostElement) {\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.hostElement = hostElement;\n this.hostClass = true;\n /**\n *\n * Specifies when the Hint messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying hints when the form-bound component state is\n * `valid` or `untouched` and `pristine`.\n * * `always`—Allows full control over the visibility of the hints.\n *\n */\n this.showHints = 'initial';\n /**\n * Specifies the layout orientation of the form field.\n *\n * * The possible values are:\n *\n * * (Default) `vertical`\n * * `horizontal`\n */\n this.orientation = 'vertical';\n /**\n * Specifies when the Error messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying errors when the form-bound component state is\n * `invalid` and `touched` or `dirty`.\n * * `always`—Allows full control over the visibility of the errors.\n *\n */\n this.showErrors = 'initial';\n this.subscriptions = new Subscription();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n }\n get errorClass() {\n if (!this.control) {\n return false;\n }\n return this.control.invalid && (this.control.touched || this.control.dirty);\n }\n get disabledClass() {\n if (!this.control) {\n return false;\n }\n // radiobutton group\n if (this.isRadioControl(this.control)) {\n return false;\n }\n return this.disabledControl() ||\n this.disabledElement() ||\n this.disabledKendoInput();\n }\n set formControls(formControls) {\n this.validateFormControl(formControls);\n this.control = formControls.first;\n }\n /**\n * @hidden\n */\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n /**\n * @hidden\n */\n get hasHints() {\n return this.showHints === 'always' ? true : this.showHintsInitial();\n }\n /**\n * @hidden\n */\n get hasErrors() {\n return this.showErrors === 'always' ? true : this.showErrorsInitial();\n }\n ngAfterViewInit() {\n this.setDescription();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n disabledKendoInput() {\n return this.kendoInput && this.kendoInput.disabled;\n }\n disabledControl() {\n return this.control.disabled;\n }\n disabledElement() {\n const elements = this.controlElementRefs.toArray();\n return elements.every(e => e.nativeElement.hasAttribute('disabled'));\n }\n validateFormControl(formControls) {\n if (isDevMode() && formControls.length !== 1 && !this.isControlGroup(formControls)) {\n throw new Error('The `kendo-formfield` component should contain ' +\n 'only one control of type NgControl with a formControlName(https://angular.io/api/forms/FormControlName)' +\n 'or an ngModel(https://angular.io/api/forms/NgModel) binding.');\n }\n }\n isControlGroup(formControls) {\n if (!formControls.length) {\n return false;\n }\n const name = formControls.first.name;\n return formControls.toArray().every(c => c.name === name && (this.isRadioControl(c)));\n }\n isRadioControl(control) {\n return control.valueAccessor instanceof RadioControlValueAccessor;\n }\n updateDescription() {\n const controls = this.findControlElements();\n if (!controls) {\n return;\n }\n controls.forEach((control) => {\n if (this.errorChildren.length > 0 || this.hintChildren.length > 0) {\n const ariaIds = this.generateDescriptionIds(control);\n this.renderer.setAttribute(control, 'aria-describedby', ariaIds);\n }\n });\n }\n findControlElements() {\n if (!this.controlElementRefs) {\n return;\n }\n // if the control is KendoInput and has focusableId - dropdowns, dateinputs\n if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {\n return [this.hostElement.nativeElement.querySelector(`#${this.kendoInput.focusableId}`)];\n }\n return this.controlElementRefs.map(el => el.nativeElement);\n }\n generateDescriptionIds(control) {\n const ids = new Set();\n if (control.hasAttribute('aria-describedby')) {\n const attributes = control.getAttribute('aria-describedby').split(' ');\n attributes.forEach((attr) => {\n if (attr.includes('kendo-hint-') || attr.includes('kendo-error-')) {\n return;\n }\n ids.add(attr);\n });\n }\n this.hintChildren.forEach((hint) => {\n ids.add(hint.id);\n });\n this.errorChildren.forEach((error) => {\n ids.add(error.id);\n });\n return Array.from(ids).join(' ');\n }\n showHintsInitial() {\n if (!this.control) {\n return true;\n }\n const { valid, untouched, pristine } = this.control;\n return valid || (untouched && pristine);\n }\n showErrorsInitial() {\n if (!this.control) {\n return false;\n }\n const { invalid, dirty, touched } = this.control;\n return invalid && (dirty || touched);\n }\n setDescription() {\n this.updateDescription();\n this.subscriptions.add(this.errorChildren.changes.subscribe(() => this.updateDescription()));\n this.subscriptions.add(this.hintChildren.changes.subscribe(() => this.updateDescription()));\n }\n};\nFormFieldComponent.ɵfac = function FormFieldComponent_Factory(t) { return new (t || FormFieldComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFormFieldComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormFieldComponent, selectors: [[\"kendo-formfield\"]], contentQueries: function FormFieldComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, KendoInput, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgControl, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgControl, 5, ElementRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ErrorComponent, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HintComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formControls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.controlElementRefs = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.errorChildren = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.hintChildren = _t);\n } }, hostVars: 7, hostBindings: function FormFieldComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-form-field\", ctx.hostClass)(\"k-form-field-error\", ctx.errorClass)(\"k-form-field-disabled\", ctx.disabledClass);\n } }, inputs: { showHints: \"showHints\", orientation: \"orientation\", showErrors: \"showErrors\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ])], ngContentSelectors: _c108, decls: 5, vars: 4, consts: [[4, \"ngIf\"]], template: function FormFieldComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c107);\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelementStart(1, \"div\");\n ɵngcc0.ɵɵprojection(2, 1);\n ɵngcc0.ɵɵtemplate(3, FormFieldComponent_ng_content_3_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵtemplate(4, FormFieldComponent_ng_content_4_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-form-field-wrap\", ctx.horizontal);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasHints);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasErrors);\n } }, directives: [ɵngcc3.NgIf], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-form-field'),\n __metadata(\"design:type\", Boolean)\n], FormFieldComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-form-field-error'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FormFieldComponent.prototype, \"errorClass\", null);\n__decorate([\n HostBinding('class.k-form-field-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FormFieldComponent.prototype, \"disabledClass\", null);\n__decorate([\n ContentChildren(NgControl, { descendants: true }),\n __metadata(\"design:type\", QueryList),\n __metadata(\"design:paramtypes\", [QueryList])\n], FormFieldComponent.prototype, \"formControls\", null);\n__decorate([\n ContentChildren(NgControl, { read: ElementRef, descendants: true }),\n __metadata(\"design:type\", QueryList)\n], FormFieldComponent.prototype, \"controlElementRefs\", void 0);\n__decorate([\n ContentChild(KendoInput, { static: true }),\n __metadata(\"design:type\", Object)\n], FormFieldComponent.prototype, \"kendoInput\", void 0);\n__decorate([\n ContentChildren(ErrorComponent, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], FormFieldComponent.prototype, \"errorChildren\", void 0);\n__decorate([\n ContentChildren(HintComponent, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], FormFieldComponent.prototype, \"hintChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"showHints\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"showErrors\", void 0);\nFormFieldComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n LocalizationService,\n ElementRef])\n], FormFieldComponent);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the FormField, Error and Hint components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the FormField module\n * import { FormFieldModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FormFieldModule], // import FormField module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet FormFieldModule = class FormFieldModule {\n};\nFormFieldModule.ɵfac = function FormFieldModule_Factory(t) { return new (t || FormFieldModule)(); };\nFormFieldModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FormFieldModule });\nFormFieldModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Inputs components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { InputsModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, InputsModule], // import Inputs module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet InputsModule = class InputsModule {\n};\nInputsModule.ɵfac = function InputsModule_Factory(t) { return new (t || InputsModule)(); };\nInputsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: InputsModule });\nInputsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule], TextAreaModule, TextBoxModule, SliderModule, RangeSliderModule, SwitchModule, NumericTextBoxModule, MaskedTextBoxModule, ColorPickerModule, CheckBoxModule, RadioButtonModule, FormFieldModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LabelTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoSliderLabelTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoSlider',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.slider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent_1) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent_1) }\n ],\n selector: 'kendo-slider',\n template: `\n \n
\n \n
\n
    \n
\n
\n
\n
\n \n
\n
\n \n \n
\n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { focusableId: [{\n type: Input\n }], animate: [{\n type: Input\n }], showButtons: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], dragHandleTitle: [{\n type: Input\n }], incrementTitle: [{\n type: Input\n }], decrementTitle: [{\n type: Input\n }], draghandle: [{\n type: ViewChild,\n args: ['draghandle', { static: true }]\n }], decreaseButton: [{\n type: ViewChild,\n args: ['decreaseButton', { static: false }]\n }], increaseButton: [{\n type: ViewChild,\n args: ['increaseButton', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RangeSliderComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoRangeSlider',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rangeslider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RangeSliderComponent_1) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent_1) }\n ],\n selector: 'kendo-rangeslider',\n template: `\n \n\n
\n
\n
    \n
\n
\n
\n
\n \n \n
\n
\n \n
\n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { value: [{\n type: Input\n }], draghandleStart: [{\n type: ViewChild,\n args: ['draghandleStart', { static: true }]\n }], draghandleEnd: [{\n type: ViewChild,\n args: ['draghandleEnd', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwitchComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoSwitch',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.switch' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent_1)\n }\n ],\n selector: 'kendo-switch',\n template: `\n \n\n \n {{onLabelMessage}}\n {{offLabelMessage}}\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-switch']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], checked: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], ieClass: [{\n type: HostBinding,\n args: ['class.k-ie']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], onLabel: [{\n type: Input\n }], offLabel: [{\n type: Input\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaDirective, [{\n type: Directive,\n args: [{\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective_1),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective_1)\n }],\n selector: 'textarea[kendoTextArea]'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Injector }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { elementClass: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }], autofillClass: [{\n type: HostBinding,\n args: ['class.k-autofill']\n }], valueChange: [{\n type: Output\n }], autoSize: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], value: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxContainerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-textbox-container',\n template: `\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-textbox-container']\n }], textareaElementClass: [{\n type: HostBinding,\n args: ['class.k-textarea-wrapper']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], invalidClass: [{\n type: HostBinding,\n args: ['class.k-state-invalid']\n }], id: [{\n type: Input\n }], floatingLabel: [{\n type: Input\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: false }]\n }], textarea: [{\n type: ContentChild,\n args: [TextAreaDirective, { static: false }]\n }], formControl: [{\n type: ContentChild,\n args: [NgControl, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxDirective, [{\n type: Directive,\n args: [{\n selector: 'input[kendoTextBox]',\n providers: [{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective_1)\n }]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }], value: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericTextBoxComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoNumericTextBox',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent_1) }\n ],\n selector: 'kendo-numerictextbox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc4.IntlService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], autoCorrect: [{\n type: Input\n }], decimals: [{\n type: Input\n }], step: [{\n type: Input\n }], spinners: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], changeValueOnScroll: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], format: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-numerictextbox']\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], numericInput: [{\n type: ViewChild,\n args: ['numericInput', { static: true }]\n }], numericWrap: [{\n type: ViewChild,\n args: ['numericWrap', { static: true }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericTextBoxCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-numerictextbox-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskingService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskedTextBoxComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoMaskedTextBox',\n providers: [\n MaskingService,\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1) /* tslint:disable-line */\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1)\n }\n ],\n selector: 'kendo-maskedtextbox',\n template: `\n \n `\n }]\n }], function () { return [{ type: MaskingService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-maskedtextbox']\n }], prompt: [{\n type: Input\n }], promptPlaceholder: [{\n type: Input\n }], includeLiterals: [{\n type: Input\n }], maskOnFocus: [{\n type: Input\n }], maskValidation: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], rules: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], \n /**\n * @hidden\n */\n pasteHandler: [{\n type: HostListener,\n args: ['paste', ['$event']]\n }], \n /**\n * @hidden\n */\n inputHandler: [{\n type: HostListener,\n args: ['input', ['$event']]\n }], value: [{\n type: Input\n }], title: [{\n type: Input\n }], mask: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderTicksComponent, [{\n type: Component,\n args: [{\n selector: '[kendoSliderTicks]',\n template: `\n
  • \n \n \n \n \n \n  \n \n
  • \n\n \n {{ tickTitle(value) }}\n \n `\n }]\n }], function () { return []; }, { wrapperClasses: [{\n type: HostBinding,\n args: ['class']\n }], tickTitle: [{\n type: Input\n }], vertical: [{\n type: Input\n }], step: [{\n type: Input\n }], largeStep: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], tickElements: [{\n type: ViewChildren,\n args: ['tickElement']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SlidersCommonModule, [{\n type: NgModule,\n args: [{\n declarations: [\n SliderTicksComponent,\n LabelTemplateDirective\n ],\n exports: [\n LabelTemplateDirective,\n SliderTicksComponent,\n DraggableModule,\n EventsModule,\n ResizeSensorModule\n ],\n imports: [CommonModule, DraggableModule, EventsModule, ResizeSensorModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SlidersCommonModule, { declarations: function () { return [SliderTicksComponent, LabelTemplateDirective]; }, imports: function () { return [CommonModule, DraggableModule, EventsModule, ResizeSensorModule]; }, exports: function () { return [LabelTemplateDirective, SliderTicksComponent, DraggableModule,\n EventsModule,\n ResizeSensorModule]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedSliderMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-slider-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderModule, [{\n type: NgModule,\n args: [{\n declarations: [\n SliderComponent,\n SliderCustomMessagesComponent,\n LocalizedSliderMessagesDirective\n ],\n exports: [\n SliderComponent,\n SliderCustomMessagesComponent,\n LabelTemplateDirective,\n LocalizedSliderMessagesDirective\n ],\n imports: [CommonModule, SlidersCommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SliderModule, { declarations: function () { return [SliderComponent, SliderCustomMessagesComponent, LocalizedSliderMessagesDirective]; }, imports: function () { return [CommonModule, SlidersCommonModule]; }, exports: function () { return [SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, LocalizedSliderMessagesDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedRangeSliderMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RangeSliderCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-rangeslider-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RangeSliderModule, [{\n type: NgModule,\n args: [{\n declarations: [\n RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective\n ],\n exports: [\n RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective,\n LabelTemplateDirective\n ],\n imports: [CommonModule, SlidersCommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(RangeSliderModule, { declarations: function () { return [RangeSliderComponent, RangeSliderCustomMessagesComponent, LocalizedRangeSliderMessagesDirective]; }, imports: function () { return [CommonModule, SlidersCommonModule]; }, exports: function () { return [RangeSliderComponent, RangeSliderCustomMessagesComponent, LocalizedRangeSliderMessagesDirective, LabelTemplateDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedSwitchMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoSwitchLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwitchCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-switch-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwitchModule, [{\n type: NgModule,\n args: [{\n declarations: [\n SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective\n ],\n exports: [\n SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective\n ],\n imports: [CommonModule, EventsModule, ResizeSensorModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SwitchModule, { declarations: function () { return [SwitchComponent, SwitchCustomMessagesComponent, LocalizedSwitchMessagesDirective]; }, imports: function () { return [CommonModule, EventsModule, ResizeSensorModule]; }, exports: function () { return [SwitchComponent, SwitchCustomMessagesComponent, LocalizedSwitchMessagesDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedNumericTextBoxMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoNumericTextBoxLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericTextBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [\n LocalizedNumericTextBoxMessagesDirective,\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent\n ],\n exports: [\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent\n ],\n imports: [CommonModule, EventsModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NumericTextBoxModule, { declarations: function () { return [LocalizedNumericTextBoxMessagesDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent]; }, imports: function () { return [CommonModule, EventsModule]; }, exports: function () { return [NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskedTextBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [MaskedTextBoxComponent],\n exports: [MaskedTextBoxComponent],\n imports: [CommonModule, EventsModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MaskedTextBoxModule, { declarations: function () { return [MaskedTextBoxComponent]; }, imports: function () { return [CommonModule, EventsModule]; }, exports: function () { return [MaskedTextBoxComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxSuffixTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxSuffixTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxPrefixTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxPrefixTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoTextBox',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textbox' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextBoxComponent_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent_1) }\n ],\n selector: 'kendo-textbox',\n template: `\n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ElementRef }]; }, { focusableId: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], value: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], showSuccessIcon: [{\n type: Input\n }], showErrorIcon: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], inputFocus: [{\n type: Output\n }], inputBlur: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabIndex: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], clearButtonIcon: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], suffixTemplate: [{\n type: ContentChild,\n args: [TextBoxSuffixTemplateDirective, { static: false }]\n }], prefixTemplate: [{\n type: ContentChild,\n args: [TextBoxPrefixTemplateDirective, { static: false }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-textbox-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedTextBoxMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoTextBoxLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InputSeparatorComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-input-separator, kendo-textbox-separator',\n template: ``\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-input-separator']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: [InputSeparatorComponent, TextAreaDirective], exports: [InputSeparatorComponent, TextAreaDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [\n TextBoxDirective,\n TextBoxContainerComponent,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective\n ],\n exports: [\n TextBoxDirective,\n TextBoxContainerComponent,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n EventsModule,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective,\n SHARED_DIRECTIVES\n ],\n imports: [CommonModule, EventsModule, SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TextBoxModule, { declarations: function () { return [TextBoxDirective, TextBoxContainerComponent, TextBoxComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, LocalizedTextBoxMessagesDirective]; }, imports: function () { return [CommonModule, EventsModule, SharedModule]; }, exports: function () { return [TextBoxDirective, TextBoxContainerComponent, TextBoxComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, EventsModule, TextBoxCustomMessagesComponent, LocalizedTextBoxMessagesDirective, InputSeparatorComponent, TextAreaDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoTextArea',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textarea' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent_1) }\n ],\n selector: 'kendo-textarea',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ElementRef }]; }, { focusableId: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }], flow: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], resizable: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], flowCol: [{\n type: HostBinding,\n args: ['class.k-flex-col']\n }], flowRow: [{\n type: HostBinding,\n args: ['class.k-flex-row']\n }], tabIndex: [{\n type: Input\n }], rows: [{\n type: Input\n }], cols: [{\n type: Input\n }], maxlength: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaSuffixComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoTextAreaSuffix',\n selector: 'kendo-textarea-suffix',\n template: ``\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-textarea-suffix']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaModule, [{\n type: NgModule,\n args: [{\n declarations: [\n TextAreaComponent,\n TextAreaSuffixComponent\n ],\n exports: [\n TextAreaComponent,\n EventsModule,\n TextAreaSuffixComponent,\n SHARED_DIRECTIVES\n ],\n imports: [CommonModule, EventsModule, SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TextAreaModule, { declarations: function () { return [TextAreaComponent, TextAreaSuffixComponent]; }, imports: function () { return [CommonModule, EventsModule, SharedModule]; }, exports: function () { return [TextAreaComponent, EventsModule, TextAreaSuffixComponent, InputSeparatorComponent, TextAreaDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorInputComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-colorinput',\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { opacity: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], colorInputClass: [{\n type: HostBinding,\n args: ['class.k-colorgradient-inputs']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], value: [{\n type: Input\n }], formatView: [{\n type: Input\n }], opacityInput: [{\n type: ViewChild,\n args: ['opacityInput', { read: ElementRef, static: false }]\n }], toggleFormatButton: [{\n type: ViewChild,\n args: ['toggleFormatButton', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorGradientComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-colorgradient',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent_1)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ],\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 styles: [`\n .k-clear-color {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n }\n .k-align-self-end {\n height: 140px;\n }\n `]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorgradient']\n }], id: [{\n type: Input\n }], opacity: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], delay: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], format: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], gradientId: [{\n type: HostBinding,\n args: ['attr.id']\n }], value: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], contrastTool: [{\n type: Input\n }], gradientDragHandle: [{\n type: ViewChild,\n args: ['gradientDragHandle', { read: ElementRef, static: false }]\n }], inputs: [{\n type: ViewChild,\n args: ['inputs', { static: false }]\n }], alphaSlider: [{\n type: ViewChild,\n args: ['alphaSlider', { static: false }]\n }], gradientWrapper: [{\n type: ViewChild,\n args: ['gradientWrapper', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPickerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-colorpicker',\n providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }\n ],\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 }], function () { return [{ type: ɵngcc5.PopupService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-colorpicker']\n }], focusableId: [{\n type: Input\n }], view: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], format: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], activeColorClick: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], palette: [{\n type: ViewChild,\n args: ['palette', { read: ElementRef, static: false }]\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], colorGradient: [{\n type: ViewChild,\n args: ['colorGradient', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPaletteService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPaletteComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-colorpalette',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent_1) // tslint:disable-line:no-forward-ref\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent_1)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ],\n template: `\n \n \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ColorPaletteService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }]; }, { id: [{\n type: Input\n }], format: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tileSize: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], cellSelection: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpalette']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], paletteId: [{\n type: HostBinding,\n args: ['attr.id']\n }], value: [{\n type: Input\n }], columns: [{\n type: Input\n }], palette: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], \n /**\n * @hidden\n */\n handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], \n /**\n * @hidden\n */\n handleHostBlur: [{\n type: HostListener,\n args: ['blur']\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPickerCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-colorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedColorPickerMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusOnDomReadyDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoFocusOnDomReady]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContrastValidationComponent, [{\n type: Component,\n args: [{\n selector: '[kendoContrastValidation]',\n template: `\n {{contrastText}}\n \n {{passMessage}}\n \n \n \n {{failMessage}}\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { type: [{\n type: Input\n }], ratio: [{\n type: Input\n }], pass: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContrastComponent, [{\n type: Component,\n args: [{\n selector: '[kendoContrastTool]',\n template: `\n
    \n {{contrastRatioMessage}}: {{formatedRatio}}\n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { value: [{\n type: Input\n }], ratio: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPickerModule, [{\n type: NgModule,\n args: [{\n declarations: [\n PUBLIC_DIRECTIVES,\n INTERNAL_DIRECTIVES\n ],\n exports: [PUBLIC_DIRECTIVES],\n imports: [\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ColorPickerModule, { declarations: function () { return [ColorPickerComponent, ColorPaletteComponent, ColorGradientComponent, LocalizedColorPickerMessagesDirective, ColorPickerCustomMessagesComponent, ColorInputComponent, FocusOnDomReadyDirective, ContrastComponent, ContrastValidationComponent]; }, imports: function () { return [SliderModule, NumericTextBoxModule, CommonModule,\n PopupModule,\n DraggableModule]; }, exports: function () { return [ColorPickerComponent, ColorPaletteComponent, ColorGradientComponent, LocalizedColorPickerMessagesDirective, ColorPickerCustomMessagesComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxDirective, [{\n type: Directive,\n args: [{\n selector: 'input[kendoCheckBox]'\n }]\n }], function () { return []; }, { kendoClass: [{\n type: HostBinding,\n args: ['class.k-checkbox']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [CheckBoxDirective],\n exports: [CheckBoxDirective],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CheckBoxModule, { declarations: function () { return [CheckBoxDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CheckBoxDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadioButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'input[kendoRadioButton]'\n }]\n }], function () { return []; }, { kendoClass: [{\n type: HostBinding,\n args: ['class.k-radio']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadioButtonModule, [{\n type: NgModule,\n args: [{\n declarations: [RadioButtonDirective],\n exports: [RadioButtonDirective],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(RadioButtonModule, { declarations: function () { return [RadioButtonDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [RadioButtonDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ErrorComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-formerror',\n template: `\n \n `\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-error']\n }], align: [{\n type: Input\n }], roleAttribute: [{\n type: HostBinding,\n args: ['attr.role']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HintComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-formhint',\n template: `\n \n `\n }]\n }], function () { return []; }, { align: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-form-hint']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormFieldComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-formfield',\n template: `\n \n
    \n \n \n \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ElementRef }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-field']\n }], showHints: [{\n type: Input\n }], orientation: [{\n type: Input\n }], showErrors: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], errorClass: [{\n type: HostBinding,\n args: ['class.k-form-field-error']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-form-field-disabled']\n }], formControls: [{\n type: ContentChildren,\n args: [NgControl, { descendants: true }]\n }], controlElementRefs: [{\n type: ContentChildren,\n args: [NgControl, { read: ElementRef, descendants: true }]\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }], errorChildren: [{\n type: ContentChildren,\n args: [ErrorComponent, { descendants: true }]\n }], hintChildren: [{\n type: ContentChildren,\n args: [HintComponent, { descendants: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormFieldModule, [{\n type: NgModule,\n args: [{\n declarations: [HintComponent, ErrorComponent, FormFieldComponent],\n exports: [HintComponent, ErrorComponent, FormFieldComponent],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FormFieldModule, { declarations: function () { return [HintComponent, ErrorComponent, FormFieldComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [HintComponent, ErrorComponent, FormFieldComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InputsModule, [{\n type: NgModule,\n args: [{\n exports: [\n TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule\n ],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(InputsModule, { imports: function () { return [CommonModule]; }, exports: function () { return [TextAreaModule, TextBoxModule, SliderModule, RangeSliderModule, SwitchModule, NumericTextBoxModule, MaskedTextBoxModule, ColorPickerModule, CheckBoxModule, RadioButtonModule, FormFieldModule]; } }); })();\n\n\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckBoxModule, ColorInputComponent, ContrastValidationComponent, ContrastComponent, FocusOnDomReadyDirective, ColorGradientLocalizationService, ColorPaletteLocalizationService, ColorPickerLocalizationService, ColorPickerCustomMessagesComponent, ColorPickerMessages, ColorPaletteService, MaskingService, NumericTextBoxMessages, RadioButtonModule, RangeSliderCustomMessagesComponent, RangeSliderMessages, SHARED_DIRECTIVES, SliderCustomMessagesComponent, SliderMessages, SliderBase, SlidersCommonModule, SwitchCustomMessagesComponent, Messages, TextFieldsBase, TextBoxCustomMessagesComponent, TextBoxMessages, SliderComponent, RangeSliderComponent, LabelTemplateDirective, SwitchComponent, TextBoxContainerComponent, TextBoxDirective, TextAreaDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, MaskedTextBoxComponent, InputsModule, SliderTicksComponent, SliderModule, RangeSliderModule, SwitchModule, NumericTextBoxModule, MaskedTextBoxModule, TextBoxModule, TextAreaModule, ColorPickerComponent, ColorPaletteComponent, ColorGradientComponent, ColorPickerModule, ActiveColorClickEvent, CheckBoxDirective, RadioButtonDirective, HintComponent, ErrorComponent, FormFieldComponent, FormFieldModule, TextBoxComponent, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective, TextAreaComponent, TextAreaSuffixComponent, InputSeparatorComponent, SharedModule, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedTextBoxMessagesDirective, LocalizedSliderMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSwitchMessagesDirective };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, ɵɵdefineInjectable, ɵɵinject, LOCALE_ID, Injectable, Inject, Pipe, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { dateFormatNames, dateFieldName, firstDay, format, formatDate, formatNumber, load, numberSymbols, parseDate, parseNumber, splitDateFormat, toString, weekendRange, setData, localeInfo } from '@telerik/kendo-intl';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nconst packageMetadata = {\n name: '@progress/kendo-angular-intl',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1646219037,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DOCS_URL = 'http://www.telerik.com/kendo-angular-ui/components/internationalization/troubleshooting/';\n/**\n * @hidden\n */\nconst errorSolutions = {\n 'NoCurrency': `Solution: ${DOCS_URL}#toc-no-currency`,\n 'NoCurrencyDisplay': `Solution: ${DOCS_URL}#toc-no-currency-display`,\n 'NoCurrencyRegion': `Solution: ${DOCS_URL}#toc-no-currency-region`,\n 'NoDateFieldNames': `Solution: ${DOCS_URL}#toc-no-date-filed-names`,\n 'NoFirstDay': `Solution: ${DOCS_URL}#toc-no-first-day`,\n 'NoGMTInfo': `Solution: ${DOCS_URL}#toc-no-gmt-info`,\n 'NoLocale': `Solution: ${DOCS_URL}#toc-no-locale`,\n 'NoValidCurrency': `Solution: ${DOCS_URL}#toc-no-valid-currency`,\n 'NoWeekData': `Solution: ${DOCS_URL}#toc-no-week-data`\n};\n\nfunction formatMessage(error) {\n const message = error.message;\n const errorSolution = errorSolutions[Object.keys(errorSolutions).filter(key => message.indexOf(key) === 0)[0]];\n return errorSolution ? `${message} ${errorSolution}` : message;\n}\nfunction intlMethod(fn) {\n return function (...values) {\n try {\n return fn.apply(null, values);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n };\n}\n/**\n * @hidden\n */\nconst dateFormatNames$1 = intlMethod(dateFormatNames);\n/**\n * @hidden\n */\nconst dateFieldName$1 = intlMethod(dateFieldName);\n/**\n * @hidden\n */\nconst firstDay$1 = intlMethod(firstDay);\n/**\n * @hidden\n */\nconst format$1 = intlMethod(format);\n/**\n * @hidden\n */\nconst formatDate$1 = intlMethod(formatDate);\n/**\n * @hidden\n */\nconst formatNumber$1 = intlMethod(formatNumber);\n/**\n * @hidden\n */\nconst load$1 = intlMethod(load);\n/**\n * @hidden\n */\nconst numberSymbols$1 = intlMethod(numberSymbols);\n/**\n * @hidden\n */\nconst parseDate$1 = intlMethod(parseDate);\n/**\n * @hidden\n */\nconst parseNumber$1 = intlMethod(parseNumber);\n/**\n * @hidden\n */\nconst splitDateFormat$1 = intlMethod(splitDateFormat);\n/**\n * @hidden\n */\nconst toString$1 = intlMethod(toString);\n/**\n * @hidden\n */\nconst weekendRange$1 = intlMethod(weekendRange);\n/**\n * Sets a pre-built locale.\n *\n * @params data - The pre-built locale data.\n */\nconst setData$1 = (data) => setData(data);\n/**\n * Retrieves the locale data for the specified locale.\n *\n * @params locale - The locale id.\n * @returns data - The locale data.\n */\nconst localeData = (locale) => {\n try {\n return localeInfo(locale);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n};\n\nconst LOCALE_REGEX = /_/g;\n/**\n * @hidden\n */\nfunction cldrServiceFactory(localeId) {\n return new CldrIntlService(localeId);\n}\n/**\n * An abstract base class that implements\n * the Internationalization service methods\n * for the current locale.\n */\nlet IntlService = class IntlService {\n /**\n * @hidden\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new EventEmitter();\n validatePackage(packageMetadata);\n }\n /**\n * Notifies that the service was changed.\n */\n notify() {\n this.changes.emit();\n }\n};\nIntlService.ɵfac = function IntlService_Factory(t) { return new (t || IntlService)(); };\nIntlService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: IntlService, factory: function IntlService_Factory(t) { let r = null; if (t) {\n r = new t();\n }\n else {\n r = cldrServiceFactory(ɵngcc0.ɵɵinject(LOCALE_ID));\n } return r; }, providedIn: 'root' });\nIntlService.ngInjectableDef = ɵɵdefineInjectable({ factory: function IntlService_Factory() { return cldrServiceFactory(ɵɵinject(LOCALE_ID)); }, token: IntlService, providedIn: \"root\" });\nIntlService = __decorate([ __metadata(\"design:paramtypes\", [])\n], IntlService);\n/**\n * The Internationalization service implemented by using\n * the CLDR Database via the `@telerik/kendo-intl` package.\n */\nlet CldrIntlService = class CldrIntlService extends IntlService {\n /**\n * Creates a new instance of the service with the ID of the specified locale.\n *\n * Note that the parts of the locale ID can be separated by either `_` (underscore)\n * or `-` (dash).\n *\n * @param localeId - The default locale ID.\n */\n constructor(localeId) {\n super();\n this.localeId = localeId;\n }\n /**\n * Gets or sets the current locale ID.\n */\n get localeId() {\n return this.locale;\n }\n set localeId(value) {\n // Angular locales use underscore, for example, en_US\n // while IETF BCP-47 specifies a dash.\n // https://tools.ietf.org/html/bcp47\n const locale = value.replace(LOCALE_REGEX, '-');\n if (locale !== this.locale) {\n this.locale = locale;\n this.notify();\n }\n }\n /**\n * Formats a string with placeholders such as\n * `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n format(format$$1, ...values) {\n return format$1(format$$1, values, this.localeId);\n }\n /**\n * Converts an object into a string based on the specified format.\n *\n * @param value - The value to format.\n * @param format - The format to use.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted object.\n */\n toString(value, format$$1, localeId) {\n return toString$1(value, format$$1, localeId || this.localeId);\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted date.\n */\n formatDate(value, format$$1, localeId) {\n return formatDate$1(value, format$$1, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Date` object based on the specified format.\n *\n * @param value - The string to convert.\n * @param format - The format strings or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed date.\n */\n parseDate(value, format$$1, localeId) {\n return parseDate$1(value, format$$1, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Number`.\n *\n * @param value - The string to convert.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed number.\n */\n parseNumber(value, format$$1, localeId) {\n return parseNumber$1(value, localeId || this.localeId, format$$1);\n }\n /**\n * Converts a `Number` into a string based on the specified format.\n *\n * @param value - The number to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted number.\n */\n formatNumber(value, format$$1, localeId) {\n return formatNumber$1(value, format$$1, localeId || this.localeId);\n }\n /**\n * Returns the date names from the current locale based on the option.\n *\n * The available `type` values are:\n * - `era`\n * - `year`\n * - `quarter`\n * - `month`\n * - `week`\n * - `day`\n * - `dayperiod`\n * - `hour`\n * - `minute`\n * - `second`\n * - `zone`\n *\n * The available `nameType` values are:\n * - `wide`\n * - `narrow`\n * - `short`\n *\n * @param options - Detailed configuration for the desired date field name.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n * @returns The localized date field name from the current locale based on the option.\n *\n * @example\n * ```\n * dateFieldName({ type: 'day' }); //returns 'day';\n * dateFieldName({ type: 'day', nameType: 'wide' }); //returns 'day';\n * dateFieldName({ type: 'month', nameType: 'short' }); //returns 'mo.';\n * dateFieldName({ type: 'month', nameType: 'wide' }); //returns 'month';\n * ```\n */\n dateFieldName(options, localeId) {\n return dateFieldName$1(options, localeId || this.localeId);\n }\n /**\n * Returns a localized date field name based on specific dateFieldName options.\n *\n * The available type values are:\n * - `day`\n * - `dayperiod`\n * - `months`\n * - `quarters`\n * - `eras`\n *\n * @param options - Detailed configuration for the desired date format.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n */\n dateFormatNames(options, localeId) {\n return dateFormatNames$1(localeId || this.localeId, options);\n }\n /**\n * Splits the date format into objects containing information about each part of the pattern.\n *\n * @param format The format string or options.\n * @param localeId The optional locale id. If not specified, the `\"en\"` locale id is used.\n * @returns The date format parts.\n */\n splitDateFormat(format$$1, localeId) {\n return splitDateFormat$1(format$$1, localeId || this.localeId);\n }\n /**\n * Returns the number symbols from the current locale based on the option.\n *\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The number symbols from the current locale.\n */\n numberSymbols(localeId) {\n return numberSymbols$1(localeId || this.localeId);\n }\n /**\n * Returns the first day index starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The index of the first day of the week (0 == Sunday).\n */\n firstDay(localeId) {\n return firstDay$1(localeId || this.localeId);\n }\n /**\n * Returns the start and end index of the locale weekend starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The the start and end index of the locale weekend (0 == Sunday).\n */\n weekendRange(localeId) {\n return weekendRange$1(localeId || this.localeId);\n }\n};\nCldrIntlService.ɵfac = function CldrIntlService_Factory(t) { return new (t || CldrIntlService)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nCldrIntlService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CldrIntlService, factory: function (t) { return CldrIntlService.ɵfac(t); } });\nCldrIntlService = __decorate([ __param(0, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [String])\n], CldrIntlService);\n\nconst isNumeric = (value) => !isNaN(value - parseFloat(value));\nconst ɵ0 = isNumeric;\n/**\n * Formats a date value to a string based on the requested format.\n * This pipe uses the [IntlService]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
      \n *
    • {{date | kendoDate }}
    • \n *
    • {{milliseconds | kendoDate: 'M/dd/yyy' }}
    • \n *
    • {{stringDate | kendoDate: 'G' }}
    • \n *
    \n * ```\n */\nlet DatePipe = class DatePipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - (Optional) The ID of the locale which will be used instead of the default one.\n * @return - The formatted date.\n */\n transform(value, format$$1 = \"\", localeId) {\n value = this.normalize(value);\n if (value) {\n return this.intlService.formatDate(value, format$$1, localeId);\n }\n return value;\n }\n normalize(value) {\n if (value && typeof value === 'string') {\n value = this.intlService.parseDate(value);\n }\n else if (value && isNumeric(value)) {\n value = new Date(parseFloat(value));\n }\n return value;\n }\n};\nDatePipe.ɵfac = function DatePipe_Factory(t) { return new (t || DatePipe)(ɵngcc0.ɵɵdirectiveInject(IntlService, 16)); };\nDatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"kendoDate\", type: DatePipe, pure: true });\nDatePipe = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], DatePipe);\n\n/**\n * Formats a number value to a string based on the requested format.\n * This pipe uses the [`IntlService`]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
      \n *
    • {{decimal | kendoNumber:'c' }}
    • \n *
    • {{stringNumber | kendoNumber:'p' }}
    • \n *
    • {{int | kendoNumber:'##.00' }}
    • \n *
    \n * ```\n */\nlet NumberPipe = class NumberPipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Number` object into a string based on the specified format.\n * If no format is provided, the value is formatted as decimal number using the\n * [`\"n\"`](https://github.com/telerik/kendo-intl/blob/master/docs/num-formatting/index.md#standard) format.\n *\n * @param value - The numer that will be formatted.\n * @param format - The format string or options.\n * @param localeId - (Optional) The locale ID that will be used in place of the default one.\n * @return - The formatted number.\n */\n transform(value, format$$1, localeId) {\n if (typeof value === 'string') {\n value = this.intlService.parseNumber(value);\n }\n if (value !== null && value !== undefined) {\n return this.intlService.formatNumber(value, format$$1, localeId);\n }\n return value;\n }\n};\nNumberPipe.ɵfac = function NumberPipe_Factory(t) { return new (t || NumberPipe)(ɵngcc0.ɵɵdirectiveInject(IntlService, 16)); };\nNumberPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"kendoNumber\", type: NumberPipe, pure: true });\nNumberPipe = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], NumberPipe);\n\nconst pipes = [\n DatePipe,\n NumberPipe\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}docs/ts/latest/guide/ngmodule.html)\n * definition for the Intl services.\n */\nlet IntlModule = class IntlModule {\n};\nIntlModule.ɵfac = function IntlModule_Factory(t) { return new (t || IntlModule)(); };\nIntlModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: IntlModule });\nIntlModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IntlService, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: cldrServiceFactory,\n deps: [LOCALE_ID]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CldrIntlService, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePipe, [{\n type: Pipe,\n args: [{\n name: 'kendoDate'\n }]\n }], function () { return [{ type: IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumberPipe, [{\n type: Pipe,\n args: [{\n name: 'kendoNumber'\n }]\n }], function () { return [{ type: IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IntlModule, [{\n type: NgModule,\n args: [{\n declarations: [pipes],\n exports: [pipes]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(IntlModule, { declarations: [DatePipe, NumberPipe], exports: [DatePipe, NumberPipe] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { cldrServiceFactory, IntlService, CldrIntlService, DatePipe, ɵ0, NumberPipe, IntlModule, dateFormatNames$1 as dateFormatNames, dateFieldName$1 as dateFieldName, firstDay$1 as firstDay, format$1 as format, formatDate$1 as formatDate, formatNumber$1 as formatNumber, load$1 as load, numberSymbols$1 as numberSymbols, parseDate$1 as parseDate, parseNumber$1 as parseNumber, splitDateFormat$1 as splitDateFormat, toString$1 as toString, weekendRange$1 as weekendRange, setData$1 as setData, localeData };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __param, __metadata } from 'tslib';\nimport { Injectable, InjectionToken, Inject, Optional } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { skip, map, tap } from 'rxjs/operators';\n\n/* tslint:disable:max-line-length */\n/**\n * A base class for a service that returns localized messages.\n *\n * For more information, refer to the section on [using the message service]({% slug messages_l10n %}#toc-using-the-message-service).\n */\nimport * as ɵngcc0 from '@angular/core';\nlet MessageService = class MessageService {\n /* tslint:disable:max-line-length */\n /**\n * A base class for a service that returns localized messages.\n *\n * For more information, refer to the section on [using the message service]({% slug messages_l10n %}#toc-using-the-message-service).\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new BehaviorSubject({ rtl: undefined });\n }\n /**\n * Notifies the components that the messages were changed.\n *\n * @param rtl - (Optional) A new value for the [text direction token]({% slug api_l10n_rtl %}).\n */\n notify(rtl) {\n this.changes.next({ rtl });\n }\n /**\n * Returns a localized message for the supplied key.\n *\n * @param key - The message key. For example, `\"kendo.grid.noRecords\"`.\n * @return - The localized message for this key or `undefined` if not found.\n */\n get(key) {\n return undefined;\n }\n};\nMessageService.ɵfac = function MessageService_Factory(t) { return new (t || MessageService)(); };\nMessageService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MessageService, factory: function (t) { return MessageService.ɵfac(t); } });\n\n/**\n * Base class that acts as a component messages container.\n *\n * For internal use.\n * @hidden\n */\nclass ComponentMessages {\n get override() {\n return false;\n }\n ngOnChanges(changes) {\n this.register(changes);\n if (Object.keys(changes).some(field => !changes[field].isFirstChange())) {\n this.service.notifyChanges();\n }\n }\n ngOnInit() {\n this.subscription = this.service.changes.pipe(skip(1)).subscribe(() => this.register(this));\n }\n register(changes) {\n const keys = Object.keys(changes);\n keys.forEach(key => this.service.register(key, this[key], this.override));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nComponentMessages.ɵfac = function ComponentMessages_Factory(t) { return new (t || ComponentMessages)(); };\nComponentMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ComponentMessages, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n\n/**\n * A token that specifies the text direction of Kendo UI for Angular components.\n *\n * @example\n * {% embed_file rtl/app.module.ts preview %}\n * {% embed_file rtl/app.component.ts %}\n * {% embed_file shared/main.ts hidden %}\n *\n */\nconst RTL = new InjectionToken(\"Kendo UI Right-to-Left token\");\n\n/**\n * Localization prefix for the component messages.\n *\n * For internal use.\n * @hidden\n */\nconst L10N_PREFIX = new InjectionToken('Localization key prefix');\n/**\n * Component localization service.\n *\n * For internal use.\n * @hidden\n */\nlet LocalizationService = class LocalizationService {\n constructor(prefix, messageService, _rtl) {\n this.prefix = prefix;\n this.messageService = messageService;\n this._rtl = _rtl;\n this.changes = new BehaviorSubject({ rtl: this._rtl });\n this.dictionary = {};\n if (messageService) {\n this.subscription = messageService.changes\n .pipe(map(({ rtl }) => rtl !== undefined ? rtl : this._rtl), tap(rtl => this._rtl = rtl))\n .subscribe(rtl => {\n this.dictionary = {};\n this.changes.next({ rtl });\n });\n }\n }\n get rtl() {\n return this._rtl;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n get(shortKey) {\n const key = this.key(shortKey);\n return this.dictionary[key];\n }\n register(shortKey, value, override = false) {\n const key = this.key(shortKey);\n let message = value;\n if (!override) {\n if (this.dictionary.hasOwnProperty(key)) {\n return;\n }\n message = this.defaultValue(key, value);\n }\n this.dictionary[key] = message;\n }\n notifyChanges() {\n this.changes.next({ rtl: this.rtl });\n }\n key(shortKey) {\n return this.prefix + '.' + shortKey;\n }\n defaultValue(key, value) {\n if (!this.messageService) {\n return value;\n }\n const alt = this.messageService.get(key);\n return (alt === undefined) ? value : alt;\n }\n};\nLocalizationService.ɵfac = function LocalizationService_Factory(t) { return new (t || LocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8)); };\nLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LocalizationService, factory: function (t) { return LocalizationService.ɵfac(t); } });\nLocalizationService = __decorate([ __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean])\n], LocalizationService);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MessageService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizationService, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: MessageService, decorators: [{\n type: Optional\n }] }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MessageService, ComponentMessages, L10N_PREFIX, LocalizationService, RTL };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, Rect, LinearGradient } from \"../drawing\";\nimport { encodeBase64 } from \"../util\";\n\nconst browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\nconst KENDO_BULLET_TYPE = 'data-kendo-bullet-type';\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nconst inBrowser = typeof window !== 'undefined';\nconst microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nclass TextRect extends Text {\n constructor(str, rect, options) {\n super(str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n rect() {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n }\n rawBBox() {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n }\n}\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n}\n\n// clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n const clone = (function dive(node){\n const clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (let i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n const canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach((canvas, i) => {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n const orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach((el, i) => {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n let page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n const el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\nfunction drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n}\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n if (color) {\n let match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n var done = false;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n\n if (!pending) {\n next();\n }\n\n function next() {\n if (!done && --pending <= 0) {\n callback();\n done = true;\n }\n }\n}\n\nfunction cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n let decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n let color = getPropertyValue(style, \"text-decoration-color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n if (name == \"underline\") {\n let offset = getPropertyValue(style, \"text-underline-offset\");\n if (offset != \"auto\") {\n nodeInfo[\"underline-offset\"] = parseFloat(offset);\n }\n }\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n if (transform == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n let fake = [];\n function pseudo(kind, place) {\n let style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n let psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n let saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n const r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function(box){\n const g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group) && !maybeRenderBullet(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform(path, transform);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n bullet.innerHTML = ' ';\n bullet.setAttribute(KENDO_BULLET_TYPE, listStyleType);\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n group.append(wrap);\n\n return true;\n}\n\nfunction maybeRenderBullet(element, group) {\n const bulletType = element.getAttribute(KENDO_BULLET_TYPE);\n\n if (!bulletType) {\n return false;\n }\n\n var box = element.getBoundingClientRect();\n const color = getComputedStyle(element).color;\n\n if (bulletType === 'square') {\n const rectSize = box.height / 5;\n group.append(new Rect(new geo.Rect([\n box.right - rectSize,\n box.top + box.height / 2.1\n ], [rectSize, rectSize])).fill(color).stroke(color));\n } else {\n const radius = box.height / 7;\n const center = [\n box.right - radius,\n box.top + (box.height + radius) / 2\n ];\n const circle = new Circle(new geo.Circle(center, radius));\n if (bulletType === 'circle') {\n circle.stroke(color, 0.5);\n } else {\n circle.fill(color).stroke(null);\n }\n group.append(circle);\n }\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new geo.Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction serializeSVG(element) {\n const serializer = new window.XMLSerializer();\n let xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n const doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n const svg = doc.documentElement;\n const box = getContentBox(element);\n svg.setAttribute(\"width\", box.width);\n svg.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg);\n }\n\n return xml;\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n let xml = serializeSVG(element);\n let dataURL = `data:image/svg+xml;base64,${encodeBase64(xml)}`;\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0 || isNaN(fontSize)) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var underlineOffset = nodeInfo[\"underline-offset\"];\n\n if (underline) {\n forEachRect(decorateUnder);\n }\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (lineThrough || overline) {\n forEachRect(decorateOver);\n }\n\n return; // only function declarations after this line\n\n function forEachRect(callback) {\n range.selectNode(node);\n let clientRects = slice(range.getClientRects());\n\n forEachRect = (cb) => clientRects.forEach(cb);\n forEachRect(callback);\n }\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, l => l.toUpperCase());\n break;\n }\n\n var text = new TextRect(\n str, new geo.Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function drawTextLine(lineWidth, textBox, color, ypos) {\n if (color) {\n var path = new Path({ stroke: {\n width: lineWidth,\n color: color\n }});\n\n ypos -= lineWidth;\n path.moveTo(textBox.left, ypos)\n .lineTo(textBox.right, ypos);\n group.append(path);\n }\n }\n\n function decorateOver(box) {\n let width = fontSize / 12;\n drawTextLine(width, box, lineThrough, box.bottom - box.height / 2.7);\n drawTextLine(width, box, overline, box.top);\n }\n\n function decorateUnder(box) {\n let width = fontSize / 12;\n let underlinePos = box.bottom;\n if (underlineOffset != null) {\n underlinePos += underlineOffset;\n } else {\n underlinePos += width; // for \"auto\" it seems better to add line width\n }\n drawTextLine(width, box, underline, underlinePos);\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nexport { drawDOM, drawText, getFontFaces };\n","export default function template() {\n throw new Error(\"Template implementation missing.\");\n}\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __param, __metadata } from 'tslib';\nimport { Directive, Optional, TemplateRef, Input, Component, ContentChild, ElementRef, NgModule } from '@angular/core';\nimport { drawDOM, exportPDF } from '@progress/kendo-drawing';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { validatePackage } from '@progress/kendo-licensing';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"*\"];\nconst packageMetadata = {\n name: '@progress/kendo-angular-pdf-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1646219273,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nlet PDFExportTemplateDirective = class PDFExportTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nPDFExportTemplateDirective.ɵfac = function PDFExportTemplateDirective_Factory(t) { return new (t || PDFExportTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nPDFExportTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PDFExportTemplateDirective, selectors: [[\"\", \"kendoPDFTemplate\", \"\"]] });\nPDFExportTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], PDFExportTemplateDirective);\n\nconst FIELDS = ['bottom', 'left', 'right', 'top'];\n/**\n * Represents the Kendo UI PDFMargin component for Angular.\n */\nlet PDFExportMarginComponent = class PDFExportMarginComponent {\n /**\n * @hidden\n */\n get options() {\n const options = {};\n for (let idx = 0; idx < FIELDS.length; idx++) {\n const field = FIELDS[idx];\n const value = this[field];\n if (typeof value !== 'undefined') {\n options[field] = value;\n }\n }\n return options;\n }\n};\nPDFExportMarginComponent.ɵfac = function PDFExportMarginComponent_Factory(t) { return new (t || PDFExportMarginComponent)(); };\nPDFExportMarginComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PDFExportMarginComponent, selectors: [[\"kendo-pdf-export-margin\"]], inputs: { left: \"left\", top: \"top\", right: \"right\", bottom: \"bottom\" }, decls: 0, vars: 0, template: function PDFExportMarginComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"left\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"top\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"right\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"bottom\", void 0);\n\n/**\n * @hidden\n */\nconst compileTemplate = (templateRef) => {\n const context = {};\n let embeddedView = templateRef.createEmbeddedView(context);\n const result = (data) => {\n Object.assign(context, data);\n embeddedView.detectChanges();\n const templateWrap = document.createElement('span');\n embeddedView.rootNodes.forEach((rootNode) => {\n templateWrap.appendChild(rootNode.cloneNode(true));\n });\n return templateWrap;\n };\n result.destroy = () => {\n embeddedView.destroy();\n embeddedView = null;\n };\n return result;\n};\n\n/**\n * Represents the [Kendo UI PDF Export component for Angular]({% slug overview_pdfexport %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    \n *\n * \n * Content goes here\n * \n * `\n * })\n * export class AppComponent {\n * }\n * ```\n */\nlet PDFExportComponent = class PDFExportComponent {\n constructor(element) {\n this.element = element;\n /**\n * The creator of the PDF document.\n * @default \"Kendo UI PDF Generator\"\n */\n this.creator = 'Kendo UI PDF Generator';\n /**\n * Specifies the name of the exported PDF file.\n * @default \"Export.pdf\"\n */\n this.fileName = 'export.pdf';\n validatePackage(packageMetadata);\n }\n get drawMargin() {\n const marginComponent = this.marginComponent;\n let margin = this.margin;\n if (marginComponent) {\n margin = Object.assign(margin || {}, marginComponent.options);\n }\n return margin;\n }\n /**\n * Saves the content as a PDF file with the specified name.\n * @param fileName - The name of the exported file.\n */\n saveAs(fileName = this.fileName) {\n this.save(this.element.nativeElement, fileName);\n }\n /**\n * Exports the content as a `Group` for further processing.\n *\n * @return - The root group of the exported scene.\n */\n export() {\n return this.exportElement(this.element.nativeElement);\n }\n save(element, fileName) {\n this.exportElement(element)\n .then(group => this.exportGroup(group, this.pdfOptions()))\n .then(dataUri => this.saveDataUri(dataUri, fileName, this.saveOptions()));\n }\n exportElement(element) {\n const promise = this.drawElement(element, this.drawOptions());\n const cleanup = this.cleanup.bind(this);\n promise.then(cleanup, cleanup);\n return promise;\n }\n cleanup() {\n if (this.pageTemplate) {\n this.pageTemplate.destroy();\n delete this.pageTemplate;\n }\n }\n drawOptions() {\n if (this.pageTemplateDirective) {\n this.pageTemplate = compileTemplate(this.pageTemplateDirective.templateRef);\n }\n return {\n avoidLinks: this.avoidLinks,\n forcePageBreak: this.forcePageBreak,\n keepTogether: this.keepTogether,\n margin: this.drawMargin,\n paperSize: this.paperSize,\n landscape: this.landscape,\n repeatHeaders: this.repeatHeaders,\n scale: this.scale,\n template: this.pageTemplate\n };\n }\n pdfOptions() {\n return {\n autoPrint: this.autoPrint,\n author: this.author,\n creator: this.creator,\n date: this.date,\n imgDPI: this.imageResolution,\n keywords: this.keywords,\n landscape: this.landscape,\n margin: this.drawMargin,\n multiPage: true,\n paperSize: this.paperSize,\n producer: this.producer,\n subject: this.subject,\n title: this.title\n };\n }\n saveOptions() {\n return {\n forceProxy: this.forceProxy,\n proxyData: this.proxyData,\n proxyTarget: this.proxyTarget,\n proxyURL: this.proxyURL\n };\n }\n drawElement(element, options) {\n return drawDOM(element, options);\n }\n exportGroup(group, options) {\n return exportPDF(group, options);\n }\n saveDataUri(dataUri, fileName, options) {\n saveAs(dataUri, fileName, options);\n }\n};\nPDFExportComponent.ɵfac = function PDFExportComponent_Factory(t) { return new (t || PDFExportComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPDFExportComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PDFExportComponent, selectors: [[\"kendo-pdf-export\"]], contentQueries: function PDFExportComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, PDFExportTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PDFExportMarginComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.pageTemplateDirective = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.marginComponent = _t.first);\n } }, inputs: { creator: \"creator\", fileName: \"fileName\", autoPrint: \"autoPrint\", author: \"author\", avoidLinks: \"avoidLinks\", forcePageBreak: \"forcePageBreak\", keepTogether: \"keepTogether\", date: \"date\", imageResolution: \"imageResolution\", forceProxy: \"forceProxy\", keywords: \"keywords\", landscape: \"landscape\", margin: \"margin\", paperSize: \"paperSize\", repeatHeaders: \"repeatHeaders\", scale: \"scale\", proxyData: \"proxyData\", proxyURL: \"proxyURL\", proxyTarget: \"proxyTarget\", producer: \"producer\", subject: \"subject\", title: \"title\" }, ngContentSelectors: _c0, decls: 2, vars: 0, template: function PDFExportComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n } }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"autoPrint\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"author\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"avoidLinks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"forcePageBreak\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"keepTogether\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"creator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], PDFExportComponent.prototype, \"date\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PDFExportComponent.prototype, \"imageResolution\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"fileName\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"forceProxy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"keywords\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"landscape\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"paperSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"repeatHeaders\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PDFExportComponent.prototype, \"scale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"proxyData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"proxyURL\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"proxyTarget\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"producer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"subject\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"title\", void 0);\n__decorate([\n ContentChild(PDFExportTemplateDirective, { static: false }),\n __metadata(\"design:type\", PDFExportTemplateDirective)\n], PDFExportComponent.prototype, \"pageTemplateDirective\", void 0);\n__decorate([\n ContentChild(PDFExportMarginComponent, { static: false }),\n __metadata(\"design:type\", PDFExportMarginComponent)\n], PDFExportComponent.prototype, \"marginComponent\", void 0);\nPDFExportComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef])\n], PDFExportComponent);\n\nconst COMPONENT_DIRECTIVES = [\n PDFExportComponent,\n PDFExportMarginComponent,\n PDFExportTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the PDF Export directive.\n */\nlet PDFExportModule = class PDFExportModule {\n};\nPDFExportModule.ɵfac = function PDFExportModule_Factory(t) { return new (t || PDFExportModule)(); };\nPDFExportModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PDFExportModule });\nPDFExportModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoPDFTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportMarginComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export-margin',\n template: ``\n }]\n }], null, { left: [{\n type: Input\n }], top: [{\n type: Input\n }], right: [{\n type: Input\n }], bottom: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export',\n template: `
    `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { creator: [{\n type: Input\n }], fileName: [{\n type: Input\n }], autoPrint: [{\n type: Input\n }], author: [{\n type: Input\n }], avoidLinks: [{\n type: Input\n }], forcePageBreak: [{\n type: Input\n }], keepTogether: [{\n type: Input\n }], date: [{\n type: Input\n }], imageResolution: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], keywords: [{\n type: Input\n }], landscape: [{\n type: Input\n }], margin: [{\n type: Input\n }], paperSize: [{\n type: Input\n }], repeatHeaders: [{\n type: Input\n }], scale: [{\n type: Input\n }], proxyData: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], proxyTarget: [{\n type: Input\n }], producer: [{\n type: Input\n }], subject: [{\n type: Input\n }], title: [{\n type: Input\n }], pageTemplateDirective: [{\n type: ContentChild,\n args: [PDFExportTemplateDirective, { static: false }]\n }], marginComponent: [{\n type: ContentChild,\n args: [PDFExportMarginComponent, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PDFExportModule, { declarations: [PDFExportComponent, PDFExportMarginComponent, PDFExportTemplateDirective], exports: [PDFExportComponent, PDFExportMarginComponent, PDFExportTemplateDirective] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PDFExportComponent, PDFExportModule, PDFExportMarginComponent, PDFExportTemplateDirective, compileTemplate };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","import point from './align-point';\n\nconst align = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, margin = {} } = options;\n const anchorHorizontal = anchorAlign.horizontal;\n const anchorVertical = anchorAlign.vertical;\n const elementHorizontal = elementAlign.horizontal;\n const elementVertical = elementAlign.vertical;\n\n let horizontalMargin = margin.horizontal || 0;\n let verticalMargin = margin.vertical || 0;\n\n let top = anchorRect.top;\n let left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nconst getWindow = (element) => ownerDocument(element).defaultView;\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nconst getDocument = (element) => ownerDocument(element).documentElement;\n\nexport default getDocument;\n","let cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n const div = document.createElement(\"div\");\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n const win = wnd(element);\n const document = getDocument(element);\n const result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import windowViewport from './window-viewport';\n\nconst boundingOffset = (element) => {\n if (!element.getBoundingClientRect) {\n const viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n const { bottom, left, right, top } = element.getBoundingClientRect();\n\n return {\n bottom,\n left,\n right,\n top\n };\n};\n\nexport default boundingOffset;\n","const rectOfHiddenElement = (element) => {\n const { display, left, position } = element.style;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n const rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nconst offset = (element) => {\n let rect = element.getBoundingClientRect();\n let { left, top } = rect;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","export default (element, until) => {\n const result = [];\n let next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n const documentElement = docElement(element);\n const win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","import scrollPosition from './scroll-position';\n\nexport default (element) => {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import documentElement from './document';\n\nconst offsetParent = (element) => {\n let offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default (offsetParentElement, element) => ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n);\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n const parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default (element, parent, scale = 1) => {\n const offsetParentElement = parent ? offsetParent(parent) : null;\n const { top, left, height, width } = position(element, offsetParentElement);\n const { x, y } = offsetParentScrollPosition(offsetParentElement, element);\n const ownerDocument = element.ownerDocument;\n const positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nconst position = (element, parent) => {\n const win = wnd(element);\n const elementStyles = win.getComputedStyle(element);\n const offset = offsetRect(element);\n const parentElement = parent || offsetParent(element);\n\n const ownerDocument = element.ownerDocument;\n const useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n let parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n const parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\",\n \"none\": \"none\"\n};\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nconst fit = function(position, size, viewPortSize) {\n let output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nconst flip = function({ offset, size, anchorSize, viewPortSize, anchorAlignPoint, elementAlignPoint, margin }) {\n let output = 0;\n\n const isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n const isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n const marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n const isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nconst restrictToView = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, collisions, viewPort, margin = {} } = options;\n const { top: elementTop, left: elementLeft, height: elementHeight, width: elementWidth } = elementRect;\n const { height: viewPortHeight, width: viewPortWidth } = viewPort;\n const horizontalMargin = margin.horizontal || 0;\n const verticalMargin = margin.vertical || 0;\n\n let left = 0;\n let top = 0;\n\n const isVerticalFit = collisions.vertical === collision.fit;\n const isHorizontalFit = collisions.horizontal === collision.fit;\n const isVerticalFlip = collisions.vertical === collision.flip;\n const isHorizontalFlip = collisions.horizontal === collision.flip;\n\n if (isVerticalFit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (isHorizontalFit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n\n const flippedVertical = isVerticalFlip && top !== 0;\n const flippedHorizontal = isHorizontalFlip && left !== 0;\n const fittedVertical = isVerticalFit && top !== 0;\n const fittedHorizontal = isHorizontalFit && left !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n fitted: fittedVertical || fittedHorizontal,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n fit: {\n horizontal: fittedHorizontal,\n vertical: fittedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","export default (element) => {\n const result = [];\n\n let sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default (anchor, container) => {\n const parentElements = parents(anchor);\n let containerElement = container;\n let siblingElements;\n let result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n (list, p) => list.concat(siblingElements.filter(s => s === p)),\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n\n return rect;\n};\n\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) { return rect; }\n\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n\n return result;\n};\n\nfunction memoize(fun) {\n let result;\n let called = false;\n\n return (...args) => {\n if (called) {\n return result;\n }\n\n result = fun(...args);\n called = true;\n return result;\n };\n}\n\nconst hasRelativeStackingContext = memoize((elementSource) => {\n if (!canUseDOM()) { return false; }\n\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n const currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n if (!currentDocument || !currentDocument.body) { return false; }\n\n const top = 10;\n const parent = currentDocument.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n\n currentDocument.body.appendChild(parent);\n\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n currentDocument.body.removeChild(parent);\n\n return isDifferent;\n});\n\nconst canUseDOM = () => Boolean(\n // from fbjs\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nconst utils = {\n eitherRect,\n scaleRect,\n removeStackingOffset,\n hasRelativeStackingContext,\n canUseDOM\n};\n\nexport default utils;","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport { __decorate, __param, __metadata } from 'tslib';\nimport { Injectable, InjectionToken, Inject, Optional, NgZone, EventEmitter, isDevMode, Input, Output, ViewChild, ElementRef, Component, Renderer2, TemplateRef, ApplicationRef, ComponentFactoryResolver, Injector, NgModule } from '@angular/core';\nimport { siblingContainer, parents, addScroll, align, boundingOffset, offset, positionWithScroll, removeScroll, restrictToView, scrollPosition, getWindowViewPort } from '@progress/kendo-popup-common';\nimport { isDocumentAvailable, hasObservers, ResizeSensorComponent, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { fromEvent, merge, from } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport { style, animate, AnimationBuilder } from '@angular/animations';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/animations';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-common';\n\nconst _c0 = [\"container\"];\nfunction PopupComponent_ng_template_3_Template(rf, ctx) { }\nconst _c1 = [\"*\"];\nconst eitherRect = (rect, offset$$1) => {\n if (!rect) {\n return { height: 0, left: offset$$1.left, top: offset$$1.top, width: 0 };\n }\n return rect;\n};\n/**\n * @hidden\n */\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst isDifferentOffset = (oldOffset, newOffset) => {\n const { left: oldLeft, top: oldTop } = oldOffset;\n const { left: newLeft, top: newTop } = newOffset;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst OVERFLOW_REGEXP = /auto|scroll/;\nconst overflowElementStyle = (element) => {\n return `${element.style.overflow}${element.style.overflowX}${element.style.overflowY}`;\n};\nconst overflowComputedStyle = (element) => {\n const styles = window.getComputedStyle(element);\n return `${styles.overflow}${styles.overflowX}${styles.overflowY}`;\n};\nconst overflowStyle = (element) => {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n/**\n * @hidden\n */\nconst scrollableParents = (element) => {\n const parentElements = [];\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return parentElements;\n }\n let parent = element.parentElement;\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n parent = parent.parentElement;\n }\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\nconst FRAME_DURATION = 1000 / 60; //1000ms divided by 60fps\nfunction memoize(fun) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fun(...args);\n called = true;\n return result;\n };\n}\nconst ɵ3 = () => {\n if (!isDocumentAvailable() && document.body !== null) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n};\n/**\n * @hidden\n */\nconst hasRelativeStackingContext = memoize(ɵ3);\n/**\n * @hidden\n */\nconst zIndex = (anchor, container) => {\n if (!anchor || !isDocumentAvailable() || !isWindowAvailable()) {\n return null;\n }\n const sibling = siblingContainer(anchor, container);\n if (!sibling) {\n return null;\n }\n const result = [anchor].concat(parents(anchor, sibling)).reduce((index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n }, 0);\n return result ? (result + 1) : null;\n};\n/**\n * @hidden\n */\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nconst STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n/**\n * @hidden\n */\nlet DOMService = class DOMService {\n addOffset(current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n }\n addScroll(rect, scroll) {\n return addScroll(rect, scroll);\n }\n align(settings) {\n return align(settings);\n }\n boundingOffset(el) {\n return boundingOffset(el);\n }\n getFontStyles(el) {\n const window = this.getWindow();\n if (!window || !el) {\n return [];\n }\n const computedStyles = window.getComputedStyle(el);\n return STYLES.map(font => ({ key: font, value: computedStyles[font] }));\n }\n getWindow() {\n return isWindowAvailable() ? window : null;\n }\n hasOffsetParent(el) {\n if (!el) {\n return false;\n }\n return !!this.nativeElement(el).offsetParent;\n }\n offset(el) {\n if (!el) {\n return null;\n }\n return offset(el);\n }\n offsetAtPoint(el, currentLocation) {\n if (!el) {\n return null;\n }\n const element = this.nativeElement(el);\n const { left, top, transition } = element.style;\n element.style.transition = 'none';\n element.style.left = `${currentLocation.left}px`;\n element.style.top = `${currentLocation.top}px`;\n const currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n // prevents elements with transition to be animated because of the change\n // tslint:disable-next-line:no-unused-expression\n element.offsetHeight;\n element.style.transition = transition;\n return currentOffset;\n }\n nativeElement(el) {\n if (!el) {\n return null;\n }\n return el.nativeElement || el;\n }\n position(element, popup, scale = 1) {\n if (!element || !popup) {\n return null;\n }\n return positionWithScroll(element, this.nativeElement(popup), scale);\n }\n removeScroll(rect, scroll) {\n return removeScroll(rect, scroll);\n }\n restrictToView(settings) {\n return restrictToView(settings);\n }\n scrollPosition(el) {\n return scrollPosition(this.nativeElement(el));\n }\n scrollableParents(el) {\n return scrollableParents(el);\n }\n stackingElementOffset(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return null;\n }\n return offset(relativeContextElement);\n }\n stackingElementScroll(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return { x: 0, y: 0 };\n }\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n }\n getRelativeContextElement(el) {\n if (!el || !hasRelativeStackingContext()) {\n return null;\n }\n let parent = this.nativeElement(el).parentElement;\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n return null;\n }\n useRelativePosition(el) {\n return !!this.getRelativeContextElement(el);\n }\n windowViewPort(el) {\n return getWindowViewPort(this.nativeElement(el));\n }\n zIndex(anchor, container) {\n return zIndex(anchor, this.nativeElement(container));\n }\n zoomLevel() {\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return 1;\n }\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n }\n isZoomed() {\n return this.zoomLevel() > 1;\n }\n};\nDOMService.ɵfac = function DOMService_Factory(t) { return new (t || DOMService)(); };\nDOMService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DOMService, factory: function (t) { return DOMService.ɵfac(t); } });\n\n/**\n * Used to set the document scale when using a [scale transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale).\n *\n * The document or container scale is required to compute the popup position correctly. Detecting the scale is not reliable and must be set by providing a value for SCALE. See [Support for Document Scale]({% slug documentscale_popup %}).\n *\n * > Using this token is not necessary for user-applied browser zoom.\n *\n * {% meta height:300 %}\n * {% embed_file scale/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n *\n *\n */\nconst SCALE = new InjectionToken('Popup Document Scale');\n\n/**\n * @hidden\n */\nlet AlignService = class AlignService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n alignElement(settings) {\n const { anchor, element, anchorAlign, elementAlign, margin, offset: offset$$1, positionMode } = settings;\n const scale = this.scale || 1;\n const fixedMode = positionMode === 'fixed' || !this._dom.hasOffsetParent(element);\n const anchorRect = fixedMode ? this.absoluteRect(anchor, element, offset$$1, scale) : this.relativeRect(anchor, element, offset$$1, scale);\n const elementRect = scaleRect(this._dom.offset(element.nativeElement), scale);\n const result = this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin\n });\n return result;\n }\n absoluteRect(anchor, element, offset$$1, scale) {\n const scrollPos = this.elementScrollPosition(anchor, element);\n const rect = eitherRect(this._dom.offset(anchor), offset$$1);\n const stackScale = 2 * scale;\n const stackScroll = this._dom.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n const stackOffset = this._dom.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n return this._dom.removeScroll(this._dom.addScroll(removeStackingOffset(scaleRect(rect, scale), stackOffset), stackScroll), scrollPos);\n }\n elementScrollPosition(anchor, element) {\n return anchor ? { x: 0, y: 0 } : this._dom.scrollPosition(element);\n }\n relativeRect(anchor, element, offset$$1, scale) {\n const rect = eitherRect(this._dom.position(anchor, element, scale), offset$$1);\n return scaleRect(rect, scale);\n }\n};\nAlignService.ɵfac = function AlignService_Factory(t) { return new (t || AlignService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(SCALE, 8)); };\nAlignService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AlignService, factory: function (t) { return AlignService.ɵfac(t); } });\nAlignService = __decorate([ __param(1, Inject(SCALE)), __param(1, Optional()),\n __metadata(\"design:paramtypes\", [DOMService, Number])\n], AlignService);\n\n/**\n * @hidden\n */\nlet PositionService = class PositionService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n positionElement(settings) {\n const { anchor, currentLocation, element, anchorAlign, elementAlign, collisions, margin } = settings;\n const dom = this._dom;\n const scale = this.scale || 1;\n const elementOffset = dom.offsetAtPoint(element, currentLocation);\n const elementRect = scaleRect(elementOffset, scale);\n const anchorOffset = scaleRect(dom.offset(anchor), scale);\n const anchorRect = eitherRect(anchorOffset, currentLocation);\n const viewPort = settings.viewPort || dom.windowViewPort(element);\n viewPort.width = viewPort.width / scale;\n viewPort.height = viewPort.height / scale;\n const result = dom.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n const offset$$1 = dom.addOffset(currentLocation, result.offset);\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset$$1\n };\n }\n};\nPositionService.ɵfac = function PositionService_Factory(t) { return new (t || PositionService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(SCALE, 8)); };\nPositionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PositionService, factory: function (t) { return PositionService.ɵfac(t); } });\nPositionService = __decorate([ __param(1, Inject(SCALE)), __param(1, Optional()),\n __metadata(\"design:paramtypes\", [DOMService, Number])\n], PositionService);\n\n/**\n * @hidden\n */\nlet ResizeService = class ResizeService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n subscribe(callback) {\n if (!isDocumentAvailable()) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n this.subscription = fromEvent(this._dom.getWindow(), \"resize\")\n .pipe(auditTime(FRAME_DURATION))\n .subscribe(() => callback());\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isUnsubscribed() {\n return this.subscription && this.subscription.closed;\n }\n};\nResizeService.ɵfac = function ResizeService_Factory(t) { return new (t || ResizeService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nResizeService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResizeService, factory: function (t) { return ResizeService.ɵfac(t); } });\nResizeService = __decorate([ __metadata(\"design:paramtypes\", [DOMService, NgZone])\n], ResizeService);\n\n/**\n * @hidden\n */\nconst THRESHOLD_DIFF = 1;\n/**\n * @hidden\n */\nlet ScrollableService = class ScrollableService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n forElement(element) {\n this.unsubscribe();\n this.element = element;\n return this;\n }\n subscribe(callback) {\n if (!callback || !isDocumentAvailable() || !this.element) {\n return;\n }\n const parents$$1 = this._dom.scrollableParents(this.element);\n this._zone.runOutsideAngular(() => {\n const observables = parents$$1.map(p => fromEvent(p, \"scroll\").pipe(auditTime(FRAME_DURATION)));\n const subscriber = (e) => {\n const target = e.target;\n const isParent = parents$$1.filter(p => p === target).length > 0;\n const isDocument = target === document;\n const isWindow = target === window;\n if (isParent || isDocument || isWindow) {\n callback(this.isVisible(this.element, target));\n }\n };\n this.subscription = merge(...observables).subscribe(subscriber);\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isVisible(elem, container) {\n const elemRect = this._dom.boundingOffset(elem);\n const containerRect = this._dom.boundingOffset(this._dom.nativeElement(container));\n if (THRESHOLD_DIFF < (containerRect.top - elemRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.top - containerRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.left - containerRect.right)) {\n return false;\n }\n if (THRESHOLD_DIFF < (containerRect.left - elemRect.right)) {\n return false;\n }\n return true;\n }\n};\nScrollableService.ɵfac = function ScrollableService_Factory(t) { return new (t || ScrollableService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nScrollableService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ScrollableService, factory: function (t) { return ScrollableService.ɵfac(t); } });\nScrollableService = __decorate([ __metadata(\"design:paramtypes\", [DOMService, NgZone])\n], ScrollableService);\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst DOWN = 'down';\nconst UP = 'up';\nconst DEFAULT_TYPE = 'slide';\nconst DEFAULT_DURATION = 100;\nconst animationTypes = {};\n/* tslint:disable:object-literal-sort-keys */\nanimationTypes.expand = (direction) => {\n const scale = direction === UP || direction === DOWN ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === DOWN) {\n origin = 'top';\n }\n else if (direction === LEFT) {\n origin = RIGHT;\n }\n else if (direction === RIGHT) {\n origin = LEFT;\n }\n else {\n origin = 'bottom';\n }\n return {\n start: { transform: `${scale}(${startScale})`, transformOrigin: origin },\n end: { transform: `${scale}(${endScale})` }\n };\n};\nanimationTypes.slide = (direction) => {\n const translate = direction === LEFT || direction === RIGHT ? 'translateX' : 'translateY';\n const start = direction === RIGHT || direction === DOWN ? -100 : 100;\n const end = 0;\n return {\n start: { transform: `${translate}(${start}%)` },\n end: { transform: `${translate}(${end}%)` }\n };\n};\nanimationTypes.fade = () => {\n return {\n start: { opacity: 0 },\n end: { opacity: 1 }\n };\n};\nanimationTypes.zoom = () => {\n const start = 0;\n const end = 1;\n return {\n start: { transform: `scale(${start})` },\n end: { transform: `scale(${end})` }\n };\n};\n/**\n * @hidden\n */\nlet AnimationService = class AnimationService {\n constructor(animationBuilder) {\n this.animationBuilder = animationBuilder;\n this.start = new EventEmitter();\n this.end = new EventEmitter();\n }\n play(element, options, flip) {\n if (!this.flip || this.flip.horizontal !== flip.horizontal ||\n this.flip.vertical !== flip.vertical) {\n this.flip = flip;\n const type = options.type || DEFAULT_TYPE;\n const statesFn = animationTypes[type];\n if (statesFn) {\n const direction = this.getDirection(flip, options);\n const states = statesFn(direction);\n this.playStates(element, states, options);\n }\n else if (isDevMode()) {\n throw new Error(`Unsupported animation type: \"${type}\". The supported types are slide, expand, fade and zoom.`);\n }\n }\n }\n ngOnDestroy() {\n this.stopPlayer();\n }\n playStates(element, states, options) {\n this.stopPlayer();\n const duration = options.duration || DEFAULT_DURATION;\n const factory = this.animationBuilder.build([\n style(states.start),\n animate(`${duration}ms ease-in`, style(states.end))\n ]);\n const player = this.player = factory.create(element);\n player.onDone(() => {\n this.end.emit();\n this.stopPlayer();\n });\n this.start.emit();\n player.play();\n }\n getDirection(flip, options) {\n let direction = options.direction || DOWN;\n if (flip.horizontal) {\n if (direction === LEFT) {\n direction = RIGHT;\n }\n else if (direction === RIGHT) {\n direction = LEFT;\n }\n }\n if (flip.vertical) {\n if (direction === DOWN) {\n direction = UP;\n }\n else if (direction === UP) {\n direction = DOWN;\n }\n }\n return direction;\n }\n stopPlayer() {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n};\nAnimationService.ɵfac = function AnimationService_Factory(t) { return new (t || AnimationService)(ɵngcc0.ɵɵinject(ɵngcc1.AnimationBuilder)); };\nAnimationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AnimationService, factory: function (t) { return AnimationService.ɵfac(t); } });\nAnimationService = __decorate([ __metadata(\"design:paramtypes\", [AnimationBuilder])\n], AnimationService);\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-popup',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1648554200,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DEFAULT_OFFSET = { left: -10000, top: 0 };\nconst ANIMATION_CONTAINER = 'k-animation-container';\nconst ANIMATION_CONTAINER_FIXED = 'k-animation-container-fixed';\n/**\n * Represents the [Kendo UI Popup component for Angular]({% slug overview_popup %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Popup content!\n * \n * `\n * })\n * class AppComponent {\n * public show: boolean = false;\n * }\n * ```\n */\nlet PopupComponent = class PopupComponent {\n constructor(container, _alignService, domService, _positionService, _resizeService, _scrollableService, animationService, _renderer, _zone) {\n this.container = container;\n this._alignService = _alignService;\n this.domService = domService;\n this._positionService = _positionService;\n this._resizeService = _resizeService;\n this._scrollableService = _scrollableService;\n this.animationService = animationService;\n this._renderer = _renderer;\n this._zone = _zone;\n /**\n * Controls the Popup animation. By default, the opening and closing animations\n * are enabled ([see example]({% slug animations_popup %})).\n */\n this.animate = true;\n /**\n * Specifies the anchor pivot point\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.anchorAlign = { horizontal: 'left', vertical: 'bottom' };\n /**\n * Configures the collision behavior of the Popup\n * ([see example]({% slug viewportboundarydetection_popup %})).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Specifies the pivot point of the Popup\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.popupAlign = { horizontal: 'left', vertical: 'top' };\n /**\n * Controls whether the component will copy the `anchor` font styles.\n */\n this.copyAnchorStyles = false;\n /**\n * Specifies the position mode of the component. By default, the Popup uses fixed positioning.\n * To make the Popup acquire absolute positioning, set this option to `absolute`.\n *\n * > If you need to support mobile browsers with the zoom option,\n * use the `absolute` positioning of the Popup.\n *\n * @example\n * ```html\n * \n * ```\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * Position mode:\n * \n * \n *
    \n *
    \n * Append to\n * \n * \n * \n *
    \n *
    \n *
    \n *
    \n * \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n *
    \n * `\n * })\n * class AppComponent {\n * public checked: number = 3;\n * public mode: string = 'absolute';\n * public show: boolean = true;\n * }\n * ```\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the absolute position of the element\n * ([see example]({% slug alignmentpositioning_popup %}#toc-aligning-to-absolute-points)).\n * The Popup opens next to that point. The Popup pivot point is defined by the `popupAlign` configuration option.\n * The boundary detection is applied by using the window viewport.\n */\n this.offset = DEFAULT_OFFSET;\n /**\n * Fires when the anchor is scrolled outside the screen boundaries.\n * ([see example]({% slug closing_popup %}#toc-after-leaving-the-viewport)).\n */\n this.anchorViewportLeave = new EventEmitter();\n /**\n * Fires after the component is closed.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the component is opened and the opening animation ends.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the component is opened and the Popup is positioned.\n */\n this.positionChange = new EventEmitter();\n this.resolvedPromise = Promise.resolve(null);\n this.initialCheck = true;\n validatePackage(packageMetadata);\n this._renderer.addClass(container.nativeElement, ANIMATION_CONTAINER);\n this.updateFixedClass();\n }\n ngOnInit() {\n this.reposition = this.reposition.bind(this);\n this._resizeService.subscribe(this.reposition);\n this.animationSubscriptions = this.animationService.start.subscribe(this.onAnimationStart.bind(this));\n this.animationSubscriptions.add(this.animationService.end.subscribe(this.onAnimationEnd.bind(this)));\n this._scrollableService.forElement(this.domService.nativeElement(this.anchor) || this.container.nativeElement).subscribe(this.onScroll.bind(this));\n this.currentOffset = DEFAULT_OFFSET;\n this.setZIndex();\n this.copyFontStyles();\n this.updateFixedClass();\n this.reposition();\n }\n ngOnChanges(changes) {\n if (changes.copyAnchorStyles) {\n this.copyFontStyles();\n }\n if (changes.positionMode) {\n this.updateFixedClass();\n }\n }\n ngAfterViewInit() {\n if (!this.animate) {\n this.resolvedPromise.then(() => {\n this.onAnimationEnd();\n });\n }\n }\n ngAfterViewChecked() {\n if (this.initialCheck) {\n this.initialCheck = false;\n return;\n }\n this._zone.runOutsideAngular(() => {\n // workarounds https://github.com/angular/angular/issues/19094\n // uses promise because it is executed synchronously after the content is updated\n // does not use onStable in case the current zone is not the angular one.\n this.unsubscribeReposition();\n this.repositionSubscription = from(this.resolvedPromise)\n .subscribe(this.reposition);\n });\n }\n ngOnDestroy() {\n this.anchorViewportLeave.complete();\n this.positionChange.complete();\n this.close.emit();\n this.close.complete();\n this._resizeService.unsubscribe();\n this._scrollableService.unsubscribe();\n this.animationSubscriptions.unsubscribe();\n this.unsubscribeReposition();\n }\n /**\n * @hidden\n */\n onResize() {\n this.reposition();\n }\n onAnimationStart() {\n this._renderer.removeClass(this.container.nativeElement, 'k-animation-container-shown');\n }\n onAnimationEnd() {\n this._renderer.addClass(this.container.nativeElement, 'k-animation-container-shown');\n this.open.emit();\n this.open.complete();\n }\n get currentOffset() {\n return this._currentOffset;\n }\n set currentOffset(offset$$1) {\n this.setContainerStyle('left', `${offset$$1.left}px`);\n this.setContainerStyle('top', `${offset$$1.top}px`);\n this._currentOffset = offset$$1;\n }\n setZIndex() {\n if (this.anchor) {\n this.setContainerStyle('z-index', String(this.domService.zIndex(this.domService.nativeElement(this.anchor), this.container)));\n }\n }\n reposition() {\n if (!isDocumentAvailable()) {\n return;\n }\n const { flip, offset: offset$$1 } = this.position();\n if (!this.currentOffset || isDifferentOffset(this.currentOffset, offset$$1)) {\n this.currentOffset = offset$$1;\n if (hasObservers(this.positionChange)) {\n this._zone.run(() => this.positionChange.emit({ offset: offset$$1, flip }));\n }\n }\n if (this.animate) {\n this.animationService.play(this.contentContainer.nativeElement, this.animate, flip);\n }\n this.resizeSensor.acceptSize();\n }\n position() {\n const alignedOffset = this._alignService.alignElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin,\n offset: this.offset,\n positionMode: this.positionMode\n });\n return this._positionService.positionElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n collisions: this.collision,\n currentLocation: alignedOffset,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin\n });\n }\n onScroll(isInViewPort) {\n const hasLeaveObservers = hasObservers(this.anchorViewportLeave);\n if (isInViewPort || !hasLeaveObservers) {\n this.reposition();\n }\n else if (hasLeaveObservers) {\n this._zone.run(() => {\n this.anchorViewportLeave.emit();\n });\n }\n }\n copyFontStyles() {\n if (!this.anchor || !this.copyAnchorStyles) {\n return;\n }\n this.domService.getFontStyles(this.domService.nativeElement(this.anchor))\n .forEach(s => this.setContainerStyle(s.key, s.value));\n }\n updateFixedClass() {\n const action = this.positionMode === 'fixed' ? 'addClass' : 'removeClass';\n this._renderer[action](this.container.nativeElement, ANIMATION_CONTAINER_FIXED);\n }\n setContainerStyle(name, value) {\n this._renderer.setStyle(this.container.nativeElement, name, value);\n }\n unsubscribeReposition() {\n if (this.repositionSubscription) {\n this.repositionSubscription.unsubscribe();\n }\n }\n};\nPopupComponent.ɵfac = function PopupComponent_Factory(t) { return new (t || PopupComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(AlignService), ɵngcc0.ɵɵdirectiveInject(DOMService), ɵngcc0.ɵɵdirectiveInject(PositionService), ɵngcc0.ɵɵdirectiveInject(ResizeService), ɵngcc0.ɵɵdirectiveInject(ScrollableService), ɵngcc0.ɵɵdirectiveInject(AnimationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nPopupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PopupComponent, selectors: [[\"kendo-popup\"]], viewQuery: function PopupComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(ResizeSensorComponent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.resizeSensor = _t.first);\n } }, inputs: { animate: \"animate\", anchorAlign: \"anchorAlign\", collision: \"collision\", popupAlign: \"popupAlign\", copyAnchorStyles: \"copyAnchorStyles\", positionMode: \"positionMode\", offset: \"offset\", anchor: \"anchor\", popupClass: \"popupClass\", margin: \"margin\" }, outputs: { anchorViewportLeave: \"anchorViewportLeave\", close: \"close\", open: \"open\", positionChange: \"positionChange\" }, exportAs: [\"kendo-popup\"], features: [ɵngcc0.ɵɵProvidersFeature([AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1, decls: 5, vars: 4, consts: [[1, \"k-popup\", 3, \"ngClass\"], [\"container\", \"\"], [3, \"ngTemplateOutlet\", \"ngIf\"], [3, \"rateLimit\", \"resize\"]], template: function PopupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵtemplate(3, PopupComponent_ng_template_3_Template, 0, 0, \"ng-template\", 2);\n ɵngcc0.ɵɵelementStart(4, \"kendo-resize-sensor\", 3);\n ɵngcc0.ɵɵlistener(\"resize\", function PopupComponent_Template_kendo_resize_sensor_resize_4_listener() { return ctx.onResize(); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.popupClass);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.content)(\"ngIf\", ctx.content);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"rateLimit\", 100);\n } }, directives: [ɵngcc2.NgClass, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgIf, ɵngcc3.ResizeSensorComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"anchor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"anchorAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"collision\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"popupAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PopupComponent.prototype, \"copyAnchorStyles\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"popupClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PopupComponent.prototype, \"positionMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"offset\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"margin\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"anchorViewportLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"positionChange\", void 0);\n__decorate([\n ViewChild('container', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], PopupComponent.prototype, \"contentContainer\", void 0);\n__decorate([\n ViewChild(ResizeSensorComponent, { static: true }),\n __metadata(\"design:type\", ResizeSensorComponent)\n], PopupComponent.prototype, \"resizeSensor\", void 0);\nPopupComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n AlignService,\n DOMService,\n PositionService,\n ResizeService,\n ScrollableService,\n AnimationService,\n Renderer2,\n NgZone])\n], PopupComponent);\n\nconst removeElement = (element) => {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n};\n/**\n * Used to inject the Popup container. If not provided, the first root component of\n * the application is used.\n *\n * > The `POPUP_CONTAINER` can be used only with the [`PopupService`]({% slug service_popup %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule, POPUP_CONTAINER } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { ElementRef, NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: POPUP_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the popup will be injected\n * return { nativeElement: document.body } as ElementRef;\n * }\n * }]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nconst POPUP_CONTAINER = new InjectionToken('Popup Container');\n/**\n * A service for opening Popup components dynamically\n * ([see example]({% slug service_popup %})).\n *\n * @export\n * @class PopupService\n */\nlet PopupService = class PopupService {\n constructor(applicationRef, componentFactoryResolver, injector, container) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n this.container = container;\n }\n /**\n * Gets the root view container into which the component will be injected.\n *\n * @returns {ComponentRef}\n */\n get rootViewContainer() {\n // https://github.com/angular/angular/blob/4.0.x/packages/core/src/application_ref.ts#L571\n const rootComponents = this.applicationRef.components || [];\n if (rootComponents[0]) {\n return rootComponents[0];\n }\n throw new Error(`\n View Container not found! Inject the POPUP_CONTAINER or define a specific ViewContainerRef via the appendTo option.\n See http://www.telerik.com/kendo-angular-ui/components/popup/api/POPUP_CONTAINER/ for more details.\n `);\n }\n /**\n * Sets or gets the HTML element of the root component container.\n *\n * @returns {HTMLElement}\n */\n get rootViewContainerNode() {\n return this.container ? this.container.nativeElement : this.getComponentRootNode(this.rootViewContainer);\n }\n /**\n * Opens a Popup component. Created Popups are mounted\n * in the DOM directly in the root application component.\n *\n * @param {PopupSettings} options - The options which define the Popup.\n * @returns {ComponentRef} - A reference to the Popup object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Popup content\n * \n * \n * `\n * })\n * export class AppComponent {\n * public popupRef: PopupRef;\n *\n * constructor( private popupService: PopupService ) {}\n *\n * public open(anchor: ElementRef, template: TemplateRef): void {\n * if (this.popupRef) {\n * this.popupRef.close();\n * this.popupRef = null;\n * return;\n * }\n *\n * this.popupRef = this.popupService.open({\n * anchor: anchor,\n * content: template\n * });\n * }\n * }\n * ```\n */\n open(options = {}) {\n const { component, nodes } = this.contentFrom(options.content);\n const popupComponentRef = this.appendPopup(nodes, options.appendTo);\n const popupInstance = popupComponentRef.instance;\n this.projectComponentInputs(popupComponentRef, options);\n popupComponentRef.changeDetectorRef.detectChanges();\n if (component) {\n component.changeDetectorRef.detectChanges();\n }\n const popupElement = this.getComponentRootNode(popupComponentRef);\n return {\n close: () => {\n if (component) {\n component.destroy();\n }\n popupComponentRef.destroy();\n // Angular will not remove the element unless the change detection is triggered\n removeElement(popupElement);\n },\n content: component,\n popup: popupComponentRef,\n popupAnchorViewportLeave: popupInstance.anchorViewportLeave,\n popupClose: popupInstance.close,\n popupElement: popupElement,\n popupOpen: popupInstance.open,\n popupPositionChange: popupInstance.positionChange\n };\n }\n appendPopup(nodes, container) {\n const popupComponentRef = this.createComponent(PopupComponent, nodes, container);\n if (!container) {\n this.rootViewContainerNode.appendChild(this.getComponentRootNode(popupComponentRef));\n }\n return popupComponentRef;\n }\n /**\n * Gets the HTML element for a component reference.\n *\n * @param {ComponentRef} componentRef\n * @returns {HTMLElement}\n */\n getComponentRootNode(componentRef) {\n return componentRef.location.nativeElement;\n }\n /**\n * Gets the `ComponentFactory` instance by its type.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n getComponentFactory(componentClass) {\n return this.componentFactoryResolver.resolveComponentFactory(componentClass);\n }\n /**\n * Creates a component reference from a `Component` type class.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n createComponent(componentClass, nodes, container) {\n const factory = this.getComponentFactory(componentClass);\n if (container) {\n return container.createComponent(factory, undefined, this.injector, nodes);\n }\n else {\n const component = factory.create(this.injector, nodes);\n this.applicationRef.attachView(component.hostView);\n return component;\n }\n }\n /**\n * Projects the inputs on the component.\n *\n * @param {ComponentRef} component\n * @param {*} options\n * @returns {ComponentRef}\n */\n projectComponentInputs(component, options) {\n Object.getOwnPropertyNames(options)\n .filter(prop => prop !== 'content' || options.content instanceof TemplateRef)\n .map((prop) => {\n component.instance[prop] = options[prop];\n });\n return component;\n }\n /**\n * Gets the component and the nodes to append from the `content` option.\n *\n * @param {*} content\n * @returns {any}\n */\n contentFrom(content) {\n if (!content || content instanceof TemplateRef) {\n return { component: null, nodes: [[]] };\n }\n const component = this.createComponent(content);\n const nodes = component ? [component.location.nativeElement] : [];\n return {\n component: component,\n nodes: [\n nodes // \n ]\n };\n }\n};\nPopupService.ɵfac = function PopupService_Factory(t) { return new (t || PopupService)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(POPUP_CONTAINER, 8)); };\nPopupService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PopupService, factory: function (t) { return PopupService.ɵfac(t); } });\nPopupService = __decorate([ __param(3, Inject(POPUP_CONTAINER)), __param(3, Optional()),\n __metadata(\"design:paramtypes\", [ApplicationRef,\n ComponentFactoryResolver,\n Injector,\n ElementRef])\n], PopupService);\n\nconst POPUP_DIRECTIVES = [PopupComponent];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Popup component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet PopupModule = class PopupModule {\n};\nPopupModule.ɵfac = function PopupModule_Factory(t) { return new (t || PopupModule)(); };\nPopupModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PopupModule });\nPopupModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [PopupService], imports: [[CommonModule, ResizeSensorModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DOMService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AlignService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: Number, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PositionService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: Number, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollableService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AnimationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.AnimationBuilder }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopupComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendo-popup',\n providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService],\n selector: 'kendo-popup',\n template: `\n
    \n \n \n \n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: AlignService }, { type: DOMService }, { type: PositionService }, { type: ResizeService }, { type: ScrollableService }, { type: AnimationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { animate: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], copyAnchorStyles: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], offset: [{\n type: Input\n }], anchorViewportLeave: [{\n type: Output\n }], close: [{\n type: Output\n }], open: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], anchor: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], margin: [{\n type: Input\n }], contentContainer: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopupService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ElementRef, decorators: [{\n type: Inject,\n args: [POPUP_CONTAINER]\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopupModule, [{\n type: NgModule,\n args: [{\n declarations: [POPUP_DIRECTIVES],\n entryComponents: [POPUP_DIRECTIVES],\n exports: [POPUP_DIRECTIVES],\n imports: [CommonModule, ResizeSensorModule],\n providers: [PopupService]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PopupModule, { declarations: function () { return [PopupComponent]; }, imports: function () { return [CommonModule, ResizeSensorModule]; }, exports: function () { return [PopupComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService, PopupService, POPUP_CONTAINER, PopupComponent, PopupModule, SCALE };\n\n","/**\n * @hidden\n */\nexport const isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nconst agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nconst osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nconst desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nconst mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nconst testRx = (agent, rxs, dflt) => {\n for (let rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport const detectMobileOS = (ua) => {\n let minorVersion;\n let match = [];\n for (let agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n const os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport const detectDesktopBrowser = (ua) => {\n let browserInfo = null;\n let match = [];\n for (let agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nconst userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport const browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport const mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport const touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport const msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport const pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport const touchEnabled = mobileOS && (touch || msPointers || pointers);\n","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n/**\n * @hidden\n */\nexport function fieldList(field) {\n const fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n return fields;\n}\n","import { fieldList } from './field-list';\nconst getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = fieldList(field);\n getterCache[field] = function (obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","import { fieldList } from './field-list';\nconst setterCache = {};\n// tslint:disable-next-line:no-string-literal\nsetterCache['undefined'] = obj => obj;\nconst defaultValue = (nextField, options) => options && options.arrays && !isNaN(Number(nextField)) ? [] : {};\n/**\n * @hidden\n */\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n const fields = fieldList(field);\n setterCache[field] = (obj, value, options) => {\n let root = obj;\n const depth = fields.length - 1;\n for (let idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || defaultValue(fields[idx + 1], options);\n }\n root[fields[depth]] = value;\n };\n return setterCache[field];\n}\n","export default class Class {\n // Empty base class needed for compatibility with Kendo UI for jQuery\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nconst DARK_TRESHOLD = 180;\n\nclass Color extends Class {\n constructor(value) {\n super();\n\n if (arguments.length === 1) {\n const formats = Color.formats;\n const resolvedColor = this.resolveColor(value);\n\n for (let idx = 0; idx < formats.length; idx++) {\n const formatRegex = formats[idx].re;\n const processor = formats[idx].process;\n const parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n const channels = processor(parts);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n toHex() {\n const pad = this.padDigit;\n const r = this.r.toString(16);\n const g = this.g.toString(16);\n const b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n }\n\n resolveColor(value) {\n let color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n }\n\n normalizeByte(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n }\n\n padDigit(value) {\n return (value.length === 1) ? \"0\" + value : value;\n }\n\n brightness(value) {\n const round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n }\n\n percBrightness() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n }\n\n isDark() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n\n static fromBytes(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n }\n\n static fromRGB(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n }\n\n static fromHSV(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n }\n\n static fromHSL(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n }\n}\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","const namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nconst browser = support.browser;\n\nlet matchNamedColor = (color) => {\n const colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n const regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = (color) => regexp.exec(color);\n\n return regexp.exec(color);\n};\n\nclass BaseColor extends Class {\n constructor() { super(); }\n toHSV() { return this; }\n\n toRGB() { return this; }\n\n toHex(options) { return this.toBytes().toHex(options); }\n\n toBytes() { return this; }\n\n toCss(options) { return \"#\" + this.toHex(options); }\n\n toCssRgba() {\n const rgb = this.toBytes();\n return `rgba(${ rgb.r }, ${ rgb.g }, ${ rgb.b }, ${ parseFloat((Number(this.a)).toFixed(3)) })`;\n }\n\n toDisplay() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n }\n\n equals(c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n }\n\n diff(other) {\n if (other === null) {\n return NaN;\n }\n\n const c1 = this.toBytes();\n const c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n }\n\n clone() {\n let c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n}\n\nclass RGB extends BaseColor {\n constructor(r, g, b, a) {\n super();\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n toHSV() {\n const { r, g, b } = this;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n const v = max;\n let h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n }\n\n toHSL() {\n const { r, g, b } = this;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n }\n\n toBytes() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n}\n\nclass Bytes extends RGB {\n constructor(r, g, b, a) {\n super(Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n toRGB() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toHex(options) {\n let value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n }\n\n toBytes() {\n return this;\n }\n}\n\nfunction hex(n, width, pad = \"0\") {\n let result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nclass HSV extends BaseColor {\n constructor(h, s, v, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n toRGB() {\n let { h, s, v } = this;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n const i = Math.floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - s * f);\n const t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nclass HSL extends BaseColor {\n constructor(h, s, l, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n toRGB() {\n let h = this.h / 360;\n let s = this.s / 100;\n let l = this.l / 100;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nfunction hue2rgb(p, q, s) {\n let t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n let m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n let color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","function matchUserAgent(userAgent) {\n const browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n let browser = {};\n\n for (let agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n const match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nlet browser = null;\n\nconst support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","import { Class } from '../common';\n\nclass HasObservers extends Class {\n observers() {\n this._observers = this._observers || [];\n return this._observers;\n }\n\n addObserver(element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n }\n\n removeObserver(element) {\n const observers = this.observers();\n const index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n }\n\n trigger(methodName, event) {\n const observers = this._observers;\n\n if (observers && !this._suspended) {\n for (let idx = 0; idx < observers.length; idx++) {\n let observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n }\n\n optionsChange(e = {}) {\n e.element = this;\n this.trigger(\"optionsChange\", e);\n }\n\n geometryChange() {\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n\n suspend() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n }\n\n resume() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n }\n\n _observerField(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n}\n\nexport default HasObservers;\n\n","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nconst toString = {}.toString;\n\nclass OptionsStore extends HasObservers {\n constructor(options, prefix = \"\") {\n super();\n\n this.prefix = prefix;\n\n for (let field in options) {\n let member = options[field];\n member = this._wrap(member, field);\n this[field] = member;\n }\n }\n\n get(field) {\n const parts = field.split(\".\");\n let result = this;\n\n while (parts.length && result) {\n let part = parts.shift();\n result = result[part];\n }\n\n return result;\n }\n\n set(field, value) {\n const current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n }\n\n _set(field, value) {\n const composite = field.indexOf(\".\") >= 0;\n let parentObj = this;\n let fieldName = field;\n\n if (composite) {\n const parts = fieldName.split(\".\");\n let prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n let obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n }\n\n _clear(field) {\n const current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n }\n\n _wrap(object, field) {\n const type = toString.call(object);\n let wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n }\n}\n\nexport default OptionsStore;\n","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nconst MAX_INTERVAL = 45;\nconst pow = Math.pow;\nconst accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nclass Arc extends withAccessors(HasObservers, accessors) {\n constructor(center = new Point(), options = {}) {\n super();\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n clone() {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n pointAt(angle) {\n const center = this.center;\n const radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n }\n\n curvePoints() {\n const startAngle = this.startAngle;\n const dir = this.anticlockwise ? -1 : 1;\n const curvePoints = [ this.pointAt(startAngle) ];\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n const subIntervalAngle = intervalAngle / subIntervalsCount;\n let currentAngle = startAngle;\n let transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (let i = 1; i <= subIntervalsCount; i++) {\n const nextAngle = currentAngle + dir * subIntervalAngle;\n const points = this._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n }\n\n bbox(matrix) {\n const interval = this._arcInterval();\n const startAngle = interval.startAngle;\n const endAngle = interval.endAngle;\n const extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n const extremeX = deg(extremeAngles.x);\n const extremeY = deg(extremeAngles.y);\n const endPoint = this.pointAt(endAngle).transformCopy(matrix);\n let currentAngleX = bboxStartAngle(extremeX, startAngle);\n let currentAngleY = bboxStartAngle(extremeY, startAngle);\n let currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n let minPoint = Point.min(currentPoint, endPoint);\n let maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n let currentPointX;\n if (currentAngleX < endAngle) {\n currentPointX = this.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n let currentPointY;\n if (currentAngleY < endAngle) {\n currentPointY = this.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _arcInterval() {\n let { startAngle, endAngle, anticlockwise } = this;\n\n if (anticlockwise) {\n let oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n\n _intervalCurvePoints(startAngle, endAngle, transformation) {\n const p1 = this.pointAt(startAngle);\n const p2 = this.pointAt(endAngle);\n const p1Derivative = this._derivativeAt(startAngle);\n const p2Derivative = this._derivativeAt(endAngle);\n const t = (rad(endAngle) - rad(startAngle)) / 3;\n const cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n const cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n }\n\n _derivativeAt(angle) {\n const radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n }\n\n containsPoint(point) {\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const { center, radiusX, radiusY } = this;\n const distance = center.distanceTo(point);\n const angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n const pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n const startPoint = this.pointAt(this.startAngle).round(PRECISION);\n const endPoint = this.pointAt(this.endAngle).round(PRECISION);\n const intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n let containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n let angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n let inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n }\n\n _isOnPath(point, width) {\n const interval = this._arcInterval();\n const center = this.center;\n let angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n const inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n }\n\n static fromPoints(start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n const arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n }\n}\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n const cos = round((x - cx) / rx, 3);\n const sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n let { x1, y1, x2, y2, rx, ry, largeArc, swipe, rotation = 0 } = parameters;\n\n const radians = rad(rotation);\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n\n const xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n const yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n const sign = largeArc !== swipe ? 1 : -1;\n\n const xt2 = Math.pow(xT, 2);\n const yt2 = Math.pow(yT, 2);\n let rx2 = Math.pow(rx, 2);\n let ry2 = Math.pow(ry, 2);\n\n let delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n let constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n const cxT = constT * (rx * yT) / ry;\n const cyT = - constT * (ry * xT) / rx;\n\n const cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n const cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n const uX = (xT - cxT) / rx;\n const uY = (yT - cyT) / ry;\n const vX = -(xT + cxT) / rx;\n const vY = -(yT + cyT) / ry;\n\n const startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n const angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n let angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n let endAngle = startAngle + angle;\n const signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n let startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n const s1x = p1.x - p0.x;\n const s2x = p3.x - p2.x;\n const s1y = p1.y - p0.y;\n const s2y = p3.y - p2.y;\n const nx = p0.x - p2.x;\n const ny = p0.y - p2.y;\n const d = s1x * s2y - s2x * s1y;\n const s = (s1x * ny - s1y * nx) / d;\n const t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nconst PI_DIV_2 = Math.PI / 2;\n\nclass Circle extends withAccessors(HasObservers, [ \"radius\" ]) {\n constructor(center = new Point(), radius = 0) {\n super();\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n equals(other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n }\n\n clone() {\n return new Circle(this.center.clone(), this.radius);\n }\n\n pointAt(angle) {\n return this._pointAt(rad(angle));\n }\n\n bbox(matrix) {\n const extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n let minPoint = Point.maxPoint();\n let maxPoint = Point.minPoint();\n\n for (let i = 0; i < 4; i++) {\n let currentPointX = this._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n let currentPointY = this._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n let currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _pointAt(angle) {\n const { center, radius } = this;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n }\n\n containsPoint(point) {\n const { center, radius } = this;\n const inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n }\n\n _isOnPath(point, width) {\n const { center, radius } = this;\n const pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n }\n}\n\nexport default Circle;\n","const PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance = PRECISION) {\n return round(Math.abs(a - b), tolerance) === 0;\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n let extremeX = 0;\n let extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","export default function lineIntersectionsCount(a, b, point) {\n let intersects;\n if (a.x !== b.x) {\n const minX = Math.min(a.x, b.x);\n const maxX = Math.max(a.x, b.x);\n const minY = Math.min(a.y, b.y);\n const maxY = Math.max(a.y, b.y);\n const inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nclass Matrix extends Class {\n\n constructor(a = 0, b = 0, c = 0, d = 0, e = 0, f = 0) {\n super();\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n multiplyCopy(matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n }\n\n invert() {\n const { a, b, c: d, d: e, e: g, f: h } = this;\n const det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n }\n\n clone() {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n }\n\n equals(other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n }\n\n round(precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n }\n\n toArray(precision) {\n const result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (let i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n }\n\n toString(precision, separator = \",\") {\n return this.toArray(precision).join(separator);\n }\n\n static translate(x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n }\n\n static unit() {\n return new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n static rotate(angle, x, y) {\n const matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n }\n\n static scale(scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n }\n}\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nclass Point extends withAccessors(HasObservers, [ \"x\", \"y\" ]) {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n equals(other) {\n return other && other.x === this.x && other.y === this.y;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n }\n\n translate(x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n }\n\n translateWith(point) {\n return this.translate(point.x, point.y);\n }\n\n move(x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n }\n\n scale(scaleX, scaleY = scaleX) {\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n }\n\n scaleCopy(scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n }\n\n transform(transformation) {\n const matrix = toMatrix(transformation);\n const { x, y } = this;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n }\n\n transformCopy(transformation) {\n const point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n round(digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const x = doRound ? round(this.x, digits) : this.x;\n const y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n }\n\n toString(digits, separator = \" \") {\n let { x, y } = this;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n }\n\n static min() {\n let minX = MAX_NUM;\n let minY = MAX_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n let point = arguments[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n }\n\n static max() {\n let maxX = MIN_NUM;\n let maxY = MIN_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n const point = arguments[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n }\n\n static minPoint() {\n return new Point(MIN_NUM, MIN_NUM);\n }\n\n static maxPoint() {\n return new Point(MAX_NUM, MAX_NUM);\n }\n\n static get ZERO() {\n return new Point(0, 0);\n }\n}\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nclass Rect extends HasObservers {\n constructor(origin = new Point(), size = new Size(), cornerRadius = 0) {\n super();\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n clone() {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n }\n\n equals(other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n }\n\n setOrigin(value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getOrigin() {\n return this.origin;\n }\n\n setCornerRadius(radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n }\n\n getCornerRadius() {\n return this.cornerRadius;\n }\n\n setSize(value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n }\n\n getSize() {\n return this.size;\n }\n\n width() {\n return this.size.width;\n }\n\n height() {\n return this.size.height;\n }\n\n topLeft() {\n return this.origin.clone();\n }\n\n bottomRight() {\n return this.origin.clone().translate(this.width(), this.height());\n }\n\n topRight() {\n return this.origin.clone().translate(this.width(), 0);\n }\n\n bottomLeft() {\n return this.origin.clone().translate(0, this.height());\n }\n\n center() {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n }\n\n bbox(matrix) {\n const tl = this.topLeft().transformCopy(matrix);\n const tr = this.topRight().transformCopy(matrix);\n const br = this.bottomRight().transformCopy(matrix);\n const bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n }\n\n transformCopy(m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n }\n\n expand(x, y = x) {\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n }\n\n expandCopy(x, y) {\n return this.clone().expand(x, y);\n }\n\n containsPoint(point) {\n const origin = this.origin;\n const bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n }\n\n _isOnPath(point, width) {\n const rectOuter = this.expandCopy(width, width);\n const rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n }\n\n static fromPoints() {\n const topLeft = Point.min.apply(null, arguments);\n const bottomRight = Point.max.apply(null, arguments);\n const size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n }\n\n static union(a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n }\n\n static intersect(a, b) {\n const rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n const rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n }\n}\n\nexport default Rect;\n","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n const angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n const rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n const t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nclass ComplexNumber extends Class {\n\n constructor(real = 0, img = 0) {\n super();\n\n this.real = real;\n this.img = img;\n }\n\n add(cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n }\n\n addConstant(value) {\n return new ComplexNumber(this.real + value, this.img);\n }\n\n negate() {\n return new ComplexNumber(-this.real, -this.img);\n }\n\n multiply(cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n }\n\n multiplyConstant(value) {\n return new ComplexNumber(this.real * value, this.img * value);\n }\n\n nthRoot(n) {\n const rad = Math.atan2(this.img, this.real);\n const r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n const nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n }\n\n equals(cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n }\n\n isReal() {\n return this.img === 0;\n }\n}\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n const squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n const p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n const q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n const Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n const i = new ComplexNumber(0,1);\n const b3a = -b / (3 * a);\n let x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n const result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n const polynomial = toCubicPolynomial(points, rootField);\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n let intersection;\n\n for (let idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nconst points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nclass Segment extends withPoints(HasObservers, points) {\n constructor(anchor, controlIn, controlOut) {\n super();\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n bboxTo(toSegment, matrix) {\n const segmentAnchor = this.anchor().transformCopy(matrix);\n const toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n let rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n }\n\n _lineBoundingBox(p1, p2) {\n return Rect.fromPoints(p1, p2);\n }\n\n _curveBoundingBox(p1, cp1, cp2, p2) {\n const points = [ p1, cp1, cp2, p2 ];\n const extremesX = this._curveExtremesFor(points, \"x\");\n const extremesY = this._curveExtremesFor(points, \"y\");\n const xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n const yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n }\n\n _curveExtremesFor(points, field) {\n const extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n }\n\n _curveExtremes(x1, x2, x3, x4) {\n const a = x1 - 3 * x2 + 3 * x3 - x4;\n const b = - 2 * (x1 - 2 * x2 + x3);\n const c = x1 - x2;\n const sqrt = Math.sqrt(b * b - 4 * a * c);\n let t1 = 0;\n let t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n let min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n let max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n _intersectionsTo(segment, point) {\n let intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n }\n\n _isOnCurveTo(segment, point, width, endSegment) {\n const bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n const p1 = this.anchor();\n const p2 = this.controlOut();\n const p3 = segment.controlIn();\n const p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n const points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n const rotation = transform().rotate(45, point);\n const rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n }\n\n _isOnLineTo(segment, point, width) {\n const p1 = this.anchor();\n const p2 = segment.anchor();\n const angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n const rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n }\n\n _isOnPathTo(segment, point, width, endSegment) {\n let isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n }\n}\n\nfunction arrayLimits(arr) {\n let length = arr.length;\n let min = MAX_NUM;\n let max = MIN_NUM;\n\n for (let i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n const polynomial = toCubicPolynomial(points, \"x\");\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n let rayIntersection, intersectsRay;\n let count = 0;\n for (let i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nclass Size extends withAccessors(HasObservers, [ \"width\", \"height\" ]) {\n constructor(width, height) {\n super();\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n equals(other) {\n return other && other.width === this.width && other.height === this.height;\n }\n\n clone() {\n return new Size(this.width, this.height);\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const width = doRound ? round(this.width, digits) : this.width;\n const height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n }\n\n static get ZERO() {\n return new Size(0, 0);\n }\n}\n\nexport default Size;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nclass Transformation extends HasObservers {\n constructor(matrix = Matrix.unit()) {\n super();\n\n this._matrix = matrix;\n }\n\n clone() {\n return new Transformation(\n this._matrix.clone()\n );\n }\n\n equals(other) {\n return other &&\n other._matrix.equals(this._matrix);\n }\n\n translate(x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n }\n\n scale(scaleX, scaleY = scaleX, origin = null) {\n let originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n }\n\n multiply(transformation) {\n const matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n }\n\n matrix(value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n }\n\n _optionsChange() {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n }\n}\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nconst withOptions = (TBase, names) => {\n const result = class extends TBase {};\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nconst options = [ \"offset\", \"color\", \"opacity\" ];\n\nclass GradientStop extends withOptions(HasObservers, options) {\n constructor(offset, color, opacity) {\n super();\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n static create(arg) {\n if (defined(arg)) {\n let stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n }\n}\n\nexport default GradientStop;\n","import ElementsArray from '../shapes/elements-array';\n\nclass StopsArray extends ElementsArray {\n _change() {\n this.optionsChange({\n field: \"stops\"\n });\n }\n}\n\nexport default StopsArray;","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nclass Gradient extends HasObservers {\n get nodeType() {\n return \"Gradient\";\n }\n\n constructor(options = {}) {\n super();\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n userSpace(value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n }\n\n _createStops(stops = []) {\n const result = [];\n for (let idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n }\n\n addStop(offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n }\n\n removeStop(stop) {\n const index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n }\n\n optionsChange(e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n }\n\n geometryChange() {\n this.optionsChange();\n }\n}\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nconst points = [ \"start\", \"end\" ];\n\nclass LinearGradient extends withPoints(Gradient, points) {\n constructor(options = {}) {\n super(options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n}\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nclass RadialGradient extends withPoints(Gradient, [ \"center\" ]) {\n constructor(options = {}) {\n super(options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n radius(value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n }\n\n fallbackFill(value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n }\n}\n\nexport default RadialGradient;\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nconst IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nconst measurable = TBase => (\n class extends TBase {\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n const matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n let bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n const strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n }\n\n geometryChange() {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n }\n);\n\nexport default measurable;","import { defined } from '../util';\n\nconst GRADIENT = \"Gradient\";\n\nconst paintable = TBase => (\n class extends TBase {\n fill(color, opacity) {\n const options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n const newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n }\n\n stroke(color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n }\n }\n);\n\nexport default paintable;\n","const traversable = (TBase, childrenField) => (\n class extends TBase {\n traverse(callback) {\n const children = this[childrenField];\n\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n }\n }\n);\n\nexport default traversable;\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i];\n let capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nconst withAccessors = (TBase, names) => {\n const result = class extends TBase {};\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nconst withGeometry = (TBase, names = [ \"geometry\" ]) => {\n const result = class extends TBase {};\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nconst withPoints = (TBase, names) => {\n const result = class extends TBase {};\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import Point from '../geometry/point';\nimport { last } from '../util';\n\nconst ShapeMap = {\n l: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 2) {\n let point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 6) {\n let controlOut = new Point(parameters[i], parameters[i + 1]);\n let controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n let point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n const value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n const value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 7) {\n const radiusX = parameters[i];\n const radiusY = parameters[i + 1];\n const rotation = parameters[i + 2];\n const largeArc = parameters[i + 3];\n const swipe = parameters[i + 4];\n const endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlIn = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n let controlOut;\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlPoint = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n let lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (let i = 0; i < parameters.length; i += 2) {\n let endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n const insertPosition = isVertical ? 0 : 1;\n\n for (let i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nconst third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n const scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nconst SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nconst SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nconst MOVE = \"m\";\nconst CLOSE = \"z\";\n\nfunction parseParameters(str) {\n const parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n const position = new Point();\n let previousCommand;\n\n str.replace(SEGMENT_REGEX, (match, element, params, closePath) => {\n let command = element.toLowerCase();\n const isRelative = command === element;\n const parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nconst HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nconst BASE64 = (function(){\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n\n var chr1 = (enc1 << 2) | (enc2 >>> 4);\n var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n var chr3 = ((enc3 & 3) << 6) | enc4;\n\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function(bytes) {\n var i = 0, n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n\n var enc1 = chr1 >>> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n var enc4 = chr3 & 63;\n\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n}());\n\nfunction BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function(len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function() {};\n\n var get = HAS_TYPED_ARRAYS ? function() {\n return new Uint8Array(data.buffer, 0, length);\n } : function() {\n return data;\n };\n\n var write = HAS_TYPED_ARRAYS ? function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n\n var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function(start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 0xFF;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return (readByte() << 8) | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n function readLong() {\n return (readShort() * 0x10000) + readShort();\n }\n function writeLong(w) {\n writeShort((w >>> 16) & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n function readFixed() {\n return readLong() / 0x10000;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n\n var stream = {\n eof : eof,\n readByte : readByte,\n writeByte : writeByte,\n readShort : readShort,\n writeShort : writeShort,\n readLong : readLong,\n writeLong : writeLong,\n readFixed : readFixed,\n writeFixed : writeFixed,\n\n // signed numbers.\n readShort_ : readShort_,\n writeShort_ : writeShort_,\n readLong_ : readLong_,\n writeLong_ : writeLong_,\n readFixed_ : readFixed_,\n writeFixed_ : writeFixed_,\n\n read : read,\n write : write,\n readString : readString,\n writeString : writeString,\n\n times : times,\n get : get,\n slice : slice,\n\n offset: function(pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n\n skip: function(nbytes) {\n offset += nbytes;\n },\n\n toString: function() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n\n length: function() { return length; },\n\n saveExcursion: function(f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n\n writeBase64: function(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function() {\n return BASE64.encode(get());\n }\n };\n\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function(value){\n var output = \"\";\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n const data = window.atob(base64);\n const result = new Uint8Array(data.length);\n\n for (let idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n const result = new Uint8Array(data.length);\n\n for (let idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n HAS_TYPED_ARRAYS,\n BASE64,\n BinaryStream,\n ucs2decode,\n ucs2encode,\n base64ToUint8Array\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\nclass Directory {\n constructor(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag : data.readString(4),\n checksum : data.readLong(),\n offset : data.readLong(),\n length : data.readLong()\n };\n tables[entry.tag] = entry;\n }\n }\n\n readTable(name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n return (this[name] = def.table = new Ctor(this, def));\n }\n\n render(tables) {\n var tableCount = Object.keys(tables).length;\n\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n\n out.writeString(tag);\n out.writeLong(this.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n\n tableData.write(table);\n if (tag == \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n }\n\n checksum(data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 0xFFFFFFFF;\n }\n}\n\nclass Table {\n constructor(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n }\n\n raw() {\n return this.rawData.slice(this.offset, this.length);\n }\n\n parse() {} // abstract\n}\n\nclass HeadTable extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n }\n\n render(indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n }\n}\n\nclass LocaTable extends Table {\n parse(data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function(){\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n }\n\n offsetOf(id) {\n return this.offsets[id];\n }\n\n lengthOf(id) {\n return this.offsets[id + 1] - this.offsets[id];\n }\n\n render(offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n }\n}\n\nclass HheaTable extends Table {\n parse(data) {\n data.offset(this.offset);\n\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n }\n\n render(ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n\n out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n }\n}\n\nclass MaxpTable extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n }\n\n render(glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n }\n}\n\nclass HmtxTable extends Table {\n parse(data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n }\n\n forGlyph(id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n }\n\n render(glyphIds) {\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n }\n}\n\nvar GlyfTable = (function(){\n class SimpleGlyph {\n get compound() {\n return false;\n }\n\n constructor(raw) {\n this.raw = raw;\n }\n\n render() {\n return this.raw.get();\n }\n }\n\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080;\n //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n class CompoundGlyph {\n get compound() {\n return true;\n }\n\n constructor(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) { // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n }\n\n render(old2new) {\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this.glyphIds[i];\n out.offset(this.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n }\n }\n\n return class extends Table {\n parse() {\n this.cache = {};\n }\n\n glyphFor(id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return (cache[id] = null);\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n\n var glyph = cache[id] = numberOfContours < 0 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n\n return glyph;\n }\n\n render(glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n };\n}());\n\nvar NameTable = (function(){\n class NameEntry {\n constructor(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n }\n }\n\n return class extends Table {\n parse(data) {\n data.offset(this.offset);\n data.readShort(); // format\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function(){\n return {\n platformID : data.readShort(),\n platformSpecificID : data.readShort(),\n languageID : data.readShort(),\n nameID : data.readShort(),\n length : data.readShort(),\n offset : data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n }\n\n render(psName) {\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n\n out.writeShort(0); // format\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [\n new NameEntry(psName, this.postscriptEntry)\n ] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n\n return out.get();\n }\n };\n})();\n\nvar PostTable = (function(){\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n return class extends Table {\n parse(data) {\n data.offset(this.offset);\n\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this.names.push(data.readString(data.readByte()));\n }\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n }\n\n glyphFor(code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n }\n\n render(mapping) {\n if (this.format == 0x00030000) {\n return this.raw();\n }\n\n // keep original header, but set format to 2.0\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n }\n };\n})();\n\nvar CmapTable = (function(){\n class CmapEntry {\n constructor(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n\n data.saveExcursion(function(){\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n\n data.skip(6); // searchRange, entrySelector, rangeShift\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n\n case 12:\n data.readShort(); // reserved\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n }\n });\n }\n }\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n\n out.writeShort(3); // platformID\n out.writeShort(1); // platformSpecificID\n out.writeLong(12); // offset\n out.writeShort(4); // format\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n out.writeShort(0); // language\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n\n return out.get();\n }\n\n return class extends Table {\n parse(data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function(){\n return new CmapEntry(data, offset, self.codeMap);\n });\n }\n\n static render(ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n out.writeShort(1); // tableCount\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n }\n };\n\n})();\n\nclass OS2Table extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n }\n\n render() {\n return this.raw();\n }\n}\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\", n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n}\n\nclass Subfont {\n constructor(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n }\n\n use(ch) {\n var self = this;\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function(ret, code){\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n\n // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n }\n\n encodeText(text) {\n return this.use(text);\n }\n\n glyphIds() {\n return sortedKeys(this.ogid2ngid);\n }\n\n glyphsFor(glyphIds, result) {\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n }\n\n render() {\n var glyphs = this.glyphsFor(this.glyphIds());\n\n // add missing sub-glyphs\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this.ogid2ngid[old_gid] == null) {\n var new_gid = this.nextGid++;\n this.ogid2ngid[old_gid] = new_gid;\n this.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function(id){\n return this.ngid2ogid[id];\n }, this);\n\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n\n this.lastChar = this.next - 1;\n\n var tables = {\n \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\" : glyf.table,\n \"loca\" : loca.table,\n \"hmtx\" : font.hmtx.render(old_gid_ids),\n \"hhea\" : font.hhea.render(old_gid_ids),\n \"maxp\" : font.maxp.render(old_gid_ids),\n \"post\" : font.post.render(old_gid_ids),\n \"name\" : font.name.render(this.psName),\n \"head\" : font.head.render(loca.format),\n \"OS/2\" : font.os2.render()\n };\n\n return this.font.directory.render(tables);\n }\n\n cidToGidMap() {\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n }\n}\n\nclass TTFFont {\n constructor(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == \"ttcf\") {\n var offset;\n const parse = function() {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n data.readLong(); // version\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n }\n\n parse() {\n var dir = this.directory = new Directory(this.contents);\n\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n }\n\n widthOfGlyph(glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n }\n\n makeSubset() {\n return new Subfont(this);\n }\n}\n\nexport { TTFFont };\n","import { deflate as pakoDeflate } from '@progress/pako-esm';\n\nexport const deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n return true;\n}\n\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nimport { encodeUTF16BE, BOM } from \"../util/encode-utf\";\nimport { encodeBase64 } from \"../util\";\n\nconst browser = support.browser;\nconst NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\n\nconst PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments[i];\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n }\n else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n }\n else if (isArray(x)) {\n renderArray(x, out);\n }\n else if (isDate(x)) {\n renderDate(x, out);\n }\n else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n }\n // make sure it doesn't end up in exponent notation\n var num = x.toFixed(7);\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n if (num == \"-0\") {\n num = \"0\";\n }\n output.writeString(num);\n }\n else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n }\n else if (typeof x.get == \"function\") {\n output.write(x.get());\n }\n else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function(data) {\n output.write(data);\n };\n out.withIndent = function(f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function() {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n out.offset = function() {\n return output.offset();\n };\n out.toString = function() {\n throw new Error(\"FIX CALLER\");\n };\n out.get = function() {\n return output.get();\n };\n out.stream = function() {\n return output;\n };\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function(){};\n\n value.render = function(out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function(out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n var margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\" : true,\n \"Times-Bold\" : true,\n \"Times-Italic\" : true,\n \"Times-BoldItalic\" : true,\n \"Helvetica\" : true,\n \"Helvetica-Bold\" : true,\n \"Helvetica-Oblique\" : true,\n \"Helvetica-BoldOblique\" : true,\n \"Courier\" : true,\n \"Courier-Bold\" : true,\n \"Courier-Oblique\" : true,\n \"Courier-BoldOblique\" : true,\n \"Symbol\" : true,\n \"ZapfDingbats\" : true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n let m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n req.onload = function() {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function(data){\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont, options) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n xhr.onload = function() {\n blob = xhr.response;\n if (browser.mozilla && blob.type == \"image/svg+xml\") {\n // Firefox won't render SVGs that don't contain width and height attributes.\n let reader = new FileReader();\n reader.onload = function() {\n let doc = new window.DOMParser().parseFromString(this.result, \"image/svg+xml\");\n let svg = doc.documentElement;\n if (svg.getAttribute(\"width\") && svg.getAttribute(\"height\")) {\n // we're good, continue with the existing blob.\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n } else {\n svg.setAttribute(\"width\", size.width);\n svg.setAttribute(\"height\", size.height);\n let xml = new window.XMLSerializer().serializeToString(svg);\n let dataURL = `data:image/svg+xml;base64,${encodeBase64(xml)}`;\n _load(dataURL);\n }\n };\n reader.readAsText(blob);\n } else {\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n }\n };\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n // IE, bless its little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload.call(img);\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = { width: img.width, height: img.height };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n\n // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n\n if (hasAlpha || options.keepPNG) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\", options.jpegQuality);\n data = data.substr(data.indexOf(\";base64,\") + 8);\n\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n const svg = (blob && blob.type === 'image/svg+xml') || (\n /^data:image\\/svg\\+xml;/i.test(this.src.substring(0, 19))\n );\n\n const upscale = size.width >= img.width || size.height >= img.height;\n\n // Use the original image if requested size is bigger than the source,\n // unless it's an SVG that can be upscaled.\n if (!svg && upscale) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n let reader = new FileReader();\n reader.onload = function() {\n try {\n let img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function(urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback, options) {\n options = Object.assign({\n jpegQuality : 0.92,\n keepPNG : false\n }, options);\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function(url){\n loadImage(url, images[url], next, options);\n });\n};\n\nclass PDFDocument {\n constructor (options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return (options && options[name] != null) ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function(value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n\n self.pages = [];\n\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n self.GRAD_COL = {}; // cache for whole color gradient objects\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n let nameTree = {};\n nameTree.JavaScript = new PDFDictionary({ Names: [\n new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))\n ] });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n\n var info = self.attach(new PDFDictionary({\n Producer : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\"), true), // XXX: kendo.version?\n Title : new PDFString(getOption(\"title\", \"\"), true),\n Author : new PDFString(getOption(\"author\", \"\"), true),\n Subject : new PDFString(getOption(\"subject\", \"\"), true),\n Keywords : new PDFString(getOption(\"keywords\", \"\"), true),\n Creator : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\"), true),\n CreationDate : getOption(\"date\", new Date())\n }));\n\n self.addPage = function(options) {\n var paperOptions = getPaperOptions(function(name, defval){\n return (options && options[name] != null) ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents : self.attach(content),\n Parent : pageTree,\n MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n\n // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top);\n // XXX: clip to right/bottom margin. Make this optional?\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function() {\n var i;\n /// file header\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n /// file body\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n\n /// cross-reference table\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n out(NL);\n\n /// trailer\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n\n /// end\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n\n return out.stream().offset(0);\n };\n\n self.loadFonts = loadFonts;\n self.loadImages = loadImages;\n }\n\n getFont(url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n }\n\n getImage(url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n if (img === \"ERROR\") {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n }\n\n getOpacityGS(opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n cache[id] = gs;\n }\n return gs;\n }\n\n dict(props) {\n return new PDFDictionary(props);\n }\n\n name(str) {\n return _(str);\n }\n\n stream(props, content) {\n return new PDFStream(content, props);\n }\n}\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n if (a.length > 0) {\n out.withIndent(function(){\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n });\n //out.indent();\n }\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\",\n zeropad(date.getUTCFullYear(), 4),\n zeropad(date.getUTCMonth() + 1, 2),\n zeropad(date.getUTCDate(), 2),\n zeropad(date.getUTCHours(), 2),\n zeropad(date.getUTCMinutes(), 2),\n zeropad(date.getUTCSeconds(), 2),\n \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nclass PDFValue {\n beforeRender() {}\n}\n\nclass PDFString extends PDFValue {\n constructor(value, utf16be) {\n super();\n this.value = value;\n this.utf16be = Boolean(utf16be);\n }\n\n render(out) {\n let txt = this.value;\n if (this.utf16be) {\n txt = BOM + encodeUTF16BE(txt);\n txt = txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n out(\"(\", txt, \")\");\n } else {\n // out.writeString truncates charcodes to 8 bits and\n // 0x128 & 0xFF is 40, the code for open paren.\n // therefore we need to do the chopping here to make\n // sure we backslash all cases.\n let data = [ 40 ]; // open PDF string '('\n for (var i = 0; i < txt.length; ++i) {\n let code = txt.charCodeAt(i) & 0xFF;\n if (code == 40 || code == 41 || code == 92) {\n // backslash before (, ) and \\\n data.push(92);\n }\n data.push(code);\n }\n data.push(41); // ')' close PDF string\n out.writeData(data);\n }\n }\n\n toString() {\n return this.value;\n }\n}\n\nclass PDFHexString extends PDFString {\n constructor(value) {\n super(value);\n this.value = value;\n }\n\n render(out) {\n out(\"<\");\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this.value.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n}\n\n/// names\nclass PDFName extends PDFValue {\n static get(name) {\n return _(name);\n }\n\n constructor(name) {\n super();\n this.name = name;\n }\n\n render(out) {\n out(\"/\" + this.escape());\n }\n\n escape() {\n return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n }\n\n toString() {\n return this.name;\n }\n}\n\nvar PDFName_cache = {};\n\nfunction _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return (PDFName_cache[name] = new PDFName(name));\n}\n\n/// dictionary\n\nclass PDFDictionary extends PDFValue {\n constructor(props) {\n super();\n this.props = props;\n }\n\n render(out) {\n var props = this.props, empty = true;\n out(\"<<\");\n out.withIndent(function(){\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out(\">>\");\n }\n}\n\n/// streams\n\nclass PDFStream extends PDFValue {\n constructor(data, props, compress) {\n super();\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }\n\n render(out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [ props.Filter ];\n }\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n }\n}\n\n/// catalog\n\nclass PDFCatalog extends PDFDictionary {\n constructor() {\n super({\n Type: _(\"Catalog\")\n });\n }\n\n setPages(pagesObj) {\n this.props.Pages = pagesObj;\n }\n}\n\n/// page tree\n\nclass PDFPageTree extends PDFDictionary {\n constructor() {\n super({\n Type : _(\"Pages\"),\n Kids : [],\n Count : 0\n });\n }\n\n addPage(pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n}\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nclass PDFJpegImage {\n constructor(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : bitsPerComponent,\n Filter : _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n break;\n }\n\n this.asStream = function() {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n }\n}\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nclass PDFRawImage {\n constructor(width, height, rgb, alpha) {\n this.asStream = function(pdf) {\n var mask = new PDFStream(alpha, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceRGB\"),\n SMask : pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n }\n}\n\n/// standard fonts\n\nclass PDFStandardFont extends PDFDictionary {\n constructor(name){\n super({\n Type : _(\"Font\"),\n Subtype : _(\"Type1\"),\n BaseFont : _(name)\n });\n\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n }\n\n encodeText(str) {\n return new PDFString(String(str));\n }\n}\n\n/// TTF fonts\n\nclass PDFFont extends PDFDictionary {\n constructor(pdf, font, props){\n super({});\n\n props = this.props;\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n var head = font.head;\n\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n\n this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n (this.isSerif ? 1 << 1 : 0) |\n (this.isScript ? 1 << 3 : 0) |\n (this.italicAngle !== 0 ? 1 << 6 : 0) |\n (1 << 5));\n }\n\n encodeText(text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n }\n\n getTextWidth(fontSize, text) {\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n }\n\n beforeRender() {\n var self = this;\n var sub = self._sub;\n\n // write the TTF data\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type : _(\"FontDescriptor\"),\n FontName : _(self._sub.psName),\n FontBBox : self.bbox,\n Flags : self.flags,\n StemV : self.stemV,\n ItalicAngle : self.italicAngle,\n Ascent : self.ascent,\n Descent : self.descent,\n CapHeight : self.capHeight,\n XHeight : self.xHeight,\n FontFile2 : self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk){\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar);\n\n // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry : new PDFString(\"Adobe\"),\n Ordering : new PDFString(\"Identity\"),\n Supplement : 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n }\n\n _makeCidToGidMap() {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n}\n\nclass PDFToUnicodeCmap extends PDFValue {\n constructor(firstChar, lastChar, map){\n super();\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }\n\n render(out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function(){\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([ unicode ]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n }\n}\n\n/// gradients\n\nfunction makeHash(a) {\n return a.map(function(x){\n return isArray(x) ? makeHash(x)\n : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1, 0, 1, 0, 1 ],\n N: 1,\n C0: [ r1 , g1 , b1 ],\n C1: [ r2 , g2 , b2 ]\n }));\n }\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([ a1, a2 ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1 ],\n N: 1,\n C0: [ a1 ],\n C1: [ a2 ]\n }));\n }\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(\n pdf,\n prevColor.r, prevColor.g, prevColor.b,\n curColor.r, curColor.g, curColor.b\n ));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(\n pdf, prevColor.a, curColor.a\n ));\n }\n }\n offsets.pop();\n return {\n hasAlpha : hasAlpha,\n colors : assemble(colors),\n opacities : hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [ 0, 1 ],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n Function: funcs,\n Extend: [ true, true ]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: (box ? [\n box.left, box.top + box.height, box.left + box.width, box.top\n ] : [ 0, 1, 1, 0 ]),\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: { CA: 1, ca: 1 }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [ true, true ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x , gradient.start.y , gradient.start.r,\n gradient.end.x , gradient.end.y , gradient.end.r\n ] : [\n gradient.start.x , gradient.start.y,\n gradient.end.x , gradient.end.y\n ];\n var shading = cacheColorGradient(\n pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n );\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n ) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n}\n\n/// page object\n\nclass PDFPage extends PDFDictionary {\n constructor(pdf, props){\n super(props);\n\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n this._annotations = [];\n\n this._font = null;\n this._fontSize = null;\n\n this._contextStack = [];\n\n props = this.props;\n props.Type = _(\"Page\");\n props.ProcSet = [\n _(\"PDF\"),\n _(\"Text\"),\n _(\"ImageB\"),\n _(\"ImageC\"),\n _(\"ImageI\")\n ];\n props.Resources = new PDFDictionary({\n Font : new PDFDictionary(this._fontResources),\n ExtGState : new PDFDictionary(this._gsResources),\n XObject : new PDFDictionary(this._xResources),\n Pattern : new PDFDictionary(this._patResources),\n Shading : new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }\n\n _out() {\n this._content.data.apply(null, arguments);\n }\n\n transform(a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n this._out(NL);\n }\n }\n\n translate(dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n }\n\n scale(sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n }\n\n rotate(angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n }\n\n beginText() {\n this._textMode = true;\n this._out(\"BT\", NL);\n }\n\n endText() {\n this._textMode = false;\n this._out(\"ET\", NL);\n }\n\n _requireTextMode() {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n }\n\n _requireFont() {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n }\n\n setFont(font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n }\n\n setTextLeading(size) {\n this._requireTextMode();\n this._out(size, \" TL\", NL);\n }\n\n setTextRenderingMode(mode) {\n this._requireTextMode();\n this._out(mode, \" Tr\", NL);\n }\n\n showText(text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, \" Tz \");\n }\n this._out(this._font.encodeText(text), \" Tj\", NL);\n }\n\n showTextNL(text) {\n this._requireFont();\n this._out(this._font.encodeText(text), \" '\", NL);\n }\n\n addLink(uri, box) {\n var ll = this._toPage({ x: box.left, y: box.bottom });\n var ur = this._toPage({ x: box.right, y: box.top });\n this._annotations.push(new PDFDictionary({\n Type : _(\"Annot\"),\n Subtype : _(\"Link\"),\n Rect : [ ll.x, ll.y, ur.x, ur.y ],\n Border : [ 0, 0, 0 ],\n A : new PDFDictionary({\n Type : _(\"Action\"),\n S : _(\"URI\"),\n URI : new PDFString(uri)\n })\n }));\n }\n\n setStrokeColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n }\n\n setOpacity(opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n }\n\n setStrokeOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n }\n\n setFillColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n }\n\n setFillOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n }\n\n gradient(gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out(\"/\" + oname + \" gs \");\n }\n this._out(\"/\" + sname + \" sh\", NL);\n this.restore();\n }\n\n setDashPattern(dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n }\n\n setLineWidth(width) {\n this._out(width, \" w\", NL);\n }\n\n setLineCap(lineCap) {\n this._out(lineCap, \" J\", NL);\n }\n\n setLineJoin(lineJoin) {\n this._out(lineJoin, \" j\", NL);\n }\n\n setMitterLimit(mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n }\n\n save() {\n this._contextStack.push(this._context());\n this._out(\"q\", NL);\n }\n\n restore() {\n this._out(\"Q\", NL);\n this._context(this._contextStack.pop());\n }\n\n\n // paths\n moveTo(x, y) {\n this._out(x, \" \", y, \" m\", NL);\n }\n\n lineTo(x, y) {\n this._out(x, \" \", y, \" l\", NL);\n }\n\n bezier(x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n }\n\n bezier1(x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n }\n\n bezier2(x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n }\n\n close() {\n this._out(\"h\", NL);\n }\n\n rect(x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n }\n\n ellipse(x, y, rx, ry) {\n function _X(v) { return x + v; }\n function _Y(v) { return y + v; }\n\n // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n var k = 0.5522847498307936;\n\n this.moveTo(_X(0), _Y(ry));\n this.bezier(\n _X(rx * k) , _Y(ry),\n _X(rx) , _Y(ry * k),\n _X(rx) , _Y(0)\n );\n this.bezier(\n _X(rx) , _Y(-ry * k),\n _X(rx * k) , _Y(-ry),\n _X(0) , _Y(-ry)\n );\n this.bezier(\n _X(-rx * k) , _Y(-ry),\n _X(-rx) , _Y(-ry * k),\n _X(-rx) , _Y(0)\n );\n this.bezier(\n _X(-rx) , _Y(ry * k),\n _X(-rx * k) , _Y(ry),\n _X(0) , _Y(ry)\n );\n }\n\n circle(x, y, r) {\n this.ellipse(x, y, r, r);\n }\n\n stroke() {\n this._out(\"S\", NL);\n }\n\n nop() {\n this._out(\"n\", NL);\n }\n\n clip() {\n this._out(\"W n\", NL);\n }\n\n clipStroke() {\n this._out(\"W S\", NL);\n }\n\n closeStroke() {\n this._out(\"s\", NL);\n }\n\n fill() {\n this._out(\"f\", NL);\n }\n\n fillStroke() {\n this._out(\"B\", NL);\n }\n\n drawImage(url) {\n var img = this._pdf.getImage(url);\n if (img) { // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, \" Do\", NL);\n }\n }\n\n comment(txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function(line){\n self._out(\"% \", line, NL);\n });\n }\n\n // internal\n _context(val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n }\n\n _toPage(p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a*p.x + c*p.y + e,\n y: b*p.x + d*p.y + f\n };\n }\n}\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return { fontSize: 12, fontFamily: \"sans-serif\" };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic : m[2] && m[2].toLowerCase() == \"italic\",\n variant : m[4],\n bold : m[6] && /bold|700/i.test(m[6]),\n fontSize : fontSize,\n lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n if (style.italic) {\n name += \"|italic\";\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == \"function\") {\n url = url();\n }\n if (!url) {\n url = \"Times-Roman\";\n }\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\" : \"Times-Roman\",\n \"serif|bold\" : \"Times-Bold\",\n \"serif|italic\" : \"Times-Italic\",\n \"serif|bold|italic\" : \"Times-BoldItalic\",\n \"sans-serif\" : \"Helvetica\",\n \"sans-serif|bold\" : \"Helvetica-Bold\",\n \"sans-serif|italic\" : \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\" : \"Helvetica-BoldOblique\",\n \"monospace\" : \"Courier\",\n \"monospace|bold\" : \"Courier-Bold\",\n \"monospace|italic\" : \"Courier-Oblique\",\n \"monospace|bold|italic\" : \"Courier-BoldOblique\",\n \"zapfdingbats\" : \"ZapfDingbats\",\n \"zapfdingbats|bold\" : \"ZapfDingbats\",\n \"zapfdingbats|italic\" : \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function() {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + \"|bold\"] = function() {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n FONT_MAPPINGS[alias + \"|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\" , \"monospace\");\nfontAlias(\"Arial\" , \"sans-serif\");\nfontAlias(\"Helvetica\" , \"sans-serif\");\nfontAlias(\"Verdana\" , \"sans-serif\");\nfontAlias(\"Tahoma\" , \"sans-serif\");\nfontAlias(\"Georgia\" , \"sans-serif\");\nfontAlias(\"Monaco\" , \"monospace\");\nfontAlias(\"Andale Mono\" , \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n\n // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n switch (name) {\n case \"dejavu sans\" : FONT_MAPPINGS[\"sans-serif\"] = url; break;\n case \"dejavu sans|bold\" : FONT_MAPPINGS[\"sans-serif|bold\"] = url; break;\n case \"dejavu sans|italic\" : FONT_MAPPINGS[\"sans-serif|italic\"] = url; break;\n case \"dejavu sans|bold|italic\" : FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url; break;\n case \"dejavu serif\" : FONT_MAPPINGS[\"serif\"] = url; break;\n case \"dejavu serif|bold\" : FONT_MAPPINGS[\"serif|bold\"] = url; break;\n case \"dejavu serif|italic\" : FONT_MAPPINGS[\"serif|italic\"] = url; break;\n case \"dejavu serif|bold|italic\" : FONT_MAPPINGS[\"serif|bold|italic\"] = url; break;\n case \"dejavu mono\" : FONT_MAPPINGS[\"monospace\"] = url; break;\n case \"dejavu mono|bold\" : FONT_MAPPINGS[\"monospace|bold\"] = url; break;\n case \"dejavu mono|italic\" : FONT_MAPPINGS[\"monospace|italic\"] = url; break;\n case \"dejavu mono|bold|italic\" : FONT_MAPPINGS[\"monospace|bold|italic\"] = url; break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nconst TEXT_RENDERING_MODE = {\n fill : 0,\n stroke : 1,\n fillAndStroke : 2,\n invisible : 3,\n fillAndClip : 4,\n strokeAndClip : 5,\n fillStrokeClip : 6,\n clip : 7\n};\n\nexport {\n PDFDocument as Document,\n BinaryStream,\n defineFont,\n parseFontDef,\n getFontURL,\n loadFonts,\n loadImages,\n getPaperOptions,\n clearImageCache,\n TEXT_RENDERING_MODE\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { createPromise } from \"../util\";\nimport { parseColor as utils_parseColor, saveAs as util_saveAs, support } from \"../common\";\nimport * as PDF from \"./core\";\nimport { Group, Path, MultiPath, Gradient, RadialGradient } from '../drawing';\nimport * as geo from \"../geometry\";\n\nconst DEFAULT_IMAGE_DPI = 300;\nconst TEXT_RENDERING_MODE = PDF.TEXT_RENDERING_MODE;\n\nconst DASH_PATTERNS = {\n dash : [ 4 ],\n dashDot : [ 4, 2, 1, 2 ],\n dot : [ 1, 2 ],\n longDash : [ 8, 2 ],\n longDashDot : [ 8, 2, 1, 2 ],\n longDashDotDot : [ 8, 2, 1, 2, 1, 2 ],\n solid : []\n};\n\nconst LINE_CAP = {\n butt : 0,\n round : 1,\n square : 2\n};\n\nconst LINE_JOIN = {\n miter : 0,\n round : 1,\n bevel : 2\n};\n\nfunction render(group, callback) {\n var fonts = [], images = {}, options = group.options;\n\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n\n var multiPage = getOption(\"multiPage\");\n var imgDPI = getOption(\"imgDPI\", DEFAULT_IMAGE_DPI);\n\n PDF.clearImageCache();\n\n group.traverse(function(element){\n dispatch({\n Image: function(element) {\n var url = element.src();\n var size = element.bbox().size;\n if (imgDPI) {\n var prev = images[url];\n size = {\n width: Math.ceil(size.width * imgDPI / 72),\n height: Math.ceil(size.height * imgDPI / 72)\n };\n\n if (prev) {\n size.width = Math.max(prev.width, size.width);\n size.height = Math.max(prev.height, size.height);\n }\n }\n\n images[url] = size;\n },\n Text: function(element) {\n var style = PDF.parseFontDef(element.options.font);\n var url = PDF.getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n }, element);\n });\n\n function doIt() {\n if (--count > 0) {\n return;\n }\n\n var pdf = new (PDF.Document)({\n producer : getOption(\"producer\"),\n title : getOption(\"title\"),\n author : getOption(\"author\"),\n subject : getOption(\"subject\"),\n keywords : getOption(\"keywords\"),\n creator : getOption(\"creator\"),\n date : getOption(\"date\"),\n\n autoPrint : getOption(\"autoPrint\")\n });\n\n function drawPage(group) {\n var options = group.options;\n\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n // var tmp, bbox;\n\n var paperSize = getOption(\"paperSize\", getOption(\"paperSize\", \"auto\"), options), addMargin = false;\n if (paperSize == \"auto\") {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [ size.width, size.height ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new Group();\n tmp.transform(new geo.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n }\n else {\n paperSize = \"A4\";\n }\n }\n\n var page;\n page = pdf.addPage({\n paperSize : paperSize,\n margin : getOption(\"margin\", getOption(\"margin\"), options),\n addMargin : addMargin,\n landscape : getOption(\"landscape\", getOption(\"landscape\", false), options)\n });\n drawElement(group, page, pdf);\n }\n\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n\n callback(pdf.render(), pdf);\n }\n\n var count = 2;\n PDF.loadFonts(fonts, doIt);\n PDF.loadImages(images, doIt, {\n jpegQuality : getOption(\"jpegQuality\", 0.92),\n keepPNG : getOption(\"keepPNG\", false)\n });\n}\n\nfunction toDataURL(group, callback) {\n render(group, function(data){\n callback(\"data:application/pdf;base64,\" + data.base64());\n });\n}\n\nfunction toBlob(group, callback) {\n render(group, function(data){\n callback(new window.Blob([ data.get() ], { type: \"application/pdf\" }));\n });\n}\n\nfunction saveAs(group, filename, proxy, callback) {\n // XXX: Safari has Blob, but does not support the download attribute\n // so we'd end up converting to dataURL and using the proxy anyway.\n if (window.Blob && !support.browser.safari) {\n toBlob(group, function(blob){\n util_saveAs({ dataURI: blob, fileName: filename });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function(dataURL){\n util_saveAs({ dataURI: dataURL, fileName: filename, proxyURL: proxy });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n}\n\nfunction dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n}\n\nfunction drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment(\"BEGIN: \" + element.options._pdfDebug);\n }\n\n var transform = element.transform();\n var opacity = element.opacity();\n\n page.save();\n\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n\n setClipping(element, page, pdf);\n\n dispatch({\n Path : drawPath,\n MultiPath : drawMultiPath,\n Circle : drawCircle,\n Arc : drawArc,\n Text : drawText,\n Image : drawImage,\n Group : drawGroup,\n Rect : drawRect\n }, element, page, pdf);\n\n page.restore();\n\n if (element.options._pdfDebug) {\n page.comment(\"END: \" + element.options._pdfDebug);\n }\n}\n\nfunction setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n\n var color = stroke.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no stroke\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return; // no stroke\n }\n page.setLineWidth(width);\n }\n\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n}\n\nfunction setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n\n if (fill instanceof Gradient) {\n return;\n }\n\n var color = fill.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no fill\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n}\n\nfunction setClipping(element, page, pdf) {\n // XXX: only Path supported at the moment.\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n // page.setStrokeColor(Math.random(), Math.random(), Math.random());\n // page.setLineWidth(1);\n // page.stroke();\n }\n}\n\nfunction shouldDraw(thing) {\n return (thing &&\n (thing instanceof Gradient ||\n (thing.color && !/^(none|transparent)$/i.test(thing.color) &&\n (thing.width == null || thing.width > 0) &&\n (thing.opacity == null || thing.opacity > 0))));\n}\n\nfunction maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof RadialGradient;\n var start, end;\n if (isRadial) {\n start = { x: fill.center().x , y: fill.center().y , r: 0 };\n end = { x: fill.center().x , y: fill.center().y , r: fill.radius() };\n } else {\n start = { x: fill.start().x , y: fill.start().y };\n end = { x: fill.end().x , y: fill.end().y };\n }\n\n var stops = fill.stops.elements().map(function(stop){\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n\n // Duplicats first and last stop to fix\n // https://github.com/telerik/kendo-ui-core/issues/1782\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n\n var gradient = {\n userSpace : fill.userSpace(),\n type : isRadial ? \"radial\" : \"linear\",\n start : start,\n end : end,\n stops : stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left : tl.x,\n top : tl.y,\n width : size.width,\n height : size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n}\n\nfunction maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n // we should not get here; the path should have been\n // optimized away. but let's be prepared.\n page.nop();\n }\n}\n\nfunction maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n // detect if this path looks like a rectangle parallel to the axis\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) { // has curve?\n return false;\n }\n a[i] = segments[i].anchor();\n }\n // it's a rectangle if the y/x/y/x or x/y/x/y coords of\n // consecutive points are the same.\n var isRect = (\n a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x\n ) || (\n a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y\n );\n if (isRect) {\n // this saves a bunch of instructions in PDF:\n // moveTo, lineTo, lineTo, lineTo, close -> rect.\n page.rect(a[0].x, a[0].y,\n a[2].x - a[0].x /*width*/,\n a[2].y - a[0].y /*height*/);\n return true;\n }\n }\n}\n\nfunction _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(\n prevOut.x , prevOut.y,\n controlIn.x , controlIn.y,\n anchor.x , anchor.y\n );\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n}\n\nfunction drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(\n points[i].x, points[i++].y,\n points[i].x, points[i++].y,\n points[i].x, points[i++].y\n );\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawText(element, page) {\n var style = PDF.parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE.fillAndStroke;\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE.stroke;\n }\n\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n page.beginText();\n page.setFont(PDF.getFontURL(style), style.fontSize);\n page.setTextRenderingMode(mode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n page.endText();\n}\n\nfunction drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n}\n\nfunction drawImage(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n}\n\nfunction drawRect(element, page, pdf) {\n var geometry = element.geometry();\n const [ rx, ry ] = geometry.cornerRadius;\n if (rx === 0 && ry === 0) {\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n } else {\n drawPath(Path.fromRect(geometry, element.options), page, pdf);\n }\n}\n\nfunction parseColor(value) {\n var color = utils_parseColor(value, true);\n return color ? color.toRGB() : null;\n}\n\nfunction optimize(root) {\n var clipbox = false;\n var matrix = geo.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return { root: root, bbox: currentBox };\n\n function change(newShape) {\n changed = true;\n return newShape;\n }\n\n function visible(shape) {\n return (shape.visible() && shape.opacity() > 0 &&\n ( shouldDraw(shape.fill()) ||\n shouldDraw(shape.stroke()) ));\n }\n\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n\n var clip = shape.clip();\n if (clip) {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? geo.Rect.intersect(clipbox, clip) : clip;\n }\n }\n\n try {\n return f();\n }\n finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n var box = shape.rawBBox().bbox(matrix);\n if (clipbox && box) {\n box = geo.Rect.intersect(box, clipbox);\n }\n return box;\n }\n\n function opt(shape) {\n return withClipping(shape, function(){\n if (!(shape instanceof Group || shape instanceof MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? geo.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function(shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function(shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n var el = new Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n}\n\nfunction exportPDF(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n toDataURL(group, promise.resolve);\n\n return promise;\n}\n\n// XXX: the duplication is in order to keep exportPDF return a data\n// URI, which is what previous versions do. Currently only IE9 does\n// not support Blob, IMO we should switch to Blob by default\n// everywhere.\nfunction exportPDFToBlob(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n if (window.Blob && !support.browser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n\n return promise;\n}\n\n\nexport { exportPDF, exportPDFToBlob, saveAs, toDataURL, toBlob, render };\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Circle extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Circle\";\n }\n\n constructor(geometry = new GeometryCircle(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Circle;\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nclass Element extends HasObservers {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(options) {\n super();\n\n this._initOptions(options);\n }\n\n _initOptions(options = {}) {\n const { clip, transform } = options;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n }\n\n transform(value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n }\n\n parentTransform() {\n let element = this;\n let parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n let transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n }\n\n currentTransform(parentTransform = this.parentTransform()) {\n const elementTransform = this.transform();\n const elementMatrix = toMatrix(elementTransform);\n\n let parentMatrix = toMatrix(parentTransform);\n let combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n }\n\n visible(value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n }\n\n clip(value) {\n const options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n }\n\n opacity(value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n }\n\n className(value) {\n if (defined(value)) {\n this.options.set(\"className\", value);\n return this;\n }\n\n return this.options.get(\"className\");\n }\n\n clippedBBox(transformation) {\n const bbox = this._clippedBBox(transformation);\n if (bbox) {\n const clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const transform = this.currentTransform(parentTransform);\n let transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n }\n\n _hasFill() {\n const fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n }\n\n _hasStroke() {\n const stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n }\n\n _clippedBBox(transformation) {\n return this.bbox(transformation);\n }\n}\n\nexport default Element;\n","import HasObservers from '../core/has-observers';\n\nconst push = [].push;\nconst pop = [].pop;\nconst splice = [].splice;\nconst shift = [].shift;\nconst slice = [].slice;\nconst unshift = [].unshift;\n\nclass ElementsArray extends HasObservers {\n constructor(array = []) {\n super();\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n elements(value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n }\n\n push() {\n const elements = arguments;\n const result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n slice() {\n return slice.call(this);\n }\n\n pop() {\n const length = this.length;\n const result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n splice(index, howMany) {\n const elements = slice.call(arguments, 2);\n const result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n }\n\n shift() {\n const length = this.length;\n const result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n unshift() {\n const elements = arguments;\n const result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n indexOf(element) {\n const length = this.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (this[idx] === element) {\n return idx;\n }\n }\n return -1;\n }\n\n _splice(index, howMany, elements) {\n const result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n }\n\n _add(elements) {\n this._setObserver(elements);\n this._change();\n }\n\n _remove(elements) {\n this._clearObserver(elements);\n this._change();\n }\n\n _setObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this);\n }\n }\n\n _clearObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this);\n }\n }\n\n _change() {}\n}\n\nexport default ElementsArray;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nclass Group extends traversable(Element, \"children\") {\n get nodeType() {\n return \"Group\";\n }\n\n constructor(options) {\n super(options);\n this.children = [];\n }\n\n childrenChange(action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n }\n\n append() {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n }\n\n insert(index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n }\n\n insertAt(element, index) {\n return this.insert(index, element);\n }\n\n remove(element) {\n const index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n removeAt(index) {\n if (0 <= index && index < this.children.length) {\n let element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n clear() {\n const items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n }\n\n bbox(transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n }\n\n rawBBox() {\n return elementsBoundingBox(this.children, false);\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n }\n\n currentTransform(transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const children = this.children;\n const transform = this.currentTransform(parentTransform);\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n }\n\n _reparent(elements, newParent) {\n for (let i = 0; i < elements.length; i++) {\n const child = elements[i];\n const parent = child.parent;\n if (parent && parent !== this && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n }\n}\n\nexport default Group;","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nclass Image extends withGeometry(Element, [ \"rect\" ]) {\n get nodeType() {\n return \"Image\";\n }\n\n constructor(src, rect = new Rect(), options = {}) {\n super(options);\n\n this.src(src);\n this.rect(rect);\n }\n\n src(value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this._rect.bbox();\n }\n\n _containsPoint(point) {\n return this._rect.containsPoint(point);\n }\n\n _hasFill() {\n return this.src();\n }\n}\n\nexport default Image;","import ElementsArray from './elements-array';\n\nclass GeometryElementsArray extends ElementsArray {\n _change() {\n this.geometryChange();\n }\n}\n\nexport default GeometryElementsArray;","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nconst WEIGHT = 0.333;\nconst EXTREMUM_ALLOWED_DEVIATION = 0.01;\nconst X = \"x\";\nconst Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n const points = pointsIn.slice(0);\n const segments = [];\n let length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n let p0 = points[0];\n let p1 = points[1];\n let p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n const tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n let initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n const controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n const tangent = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent, p0, p1, X, Y);\n }\n\n let cp0 = initialControlPoint;\n for (let idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n const controlPoints = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints[1];\n\n const cp1 = controlPoints[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n const controlPoints = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints[0]\n ));\n\n last(segments).controlOut(controlPoints[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n const tangent = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent, p1, p2, X, Y)\n ));\n }\n\n return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n}\n\nexport function invertAxis(p0, p1, p2) {\n let invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n const fn = lineFunction(p0,p1);\n const y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n const fn = lineFunction(p0, p1);\n const y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n const a = (p2.y - p1.y) / (p2.x - p1.x);\n const b = p1.y - a * p1.x;\n\n return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n let xField = X;\n let yField = Y;\n let restrict = false;\n let switchOrientation = false;\n let tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n const monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n let sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n const secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n const oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n const firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n const x = p1[xField] - p0[xField];\n const y = p1[yField] - p0[yField];\n let tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n const controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n const length = fn.length;\n let result = 0;\n\n for (let i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n}\n\nexport function numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nconst SPACE = ' ';\nconst printPoints = (precision) => (...points) => points.map(p => p.toString(precision)).join(SPACE);\nconst segmentType = (segmentStart, segmentEnd) => segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L';\n\nexport class Path extends paintable(measurable(Element)) {\n get nodeType() {\n return 'Path';\n }\n\n constructor(options) {\n super(options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n moveTo(x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n }\n\n lineTo(x, y) {\n const point = defined(y) ? new Point(x, y) : x;\n const segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const start = rad(startAngle);\n const center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n const arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n }\n\n _addArcSegments(arc) {\n this.suspend();\n\n const curvePoints = arc.curvePoints();\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n this.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n }\n\n close() {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n }\n\n rawBBox() {\n return this._bbox();\n }\n\n toString(digits) {\n let output = '';\n\n const segments = this.segments;\n const length = segments.length;\n if (length > 0) {\n const parts = [];\n const print = printPoints(digits);\n let currentType;\n\n for (let i = 1; i < length; i++) {\n let type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n }\n\n _containsPoint(point) {\n const segments = this.segments;\n const length = segments.length;\n let intersectionsCount = 0;\n let previous, current;\n\n for (let idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n }\n\n _isOnPath(point, width) {\n const segments = this.segments;\n const length = segments.length;\n const pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n\n for (let idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n }\n\n _bbox(matrix) {\n const segments = this.segments;\n const length = segments.length;\n let boundingBox;\n\n if (length === 1) {\n let anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (let i = 1; i < length; i++) {\n let segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n }\n\n static parse(str, options) {\n return MultiPath.parse(str, options);\n }\n\n static fromRect(rect, options) {\n const path = new Path(options);\n let [ rx, ry ] = rect.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n const origin = rect.origin;\n const { x, y } = origin;\n const width = rect.width();\n const height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n }\n\n static fromPoints(points, options) {\n if (points) {\n const path = new Path(options);\n\n for (let i = 0; i < points.length; i++) {\n let point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n }\n\n static curveFromPoints(points, options) {\n if (points) {\n const segments = pointsToCurve(points);\n const path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n }\n\n static fromArc(arc, options) {\n const path = new Path(options);\n const startAngle = arc.startAngle;\n const start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n }\n}\n\nexport class MultiPath extends paintable(measurable(Element)) {\n static parse(str, options) {\n const instance = new MultiPath(options);\n return parsePath(instance, str);\n }\n\n toString(digits) {\n const paths = this.paths;\n let output = '';\n\n if (paths.length > 0) {\n const result = [];\n\n for (let i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n }\n\n get nodeType() {\n return 'MultiPath';\n }\n\n constructor(options) {\n super(options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n moveTo(x, y) {\n const path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n }\n\n lineTo(x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n }\n\n close() {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n }\n\n _bbox(matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n }\n\n rawBBox() {\n return elementsBoundingBox(this.paths, false);\n }\n\n _containsPoint(point) {\n const paths = this.paths;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n }\n\n _isOnPath(point) {\n const paths = this.paths;\n const width = this.options.stroke.width;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n }\n}\n\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\n\nclass Rect extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(geometry = new GeometryRect(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _containsPoint(point) {\n return this._geometry.containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Rect;\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nconst DEFAULT_FONT = \"12px sans-serif\";\nconst DEFAULT_FILL = \"#000\";\n\nclass Text extends paintable(withPoints(Element, [ \"position\" ])) {\n get nodeType() {\n return \"Text\";\n }\n\n constructor(content, position = new Point(), options = {}) {\n super(options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n content(value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n }\n\n measure() {\n const metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n }\n\n rect() {\n const size = this.measure();\n const pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this.rect().bbox();\n }\n\n _containsPoint(point) {\n return this.rect().containsPoint(point);\n }\n}\n\nexport default Text;\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import { Class } from '../common';\n\nclass LRUCache extends Class {\n constructor(size) {\n super();\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n put(key, value) {\n const map = this._map;\n const entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n }\n\n get(key) {\n const entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n}\n\nexport default LRUCache;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nconst DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nlet defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nclass TextMetrics extends Class {\n constructor(options) {\n super();\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n measure(text, style, options = {}) {\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n const styleKey = objectKey(style);\n const cacheKey = hashKey(text + styleKey);\n const cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n const size = zeroSize();\n const measureBox = options.box || defaultMeasureBox;\n const baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (let key in style) {\n let value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n const textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n }\n\n _baselineMarker() {\n const marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n}\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","const REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nconst SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n const parts = [];\n for (let key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n let hash = 0x811C9DC5;\n\n for (let i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nconst literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n const values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n let roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}\n","const DEG_TO_RAD = Math.PI / 180;\nconst MAX_NUM = Number.MAX_VALUE;\nconst MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","export default function createPromise() {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = (data) => {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = (data) => {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = () => promise._state;\n\n return promise;\n}\n","const UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","let defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","import { encodeUTF8 } from './encode-utf';\n\nconst KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n let output = \"\";\n let i = 0;\n\n const utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n let chr1 = utfInput.charCodeAt(i++);\n let chr2 = utfInput.charCodeAt(i++);\n let chr3 = utfInput.charCodeAt(i++);\n\n let enc1 = chr1 >> 2;\n let enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n let enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n let enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","const fromCharCode = String.fromCharCode;\n\nexport const BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n let code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n const hi = code;\n const low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n let output = '';\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n const lead = ((c - 0x10000) >> 10) + 0xD800;\n const trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n const power = pow(precision);\n return Math.round(value * power) / power;\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","export function saveAs(data, fileName, options = {}) {\n let save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nconst anchor = () => document.createElement('a');\nconst canDownload = () => 'download' in anchor();\n\nfunction saveAsBlob(data, fileName) {\n let blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n const parts = data.split(';base64,');\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n let dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n const fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n const e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(() => URL.revokeObjectURL(dataURI));\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n const form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n const formData = options.proxyData || {};\n formData.fileName = fileName;\n\n const parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (let name in formData) {\n if (formData.hasOwnProperty(name)) {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","const KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n const input = encodeUTF8(plainText);\n let output = \"\";\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\nvar Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\nvar Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//export var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//export var Z_VERSION_ERROR = -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION = 0;\nvar Z_BEST_SPEED = 1;\nvar Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//export var Z_ASCII = 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n//export var Z_NULL = null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n}\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n },\n Buf8: function(size) {\n return new Uint8Array(size);\n },\n Buf16: function(size) {\n return new Uint16Array(size);\n },\n Buf32: function(size) {\n return new Int32Array(size);\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n },\n Buf8: function(size) {\n return new Array(size);\n },\n Buf16: function(size) {\n return new Array(size);\n },\n Buf32: function(size) {\n return new Array(size);\n }\n};\n\nlet typedOK = () => {\n const supported =\n (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n typedOK = () => supported;\n return supported;\n};\n\nlet arraySet = (dest, src, src_offs, len, dest_offs) => {\n arraySet = typedOK() ?\n fnTyped.arraySet : fnUntyped.arraySet;\n\n return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nlet flattenChunks = (chunks) => {\n flattenChunks = typedOK() ?\n fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n return flattenChunks(chunks);\n};\n\nlet Buf8 = (size) => {\n Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n return Buf8(size);\n};\n\nlet Buf16 = (size) => {\n Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n return Buf16(size);\n};\n\nlet Buf32 = (size) => {\n Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nlet strApplyOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, [ 0 ]);\n } catch (_) {\n result = false;\n }\n\n strApplyOK = () => result;\n return result;\n};\n\nlet strApplyUintOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (_) {\n result = false;\n }\n\n strApplyUintOK = () => result;\n return result;\n};\n\nlet utf8len = function(c) {\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n var table = Buf8(256);\n for (var q = 0; q < 256; q++) {\n table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n table[254] = table[254] = 1; // Invalid sequence start\n\n utf8len = arg => table[arg];\n return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n var buf = new Uint8Array(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nfunction utf8border(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\nlet crcTable = function() {\n const table = makeTable();\n crcTable = () => table;\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable(),\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nfunction inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\nvar Z_TREES$1 = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\nvar Z_NEED_DICT$1 = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = Buf16(320); /* temporary storage for code lengths */\n this.work = Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = Buf32(512);\n distfix = Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES$1) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nclass Inflate {\n constructor(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n }\n\n /**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate(strm, Z_NO_FLUSH); /* no bad return value */\n\n if (status === Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === Z_BUF_ERROR && allowBufError === true) {\n status = Z_OK;\n allowBufError = false;\n }\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n if (status === Z_STREAM_END) {\n _mode = Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block, or NULL if too old */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1 = 30;\n/* number of distance codes */\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH$1;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nlet configurationTable = function() {\n const table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n \n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n configurationTable = () => table;\n return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n const table = configurationTable();\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = table[s.level].max_lazy;\n s.good_match = table[s.level].good_length;\n s.nice_match = table[s.level].nice_length;\n s.max_chain_length = table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = Buf16(HEAP_SIZE$1 * 2);\n this.dyn_dtree = Buf16((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = Buf16((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = Buf16(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = Buf16(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = Buf8(s.w_size * 2);\n s.head = Buf16(s.hash_size);\n s.prev = Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configurationTable()[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = Buf8(s.w_size);\n arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nclass Deflate {\n constructor(options) {\n this.options = assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n }\n\n /**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","const proxy = (a, b) => (e) => b(a(e));\n\nconst bind = (el, event, callback) =>\n el.addEventListener && el.addEventListener(event, callback);\n\nconst unbind = (el, event, callback) =>\n el && el.removeEventListener && el.removeEventListener(event, callback);\n\nconst noop = () => { /* empty */ };\n\nconst preventDefault = e => e.preventDefault();\n\nconst touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nconst IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport class Draggable {\n static supportPointerEvent() {\n return (typeof window !== 'undefined') && window.PointerEvent;\n }\n\n get document() {\n return this._element\n ? this._element.ownerDocument\n : document;\n }\n\n constructor({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = (e) => {\n if (e.touches.length === 1) {\n this._pressHandler(e);\n }\n };\n\n this._touchmove = (e) => {\n if (e.touches.length === 1) {\n this._dragHandler(e);\n }\n };\n\n this._touchend = (e) => {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this._releaseHandler(e);\n this._ignoreMouse = true;\n setTimeout(this._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = () => {\n this._ignoreMouse = false;\n };\n\n this._mousedown = (e) => {\n const { which } = e;\n\n if ((which && which > 1) || this._ignoreMouse) {\n return;\n }\n\n bind(this.document, \"mousemove\", this._mousemove);\n bind(this.document, \"mouseup\", this._mouseup);\n this._pressHandler(e);\n };\n\n this._mousemove = (e) => {\n this._dragHandler(e);\n };\n\n this._mouseup = (e) => {\n unbind(this.document, \"mousemove\", this._mousemove);\n unbind(this.document, \"mouseup\", this._mouseup);\n this._releaseHandler(e);\n };\n\n this._pointerdown = (e) => {\n if (e.isPrimary && e.button === 0) {\n bind(this.document, \"pointermove\", this._pointermove);\n bind(this.document, \"pointerup\", this._pointerup);\n bind(this.document, \"pointercancel\", this._pointerup);\n bind(this.document, \"contextmenu\", preventDefault);\n\n this._pressHandler(e);\n }\n };\n\n this._pointermove = (e) => {\n if (e.isPrimary) {\n this._dragHandler(e);\n }\n };\n\n this._pointerup = (e) => {\n if (e.isPrimary) {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n\n this._releaseHandler(e);\n }\n };\n }\n\n bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n }\n\n _bindToCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n }\n\n _unbindFromCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n }\n\n _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n }\n\n update({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n }\n\n destroy() {\n this._unbindFromCurrent();\n this._element = null;\n }\n}\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","export default function isString(value) {\n return typeof value === \"string\";\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import errorDetails from './error-details';\n\nconst formatRegExp = /\\{(\\d+)}?\\}/g;\n\nclass IntlError {\n constructor({ name, message }) {\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n }\n\n formatMessage(...values) {\n const flattenValues = flatten(values);\n\n const formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return `${this.name}: ${formattedMessage}`;\n }\n\n error(...values) {\n return new Error(this.formatMessage(values));\n }\n}\n\nconst flatten = function(arr) {\n return arr.reduce((a, b) => a.concat(b), []);\n};\n\nconst toIntlErrors = function(errors) {\n const predicate = function(prev, name) {\n prev[name] = new IntlError({ name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nconst errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n const parts = fullName.split(\"-\");\n const language = parts[0];\n const script = parts[1];\n const territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n\n for (let idx = 0; idx < suffixes.length; idx++) {\n let name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport const cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n let info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n const likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n const parts = locale.split(\"-\");\n const language = parts[0];\n const suffixes = parts.slice(1);\n const fullName = localeFullName(language, suffixes);\n const info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","const defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _number: \"$Revision: 12418 $\",\n _cldrVersion: \"29\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n weekday: {\n wide: \"day of the week\"\n },\n dayperiod: {\n wide: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n millisecond: {\n wide: \"millisecond\",\n short: \"ms\",\n narrow: \"ms\"\n },\n zone: {\n wide: \"time zone\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","export const DECIMAL = \"decimal\";\nexport const CURRENCY = \"currency\";\nexport const ACCOUNTING = \"accounting\";\nexport const PERCENT = \"percent\";\nexport const SCIENTIFIC = \"scientific\";\n\nexport const CURRENCY_PLACEHOLDER = \"$\";\nexport const PERCENT_PLACEHOLDER = \"%\";\nexport const NUMBER_PLACEHOLDER = \"n\";\n\nexport const LIST_SEPARATOR = \";\";\nexport const GROUP_SEPARATOR = \",\";\n\nexport const POINT = \".\";\nexport const EMPTY = \"\";\n\nexport const DEFAULT_LOCALE = \"en\";\n\n","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\n\nconst LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nconst LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\n\nconst patternRegExp = /([#,0.]+)/g;\nconst cldrCurrencyRegExp = /¤/g;\n\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\n\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n\n const numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n const integer = numberPatterns[0];\n\n const groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function(group) {\n return group.length;\n }).reverse();\n\n return groupSize;\n}\n\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (let field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\n\nexport default function loadNumbersInfo(locale, info) {\n const localeInfo = cldr[locale];\n const numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (let field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n const style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n const pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\n\nconst predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\n\nconst YEAR_REGEX = /y+/g;\nconst SHORT_DATE = [ [ \"dateFormats\", \"short\" ] ];\n\nconst datePatterns = {\n D: [ [ \"dateFormats\", \"full\" ] ],\n m: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMd\" ] ],\n M: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMMd\" ] ],\n y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMM\" ] ],\n Y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMMM\" ] ],\n F: [ [ \"dateFormats\", \"full\" ], [ \"timeFormats\", \"medium\" ] ],\n g: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"short\" ] ],\n G: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"medium\" ] ],\n t: [ [ \"timeFormats\", \"short\" ] ],\n T: [ [ \"timeFormats\", \"medium\" ] ]\n};\n\nfunction toArray(obj) {\n let result = [];\n let names = Object.getOwnPropertyNames(obj);\n for (let idx = 0; idx < names.length; idx++) {\n let value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\n\nfunction getCalendarNames(info, isObj) {\n const result = {};\n for (let formatType in info) {\n let names = result[formatType] = {};\n for (let format in info[formatType]) {\n let formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\n\nfunction getEraNames(eras) {\n const result = {};\n const format = result.format = {};\n const eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n\n for (let eraFormatName in eras) {\n let formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n\n return result;\n}\n\nfunction loadCalendarNames(locale, calendar) {\n const localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n\n localeCalendar.eras = getEraNames(calendar.eras);\n}\n\nfunction loadCalendarDateFields(locale, fields) {\n const localeCalendar = cldr[locale].calendar;\n const dateFields = {};\n\n for (let field in fields) {\n const [ fieldName, formatType = 'wide' ] = field.split('-');\n const fieldInfo = dateFields[fieldName] || {};\n const displayName = fields[field].displayName;\n\n if (!displayName) { continue; }\n\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n\n localeCalendar.dateFields = dateFields;\n}\n\nfunction getPredefinedFormat(paths, calendar) {\n const result = [];\n\n for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n let fields = paths[ pathIdx ];\n let pattern = calendar;\n for (let idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n\n return result.join(\" \");\n}\n\nfunction loadCalendarPatterns(locale, calendar) {\n const cldrCalendar = cldr[locale].calendar;\n const patterns = cldrCalendar.patterns = {};\n\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n\n for (let pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n\n for (let pattern in predefinedDatePatterns) {\n patterns[pattern] = predefinedDatePatterns[pattern];\n }\n\n const dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\n\n\nexport default function loadCalendarInfo(locale, info) {\n const calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (let field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}\n","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n let parts = name.split(\"-\");\n if (likelySubtags) {\n const likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (let idx = parts.length - 1; idx >= 1; idx--) {\n const part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n const length = parts.length;\n\n if (length > 1) {\n const territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n const name = info.name;\n const identity = info.identity;\n let territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\n\nfunction loadLocale(locale, info) {\n for (let field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\n\nexport default function load() {\n const length = arguments.length;\n for (let idx = 0; idx < length; idx++) {\n let entry = arguments[idx];\n if (entry.main) {\n let locale = Object.keys(entry.main)[0];\n let info = entry.main[locale];\n let localeInfo = cldr[locale] = cldr[locale] || {};\n\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n const currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n const fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n const result = [];\n for (let idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n const result = {};\n for (let field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n let result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n const { type, nameType, standAlone, lower } = options;\n const info = getLocaleInfo(locale);\n const formatType = standAlone ? \"stand-alone\" : \"format\";\n const lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n const formatNames = info.calendar[type][formatType];\n let result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","export default function parseRangeDate(value) {\n const parts = value.split('-');\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nconst {\n NoCurrency,\n NoCurrencyDisplay,\n NoSupplementalCurrency,\n NoCurrencyRegion,\n NoValidCurrency\n} = errors;\n\nconst DEFAULT_CURRENCY_FRACTIONS = 2;\nconst SYMBOL = \"symbol\";\nconst INVALID_CURRENCY_CODE = 'XXX';\n\nconst GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n const currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n let latestValidUntil, latestValidUntilRange;\n let latestStillValid, latestStillValidDate;\n\n for (let idx = 0; idx < regionCurrencies.length; idx++) {\n const currency = regionCurrencies[idx];\n const code = Object.keys(currency)[0];\n const info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n const stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n const validFrom = parseRangeDate(info._from);\n const validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid = true) {\n const currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n const displays = [ currency ];\n for (let field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n const { value, currency, currencyDisplay = SYMBOL } = options;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n const currencyInfo = getCurrencyInfo(locale, currency, true);\n let result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === undefined || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n let minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n let maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n const fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid = true) {\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n const currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n const regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n const currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n const currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","\nexport const DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport const DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData, NoFirstDay } = errors;\n\nexport default function firstDay(locale) {\n const info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData } = errors;\n\nexport default function weekendRange(locale) {\n const info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const territory = localeTerritory(info);\n const start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n const end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n const info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options = {}) {\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n const display = currencyDisplay(info, options);\n\n return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n const symbols = info.numbers.symbols;\n const decimalIndex = number.indexOf(symbols.decimal);\n const groupSizes = options.groupSize.slice();\n let groupSize = groupSizes.shift();\n\n let integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n let integer = number.substring(start, integerEnd);\n let result = number;\n const integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n let idx = integerLength;\n let parts = [];\n\n while (idx > -1) {\n let value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n let newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits = 2, right = false) {\n const count = digits - String(number).length;\n let result = number;\n\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","const MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n let result = value;\n let decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nconst DEFAULT_DECIMAL_ROUNDING = 3;\nconst DEFAULT_PERCENT_ROUNDING = 0;\n\nconst trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n let { minimumFractionDigits, maximumFractionDigits, style } = options;\n const isCurrency = isCurrencyStyle(style);\n let currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n let result = EMPTY;\n for (let idx = 0, length = pattern.length; idx < length; idx++) {\n let ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n const currencyInfo = info.numbers.currency;\n let pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, `-${ NUMBER_PLACEHOLDER }`);\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n const symbols = info.numbers.symbols;\n const { style } = options;\n const isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n let exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n let value = number;\n let symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n const { minimumFractionDigits, maximumFractionDigits } = fractionOptions(options);\n\n value = round(value, maximumFractionDigits);\n\n const negative = value < 0;\n const negativeZero = isNegativeZero(number);\n\n const parts = value.split(POINT);\n\n let integer = parts[0];\n let fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n let formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n let pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n const patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n const result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nconst literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nconst PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n const format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n let format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n const literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n const quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n const literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n let result = number;\n if (literals) {\n const length = literals.length;\n for (let idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nconst SHARP = \"#\";\nconst ZERO = \"0\";\n\nconst trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nconst trailingPointRegExp = /\\.$/;\nconst commaRegExp = /\\,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n let trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp(`(\\\\.[0-9]{${ lastZero }}[1-9]*)0+$`, 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n let { number, format } = formatOptions;\n let decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n const zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n const sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n const hasZero = zeroIndex > -1;\n const hasSharp = sharpIndex > -1;\n let fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n let precision = fraction.length;\n let trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n let { number, format } = formatOptions;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n const zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n let index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n const format = formatOptions.format;\n let sharpIndex = format.indexOf(SHARP);\n let zeroIndex = format.indexOf(ZERO);\n\n let start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n let end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n let result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (let idx = 0, length = number.length; idx < length; idx++) {\n let ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n const { start, end, negative, negativeZero, format, decimalIndex, lastZeroIndex, hasNegativeFormat, hasGroup } = formatOptions;\n let number = formatOptions.number;\n const value = number.toString().split(POINT);\n const length = format.length;\n const integer = value[0];\n const fraction = value[1] || EMPTY;\n const integerLength = integer.length;\n let replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (let idx = start; idx < length; idx++) {\n let ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n let number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n const formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nconst standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n const formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n const options = {\n style: DECIMAL\n };\n\n let style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n let options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format = NUMBER_PLACEHOLDER, locale = DEFAULT_LOCALE) {\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n const info = localeInfo(locale);\n const options = formatOptions(format);\n\n let result;\n if (options) {\n const style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nconst exponentRegExp = /[eE][\\-+]?[0-9]+/;\nconst nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n const parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n const options = formatOptions(format) || {};\n let isCurrency = isCurrencyStyle(options.style);\n let number = value;\n let negative;\n\n const currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n const displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (let idx = 0; idx < displays.length; idx++) {\n let display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n const cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n const literals = formatOptions.literals;\n let result = number;\n\n if (literals) {\n for (let idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nexport default function parseNumber(value, locale = DEFAULT_LOCALE, format = {}) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n const info = localeInfo(locale);\n const symbols = info.numbers.symbols;\n\n let number = value.toString();\n let formatOptions = format || {};\n let isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n const { negative: negativeCurrency, number: currencyNumber } = cleanCurrencyNumber(number, info, formatOptions);\n number = String(currencyNumber).trim();\n\n const negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n let isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number /= 100;\n }\n\n return number;\n}\n","const formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n const values = arguments;\n\n return format.replace(formatRegExp, (match, index) => {\n const value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nconst REMOVAL_PENALTY = 120;\nconst ADDITION_PENALTY = 20;\nconst LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nconst LONG_LESS_PENALTY_DELTA = -2;\nconst SHORT_LESS_PENALTY_DELTA = -1;\nconst SHORT_MORE_PENALTY_DELTA = 1;\nconst LONG_MORE_PENALTY_DELTA = 2;\n\nconst PENALTIES = {\n [LONG_LESS_PENALTY_DELTA.toString()]: 8,\n [SHORT_LESS_PENALTY_DELTA.toString()]: 6,\n [LONG_MORE_PENALTY_DELTA.toString()]: 6,\n [SHORT_MORE_PENALTY_DELTA.toString()]: 3\n};\n\nconst VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nconst TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nconst DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nconst STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nconst specifiersRegex = {};\nconst resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n const result = [];\n let current = skeleton.charAt(0);\n let specifier = current;\n for (let idx = 1; idx < skeleton.length; idx++) {\n let character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n const specifiersLength = specifiers.length;\n let maxScore = -Number.MAX_VALUE;\n let bestMatches, result;\n for (let format in availableFormats) {\n const matches = [];\n let currentFormat = format.replace(\"v\", \"z\");\n let score = 0;\n for (let idx = 0; idx < specifiersLength; idx++) {\n const specifier = specifiers[idx];\n let specifierRegex = getSpecifierRegex(specifier[0]);\n let match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n let delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (let idx = 0; idx < specifiersLength; idx++) {\n const bestMatch = bestMatches[idx];\n if (bestMatch && bestMatch !== specifiers[idx]) {\n const matchSpecifier = bestMatches[idx][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n const availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n const timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n let result;\n if (timeStartIndex > 0) {\n const dateSkeleton = skeleton.substr(0, timeStartIndex);\n const timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n let result = [];\n for (let idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n let option = DATE_OPTIONS_MAP[idx];\n let field = option.key;\n let value = options[field];\n if (value) {\n let spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n const calendar = info.calendar;\n let result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n let skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","export default function dateNameType(formatLength) {\n let nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","const MONTH = 'month';\nconst HOUR = 'hour';\nconst ZONE = 'zone';\nconst WEEKDAY = 'weekday';\nconst QUARTER = 'quarter';\n\nconst DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nconst dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n const firstDayIndex = firstDay(localeInfo);\n let dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n const quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n const { shortHours, optionalMinutes, separator, localizedName, zZeroOffset } = options;\n const offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n const sign = offset <= 0 ? \"+\" : \"-\";\n const hoursMinutes = Math.abs(offset).toString().split(\".\");\n const minutes = hoursMinutes[1] || 0;\n let result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n const localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n let result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nconst formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n let year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n const hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n const milliseconds = date.getMilliseconds();\n let result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n let era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale = DEFAULT_LOCALE) {\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n let formatLength = match.length;\n let result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n const fromLocalOffset = date.getTimezoneOffset();\n\n const offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n const toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nconst timeZoneOffsetRegExp = /([+|\\-]\\d{1,2})(:?)(\\d{2})?/;\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst offsetRegExp = /[+-]\\d*/;\nconst numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nconst numberRegex = /\\d+/;\nconst PLACEHOLDER = \"{0}\";\n\nconst leadingSpacesRegex = /^ */;\nconst trailingSpacesRegex = / *$/;\n\nconst standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nconst FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nconst TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n let { format, idx } = state;\n let i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n let regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n let i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n let result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n const { gmtFormat, gmtZeroFormat } = calendar;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n const { shortHours, noSeparator, optionalMinutes, localizedName, zLiteral } = options;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n const matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n const hoursMatch = matches[1];\n const minutesMatch = matches[3];\n const hoursOffset = parseInt(hoursMatch, 10);\n const separator = matches[2];\n let minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n const month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"days\", count, ch === \"c\", true);\n let dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nconst parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n const day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n const count = lookAhead(\"E\", state);\n //validate if it matches the day?\n let dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n const count = lookAhead(\"y\", state);\n let year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n const currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n let hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n const count = lookAhead(\"a\", state);\n let periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n const pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n const hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n const minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n const seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n const count = lookAhead(\"S\", state);\n const match = state.value.substr(state.valueIdx, count);\n let milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n const count = lookAhead(\"z\", state);\n\n const shortFormat = count < 4;\n\n const invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n const count = lookAhead(\"Z\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n const count = lookAhead(\"x\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n const count = lookAhead(\"X\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n const count = lookAhead(\"G\", state);\n const eras = formatNames(info, \"eras\", count, false, true);\n const era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n let { year, month, day, hours, minutes, seconds, milliseconds, pmHour, UTC, hoursOffset, minutesOffset } = state;\n const hasTime = hours !== null || minutes !== null || seconds || null;\n const date = new Date();\n let result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n const leadingSpaces = leadingSpacesRegex.exec(format)[0];\n const trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return `${ leadingSpaces }${ value }${ trailingSpaces }`;\n}\n\nfunction parseExact(value, format, info) {\n let pattern = datePattern(format, info).split(EMPTY);\n\n const state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n const length = pattern.length;\n let literal = false;\n\n for (; state.idx < length; state.idx++) {\n let ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n let invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n const sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n let result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n let date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n let tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n const formats = [];\n const patterns = calendar.patterns;\n const length = FORMATS_SEQUENCE.length;\n\n for (let idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale = DEFAULT_LOCALE) {\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n let parseValue = String(value).trim();\n let date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n const info = localeInfo(locale);\n let parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n const length = parseFormats.length;\n\n for (let idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nconst NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nconst LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n const lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n const parts = [];\n let lastIndex = dateFormatRegExp.lastIndex = 0;\n let match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n let value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n const specifier = value[0];\n const type = DATE_FIELD_MAP[specifier];\n const part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n const names = NAME_TYPES[type];\n\n if (names) {\n const minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n const patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nconst formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar Positioning = (function () {\n function Positioning() {\n }\n Positioning.prototype.getAllStyles = function (element) { return window.getComputedStyle(element); };\n Positioning.prototype.getStyle = function (element, prop) { return this.getAllStyles(element)[prop]; };\n Positioning.prototype.isStaticPositioned = function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n Positioning.prototype.offsetParent = function (element) {\n var offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n };\n Positioning.prototype.position = function (element, round) {\n if (round === void 0) { round = true; }\n var elPosition;\n var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n }\n else {\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n Positioning.prototype.offset = function (element, round) {\n if (round === void 0) { round = true; }\n var elBcr = element.getBoundingClientRect();\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n Positioning.prototype.positionElements = function (hostElement, targetElement, placement, appendToBody) {\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n var targetElStyles = this.getAllStyles(targetElement);\n var targetElBCR = targetElement.getBoundingClientRect();\n var placementPrimary = placement.split('-')[0] || 'top';\n var placementSecondary = placement.split('-')[1] || 'center';\n var targetElPosition = {\n 'height': targetElBCR.height || targetElement.offsetHeight,\n 'width': targetElBCR.width || targetElement.offsetWidth,\n 'top': 0,\n 'bottom': targetElBCR.height || targetElement.offsetHeight,\n 'left': 0,\n 'right': targetElBCR.width || targetElement.offsetWidth\n };\n switch (placementPrimary) {\n case 'top':\n targetElPosition.top =\n hostElPosition.top - (targetElement.offsetHeight + parseFloat(targetElStyles.marginBottom));\n break;\n case 'bottom':\n targetElPosition.top = hostElPosition.top + hostElPosition.height;\n break;\n case 'left':\n targetElPosition.left =\n hostElPosition.left - (targetElement.offsetWidth + parseFloat(targetElStyles.marginRight));\n break;\n case 'right':\n targetElPosition.left = hostElPosition.left + hostElPosition.width;\n break;\n }\n switch (placementSecondary) {\n case 'top':\n targetElPosition.top = hostElPosition.top;\n break;\n case 'bottom':\n targetElPosition.top = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n targetElPosition.left = hostElPosition.left;\n break;\n case 'right':\n targetElPosition.left = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n targetElPosition.left = hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2;\n }\n else {\n targetElPosition.top = hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2;\n }\n break;\n }\n targetElPosition.top = Math.round(targetElPosition.top);\n targetElPosition.bottom = Math.round(targetElPosition.bottom);\n targetElPosition.left = Math.round(targetElPosition.left);\n targetElPosition.right = Math.round(targetElPosition.right);\n return targetElPosition;\n };\n // get the availble placements of the target element in the viewport dependeing on the host element\n Positioning.prototype.getAvailablePlacements = function (hostElement, targetElement) {\n var availablePlacements = [];\n var hostElemClientRect = hostElement.getBoundingClientRect();\n var targetElemClientRect = targetElement.getBoundingClientRect();\n var html = document.documentElement;\n var windowHeight = window.innerHeight || html.clientHeight;\n var windowWidth = window.innerWidth || html.clientWidth;\n var hostElemClientRectHorCenter = hostElemClientRect.left + hostElemClientRect.width / 2;\n var hostElemClientRectVerCenter = hostElemClientRect.top + hostElemClientRect.height / 2;\n // left: check if target width can be placed between host left and viewport start and also height of target is\n // inside viewport\n if (targetElemClientRect.width < hostElemClientRect.left) {\n // check for left only\n if (hostElemClientRectVerCenter > targetElemClientRect.height / 2 &&\n windowHeight - hostElemClientRectVerCenter > targetElemClientRect.height / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'left');\n }\n // check for left-top and left-bottom\n this.setSecondaryPlacementForLeftRight(hostElemClientRect, targetElemClientRect, 'left', availablePlacements);\n }\n // top: target height is less than host top\n if (targetElemClientRect.height < hostElemClientRect.top) {\n if (hostElemClientRectHorCenter > targetElemClientRect.width / 2 &&\n windowWidth - hostElemClientRectHorCenter > targetElemClientRect.width / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'top');\n }\n this.setSecondaryPlacementForTopBottom(hostElemClientRect, targetElemClientRect, 'top', availablePlacements);\n }\n // right: check if target width can be placed between host right and viewport end and also height of target is\n // inside viewport\n if (windowWidth - hostElemClientRect.right > targetElemClientRect.width) {\n // check for right only\n if (hostElemClientRectVerCenter > targetElemClientRect.height / 2 &&\n windowHeight - hostElemClientRectVerCenter > targetElemClientRect.height / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'right');\n }\n // check for right-top and right-bottom\n this.setSecondaryPlacementForLeftRight(hostElemClientRect, targetElemClientRect, 'right', availablePlacements);\n }\n // bottom: check if there is enough space between host bottom and viewport end for target height\n if (windowHeight - hostElemClientRect.bottom > targetElemClientRect.height) {\n if (hostElemClientRectHorCenter > targetElemClientRect.width / 2 &&\n windowWidth - hostElemClientRectHorCenter > targetElemClientRect.width / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'bottom');\n }\n this.setSecondaryPlacementForTopBottom(hostElemClientRect, targetElemClientRect, 'bottom', availablePlacements);\n }\n return availablePlacements;\n };\n /**\n * check if secondary placement for left and right are available i.e. left-top, left-bottom, right-top, right-bottom\n * primaryplacement: left|right\n * availablePlacementArr: array in which available placemets to be set\n */\n Positioning.prototype.setSecondaryPlacementForLeftRight = function (hostElemClientRect, targetElemClientRect, primaryPlacement, availablePlacementArr) {\n var html = document.documentElement;\n // check for left-bottom\n if (targetElemClientRect.height <= hostElemClientRect.bottom) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-bottom');\n }\n if ((window.innerHeight || html.clientHeight) - hostElemClientRect.top >= targetElemClientRect.height) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-top');\n }\n };\n /**\n * check if secondary placement for top and bottom are available i.e. top-left, top-right, bottom-left, bottom-right\n * primaryplacement: top|bottom\n * availablePlacementArr: array in which available placemets to be set\n */\n Positioning.prototype.setSecondaryPlacementForTopBottom = function (hostElemClientRect, targetElemClientRect, primaryPlacement, availablePlacementArr) {\n var html = document.documentElement;\n // check for left-bottom\n if ((window.innerWidth || html.clientWidth) - hostElemClientRect.left >= targetElemClientRect.width) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-left');\n }\n if (targetElemClientRect.width <= hostElemClientRect.right) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-right');\n }\n };\n return Positioning;\n}());\nexport { Positioning };\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(hostElement, targetElement, placement, appendToBody) {\n var placementVals = Array.isArray(placement) ? placement : [placement];\n // replace auto placement with other placements\n var hasAuto = placementVals.findIndex(function (val) { return val === 'auto'; });\n if (hasAuto >= 0) {\n ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top',\n 'left-bottom', 'right-top', 'right-bottom',\n ].forEach(function (obj) {\n if (placementVals.find(function (val) { return val.search('^' + obj) !== -1; }) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n var topVal = 0, leftVal = 0;\n var appliedPlacement;\n // get available placements\n var availablePlacements = positionService.getAvailablePlacements(hostElement, targetElement);\n var _loop_1 = function (item, index) {\n // check if passed placement is present in the available placement or otherwise apply the last placement in the\n // passed placement list\n if ((availablePlacements.find(function (val) { return val === item; }) != null) || (placementVals.length === index + 1)) {\n appliedPlacement = item;\n var pos = positionService.positionElements(hostElement, targetElement, item, appendToBody);\n topVal = pos.top;\n leftVal = pos.left;\n return \"break\";\n }\n };\n // iterate over all the passed placements\n for (var _i = 0, _a = toItemIndexes(placementVals); _i < _a.length; _i++) {\n var _b = _a[_i], item = _b.item, index = _b.index;\n var state_1 = _loop_1(item, index);\n if (state_1 === \"break\")\n break;\n }\n targetElement.style.top = topVal + \"px\";\n targetElement.style.left = leftVal + \"px\";\n return appliedPlacement;\n}\n// function to get index and item of an array\nfunction toItemIndexes(a) {\n return a.map(function (item, index) { return ({ item: item, index: index }); });\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexport var DAYS_OF_WEEK;\n(function (DAYS_OF_WEEK) {\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SUNDAY\"] = 0] = \"SUNDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"MONDAY\"] = 1] = \"MONDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"TUESDAY\"] = 2] = \"TUESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"WEDNESDAY\"] = 3] = \"WEDNESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"THURSDAY\"] = 4] = \"THURSDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"FRIDAY\"] = 5] = \"FRIDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SATURDAY\"] = 6] = \"SATURDAY\";\n})(DAYS_OF_WEEK || (DAYS_OF_WEEK = {}));\nvar DEFAULT_WEEKEND_DAYS = [\n DAYS_OF_WEEK.SUNDAY,\n DAYS_OF_WEEK.SATURDAY\n];\nvar DAYS_IN_WEEK = 7;\nvar HOURS_IN_DAY = 24;\nvar MINUTES_IN_HOUR = 60;\nexport var SECONDS_IN_DAY = 60 * 60 * 24;\nfunction getExcludedSeconds(dateAdapter, _a) {\n var startDate = _a.startDate, seconds = _a.seconds, excluded = _a.excluded, _b = _a.precision, precision = _b === void 0 ? 'days' : _b;\n if (excluded.length < 1) {\n return 0;\n }\n var addSeconds = dateAdapter.addSeconds, getDay = dateAdapter.getDay, addDays = dateAdapter.addDays;\n var endDate = addSeconds(startDate, seconds - 1);\n var dayStart = getDay(startDate);\n var dayEnd = getDay(endDate);\n var result = 0; // Calculated in seconds\n var current = startDate;\n var _loop_1 = function () {\n var day = getDay(current);\n if (excluded.some(function (excludedDay) { return excludedDay === day; })) {\n result += calculateExcludedSeconds(dateAdapter, {\n dayStart: dayStart,\n dayEnd: dayEnd,\n day: day,\n precision: precision,\n startDate: startDate,\n endDate: endDate\n });\n }\n current = addDays(current, 1);\n };\n while (current < endDate) {\n _loop_1();\n }\n return result;\n}\nfunction calculateExcludedSeconds(dateAdapter, _a) {\n var precision = _a.precision, day = _a.day, dayStart = _a.dayStart, dayEnd = _a.dayEnd, startDate = _a.startDate, endDate = _a.endDate;\n var differenceInSeconds = dateAdapter.differenceInSeconds, endOfDay = dateAdapter.endOfDay, startOfDay = dateAdapter.startOfDay;\n if (precision === 'minutes') {\n if (day === dayStart) {\n return differenceInSeconds(endOfDay(startDate), startDate) + 1;\n }\n else if (day === dayEnd) {\n return differenceInSeconds(endDate, startOfDay(endDate)) + 1;\n }\n }\n return SECONDS_IN_DAY;\n}\nfunction getWeekViewEventSpan(dateAdapter, _a) {\n var event = _a.event, offset = _a.offset, startOfWeekDate = _a.startOfWeekDate, excluded = _a.excluded, _b = _a.precision, precision = _b === void 0 ? 'days' : _b, totalDaysInView = _a.totalDaysInView;\n var max = dateAdapter.max, differenceInSeconds = dateAdapter.differenceInSeconds, addDays = dateAdapter.addDays, endOfDay = dateAdapter.endOfDay, differenceInDays = dateAdapter.differenceInDays;\n var span = SECONDS_IN_DAY;\n var begin = max(event.start, startOfWeekDate);\n if (event.end) {\n switch (precision) {\n case 'minutes':\n span = differenceInSeconds(event.end, begin);\n break;\n default:\n span =\n differenceInDays(addDays(endOfDay(event.end), 1), begin) *\n SECONDS_IN_DAY;\n break;\n }\n }\n var offsetSeconds = offset * SECONDS_IN_DAY;\n var totalLength = offsetSeconds + span;\n // the best way to detect if an event is outside the week-view\n // is to check if the total span beginning (from startOfWeekDay or event start) exceeds the total days in the view\n var secondsInView = totalDaysInView * SECONDS_IN_DAY;\n if (totalLength > secondsInView) {\n span = secondsInView - offsetSeconds;\n }\n span -= getExcludedSeconds(dateAdapter, {\n startDate: begin,\n seconds: span,\n excluded: excluded,\n precision: precision\n });\n return span / SECONDS_IN_DAY;\n}\nexport function getWeekViewEventOffset(dateAdapter, _a) {\n var event = _a.event, startOfWeekDate = _a.startOfWeek, _b = _a.excluded, excluded = _b === void 0 ? [] : _b, _c = _a.precision, precision = _c === void 0 ? 'days' : _c;\n var differenceInDays = dateAdapter.differenceInDays, startOfDay = dateAdapter.startOfDay, differenceInSeconds = dateAdapter.differenceInSeconds;\n if (event.start < startOfWeekDate) {\n return 0;\n }\n var offset = 0;\n switch (precision) {\n case 'days':\n offset =\n differenceInDays(startOfDay(event.start), startOfWeekDate) *\n SECONDS_IN_DAY;\n break;\n case 'minutes':\n offset = differenceInSeconds(event.start, startOfWeekDate);\n break;\n }\n offset -= getExcludedSeconds(dateAdapter, {\n startDate: startOfWeekDate,\n seconds: offset,\n excluded: excluded,\n precision: precision\n });\n return Math.abs(offset / SECONDS_IN_DAY);\n}\nfunction isEventIsPeriod(dateAdapter, _a) {\n var event = _a.event, periodStart = _a.periodStart, periodEnd = _a.periodEnd;\n var isSameSecond = dateAdapter.isSameSecond;\n var eventStart = event.start;\n var eventEnd = event.end || event.start;\n if (eventStart > periodStart && eventStart < periodEnd) {\n return true;\n }\n if (eventEnd > periodStart && eventEnd < periodEnd) {\n return true;\n }\n if (eventStart < periodStart && eventEnd > periodEnd) {\n return true;\n }\n if (isSameSecond(eventStart, periodStart) ||\n isSameSecond(eventStart, periodEnd)) {\n return true;\n }\n if (isSameSecond(eventEnd, periodStart) ||\n isSameSecond(eventEnd, periodEnd)) {\n return true;\n }\n return false;\n}\nexport function getEventsInPeriod(dateAdapter, _a) {\n var events = _a.events, periodStart = _a.periodStart, periodEnd = _a.periodEnd;\n return events.filter(function (event) {\n return isEventIsPeriod(dateAdapter, { event: event, periodStart: periodStart, periodEnd: periodEnd });\n });\n}\nfunction getWeekDay(dateAdapter, _a) {\n var date = _a.date, _b = _a.weekendDays, weekendDays = _b === void 0 ? DEFAULT_WEEKEND_DAYS : _b;\n var startOfDay = dateAdapter.startOfDay, isSameDay = dateAdapter.isSameDay, getDay = dateAdapter.getDay;\n var today = startOfDay(new Date());\n return {\n date: date,\n isPast: date < today,\n isToday: isSameDay(date, today),\n isFuture: date > today,\n isWeekend: weekendDays.indexOf(getDay(date)) > -1\n };\n}\nexport function getWeekViewHeader(dateAdapter, _a) {\n var viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _b = _a.excluded, excluded = _b === void 0 ? [] : _b, weekendDays = _a.weekendDays, _c = _a.viewStart, viewStart = _c === void 0 ? dateAdapter.startOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _c, _d = _a.viewEnd, viewEnd = _d === void 0 ? dateAdapter.addDays(viewStart, DAYS_IN_WEEK) : _d;\n var addDays = dateAdapter.addDays, getDay = dateAdapter.getDay;\n var days = [];\n var date = viewStart;\n while (date < viewEnd) {\n if (!excluded.some(function (e) { return getDay(date) === e; })) {\n days.push(getWeekDay(dateAdapter, { date: date, weekendDays: weekendDays }));\n }\n date = addDays(date, 1);\n }\n return days;\n}\nexport function getDifferenceInDaysWithExclusions(dateAdapter, _a) {\n var date1 = _a.date1, date2 = _a.date2, excluded = _a.excluded;\n var date = date1;\n var diff = 0;\n while (date < date2) {\n if (excluded.indexOf(dateAdapter.getDay(date)) === -1) {\n diff++;\n }\n date = dateAdapter.addDays(date, 1);\n }\n return diff;\n}\nfunction getAllDayWeekEvents(dateAdapter, _a) {\n var events = _a.events, excluded = _a.excluded, precision = _a.precision, absolutePositionedEvents = _a.absolutePositionedEvents, viewStart = _a.viewStart, viewEnd = _a.viewEnd, eventsInPeriod = _a.eventsInPeriod;\n var differenceInSeconds = dateAdapter.differenceInSeconds, differenceInDays = dateAdapter.differenceInDays;\n var maxRange = getDifferenceInDaysWithExclusions(dateAdapter, {\n date1: viewStart,\n date2: viewEnd,\n excluded: excluded\n });\n var totalDaysInView = differenceInDays(viewEnd, viewStart) + 1;\n var eventsMapped = eventsInPeriod\n .filter(function (event) { return event.allDay; })\n .map(function (event) {\n var offset = getWeekViewEventOffset(dateAdapter, {\n event: event,\n startOfWeek: viewStart,\n excluded: excluded,\n precision: precision\n });\n var span = getWeekViewEventSpan(dateAdapter, {\n event: event,\n offset: offset,\n startOfWeekDate: viewStart,\n excluded: excluded,\n precision: precision,\n totalDaysInView: totalDaysInView\n });\n return { event: event, offset: offset, span: span };\n })\n .filter(function (e) { return e.offset < maxRange; })\n .filter(function (e) { return e.span > 0; })\n .map(function (entry) { return ({\n event: entry.event,\n offset: entry.offset,\n span: entry.span,\n startsBeforeWeek: entry.event.start < viewStart,\n endsAfterWeek: (entry.event.end || entry.event.start) > viewEnd\n }); })\n .sort(function (itemA, itemB) {\n var startSecondsDiff = differenceInSeconds(itemA.event.start, itemB.event.start);\n if (startSecondsDiff === 0) {\n return differenceInSeconds(itemB.event.end || itemB.event.start, itemA.event.end || itemA.event.start);\n }\n return startSecondsDiff;\n });\n var allDayEventRows = [];\n var allocatedEvents = [];\n eventsMapped.forEach(function (event, index) {\n if (allocatedEvents.indexOf(event) === -1) {\n allocatedEvents.push(event);\n var rowSpan_1 = event.span + event.offset;\n var otherRowEvents = eventsMapped\n .slice(index + 1)\n .filter(function (nextEvent) {\n if (nextEvent.offset >= rowSpan_1 &&\n rowSpan_1 + nextEvent.span <= totalDaysInView &&\n allocatedEvents.indexOf(nextEvent) === -1) {\n var nextEventOffset = nextEvent.offset - rowSpan_1;\n if (!absolutePositionedEvents) {\n nextEvent.offset = nextEventOffset;\n }\n rowSpan_1 += nextEvent.span + nextEventOffset;\n allocatedEvents.push(nextEvent);\n return true;\n }\n });\n allDayEventRows.push({\n row: [event].concat(otherRowEvents)\n });\n }\n });\n return allDayEventRows;\n}\nfunction getWeekViewHourGrid(dateAdapter, _a) {\n var events = _a.events, viewDate = _a.viewDate, hourSegments = _a.hourSegments, dayStart = _a.dayStart, dayEnd = _a.dayEnd, weekStartsOn = _a.weekStartsOn, excluded = _a.excluded, weekendDays = _a.weekendDays, segmentHeight = _a.segmentHeight, viewStart = _a.viewStart, viewEnd = _a.viewEnd;\n var dayViewHourGrid = getDayViewHourGrid(dateAdapter, {\n viewDate: viewDate,\n hourSegments: hourSegments,\n dayStart: dayStart,\n dayEnd: dayEnd\n });\n var weekDays = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd\n });\n var setHours = dateAdapter.setHours, setMinutes = dateAdapter.setMinutes, getHours = dateAdapter.getHours, getMinutes = dateAdapter.getMinutes;\n return weekDays.map(function (day) {\n var dayView = getDayView(dateAdapter, {\n events: events,\n viewDate: day.date,\n hourSegments: hourSegments,\n dayStart: dayStart,\n dayEnd: dayEnd,\n segmentHeight: segmentHeight,\n eventWidth: 1\n });\n var hours = dayViewHourGrid.map(function (hour) {\n var segments = hour.segments.map(function (segment) {\n var date = setMinutes(setHours(day.date, getHours(segment.date)), getMinutes(segment.date));\n return __assign({}, segment, { date: date });\n });\n return __assign({}, hour, { segments: segments });\n });\n function getColumnCount(allEvents, prevOverlappingEvents) {\n var columnCount = Math.max.apply(Math, prevOverlappingEvents.map(function (iEvent) { return iEvent.left + 1; }));\n var nextOverlappingEvents = allEvents\n .filter(function (iEvent) { return iEvent.left >= columnCount; })\n .filter(function (iEvent) {\n return (getOverLappingDayViewEvents(prevOverlappingEvents, iEvent.top, iEvent.top + iEvent.height).length > 0);\n });\n if (nextOverlappingEvents.length > 0) {\n return getColumnCount(allEvents, nextOverlappingEvents);\n }\n else {\n return columnCount;\n }\n }\n return {\n hours: hours,\n date: day.date,\n events: dayView.events.map(function (event) {\n var columnCount = getColumnCount(dayView.events, getOverLappingDayViewEvents(dayView.events, event.top, event.top + event.height));\n var width = 100 / columnCount;\n return __assign({}, event, { left: event.left * width, width: width });\n })\n };\n });\n}\nexport function getWeekView(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.precision, precision = _d === void 0 ? 'days' : _d, _e = _a.absolutePositionedEvents, absolutePositionedEvents = _e === void 0 ? false : _e, hourSegments = _a.hourSegments, dayStart = _a.dayStart, dayEnd = _a.dayEnd, weekendDays = _a.weekendDays, segmentHeight = _a.segmentHeight, _f = _a.viewStart, viewStart = _f === void 0 ? dateAdapter.startOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _f, _g = _a.viewEnd, viewEnd = _g === void 0 ? dateAdapter.endOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _g;\n if (!events) {\n events = [];\n }\n var startOfDay = dateAdapter.startOfDay, endOfDay = dateAdapter.endOfDay;\n viewStart = startOfDay(viewStart);\n viewEnd = endOfDay(viewEnd);\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: viewStart,\n periodEnd: viewEnd\n });\n var header = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd\n });\n return {\n allDayEventRows: getAllDayWeekEvents(dateAdapter, {\n events: events,\n excluded: excluded,\n precision: precision,\n absolutePositionedEvents: absolutePositionedEvents,\n viewStart: viewStart,\n viewEnd: viewEnd,\n eventsInPeriod: eventsInPeriod\n }),\n period: {\n events: eventsInPeriod,\n start: header[0].date,\n end: endOfDay(header[header.length - 1].date)\n },\n hourColumns: getWeekViewHourGrid(dateAdapter, {\n events: events,\n viewDate: viewDate,\n hourSegments: hourSegments,\n dayStart: dayStart,\n dayEnd: dayEnd,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n segmentHeight: segmentHeight,\n viewStart: viewStart,\n viewEnd: viewEnd\n })\n };\n}\nexport function getMonthView(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.viewStart, viewStart = _d === void 0 ? dateAdapter.startOfMonth(viewDate) : _d, _e = _a.viewEnd, viewEnd = _e === void 0 ? dateAdapter.endOfMonth(viewDate) : _e, weekendDays = _a.weekendDays;\n if (!events) {\n events = [];\n }\n var startOfWeek = dateAdapter.startOfWeek, endOfWeek = dateAdapter.endOfWeek, differenceInDays = dateAdapter.differenceInDays, startOfDay = dateAdapter.startOfDay, addHours = dateAdapter.addHours, endOfDay = dateAdapter.endOfDay, isSameMonth = dateAdapter.isSameMonth, getDay = dateAdapter.getDay, getMonth = dateAdapter.getMonth;\n var start = startOfWeek(viewStart, { weekStartsOn: weekStartsOn });\n var end = endOfWeek(viewEnd, { weekStartsOn: weekStartsOn });\n var eventsInMonth = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: start,\n periodEnd: end\n });\n var initialViewDays = [];\n var previousDate;\n var _loop_2 = function (i) {\n // hacky fix for https://github.com/mattlewis92/angular-calendar/issues/173\n var date;\n if (previousDate) {\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY));\n if (previousDate.getTime() === date.getTime()) {\n // DST change, so need to add 25 hours\n /* istanbul ignore next */\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY + 1));\n }\n previousDate = date;\n }\n else {\n date = previousDate = start;\n }\n if (!excluded.some(function (e) { return getDay(date) === e; })) {\n var day = getWeekDay(dateAdapter, {\n date: date,\n weekendDays: weekendDays\n });\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: eventsInMonth,\n periodStart: startOfDay(date),\n periodEnd: endOfDay(date)\n });\n day.inMonth = isSameMonth(date, viewDate);\n day.events = eventsInPeriod;\n day.badgeTotal = eventsInPeriod.length;\n initialViewDays.push(day);\n }\n };\n for (var i = 0; i < differenceInDays(end, start) + 1; i++) {\n _loop_2(i);\n }\n var days = [];\n var totalDaysVisibleInWeek = DAYS_IN_WEEK - excluded.length;\n if (totalDaysVisibleInWeek < DAYS_IN_WEEK) {\n for (var i = 0; i < initialViewDays.length; i += totalDaysVisibleInWeek) {\n var row = initialViewDays.slice(i, i + totalDaysVisibleInWeek);\n var isRowInMonth = row.some(function (day) { return getMonth(day.date) === getMonth(viewDate); });\n if (isRowInMonth) {\n days = days.concat(row);\n }\n }\n }\n else {\n days = initialViewDays;\n }\n var rows = Math.floor(days.length / totalDaysVisibleInWeek);\n var rowOffsets = [];\n for (var i = 0; i < rows; i++) {\n rowOffsets.push(i * totalDaysVisibleInWeek);\n }\n return {\n rowOffsets: rowOffsets,\n totalDaysVisibleInWeek: totalDaysVisibleInWeek,\n days: days,\n period: {\n start: days[0].date,\n end: endOfDay(days[days.length - 1].date),\n events: eventsInMonth\n }\n };\n}\nfunction getOverLappingDayViewEvents(events, top, bottom) {\n return events.filter(function (previousEvent) {\n var previousEventTop = previousEvent.top;\n var previousEventBottom = previousEvent.top + previousEvent.height;\n if (top < previousEventBottom && previousEventBottom < bottom) {\n return true;\n }\n else if (top < previousEventTop && previousEventTop < bottom) {\n return true;\n }\n else if (previousEventTop <= top && bottom <= previousEventBottom) {\n return true;\n }\n return false;\n });\n}\nexport function getDayView(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, viewDate = _a.viewDate, hourSegments = _a.hourSegments, dayStart = _a.dayStart, dayEnd = _a.dayEnd, eventWidth = _a.eventWidth, segmentHeight = _a.segmentHeight;\n if (!events) {\n events = [];\n }\n var setMinutes = dateAdapter.setMinutes, setHours = dateAdapter.setHours, startOfDay = dateAdapter.startOfDay, startOfMinute = dateAdapter.startOfMinute, endOfDay = dateAdapter.endOfDay, differenceInMinutes = dateAdapter.differenceInMinutes;\n var startOfView = setMinutes(setHours(startOfDay(viewDate), dayStart.hour), dayStart.minute);\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), dayEnd.hour), dayEnd.minute);\n var previousDayEvents = [];\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) { return !event.allDay; }),\n periodStart: startOfView,\n periodEnd: endOfView\n });\n var dayViewEvents = eventsInPeriod\n .sort(function (eventA, eventB) {\n return eventA.start.valueOf() - eventB.start.valueOf();\n })\n .map(function (event) {\n var eventStart = event.start;\n var eventEnd = event.end || eventStart;\n var startsBeforeDay = eventStart < startOfView;\n var endsAfterDay = eventEnd > endOfView;\n var hourHeightModifier = (hourSegments * segmentHeight) / MINUTES_IN_HOUR;\n var top = 0;\n if (eventStart > startOfView) {\n top += differenceInMinutes(eventStart, startOfView);\n }\n top *= hourHeightModifier;\n var startDate = startsBeforeDay ? startOfView : eventStart;\n var endDate = endsAfterDay ? endOfView : eventEnd;\n var height = differenceInMinutes(endDate, startDate);\n if (!event.end) {\n height = segmentHeight;\n }\n else {\n height *= hourHeightModifier;\n }\n var bottom = top + height;\n var overlappingPreviousEvents = getOverLappingDayViewEvents(previousDayEvents, top, bottom);\n var left = 0;\n while (overlappingPreviousEvents.some(function (previousEvent) { return previousEvent.left === left; })) {\n left += eventWidth;\n }\n var dayEvent = {\n event: event,\n height: height,\n width: eventWidth,\n top: top,\n left: left,\n startsBeforeDay: startsBeforeDay,\n endsAfterDay: endsAfterDay\n };\n previousDayEvents.push(dayEvent);\n return dayEvent;\n });\n var width = Math.max.apply(Math, dayViewEvents.map(function (event) { return event.left + event.width; }));\n var allDayEvents = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) { return event.allDay; }),\n periodStart: startOfDay(startOfView),\n periodEnd: endOfDay(endOfView)\n });\n return {\n events: dayViewEvents,\n width: width,\n allDayEvents: allDayEvents,\n period: {\n events: eventsInPeriod,\n start: startOfView,\n end: endOfView\n }\n };\n}\nexport function getDayViewHourGrid(dateAdapter, _a) {\n var viewDate = _a.viewDate, hourSegments = _a.hourSegments, dayStart = _a.dayStart, dayEnd = _a.dayEnd;\n var setMinutes = dateAdapter.setMinutes, setHours = dateAdapter.setHours, startOfDay = dateAdapter.startOfDay, startOfMinute = dateAdapter.startOfMinute, endOfDay = dateAdapter.endOfDay, addMinutes = dateAdapter.addMinutes, addHours = dateAdapter.addHours;\n var hours = [];\n var startOfView = setMinutes(setHours(startOfDay(viewDate), dayStart.hour), dayStart.minute);\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), dayEnd.hour), dayEnd.minute);\n var segmentDuration = MINUTES_IN_HOUR / hourSegments;\n var startOfViewDay = startOfDay(viewDate);\n for (var i = 0; i < HOURS_IN_DAY; i++) {\n var segments = [];\n for (var j = 0; j < hourSegments; j++) {\n var date = addMinutes(addHours(startOfViewDay, i), j * segmentDuration);\n if (date >= startOfView && date < endOfView) {\n segments.push({\n date: date,\n isStart: j === 0\n });\n }\n }\n if (segments.length > 0) {\n hours.push({ segments: segments });\n }\n }\n return hours;\n}\nexport var EventValidationErrorMessage;\n(function (EventValidationErrorMessage) {\n EventValidationErrorMessage[\"NotArray\"] = \"Events must be an array\";\n EventValidationErrorMessage[\"StartPropertyMissing\"] = \"Event is missing the `start` property\";\n EventValidationErrorMessage[\"StartPropertyNotDate\"] = \"Event `start` property should be a javascript date object. Do `new Date(event.start)` to fix it.\";\n EventValidationErrorMessage[\"EndPropertyNotDate\"] = \"Event `end` property should be a javascript date object. Do `new Date(event.end)` to fix it.\";\n EventValidationErrorMessage[\"EndsBeforeStart\"] = \"Event `start` property occurs after the `end`\";\n})(EventValidationErrorMessage || (EventValidationErrorMessage = {}));\nexport function validateEvents(events, log) {\n var isValid = true;\n function isError(msg, event) {\n log(msg, event);\n isValid = false;\n }\n if (!Array.isArray(events)) {\n log(EventValidationErrorMessage.NotArray, events);\n return false;\n }\n events.forEach(function (event) {\n if (!event.start) {\n isError(EventValidationErrorMessage.StartPropertyMissing, event);\n }\n else if (!(event.start instanceof Date)) {\n isError(EventValidationErrorMessage.StartPropertyNotDate, event);\n }\n if (event.end) {\n if (!(event.end instanceof Date)) {\n isError(EventValidationErrorMessage.EndPropertyNotDate, event);\n }\n if (event.start > event.end) {\n isError(EventValidationErrorMessage.EndsBeforeStart, event);\n }\n }\n });\n return isValid;\n}\n","function getDef(f, d) {\n if (typeof f === 'undefined') {\n return typeof d === 'undefined' ? f : d;\n }\n\n return f;\n}\nfunction boolean(func, def) {\n\n func = getDef(func, def);\n\n if (typeof func === 'function') {\n return function f() {\n var arguments$1 = arguments;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n\n return !!func.apply(this, args);\n };\n }\n\n return !!func ? function () {\n return true;\n } : function () {\n return false;\n };\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n/**\n * Returns `true` if provided input is Element.\n * @name isElement\n * @param {*} [input]\n * @returns {boolean}\n */\nvar isElement$1 = function (input) {\n return input != null && (typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && input.nodeType === 1 && _typeof(input.style) === 'object' && _typeof(input.ownerDocument) === 'object';\n};\n\nfunction indexOfElement(elements, element){\n element = resolveElement(element, true);\n if(!isElement$1(element)) { return -1; }\n for(var i=0; i 0 ) { toAdd[ len ] = arguments$1[ len + 1 ]; }\n\n toAdd = toAdd.map(resolveElement);\n return pushElements(elements, toAdd);\n}\n\nfunction removeElements(elements){\n var arguments$1 = arguments;\n\n var toRemove = [], len = arguments.length - 1;\n while ( len-- > 0 ) { toRemove[ len ] = arguments$1[ len + 1 ]; }\n\n return toRemove.map(resolveElement).reduce(function (last, e){\n\n var index = indexOfElement(elements, e);\n\n if(index !== -1)\n { return last.concat(elements.splice(index, 1)); }\n return last;\n }, []);\n}\n\nfunction resolveElement(element, noThrow){\n if(typeof element === 'string'){\n try{\n return document.querySelector(element);\n }catch(e){\n throw e;\n }\n\n }\n\n if(!isElement$1(element) && !noThrow){\n throw new TypeError((element + \" is not a DOM element.\"));\n }\n return element;\n}\n\nfunction createPointCB(object, options) {\n\n // A persistent object (as opposed to returned object) is used to save memory\n // This is good to prevent layout thrashing, or for games, and such\n\n // NOTE\n // This uses IE fixes which should be OK to remove some day. :)\n // Some speed will be gained by removal of these.\n\n // pointCB should be saved in a variable on return\n // This allows the usage of element.removeEventListener\n\n options = options || {};\n\n var allowUpdate = boolean(options.allowUpdate, true);\n\n /*if(typeof options.allowUpdate === 'function'){\n allowUpdate = options.allowUpdate;\n }else{\n allowUpdate = function(){return true;};\n }*/\n\n return function pointCB(event) {\n\n event = event || window.event; // IE-ism\n object.target = event.target || event.srcElement || event.originalTarget;\n object.element = this;\n object.type = event.type;\n\n if (!allowUpdate(event)) {\n return;\n }\n\n // Support touch\n // http://www.creativebloq.com/javascript/make-your-site-work-touch-devices-51411644\n\n if (event.targetTouches) {\n object.x = event.targetTouches[0].clientX;\n object.y = event.targetTouches[0].clientY;\n object.pageX = event.targetTouches[0].pageX;\n object.pageY = event.targetTouches[0].pageY;\n object.screenX = event.targetTouches[0].screenX;\n object.screenY = event.targetTouches[0].screenY;\n } else {\n\n // If pageX/Y aren't available and clientX/Y are,\n // calculate pageX/Y - logic taken from jQuery.\n // (This is to support old IE)\n // NOTE Hopefully this can be removed soon.\n\n if (event.pageX === null && event.clientX !== null) {\n var eventDoc = event.target && event.target.ownerDocument || document;\n var doc = eventDoc.documentElement;\n var body = eventDoc.body;\n\n object.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n object.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } else {\n object.pageX = event.pageX;\n object.pageY = event.pageY;\n }\n\n // pageX, and pageY change with page scroll\n // so we're not going to use those for x, and y.\n // NOTE Most browsers also alias clientX/Y with x/y\n // so that's something to consider down the road.\n\n object.x = event.clientX;\n object.y = event.clientY;\n\n object.screenX = event.screenX;\n object.screenY = event.screenY;\n }\n\n object.clientX = object.x;\n object.clientY = object.y;\n };\n\n //NOTE Remember accessibility, Aria roles, and labels.\n}\n\nfunction createWindowRect() {\n var props = {\n top: { value: 0, enumerable: true },\n left: { value: 0, enumerable: true },\n right: { value: window.innerWidth, enumerable: true },\n bottom: { value: window.innerHeight, enumerable: true },\n width: { value: window.innerWidth, enumerable: true },\n height: { value: window.innerHeight, enumerable: true },\n x: { value: 0, enumerable: true },\n y: { value: 0, enumerable: true }\n };\n\n if (Object.create) {\n return Object.create({}, props);\n } else {\n var rect = {};\n Object.defineProperties(rect, props);\n return rect;\n }\n}\n\nfunction getClientRect(el) {\n if (el === window) {\n return createWindowRect();\n } else {\n try {\n var rect = el.getBoundingClientRect();\n if (rect.x === undefined) {\n rect.x = rect.left;\n rect.y = rect.top;\n }\n return rect;\n } catch (e) {\n throw new TypeError(\"Can't call getBoundingClientRect on \" + el);\n }\n }\n}\n\nfunction pointInside(point, el) {\n var rect = getClientRect(el);\n return point.y > rect.top && point.y < rect.bottom && point.x > rect.left && point.x < rect.right;\n}\n\nvar objectCreate = void 0;\nif (typeof Object.create != 'function') {\n objectCreate = function (undefined$1) {\n var Temp = function Temp() {};\n return function (prototype, propertiesObject) {\n if (prototype !== Object(prototype) && prototype !== null) {\n throw TypeError('Argument must be an object, or null');\n }\n Temp.prototype = prototype || {};\n var result = new Temp();\n Temp.prototype = null;\n if (propertiesObject !== undefined$1) {\n Object.defineProperties(result, propertiesObject);\n }\n\n // to imitate the case of Object.create(null)\n if (prototype === null) {\n result.__proto__ = null;\n }\n return result;\n };\n }();\n} else {\n objectCreate = Object.create;\n}\n\nvar objectCreate$1 = objectCreate;\n\nvar mouseEventProps = ['altKey', 'button', 'buttons', 'clientX', 'clientY', 'ctrlKey', 'metaKey', 'movementX', 'movementY', 'offsetX', 'offsetY', 'pageX', 'pageY', 'region', 'relatedTarget', 'screenX', 'screenY', 'shiftKey', 'which', 'x', 'y'];\n\nfunction createDispatcher(element) {\n\n var defaultSettings = {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n shiftKey: false,\n altKey: false,\n metaKey: false,\n button: 0,\n buttons: 1,\n relatedTarget: null,\n region: null\n };\n\n if (element !== undefined) {\n element.addEventListener('mousemove', onMove);\n }\n\n function onMove(e) {\n for (var i = 0; i < mouseEventProps.length; i++) {\n defaultSettings[mouseEventProps[i]] = e[mouseEventProps[i]];\n }\n }\n\n var dispatch = function () {\n if (MouseEvent) {\n return function m1(element, initMove, data) {\n var evt = new MouseEvent('mousemove', createMoveInit(defaultSettings, initMove));\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEvent === 'function') {\n return function m2(element, initMove, data) {\n var settings = createMoveInit(defaultSettings, initMove);\n var evt = document.createEvent('MouseEvents');\n\n evt.initMouseEvent(\"mousemove\", true, //can bubble\n true, //cancelable\n window, //view\n 0, //detail\n settings.screenX, //0, //screenX\n settings.screenY, //0, //screenY\n settings.clientX, //80, //clientX\n settings.clientY, //20, //clientY\n settings.ctrlKey, //false, //ctrlKey\n settings.altKey, //false, //altKey\n settings.shiftKey, //false, //shiftKey\n settings.metaKey, //false, //metaKey\n settings.button, //0, //button\n settings.relatedTarget //null //relatedTarget\n );\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEventObject === 'function') {\n return function m3(element, initMove, data) {\n var evt = document.createEventObject();\n var settings = createMoveInit(defaultSettings, initMove);\n for (var name in settings) {\n evt[name] = settings[name];\n }\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n }\n }();\n\n function destroy() {\n if (element) { element.removeEventListener('mousemove', onMove, false); }\n defaultSettings = null;\n }\n\n return {\n destroy: destroy,\n dispatch: dispatch\n };\n}\n\nfunction createMoveInit(defaultSettings, initMove) {\n initMove = initMove || {};\n var settings = objectCreate$1(defaultSettings);\n for (var i = 0; i < mouseEventProps.length; i++) {\n if (initMove[mouseEventProps[i]] !== undefined) { settings[mouseEventProps[i]] = initMove[mouseEventProps[i]]; }\n }\n\n return settings;\n}\n\nfunction setSpecial(e, data) {\n console.log('data ', data);\n e.data = data || {};\n e.dispatched = 'mousemove';\n}\n\nvar prefix = [ 'webkit', 'moz', 'ms', 'o' ];\n\nvar requestFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.requestAnimationFrame ; ++i ) {\n window.requestAnimationFrame = window[ prefix[ i ] + 'RequestAnimationFrame' ];\n }\n\n if ( ! window.requestAnimationFrame ) {\n var lastTime = 0;\n\n window.requestAnimationFrame = function (callback) {\n var now = new Date().getTime();\n var ttc = Math.max( 0, 16 - now - lastTime );\n var timer = window.setTimeout( function () { return callback( now + ttc ); }, ttc );\n\n lastTime = now + ttc;\n\n return timer;\n };\n }\n\n return window.requestAnimationFrame.bind( window );\n})();\n\nvar cancelFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.cancelAnimationFrame ; ++i ) {\n window.cancelAnimationFrame = window[ prefix[ i ] + 'CancelAnimationFrame' ] || window[ prefix[ i ] + 'CancelRequestAnimationFrame' ];\n }\n\n if ( ! window.cancelAnimationFrame ) {\n window.cancelAnimationFrame = function (timer) {\n window.clearTimeout( timer );\n };\n }\n\n return window.cancelAnimationFrame.bind( window );\n})();\n\nfunction AutoScroller(elements, options){\n if ( options === void 0 ) options = {};\n\n var self = this;\n var maxSpeed = 4, scrolling = false;\n\n if (typeof options.margin !== 'object') {\n var margin = options.margin || -1;\n\n this.margin = {\n left: margin,\n right: margin,\n top: margin,\n bottom: margin\n };\n } else {\n this.margin = options.margin;\n }\n\n //this.scrolling = false;\n this.scrollWhenOutside = options.scrollWhenOutside || false;\n\n var point = {},\n pointCB = createPointCB(point),\n dispatcher = createDispatcher(),\n down = false;\n\n window.addEventListener('mousemove', pointCB, false);\n window.addEventListener('touchmove', pointCB, false);\n\n if(!isNaN(options.maxSpeed)){\n maxSpeed = options.maxSpeed;\n }\n\n if (typeof maxSpeed !== 'object') {\n maxSpeed = {\n left: maxSpeed,\n right: maxSpeed,\n top: maxSpeed,\n bottom: maxSpeed\n };\n }\n\n this.autoScroll = boolean(options.autoScroll);\n this.syncMove = boolean(options.syncMove, false);\n\n this.destroy = function(forceCleanAnimation) {\n window.removeEventListener('mousemove', pointCB, false);\n window.removeEventListener('touchmove', pointCB, false);\n window.removeEventListener('mousedown', onDown, false);\n window.removeEventListener('touchstart', onDown, false);\n window.removeEventListener('mouseup', onUp, false);\n window.removeEventListener('touchend', onUp, false);\n window.removeEventListener('pointerup', onUp, false);\n window.removeEventListener('mouseleave', onMouseOut, false);\n\n window.removeEventListener('mousemove', onMove, false);\n window.removeEventListener('touchmove', onMove, false);\n\n window.removeEventListener('scroll', setScroll, true);\n elements = [];\n if(forceCleanAnimation){\n cleanAnimation();\n }\n };\n\n this.add = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n addElements.apply(void 0, [ elements ].concat( element ));\n return this;\n };\n\n this.remove = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n return removeElements.apply(void 0, [ elements ].concat( element ));\n };\n\n var hasWindow = null, windowAnimationFrame;\n\n if(Object.prototype.toString.call(elements) !== '[object Array]'){\n elements = [elements];\n }\n\n (function(temp){\n elements = [];\n temp.forEach(function(element){\n if(element === window){\n hasWindow = window;\n }else {\n self.add(element);\n }\n });\n }(elements));\n\n Object.defineProperties(this, {\n down: {\n get: function(){ return down; }\n },\n maxSpeed: {\n get: function(){ return maxSpeed; }\n },\n point: {\n get: function(){ return point; }\n },\n scrolling: {\n get: function(){ return scrolling; }\n }\n });\n\n var current = null, animationFrame;\n\n window.addEventListener('mousedown', onDown, false);\n window.addEventListener('touchstart', onDown, false);\n window.addEventListener('mouseup', onUp, false);\n window.addEventListener('touchend', onUp, false);\n\n /*\n IE does not trigger mouseup event when scrolling.\n It is a known issue that Microsoft won't fix.\n https://connect.microsoft.com/IE/feedback/details/783058/scrollbar-trigger-mousedown-but-not-mouseup\n IE supports pointer events instead\n */\n window.addEventListener('pointerup', onUp, false);\n\n window.addEventListener('mousemove', onMove, false);\n window.addEventListener('touchmove', onMove, false);\n\n window.addEventListener('mouseleave', onMouseOut, false);\n\n window.addEventListener('scroll', setScroll, true);\n\n function setScroll(e){\n\n for(var i=0; i rect.right - self.margin.right){\n scrollx = Math.ceil(\n Math.min(1, (point.x - rect.right) / self.margin.right + 1) * self.maxSpeed.right\n );\n }else {\n scrollx = 0;\n }\n\n if(point.y < rect.top + self.margin.top){\n scrolly = Math.floor(\n Math.max(-1, (point.y - rect.top) / self.margin.top - 1) * self.maxSpeed.top\n );\n }else if(point.y > rect.bottom - self.margin.bottom){\n scrolly = Math.ceil(\n Math.min(1, (point.y - rect.bottom) / self.margin.bottom + 1) * self.maxSpeed.bottom\n );\n }else {\n scrolly = 0;\n }\n\n if(self.syncMove()){\n /*\n Notes about mousemove event dispatch.\n screen(X/Y) should need to be updated.\n Some other properties might need to be set.\n Keep the syncMove option default false until all inconsistencies are taken care of.\n */\n dispatcher.dispatch(el, {\n pageX: point.pageX + scrollx,\n pageY: point.pageY + scrolly,\n clientX: point.x + scrollx,\n clientY: point.y + scrolly\n });\n }\n\n setTimeout(function (){\n\n if(scrolly){\n scrollY(el, scrolly);\n }\n\n if(scrollx){\n scrollX(el, scrollx);\n }\n\n });\n }\n\n function scrollY(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset, el.pageYOffset + amount);\n }else {\n el.scrollTop += amount;\n }\n }\n\n function scrollX(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset + amount, el.pageYOffset);\n }else {\n el.scrollLeft += amount;\n }\n }\n\n}\n\nfunction AutoScrollerFactory(element, options){\n return new AutoScroller(element, options);\n}\n\nfunction inside(point, el, rect){\n if(!rect){\n return pointInside(point, el);\n }else {\n return (point.y > rect.top && point.y < rect.bottom &&\n point.x > rect.left && point.x < rect.right);\n }\n}\n\n/*\ngit remote add origin https://github.com/hollowdoor/dom_autoscroller.git\ngit push -u origin master\n*/\n\nexport default AutoScrollerFactory;\n","import { Subscriber } from '../Subscriber';\nexport function count(predicate) {\n return (source) => source.lift(new CountOperator(predicate, source));\n}\nclass CountOperator {\n constructor(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n call(subscriber, source) {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n }\n}\nclass CountSubscriber extends Subscriber {\n constructor(destination, predicate, source) {\n super(destination);\n this.predicate = predicate;\n this.source = source;\n this.count = 0;\n this.index = 0;\n }\n _next(value) {\n if (this.predicate) {\n this._tryPredicate(value);\n }\n else {\n this.count++;\n }\n }\n _tryPredicate(value) {\n let result;\n try {\n result = this.predicate(value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.count++;\n }\n }\n _complete() {\n this.destination.next(this.count);\n this.destination.complete();\n }\n}\n","import { Subject, Observable, merge, ReplaySubject, combineLatest, fromEvent } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport autoScroll from '@mattlewis92/dom-autoscroller';\nimport { Injectable, Directive, ElementRef, Input, Renderer2, Output, EventEmitter, NgZone, Inject, ViewContainerRef, Optional, NgModule, defineInjectable } from '@angular/core';\nimport { map, mergeMap, takeUntil, take, takeLast, pairwise, share, filter, count, startWith, distinctUntilChanged } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nimport * as ɵngcc0 from '@angular/core';\nclass DraggableHelper {\n constructor() {\n this.currentDrag = new Subject();\n }\n}\nDraggableHelper.ɵfac = function DraggableHelper_Factory(t) { return new (t || DraggableHelper)(); };\nDraggableHelper.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DraggableHelper, factory: DraggableHelper.ɵfac, providedIn: 'root' });\n/** @nocollapse */ DraggableHelper.ngInjectableDef = defineInjectable({ factory: function DraggableHelper_Factory() { return new DraggableHelper(); }, token: DraggableHelper, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableHelper, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * If the window isn't scrollable, then place this on the scrollable container that draggable elements are inside. e.g.\n * ```html\n *
    \n *
    Drag me!
    \n *
    \n * ```\n */\nclass DraggableScrollContainerDirective {\n /**\n * @hidden\n * @param {?} elementRef\n */\n constructor(elementRef) {\n this.elementRef = elementRef;\n /**\n * Trigger the DragStart after a long touch in scrollable container when true\n * @deprecated will be removed in v5 (use [touchStartLongPress]=\"{delay: 300, delta: 30}\" on the mwlDraggable element instead)\n */\n this.activeLongPressDrag = false;\n /**\n * Configuration of a long touch\n * Duration in ms of a long touch before activating DragStart\n * Delta of the\n * @deprecated will be removed in v5 (use [touchStartLongPress]=\"{delay: 300, delta: 30}\" on the mwlDraggable element instead)\n */\n this.longPressConfig = { duration: 300, delta: 30 };\n }\n}\nDraggableScrollContainerDirective.ɵfac = function DraggableScrollContainerDirective_Factory(t) { return new (t || DraggableScrollContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nDraggableScrollContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DraggableScrollContainerDirective, selectors: [[\"\", \"mwlDraggableScrollContainer\", \"\"]], inputs: { activeLongPressDrag: \"activeLongPressDrag\", longPressConfig: \"longPressConfig\" } });\n/** @nocollapse */\nDraggableScrollContainerDirective.ctorParameters = () => [\n { type: ElementRef }\n];\nDraggableScrollContainerDirective.propDecorators = {\n activeLongPressDrag: [{ type: Input }],\n longPressConfig: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableScrollContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlDraggableScrollContainer]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { activeLongPressDrag: [{\n type: Input\n }], longPressConfig: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} renderer\n * @param {?} element\n * @param {?} classToAdd\n * @return {?}\n */\nfunction addClass(renderer, element, classToAdd) {\n if (classToAdd) {\n classToAdd\n .split(' ')\n .forEach((/**\n * @param {?} className\n * @return {?}\n */\n (className) => renderer.addClass(element.nativeElement, className)));\n }\n}\n/**\n * @param {?} renderer\n * @param {?} element\n * @param {?} classToRemove\n * @return {?}\n */\nfunction removeClass(renderer, element, classToRemove) {\n if (classToRemove) {\n classToRemove\n .split(' ')\n .forEach((/**\n * @param {?} className\n * @return {?}\n */\n (className) => renderer.removeClass(element.nativeElement, className)));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass DraggableDirective {\n /**\n * @hidden\n * @param {?} element\n * @param {?} renderer\n * @param {?} draggableHelper\n * @param {?} zone\n * @param {?} vcr\n * @param {?} scrollContainer\n * @param {?} document\n */\n constructor(element, renderer, draggableHelper, zone, vcr, scrollContainer, document) {\n this.element = element;\n this.renderer = renderer;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.vcr = vcr;\n this.scrollContainer = scrollContainer;\n this.document = document;\n /**\n * The axis along which the element is draggable\n */\n this.dragAxis = { x: true, y: true };\n /**\n * Snap all drags to an x / y grid\n */\n this.dragSnapGrid = {};\n /**\n * Show a ghost element that shows the drag when dragging\n */\n this.ghostDragEnabled = true;\n /**\n * Show the original element when ghostDragEnabled is true\n */\n this.showOriginalElementWhileDragging = false;\n /**\n * The cursor to use when hovering over a draggable element\n */\n this.dragCursor = '';\n /*\n * Options used to control the behaviour of auto scrolling: https://www.npmjs.com/package/dom-autoscroller\n */\n this.autoScroll = {\n margin: 20,\n };\n /**\n * Called when the element can be dragged along one axis and has the mouse or pointer device pressed on it\n */\n this.dragPointerDown = new EventEmitter();\n /**\n * Called when the element has started to be dragged.\n * Only called after at least one mouse or touch move event.\n * If you call $event.cancelDrag$.emit() it will cancel the current drag\n */\n this.dragStart = new EventEmitter();\n /**\n * Called after the ghost element has been created\n */\n this.ghostElementCreated = new EventEmitter();\n /**\n * Called when the element is being dragged\n */\n this.dragging = new EventEmitter();\n /**\n * Called after the element is dragged\n */\n this.dragEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.pointerDown$ = new Subject();\n /**\n * @hidden\n */\n this.pointerMove$ = new Subject();\n /**\n * @hidden\n */\n this.pointerUp$ = new Subject();\n this.eventListenerSubscriptions = {};\n this.destroy$ = new Subject();\n this.timeLongPress = { timerBegin: 0, timerEnd: 0 };\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.checkEventListeners();\n /** @type {?} */\n const pointerDragged$ = this.pointerDown$.pipe(filter((/**\n * @return {?}\n */\n () => this.canDrag())), mergeMap((/**\n * @param {?} pointerDownEvent\n * @return {?}\n */\n (pointerDownEvent) => {\n // fix for https://github.com/mattlewis92/angular-draggable-droppable/issues/61\n // stop mouse events propagating up the chain\n if (pointerDownEvent.event.stopPropagation && !this.scrollContainer) {\n pointerDownEvent.event.stopPropagation();\n }\n // hack to prevent text getting selected in safari while dragging\n /** @type {?} */\n const globalDragStyle = this.renderer.createElement('style');\n this.renderer.setAttribute(globalDragStyle, 'type', 'text/css');\n this.renderer.appendChild(globalDragStyle, this.renderer.createText(`\n body * {\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n }\n `));\n requestAnimationFrame((/**\n * @return {?}\n */\n () => {\n this.document.head.appendChild(globalDragStyle);\n }));\n /** @type {?} */\n const startScrollPosition = this.getScrollPosition();\n /** @type {?} */\n const scrollContainerScroll$ = new Observable((/**\n * @param {?} observer\n * @return {?}\n */\n (observer) => {\n /** @type {?} */\n const scrollContainer = this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window';\n return this.renderer.listen(scrollContainer, 'scroll', (/**\n * @param {?} e\n * @return {?}\n */\n (e) => observer.next(e)));\n })).pipe(startWith(startScrollPosition), map((/**\n * @return {?}\n */\n () => this.getScrollPosition())));\n /** @type {?} */\n const currentDrag$ = new Subject();\n /** @type {?} */\n const cancelDrag$ = new ReplaySubject();\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragPointerDown.next({ x: 0, y: 0 });\n }));\n /** @type {?} */\n const dragComplete$ = merge(this.pointerUp$, this.pointerDown$, cancelDrag$, this.destroy$).pipe(share());\n /** @type {?} */\n const pointerMove = combineLatest([\n this.pointerMove$,\n scrollContainerScroll$,\n ]).pipe(map((/**\n * @param {?} __0\n * @return {?}\n */\n ([pointerMoveEvent, scroll]) => {\n return {\n currentDrag$,\n transformX: pointerMoveEvent.clientX - pointerDownEvent.clientX,\n transformY: pointerMoveEvent.clientY - pointerDownEvent.clientY,\n clientX: pointerMoveEvent.clientX,\n clientY: pointerMoveEvent.clientY,\n scrollLeft: scroll.left,\n scrollTop: scroll.top,\n target: pointerMoveEvent.event.target,\n };\n })), map((/**\n * @param {?} moveData\n * @return {?}\n */\n (moveData) => {\n if (this.dragSnapGrid.x) {\n moveData.transformX =\n Math.round(moveData.transformX / this.dragSnapGrid.x) *\n this.dragSnapGrid.x;\n }\n if (this.dragSnapGrid.y) {\n moveData.transformY =\n Math.round(moveData.transformY / this.dragSnapGrid.y) *\n this.dragSnapGrid.y;\n }\n return moveData;\n })), map((/**\n * @param {?} moveData\n * @return {?}\n */\n (moveData) => {\n if (!this.dragAxis.x) {\n moveData.transformX = 0;\n }\n if (!this.dragAxis.y) {\n moveData.transformY = 0;\n }\n return moveData;\n })), map((/**\n * @param {?} moveData\n * @return {?}\n */\n (moveData) => {\n /** @type {?} */\n const scrollX = moveData.scrollLeft - startScrollPosition.left;\n /** @type {?} */\n const scrollY = moveData.scrollTop - startScrollPosition.top;\n return Object.assign({}, moveData, { x: moveData.transformX + scrollX, y: moveData.transformY + scrollY });\n })), filter((/**\n * @param {?} __0\n * @return {?}\n */\n ({ x, y, transformX, transformY }) => !this.validateDrag ||\n this.validateDrag({\n x,\n y,\n transform: { x: transformX, y: transformY },\n }))), takeUntil(dragComplete$), share());\n /** @type {?} */\n const dragStarted$ = pointerMove.pipe(take(1), share());\n /** @type {?} */\n const dragEnded$ = pointerMove.pipe(takeLast(1), share());\n dragStarted$.subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n ({ clientX, clientY, x, y }) => {\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragStart.next({ cancelDrag$ });\n }));\n this.scroller = autoScroll([\n this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : this.document.defaultView,\n ], Object.assign({}, this.autoScroll, { /**\n * @return {?}\n */\n autoScroll() {\n return true;\n } }));\n addClass(this.renderer, this.element, this.dragActiveClass);\n if (this.ghostDragEnabled) {\n /** @type {?} */\n const rect = this.element.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const clone = (/** @type {?} */ (this.element.nativeElement.cloneNode(true)));\n if (!this.showOriginalElementWhileDragging) {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n }\n if (this.ghostElementAppendTo) {\n this.ghostElementAppendTo.appendChild(clone);\n }\n else {\n (/** @type {?} */ (this.element.nativeElement.parentNode)).insertBefore(clone, this.element.nativeElement.nextSibling);\n }\n this.ghostElement = clone;\n this.document.body.style.cursor = this.dragCursor;\n this.setElementStyles(clone, {\n position: 'fixed',\n top: `${rect.top}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n cursor: this.dragCursor,\n margin: '0',\n willChange: 'transform',\n pointerEvents: 'none',\n });\n if (this.ghostElementTemplate) {\n /** @type {?} */\n const viewRef = this.vcr.createEmbeddedView(this.ghostElementTemplate);\n clone.innerHTML = '';\n viewRef.rootNodes\n .filter((/**\n * @param {?} node\n * @return {?}\n */\n (node) => node instanceof Node))\n .forEach((/**\n * @param {?} node\n * @return {?}\n */\n (node) => {\n clone.appendChild(node);\n }));\n dragEnded$.subscribe((/**\n * @return {?}\n */\n () => {\n this.vcr.remove(this.vcr.indexOf(viewRef));\n }));\n }\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.ghostElementCreated.emit({\n clientX: clientX - x,\n clientY: clientY - y,\n element: clone,\n });\n }));\n dragEnded$.subscribe((/**\n * @return {?}\n */\n () => {\n (/** @type {?} */ (clone.parentElement)).removeChild(clone);\n this.ghostElement = null;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', '');\n }));\n }\n this.draggableHelper.currentDrag.next(currentDrag$);\n }));\n dragEnded$\n .pipe(mergeMap((/**\n * @param {?} dragEndData\n * @return {?}\n */\n (dragEndData) => {\n /** @type {?} */\n const dragEndData$ = cancelDrag$.pipe(count(), take(1), map((/**\n * @param {?} calledCount\n * @return {?}\n */\n (calledCount) => (Object.assign({}, dragEndData, { dragCancelled: calledCount > 0 })))));\n cancelDrag$.complete();\n return dragEndData$;\n })))\n .subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n ({ x, y, dragCancelled }) => {\n this.scroller.destroy();\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragEnd.next({ x, y, dragCancelled });\n }));\n removeClass(this.renderer, this.element, this.dragActiveClass);\n currentDrag$.complete();\n }));\n merge(dragComplete$, dragEnded$)\n .pipe(take(1))\n .subscribe((/**\n * @return {?}\n */\n () => {\n requestAnimationFrame((/**\n * @return {?}\n */\n () => {\n this.document.head.removeChild(globalDragStyle);\n }));\n }));\n return pointerMove;\n })), share());\n merge(pointerDragged$.pipe(take(1), map((/**\n * @param {?} value\n * @return {?}\n */\n (value) => [, value]))), pointerDragged$.pipe(pairwise()))\n .pipe(filter((/**\n * @param {?} __0\n * @return {?}\n */\n ([previous, next]) => {\n if (!previous) {\n return true;\n }\n return previous.x !== next.x || previous.y !== next.y;\n })), map((/**\n * @param {?} __0\n * @return {?}\n */\n ([previous, next]) => next)))\n .subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n ({ x, y, currentDrag$, clientX, clientY, transformX, transformY, target, }) => {\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragging.next({ x, y });\n }));\n requestAnimationFrame((/**\n * @return {?}\n */\n () => {\n if (this.ghostElement) {\n /** @type {?} */\n const transform = `translate3d(${transformX}px, ${transformY}px, 0px)`;\n this.setElementStyles(this.ghostElement, {\n transform,\n '-webkit-transform': transform,\n '-ms-transform': transform,\n '-moz-transform': transform,\n '-o-transform': transform,\n });\n }\n }));\n currentDrag$.next({\n clientX,\n clientY,\n dropData: this.dropData,\n target,\n });\n }));\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.dragAxis) {\n this.checkEventListeners();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.unsubscribeEventListeners();\n this.pointerDown$.complete();\n this.pointerMove$.complete();\n this.pointerUp$.complete();\n this.destroy$.next();\n }\n /**\n * @private\n * @return {?}\n */\n checkEventListeners() {\n /** @type {?} */\n const canDrag = this.canDrag();\n /** @type {?} */\n const hasEventListeners = Object.keys(this.eventListenerSubscriptions).length > 0;\n if (canDrag && !hasEventListeners) {\n this.zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n this.eventListenerSubscriptions.mousedown = this.renderer.listen(this.element.nativeElement, 'mousedown', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onMouseDown(event);\n }));\n this.eventListenerSubscriptions.mouseup = this.renderer.listen('document', 'mouseup', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onMouseUp(event);\n }));\n this.eventListenerSubscriptions.touchstart = this.renderer.listen(this.element.nativeElement, 'touchstart', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onTouchStart(event);\n }));\n this.eventListenerSubscriptions.touchend = this.renderer.listen('document', 'touchend', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onTouchEnd(event);\n }));\n this.eventListenerSubscriptions.touchcancel = this.renderer.listen('document', 'touchcancel', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onTouchEnd(event);\n }));\n this.eventListenerSubscriptions.mouseenter = this.renderer.listen(this.element.nativeElement, 'mouseenter', (/**\n * @return {?}\n */\n () => {\n this.onMouseEnter();\n }));\n this.eventListenerSubscriptions.mouseleave = this.renderer.listen(this.element.nativeElement, 'mouseleave', (/**\n * @return {?}\n */\n () => {\n this.onMouseLeave();\n }));\n }));\n }\n else if (!canDrag && hasEventListeners) {\n this.unsubscribeEventListeners();\n }\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onMouseDown(event) {\n if (event.button === 0) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove = this.renderer.listen('document', 'mousemove', (/**\n * @param {?} mouseMoveEvent\n * @return {?}\n */\n (mouseMoveEvent) => {\n this.pointerMove$.next({\n event: mouseMoveEvent,\n clientX: mouseMoveEvent.clientX,\n clientY: mouseMoveEvent.clientY,\n });\n }));\n }\n this.pointerDown$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onMouseUp(event) {\n if (event.button === 0) {\n if (this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove();\n delete this.eventListenerSubscriptions.mousemove;\n }\n this.pointerUp$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onTouchStart(event) {\n /** @type {?} */\n let startScrollPosition;\n /** @type {?} */\n let isDragActivated;\n /** @type {?} */\n let hasContainerScrollbar;\n if ((this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress) {\n this.timeLongPress.timerBegin = Date.now();\n isDragActivated = false;\n hasContainerScrollbar = this.hasScrollbar();\n startScrollPosition = this.getScrollPosition();\n }\n if (!this.eventListenerSubscriptions.touchmove) {\n /** @type {?} */\n const contextMenuListener = fromEvent(this.document, 'contextmenu').subscribe((/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n e.preventDefault();\n }));\n /** @type {?} */\n const touchMoveListener = fromEvent(this.document, 'touchmove', {\n passive: false,\n }).subscribe((/**\n * @param {?} touchMoveEvent\n * @return {?}\n */\n (touchMoveEvent) => {\n if (((this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress) &&\n !isDragActivated &&\n hasContainerScrollbar) {\n isDragActivated = this.shouldBeginDrag(event, touchMoveEvent, startScrollPosition);\n }\n if (((!this.scrollContainer ||\n !this.scrollContainer.activeLongPressDrag) &&\n !this.touchStartLongPress) ||\n !hasContainerScrollbar ||\n isDragActivated) {\n touchMoveEvent.preventDefault();\n this.pointerMove$.next({\n event: touchMoveEvent,\n clientX: touchMoveEvent.targetTouches[0].clientX,\n clientY: touchMoveEvent.targetTouches[0].clientY,\n });\n }\n }));\n this.eventListenerSubscriptions.touchmove = (/**\n * @return {?}\n */\n () => {\n contextMenuListener.unsubscribe();\n touchMoveListener.unsubscribe();\n });\n }\n this.pointerDown$.next({\n event,\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n });\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onTouchEnd(event) {\n if (this.eventListenerSubscriptions.touchmove) {\n this.eventListenerSubscriptions.touchmove();\n delete this.eventListenerSubscriptions.touchmove;\n if ((this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress) {\n this.enableScroll();\n }\n }\n this.pointerUp$.next({\n event,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n });\n }\n /**\n * @private\n * @return {?}\n */\n onMouseEnter() {\n this.setCursor(this.dragCursor);\n }\n /**\n * @private\n * @return {?}\n */\n onMouseLeave() {\n this.setCursor('');\n }\n /**\n * @private\n * @return {?}\n */\n canDrag() {\n return this.dragAxis.x || this.dragAxis.y;\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n setCursor(value) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.renderer.setStyle(this.element.nativeElement, 'cursor', value);\n }\n }\n /**\n * @private\n * @return {?}\n */\n unsubscribeEventListeners() {\n Object.keys(this.eventListenerSubscriptions).forEach((/**\n * @param {?} type\n * @return {?}\n */\n (type) => {\n ((/** @type {?} */ (this))).eventListenerSubscriptions[type]();\n delete ((/** @type {?} */ (this))).eventListenerSubscriptions[type];\n }));\n }\n /**\n * @private\n * @param {?} element\n * @param {?} styles\n * @return {?}\n */\n setElementStyles(element, styles) {\n Object.keys(styles).forEach((/**\n * @param {?} key\n * @return {?}\n */\n (key) => {\n this.renderer.setStyle(element, key, styles[key]);\n }));\n }\n /**\n * @private\n * @return {?}\n */\n getScrollElement() {\n if (this.scrollContainer) {\n return this.scrollContainer.elementRef.nativeElement;\n }\n else {\n return this.document.body;\n }\n }\n /**\n * @private\n * @return {?}\n */\n getScrollPosition() {\n if (this.scrollContainer) {\n return {\n top: this.scrollContainer.elementRef.nativeElement.scrollTop,\n left: this.scrollContainer.elementRef.nativeElement.scrollLeft,\n };\n }\n else {\n return {\n top: window.pageYOffset || this.document.documentElement.scrollTop,\n left: window.pageXOffset || this.document.documentElement.scrollLeft,\n };\n }\n }\n /**\n * @private\n * @param {?} event\n * @param {?} touchMoveEvent\n * @param {?} startScrollPosition\n * @return {?}\n */\n shouldBeginDrag(event, touchMoveEvent, startScrollPosition) {\n /** @type {?} */\n const moveScrollPosition = this.getScrollPosition();\n /** @type {?} */\n const deltaScroll = {\n top: Math.abs(moveScrollPosition.top - startScrollPosition.top),\n left: Math.abs(moveScrollPosition.left - startScrollPosition.left),\n };\n /** @type {?} */\n const deltaX = Math.abs(touchMoveEvent.targetTouches[0].clientX - event.touches[0].clientX) - deltaScroll.left;\n /** @type {?} */\n const deltaY = Math.abs(touchMoveEvent.targetTouches[0].clientY - event.touches[0].clientY) - deltaScroll.top;\n /** @type {?} */\n const deltaTotal = deltaX + deltaY;\n /** @type {?} */\n const longPressConfig = this.touchStartLongPress\n ? this.touchStartLongPress\n : /* istanbul ignore next */\n {\n delta: this.scrollContainer.longPressConfig.delta,\n delay: this.scrollContainer.longPressConfig.duration,\n };\n if (deltaTotal > longPressConfig.delta ||\n deltaScroll.top > 0 ||\n deltaScroll.left > 0) {\n this.timeLongPress.timerBegin = Date.now();\n }\n this.timeLongPress.timerEnd = Date.now();\n /** @type {?} */\n const duration = this.timeLongPress.timerEnd - this.timeLongPress.timerBegin;\n if (duration >= longPressConfig.delay) {\n this.disableScroll();\n return true;\n }\n return false;\n }\n /**\n * @private\n * @return {?}\n */\n enableScroll() {\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', '');\n }\n this.renderer.setStyle(this.document.body, 'overflow', '');\n }\n /**\n * @private\n * @return {?}\n */\n disableScroll() {\n /* istanbul ignore next */\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', 'hidden');\n }\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n }\n /**\n * @private\n * @return {?}\n */\n hasScrollbar() {\n /** @type {?} */\n const scrollContainer = this.getScrollElement();\n /** @type {?} */\n const containerHasHorizontalScroll = scrollContainer.scrollWidth > scrollContainer.clientWidth;\n /** @type {?} */\n const containerHasVerticalScroll = scrollContainer.scrollHeight > scrollContainer.clientHeight;\n return containerHasHorizontalScroll || containerHasVerticalScroll;\n }\n}\nDraggableDirective.ɵfac = function DraggableDirective_Factory(t) { return new (t || DraggableDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DraggableHelper), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DraggableScrollContainerDirective, 8), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nDraggableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DraggableDirective, selectors: [[\"\", \"mwlDraggable\", \"\"]], inputs: { dragAxis: \"dragAxis\", dragSnapGrid: \"dragSnapGrid\", ghostDragEnabled: \"ghostDragEnabled\", showOriginalElementWhileDragging: \"showOriginalElementWhileDragging\", dragCursor: \"dragCursor\", autoScroll: \"autoScroll\", dropData: \"dropData\", validateDrag: \"validateDrag\", dragActiveClass: \"dragActiveClass\", ghostElementAppendTo: \"ghostElementAppendTo\", ghostElementTemplate: \"ghostElementTemplate\", touchStartLongPress: \"touchStartLongPress\" }, outputs: { dragPointerDown: \"dragPointerDown\", dragStart: \"dragStart\", ghostElementCreated: \"ghostElementCreated\", dragging: \"dragging\", dragEnd: \"dragEnd\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nDraggableDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: DraggableHelper },\n { type: NgZone },\n { type: ViewContainerRef },\n { type: DraggableScrollContainerDirective, decorators: [{ type: Optional }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nDraggableDirective.propDecorators = {\n dropData: [{ type: Input }],\n dragAxis: [{ type: Input }],\n dragSnapGrid: [{ type: Input }],\n ghostDragEnabled: [{ type: Input }],\n showOriginalElementWhileDragging: [{ type: Input }],\n validateDrag: [{ type: Input }],\n dragCursor: [{ type: Input }],\n dragActiveClass: [{ type: Input }],\n ghostElementAppendTo: [{ type: Input }],\n ghostElementTemplate: [{ type: Input }],\n touchStartLongPress: [{ type: Input }],\n autoScroll: [{ type: Input }],\n dragPointerDown: [{ type: Output }],\n dragStart: [{ type: Output }],\n ghostElementCreated: [{ type: Output }],\n dragging: [{ type: Output }],\n dragEnd: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlDraggable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DraggableHelper }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ViewContainerRef }, { type: DraggableScrollContainerDirective, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { dragAxis: [{\n type: Input\n }], dragSnapGrid: [{\n type: Input\n }], ghostDragEnabled: [{\n type: Input\n }], showOriginalElementWhileDragging: [{\n type: Input\n }], dragCursor: [{\n type: Input\n }], autoScroll: [{\n type: Input\n }], dragPointerDown: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], ghostElementCreated: [{\n type: Output\n }], dragging: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], dropData: [{\n type: Input\n }], validateDrag: [{\n type: Input\n }], dragActiveClass: [{\n type: Input\n }], ghostElementAppendTo: [{\n type: Input\n }], ghostElementTemplate: [{\n type: Input\n }], touchStartLongPress: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} clientX\n * @param {?} clientY\n * @param {?} rect\n * @return {?}\n */\nfunction isCoordinateWithinRectangle(clientX, clientY, rect) {\n return (clientX >= rect.left &&\n clientX <= rect.right &&\n clientY >= rect.top &&\n clientY <= rect.bottom);\n}\nclass DroppableDirective {\n /**\n * @param {?} element\n * @param {?} draggableHelper\n * @param {?} zone\n * @param {?} renderer\n * @param {?} scrollContainer\n */\n constructor(element, draggableHelper, zone, renderer, scrollContainer) {\n this.element = element;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.renderer = renderer;\n this.scrollContainer = scrollContainer;\n /**\n * Called when a draggable element starts overlapping the element\n */\n this.dragEnter = new EventEmitter();\n /**\n * Called when a draggable element stops overlapping the element\n */\n this.dragLeave = new EventEmitter();\n /**\n * Called when a draggable element is moved over the element\n */\n this.dragOver = new EventEmitter();\n /**\n * Called when a draggable element is dropped on this element\n */\n this.drop = new EventEmitter(); // tslint:disable-line no-output-named-after-standard-event\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.currentDragSubscription = this.draggableHelper.currentDrag.subscribe((/**\n * @param {?} drag$\n * @return {?}\n */\n (drag$) => {\n addClass(this.renderer, this.element, this.dragActiveClass);\n /** @type {?} */\n const droppableElement = {\n updateCache: true,\n };\n /** @type {?} */\n const deregisterScrollListener = this.renderer.listen(this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window', 'scroll', (/**\n * @return {?}\n */\n () => {\n droppableElement.updateCache = true;\n }));\n /** @type {?} */\n let currentDragDropData;\n /** @type {?} */\n const overlaps$ = drag$.pipe(map((/**\n * @param {?} __0\n * @return {?}\n */\n ({ clientX, clientY, dropData, target }) => {\n currentDragDropData = dropData;\n if (droppableElement.updateCache) {\n droppableElement.rect = this.element.nativeElement.getBoundingClientRect();\n if (this.scrollContainer) {\n droppableElement.scrollContainerRect = this.scrollContainer.elementRef.nativeElement.getBoundingClientRect();\n }\n droppableElement.updateCache = false;\n }\n /** @type {?} */\n const isWithinElement = isCoordinateWithinRectangle(clientX, clientY, (/** @type {?} */ (droppableElement.rect)));\n /** @type {?} */\n const isDropAllowed = !this.validateDrop ||\n this.validateDrop({ clientX, clientY, target });\n if (droppableElement.scrollContainerRect) {\n return (isWithinElement &&\n isDropAllowed &&\n isCoordinateWithinRectangle(clientX, clientY, (/** @type {?} */ (droppableElement.scrollContainerRect))));\n }\n else {\n return isWithinElement && isDropAllowed;\n }\n })));\n /** @type {?} */\n const overlapsChanged$ = overlaps$.pipe(distinctUntilChanged());\n /** @type {?} */\n let dragOverActive;\n overlapsChanged$\n .pipe(filter((/**\n * @param {?} overlapsNow\n * @return {?}\n */\n (overlapsNow) => overlapsNow)))\n .subscribe((/**\n * @return {?}\n */\n () => {\n dragOverActive = true;\n addClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragEnter.next({\n dropData: currentDragDropData,\n });\n }));\n }));\n overlaps$.pipe(filter((/**\n * @param {?} overlapsNow\n * @return {?}\n */\n (overlapsNow) => overlapsNow))).subscribe((/**\n * @return {?}\n */\n () => {\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragOver.next({\n dropData: currentDragDropData,\n });\n }));\n }));\n overlapsChanged$\n .pipe(pairwise(), filter((/**\n * @param {?} __0\n * @return {?}\n */\n ([didOverlap, overlapsNow]) => didOverlap && !overlapsNow)))\n .subscribe((/**\n * @return {?}\n */\n () => {\n dragOverActive = false;\n removeClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragLeave.next({\n dropData: currentDragDropData,\n });\n }));\n }));\n drag$.subscribe({\n complete: (/**\n * @return {?}\n */\n () => {\n deregisterScrollListener();\n removeClass(this.renderer, this.element, this.dragActiveClass);\n if (dragOverActive) {\n removeClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.drop.next({\n dropData: currentDragDropData,\n });\n }));\n }\n }),\n });\n }));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this.currentDragSubscription) {\n this.currentDragSubscription.unsubscribe();\n }\n }\n}\nDroppableDirective.ɵfac = function DroppableDirective_Factory(t) { return new (t || DroppableDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DraggableHelper), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DraggableScrollContainerDirective, 8)); };\nDroppableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DroppableDirective, selectors: [[\"\", \"mwlDroppable\", \"\"]], inputs: { dragOverClass: \"dragOverClass\", dragActiveClass: \"dragActiveClass\", validateDrop: \"validateDrop\" }, outputs: { dragEnter: \"dragEnter\", dragLeave: \"dragLeave\", dragOver: \"dragOver\", drop: \"drop\" } });\n/** @nocollapse */\nDroppableDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: DraggableHelper },\n { type: NgZone },\n { type: Renderer2 },\n { type: DraggableScrollContainerDirective, decorators: [{ type: Optional }] }\n];\nDroppableDirective.propDecorators = {\n dragOverClass: [{ type: Input }],\n dragActiveClass: [{ type: Input }],\n validateDrop: [{ type: Input }],\n dragEnter: [{ type: Output }],\n dragLeave: [{ type: Output }],\n dragOver: [{ type: Output }],\n drop: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DroppableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlDroppable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: DraggableHelper }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: DraggableScrollContainerDirective, decorators: [{\n type: Optional\n }] }]; }, { dragEnter: [{\n type: Output\n }], dragLeave: [{\n type: Output\n }], dragOver: [{\n type: Output\n }], drop: [{\n type: Output\n }], dragOverClass: [{\n type: Input\n }], dragActiveClass: [{\n type: Input\n }], validateDrop: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass DragAndDropModule {\n}\nDragAndDropModule.ɵfac = function DragAndDropModule_Factory(t) { return new (t || DragAndDropModule)(); };\nDragAndDropModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DragAndDropModule });\nDragAndDropModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropModule, [{\n type: NgModule,\n args: [{\n declarations: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ],\n exports: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DragAndDropModule, { declarations: [DraggableDirective, DroppableDirective, DraggableScrollContainerDirective], exports: [DraggableDirective, DroppableDirective, DraggableScrollContainerDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { DragAndDropModule, DraggableHelper as ɵc, DraggableScrollContainerDirective as ɵd, DraggableDirective as ɵb, DroppableDirective as ɵa };\n\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, Renderer2, ElementRef, Output, Input, EventEmitter, NgZone, Inject, PLATFORM_ID, Optional, NgModule } from '@angular/core';\nimport { Subject, Observable, merge, EMPTY, fromEvent } from 'rxjs';\nimport { map, mergeMap, takeUntil, filter, pairwise, take, share, auditTime, switchMap, startWith, tap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @hidden\n * @type {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nconst IS_TOUCH_DEVICE = (() => {\n // In case we're in Node.js environment.\n if (typeof window === 'undefined') {\n return false;\n }\n else {\n return ('ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n navigator.msMaxTouchPoints > 0);\n }\n})();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value1\n * @param {?} value2\n * @param {?=} precision\n * @return {?}\n */\nfunction isNumberCloseTo(value1, value2, precision = 3) {\n /** @type {?} */\n const diff = Math.abs(value1 - value2);\n return diff < precision;\n}\n/**\n * @param {?} startingRect\n * @param {?} edges\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\nfunction getNewBoundingRectangle(startingRect, edges, clientX, clientY) {\n /** @type {?} */\n const newBoundingRect = {\n top: startingRect.top,\n bottom: startingRect.bottom,\n left: startingRect.left,\n right: startingRect.right\n };\n if (edges.top) {\n newBoundingRect.top += clientY;\n }\n if (edges.bottom) {\n newBoundingRect.bottom += clientY;\n }\n if (edges.left) {\n newBoundingRect.left += clientX;\n }\n if (edges.right) {\n newBoundingRect.right += clientX;\n }\n newBoundingRect.height = newBoundingRect.bottom - newBoundingRect.top;\n newBoundingRect.width = newBoundingRect.right - newBoundingRect.left;\n return newBoundingRect;\n}\n/**\n * @param {?} element\n * @param {?} ghostElementPositioning\n * @return {?}\n */\nfunction getElementRect(element, ghostElementPositioning) {\n /** @type {?} */\n let translateX = 0;\n /** @type {?} */\n let translateY = 0;\n /** @type {?} */\n const style = element.nativeElement.style;\n /** @type {?} */\n const transformProperties = [\n 'transform',\n '-ms-transform',\n '-moz-transform',\n '-o-transform'\n ];\n /** @type {?} */\n const transform = transformProperties\n .map(property => style[property])\n .find(value => !!value);\n if (transform && transform.includes('translate')) {\n translateX = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$1');\n translateY = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$2');\n }\n if (ghostElementPositioning === 'absolute') {\n return {\n height: element.nativeElement.offsetHeight,\n width: element.nativeElement.offsetWidth,\n top: element.nativeElement.offsetTop - translateY,\n bottom: element.nativeElement.offsetHeight +\n element.nativeElement.offsetTop -\n translateY,\n left: element.nativeElement.offsetLeft - translateX,\n right: element.nativeElement.offsetWidth +\n element.nativeElement.offsetLeft -\n translateX\n };\n }\n else {\n /** @type {?} */\n const boundingRect = element.nativeElement.getBoundingClientRect();\n return {\n height: boundingRect.height,\n width: boundingRect.width,\n top: boundingRect.top - translateY,\n bottom: boundingRect.bottom - translateY,\n left: boundingRect.left - translateX,\n right: boundingRect.right - translateX,\n scrollTop: element.nativeElement.scrollTop,\n scrollLeft: element.nativeElement.scrollLeft\n };\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingY({ clientY, rect }) {\n return clientY >= rect.top && clientY <= rect.bottom;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingX({ clientX, rect }) {\n return clientX >= rect.left && clientX <= rect.right;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getResizeEdges({ clientX, clientY, elm, allowedEdges, cursorPrecision }) {\n /** @type {?} */\n const elmPosition = elm.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const edges = {};\n if (allowedEdges.left &&\n isNumberCloseTo(clientX, elmPosition.left, cursorPrecision) &&\n isWithinBoundingY({ clientY, rect: elmPosition })) {\n edges.left = true;\n }\n if (allowedEdges.right &&\n isNumberCloseTo(clientX, elmPosition.right, cursorPrecision) &&\n isWithinBoundingY({ clientY, rect: elmPosition })) {\n edges.right = true;\n }\n if (allowedEdges.top &&\n isNumberCloseTo(clientY, elmPosition.top, cursorPrecision) &&\n isWithinBoundingX({ clientX, rect: elmPosition })) {\n edges.top = true;\n }\n if (allowedEdges.bottom &&\n isNumberCloseTo(clientY, elmPosition.bottom, cursorPrecision) &&\n isWithinBoundingX({ clientX, rect: elmPosition })) {\n edges.bottom = true;\n }\n return edges;\n}\n/** @type {?} */\nconst DEFAULT_RESIZE_CURSORS = Object.freeze({\n topLeft: 'nw-resize',\n topRight: 'ne-resize',\n bottomLeft: 'sw-resize',\n bottomRight: 'se-resize',\n leftOrRight: 'col-resize',\n topOrBottom: 'row-resize'\n});\n/**\n * @param {?} edges\n * @param {?} cursors\n * @return {?}\n */\nfunction getResizeCursor(edges, cursors) {\n if (edges.left && edges.top) {\n return cursors.topLeft;\n }\n else if (edges.right && edges.top) {\n return cursors.topRight;\n }\n else if (edges.left && edges.bottom) {\n return cursors.bottomLeft;\n }\n else if (edges.right && edges.bottom) {\n return cursors.bottomRight;\n }\n else if (edges.left || edges.right) {\n return cursors.leftOrRight;\n }\n else if (edges.top || edges.bottom) {\n return cursors.topOrBottom;\n }\n else {\n return '';\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getEdgesDiff({ edges, initialRectangle, newRectangle }) {\n /** @type {?} */\n const edgesDiff = {};\n Object.keys(edges).forEach(edge => {\n edgesDiff[edge] = (newRectangle[edge] || 0) - (initialRectangle[edge] || 0);\n });\n return edgesDiff;\n}\n/** @type {?} */\nconst RESIZE_ACTIVE_CLASS = 'resize-active';\n/** @type {?} */\nconst RESIZE_LEFT_HOVER_CLASS = 'resize-left-hover';\n/** @type {?} */\nconst RESIZE_RIGHT_HOVER_CLASS = 'resize-right-hover';\n/** @type {?} */\nconst RESIZE_TOP_HOVER_CLASS = 'resize-top-hover';\n/** @type {?} */\nconst RESIZE_BOTTOM_HOVER_CLASS = 'resize-bottom-hover';\n/** @type {?} */\nconst RESIZE_GHOST_ELEMENT_CLASS = 'resize-ghost-element';\n/** @type {?} */\nconst MOUSE_MOVE_THROTTLE_MS = 50;\n/**\n * Place this on an element to make it resizable. For example:\n *\n * ```html\n * \n *
  • \n * ```\n * Or in case they are sibling elements:\n * ```html\n *
    \n *
    \n * ```\n */\nclass ResizableDirective {\n /**\n * @hidden\n * @param {?} platformId\n * @param {?} renderer\n * @param {?} elm\n * @param {?} zone\n */\n constructor(platformId, renderer, elm, zone) {\n this.platformId = platformId;\n this.renderer = renderer;\n this.elm = elm;\n this.zone = zone;\n /**\n * The edges that an element can be resized from. Pass an object like `{top: true, bottom: false}`. By default no edges can be resized.\n * @deprecated use a resize handle instead that positions itself to the side of the element you would like to resize\n */\n this.resizeEdges = {};\n /**\n * Set to `true` to enable a temporary resizing effect of the element in between the `resizeStart` and `resizeEnd` events.\n */\n this.enableGhostResize = false;\n /**\n * A snap grid that resize events will be locked to.\n *\n * e.g. to only allow the element to be resized every 10px set it to `{left: 10, right: 10}`\n */\n this.resizeSnapGrid = {};\n /**\n * The mouse cursors that will be set on the resize edges\n */\n this.resizeCursors = DEFAULT_RESIZE_CURSORS;\n /**\n * Mouse over thickness to active cursor.\n * @deprecated invalid when you migrate to use resize handles instead of setting resizeEdges on the element\n */\n this.resizeCursorPrecision = 3;\n /**\n * Define the positioning of the ghost element (can be fixed or absolute)\n */\n this.ghostElementPositioning = 'fixed';\n /**\n * Allow elements to be resized to negative dimensions\n */\n this.allowNegativeResizes = false;\n /**\n * The mouse move throttle in milliseconds, default: 50 ms\n */\n this.mouseMoveThrottleMS = MOUSE_MOVE_THROTTLE_MS;\n /**\n * Called when the mouse is pressed and a resize event is about to begin. `$event` is a `ResizeEvent` object.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Called as the mouse is dragged after a resize event has begun. `$event` is a `ResizeEvent` object.\n */\n this.resizing = new EventEmitter();\n /**\n * Called after the mouse is released after a resize event. `$event` is a `ResizeEvent` object.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.mouseup = new Subject();\n /**\n * @hidden\n */\n this.mousedown = new Subject();\n /**\n * @hidden\n */\n this.mousemove = new Subject();\n this.destroy$ = new Subject();\n this.resizeEdges$ = new Subject();\n this.pointerEventListeners = PointerEventListeners.getInstance(renderer, zone);\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnInit() {\n /** @type {?} */\n const mousedown$ = merge(this.pointerEventListeners.pointerDown, this.mousedown);\n /** @type {?} */\n const mousemove$ = merge(this.pointerEventListeners.pointerMove, this.mousemove).pipe(tap(({ event }) => {\n if (currentResize) {\n try {\n event.preventDefault();\n }\n catch (e) {\n // just adding try-catch not to see errors in console if there is a passive listener for same event somewhere\n // browser does nothing except of writing errors to console\n }\n }\n }), share());\n /** @type {?} */\n const mouseup$ = merge(this.pointerEventListeners.pointerUp, this.mouseup);\n /** @type {?} */\n let currentResize;\n /** @type {?} */\n const removeGhostElement = () => {\n if (currentResize && currentResize.clonedNode) {\n this.elm.nativeElement.parentElement.removeChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'inherit');\n }\n };\n /** @type {?} */\n const getResizeCursors = () => {\n return Object.assign({}, DEFAULT_RESIZE_CURSORS, this.resizeCursors);\n };\n this.resizeEdges$\n .pipe(startWith(this.resizeEdges), map(() => {\n return (this.resizeEdges &&\n Object.keys(this.resizeEdges).some(edge => !!this.resizeEdges[edge]));\n }), switchMap(legacyResizeEdgesEnabled => legacyResizeEdgesEnabled ? mousemove$ : EMPTY), auditTime(this.mouseMoveThrottleMS), takeUntil(this.destroy$))\n .subscribe(({ clientX, clientY }) => {\n /** @type {?} */\n const resizeEdges = getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n });\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n if (!currentResize) {\n /** @type {?} */\n const cursor = getResizeCursor(resizeEdges, resizeCursors);\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', cursor);\n }\n this.setElementClass(this.elm, RESIZE_LEFT_HOVER_CLASS, resizeEdges.left === true);\n this.setElementClass(this.elm, RESIZE_RIGHT_HOVER_CLASS, resizeEdges.right === true);\n this.setElementClass(this.elm, RESIZE_TOP_HOVER_CLASS, resizeEdges.top === true);\n this.setElementClass(this.elm, RESIZE_BOTTOM_HOVER_CLASS, resizeEdges.bottom === true);\n });\n /** @type {?} */\n const mousedrag = mousedown$\n .pipe(mergeMap(startCoords => {\n /**\n * @param {?} moveCoords\n * @return {?}\n */\n function getDiff(moveCoords) {\n return {\n clientX: moveCoords.clientX - startCoords.clientX,\n clientY: moveCoords.clientY - startCoords.clientY\n };\n }\n /** @type {?} */\n const getSnapGrid = () => {\n /** @type {?} */\n const snapGrid = { x: 1, y: 1 };\n if (currentResize) {\n if (this.resizeSnapGrid.left && currentResize.edges.left) {\n snapGrid.x = +this.resizeSnapGrid.left;\n }\n else if (this.resizeSnapGrid.right &&\n currentResize.edges.right) {\n snapGrid.x = +this.resizeSnapGrid.right;\n }\n if (this.resizeSnapGrid.top && currentResize.edges.top) {\n snapGrid.y = +this.resizeSnapGrid.top;\n }\n else if (this.resizeSnapGrid.bottom &&\n currentResize.edges.bottom) {\n snapGrid.y = +this.resizeSnapGrid.bottom;\n }\n }\n return snapGrid;\n };\n /**\n * @param {?} coords\n * @param {?} snapGrid\n * @return {?}\n */\n function getGrid(coords, snapGrid) {\n return {\n x: Math.ceil(coords.clientX / snapGrid.x),\n y: Math.ceil(coords.clientY / snapGrid.y)\n };\n }\n return ((/** @type {?} */ (merge(mousemove$.pipe(take(1)).pipe(map(coords => [, coords])), mousemove$.pipe(pairwise())))))\n .pipe(map(([previousCoords, newCoords]) => {\n return [\n previousCoords ? getDiff(previousCoords) : previousCoords,\n getDiff(newCoords)\n ];\n }))\n .pipe(filter(([previousCoords, newCoords]) => {\n if (!previousCoords) {\n return true;\n }\n /** @type {?} */\n const snapGrid = getSnapGrid();\n /** @type {?} */\n const previousGrid = getGrid(previousCoords, snapGrid);\n /** @type {?} */\n const newGrid = getGrid(newCoords, snapGrid);\n return (previousGrid.x !== newGrid.x || previousGrid.y !== newGrid.y);\n }))\n .pipe(map(([, newCoords]) => {\n /** @type {?} */\n const snapGrid = getSnapGrid();\n return {\n clientX: Math.round(newCoords.clientX / snapGrid.x) * snapGrid.x,\n clientY: Math.round(newCoords.clientY / snapGrid.y) * snapGrid.y\n };\n }))\n .pipe(takeUntil(merge(mouseup$, mousedown$)));\n }))\n .pipe(filter(() => !!currentResize));\n mousedrag\n .pipe(map(({ clientX, clientY }) => {\n return getNewBoundingRectangle((/** @type {?} */ (currentResize)).startingRect, (/** @type {?} */ (currentResize)).edges, clientX, clientY);\n }))\n .pipe(filter((newBoundingRect) => {\n return (this.allowNegativeResizes ||\n !!(newBoundingRect.height &&\n newBoundingRect.width &&\n newBoundingRect.height > 0 &&\n newBoundingRect.width > 0));\n }))\n .pipe(filter((newBoundingRect) => {\n return this.validateResize\n ? this.validateResize({\n rectangle: newBoundingRect,\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: newBoundingRect\n })\n })\n : true;\n }), takeUntil(this.destroy$))\n .subscribe((newBoundingRect) => {\n if (currentResize && currentResize.clonedNode) {\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${newBoundingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${newBoundingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${newBoundingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${newBoundingRect.left}px`);\n }\n if (this.resizing.observers.length > 0) {\n this.zone.run(() => {\n this.resizing.emit({\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: newBoundingRect\n }),\n rectangle: newBoundingRect\n });\n });\n }\n (/** @type {?} */ (currentResize)).currentRect = newBoundingRect;\n });\n mousedown$\n .pipe(map(({ clientX, clientY, edges }) => {\n return (edges ||\n getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n }));\n }))\n .pipe(filter((edges) => {\n return Object.keys(edges).length > 0;\n }), takeUntil(this.destroy$))\n .subscribe((edges) => {\n if (currentResize) {\n removeGhostElement();\n }\n /** @type {?} */\n const startingRect = getElementRect(this.elm, this.ghostElementPositioning);\n currentResize = {\n edges,\n startingRect,\n currentRect: startingRect\n };\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n /** @type {?} */\n const cursor = getResizeCursor(currentResize.edges, resizeCursors);\n this.renderer.setStyle(document.body, 'cursor', cursor);\n this.setElementClass(this.elm, RESIZE_ACTIVE_CLASS, true);\n if (this.enableGhostResize) {\n currentResize.clonedNode = this.elm.nativeElement.cloneNode(true);\n this.elm.nativeElement.parentElement.appendChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(currentResize.clonedNode, 'position', this.ghostElementPositioning);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${currentResize.startingRect.left}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${currentResize.startingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${currentResize.startingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${currentResize.startingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'cursor', getResizeCursor(currentResize.edges, resizeCursors));\n this.renderer.addClass(currentResize.clonedNode, RESIZE_GHOST_ELEMENT_CLASS);\n (/** @type {?} */ (currentResize.clonedNode)).scrollTop = (/** @type {?} */ (currentResize.startingRect\n .scrollTop));\n (/** @type {?} */ (currentResize.clonedNode)).scrollLeft = (/** @type {?} */ (currentResize.startingRect\n .scrollLeft));\n }\n if (this.resizeStart.observers.length > 0) {\n this.zone.run(() => {\n this.resizeStart.emit({\n edges: getEdgesDiff({\n edges,\n initialRectangle: startingRect,\n newRectangle: startingRect\n }),\n rectangle: getNewBoundingRectangle(startingRect, {}, 0, 0)\n });\n });\n }\n });\n mouseup$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (currentResize) {\n this.renderer.removeClass(this.elm.nativeElement, RESIZE_ACTIVE_CLASS);\n this.renderer.setStyle(document.body, 'cursor', '');\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', '');\n if (this.resizeEnd.observers.length > 0) {\n this.zone.run(() => {\n this.resizeEnd.emit({\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: (/** @type {?} */ (currentResize)).currentRect\n }),\n rectangle: (/** @type {?} */ (currentResize)).currentRect\n });\n });\n }\n removeGhostElement();\n currentResize = null;\n }\n });\n }\n /**\n * @hidden\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.resizeEdges) {\n this.resizeEdges$.next(this.resizeEdges);\n }\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnDestroy() {\n // browser check for angular universal, because it doesn't know what document is\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setStyle(document.body, 'cursor', '');\n }\n this.mousedown.complete();\n this.mouseup.complete();\n this.mousemove.complete();\n this.resizeEdges$.complete();\n this.destroy$.next();\n }\n /**\n * @private\n * @param {?} elm\n * @param {?} name\n * @param {?} add\n * @return {?}\n */\n setElementClass(elm, name, add) {\n if (add) {\n this.renderer.addClass(elm.nativeElement, name);\n }\n else {\n this.renderer.removeClass(elm.nativeElement, name);\n }\n }\n}\nResizableDirective.ɵfac = function ResizableDirective_Factory(t) { return new (t || ResizableDirective)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nResizableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizableDirective, selectors: [[\"\", \"mwlResizable\", \"\"]], inputs: { resizeEdges: \"resizeEdges\", enableGhostResize: \"enableGhostResize\", resizeSnapGrid: \"resizeSnapGrid\", resizeCursors: \"resizeCursors\", resizeCursorPrecision: \"resizeCursorPrecision\", ghostElementPositioning: \"ghostElementPositioning\", allowNegativeResizes: \"allowNegativeResizes\", mouseMoveThrottleMS: \"mouseMoveThrottleMS\", validateResize: \"validateResize\" }, outputs: { resizeStart: \"resizeStart\", resizing: \"resizing\", resizeEnd: \"resizeEnd\" }, exportAs: [\"mwlResizable\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nResizableDirective.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: Renderer2 },\n { type: ElementRef },\n { type: NgZone }\n];\nResizableDirective.propDecorators = {\n validateResize: [{ type: Input }],\n resizeEdges: [{ type: Input }],\n enableGhostResize: [{ type: Input }],\n resizeSnapGrid: [{ type: Input }],\n resizeCursors: [{ type: Input }],\n resizeCursorPrecision: [{ type: Input }],\n ghostElementPositioning: [{ type: Input }],\n allowNegativeResizes: [{ type: Input }],\n mouseMoveThrottleMS: [{ type: Input }],\n resizeStart: [{ type: Output }],\n resizing: [{ type: Output }],\n resizeEnd: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizable]',\n exportAs: 'mwlResizable'\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { resizeEdges: [{\n type: Input\n }], enableGhostResize: [{\n type: Input\n }], resizeSnapGrid: [{\n type: Input\n }], resizeCursors: [{\n type: Input\n }], resizeCursorPrecision: [{\n type: Input\n }], ghostElementPositioning: [{\n type: Input\n }], allowNegativeResizes: [{\n type: Input\n }], mouseMoveThrottleMS: [{\n type: Input\n }], resizeStart: [{\n type: Output\n }], resizing: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }], validateResize: [{\n type: Input\n }] }); })();\nclass PointerEventListeners {\n // tslint:disable-line\n /**\n * @param {?} renderer\n * @param {?} zone\n * @return {?}\n */\n static getInstance(renderer, zone) {\n if (!PointerEventListeners.instance) {\n PointerEventListeners.instance = new PointerEventListeners(renderer, zone);\n }\n return PointerEventListeners.instance;\n }\n /**\n * @param {?} renderer\n * @param {?} zone\n */\n constructor(renderer, zone) {\n this.pointerDown = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseDown;\n /** @type {?} */\n let unsubscribeTouchStart;\n zone.runOutsideAngular(() => {\n unsubscribeMouseDown = renderer.listen('document', 'mousedown', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart = renderer.listen('document', 'touchstart', (event) => {\n observer.next({\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseDown();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchStart))();\n }\n };\n }).pipe(share());\n this.pointerMove = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseMove;\n /** @type {?} */\n let unsubscribeTouchMove;\n zone.runOutsideAngular(() => {\n unsubscribeMouseMove = renderer.listen('document', 'mousemove', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove = renderer.listen('document', 'touchmove', (event) => {\n observer.next({\n clientX: event.targetTouches[0].clientX,\n clientY: event.targetTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseMove();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchMove))();\n }\n };\n }).pipe(share());\n this.pointerUp = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseUp;\n /** @type {?} */\n let unsubscribeTouchEnd;\n /** @type {?} */\n let unsubscribeTouchCancel;\n zone.runOutsideAngular(() => {\n unsubscribeMouseUp = renderer.listen('document', 'mouseup', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd = renderer.listen('document', 'touchend', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n unsubscribeTouchCancel = renderer.listen('document', 'touchcancel', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseUp();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchEnd))();\n (/** @type {?} */ (unsubscribeTouchCancel))();\n }\n };\n }).pipe(share());\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * An element placed inside a `mwlResizable` directive to be used as a drag and resize handle\n *\n * For example\n *\n * ```html\n *
    \n *
    \n *
    \n * ```\n * Or in case they are sibling elements:\n * ```html\n *
    \n *
    \n * ```\n */\nclass ResizeHandleDirective {\n /**\n * @param {?} renderer\n * @param {?} element\n * @param {?} zone\n * @param {?} resizableDirective\n */\n constructor(renderer, element, zone, resizableDirective) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.resizableDirective = resizableDirective;\n /**\n * The `Edges` object that contains the edges of the parent element that dragging the handle will trigger a resize on\n */\n this.resizeEdges = {};\n this.eventListeners = {};\n this.destroy$ = new Subject();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.listenOnTheHost('mousedown').subscribe(event => {\n this.onMousedown(event, event.clientX, event.clientY);\n });\n this.listenOnTheHost('mouseup').subscribe(event => {\n this.onMouseup(event.clientX, event.clientY);\n });\n if (IS_TOUCH_DEVICE) {\n this.listenOnTheHost('touchstart').subscribe(event => {\n this.onMousedown(event, event.touches[0].clientX, event.touches[0].clientY);\n });\n merge(this.listenOnTheHost('touchend'), this.listenOnTheHost('touchcancel')).subscribe(event => {\n this.onMouseup(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\n });\n }\n });\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroy$.next();\n this.unsubscribeEventListeners();\n }\n /**\n * @hidden\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousedown(event, clientX, clientY) {\n event.preventDefault();\n if (!this.eventListeners.touchmove) {\n this.eventListeners.touchmove = this.renderer.listen(this.element.nativeElement, 'touchmove', (touchMoveEvent) => {\n this.onMousemove(touchMoveEvent, touchMoveEvent.targetTouches[0].clientX, touchMoveEvent.targetTouches[0].clientY);\n });\n }\n if (!this.eventListeners.mousemove) {\n this.eventListeners.mousemove = this.renderer.listen(this.element.nativeElement, 'mousemove', (mouseMoveEvent) => {\n this.onMousemove(mouseMoveEvent, mouseMoveEvent.clientX, mouseMoveEvent.clientY);\n });\n }\n this.resizable.mousedown.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n /**\n * @hidden\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMouseup(clientX, clientY) {\n this.unsubscribeEventListeners();\n this.resizable.mouseup.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n // directive might be passed from DI or as an input\n /**\n * @private\n * @return {?}\n */\n get resizable() {\n return this.resizableDirective || this.resizableContainer;\n }\n /**\n * @private\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousemove(event, clientX, clientY) {\n this.resizable.mousemove.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n event\n });\n }\n /**\n * @private\n * @return {?}\n */\n unsubscribeEventListeners() {\n Object.keys(this.eventListeners).forEach(type => {\n ((/** @type {?} */ (this))).eventListeners[type]();\n delete this.eventListeners[type];\n });\n }\n /**\n * @private\n * @template T\n * @param {?} eventName\n * @return {?}\n */\n listenOnTheHost(eventName) {\n return fromEvent(this.element.nativeElement, eventName).pipe(takeUntil(this.destroy$));\n }\n}\nResizeHandleDirective.ɵfac = function ResizeHandleDirective_Factory(t) { return new (t || ResizeHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ResizableDirective, 8)); };\nResizeHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizeHandleDirective, selectors: [[\"\", \"mwlResizeHandle\", \"\"]], inputs: { resizeEdges: \"resizeEdges\", resizableContainer: \"resizableContainer\" } });\n/** @nocollapse */\nResizeHandleDirective.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: NgZone },\n { type: ResizableDirective, decorators: [{ type: Optional }] }\n];\nResizeHandleDirective.propDecorators = {\n resizeEdges: [{ type: Input }],\n resizableContainer: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizeHandle]'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ResizableDirective, decorators: [{\n type: Optional\n }] }]; }, { resizeEdges: [{\n type: Input\n }], resizableContainer: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ResizableModule {\n}\nResizableModule.ɵfac = function ResizableModule_Factory(t) { return new (t || ResizableModule)(); };\nResizableModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ResizableModule });\nResizableModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableModule, [{\n type: NgModule,\n args: [{\n declarations: [ResizableDirective, ResizeHandleDirective],\n exports: [ResizableDirective, ResizeHandleDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ResizableModule, { declarations: [ResizableDirective, ResizeHandleDirective], exports: [ResizableDirective, ResizeHandleDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { ResizableDirective, ResizeHandleDirective, ResizableModule };\n\n","import { positionElements } from 'positioning';\nimport { validateEvents, getDayView, getDayViewHourGrid, getMonthView, getWeekViewHeader, getWeekView } from 'calendar-utils';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from 'angular-draggable-droppable';\nimport * as ɵngcc3 from 'angular-resizable-element';\n\nfunction CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 5);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template_a_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const action_r6 = restoredCtx.$implicit; const event_r3 = ɵngcc0.ɵɵnextContext(2).event; return action_r6.onClick({ event: event_r3 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const action_r6 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngClass\", action_r6.cssClass)(\"innerHtml\", action_r6.label, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction CalendarEventActionsComponent_ng_template_0_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 3);\n ɵngcc0.ɵɵtemplate(1, CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template, 1, 2, \"a\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const event_r3 = ɵngcc0.ɵɵnextContext().event;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", event_r3.actions)(\"ngForTrackBy\", ctx_r4.trackByIndex);\n} }\nfunction CalendarEventActionsComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarEventActionsComponent_ng_template_0_span_0_Template, 2, 2, \"span\", 2);\n} if (rf & 2) {\n const event_r3 = ctx.event;\n ɵngcc0.ɵɵproperty(\"ngIf\", event_r3.actions);\n} }\nfunction CalendarEventActionsComponent_ng_template_2_Template(rf, ctx) { }\nconst _c0 = function (a0) { return { event: a0 }; };\nfunction CalendarEventTitleComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 2);\n ɵngcc0.ɵɵpipe(1, \"calendarEventTitle\");\n} if (rf & 2) {\n const event_r3 = ctx.event;\n const view_r4 = ctx.view;\n ɵngcc0.ɵɵproperty(\"innerHTML\", ɵngcc0.ɵɵpipeBind3(1, 1, event_r3.title, view_r4, event_r3), ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction CalendarEventTitleComponent_ng_template_2_Template(rf, ctx) { }\nconst _c1 = function (a0, a1) { return { event: a0, view: a1 }; };\nfunction CalendarTooltipWindowComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵelement(1, \"div\", 3)(2, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const contents_r3 = ctx.contents;\n const placement_r4 = ctx.placement;\n ɵngcc0.ɵɵproperty(\"ngClass\", \"cal-tooltip-\" + placement_r4);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"innerHtml\", contents_r3, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction CalendarTooltipWindowComponent_ng_template_2_Template(rf, ctx) { }\nconst _c2 = function (a0, a1, a2) { return { contents: a0, placement: a1, event: a2 }; };\nfunction CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-month-cell\", 7);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const day_r3 = restoredCtx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(2); return ctx_r4.dayClicked.emit({ day: day_r3 }); })(\"highlightDay\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_highlightDay_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(2); return ctx_r6.toggleDayHighlight($event.event, true); })(\"unhighlightDay\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_unhighlightDay_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(2); return ctx_r7.toggleDayHighlight($event.event, false); })(\"drop\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const day_r3 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.eventDropped(day_r3, $event.dropData.event, $event.dropData.draggedFrom); })(\"eventClicked\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_eventClicked_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r9 = ɵngcc0.ɵɵnextContext(2); return ctx_r9.eventClicked.emit({ event: $event.event }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r3 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", day_r3 == null ? null : day_r3.cssClass)(\"day\", day_r3)(\"openDay\", ctx_r2.openDay)(\"locale\", ctx_r2.locale)(\"tooltipPlacement\", ctx_r2.tooltipPlacement)(\"tooltipAppendToBody\", ctx_r2.tooltipAppendToBody)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"customTemplate\", ctx_r2.cellTemplate);\n} }\nfunction CalendarMonthViewComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\")(1, \"div\", 4);\n ɵngcc0.ɵɵtemplate(2, CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template, 1, 8, \"mwl-calendar-month-cell\", 5);\n ɵngcc0.ɵɵpipe(3, \"slice\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"mwl-calendar-open-day-events\", 6);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarMonthViewComponent_div_3_Template_mwl_calendar_open_day_events_eventClicked_4_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.eventClicked.emit({ event: $event.event }); })(\"drop\", function CalendarMonthViewComponent_div_3_Template_mwl_calendar_open_day_events_drop_4_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.eventDropped(ctx_r12.openDay, $event.dropData.event, $event.dropData.draggedFrom); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const rowIndex_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind3(3, 7, ctx_r0.view.days, rowIndex_r1, rowIndex_r1 + ctx_r0.view.totalDaysVisibleInWeek))(\"ngForTrackBy\", ctx_r0.trackByDate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"isOpen\", ctx_r0.openRowIndex === rowIndex_r1)(\"events\", ctx_r0.openDay == null ? null : ctx_r0.openDay.events)(\"customTemplate\", ctx_r0.openDayEventsTemplate)(\"eventTitleTemplate\", ctx_r0.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r0.eventActionsTemplate);\n} }\nfunction CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵpipe(2, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r6 = ctx.$implicit;\n const locale_r4 = ɵngcc0.ɵɵnextContext().locale;\n ɵngcc0.ɵɵclassProp(\"cal-past\", day_r6.isPast)(\"cal-today\", day_r6.isToday)(\"cal-future\", day_r6.isFuture)(\"cal-weekend\", day_r6.isWeekend);\n ɵngcc0.ɵɵproperty(\"ngClass\", day_r6.cssClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ɵngcc0.ɵɵpipeBind3(2, 10, day_r6.date, \"monthViewColumnHeader\", locale_r4), \" \");\n} }\nfunction CalendarMonthViewHeaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template, 3, 14, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const days_r3 = ctx.days;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", days_r3)(\"ngForTrackBy\", ctx_r1.trackByWeekDayHeaderDate);\n} }\nfunction CalendarMonthViewHeaderComponent_ng_template_2_Template(rf, ctx) { }\nconst _c3 = function (a0, a1) { return { days: a0, locale: a1 }; };\nfunction CalendarMonthCellComponent_ng_template_0_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r3 = ɵngcc0.ɵɵnextContext().day;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(day_r3.badgeTotal);\n} }\nconst _c4 = function (a0, a1) { return { event: a0, draggedFrom: a1 }; };\nconst _c5 = function (a0, a1) { return { x: a0, y: a1 }; };\nfunction CalendarMonthCellComponent_ng_template_0_div_5_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function CalendarMonthCellComponent_ng_template_0_div_5_div_1_Template_div_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const event_r16 = restoredCtx.$implicit; const highlightDay_r7 = ɵngcc0.ɵɵnextContext(2).highlightDay; return highlightDay_r7.emit({ event: event_r16 }); })(\"mouseleave\", function CalendarMonthCellComponent_ng_template_0_div_5_div_1_Template_div_mouseleave_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const event_r16 = restoredCtx.$implicit; const unhighlightDay_r8 = ɵngcc0.ɵɵnextContext(2).unhighlightDay; return unhighlightDay_r8.emit({ event: event_r16 }); })(\"mwlClick\", function CalendarMonthCellComponent_ng_template_0_div_5_div_1_Template_div_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const event_r16 = restoredCtx.$implicit; const eventClicked_r9 = ɵngcc0.ɵɵnextContext(2).eventClicked; return eventClicked_r9.emit({ event: event_r16 }); });\n ɵngcc0.ɵɵpipe(1, \"calendarEventTitle\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const event_r16 = ctx.$implicit;\n const ctx_r24 = ɵngcc0.ɵɵnextContext(2);\n const tooltipPlacement_r6 = ctx_r24.tooltipPlacement;\n const tooltipTemplate_r10 = ctx_r24.tooltipTemplate;\n const tooltipAppendToBody_r11 = ctx_r24.tooltipAppendToBody;\n const day_r3 = ctx_r24.day;\n ɵngcc0.ɵɵstyleProp(\"background-color\", event_r16.color == null ? null : event_r16.color.primary);\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", event_r16.draggable);\n ɵngcc0.ɵɵproperty(\"ngClass\", event_r16 == null ? null : event_r16.cssClass)(\"mwlCalendarTooltip\", ɵngcc0.ɵɵpipeBind3(1, 12, event_r16.title, \"monthTooltip\", event_r16))(\"tooltipPlacement\", tooltipPlacement_r6)(\"tooltipEvent\", event_r16)(\"tooltipTemplate\", tooltipTemplate_r10)(\"tooltipAppendToBody\", tooltipAppendToBody_r11)(\"dropData\", ɵngcc0.ɵɵpureFunction2(16, _c4, event_r16, day_r3))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(19, _c5, event_r16.draggable, event_r16.draggable));\n} }\nfunction CalendarMonthCellComponent_ng_template_0_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n ɵngcc0.ɵɵtemplate(1, CalendarMonthCellComponent_ng_template_0_div_5_div_1_Template, 2, 22, \"div\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r3 = ɵngcc0.ɵɵnextContext().day;\n const ctx_r13 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", day_r3.events)(\"ngForTrackBy\", ctx_r13.trackByEventId);\n} }\nfunction CalendarMonthCellComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, CalendarMonthCellComponent_ng_template_0_span_1_Template, 2, 1, \"span\", 3);\n ɵngcc0.ɵɵelementStart(2, \"span\", 4);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵpipe(4, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(5, CalendarMonthCellComponent_ng_template_0_div_5_Template, 2, 2, \"div\", 5);\n} if (rf & 2) {\n const day_r3 = ctx.day;\n const locale_r5 = ctx.locale;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", day_r3.badgeTotal > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind3(4, 3, day_r3.date, \"monthViewDayNumber\", locale_r5));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", day_r3.events.length > 0);\n} }\nfunction CalendarMonthCellComponent_ng_template_2_Template(rf, ctx) { }\nconst _c6 = function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { return { day: a0, openDay: a1, locale: a2, tooltipPlacement: a3, highlightDay: a4, unhighlightDay: a5, eventClicked: a6, tooltipTemplate: a7, tooltipAppendToBody: a8 }; };\nfunction CalendarOpenDayEventsComponent_ng_template_0_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵelement(1, \"span\", 6);\n ɵngcc0.ɵɵtext(2, \" \");\n ɵngcc0.ɵɵelementStart(3, \"mwl-calendar-event-title\", 7);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarOpenDayEventsComponent_ng_template_0_div_0_div_1_Template_mwl_calendar_event_title_mwlClick_3_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const event_r8 = restoredCtx.$implicit; const eventClicked_r4 = ɵngcc0.ɵɵnextContext(2).eventClicked; return eventClicked_r4.emit({ event: event_r8 }); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtext(4, \" \");\n ɵngcc0.ɵɵelement(5, \"mwl-calendar-event-actions\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const event_r8 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", event_r8.draggable);\n ɵngcc0.ɵɵproperty(\"ngClass\", event_r8 == null ? null : event_r8.cssClass)(\"dropData\", ɵngcc0.ɵɵpureFunction1(11, _c0, event_r8))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(13, _c5, event_r8.draggable, event_r8.draggable));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", event_r8.color == null ? null : event_r8.color.primary);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", event_r8)(\"customTemplate\", ctx_r7.eventTitleTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", event_r8)(\"customTemplate\", ctx_r7.eventActionsTemplate);\n} }\nfunction CalendarOpenDayEventsComponent_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵtemplate(1, CalendarOpenDayEventsComponent_ng_template_0_div_0_div_1_Template, 6, 16, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const events_r3 = ɵngcc0.ɵɵnextContext().events;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@collapse\", undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", events_r3)(\"ngForTrackBy\", ctx_r6.trackByEventId);\n} }\nfunction CalendarOpenDayEventsComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarOpenDayEventsComponent_ng_template_0_div_0_Template, 2, 3, \"div\", 2);\n} if (rf & 2) {\n const isOpen_r5 = ctx.isOpen;\n ɵngcc0.ɵɵproperty(\"ngIf\", isOpen_r5);\n} }\nfunction CalendarOpenDayEventsComponent_ng_template_2_Template(rf, ctx) { }\nconst _c7 = function (a0, a1, a2) { return { events: a0, eventClicked: a1, isOpen: a2 }; };\nfunction CalendarWeekViewComponent_div_2_div_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 13);\n ɵngcc0.ɵɵlistener(\"drop\", function CalendarWeekViewComponent_div_2_div_4_Template_div_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const day_r7 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.eventDropped($event, day_r7.date, true); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c8 = function () { return { left: true }; };\nfunction CalendarWeekViewComponent_div_2_div_5_div_2_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 22);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c8));\n} }\nconst _c9 = function () { return { right: true }; };\nfunction CalendarWeekViewComponent_div_2_div_5_div_2_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 23);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c9));\n} }\nconst _c10 = function (a0, a1) { return { left: a0, right: a1 }; };\nconst _c11 = function (a0, a1) { return { event: a0, calendarId: a1 }; };\nconst _c12 = function (a0) { return { x: a0 }; };\nconst _c13 = function () { return {}; };\nfunction CalendarWeekViewComponent_div_2_div_5_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 17, 18);\n ɵngcc0.ɵɵlistener(\"resizeStart\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_resizeStart_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const allDayEvent_r13 = restoredCtx.$implicit; ɵngcc0.ɵɵnextContext(); const _r11 = ɵngcc0.ɵɵreference(1); const ctx_r17 = ɵngcc0.ɵɵnextContext(2); return ctx_r17.allDayEventResizeStarted(_r11, allDayEvent_r13, $event); })(\"resizing\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_resizing_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const allDayEvent_r13 = restoredCtx.$implicit; const ctx_r19 = ɵngcc0.ɵɵnextContext(3); return ctx_r19.allDayEventResizing(allDayEvent_r13, $event, ctx_r19.dayColumnWidth); })(\"resizeEnd\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_resizeEnd_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const allDayEvent_r13 = restoredCtx.$implicit; const ctx_r20 = ɵngcc0.ɵɵnextContext(3); return ctx_r20.allDayEventResizeEnded(allDayEvent_r13); })(\"dragStart\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_dragStart_0_listener() { ɵngcc0.ɵɵrestoreView(_r18); const _r14 = ɵngcc0.ɵɵreference(1); ɵngcc0.ɵɵnextContext(); const _r11 = ɵngcc0.ɵɵreference(1); const ctx_r21 = ɵngcc0.ɵɵnextContext(2); return ctx_r21.dragStarted(_r11, _r14); })(\"dragging\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_dragging_0_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r22 = ɵngcc0.ɵɵnextContext(3); return ctx_r22.allDayEventDragMove(); })(\"dragEnd\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_dragEnd_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const allDayEvent_r13 = restoredCtx.$implicit; const ctx_r23 = ɵngcc0.ɵɵnextContext(3); return ctx_r23.dragEnded(allDayEvent_r13, $event, ctx_r23.dayColumnWidth); });\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_div_5_div_2_div_2_Template, 1, 2, \"div\", 19);\n ɵngcc0.ɵɵelementStart(3, \"mwl-calendar-week-view-event\", 20);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_mwl_calendar_week_view_event_eventClicked_3_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const allDayEvent_r13 = restoredCtx.$implicit; const ctx_r24 = ɵngcc0.ɵɵnextContext(3); return ctx_r24.eventClicked.emit({ event: allDayEvent_r13.event }); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_2_div_5_div_2_div_4_Template, 1, 2, \"div\", 21);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const allDayEvent_r13 = ctx.$implicit;\n const ctx_r12 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"width\", 100 / ctx_r12.days.length * allDayEvent_r13.span, \"%\")(\"margin-left\", 100 / ctx_r12.days.length * allDayEvent_r13.offset, \"%\");\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", allDayEvent_r13.event.draggable && ctx_r12.allDayEventResizes.size === 0)(\"cal-starts-within-week\", !allDayEvent_r13.startsBeforeWeek)(\"cal-ends-within-week\", !allDayEvent_r13.endsAfterWeek);\n ɵngcc0.ɵɵproperty(\"ngClass\", allDayEvent_r13.event == null ? null : allDayEvent_r13.event.cssClass)(\"resizeSnapGrid\", ɵngcc0.ɵɵpureFunction2(26, _c10, ctx_r12.dayColumnWidth, ctx_r12.dayColumnWidth))(\"validateResize\", ctx_r12.validateResize)(\"dropData\", ɵngcc0.ɵɵpureFunction2(29, _c11, allDayEvent_r13.event, ctx_r12.calendarId))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(32, _c5, allDayEvent_r13.event.draggable && ctx_r12.allDayEventResizes.size === 0, !ctx_r12.snapDraggedEvents && allDayEvent_r13.event.draggable && ctx_r12.allDayEventResizes.size === 0))(\"dragSnapGrid\", ctx_r12.snapDraggedEvents ? ɵngcc0.ɵɵpureFunction1(35, _c12, ctx_r12.dayColumnWidth) : ɵngcc0.ɵɵpureFunction0(37, _c13))(\"validateDrag\", ctx_r12.validateDrag);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", (allDayEvent_r13.event == null ? null : allDayEvent_r13.event.resizable == null ? null : allDayEvent_r13.event.resizable.beforeStart) && !allDayEvent_r13.startsBeforeWeek);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"weekEvent\", allDayEvent_r13)(\"tooltipPlacement\", ctx_r12.tooltipPlacement)(\"tooltipTemplate\", ctx_r12.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r12.tooltipAppendToBody)(\"customTemplate\", ctx_r12.eventTemplate)(\"eventTitleTemplate\", ctx_r12.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r12.eventActionsTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (allDayEvent_r13.event == null ? null : allDayEvent_r13.event.resizable == null ? null : allDayEvent_r13.event.resizable.afterEnd) && !allDayEvent_r13.endsAfterWeek);\n} }\nfunction CalendarWeekViewComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 14, 15);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_div_5_div_2_Template, 5, 38, \"div\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const eventRow_r10 = ctx.$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", eventRow_r10.row)(\"ngForTrackBy\", ctx_r6.trackByDayOrWeekEvent);\n} }\nfunction CalendarWeekViewComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r26 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 8, 9);\n ɵngcc0.ɵɵlistener(\"dragEnter\", function CalendarWeekViewComponent_div_2_Template_div_dragEnter_0_listener() { ɵngcc0.ɵɵrestoreView(_r26); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.eventDragEnter = ctx_r25.eventDragEnter + 1; })(\"dragLeave\", function CalendarWeekViewComponent_div_2_Template_div_dragLeave_0_listener() { ɵngcc0.ɵɵrestoreView(_r26); const ctx_r27 = ɵngcc0.ɵɵnextContext(); return ctx_r27.eventDragEnter = ctx_r27.eventDragEnter - 1; });\n ɵngcc0.ɵɵelementStart(2, \"div\", 5);\n ɵngcc0.ɵɵelement(3, \"div\", 10);\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_2_div_4_Template, 1, 0, \"div\", 11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, CalendarWeekViewComponent_div_2_div_5_Template, 3, 2, \"div\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.allDayEventsLabelTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.days)(\"ngForTrackBy\", ctx_r0.trackByWeekDayHeaderDate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.view.allDayEventRows)(\"ngForTrackBy\", ctx_r0.trackByIndex);\n} }\nfunction CalendarWeekViewComponent_div_4_div_1_mwl_calendar_week_view_hour_segment_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"mwl-calendar-week-view-hour-segment\", 28);\n} if (rf & 2) {\n const segment_r32 = ctx.$implicit;\n const ctx_r31 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r31.hourSegmentHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"segment\", segment_r32)(\"segmentHeight\", ctx_r31.hourSegmentHeight)(\"locale\", ctx_r31.locale)(\"customTemplate\", ctx_r31.hourSegmentTemplate)(\"isTimeLabel\", true);\n} }\nfunction CalendarWeekViewComponent_div_4_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 26);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewComponent_div_4_div_1_mwl_calendar_week_view_hour_segment_1_Template, 1, 7, \"mwl-calendar-week-view-hour-segment\", 27);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const hour_r29 = ctx.$implicit;\n const odd_r30 = ctx.odd;\n const ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"cal-hour-odd\", odd_r30);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", hour_r29.segments)(\"ngForTrackBy\", ctx_r28.trackByHourSegment);\n} }\nfunction CalendarWeekViewComponent_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 24);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewComponent_div_4_div_1_Template, 2, 4, \"div\", 25);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.view.hourColumns[0].hours)(\"ngForTrackBy\", ctx_r1.trackByHour);\n} }\nconst _c14 = function () { return { left: true, top: true }; };\nfunction CalendarWeekViewComponent_div_7_div_1_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 22);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c14));\n} }\nconst _c15 = function () { return { right: true, bottom: true }; };\nfunction CalendarWeekViewComponent_div_7_div_1_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 23);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c15));\n} }\nconst _c16 = function (a0, a1, a2, a3) { return { left: a0, right: a1, top: a2, bottom: a3 }; };\nfunction CalendarWeekViewComponent_div_7_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r41 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 31, 18);\n ɵngcc0.ɵɵlistener(\"resizeStart\", function CalendarWeekViewComponent_div_7_div_1_Template_div_resizeStart_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r41); const timeEvent_r36 = restoredCtx.$implicit; const ctx_r40 = ɵngcc0.ɵɵnextContext(2); const _r2 = ɵngcc0.ɵɵreference(6); return ctx_r40.timeEventResizeStarted(_r2, timeEvent_r36, $event); })(\"resizing\", function CalendarWeekViewComponent_div_7_div_1_Template_div_resizing_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r41); const timeEvent_r36 = restoredCtx.$implicit; const ctx_r42 = ɵngcc0.ɵɵnextContext(2); return ctx_r42.timeEventResizing(timeEvent_r36, $event); })(\"resizeEnd\", function CalendarWeekViewComponent_div_7_div_1_Template_div_resizeEnd_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r41); const timeEvent_r36 = restoredCtx.$implicit; const ctx_r43 = ɵngcc0.ɵɵnextContext(2); return ctx_r43.timeEventResizeEnded(timeEvent_r36); })(\"dragStart\", function CalendarWeekViewComponent_div_7_div_1_Template_div_dragStart_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r41); const timeEvent_r36 = restoredCtx.$implicit; const _r37 = ɵngcc0.ɵɵreference(1); const ctx_r44 = ɵngcc0.ɵɵnextContext(2); const _r2 = ɵngcc0.ɵɵreference(6); return ctx_r44.dragStarted(_r2, _r37, timeEvent_r36); })(\"dragging\", function CalendarWeekViewComponent_div_7_div_1_Template_div_dragging_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r41); const timeEvent_r36 = restoredCtx.$implicit; const ctx_r45 = ɵngcc0.ɵɵnextContext(2); return ctx_r45.dragMove(timeEvent_r36, $event); })(\"dragEnd\", function CalendarWeekViewComponent_div_7_div_1_Template_div_dragEnd_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r41); const timeEvent_r36 = restoredCtx.$implicit; const ctx_r46 = ɵngcc0.ɵɵnextContext(2); return ctx_r46.dragEnded(timeEvent_r36, $event, ctx_r46.dayColumnWidth, true); });\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_7_div_1_div_2_Template, 1, 2, \"div\", 19);\n ɵngcc0.ɵɵelementStart(3, \"mwl-calendar-week-view-event\", 32);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarWeekViewComponent_div_7_div_1_Template_mwl_calendar_week_view_event_eventClicked_3_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r41); const timeEvent_r36 = restoredCtx.$implicit; const ctx_r47 = ɵngcc0.ɵɵnextContext(2); return ctx_r47.eventClicked.emit({ event: timeEvent_r36.event }); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_7_div_1_div_4_Template, 1, 2, \"div\", 21);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const timeEvent_r36 = ctx.$implicit;\n const ctx_r34 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"top\", timeEvent_r36.top, \"px\")(\"height\", timeEvent_r36.height, \"px\")(\"left\", timeEvent_r36.left, \"%\")(\"width\", timeEvent_r36.width, \"%\");\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", timeEvent_r36.event.draggable && ctx_r34.timeEventResizes.size === 0)(\"cal-starts-within-day\", !timeEvent_r36.startsBeforeDay)(\"cal-ends-within-day\", !timeEvent_r36.endsAfterDay);\n ɵngcc0.ɵɵproperty(\"ngClass\", timeEvent_r36.event.cssClass)(\"hidden\", timeEvent_r36.height === 0 && timeEvent_r36.width === 0)(\"resizeSnapGrid\", ɵngcc0.ɵɵpureFunction4(34, _c16, ctx_r34.dayColumnWidth, ctx_r34.dayColumnWidth, ctx_r34.eventSnapSize || ctx_r34.hourSegmentHeight, ctx_r34.eventSnapSize || ctx_r34.hourSegmentHeight))(\"validateResize\", ctx_r34.validateResize)(\"allowNegativeResizes\", true)(\"dropData\", ɵngcc0.ɵɵpureFunction2(39, _c11, timeEvent_r36.event, ctx_r34.calendarId))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(42, _c5, timeEvent_r36.event.draggable && ctx_r34.timeEventResizes.size === 0, timeEvent_r36.event.draggable && ctx_r34.timeEventResizes.size === 0))(\"dragSnapGrid\", ctx_r34.snapDraggedEvents ? ɵngcc0.ɵɵpureFunction2(45, _c5, ctx_r34.dayColumnWidth, ctx_r34.eventSnapSize || ctx_r34.hourSegmentHeight) : ɵngcc0.ɵɵpureFunction0(48, _c13))(\"ghostDragEnabled\", !ctx_r34.snapDraggedEvents)(\"validateDrag\", ctx_r34.validateDrag);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", (timeEvent_r36.event == null ? null : timeEvent_r36.event.resizable == null ? null : timeEvent_r36.event.resizable.beforeStart) && !timeEvent_r36.startsBeforeDay);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"weekEvent\", timeEvent_r36)(\"tooltipPlacement\", ctx_r34.tooltipPlacement)(\"tooltipTemplate\", ctx_r34.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r34.tooltipAppendToBody)(\"tooltipDisabled\", ctx_r34.dragActive || ctx_r34.timeEventResizes.size > 0)(\"customTemplate\", ctx_r34.eventTemplate)(\"eventTitleTemplate\", ctx_r34.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r34.eventActionsTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (timeEvent_r36.event == null ? null : timeEvent_r36.event.resizable == null ? null : timeEvent_r36.event.resizable.afterEnd) && !timeEvent_r36.endsAfterDay);\n} }\nfunction CalendarWeekViewComponent_div_7_div_2_mwl_calendar_week_view_hour_segment_1_Template(rf, ctx) { if (rf & 1) {\n const _r53 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-week-view-hour-segment\", 34);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewComponent_div_7_div_2_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r53); const segment_r51 = restoredCtx.$implicit; const ctx_r52 = ɵngcc0.ɵɵnextContext(3); return ctx_r52.hourSegmentClicked.emit({ date: segment_r51.date }); })(\"drop\", function CalendarWeekViewComponent_div_7_div_2_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r53); const segment_r51 = restoredCtx.$implicit; const ctx_r54 = ɵngcc0.ɵɵnextContext(3); return ctx_r54.eventDropped($event, segment_r51.date, false); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const segment_r51 = ctx.$implicit;\n const ctx_r50 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r50.hourSegmentHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"segment\", segment_r51)(\"segmentHeight\", ctx_r50.hourSegmentHeight)(\"locale\", ctx_r50.locale)(\"customTemplate\", ctx_r50.hourSegmentTemplate)(\"dragOverClass\", !ctx_r50.dragActive || !ctx_r50.snapDraggedEvents ? \"cal-drag-over\" : null);\n} }\nfunction CalendarWeekViewComponent_div_7_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 26);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewComponent_div_7_div_2_mwl_calendar_week_view_hour_segment_1_Template, 1, 7, \"mwl-calendar-week-view-hour-segment\", 33);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const hour_r48 = ctx.$implicit;\n const odd_r49 = ctx.odd;\n const ctx_r35 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"cal-hour-odd\", odd_r49);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", hour_r48.segments)(\"ngForTrackBy\", ctx_r35.trackByHourSegment);\n} }\nfunction CalendarWeekViewComponent_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 29);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewComponent_div_7_div_1_Template, 5, 49, \"div\", 30);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_7_div_2_Template, 2, 4, \"div\", 25);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r33 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", column_r33.events)(\"ngForTrackBy\", ctx_r3.trackByDayOrWeekEvent);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", column_r33.hours)(\"ngForTrackBy\", ctx_r3.trackByHour);\n} }\nfunction CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const day_r8 = restoredCtx.$implicit; const dayHeaderClicked_r5 = ɵngcc0.ɵɵnextContext().dayHeaderClicked; return dayHeaderClicked_r5.emit({ day: day_r8 }); })(\"drop\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const day_r8 = restoredCtx.$implicit; const eventDropped_r6 = ɵngcc0.ɵɵnextContext().eventDropped; return eventDropped_r6.emit({ event: $event.dropData.event, newStart: day_r8.date }); });\n ɵngcc0.ɵɵelementStart(1, \"b\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵpipe(3, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(4, \"br\");\n ɵngcc0.ɵɵelementStart(5, \"span\");\n ɵngcc0.ɵɵtext(6);\n ɵngcc0.ɵɵpipe(7, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const day_r8 = ctx.$implicit;\n const locale_r4 = ɵngcc0.ɵɵnextContext().locale;\n ɵngcc0.ɵɵclassProp(\"cal-past\", day_r8.isPast)(\"cal-today\", day_r8.isToday)(\"cal-future\", day_r8.isFuture)(\"cal-weekend\", day_r8.isWeekend);\n ɵngcc0.ɵɵproperty(\"ngClass\", day_r8.cssClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind3(3, 11, day_r8.date, \"weekViewColumnHeader\", locale_r4));\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind3(7, 15, day_r8.date, \"weekViewColumnSubHeader\", locale_r4));\n} }\nfunction CalendarWeekViewHeaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template, 8, 19, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const days_r3 = ctx.days;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", days_r3)(\"ngForTrackBy\", ctx_r1.trackByWeekDayHeaderDate);\n} }\nfunction CalendarWeekViewHeaderComponent_ng_template_2_Template(rf, ctx) { }\nconst _c17 = function (a0, a1, a2, a3) { return { days: a0, locale: a1, dayHeaderClicked: a2, eventDropped: a3 }; };\nfunction CalendarWeekViewEventComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewEventComponent_ng_template_0_Template_div_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const eventClicked_r5 = restoredCtx.eventClicked; return eventClicked_r5.emit(); });\n ɵngcc0.ɵɵpipe(1, \"calendarEventTitle\");\n ɵngcc0.ɵɵelement(2, \"mwl-calendar-event-actions\", 3);\n ɵngcc0.ɵɵtext(3, \" \");\n ɵngcc0.ɵɵelement(4, \"mwl-calendar-event-title\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const weekEvent_r3 = ctx.weekEvent;\n const tooltipPlacement_r4 = ctx.tooltipPlacement;\n const tooltipTemplate_r6 = ctx.tooltipTemplate;\n const tooltipAppendToBody_r7 = ctx.tooltipAppendToBody;\n const tooltipDisabled_r8 = ctx.tooltipDisabled;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"background-color\", weekEvent_r3.event.color == null ? null : weekEvent_r3.event.color.secondary)(\"border-color\", weekEvent_r3.event.color == null ? null : weekEvent_r3.event.color.primary);\n ɵngcc0.ɵɵproperty(\"mwlCalendarTooltip\", !tooltipDisabled_r8 ? ɵngcc0.ɵɵpipeBind3(1, 13, weekEvent_r3.event.title, \"weekTooltip\", weekEvent_r3.event) : \"\")(\"tooltipPlacement\", tooltipPlacement_r4)(\"tooltipEvent\", weekEvent_r3.event)(\"tooltipTemplate\", tooltipTemplate_r6)(\"tooltipAppendToBody\", tooltipAppendToBody_r7);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", weekEvent_r3.event)(\"customTemplate\", ctx_r1.eventActionsTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", weekEvent_r3.event)(\"customTemplate\", ctx_r1.eventTitleTemplate);\n} }\nfunction CalendarWeekViewEventComponent_ng_template_2_Template(rf, ctx) { }\nconst _c18 = function (a0, a1, a2, a3, a4, a5) { return { weekEvent: a0, tooltipPlacement: a1, eventClicked: a2, tooltipTemplate: a3, tooltipAppendToBody: a4, tooltipDisabled: a5 }; };\nfunction CalendarWeekViewHourSegmentComponent_ng_template_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵpipe(2, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n const segment_r3 = ctx_r8.segment;\n const locale_r4 = ctx_r8.locale;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ɵngcc0.ɵɵpipeBind3(2, 1, segment_r3.date, \"weekViewHour\", locale_r4), \" \");\n} }\nfunction CalendarWeekViewHourSegmentComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewHourSegmentComponent_ng_template_0_div_1_Template, 3, 5, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const segment_r3 = ctx.segment;\n const segmentHeight_r5 = ctx.segmentHeight;\n const isTimeLabel_r6 = ctx.isTimeLabel;\n ɵngcc0.ɵɵstyleProp(\"height\", segmentHeight_r5, \"px\");\n ɵngcc0.ɵɵclassProp(\"cal-hour-start\", segment_r3.isStart)(\"cal-after-hour-start\", !segment_r3.isStart);\n ɵngcc0.ɵɵproperty(\"ngClass\", segment_r3.cssClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", isTimeLabel_r6);\n} }\nfunction CalendarWeekViewHourSegmentComponent_ng_template_2_Template(rf, ctx) { }\nconst _c19 = function (a0, a1, a2, a3) { return { segment: a0, locale: a1, segmentHeight: a2, isTimeLabel: a3 }; };\nfunction CalendarDayViewComponent_mwl_calendar_day_view_event_2_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-day-view-event\", 8);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarDayViewComponent_mwl_calendar_day_view_event_2_Template_mwl_calendar_day_view_event_eventClicked_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const event_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.eventClicked.emit({ event: event_r4 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const event_r4 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", !ctx_r0.snapDraggedEvents && event_r4.draggable);\n ɵngcc0.ɵɵproperty(\"ngClass\", event_r4.cssClass)(\"dayEvent\", ɵngcc0.ɵɵpureFunction1(12, _c0, event_r4))(\"tooltipPlacement\", ctx_r0.tooltipPlacement)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r0.tooltipAppendToBody)(\"customTemplate\", ctx_r0.eventTemplate)(\"eventTitleTemplate\", ctx_r0.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r0.eventActionsTemplate)(\"dropData\", ɵngcc0.ɵɵpureFunction2(14, _c11, event_r4, ctx_r0.calendarId))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(17, _c5, !ctx_r0.snapDraggedEvents && event_r4.draggable, !ctx_r0.snapDraggedEvents && event_r4.draggable));\n} }\nconst _c20 = function () { return { top: true }; };\nfunction CalendarDayViewComponent_div_6_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 14);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c20));\n} }\nconst _c21 = function () { return { bottom: true }; };\nfunction CalendarDayViewComponent_div_6_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 15);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c21));\n} }\nconst _c22 = function (a0, a1) { return { top: a0, bottom: a1 }; };\nconst _c23 = function (a0) { return { y: a0 }; };\nfunction CalendarDayViewComponent_div_6_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 9, 10);\n ɵngcc0.ɵɵlistener(\"resizeStart\", function CalendarDayViewComponent_div_6_Template_div_resizeStart_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const dayEvent_r7 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); const _r1 = ɵngcc0.ɵɵreference(4); return ctx_r11.resizeStarted(dayEvent_r7, $event, _r1); })(\"resizing\", function CalendarDayViewComponent_div_6_Template_div_resizing_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const dayEvent_r7 = restoredCtx.$implicit; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.resizing(dayEvent_r7, $event); })(\"resizeEnd\", function CalendarDayViewComponent_div_6_Template_div_resizeEnd_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const dayEvent_r7 = restoredCtx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.resizeEnded(dayEvent_r7); })(\"dragStart\", function CalendarDayViewComponent_div_6_Template_div_dragStart_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const _r8 = ɵngcc0.ɵɵreference(1); const ctx_r15 = ɵngcc0.ɵɵnextContext(); const _r1 = ɵngcc0.ɵɵreference(4); return ctx_r15.dragStarted(_r8, _r1); })(\"dragging\", function CalendarDayViewComponent_div_6_Template_div_dragging_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.dragMove(); })(\"dragEnd\", function CalendarDayViewComponent_div_6_Template_div_dragEnd_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const dayEvent_r7 = restoredCtx.$implicit; const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ctx_r17.dragEnded(dayEvent_r7, $event); });\n ɵngcc0.ɵɵtemplate(2, CalendarDayViewComponent_div_6_div_2_Template, 1, 2, \"div\", 11);\n ɵngcc0.ɵɵelementStart(3, \"mwl-calendar-day-view-event\", 12);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarDayViewComponent_div_6_Template_mwl_calendar_day_view_event_eventClicked_3_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const dayEvent_r7 = restoredCtx.$implicit; const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.eventClicked.emit({ event: dayEvent_r7.event }); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, CalendarDayViewComponent_div_6_div_4_Template, 1, 2, \"div\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dayEvent_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"margin-top\", dayEvent_r7.top, \"px\")(\"height\", dayEvent_r7.height, \"px\")(\"margin-left\", dayEvent_r7.left + 70, \"px\")(\"width\", dayEvent_r7.width - 1, \"px\");\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", dayEvent_r7.event.draggable)(\"cal-starts-within-day\", !dayEvent_r7.startsBeforeDay)(\"cal-ends-within-day\", !dayEvent_r7.endsAfterDay);\n ɵngcc0.ɵɵproperty(\"ngClass\", dayEvent_r7.event.cssClass)(\"resizeSnapGrid\", ɵngcc0.ɵɵpureFunction2(30, _c22, ctx_r2.eventSnapSize || ctx_r2.hourSegmentHeight, ctx_r2.eventSnapSize || ctx_r2.hourSegmentHeight))(\"validateResize\", ctx_r2.validateResize)(\"dropData\", ɵngcc0.ɵɵpureFunction2(33, _c11, dayEvent_r7.event, ctx_r2.calendarId))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(36, _c5, !ctx_r2.snapDraggedEvents && dayEvent_r7.event.draggable && ctx_r2.currentResizes.size === 0, dayEvent_r7.event.draggable && ctx_r2.currentResizes.size === 0))(\"dragSnapGrid\", ctx_r2.snapDraggedEvents ? ɵngcc0.ɵɵpureFunction1(39, _c23, ctx_r2.eventSnapSize || ctx_r2.hourSegmentHeight) : ɵngcc0.ɵɵpureFunction0(41, _c13))(\"validateDrag\", ctx_r2.validateDrag);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", (dayEvent_r7.event == null ? null : dayEvent_r7.event.resizable == null ? null : dayEvent_r7.event.resizable.beforeStart) && !dayEvent_r7.startsBeforeDay);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dayEvent\", dayEvent_r7)(\"tooltipPlacement\", ctx_r2.tooltipPlacement)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r2.tooltipAppendToBody)(\"customTemplate\", ctx_r2.eventTemplate)(\"eventTitleTemplate\", ctx_r2.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r2.eventActionsTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (dayEvent_r7.event == null ? null : dayEvent_r7.event.resizable == null ? null : dayEvent_r7.event.resizable.afterEnd) && !dayEvent_r7.endsAfterDay);\n} }\nfunction CalendarDayViewComponent_div_7_mwl_calendar_day_view_hour_segment_1_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-day-view-hour-segment\", 18);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarDayViewComponent_div_7_mwl_calendar_day_view_hour_segment_1_Template_mwl_calendar_day_view_hour_segment_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r23); const segment_r21 = restoredCtx.$implicit; const ctx_r22 = ɵngcc0.ɵɵnextContext(2); return ctx_r22.hourSegmentClicked.emit({ date: segment_r21.date }); })(\"drop\", function CalendarDayViewComponent_div_7_mwl_calendar_day_view_hour_segment_1_Template_mwl_calendar_day_view_hour_segment_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r23); const segment_r21 = restoredCtx.$implicit; const ctx_r24 = ɵngcc0.ɵɵnextContext(2); return ctx_r24.eventDropped($event, segment_r21.date, false); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const segment_r21 = ctx.$implicit;\n const ctx_r20 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r20.hourSegmentHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"segment\", segment_r21)(\"segmentHeight\", ctx_r20.hourSegmentHeight)(\"locale\", ctx_r20.locale)(\"customTemplate\", ctx_r20.hourSegmentTemplate);\n} }\nfunction CalendarDayViewComponent_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 16);\n ɵngcc0.ɵɵtemplate(1, CalendarDayViewComponent_div_7_mwl_calendar_day_view_hour_segment_1_Template, 1, 6, \"mwl-calendar-day-view-hour-segment\", 17);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const hour_r19 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"min-width\", (ctx_r3.view == null ? null : ctx_r3.view.width) + 70, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", hour_r19.segments)(\"ngForTrackBy\", ctx_r3.trackByHourSegment);\n} }\nfunction CalendarDayViewHourSegmentComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2)(1, \"div\", 3);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵpipe(3, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const segment_r3 = ctx.segment;\n const locale_r4 = ctx.locale;\n const segmentHeight_r5 = ctx.segmentHeight;\n ɵngcc0.ɵɵstyleProp(\"height\", segmentHeight_r5, \"px\");\n ɵngcc0.ɵɵclassProp(\"cal-hour-start\", segment_r3.isStart)(\"cal-after-hour-start\", !segment_r3.isStart);\n ɵngcc0.ɵɵproperty(\"ngClass\", segment_r3.cssClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ɵngcc0.ɵɵpipeBind3(3, 8, segment_r3.date, \"dayViewHour\", locale_r4), \" \");\n} }\nfunction CalendarDayViewHourSegmentComponent_ng_template_2_Template(rf, ctx) { }\nconst _c24 = function (a0, a1, a2) { return { segment: a0, locale: a1, segmentHeight: a2 }; };\nfunction CalendarDayViewEventComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarDayViewEventComponent_ng_template_0_Template_div_mwlClick_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const eventClicked_r5 = restoredCtx.eventClicked; return eventClicked_r5.emit(); });\n ɵngcc0.ɵɵpipe(1, \"calendarEventTitle\");\n ɵngcc0.ɵɵelement(2, \"mwl-calendar-event-actions\", 3);\n ɵngcc0.ɵɵtext(3, \" \");\n ɵngcc0.ɵɵelement(4, \"mwl-calendar-event-title\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dayEvent_r3 = ctx.dayEvent;\n const tooltipPlacement_r4 = ctx.tooltipPlacement;\n const tooltipTemplate_r6 = ctx.tooltipTemplate;\n const tooltipAppendToBody_r7 = ctx.tooltipAppendToBody;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"background-color\", dayEvent_r3.event.color == null ? null : dayEvent_r3.event.color.secondary)(\"border-color\", dayEvent_r3.event.color == null ? null : dayEvent_r3.event.color.primary);\n ɵngcc0.ɵɵproperty(\"mwlCalendarTooltip\", ɵngcc0.ɵɵpipeBind3(1, 13, dayEvent_r3.event.title, \"dayTooltip\", dayEvent_r3.event))(\"tooltipPlacement\", tooltipPlacement_r4)(\"tooltipEvent\", dayEvent_r3.event)(\"tooltipTemplate\", tooltipTemplate_r6)(\"tooltipAppendToBody\", tooltipAppendToBody_r7);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", dayEvent_r3.event)(\"customTemplate\", ctx_r1.eventActionsTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", dayEvent_r3.event)(\"customTemplate\", ctx_r1.eventTitleTemplate);\n} }\nfunction CalendarDayViewEventComponent_ng_template_2_Template(rf, ctx) { }\nconst _c25 = function (a0, a1, a2, a3, a4) { return { dayEvent: a0, tooltipPlacement: a1, eventClicked: a2, tooltipTemplate: a3, tooltipAppendToBody: a4 }; };\nexport { DAYS_OF_WEEK } from 'calendar-utils';\nimport { trigger, style, transition, animate } from '@angular/animations';\nimport { __rest } from 'tslib';\nimport { DOCUMENT, formatDate, CommonModule } from '@angular/common';\nimport { ResizableModule } from 'angular-resizable-element';\nimport { DragAndDropModule } from 'angular-draggable-droppable';\nimport 'rxjs';\nimport { Component, Input, Directive, HostListener, Injector, ComponentFactoryResolver, ViewContainerRef, ElementRef, Inject, Renderer2, Output, EventEmitter, Injectable, Pipe, LOCALE_ID, InjectionToken, NgModule, ChangeDetectorRef } from '@angular/core';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst validateEvents$1 = (events) => {\n /** @type {?} */\n const warn = (...args) => console.warn('angular-calendar', ...args);\n return validateEvents(events, warn);\n};\n/**\n * @param {?} outer\n * @param {?} inner\n * @return {?}\n */\nfunction isInside(outer, inner) {\n return (Math.floor(outer.left) <= Math.ceil(inner.left) &&\n Math.floor(inner.left) <= Math.ceil(outer.right) &&\n Math.floor(outer.left) <= Math.ceil(inner.right) &&\n Math.floor(inner.right) <= Math.ceil(outer.right) &&\n Math.floor(outer.top) <= Math.ceil(inner.top) &&\n Math.floor(inner.top) <= Math.ceil(outer.bottom) &&\n Math.floor(outer.top) <= Math.ceil(inner.bottom) &&\n Math.floor(inner.bottom) <= Math.ceil(outer.bottom));\n}\n/**\n * @param {?} amount\n * @param {?} precision\n * @return {?}\n */\nfunction roundToNearest(amount, precision) {\n return Math.round(amount / precision) * precision;\n}\n/** @type {?} */\nconst trackByEventId = (index, event) => event.id ? event.id : event;\n/** @type {?} */\nconst trackByWeekDayHeaderDate = (index, day) => day.date.toISOString();\n/** @type {?} */\nconst trackByIndex = (index) => index;\n/** @type {?} */\nconst trackByHourSegment = (index, segment) => segment.date.toISOString();\n/** @type {?} */\nconst trackByHour = (index, hour) => hour.segments[0].date.toISOString();\n/** @type {?} */\nconst trackByDayOrWeekEvent = (index, weekEvent) => (weekEvent.event.id ? weekEvent.event.id : weekEvent.event);\n/** @type {?} */\nconst MINUTES_IN_HOUR = 60;\n/**\n * @param {?} movedY\n * @param {?} hourSegments\n * @param {?} hourSegmentHeight\n * @param {?} eventSnapSize\n * @return {?}\n */\nfunction getMinutesMoved(movedY, hourSegments, hourSegmentHeight, eventSnapSize) {\n /** @type {?} */\n const draggedInPixelsSnapSize = roundToNearest(movedY, eventSnapSize || hourSegmentHeight);\n /** @type {?} */\n const pixelAmountInMinutes = MINUTES_IN_HOUR / (hourSegments * hourSegmentHeight);\n return draggedInPixelsSnapSize * pixelAmountInMinutes;\n}\n/**\n * @param {?} hourSegments\n * @param {?} hourSegmentHeight\n * @return {?}\n */\nfunction getMinimumEventHeightInMinutes(hourSegments, hourSegmentHeight) {\n return (MINUTES_IN_HOUR / (hourSegments * hourSegmentHeight)) * 30;\n}\n/**\n * @param {?} dateAdapter\n * @param {?} event\n * @param {?} minimumMinutes\n * @return {?}\n */\nfunction getDefaultEventEnd(dateAdapter, event, minimumMinutes) {\n if (event.end) {\n return event.end;\n }\n else {\n return dateAdapter.addMinutes(event.start, minimumMinutes);\n }\n}\n/**\n * @param {?} dateAdapter\n * @param {?} date\n * @param {?} days\n * @param {?} excluded\n * @return {?}\n */\nfunction addDaysWithExclusions(dateAdapter, date, days, excluded) {\n /** @type {?} */\n let daysCounter = 0;\n /** @type {?} */\n let daysToAdd = 0;\n /** @type {?} */\n const changeDays = days < 0 ? dateAdapter.subDays : dateAdapter.addDays;\n /** @type {?} */\n let result = date;\n while (daysToAdd <= Math.abs(days)) {\n result = changeDays(date, daysCounter);\n /** @type {?} */\n const day = dateAdapter.getDay(result);\n if (excluded.indexOf(day) === -1) {\n daysToAdd++;\n }\n daysCounter++;\n }\n return result;\n}\n/**\n * @param {?} newStart\n * @param {?} newEnd\n * @param {?} period\n * @return {?}\n */\nfunction isDraggedWithinPeriod(newStart, newEnd, period) {\n /** @type {?} */\n const end = newEnd || newStart;\n return ((period.start <= newStart && newStart <= period.end) ||\n (period.start <= end && end <= period.end));\n}\n/**\n * @param {?} dropEvent\n * @param {?} date\n * @param {?} allDay\n * @param {?} calendarId\n * @return {?}\n */\nfunction shouldFireDroppedEvent(dropEvent, date, allDay, calendarId) {\n return (dropEvent.dropData &&\n dropEvent.dropData.event &&\n (dropEvent.dropData.calendarId !== calendarId ||\n (dropEvent.dropData.event.allDay && !allDay) ||\n (!dropEvent.dropData.event.allDay && allDay)));\n}\n/**\n * @param {?} dateAdapter\n * @param {?} viewDate\n * @param {?} weekStartsOn\n * @param {?=} excluded\n * @param {?=} daysInWeek\n * @return {?}\n */\nfunction getWeekViewPeriod(dateAdapter, viewDate, weekStartsOn, excluded = [], daysInWeek) {\n /** @type {?} */\n let viewStart = daysInWeek\n ? dateAdapter.startOfDay(viewDate)\n : dateAdapter.startOfWeek(viewDate, { weekStartsOn });\n if (excluded.indexOf(dateAdapter.getDay(viewStart)) > -1) {\n viewStart = dateAdapter.subDays(addDaysWithExclusions(dateAdapter, viewStart, 1, excluded), 1);\n }\n if (daysInWeek) {\n /** @type {?} */\n const viewEnd = dateAdapter.endOfDay(addDaysWithExclusions(dateAdapter, viewStart, daysInWeek - 1, excluded));\n return { viewStart, viewEnd };\n }\n else {\n /** @type {?} */\n let viewEnd = dateAdapter.endOfWeek(viewDate, { weekStartsOn });\n if (excluded.indexOf(dateAdapter.getDay(viewEnd)) > -1) {\n viewEnd = dateAdapter.addDays(addDaysWithExclusions(dateAdapter, viewEnd, -1, excluded), 1);\n }\n return { viewStart, viewEnd };\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarEventActionsComponent {\n constructor() {\n this.trackByIndex = trackByIndex;\n }\n}\nCalendarEventActionsComponent.ɵfac = function CalendarEventActionsComponent_Factory(t) { return new (t || CalendarEventActionsComponent)(); };\nCalendarEventActionsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarEventActionsComponent, selectors: [[\"mwl-calendar-event-actions\"]], inputs: { event: \"event\", customTemplate: \"customTemplate\" }, decls: 3, vars: 4, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-event-actions\", 4, \"ngIf\"], [1, \"cal-event-actions\"], [\"class\", \"cal-event-action\", \"href\", \"javascript:;\", 3, \"ngClass\", \"innerHtml\", \"mwlClick\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"href\", \"javascript:;\", 1, \"cal-event-action\", 3, \"ngClass\", \"innerHtml\", \"mwlClick\"]], template: function CalendarEventActionsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarEventActionsComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarEventActionsComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c0, ctx.event));\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgClass, ClickDirective, ɵngcc1.NgTemplateOutlet]; }, encapsulation: 2 });\nCalendarEventActionsComponent.propDecorators = {\n event: [{ type: Input }],\n customTemplate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarEventActionsComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-event-actions',\n template: `\n \n \n \n
    \n \n \n \n \n `\n }]\n }], function () { return []; }, { event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarEventTitleComponent {\n}\nCalendarEventTitleComponent.ɵfac = function CalendarEventTitleComponent_Factory(t) { return new (t || CalendarEventTitleComponent)(); };\nCalendarEventTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarEventTitleComponent, selectors: [[\"mwl-calendar-event-title\"]], inputs: { event: \"event\", customTemplate: \"customTemplate\", view: \"view\" }, decls: 3, vars: 5, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-event-title\", 3, \"innerHTML\"]], template: function CalendarEventTitleComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarEventTitleComponent_ng_template_0_Template, 2, 5, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarEventTitleComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c1, ctx.event, ctx.view));\n } }, directives: function () { return [ɵngcc1.NgTemplateOutlet]; }, pipes: function () { return [CalendarEventTitlePipe]; }, encapsulation: 2 });\nCalendarEventTitleComponent.propDecorators = {\n event: [{ type: Input }],\n customTemplate: [{ type: Input }],\n view: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarEventTitleComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-event-title',\n template: `\n \n \n \n \n \n \n `\n }]\n }], null, { event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], view: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarTooltipWindowComponent {\n}\nCalendarTooltipWindowComponent.ɵfac = function CalendarTooltipWindowComponent_Factory(t) { return new (t || CalendarTooltipWindowComponent)(); };\nCalendarTooltipWindowComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarTooltipWindowComponent, selectors: [[\"mwl-calendar-tooltip-window\"]], inputs: { contents: \"contents\", placement: \"placement\", event: \"event\", customTemplate: \"customTemplate\" }, decls: 3, vars: 6, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-tooltip\", 3, \"ngClass\"], [1, \"cal-tooltip-arrow\"], [1, \"cal-tooltip-inner\", 3, \"innerHtml\"]], template: function CalendarTooltipWindowComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarTooltipWindowComponent_ng_template_0_Template, 3, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarTooltipWindowComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c2, ctx.contents, ctx.placement, ctx.event));\n } }, directives: [ɵngcc1.NgClass, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\nCalendarTooltipWindowComponent.propDecorators = {\n contents: [{ type: Input }],\n placement: [{ type: Input }],\n event: [{ type: Input }],\n customTemplate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarTooltipWindowComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-tooltip-window',\n template: `\n \n
    \n
    \n
    \n
    \n \n \n \n `\n }]\n }], null, { contents: [{\n type: Input\n }], placement: [{\n type: Input\n }], event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\nclass CalendarTooltipDirective {\n /**\n * @param {?} elementRef\n * @param {?} injector\n * @param {?} renderer\n * @param {?} componentFactoryResolver\n * @param {?} viewContainerRef\n * @param {?} document\n */\n constructor(elementRef, injector, renderer, componentFactoryResolver, viewContainerRef, document //tslint:disable-line\n //tslint:disable-line\n ) {\n this.elementRef = elementRef;\n this.injector = injector;\n this.renderer = renderer;\n this.viewContainerRef = viewContainerRef;\n this.document //tslint:disable-line\n = document;\n this.placement = 'auto';\n this.tooltipFactory = componentFactoryResolver.resolveComponentFactory(CalendarTooltipWindowComponent);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.hide();\n }\n /**\n * @return {?}\n */\n onMouseOver() {\n this.show();\n }\n /**\n * @return {?}\n */\n onMouseOut() {\n this.hide();\n }\n /**\n * @return {?}\n */\n show() {\n if (!this.tooltipRef && this.contents) {\n this.tooltipRef = this.viewContainerRef.createComponent(this.tooltipFactory, 0, this.injector, []);\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n if (this.appendToBody) {\n this.document.body.appendChild(this.tooltipRef.location.nativeElement);\n }\n requestAnimationFrame(() => {\n this.positionTooltip();\n });\n }\n }\n /**\n * @return {?}\n */\n hide() {\n if (this.tooltipRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.tooltipRef.hostView));\n this.tooltipRef = null;\n }\n }\n /**\n * @param {?=} previousPosition\n * @return {?}\n */\n positionTooltip(previousPosition) {\n if (this.tooltipRef) {\n this.tooltipRef.changeDetectorRef.detectChanges();\n this.tooltipRef.instance.placement = positionElements(this.elementRef.nativeElement, this.tooltipRef.location.nativeElement.children[0], this.placement, this.appendToBody);\n // keep re-positioning the tooltip until the arrow position doesn't make a difference\n if (previousPosition !== this.tooltipRef.instance.placement) {\n this.positionTooltip(this.tooltipRef.instance.placement);\n }\n }\n }\n}\nCalendarTooltipDirective.ɵfac = function CalendarTooltipDirective_Factory(t) { return new (t || CalendarTooltipDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nCalendarTooltipDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarTooltipDirective, selectors: [[\"\", \"mwlCalendarTooltip\", \"\"]], hostBindings: function CalendarTooltipDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function CalendarTooltipDirective_mouseenter_HostBindingHandler() { return ctx.onMouseOver(); })(\"mouseleave\", function CalendarTooltipDirective_mouseleave_HostBindingHandler() { return ctx.onMouseOut(); });\n } }, inputs: { placement: [\"tooltipPlacement\", \"placement\"], contents: [\"mwlCalendarTooltip\", \"contents\"], customTemplate: [\"tooltipTemplate\", \"customTemplate\"], event: [\"tooltipEvent\", \"event\"], appendToBody: [\"tooltipAppendToBody\", \"appendToBody\"] } });\n/** @nocollapse */\nCalendarTooltipDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Injector },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nCalendarTooltipDirective.propDecorators = {\n contents: [{ type: Input, args: ['mwlCalendarTooltip',] }],\n placement: [{ type: Input, args: ['tooltipPlacement',] }],\n customTemplate: [{ type: Input, args: ['tooltipTemplate',] }],\n event: [{ type: Input, args: ['tooltipEvent',] }],\n appendToBody: [{ type: Input, args: ['tooltipAppendToBody',] }],\n onMouseOver: [{ type: HostListener, args: ['mouseenter',] }],\n onMouseOut: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarTooltipDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarTooltip]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Injector }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { placement: [{\n type: Input,\n args: ['tooltipPlacement']\n }], \n /**\n * @return {?}\n */\n onMouseOver: [{\n type: HostListener,\n args: ['mouseenter']\n }], \n /**\n * @return {?}\n */\n onMouseOut: [{\n type: HostListener,\n args: ['mouseleave']\n }], contents: [{\n type: Input,\n args: ['mwlCalendarTooltip']\n }], customTemplate: [{\n type: Input,\n args: ['tooltipTemplate']\n }], event: [{\n type: Input,\n args: ['tooltipEvent']\n }], appendToBody: [{\n type: Input,\n args: ['tooltipAppendToBody']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass DateAdapter {\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {string} */\nconst CalendarView = {\n Month: 'month',\n Week: 'week',\n Day: 'day',\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Change the view date to the previous view. For example:\n *\n * ```typescript\n * \n * Previous\n * \n * ```\n */\nclass CalendarPreviousViewDirective {\n /**\n * @param {?} dateAdapter\n */\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going back by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n * @return {?}\n */\n onClick() {\n /** @type {?} */\n const subFn = {\n day: this.dateAdapter.subDays,\n week: this.dateAdapter.subWeeks,\n month: this.dateAdapter.subMonths\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -1, this.excludeDays));\n }\n else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -this.daysInWeek, this.excludeDays));\n }\n else {\n this.viewDateChange.emit(subFn(this.viewDate, 1));\n }\n }\n}\nCalendarPreviousViewDirective.ɵfac = function CalendarPreviousViewDirective_Factory(t) { return new (t || CalendarPreviousViewDirective)(ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarPreviousViewDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarPreviousViewDirective, selectors: [[\"\", \"mwlCalendarPreviousView\", \"\"]], hostBindings: function CalendarPreviousViewDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CalendarPreviousViewDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, inputs: { excludeDays: \"excludeDays\", view: \"view\", viewDate: \"viewDate\", daysInWeek: \"daysInWeek\" }, outputs: { viewDateChange: \"viewDateChange\" } });\n/** @nocollapse */\nCalendarPreviousViewDirective.ctorParameters = () => [\n { type: DateAdapter }\n];\nCalendarPreviousViewDirective.propDecorators = {\n view: [{ type: Input }],\n viewDate: [{ type: Input }],\n excludeDays: [{ type: Input }],\n daysInWeek: [{ type: Input }],\n viewDateChange: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarPreviousViewDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarPreviousView]'\n }]\n }], function () { return [{ type: DateAdapter }]; }, { excludeDays: [{\n type: Input\n }], viewDateChange: [{\n type: Output\n }], \n /**\n * @hidden\n * @return {?}\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], view: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Change the view date to the next view. For example:\n *\n * ```typescript\n * \n * Next\n * \n * ```\n */\nclass CalendarNextViewDirective {\n /**\n * @param {?} dateAdapter\n */\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going forward by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n * @return {?}\n */\n onClick() {\n /** @type {?} */\n const addFn = {\n day: this.dateAdapter.addDays,\n week: this.dateAdapter.addWeeks,\n month: this.dateAdapter.addMonths\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, 1, this.excludeDays));\n }\n else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, this.daysInWeek, this.excludeDays));\n }\n else {\n this.viewDateChange.emit(addFn(this.viewDate, 1));\n }\n }\n}\nCalendarNextViewDirective.ɵfac = function CalendarNextViewDirective_Factory(t) { return new (t || CalendarNextViewDirective)(ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarNextViewDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarNextViewDirective, selectors: [[\"\", \"mwlCalendarNextView\", \"\"]], hostBindings: function CalendarNextViewDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CalendarNextViewDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, inputs: { excludeDays: \"excludeDays\", view: \"view\", viewDate: \"viewDate\", daysInWeek: \"daysInWeek\" }, outputs: { viewDateChange: \"viewDateChange\" } });\n/** @nocollapse */\nCalendarNextViewDirective.ctorParameters = () => [\n { type: DateAdapter }\n];\nCalendarNextViewDirective.propDecorators = {\n view: [{ type: Input }],\n viewDate: [{ type: Input }],\n excludeDays: [{ type: Input }],\n daysInWeek: [{ type: Input }],\n viewDateChange: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarNextViewDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarNextView]'\n }]\n }], function () { return [{ type: DateAdapter }]; }, { excludeDays: [{\n type: Input\n }], viewDateChange: [{\n type: Output\n }], \n /**\n * @hidden\n * @return {?}\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], view: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Change the view date to the current day. For example:\n *\n * ```typescript\n * \n * Today\n * \n * ```\n */\nclass CalendarTodayDirective {\n /**\n * @param {?} dateAdapter\n */\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n * @return {?}\n */\n onClick() {\n this.viewDateChange.emit(this.dateAdapter.startOfDay(new Date()));\n }\n}\nCalendarTodayDirective.ɵfac = function CalendarTodayDirective_Factory(t) { return new (t || CalendarTodayDirective)(ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarTodayDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarTodayDirective, selectors: [[\"\", \"mwlCalendarToday\", \"\"]], hostBindings: function CalendarTodayDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CalendarTodayDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, inputs: { viewDate: \"viewDate\" }, outputs: { viewDateChange: \"viewDateChange\" } });\n/** @nocollapse */\nCalendarTodayDirective.ctorParameters = () => [\n { type: DateAdapter }\n];\nCalendarTodayDirective.propDecorators = {\n viewDate: [{ type: Input }],\n viewDateChange: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarTodayDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarToday]'\n }]\n }], function () { return [{ type: DateAdapter }]; }, { viewDateChange: [{\n type: Output\n }], \n /**\n * @hidden\n * @return {?}\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], viewDate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * This will use the angular date pipe to do all date formatting. It is the default date formatter used by the calendar.\n */\nclass CalendarAngularDateFormatter {\n /**\n * @param {?} dateAdapter\n */\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n * @param {?} __0\n * @return {?}\n */\n monthViewColumnHeader({ date, locale }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The month view cell day number\n * @param {?} __0\n * @return {?}\n */\n monthViewDayNumber({ date, locale }) {\n return formatDate(date, 'd', locale);\n }\n /**\n * The month view title\n * @param {?} __0\n * @return {?}\n */\n monthViewTitle({ date, locale }) {\n return formatDate(date, 'LLLL y', locale);\n }\n /**\n * The week view header week day labels\n * @param {?} __0\n * @return {?}\n */\n weekViewColumnHeader({ date, locale }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The week view sub header day and month labels\n * @param {?} __0\n * @return {?}\n */\n weekViewColumnSubHeader({ date, locale }) {\n return formatDate(date, 'MMM d', locale);\n }\n /**\n * The week view title\n * @param {?} __0\n * @return {?}\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n /** @type {?} */\n const format = (dateToFormat, showYear) => formatDate(dateToFormat, 'MMM d' + (showYear ? ', yyyy' : ''), locale);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n * @param {?} __0\n * @return {?}\n */\n weekViewHour({ date, locale }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The time formatting down the left hand side of the day view\n * @param {?} __0\n * @return {?}\n */\n dayViewHour({ date, locale }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The day view title\n * @param {?} __0\n * @return {?}\n */\n dayViewTitle({ date, locale }) {\n return formatDate(date, 'EEEE, MMMM d, y', locale);\n }\n}\nCalendarAngularDateFormatter.ɵfac = function CalendarAngularDateFormatter_Factory(t) { return new (t || CalendarAngularDateFormatter)(ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarAngularDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarAngularDateFormatter, factory: CalendarAngularDateFormatter.ɵfac });\n/** @nocollapse */\nCalendarAngularDateFormatter.ctorParameters = () => [\n { type: DateAdapter }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarAngularDateFormatter, [{\n type: Injectable\n }], function () { return [{ type: DateAdapter }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * This class is responsible for all formatting of dates. There are 3 implementations available, the `CalendarAngularDateFormatter` (default) which uses the angular date pipe to format dates, the `CalendarNativeDateFormatter` which will use the Intl API to format dates, or there is the `CalendarMomentDateFormatter` which uses moment.\n *\n * If you wish, you may override any of the defaults via angulars DI. For example:\n *\n * ```typescript\n * import { CalendarDateFormatter, DateFormatterParams } from 'angular-calendar';\n * import { formatDate } from '\\@angular/common';\n *\n * class CustomDateFormatter extends CalendarDateFormatter {\n *\n * public monthViewColumnHeader({date, locale}: DateFormatterParams): string {\n * return formatDate(date, 'EEE', locale); // use short week days\n * }\n *\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarDateFormatter,\n * useClass: CustomDateFormatter\n * }]\n * ```\n */\nclass CalendarDateFormatter extends CalendarAngularDateFormatter {\n}\nCalendarDateFormatter.ɵfac = /*@__PURE__*/ function () { let ɵCalendarDateFormatter_BaseFactory; return function CalendarDateFormatter_Factory(t) { return (ɵCalendarDateFormatter_BaseFactory || (ɵCalendarDateFormatter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CalendarDateFormatter)))(t || CalendarDateFormatter); }; }();\nCalendarDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarDateFormatter, factory: CalendarDateFormatter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDateFormatter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * This pipe is primarily for rendering the current view title. Example usage:\n * ```typescript\n * // where `viewDate` is a `Date` and view is `'month' | 'week' | 'day'`\n * {{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}\n * ```\n */\nclass CalendarDatePipe {\n /**\n * @param {?} dateFormatter\n * @param {?} locale\n */\n constructor(dateFormatter, locale) {\n this.dateFormatter = dateFormatter;\n this.locale = locale;\n }\n /**\n * @param {?} date\n * @param {?} method\n * @param {?=} locale\n * @param {?=} weekStartsOn\n * @param {?=} excludeDays\n * @param {?=} daysInWeek\n * @return {?}\n */\n transform(date, method, locale = this.locale, weekStartsOn = 0, excludeDays = [], daysInWeek) {\n if (typeof this.dateFormatter[method] === 'undefined') {\n /** @type {?} */\n const allowedMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(CalendarDateFormatter.prototype)).filter(iMethod => iMethod !== 'constructor');\n throw new Error(`${method} is not a valid date formatter. Can only be one of ${allowedMethods.join(', ')}`);\n }\n return this.dateFormatter[method]({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek\n });\n }\n}\nCalendarDatePipe.ɵfac = function CalendarDatePipe_Factory(t) { return new (t || CalendarDatePipe)(ɵngcc0.ɵɵdirectiveInject(CalendarDateFormatter, 16), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nCalendarDatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"calendarDate\", type: CalendarDatePipe, pure: true });\n/** @nocollapse */\nCalendarDatePipe.ctorParameters = () => [\n { type: CalendarDateFormatter },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDatePipe, [{\n type: Pipe,\n args: [{\n name: 'calendarDate'\n }]\n }], function () { return [{ type: CalendarDateFormatter }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * This class is responsible for displaying all event titles within the calendar. You may override any of its methods via angulars DI to suit your requirements. For example:\n *\n * ```typescript\n * import { CalendarEventTitleFormatter, CalendarEvent } from 'angular-calendar';\n *\n * class CustomEventTitleFormatter extends CalendarEventTitleFormatter {\n *\n * month(event: CalendarEvent): string {\n * return `Custom prefix: ${event.title}`;\n * }\n *\n * }\n *\n * // in your component\n * providers: [{\n * provide: CalendarEventTitleFormatter,\n * useClass: CustomEventTitleFormatter\n * }]\n * ```\n */\nclass CalendarEventTitleFormatter {\n /**\n * The month view event title.\n * @param {?} event\n * @param {?} title\n * @return {?}\n */\n month(event, title) {\n return event.title;\n }\n /**\n * The month view event tooltip. Return a falsey value from this to disable the tooltip.\n * @param {?} event\n * @param {?} title\n * @return {?}\n */\n monthTooltip(event, title) {\n return event.title;\n }\n /**\n * The week view event title.\n * @param {?} event\n * @param {?} title\n * @return {?}\n */\n week(event, title) {\n return event.title;\n }\n /**\n * The week view event tooltip. Return a falsey value from this to disable the tooltip.\n * @param {?} event\n * @param {?} title\n * @return {?}\n */\n weekTooltip(event, title) {\n return event.title;\n }\n /**\n * The day view event title.\n * @param {?} event\n * @param {?} title\n * @return {?}\n */\n day(event, title) {\n return event.title;\n }\n /**\n * The day view event tooltip. Return a falsey value from this to disable the tooltip.\n * @param {?} event\n * @param {?} title\n * @return {?}\n */\n dayTooltip(event, title) {\n return event.title;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarEventTitlePipe {\n /**\n * @param {?} calendarEventTitle\n */\n constructor(calendarEventTitle) {\n this.calendarEventTitle = calendarEventTitle;\n }\n /**\n * @param {?} title\n * @param {?} titleType\n * @param {?} event\n * @return {?}\n */\n transform(title, titleType, event) {\n return this.calendarEventTitle[titleType](event, title);\n }\n}\nCalendarEventTitlePipe.ɵfac = function CalendarEventTitlePipe_Factory(t) { return new (t || CalendarEventTitlePipe)(ɵngcc0.ɵɵdirectiveInject(CalendarEventTitleFormatter, 16)); };\nCalendarEventTitlePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"calendarEventTitle\", type: CalendarEventTitlePipe, pure: true });\n/** @nocollapse */\nCalendarEventTitlePipe.ctorParameters = () => [\n { type: CalendarEventTitleFormatter }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarEventTitlePipe, [{\n type: Pipe,\n args: [{\n name: 'calendarEventTitle'\n }]\n }], function () { return [{ type: CalendarEventTitleFormatter }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst clickElements = new Set();\nclass ClickDirective {\n /**\n * @param {?} renderer\n * @param {?} elm\n * @param {?} document\n */\n constructor(renderer, elm, document) {\n this.renderer = renderer;\n this.elm = elm;\n this.document = document;\n this.click = new EventEmitter();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.renderer.setAttribute(this.elm.nativeElement, 'data-calendar-clickable', 'true');\n clickElements.add(this.elm.nativeElement);\n /** @type {?} */\n const eventName = typeof window !== 'undefined' && typeof window['Hammer'] !== 'undefined'\n ? 'tap'\n : 'click';\n this.removeListener = this.renderer.listen(this.elm.nativeElement, eventName, event => {\n /** @type {?} */\n let nearestClickableParent = event.target;\n while (!clickElements.has(nearestClickableParent) &&\n nearestClickableParent !== this.document.body) {\n nearestClickableParent = nearestClickableParent.parentElement;\n }\n /** @type {?} */\n const isThisClickableElement = this.elm.nativeElement === nearestClickableParent;\n if (isThisClickableElement) {\n this.click.next(event);\n }\n });\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.removeListener();\n clickElements.delete(this.elm.nativeElement);\n }\n}\nClickDirective.ɵfac = function ClickDirective_Factory(t) { return new (t || ClickDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nClickDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ClickDirective, selectors: [[\"\", \"mwlClick\", \"\"]], outputs: { click: \"mwlClick\" } });\n/** @nocollapse */\nClickDirective.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nClickDirective.propDecorators = {\n click: [{ type: Output, args: ['mwlClick',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ClickDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlClick]'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { click: [{\n type: Output,\n args: ['mwlClick']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarUtils {\n /**\n * @param {?} dateAdapter\n */\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * @param {?} args\n * @return {?}\n */\n getMonthView(args) {\n return getMonthView(this.dateAdapter, args);\n }\n /**\n * @param {?} args\n * @return {?}\n */\n getWeekViewHeader(args) {\n return getWeekViewHeader(this.dateAdapter, args);\n }\n /**\n * @param {?} args\n * @return {?}\n */\n getWeekView(args) {\n return getWeekView(this.dateAdapter, args);\n }\n /**\n * @param {?} args\n * @return {?}\n */\n getDayView(args) {\n return getDayView(this.dateAdapter, args);\n }\n /**\n * @param {?} args\n * @return {?}\n */\n getDayViewHourGrid(args) {\n return getDayViewHourGrid(this.dateAdapter, args);\n }\n}\nCalendarUtils.ɵfac = function CalendarUtils_Factory(t) { return new (t || CalendarUtils)(ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarUtils.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarUtils, factory: CalendarUtils.ɵfac });\n/** @nocollapse */\nCalendarUtils.ctorParameters = () => [\n { type: DateAdapter }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarUtils, [{\n type: Injectable\n }], function () { return [{ type: DateAdapter }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst MOMENT = new InjectionToken('Moment');\n/**\n * This will use moment to do all date formatting. To use this class:\n *\n * ```typescript\n * import { CalendarDateFormatter, CalendarMomentDateFormatter, MOMENT } from 'angular-calendar';\n * import moment from 'moment';\n *\n * // in your component\n * provide: [{\n * provide: MOMENT, useValue: moment\n * }, {\n * provide: CalendarDateFormatter, useClass: CalendarMomentDateFormatter\n * }]\n *\n * ```\n */\nclass CalendarMomentDateFormatter {\n /**\n * @hidden\n * @param {?} moment\n * @param {?} dateAdapter\n */\n constructor(moment, dateAdapter) {\n this.moment = moment;\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n * @param {?} __0\n * @return {?}\n */\n monthViewColumnHeader({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('dddd');\n }\n /**\n * The month view cell day number\n * @param {?} __0\n * @return {?}\n */\n monthViewDayNumber({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('D');\n }\n /**\n * The month view title\n * @param {?} __0\n * @return {?}\n */\n monthViewTitle({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('MMMM YYYY');\n }\n /**\n * The week view header week day labels\n * @param {?} __0\n * @return {?}\n */\n weekViewColumnHeader({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('dddd');\n }\n /**\n * The week view sub header day and month labels\n * @param {?} __0\n * @return {?}\n */\n weekViewColumnSubHeader({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('MMM D');\n }\n /**\n * The week view title\n * @param {?} __0\n * @return {?}\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n /** @type {?} */\n const format = (dateToFormat, showYear) => this.moment(dateToFormat)\n .locale(locale)\n .format('MMM D' + (showYear ? ', YYYY' : ''));\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n * @param {?} __0\n * @return {?}\n */\n weekViewHour({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('ha');\n }\n /**\n * The time formatting down the left hand side of the day view\n * @param {?} __0\n * @return {?}\n */\n dayViewHour({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('ha');\n }\n /**\n * The day view title\n * @param {?} __0\n * @return {?}\n */\n dayViewTitle({ date, locale }) {\n return this.moment(date)\n .locale(locale)\n .format('dddd, D MMMM, YYYY');\n }\n}\nCalendarMomentDateFormatter.ɵfac = function CalendarMomentDateFormatter_Factory(t) { return new (t || CalendarMomentDateFormatter)(ɵngcc0.ɵɵinject(MOMENT), ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarMomentDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarMomentDateFormatter, factory: CalendarMomentDateFormatter.ɵfac });\n/** @nocollapse */\nCalendarMomentDateFormatter.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MOMENT,] }] },\n { type: DateAdapter }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMomentDateFormatter, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MOMENT]\n }] }, { type: DateAdapter }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * This will use Intl API to do all date formatting.\n *\n * You will need to include a polyfill for older browsers.\n */\nclass CalendarNativeDateFormatter {\n /**\n * @param {?} dateAdapter\n */\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n * @param {?} __0\n * @return {?}\n */\n monthViewColumnHeader({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n /**\n * The month view cell day number\n * @param {?} __0\n * @return {?}\n */\n monthViewDayNumber({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { day: 'numeric' }).format(date);\n }\n /**\n * The month view title\n * @param {?} __0\n * @return {?}\n */\n monthViewTitle({ date, locale }) {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long'\n }).format(date);\n }\n /**\n * The week view header week day labels\n * @param {?} __0\n * @return {?}\n */\n weekViewColumnHeader({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n /**\n * The week view sub header day and month labels\n * @param {?} __0\n * @return {?}\n */\n weekViewColumnSubHeader({ date, locale }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short'\n }).format(date);\n }\n /**\n * The week view title\n * @param {?} __0\n * @return {?}\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n /** @type {?} */\n const format = (dateToFormat, showYear) => new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n year: showYear ? 'numeric' : undefined\n }).format(dateToFormat);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n * @param {?} __0\n * @return {?}\n */\n weekViewHour({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n /**\n * The time formatting down the left hand side of the day view\n * @param {?} __0\n * @return {?}\n */\n dayViewHour({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n /**\n * The day view title\n * @param {?} __0\n * @return {?}\n */\n dayViewTitle({ date, locale }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n weekday: 'long'\n }).format(date);\n }\n}\nCalendarNativeDateFormatter.ɵfac = function CalendarNativeDateFormatter_Factory(t) { return new (t || CalendarNativeDateFormatter)(ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarNativeDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarNativeDateFormatter, factory: CalendarNativeDateFormatter.ɵfac });\n/** @nocollapse */\nCalendarNativeDateFormatter.ctorParameters = () => [\n { type: DateAdapter }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarNativeDateFormatter, [{\n type: Injectable\n }], function () { return [{ type: DateAdapter }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {string} */\nconst CalendarEventTimesChangedEventType = {\n Drag: 'drag',\n Drop: 'drop',\n Resize: 'resize',\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Import this module to if you're just using a singular view and want to save on bundle size. Example usage:\n *\n * ```typescript\n * import { CalendarCommonModule, CalendarMonthModule } from 'angular-calendar';\n *\n * \\@NgModule({\n * imports: [\n * CalendarCommonModule.forRoot(),\n * CalendarMonthModule\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nclass CalendarCommonModule {\n /**\n * @param {?} dateAdapter\n * @param {?=} config\n * @return {?}\n */\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarCommonModule,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils\n ]\n };\n }\n}\nCalendarCommonModule.ɵfac = function CalendarCommonModule_Factory(t) { return new (t || CalendarCommonModule)(); };\nCalendarCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarCommonModule });\nCalendarCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarCommonModule, [{\n type: NgModule,\n args: [{\n declarations: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n ClickDirective\n ],\n imports: [CommonModule],\n exports: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n ClickDirective\n ],\n entryComponents: [CalendarTooltipWindowComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarCommonModule, { declarations: function () { return [CalendarEventActionsComponent, CalendarEventTitleComponent, CalendarTooltipWindowComponent, CalendarTooltipDirective, CalendarPreviousViewDirective, CalendarNextViewDirective, CalendarTodayDirective, CalendarDatePipe, CalendarEventTitlePipe, ClickDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CalendarEventActionsComponent, CalendarEventTitleComponent, CalendarTooltipWindowComponent, CalendarTooltipDirective, CalendarPreviousViewDirective, CalendarNextViewDirective, CalendarTodayDirective, CalendarDatePipe, CalendarEventTitlePipe, ClickDirective]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Shows all events on a given month. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nclass CalendarMonthViewComponent {\n /**\n * @hidden\n * @param {?} cdr\n * @param {?} utils\n * @param {?} locale\n * @param {?} dateAdapter\n */\n constructor(cdr, utils, locale, dateAdapter) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n /**\n * An array of events to display on view.\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * Whether the events list for the day of the `viewDate` option is visible or not\n */\n this.activeDayIsOpen = false;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * An output that will be called before the view is rendered for the current month.\n * If you add the `cssClass` property to a day in the body it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when the day cell is clicked\n */\n this.dayClicked = new EventEmitter();\n /**\n * Called when the event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an event is dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * @hidden\n */\n this.trackByIndex = trackByIndex;\n /**\n * @hidden\n */\n this.trackByDate = (index, day) => day.date.toISOString();\n this.locale = locale;\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.viewDate || changes.excludeDays || changes.weekendDays) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents$1(this.events);\n }\n if (changes.viewDate ||\n changes.events ||\n changes.excludeDays ||\n changes.weekendDays) {\n this.refreshBody();\n }\n if (changes.activeDayIsOpen ||\n changes.viewDate ||\n changes.events ||\n changes.excludeDays) {\n this.checkActiveDayIsOpen();\n }\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n * @param {?} event\n * @param {?} isHighlighted\n * @return {?}\n */\n toggleDayHighlight(event, isHighlighted) {\n this.view.days.forEach(day => {\n if (isHighlighted && day.events.indexOf(event) > -1) {\n day.backgroundColor =\n (event.color && event.color.secondary) || '#D1E8FF';\n }\n else {\n delete day.backgroundColor;\n }\n });\n }\n /**\n * @hidden\n * @param {?} droppedOn\n * @param {?} event\n * @param {?=} draggedFrom\n * @return {?}\n */\n eventDropped(droppedOn, event, draggedFrom) {\n if (droppedOn !== draggedFrom) {\n /** @type {?} */\n const year = this.dateAdapter.getYear(droppedOn.date);\n /** @type {?} */\n const month = this.dateAdapter.getMonth(droppedOn.date);\n /** @type {?} */\n const date = this.dateAdapter.getDate(droppedOn.date);\n /** @type {?} */\n const newStart = this.dateAdapter.setDate(this.dateAdapter.setMonth(this.dateAdapter.setYear(event.start, year), month), date);\n /** @type {?} */\n let newEnd;\n if (event.end) {\n /** @type {?} */\n const secondsDiff = this.dateAdapter.differenceInSeconds(newStart, event.start);\n newEnd = this.dateAdapter.addSeconds(event.end, secondsDiff);\n }\n this.eventTimesChanged.emit({\n event,\n newStart,\n newEnd,\n day: droppedOn,\n type: CalendarEventTimesChangedEventType.Drop\n });\n }\n }\n /**\n * @return {?}\n */\n refreshHeader() {\n this.columnHeaders = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays\n });\n this.emitBeforeViewRender();\n }\n /**\n * @return {?}\n */\n refreshBody() {\n this.view = this.utils.getMonthView({\n events: this.events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays\n });\n this.emitBeforeViewRender();\n }\n /**\n * @return {?}\n */\n checkActiveDayIsOpen() {\n if (this.activeDayIsOpen === true) {\n this.openDay = this.view.days.find(day => this.dateAdapter.isSameDay(day.date, this.viewDate));\n /** @type {?} */\n const index = this.view.days.indexOf(this.openDay);\n this.openRowIndex =\n Math.floor(index / this.view.totalDaysVisibleInWeek) *\n this.view.totalDaysVisibleInWeek;\n }\n else {\n this.openRowIndex = null;\n this.openDay = null;\n }\n }\n /**\n * @return {?}\n */\n refreshAll() {\n this.columnHeaders = null;\n this.view = null;\n this.refreshHeader();\n this.refreshBody();\n this.checkActiveDayIsOpen();\n }\n /**\n * @return {?}\n */\n emitBeforeViewRender() {\n if (this.columnHeaders && this.view) {\n this.beforeViewRender.emit({\n header: this.columnHeaders,\n body: this.view.days,\n period: this.view.period\n });\n }\n }\n}\nCalendarMonthViewComponent.ɵfac = function CalendarMonthViewComponent_Factory(t) { return new (t || CalendarMonthViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(CalendarUtils), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID), ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarMonthViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarMonthViewComponent, selectors: [[\"mwl-calendar-month-view\"]], inputs: { events: \"events\", excludeDays: \"excludeDays\", activeDayIsOpen: \"activeDayIsOpen\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", locale: \"locale\", viewDate: \"viewDate\", refresh: \"refresh\", tooltipTemplate: \"tooltipTemplate\", weekStartsOn: \"weekStartsOn\", headerTemplate: \"headerTemplate\", cellTemplate: \"cellTemplate\", openDayEventsTemplate: \"openDayEventsTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", weekendDays: \"weekendDays\" }, outputs: { beforeViewRender: \"beforeViewRender\", dayClicked: \"dayClicked\", eventClicked: \"eventClicked\", eventTimesChanged: \"eventTimesChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 4, vars: 4, consts: [[1, \"cal-month-view\"], [3, \"days\", \"locale\", \"customTemplate\"], [1, \"cal-days\"], [4, \"ngFor\", \"ngForTrackByIndex\", \"ngForOf\"], [1, \"cal-cell-row\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"ngClass\", \"day\", \"openDay\", \"locale\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"tooltipTemplate\", \"customTemplate\", \"mwlClick\", \"highlightDay\", \"unhighlightDay\", \"drop\", \"eventClicked\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"isOpen\", \"events\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"eventClicked\", \"drop\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"ngClass\", \"day\", \"openDay\", \"locale\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"tooltipTemplate\", \"customTemplate\", \"mwlClick\", \"highlightDay\", \"unhighlightDay\", \"drop\", \"eventClicked\"]], template: function CalendarMonthViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelement(1, \"mwl-calendar-month-view-header\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, CalendarMonthViewComponent_div_3_Template, 5, 11, \"div\", 3);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"days\", ctx.columnHeaders)(\"locale\", ctx.locale)(\"customTemplate\", ctx.headerTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.view.rowOffsets);\n } }, directives: function () { return [CalendarMonthViewHeaderComponent, ɵngcc1.NgForOf, CalendarMonthCellComponent, ɵngcc2.ɵa, ɵngcc1.NgClass, ClickDirective, CalendarOpenDayEventsComponent]; }, pipes: function () { return [ɵngcc1.SlicePipe]; }, encapsulation: 2 });\n/** @nocollapse */\nCalendarMonthViewComponent.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: CalendarUtils },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: DateAdapter }\n];\nCalendarMonthViewComponent.propDecorators = {\n viewDate: [{ type: Input }],\n events: [{ type: Input }],\n excludeDays: [{ type: Input }],\n activeDayIsOpen: [{ type: Input }],\n refresh: [{ type: Input }],\n locale: [{ type: Input }],\n tooltipPlacement: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n tooltipAppendToBody: [{ type: Input }],\n weekStartsOn: [{ type: Input }],\n headerTemplate: [{ type: Input }],\n cellTemplate: [{ type: Input }],\n openDayEventsTemplate: [{ type: Input }],\n eventTitleTemplate: [{ type: Input }],\n eventActionsTemplate: [{ type: Input }],\n weekendDays: [{ type: Input }],\n beforeViewRender: [{ type: Output }],\n dayClicked: [{ type: Output }],\n eventClicked: [{ type: Output }],\n eventTimesChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthViewComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-view',\n template: `\n
    \n \n \n
    \n
    \n
    \n \n \n
    \n \n \n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: CalendarUtils }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: DateAdapter }]; }, { events: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], activeDayIsOpen: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], beforeViewRender: [{\n type: Output\n }], dayClicked: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], locale: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], refresh: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], weekStartsOn: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], openDayEventsTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], weekendDays: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarMonthViewHeaderComponent {\n constructor() {\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n}\nCalendarMonthViewHeaderComponent.ɵfac = function CalendarMonthViewHeaderComponent_Factory(t) { return new (t || CalendarMonthViewHeaderComponent)(); };\nCalendarMonthViewHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarMonthViewHeaderComponent, selectors: [[\"mwl-calendar-month-view-header\"]], inputs: { days: \"days\", locale: \"locale\", customTemplate: \"customTemplate\" }, decls: 3, vars: 5, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-cell-row\", \"cal-header\"], [\"class\", \"cal-cell\", 3, \"cal-past\", \"cal-today\", \"cal-future\", \"cal-weekend\", \"ngClass\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"cal-cell\", 3, \"ngClass\"]], template: function CalendarMonthViewHeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarMonthViewHeaderComponent_ng_template_0_Template, 2, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarMonthViewHeaderComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c3, ctx.days, ctx.locale));\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgClass, ɵngcc1.NgTemplateOutlet], pipes: [CalendarDatePipe], encapsulation: 2 });\nCalendarMonthViewHeaderComponent.propDecorators = {\n days: [{ type: Input }],\n locale: [{ type: Input }],\n customTemplate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthViewHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-view-header',\n template: `\n \n
    \n \n {{ day.date | calendarDate: 'monthViewColumnHeader':locale }}\n
    \n \n
    \n \n \n `\n }]\n }], function () { return []; }, { days: [{\n type: Input\n }], locale: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarMonthCellComponent {\n constructor() {\n this.highlightDay = new EventEmitter();\n this.unhighlightDay = new EventEmitter();\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n }\n}\nCalendarMonthCellComponent.ɵfac = function CalendarMonthCellComponent_Factory(t) { return new (t || CalendarMonthCellComponent)(); };\nCalendarMonthCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarMonthCellComponent, selectors: [[\"mwl-calendar-month-cell\"]], hostAttrs: [1, \"cal-cell\", \"cal-day-cell\"], hostVars: 20, hostBindings: function CalendarMonthCellComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx.day.backgroundColor);\n ɵngcc0.ɵɵclassProp(\"cal-past\", ctx.day.isPast)(\"cal-today\", ctx.day.isToday)(\"cal-future\", ctx.day.isFuture)(\"cal-weekend\", ctx.day.isWeekend)(\"cal-in-month\", ctx.day.inMonth)(\"cal-out-month\", !ctx.day.inMonth)(\"cal-has-events\", ctx.day.events.length > 0)(\"cal-open\", ctx.day === ctx.openDay)(\"cal-event-highlight\", !!ctx.day.backgroundColor);\n } }, inputs: { day: \"day\", openDay: \"openDay\", locale: \"locale\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", customTemplate: \"customTemplate\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { highlightDay: \"highlightDay\", unhighlightDay: \"unhighlightDay\", eventClicked: \"eventClicked\" }, decls: 3, vars: 12, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-cell-top\"], [\"class\", \"cal-day-badge\", 4, \"ngIf\"], [1, \"cal-day-number\"], [\"class\", \"cal-events\", 4, \"ngIf\"], [1, \"cal-day-badge\"], [1, \"cal-events\"], [\"class\", \"cal-event\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"backgroundColor\", \"ngClass\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"cal-draggable\", \"dropData\", \"dragAxis\", \"mouseenter\", \"mouseleave\", \"mwlClick\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event\", 3, \"ngClass\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"dropData\", \"dragAxis\", \"mouseenter\", \"mouseleave\", \"mwlClick\"]], template: function CalendarMonthCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarMonthCellComponent_ng_template_0_Template, 6, 7, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarMonthCellComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunctionV(2, _c6, [ctx.day, ctx.openDay, ctx.locale, ctx.tooltipPlacement, ctx.highlightDay, ctx.unhighlightDay, ctx.eventClicked, ctx.tooltipTemplate, ctx.tooltipAppendToBody]));\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc2.ɵb, ɵngcc1.NgClass, CalendarTooltipDirective, ClickDirective, ɵngcc1.NgTemplateOutlet], pipes: [CalendarDatePipe, CalendarEventTitlePipe], encapsulation: 2 });\nCalendarMonthCellComponent.propDecorators = {\n day: [{ type: Input }],\n openDay: [{ type: Input }],\n locale: [{ type: Input }],\n tooltipPlacement: [{ type: Input }],\n tooltipAppendToBody: [{ type: Input }],\n customTemplate: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n highlightDay: [{ type: Output }],\n unhighlightDay: [{ type: Output }],\n eventClicked: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthCellComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-cell',\n template: `\n \n
    \n 0\">{{\n day.badgeTotal\n }}\n {{\n day.date | calendarDate: 'monthViewDayNumber':locale\n }}\n
    \n
    0\">\n
    \n \n \n \n \n `,\n host: {\n class: 'cal-cell cal-day-cell',\n '[class.cal-past]': 'day.isPast',\n '[class.cal-today]': 'day.isToday',\n '[class.cal-future]': 'day.isFuture',\n '[class.cal-weekend]': 'day.isWeekend',\n '[class.cal-in-month]': 'day.inMonth',\n '[class.cal-out-month]': '!day.inMonth',\n '[class.cal-has-events]': 'day.events.length > 0',\n '[class.cal-open]': 'day === openDay',\n '[class.cal-event-highlight]': '!!day.backgroundColor',\n '[style.backgroundColor]': 'day.backgroundColor'\n }\n }]\n }], function () { return []; }, { highlightDay: [{\n type: Output\n }], unhighlightDay: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], day: [{\n type: Input\n }], openDay: [{\n type: Input\n }], locale: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst collapseAnimation = trigger('collapse', [\n transition('void => *', [\n style({ height: 0, overflow: 'hidden' }),\n animate('150ms', style({ height: '*' }))\n ]),\n transition('* => void', [\n style({ height: '*', overflow: 'hidden' }),\n animate('150ms', style({ height: 0 }))\n ])\n]);\nclass CalendarOpenDayEventsComponent {\n constructor() {\n this.isOpen = false;\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n }\n}\nCalendarOpenDayEventsComponent.ɵfac = function CalendarOpenDayEventsComponent_Factory(t) { return new (t || CalendarOpenDayEventsComponent)(); };\nCalendarOpenDayEventsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarOpenDayEventsComponent, selectors: [[\"mwl-calendar-open-day-events\"]], inputs: { isOpen: \"isOpen\", events: \"events\", customTemplate: \"customTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\" }, outputs: { eventClicked: \"eventClicked\" }, decls: 3, vars: 6, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-open-day-events\", 4, \"ngIf\"], [1, \"cal-open-day-events\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"cal-draggable\", \"dropData\", \"dragAxis\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"dropData\", \"dragAxis\"], [1, \"cal-event\"], [\"view\", \"month\", 3, \"event\", \"customTemplate\", \"mwlClick\"], [3, \"event\", \"customTemplate\"]], template: function CalendarOpenDayEventsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarOpenDayEventsComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarOpenDayEventsComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c7, ctx.events, ctx.eventClicked, ctx.isOpen));\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc2.ɵb, ɵngcc1.NgClass, CalendarEventTitleComponent, ClickDirective, CalendarEventActionsComponent, ɵngcc1.NgTemplateOutlet], encapsulation: 2, data: { animation: [collapseAnimation] } });\nCalendarOpenDayEventsComponent.propDecorators = {\n isOpen: [{ type: Input }],\n events: [{ type: Input }],\n customTemplate: [{ type: Input }],\n eventTitleTemplate: [{ type: Input }],\n eventActionsTemplate: [{ type: Input }],\n eventClicked: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarOpenDayEventsComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-open-day-events',\n template: `\n \n
    \n \n \n \n &ngsp;\n \n \n &ngsp;\n \n \n
    \n \n \n \n \n `,\n animations: [collapseAnimation]\n }]\n }], function () { return []; }, { isOpen: [{\n type: Input\n }], eventClicked: [{\n type: Output\n }], events: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarMonthModule {\n}\nCalendarMonthModule.ɵfac = function CalendarMonthModule_Factory(t) { return new (t || CalendarMonthModule)(); };\nCalendarMonthModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarMonthModule });\nCalendarMonthModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, DragAndDropModule, CalendarCommonModule], DragAndDropModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, DragAndDropModule, CalendarCommonModule],\n declarations: [\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent\n ],\n exports: [\n DragAndDropModule,\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarMonthModule, { declarations: function () { return [CalendarMonthViewComponent, CalendarMonthCellComponent, CalendarOpenDayEventsComponent, CalendarMonthViewHeaderComponent]; }, imports: function () { return [CommonModule, DragAndDropModule, CalendarCommonModule]; }, exports: function () { return [DragAndDropModule, CalendarMonthViewComponent, CalendarMonthCellComponent, CalendarOpenDayEventsComponent, CalendarMonthViewHeaderComponent]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DRAG_THRESHOLD = 1;\nclass CalendarDragHelper {\n /**\n * @param {?} dragContainerElement\n * @param {?} draggableElement\n */\n constructor(dragContainerElement, draggableElement) {\n this.dragContainerElement = dragContainerElement;\n this.startPosition = draggableElement.getBoundingClientRect();\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n validateDrag({ x, y, snapDraggedEvents, dragAlreadyMoved }) {\n /** @type {?} */\n const isWithinThreshold = Math.abs(x) > DRAG_THRESHOLD || Math.abs(y) > DRAG_THRESHOLD;\n if (snapDraggedEvents) {\n /** @type {?} */\n const newRect = Object.assign({}, this.startPosition, {\n left: this.startPosition.left + x,\n right: this.startPosition.right + x,\n top: this.startPosition.top + y,\n bottom: this.startPosition.bottom + y\n });\n return ((isWithinThreshold || dragAlreadyMoved) &&\n isInside(this.dragContainerElement.getBoundingClientRect(), newRect));\n }\n else {\n return isWithinThreshold || dragAlreadyMoved;\n }\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarResizeHelper {\n /**\n * @param {?} resizeContainerElement\n * @param {?=} minWidth\n */\n constructor(resizeContainerElement, minWidth) {\n this.resizeContainerElement = resizeContainerElement;\n this.minWidth = minWidth;\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n validateResize({ rectangle }) {\n if (this.minWidth &&\n Math.ceil(rectangle.width) < Math.ceil(this.minWidth)) {\n return false;\n }\n return isInside(this.resizeContainerElement.getBoundingClientRect(), rectangle);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Shows all events on a given week. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nclass CalendarWeekViewComponent {\n /**\n * @hidden\n * @param {?} cdr\n * @param {?} utils\n * @param {?} locale\n * @param {?} dateAdapter\n */\n constructor(cdr, utils, locale, dateAdapter) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The precision to display events.\n * `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding\n */\n this.precision = 'days';\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * The number of segments in an hour. Must be <= 6\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * Called when a header week day is clicked. Adding a `cssClass` property on `$event.day` will add that class to the header element\n */\n this.dayHeaderClicked = new EventEmitter();\n /**\n * Called when the event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current week.\n * If you add the `cssClass` property to a day in the header it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * @hidden\n */\n this.allDayEventResizes = new Map();\n /**\n * @hidden\n */\n this.timeEventResizes = new Map();\n /**\n * @hidden\n */\n this.eventDragEnter = 0;\n /**\n * @hidden\n */\n this.dragActive = false;\n /**\n * @hidden\n */\n this.dragAlreadyMoved = false;\n /**\n * @hidden\n */\n this.calendarId = Symbol('angular calendar week view id');\n /**\n * @hidden\n */\n this.trackByIndex = trackByIndex;\n /**\n * @hidden\n */\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n /**\n * @hidden\n */\n this.trackByHourSegment = trackByHourSegment;\n /**\n * @hidden\n */\n this.trackByHour = trackByHour;\n /**\n * @hidden\n */\n this.trackByDayOrWeekEvent = trackByDayOrWeekEvent;\n /**\n * @hidden\n */\n this.trackByHourColumn = (index, column) => column.hours[0] ? column.hours[0].segments[0].date.toISOString() : column;\n this.locale = locale;\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.viewDate ||\n changes.excludeDays ||\n changes.weekendDays ||\n changes.daysInWeek ||\n changes.weekStartsOn) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents$1(this.events);\n }\n if (changes.viewDate ||\n changes.dayStartHour ||\n changes.dayStartMinute ||\n changes.dayEndHour ||\n changes.dayEndMinute ||\n changes.hourSegments ||\n changes.weekStartsOn ||\n changes.weekendDays ||\n changes.excludeDays ||\n changes.hourSegmentHeight ||\n changes.events ||\n changes.daysInWeek) {\n this.refreshBody();\n }\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @param {?} eventsContainer\n * @param {?=} minWidth\n * @return {?}\n */\n resizeStarted(eventsContainer, minWidth) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainer);\n /** @type {?} */\n const resizeHelper = new CalendarResizeHelper(eventsContainer, minWidth);\n this.validateResize = ({ rectangle }) => resizeHelper.validateResize({ rectangle });\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n * @param {?} eventsContainer\n * @param {?} timeEvent\n * @param {?} resizeEvent\n * @return {?}\n */\n timeEventResizeStarted(eventsContainer, timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n this.resizeStarted(eventsContainer);\n }\n /**\n * @hidden\n * @param {?} timeEvent\n * @param {?} resizeEvent\n * @return {?}\n */\n timeEventResizing(timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n /** @type {?} */\n const adjustedEvents = new Map();\n /** @type {?} */\n const tempEvents = [...this.events];\n this.timeEventResizes.forEach((lastResizeEvent, event) => {\n /** @type {?} */\n const newEventDates = this.getTimeEventResizedDates(event, lastResizeEvent);\n /** @type {?} */\n const adjustedEvent = Object.assign({}, event, newEventDates);\n adjustedEvents.set(adjustedEvent, event);\n /** @type {?} */\n const eventIndex = tempEvents.indexOf(event);\n tempEvents[eventIndex] = adjustedEvent;\n });\n this.restoreOriginalEvents(tempEvents, adjustedEvents);\n }\n /**\n * @hidden\n * @param {?} timeEvent\n * @return {?}\n */\n timeEventResizeEnded(timeEvent) {\n this.view = this.getWeekView(this.events);\n /** @type {?} */\n const lastResizeEvent = this.timeEventResizes.get(timeEvent.event);\n if (lastResizeEvent) {\n this.timeEventResizes.delete(timeEvent.event);\n /** @type {?} */\n const newEventDates = this.getTimeEventResizedDates(timeEvent.event, lastResizeEvent);\n this.eventTimesChanged.emit({\n newStart: newEventDates.start,\n newEnd: newEventDates.end,\n event: timeEvent.event,\n type: CalendarEventTimesChangedEventType.Resize\n });\n }\n }\n /**\n * @hidden\n * @param {?} allDayEventsContainer\n * @param {?} allDayEvent\n * @param {?} resizeEvent\n * @return {?}\n */\n allDayEventResizeStarted(allDayEventsContainer, allDayEvent, resizeEvent) {\n this.allDayEventResizes.set(allDayEvent, {\n originalOffset: allDayEvent.offset,\n originalSpan: allDayEvent.span,\n edge: typeof resizeEvent.edges.left !== 'undefined' ? 'left' : 'right'\n });\n this.resizeStarted(allDayEventsContainer, this.getDayColumnWidth(allDayEventsContainer));\n }\n /**\n * @hidden\n * @param {?} allDayEvent\n * @param {?} resizeEvent\n * @param {?} dayWidth\n * @return {?}\n */\n allDayEventResizing(allDayEvent, resizeEvent, dayWidth) {\n /** @type {?} */\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n if (typeof resizeEvent.edges.left !== 'undefined') {\n /** @type {?} */\n const diff = Math.round(+resizeEvent.edges.left / dayWidth);\n allDayEvent.offset = currentResize.originalOffset + diff;\n allDayEvent.span = currentResize.originalSpan - diff;\n }\n else if (typeof resizeEvent.edges.right !== 'undefined') {\n /** @type {?} */\n const diff = Math.round(+resizeEvent.edges.right / dayWidth);\n allDayEvent.span = currentResize.originalSpan + diff;\n }\n }\n /**\n * @hidden\n * @param {?} allDayEvent\n * @return {?}\n */\n allDayEventResizeEnded(allDayEvent) {\n /** @type {?} */\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n if (currentResize) {\n /** @type {?} */\n const allDayEventResizingBeforeStart = currentResize.edge === 'left';\n /** @type {?} */\n let daysDiff;\n if (allDayEventResizingBeforeStart) {\n daysDiff = allDayEvent.offset - currentResize.originalOffset;\n }\n else {\n daysDiff = allDayEvent.span - currentResize.originalSpan;\n }\n allDayEvent.offset = currentResize.originalOffset;\n allDayEvent.span = currentResize.originalSpan;\n /** @type {?} */\n let newStart = allDayEvent.event.start;\n /** @type {?} */\n let newEnd = allDayEvent.event.end || allDayEvent.event.start;\n if (allDayEventResizingBeforeStart) {\n newStart = this.dateAdapter.addDays(newStart, daysDiff);\n }\n else {\n newEnd = this.dateAdapter.addDays(newEnd, daysDiff);\n }\n this.eventTimesChanged.emit({\n newStart,\n newEnd,\n event: allDayEvent.event,\n type: CalendarEventTimesChangedEventType.Resize\n });\n this.allDayEventResizes.delete(allDayEvent);\n }\n }\n /**\n * @hidden\n * @param {?} eventRowContainer\n * @return {?}\n */\n getDayColumnWidth(eventRowContainer) {\n return Math.floor(eventRowContainer.offsetWidth / this.days.length);\n }\n /**\n * @hidden\n * @param {?} dropEvent\n * @param {?} date\n * @param {?} allDay\n * @return {?}\n */\n eventDropped(dropEvent, date, allDay) {\n if (shouldFireDroppedEvent(dropEvent, date, allDay, this.calendarId)) {\n this.eventTimesChanged.emit({\n type: CalendarEventTimesChangedEventType.Drop,\n event: dropEvent.dropData.event,\n newStart: date,\n allDay\n });\n }\n }\n /**\n * @hidden\n * @param {?} eventsContainer\n * @param {?} event\n * @param {?=} dayEvent\n * @return {?}\n */\n dragStarted(eventsContainer, event, dayEvent) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainer);\n /** @type {?} */\n const dragHelper = new CalendarDragHelper(eventsContainer, event);\n this.validateDrag = ({ x, y }) => this.allDayEventResizes.size === 0 &&\n this.timeEventResizes.size === 0 &&\n dragHelper.validateDrag({\n x,\n y,\n snapDraggedEvents: this.snapDraggedEvents,\n dragAlreadyMoved: this.dragAlreadyMoved\n });\n this.dragActive = true;\n this.dragAlreadyMoved = false;\n this.eventDragEnter = 0;\n if (!this.snapDraggedEvents && dayEvent) {\n this.view.hourColumns.forEach(column => {\n /** @type {?} */\n const linkedEvent = column.events.find(columnEvent => columnEvent.event === dayEvent.event && columnEvent !== dayEvent);\n // hide any linked events while dragging\n if (linkedEvent) {\n linkedEvent.width = 0;\n linkedEvent.height = 0;\n }\n });\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n * @param {?} dayEvent\n * @param {?} dragEvent\n * @return {?}\n */\n dragMove(dayEvent, dragEvent) {\n if (this.snapDraggedEvents) {\n /** @type {?} */\n const newEventTimes = this.getDragMovedEventTimes(dayEvent, dragEvent, this.dayColumnWidth, true);\n /** @type {?} */\n const originalEvent = dayEvent.event;\n /** @type {?} */\n const adjustedEvent = Object.assign({}, originalEvent, newEventTimes);\n /** @type {?} */\n const tempEvents = this.events.map(event => {\n if (event === originalEvent) {\n return adjustedEvent;\n }\n return event;\n });\n this.restoreOriginalEvents(tempEvents, new Map([[adjustedEvent, originalEvent]]));\n }\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n * @return {?}\n */\n allDayEventDragMove() {\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n * @param {?} weekEvent\n * @param {?} dragEndEvent\n * @param {?} dayWidth\n * @param {?=} useY\n * @return {?}\n */\n dragEnded(weekEvent, dragEndEvent, dayWidth, useY = false) {\n this.view = this.getWeekView(this.events);\n this.dragActive = false;\n const { start, end } = this.getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY);\n if (this.eventDragEnter > 0 &&\n isDraggedWithinPeriod(start, end, this.view.period)) {\n this.eventTimesChanged.emit({\n newStart: start,\n newEnd: end,\n event: weekEvent.event,\n type: CalendarEventTimesChangedEventType.Drag,\n allDay: !useY\n });\n }\n }\n /**\n * @return {?}\n */\n refreshHeader() {\n this.days = this.utils.getWeekViewHeader(Object.assign({ viewDate: this.viewDate, weekStartsOn: this.weekStartsOn, excluded: this.excludeDays, weekendDays: this.weekendDays }, getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek)));\n this.emitBeforeViewRender();\n }\n /**\n * @return {?}\n */\n refreshBody() {\n this.view = this.getWeekView(this.events);\n this.emitBeforeViewRender();\n }\n /**\n * @return {?}\n */\n refreshAll() {\n this.refreshHeader();\n this.refreshBody();\n }\n /**\n * @return {?}\n */\n emitBeforeViewRender() {\n if (this.days && this.view) {\n this.beforeViewRender.emit(Object.assign({ header: this.days }, this.view));\n }\n }\n /**\n * @param {?} events\n * @return {?}\n */\n getWeekView(events) {\n return this.utils.getWeekView(Object.assign({ events, viewDate: this.viewDate, weekStartsOn: this.weekStartsOn, excluded: this.excludeDays, precision: this.precision, absolutePositionedEvents: true, hourSegments: this.hourSegments, dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute\n }, dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute\n }, segmentHeight: this.hourSegmentHeight, weekendDays: this.weekendDays }, getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek)));\n }\n /**\n * @param {?} weekEvent\n * @param {?} dragEndEvent\n * @param {?} dayWidth\n * @param {?} useY\n * @return {?}\n */\n getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY) {\n /** @type {?} */\n const daysDragged = roundToNearest(dragEndEvent.x, dayWidth) / dayWidth;\n /** @type {?} */\n const minutesMoved = useY\n ? getMinutesMoved(dragEndEvent.y, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize)\n : 0;\n /** @type {?} */\n const start = this.dateAdapter.addMinutes(this.dateAdapter.addDays(weekEvent.event.start, daysDragged), minutesMoved);\n /** @type {?} */\n let end;\n if (weekEvent.event.end) {\n end = this.dateAdapter.addMinutes(this.dateAdapter.addDays(weekEvent.event.end, daysDragged), minutesMoved);\n }\n return { start, end };\n }\n /**\n * @param {?} tempEvents\n * @param {?} adjustedEvents\n * @return {?}\n */\n restoreOriginalEvents(tempEvents, adjustedEvents) {\n /** @type {?} */\n const previousView = this.view;\n this.view = this.getWeekView(tempEvents);\n /** @type {?} */\n const adjustedEventsArray = tempEvents.filter(event => adjustedEvents.has(event));\n this.view.hourColumns.forEach((column, columnIndex) => {\n previousView.hourColumns[columnIndex].hours.forEach((hour, hourIndex) => {\n hour.segments.forEach((segment, segmentIndex) => {\n column.hours[hourIndex].segments[segmentIndex].cssClass =\n segment.cssClass;\n });\n });\n adjustedEventsArray.forEach(adjustedEvent => {\n /** @type {?} */\n const originalEvent = adjustedEvents.get(adjustedEvent);\n /** @type {?} */\n const existingColumnEvent = column.events.find(columnEvent => columnEvent.event === adjustedEvent);\n if (existingColumnEvent) {\n // restore the original event so trackBy kicks in and the dom isn't changed\n existingColumnEvent.event = originalEvent;\n }\n else {\n // add a dummy event to the drop so if the event was removed from the original column the drag doesn't end early\n column.events.push({\n event: originalEvent,\n left: 0,\n top: 0,\n height: 0,\n width: 0,\n startsBeforeDay: false,\n endsAfterDay: false\n });\n }\n });\n });\n adjustedEvents.clear();\n }\n /**\n * @param {?} calendarEvent\n * @param {?} resizeEvent\n * @return {?}\n */\n getTimeEventResizedDates(calendarEvent, resizeEvent) {\n /** @type {?} */\n const minimumEventHeight = getMinimumEventHeightInMinutes(this.hourSegments, this.hourSegmentHeight);\n /** @type {?} */\n const newEventDates = {\n start: calendarEvent.start,\n end: getDefaultEventEnd(this.dateAdapter, calendarEvent, minimumEventHeight)\n };\n const eventWithoutEnd = __rest(calendarEvent, [\"end\"]);\n /** @type {?} */\n const smallestResizes = {\n start: this.dateAdapter.addMinutes(newEventDates.end, minimumEventHeight * -1),\n end: getDefaultEventEnd(this.dateAdapter, eventWithoutEnd, minimumEventHeight)\n };\n if (typeof resizeEvent.edges.left !== 'undefined') {\n /** @type {?} */\n const daysDiff = Math.round(+resizeEvent.edges.left / this.dayColumnWidth);\n /** @type {?} */\n const newStart = this.dateAdapter.addDays(newEventDates.start, daysDiff);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n }\n else {\n newEventDates.start = smallestResizes.start;\n }\n }\n else if (typeof resizeEvent.edges.right !== 'undefined') {\n /** @type {?} */\n const daysDiff = Math.round(+resizeEvent.edges.right / this.dayColumnWidth);\n /** @type {?} */\n const newEnd = this.dateAdapter.addDays(newEventDates.end, daysDiff);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n }\n else {\n newEventDates.end = smallestResizes.end;\n }\n }\n if (typeof resizeEvent.edges.top !== 'undefined') {\n /** @type {?} */\n const minutesMoved = getMinutesMoved(/** @type {?} */ (resizeEvent.edges.top), this.hourSegments, this.hourSegmentHeight, this.eventSnapSize);\n /** @type {?} */\n const newStart = this.dateAdapter.addMinutes(newEventDates.start, minutesMoved);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n }\n else {\n newEventDates.start = smallestResizes.start;\n }\n }\n else if (typeof resizeEvent.edges.bottom !== 'undefined') {\n /** @type {?} */\n const minutesMoved = getMinutesMoved(/** @type {?} */ (resizeEvent.edges.bottom), this.hourSegments, this.hourSegmentHeight, this.eventSnapSize);\n /** @type {?} */\n const newEnd = this.dateAdapter.addMinutes(newEventDates.end, minutesMoved);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n }\n else {\n newEventDates.end = smallestResizes.end;\n }\n }\n return newEventDates;\n }\n}\nCalendarWeekViewComponent.ɵfac = function CalendarWeekViewComponent_Factory(t) { return new (t || CalendarWeekViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(CalendarUtils), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID), ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarWeekViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewComponent, selectors: [[\"mwl-calendar-week-view\"]], inputs: { events: \"events\", excludeDays: \"excludeDays\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", precision: \"precision\", snapDraggedEvents: \"snapDraggedEvents\", hourSegments: \"hourSegments\", hourSegmentHeight: \"hourSegmentHeight\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", locale: \"locale\", viewDate: \"viewDate\", refresh: \"refresh\", tooltipTemplate: \"tooltipTemplate\", weekStartsOn: \"weekStartsOn\", headerTemplate: \"headerTemplate\", eventTemplate: \"eventTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", weekendDays: \"weekendDays\", hourSegmentTemplate: \"hourSegmentTemplate\", eventSnapSize: \"eventSnapSize\", allDayEventsLabelTemplate: \"allDayEventsLabelTemplate\", daysInWeek: \"daysInWeek\" }, outputs: { dayHeaderClicked: \"dayHeaderClicked\", eventClicked: \"eventClicked\", eventTimesChanged: \"eventTimesChanged\", beforeViewRender: \"beforeViewRender\", hourSegmentClicked: \"hourSegmentClicked\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 9, consts: [[1, \"cal-week-view\"], [3, \"days\", \"locale\", \"customTemplate\", \"dayHeaderClicked\", \"eventDropped\"], [\"class\", \"cal-all-day-events\", \"mwlDroppable\", \"\", 3, \"dragEnter\", \"dragLeave\", 4, \"ngIf\"], [\"mwlDroppable\", \"\", 1, \"cal-time-events\", 3, \"dragEnter\", \"dragLeave\"], [\"class\", \"cal-time-label-column\", 4, \"ngIf\"], [1, \"cal-day-columns\"], [\"dayColumns\", \"\"], [\"class\", \"cal-day-column\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", 1, \"cal-all-day-events\", 3, \"dragEnter\", \"dragLeave\"], [\"allDayEventsContainer\", \"\"], [1, \"cal-time-label-column\", 3, \"ngTemplateOutlet\"], [\"class\", \"cal-day-column\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"drop\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"cal-events-row\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 1, \"cal-day-column\", 3, \"drop\"], [1, \"cal-events-row\"], [\"eventRowContainer\", \"\"], [\"class\", \"cal-event-container\", \"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"cal-draggable\", \"cal-starts-within-week\", \"cal-ends-within-week\", \"ngClass\", \"width\", \"marginLeft\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event-container\", 3, \"ngClass\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\"], [\"event\", \"\"], [\"class\", \"cal-resize-handle cal-resize-handle-before-start\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [3, \"weekEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"eventClicked\"], [\"class\", \"cal-resize-handle cal-resize-handle-after-end\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-before-start\", 3, \"resizeEdges\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-after-end\", 3, \"resizeEdges\"], [1, \"cal-time-label-column\"], [\"class\", \"cal-hour\", 3, \"cal-hour-odd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"cal-hour\"], [3, \"height\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"isTimeLabel\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"isTimeLabel\"], [1, \"cal-day-column\"], [\"class\", \"cal-event-container\", \"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"cal-draggable\", \"cal-starts-within-day\", \"cal-ends-within-day\", \"ngClass\", \"hidden\", \"top\", \"height\", \"left\", \"width\", \"resizeSnapGrid\", \"validateResize\", \"allowNegativeResizes\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"ghostDragEnabled\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event-container\", 3, \"ngClass\", \"hidden\", \"resizeSnapGrid\", \"validateResize\", \"allowNegativeResizes\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"ghostDragEnabled\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\"], [3, \"weekEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDisabled\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"eventClicked\"], [\"mwlDroppable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"height\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"dragOverClass\", \"mwlClick\", \"drop\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"dragOverClass\", \"mwlClick\", \"drop\"]], template: function CalendarWeekViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"mwl-calendar-week-view-header\", 1);\n ɵngcc0.ɵɵlistener(\"dayHeaderClicked\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_dayHeaderClicked_1_listener($event) { return ctx.dayHeaderClicked.emit($event); })(\"eventDropped\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_eventDropped_1_listener($event) { return ctx.eventDropped({ dropData: $event }, $event.newStart, true); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_Template, 6, 5, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3);\n ɵngcc0.ɵɵlistener(\"dragEnter\", function CalendarWeekViewComponent_Template_div_dragEnter_3_listener() { return ctx.eventDragEnter = ctx.eventDragEnter + 1; })(\"dragLeave\", function CalendarWeekViewComponent_Template_div_dragLeave_3_listener() { return ctx.eventDragEnter = ctx.eventDragEnter - 1; });\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_4_Template, 2, 2, \"div\", 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5, 6);\n ɵngcc0.ɵɵtemplate(7, CalendarWeekViewComponent_div_7_Template, 3, 4, \"div\", 7);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"days\", ctx.days)(\"locale\", ctx.locale)(\"customTemplate\", ctx.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.view.allDayEventRows.length > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.view.hourColumns.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"cal-resize-active\", ctx.timeEventResizes.size > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.view.hourColumns)(\"ngForTrackBy\", ctx.trackByHourColumn);\n } }, directives: function () { return [CalendarWeekViewHeaderComponent, ɵngcc1.NgIf, ɵngcc2.ɵa, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf, ɵngcc3.ResizableDirective, ɵngcc2.ɵb, ɵngcc1.NgClass, ɵngcc3.ResizeHandleDirective, CalendarWeekViewEventComponent, CalendarWeekViewHourSegmentComponent, ClickDirective]; }, encapsulation: 2 });\n/** @nocollapse */\nCalendarWeekViewComponent.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: CalendarUtils },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: DateAdapter }\n];\nCalendarWeekViewComponent.propDecorators = {\n viewDate: [{ type: Input }],\n events: [{ type: Input }],\n excludeDays: [{ type: Input }],\n refresh: [{ type: Input }],\n locale: [{ type: Input }],\n tooltipPlacement: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n tooltipAppendToBody: [{ type: Input }],\n weekStartsOn: [{ type: Input }],\n headerTemplate: [{ type: Input }],\n eventTemplate: [{ type: Input }],\n eventTitleTemplate: [{ type: Input }],\n eventActionsTemplate: [{ type: Input }],\n precision: [{ type: Input }],\n weekendDays: [{ type: Input }],\n snapDraggedEvents: [{ type: Input }],\n hourSegments: [{ type: Input }],\n hourSegmentHeight: [{ type: Input }],\n dayStartHour: [{ type: Input }],\n dayStartMinute: [{ type: Input }],\n dayEndHour: [{ type: Input }],\n dayEndMinute: [{ type: Input }],\n hourSegmentTemplate: [{ type: Input }],\n eventSnapSize: [{ type: Input }],\n allDayEventsLabelTemplate: [{ type: Input }],\n daysInWeek: [{ type: Input }],\n dayHeaderClicked: [{ type: Output }],\n eventClicked: [{ type: Output }],\n eventTimesChanged: [{ type: Output }],\n beforeViewRender: [{ type: Output }],\n hourSegmentClicked: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view',\n template: `\n
    \n \n \n 0\"\n mwlDroppable\n (dragEnter)=\"eventDragEnter = eventDragEnter + 1\"\n (dragLeave)=\"eventDragEnter = eventDragEnter - 1\"\n >\n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    0\">\n \n \n \n
    \n \n 0\"\n #dayColumns\n >\n \n \n \n 0\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n (eventClicked)=\"eventClicked.emit({ event: timeEvent.event })\"\n >\n \n \n \n\n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: CalendarUtils }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: DateAdapter }]; }, { events: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], precision: [{\n type: Input\n }], snapDraggedEvents: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], dayHeaderClicked: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], beforeViewRender: [{\n type: Output\n }], hourSegmentClicked: [{\n type: Output\n }], locale: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], refresh: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], weekStartsOn: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], weekendDays: [{\n type: Input\n }], hourSegmentTemplate: [{\n type: Input\n }], eventSnapSize: [{\n type: Input\n }], allDayEventsLabelTemplate: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarWeekViewHeaderComponent {\n constructor() {\n this.dayHeaderClicked = new EventEmitter();\n this.eventDropped = new EventEmitter();\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n}\nCalendarWeekViewHeaderComponent.ɵfac = function CalendarWeekViewHeaderComponent_Factory(t) { return new (t || CalendarWeekViewHeaderComponent)(); };\nCalendarWeekViewHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewHeaderComponent, selectors: [[\"mwl-calendar-week-view-header\"]], inputs: { days: \"days\", locale: \"locale\", customTemplate: \"customTemplate\" }, outputs: { dayHeaderClicked: \"dayHeaderClicked\", eventDropped: \"eventDropped\" }, decls: 3, vars: 7, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-day-headers\"], [\"class\", \"cal-header\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"cal-past\", \"cal-today\", \"cal-future\", \"cal-weekend\", \"ngClass\", \"mwlClick\", \"drop\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 1, \"cal-header\", 3, \"ngClass\", \"mwlClick\", \"drop\"]], template: function CalendarWeekViewHeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewHeaderComponent_ng_template_0_Template, 2, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewHeaderComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction4(2, _c17, ctx.days, ctx.locale, ctx.dayHeaderClicked, ctx.eventDropped));\n } }, directives: [ɵngcc1.NgForOf, ɵngcc2.ɵa, ɵngcc1.NgClass, ClickDirective, ɵngcc1.NgTemplateOutlet], pipes: [CalendarDatePipe], encapsulation: 2 });\nCalendarWeekViewHeaderComponent.propDecorators = {\n days: [{ type: Input }],\n locale: [{ type: Input }],\n customTemplate: [{ type: Input }],\n dayHeaderClicked: [{ type: Output }],\n eventDropped: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-header',\n template: `\n \n
    \n \n {{ day.date | calendarDate: 'weekViewColumnHeader':locale }}
    \n {{\n day.date | calendarDate: 'weekViewColumnSubHeader':locale\n }}\n
    \n \n \n \n \n `\n }]\n }], function () { return []; }, { dayHeaderClicked: [{\n type: Output\n }], eventDropped: [{\n type: Output\n }], days: [{\n type: Input\n }], locale: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarWeekViewEventComponent {\n constructor() {\n this.eventClicked = new EventEmitter();\n }\n}\nCalendarWeekViewEventComponent.ɵfac = function CalendarWeekViewEventComponent_Factory(t) { return new (t || CalendarWeekViewEventComponent)(); };\nCalendarWeekViewEventComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewEventComponent, selectors: [[\"mwl-calendar-week-view-event\"]], inputs: { weekEvent: \"weekEvent\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDisabled: \"tooltipDisabled\", customTemplate: \"customTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { eventClicked: \"eventClicked\" }, decls: 3, vars: 9, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-event\", 3, \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"mwlClick\"], [3, \"event\", \"customTemplate\"], [\"view\", \"week\", 3, \"event\", \"customTemplate\"]], template: function CalendarWeekViewEventComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewEventComponent_ng_template_0_Template, 5, 17, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewEventComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction6(2, _c18, ctx.weekEvent, ctx.tooltipPlacement, ctx.eventClicked, ctx.tooltipTemplate, ctx.tooltipAppendToBody, ctx.tooltipDisabled));\n } }, directives: [CalendarTooltipDirective, ClickDirective, CalendarEventActionsComponent, CalendarEventTitleComponent, ɵngcc1.NgTemplateOutlet], pipes: [CalendarEventTitlePipe], encapsulation: 2 });\nCalendarWeekViewEventComponent.propDecorators = {\n weekEvent: [{ type: Input }],\n tooltipPlacement: [{ type: Input }],\n tooltipAppendToBody: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n customTemplate: [{ type: Input }],\n eventTitleTemplate: [{ type: Input }],\n eventActionsTemplate: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n eventClicked: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewEventComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-event',\n template: `\n \n \n \n \n &ngsp;\n \n \n \n \n \n \n `\n }]\n }], function () { return []; }, { eventClicked: [{\n type: Output\n }], weekEvent: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarWeekViewHourSegmentComponent {\n}\nCalendarWeekViewHourSegmentComponent.ɵfac = function CalendarWeekViewHourSegmentComponent_Factory(t) { return new (t || CalendarWeekViewHourSegmentComponent)(); };\nCalendarWeekViewHourSegmentComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewHourSegmentComponent, selectors: [[\"mwl-calendar-week-view-hour-segment\"]], inputs: { segment: \"segment\", segmentHeight: \"segmentHeight\", locale: \"locale\", isTimeLabel: \"isTimeLabel\", customTemplate: \"customTemplate\" }, decls: 3, vars: 7, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-hour-segment\", 3, \"ngClass\"], [\"class\", \"cal-time\", 4, \"ngIf\"], [1, \"cal-time\"]], template: function CalendarWeekViewHourSegmentComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewHourSegmentComponent_ng_template_0_Template, 2, 8, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewHourSegmentComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction4(2, _c19, ctx.segment, ctx.locale, ctx.segmentHeight, ctx.isTimeLabel));\n } }, directives: [ɵngcc1.NgClass, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], pipes: [CalendarDatePipe], encapsulation: 2 });\nCalendarWeekViewHourSegmentComponent.propDecorators = {\n segment: [{ type: Input }],\n segmentHeight: [{ type: Input }],\n locale: [{ type: Input }],\n isTimeLabel: [{ type: Input }],\n customTemplate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewHourSegmentComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-hour-segment',\n template: `\n \n \n
    \n {{ segment.date | calendarDate: 'weekViewHour':locale }}\n
    \n \n \n \n \n `\n }]\n }], null, { segment: [{\n type: Input\n }], segmentHeight: [{\n type: Input\n }], locale: [{\n type: Input\n }], isTimeLabel: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarWeekModule {\n}\nCalendarWeekModule.ɵfac = function CalendarWeekModule_Factory(t) { return new (t || CalendarWeekModule)(); };\nCalendarWeekModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarWeekModule });\nCalendarWeekModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule\n ], ResizableModule,\n DragAndDropModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule\n ],\n declarations: [\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent\n ],\n exports: [\n ResizableModule,\n DragAndDropModule,\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarWeekModule, { declarations: function () { return [CalendarWeekViewComponent, CalendarWeekViewHeaderComponent, CalendarWeekViewEventComponent, CalendarWeekViewHourSegmentComponent]; }, imports: function () { return [CommonModule,\n ResizableModule,\n DragAndDropModule, CalendarCommonModule]; }, exports: function () { return [ResizableModule,\n DragAndDropModule, CalendarWeekViewComponent, CalendarWeekViewHeaderComponent, CalendarWeekViewEventComponent, CalendarWeekViewHourSegmentComponent]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Shows all events on a given day. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nclass CalendarDayViewComponent {\n /**\n * @hidden\n * @param {?} cdr\n * @param {?} utils\n * @param {?} locale\n * @param {?} dateAdapter\n */\n constructor(cdr, utils, locale, dateAdapter) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * The number of segments in an hour. Must be <= 6\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * The width in pixels of each event on the view\n */\n this.eventWidth = 150;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * Called when an event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current day.\n * If you add the `cssClass` property to an hour grid segment it will add that class to the hour segment in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * @hidden\n */\n this.hours = [];\n /**\n * @hidden\n */\n this.width = 0;\n /**\n * @hidden\n */\n this.currentResizes = new Map();\n /**\n * @hidden\n */\n this.eventDragEnter = 0;\n /**\n * @hidden\n */\n this.calendarId = Symbol('angular calendar day view id');\n /**\n * @hidden\n */\n this.dragAlreadyMoved = false;\n /**\n * @hidden\n */\n this.trackByEventId = trackByEventId;\n /**\n * @hidden\n */\n this.trackByHour = trackByHour;\n /**\n * @hidden\n */\n this.trackByHourSegment = trackByHourSegment;\n /**\n * @hidden\n */\n this.trackByDayEvent = trackByDayOrWeekEvent;\n this.locale = locale;\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.viewDate ||\n changes.dayStartHour ||\n changes.dayStartMinute ||\n changes.dayEndHour ||\n changes.dayEndMinute ||\n changes.hourSegments) {\n this.refreshHourGrid();\n }\n if (changes.events) {\n validateEvents$1(this.events);\n }\n if (changes.viewDate ||\n changes.events ||\n changes.dayStartHour ||\n changes.dayStartMinute ||\n changes.dayEndHour ||\n changes.dayEndMinute ||\n changes.eventWidth) {\n this.refreshView();\n }\n }\n /**\n * @param {?} dropEvent\n * @param {?} date\n * @param {?} allDay\n * @return {?}\n */\n eventDropped(dropEvent, date, allDay) {\n if (shouldFireDroppedEvent(dropEvent, date, allDay, this.calendarId)) {\n this.eventTimesChanged.emit({\n type: CalendarEventTimesChangedEventType.Drop,\n event: dropEvent.dropData.event,\n newStart: date,\n allDay\n });\n }\n }\n /**\n * @param {?} event\n * @param {?} resizeEvent\n * @param {?} dayEventsContainer\n * @return {?}\n */\n resizeStarted(event, resizeEvent, dayEventsContainer) {\n this.currentResizes.set(event, {\n originalTop: event.top,\n originalHeight: event.height,\n edge: typeof resizeEvent.edges.top !== 'undefined' ? 'top' : 'bottom'\n });\n /** @type {?} */\n const resizeHelper = new CalendarResizeHelper(dayEventsContainer);\n this.validateResize = ({ rectangle }) => resizeHelper.validateResize({ rectangle });\n this.cdr.markForCheck();\n }\n /**\n * @param {?} event\n * @param {?} resizeEvent\n * @return {?}\n */\n resizing(event, resizeEvent) {\n /** @type {?} */\n const currentResize = this.currentResizes.get(event);\n if (typeof resizeEvent.edges.top !== 'undefined') {\n event.top = currentResize.originalTop + +resizeEvent.edges.top;\n event.height = currentResize.originalHeight - +resizeEvent.edges.top;\n }\n else if (typeof resizeEvent.edges.bottom !== 'undefined') {\n event.height = currentResize.originalHeight + +resizeEvent.edges.bottom;\n }\n }\n /**\n * @param {?} dayEvent\n * @return {?}\n */\n resizeEnded(dayEvent) {\n /** @type {?} */\n const currentResize = this.currentResizes.get(dayEvent);\n /** @type {?} */\n const resizingBeforeStart = currentResize.edge === 'top';\n /** @type {?} */\n let pixelsMoved;\n if (resizingBeforeStart) {\n pixelsMoved = dayEvent.top - currentResize.originalTop;\n }\n else {\n pixelsMoved = dayEvent.height - currentResize.originalHeight;\n }\n dayEvent.top = currentResize.originalTop;\n dayEvent.height = currentResize.originalHeight;\n /** @type {?} */\n const minutesMoved = getMinutesMoved(pixelsMoved, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize);\n /** @type {?} */\n let newStart = dayEvent.event.start;\n /** @type {?} */\n let newEnd = getDefaultEventEnd(this.dateAdapter, dayEvent.event, getMinimumEventHeightInMinutes(this.hourSegments, this.hourSegmentHeight));\n if (resizingBeforeStart) {\n newStart = this.dateAdapter.addMinutes(newStart, minutesMoved);\n }\n else {\n newEnd = this.dateAdapter.addMinutes(newEnd, minutesMoved);\n }\n this.eventTimesChanged.emit({\n newStart,\n newEnd,\n event: dayEvent.event,\n type: CalendarEventTimesChangedEventType.Resize\n });\n this.currentResizes.delete(dayEvent);\n }\n /**\n * @param {?} event\n * @param {?} dayEventsContainer\n * @return {?}\n */\n dragStarted(event, dayEventsContainer) {\n /** @type {?} */\n const dragHelper = new CalendarDragHelper(dayEventsContainer, event);\n this.validateDrag = ({ x, y }) => this.currentResizes.size === 0 &&\n dragHelper.validateDrag({\n x,\n y,\n snapDraggedEvents: this.snapDraggedEvents,\n dragAlreadyMoved: this.dragAlreadyMoved\n });\n this.eventDragEnter = 0;\n this.dragAlreadyMoved = false;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n * @return {?}\n */\n dragMove() {\n this.dragAlreadyMoved = true;\n }\n /**\n * @param {?} dayEvent\n * @param {?} dragEndEvent\n * @return {?}\n */\n dragEnded(dayEvent, dragEndEvent) {\n if (this.eventDragEnter > 0) {\n /** @type {?} */\n let minutesMoved = getMinutesMoved(dragEndEvent.y, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize);\n /** @type {?} */\n let newStart = this.dateAdapter.addMinutes(dayEvent.event.start, minutesMoved);\n if (dragEndEvent.y < 0 && newStart < this.view.period.start) {\n minutesMoved += this.dateAdapter.differenceInMinutes(this.view.period.start, newStart);\n newStart = this.view.period.start;\n }\n /** @type {?} */\n let newEnd;\n if (dayEvent.event.end) {\n newEnd = this.dateAdapter.addMinutes(dayEvent.event.end, minutesMoved);\n }\n if (isDraggedWithinPeriod(newStart, newEnd, this.view.period)) {\n this.eventTimesChanged.emit({\n newStart,\n newEnd,\n event: dayEvent.event,\n type: CalendarEventTimesChangedEventType.Drag,\n allDay: false\n });\n }\n }\n }\n /**\n * @return {?}\n */\n refreshHourGrid() {\n this.hours = this.utils.getDayViewHourGrid({\n viewDate: this.viewDate,\n hourSegments: this.hourSegments,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute\n }\n });\n this.emitBeforeViewRender();\n }\n /**\n * @return {?}\n */\n refreshView() {\n this.view = this.utils.getDayView({\n events: this.events,\n viewDate: this.viewDate,\n hourSegments: this.hourSegments,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute\n },\n eventWidth: this.eventWidth,\n segmentHeight: this.hourSegmentHeight\n });\n this.emitBeforeViewRender();\n }\n /**\n * @return {?}\n */\n refreshAll() {\n this.refreshHourGrid();\n this.refreshView();\n }\n /**\n * @return {?}\n */\n emitBeforeViewRender() {\n if (this.hours && this.view) {\n this.beforeViewRender.emit({\n body: {\n hourGrid: this.hours,\n allDayEvents: this.view.allDayEvents\n },\n period: this.view.period\n });\n }\n }\n}\nCalendarDayViewComponent.ɵfac = function CalendarDayViewComponent_Factory(t) { return new (t || CalendarDayViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(CalendarUtils), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID), ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarDayViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarDayViewComponent, selectors: [[\"mwl-calendar-day-view\"]], inputs: { events: \"events\", hourSegments: \"hourSegments\", hourSegmentHeight: \"hourSegmentHeight\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", eventWidth: \"eventWidth\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", snapDraggedEvents: \"snapDraggedEvents\", locale: \"locale\", viewDate: \"viewDate\", refresh: \"refresh\", eventSnapSize: \"eventSnapSize\", tooltipTemplate: \"tooltipTemplate\", hourSegmentTemplate: \"hourSegmentTemplate\", eventTemplate: \"eventTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\" }, outputs: { eventClicked: \"eventClicked\", hourSegmentClicked: \"hourSegmentClicked\", eventTimesChanged: \"eventTimesChanged\", beforeViewRender: \"beforeViewRender\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 6, consts: [[1, \"cal-day-view\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-all-day-events\", 3, \"drop\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"dayEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"cal-draggable\", \"dropData\", \"dragAxis\", \"eventClicked\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", 1, \"cal-hour-rows\", 3, \"dragEnter\", \"dragLeave\"], [\"dayEventsContainer\", \"\"], [1, \"cal-events\"], [\"class\", \"cal-event-container\", \"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"cal-draggable\", \"cal-starts-within-day\", \"cal-ends-within-day\", \"ngClass\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"marginTop\", \"height\", \"marginLeft\", \"width\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"cal-hour\", 3, \"minWidth\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"dayEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"dropData\", \"dragAxis\", \"eventClicked\"], [\"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event-container\", 3, \"ngClass\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\"], [\"event\", \"\"], [\"class\", \"cal-resize-handle cal-resize-handle-before-start\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [3, \"dayEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"eventClicked\"], [\"class\", \"cal-resize-handle cal-resize-handle-after-end\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-before-start\", 3, \"resizeEdges\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-after-end\", 3, \"resizeEdges\"], [1, \"cal-hour\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", \"dragActiveClass\", \"cal-drag-active\", 3, \"height\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"mwlClick\", \"drop\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", \"dragActiveClass\", \"cal-drag-active\", 3, \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"mwlClick\", \"drop\"]], template: function CalendarDayViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n ɵngcc0.ɵɵlistener(\"drop\", function CalendarDayViewComponent_Template_div_drop_1_listener($event) { return ctx.eventDropped($event, ctx.view.period.start, true); });\n ɵngcc0.ɵɵtemplate(2, CalendarDayViewComponent_mwl_calendar_day_view_event_2_Template, 1, 20, \"mwl-calendar-day-view-event\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"div\", 3, 4);\n ɵngcc0.ɵɵlistener(\"dragEnter\", function CalendarDayViewComponent_Template_div_dragEnter_3_listener() { return ctx.eventDragEnter = ctx.eventDragEnter + 1; })(\"dragLeave\", function CalendarDayViewComponent_Template_div_dragLeave_3_listener() { return ctx.eventDragEnter = ctx.eventDragEnter - 1; });\n ɵngcc0.ɵɵelementStart(5, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, CalendarDayViewComponent_div_6_Template, 5, 42, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, CalendarDayViewComponent_div_7_Template, 2, 4, \"div\", 7);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.view.allDayEvents)(\"ngForTrackBy\", ctx.trackByEventId);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.view == null ? null : ctx.view.events)(\"ngForTrackBy\", ctx.trackByDayEvent);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.hours)(\"ngForTrackBy\", ctx.trackByHour);\n } }, directives: function () { return [ɵngcc2.ɵa, ɵngcc1.NgForOf, CalendarDayViewEventComponent, ɵngcc2.ɵb, ɵngcc1.NgClass, ɵngcc3.ResizableDirective, ɵngcc1.NgIf, ɵngcc3.ResizeHandleDirective, CalendarDayViewHourSegmentComponent, ClickDirective]; }, encapsulation: 2 });\n/** @nocollapse */\nCalendarDayViewComponent.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: CalendarUtils },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: DateAdapter }\n];\nCalendarDayViewComponent.propDecorators = {\n viewDate: [{ type: Input }],\n events: [{ type: Input }],\n hourSegments: [{ type: Input }],\n hourSegmentHeight: [{ type: Input }],\n dayStartHour: [{ type: Input }],\n dayStartMinute: [{ type: Input }],\n dayEndHour: [{ type: Input }],\n dayEndMinute: [{ type: Input }],\n eventWidth: [{ type: Input }],\n refresh: [{ type: Input }],\n locale: [{ type: Input }],\n eventSnapSize: [{ type: Input }],\n tooltipPlacement: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n tooltipAppendToBody: [{ type: Input }],\n hourSegmentTemplate: [{ type: Input }],\n eventTemplate: [{ type: Input }],\n eventTitleTemplate: [{ type: Input }],\n eventActionsTemplate: [{ type: Input }],\n snapDraggedEvents: [{ type: Input }],\n eventClicked: [{ type: Output }],\n hourSegmentClicked: [{ type: Output }],\n eventTimesChanged: [{ type: Output }],\n beforeViewRender: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDayViewComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-day-view',\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 }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: CalendarUtils }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: DateAdapter }]; }, { events: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], eventWidth: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], snapDraggedEvents: [{\n type: Input\n }], eventClicked: [{\n type: Output\n }], hourSegmentClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], beforeViewRender: [{\n type: Output\n }], locale: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], refresh: [{\n type: Input\n }], eventSnapSize: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], hourSegmentTemplate: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarDayViewHourSegmentComponent {\n}\nCalendarDayViewHourSegmentComponent.ɵfac = function CalendarDayViewHourSegmentComponent_Factory(t) { return new (t || CalendarDayViewHourSegmentComponent)(); };\nCalendarDayViewHourSegmentComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarDayViewHourSegmentComponent, selectors: [[\"mwl-calendar-day-view-hour-segment\"]], inputs: { segment: \"segment\", segmentHeight: \"segmentHeight\", locale: \"locale\", customTemplate: \"customTemplate\" }, decls: 3, vars: 6, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-hour-segment\", 3, \"ngClass\"], [1, \"cal-time\"]], template: function CalendarDayViewHourSegmentComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarDayViewHourSegmentComponent_ng_template_0_Template, 4, 12, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarDayViewHourSegmentComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c24, ctx.segment, ctx.locale, ctx.segmentHeight));\n } }, directives: [ɵngcc1.NgClass, ɵngcc1.NgTemplateOutlet], pipes: [CalendarDatePipe], encapsulation: 2 });\nCalendarDayViewHourSegmentComponent.propDecorators = {\n segment: [{ type: Input }],\n segmentHeight: [{ type: Input }],\n locale: [{ type: Input }],\n customTemplate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDayViewHourSegmentComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-day-view-hour-segment',\n template: `\n \n \n
    \n {{ segment.date | calendarDate: 'dayViewHour':locale }}\n
    \n \n \n \n \n `\n }]\n }], null, { segment: [{\n type: Input\n }], segmentHeight: [{\n type: Input\n }], locale: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarDayViewEventComponent {\n constructor() {\n this.eventClicked = new EventEmitter();\n }\n}\nCalendarDayViewEventComponent.ɵfac = function CalendarDayViewEventComponent_Factory(t) { return new (t || CalendarDayViewEventComponent)(); };\nCalendarDayViewEventComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarDayViewEventComponent, selectors: [[\"mwl-calendar-day-view-event\"]], inputs: { dayEvent: \"dayEvent\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", customTemplate: \"customTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { eventClicked: \"eventClicked\" }, decls: 3, vars: 8, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-event\", 3, \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"mwlClick\"], [3, \"event\", \"customTemplate\"], [\"view\", \"day\", 3, \"event\", \"customTemplate\"]], template: function CalendarDayViewEventComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarDayViewEventComponent_ng_template_0_Template, 5, 17, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarDayViewEventComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction5(2, _c25, ctx.dayEvent, ctx.tooltipPlacement, ctx.eventClicked, ctx.tooltipTemplate, ctx.tooltipAppendToBody));\n } }, directives: [CalendarTooltipDirective, ClickDirective, CalendarEventActionsComponent, CalendarEventTitleComponent, ɵngcc1.NgTemplateOutlet], pipes: [CalendarEventTitlePipe], encapsulation: 2 });\nCalendarDayViewEventComponent.propDecorators = {\n dayEvent: [{ type: Input }],\n tooltipPlacement: [{ type: Input }],\n tooltipAppendToBody: [{ type: Input }],\n customTemplate: [{ type: Input }],\n eventTitleTemplate: [{ type: Input }],\n eventActionsTemplate: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n eventClicked: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDayViewEventComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-day-view-event',\n template: `\n \n \n \n \n &ngsp;\n \n \n \n \n \n \n `\n }]\n }], function () { return []; }, { eventClicked: [{\n type: Output\n }], dayEvent: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass CalendarDayModule {\n}\nCalendarDayModule.ɵfac = function CalendarDayModule_Factory(t) { return new (t || CalendarDayModule)(); };\nCalendarDayModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarDayModule });\nCalendarDayModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule\n ], ResizableModule,\n DragAndDropModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDayModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule\n ],\n declarations: [\n CalendarDayViewComponent,\n CalendarDayViewHourSegmentComponent,\n CalendarDayViewEventComponent\n ],\n exports: [\n ResizableModule,\n DragAndDropModule,\n CalendarDayViewComponent,\n CalendarDayViewHourSegmentComponent,\n CalendarDayViewEventComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarDayModule, { declarations: function () { return [CalendarDayViewComponent, CalendarDayViewHourSegmentComponent, CalendarDayViewEventComponent]; }, imports: function () { return [CommonModule,\n ResizableModule,\n DragAndDropModule, CalendarCommonModule]; }, exports: function () { return [ResizableModule,\n DragAndDropModule, CalendarDayViewComponent, CalendarDayViewHourSegmentComponent, CalendarDayViewEventComponent]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * The main module of this library. Example usage:\n *\n * ```typescript\n * import { CalenderModule } from 'angular-calendar';\n *\n * \\@NgModule({\n * imports: [\n * CalenderModule.forRoot()\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nclass CalendarModule {\n /**\n * @param {?} dateAdapter\n * @param {?=} config\n * @return {?}\n */\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarModule,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils\n ]\n };\n }\n}\nCalendarModule.ɵfac = function CalendarModule_Factory(t) { return new (t || CalendarModule)(); };\nCalendarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarModule });\nCalendarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule\n ], CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarModule, [{\n type: NgModule,\n args: [{\n imports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule\n ],\n exports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarModule, { imports: [CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule], exports: [CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { CalendarModule, CalendarCommonModule, CalendarEventTitleFormatter, MOMENT, CalendarMomentDateFormatter, CalendarNativeDateFormatter, CalendarAngularDateFormatter, CalendarDateFormatter, CalendarUtils, CalendarEventTimesChangedEventType, DateAdapter, CalendarView, CalendarMonthViewComponent, collapseAnimation, CalendarMonthModule, CalendarWeekViewComponent, getWeekViewPeriod, CalendarWeekModule, CalendarDayViewComponent, CalendarDayModule, CalendarDatePipe as ɵi, CalendarEventActionsComponent as ɵb, CalendarEventTitleComponent as ɵc, CalendarEventTitlePipe as ɵj, CalendarNextViewDirective as ɵg, CalendarPreviousViewDirective as ɵf, CalendarTodayDirective as ɵh, CalendarTooltipDirective as ɵe, CalendarTooltipWindowComponent as ɵd, ClickDirective as ɵk, CalendarDayViewEventComponent as ɵr, CalendarDayViewHourSegmentComponent as ɵq, CalendarMonthCellComponent as ɵl, CalendarMonthViewHeaderComponent as ɵm, CalendarOpenDayEventsComponent as ɵa, CalendarWeekViewEventComponent as ɵo, CalendarWeekViewHeaderComponent as ɵn, CalendarWeekViewHourSegmentComponent as ɵp };\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@angular/core\");\nvar forms_1 = require(\"@angular/forms\");\nvar platform_browser_1 = require(\"@angular/platform-browser\");\nvar textMaskCore_1 = require(\"text-mask-core/dist/textMaskCore\");\nvar ɵngcc0 = require('@angular/core');\nvar TextMaskConfig = /** @class */ (function () {\n function TextMaskConfig() {\n }\n return TextMaskConfig;\n}());\nexports.TextMaskConfig = TextMaskConfig;\nexports.MASKEDINPUT_VALUE_ACCESSOR = {\n provide: forms_1.NG_VALUE_ACCESSOR,\n useExisting: core_1.forwardRef(function () { return MaskedInputDirective; }),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n */\nfunction _isAndroid() {\n var userAgent = platform_browser_1.ɵgetDOM() ? platform_browser_1.ɵgetDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\nvar MaskedInputDirective = /** @class */ (function () {\n function MaskedInputDirective(_renderer, _elementRef, _compositionMode) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._compositionMode = _compositionMode;\n this.textMaskConfig = {\n mask: [],\n guide: true,\n placeholderChar: '_',\n pipe: undefined,\n keepCharPositions: false,\n };\n this.onChange = function (_) { };\n this.onTouched = function () { };\n /** Whether the user is creating a composition string (IME events). */\n this._composing = false;\n if (this._compositionMode == null) {\n this._compositionMode = !_isAndroid();\n }\n }\n MaskedInputDirective.prototype.ngOnChanges = function (changes) {\n this._setupMask(true);\n if (this.textMaskInputElement !== undefined) {\n this.textMaskInputElement.update(this.inputElement.value);\n }\n };\n MaskedInputDirective.prototype.writeValue = function (value) {\n this._setupMask();\n // set the initial value for cases where the mask is disabled\n var normalizedValue = value == null ? '' : value;\n this._renderer.setProperty(this.inputElement, 'value', normalizedValue);\n if (this.textMaskInputElement !== undefined) {\n this.textMaskInputElement.update(value);\n }\n };\n MaskedInputDirective.prototype.registerOnChange = function (fn) { this.onChange = fn; };\n MaskedInputDirective.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n MaskedInputDirective.prototype.setDisabledState = function (isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n };\n MaskedInputDirective.prototype._handleInput = function (value) {\n if (!this._compositionMode || (this._compositionMode && !this._composing)) {\n this._setupMask();\n if (this.textMaskInputElement !== undefined) {\n this.textMaskInputElement.update(value);\n // get the updated value\n value = this.inputElement.value;\n this.onChange(value);\n }\n }\n };\n MaskedInputDirective.prototype._setupMask = function (create) {\n if (create === void 0) { create = false; }\n if (!this.inputElement) {\n if (this._elementRef.nativeElement.tagName.toUpperCase() === 'INPUT') {\n // `textMask` directive is used directly on an input element\n this.inputElement = this._elementRef.nativeElement;\n }\n else {\n // `textMask` directive is used on an abstracted input element, `md-input-container`, etc\n this.inputElement = this._elementRef.nativeElement.getElementsByTagName('INPUT')[0];\n }\n }\n if (this.inputElement && create) {\n this.textMaskInputElement = textMaskCore_1.createTextMaskInputElement(Object.assign({ inputElement: this.inputElement }, this.textMaskConfig));\n }\n };\n MaskedInputDirective.prototype._compositionStart = function () { this._composing = true; };\n MaskedInputDirective.prototype._compositionEnd = function (value) {\n this._composing = false;\n this._compositionMode && this._handleInput(value);\n };\n /** @nocollapse */\n MaskedInputDirective.ctorParameters = function () { return [\n { type: core_1.Renderer2, },\n { type: core_1.ElementRef, },\n { type: undefined, decorators: [{ type: core_1.Optional }, { type: core_1.Inject, args: [forms_1.COMPOSITION_BUFFER_MODE,] },] },\n ]; };\n MaskedInputDirective.propDecorators = {\n 'textMaskConfig': [{ type: core_1.Input, args: ['textMask',] },],\n };\nMaskedInputDirective.ɵfac = function MaskedInputDirective_Factory(t) { return new (t || MaskedInputDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(forms_1.COMPOSITION_BUFFER_MODE, 8)); };\nMaskedInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MaskedInputDirective, selectors: [[\"\", \"textMask\", \"\"]], hostBindings: function MaskedInputDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function MaskedInputDirective_input_HostBindingHandler($event) { return ctx._handleInput($event.target.value); })(\"blur\", function MaskedInputDirective_blur_HostBindingHandler() { return ctx.onTouched(); })(\"compositionstart\", function MaskedInputDirective_compositionstart_HostBindingHandler() { return ctx._compositionStart(); })(\"compositionend\", function MaskedInputDirective_compositionend_HostBindingHandler($event) { return ctx._compositionEnd($event.target.value); });\n } }, inputs: { textMaskConfig: [\"textMask\", \"textMaskConfig\"] }, exportAs: [\"textMask\"], features: [ɵngcc0.ɵɵProvidersFeature([exports.MASKEDINPUT_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskedInputDirective, [{\n type: core_1.Directive,\n args: [{\n host: {\n '(input)': '_handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '_compositionStart()',\n '(compositionend)': '_compositionEnd($event.target.value)'\n },\n selector: '[textMask]',\n exportAs: 'textMask',\n providers: [exports.MASKEDINPUT_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: core_1.Optional\n }, {\n type: core_1.Inject,\n args: [forms_1.COMPOSITION_BUFFER_MODE]\n }] }]; }, { textMaskConfig: [{\n type: core_1.Input,\n args: ['textMask']\n }] }); })();\n return MaskedInputDirective;\n}());\nexports.MaskedInputDirective = MaskedInputDirective;\nvar TextMaskModule = /** @class */ (function () {\n function TextMaskModule() {\n }\n /** @nocollapse */\n TextMaskModule.ctorParameters = function () { return []; };\nTextMaskModule.ɵfac = function TextMaskModule_Factory(t) { return new (t || TextMaskModule)(); };\nTextMaskModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TextMaskModule });\nTextMaskModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextMaskModule, [{\n type: core_1.NgModule,\n args: [{\n declarations: [MaskedInputDirective],\n exports: [MaskedInputDirective]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TextMaskModule, { declarations: [MaskedInputDirective], exports: [MaskedInputDirective] }); })();\n return TextMaskModule;\n}());\nexports.TextMaskModule = TextMaskModule;\nvar textMaskCore_2 = require(\"text-mask-core/dist/textMaskCore\");\nexports.conformToMask = textMaskCore_2.conformToMask;\n\n","\"use strict\";\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n \"use strict\";\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// THIS FILE WAS AUTOGENERATED\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var Telemetry;\r\n (function (Telemetry) {\r\n \"use strict\";\r\n /**\r\n * Data struct to contain only C section with custom fields.\r\n */\r\n var Base = /** @class */ (function () {\r\n function Base() {\r\n }\r\n return Base;\r\n }());\r\n Telemetry.Base = Base;\r\n })(Telemetry = Microsoft.Telemetry || (Microsoft.Telemetry = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// THIS FILE WAS AUTOGENERATED\r\n/// \r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var Telemetry;\r\n (function (Telemetry) {\r\n \"use strict\";\r\n /**\r\n * System variables for a telemetry item.\r\n */\r\n var Envelope = /** @class */ (function () {\r\n function Envelope() {\r\n this.ver = 1;\r\n this.sampleRate = 100.0;\r\n this.tags = {};\r\n }\r\n return Envelope;\r\n }());\r\n Telemetry.Envelope = Envelope;\r\n })(Telemetry = Microsoft.Telemetry || (Microsoft.Telemetry = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n var Context;\r\n (function (Context) {\r\n \"use strict\";\r\n })(Context = ApplicationInsights.Context || (ApplicationInsights.Context = {}));\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n \"use strict\";\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/// \r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n \"use strict\";\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n \"use strict\";\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// THIS FILE WAS AUTOGENERATED\r\nvar AI;\r\n(function (AI) {\r\n \"use strict\";\r\n /**\r\n * Defines the level of severity for the event.\r\n */\r\n var SeverityLevel;\r\n (function (SeverityLevel) {\r\n SeverityLevel[SeverityLevel[\"Verbose\"] = 0] = \"Verbose\";\r\n SeverityLevel[SeverityLevel[\"Information\"] = 1] = \"Information\";\r\n SeverityLevel[SeverityLevel[\"Warning\"] = 2] = \"Warning\";\r\n SeverityLevel[SeverityLevel[\"Error\"] = 3] = \"Error\";\r\n SeverityLevel[SeverityLevel[\"Critical\"] = 4] = \"Critical\";\r\n })(SeverityLevel = AI.SeverityLevel || (AI.SeverityLevel = {}));\r\n})(AI || (AI = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/// \r\n/// \r\n/// \r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n \"use strict\";\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Microsoft;\r\n(function (Microsoft) {\r\n var ApplicationInsights;\r\n (function (ApplicationInsights) {\r\n \"use strict\";\r\n var UtilHelpers = /** @class */ (function () {\r\n function UtilHelpers() {\r\n }\r\n /**\r\n * generate random id string\r\n */\r\n UtilHelpers.newId = function () {\r\n var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n var result = \"\";\r\n // tslint:disable-next-line:insecure-random\r\n var random = Math.random() * 1073741824; //5 symbols in base64, almost maxint\r\n while (random > 0) {\r\n var char = base64chars.charAt(random % 64);\r\n result += char;\r\n random = Math.floor(random / 64);\r\n }\r\n return result;\r\n };\r\n return UtilHelpers;\r\n }());\r\n ApplicationInsights.UtilHelpers = UtilHelpers;\r\n })(ApplicationInsights = Microsoft.ApplicationInsights || (Microsoft.ApplicationInsights = {}));\r\n})(Microsoft || (Microsoft = {}));\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\ndefine(\"JavaScriptSDK.Module/AppInsightsModule\", [\"require\", \"exports\"], function (require, exports) {\r\n /// \r\n /// \r\n /// \r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var AppInsightsModule = /** @class */ (function () {\r\n function AppInsightsModule() {\r\n }\r\n AppInsightsModule._createLazyMethod = function (name) {\r\n var aiObject = window[AppInsightsModule.appInsightsName];\r\n // Define a temporary method that queues-up a the real method call\r\n aiObject[name] = function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n // If the queue is available, it means that the function wasn't yet replaced with actual function value\r\n if (aiObject.queue) {\r\n aiObject.queue.push(function () { return aiObject[name].apply(aiObject, originalArguments); });\r\n }\r\n else {\r\n // otherwise execute the function\r\n aiObject[name].apply(aiObject, originalArguments);\r\n }\r\n };\r\n };\r\n ;\r\n AppInsightsModule._defineLazyMethods = function () {\r\n var aiObject = window[AppInsightsModule.appInsightsName];\r\n // capture initial cookie if possible\r\n try {\r\n aiObject.cookie = document.cookie;\r\n }\r\n catch (e) {\r\n }\r\n aiObject.queue = [];\r\n var method = [\r\n \"clearAuthenticatedUserContext\",\r\n \"flush\",\r\n \"setAuthenticatedUserContext\",\r\n \"startTrackEvent\",\r\n \"startTrackPage\",\r\n \"stopTrackEvent\",\r\n \"stopTrackPage\",\r\n \"trackDependency\",\r\n \"trackEvent\",\r\n \"trackException\",\r\n \"trackMetric\",\r\n \"trackPageView\",\r\n \"trackTrace\"\r\n ];\r\n while (method.length) {\r\n AppInsightsModule._createLazyMethod(method.pop());\r\n }\r\n };\r\n AppInsightsModule._download = function (aiConfig) {\r\n AppInsightsModule.getAppInsightsInstance().config = aiConfig;\r\n var aiObject = window[AppInsightsModule.appInsightsName];\r\n // if script was previously downloaded and initialized, queue will be deleted, reinitialize it\r\n if (!aiObject.queue) {\r\n aiObject.queue = [];\r\n }\r\n setTimeout(function () {\r\n var scriptElement = document.createElement(\"script\");\r\n scriptElement.src = aiConfig.url || \"https://az416426.vo.msecnd.net/scripts/a/ai.0.js\";\r\n document.head.appendChild(scriptElement);\r\n });\r\n // collect global errors by wrapping the window.onerror method\r\n if (!aiConfig.disableExceptionTracking) {\r\n var method_1 = \"onerror\";\r\n AppInsightsModule._createLazyMethod(\"_\" + method_1);\r\n var originalOnError = window[method_1];\r\n window[method_1] = function (message, url, lineNumber, columnNumber, error) {\r\n var handled = originalOnError && originalOnError(message, url, lineNumber, columnNumber, error);\r\n if (handled !== true) {\r\n aiObject[\"_\" + method_1](message, url, lineNumber, columnNumber, error);\r\n }\r\n return handled;\r\n };\r\n }\r\n };\r\n AppInsightsModule.getAppInsightsInstance = function () {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n if (!window[AppInsightsModule.appInsightsName]) {\r\n window[AppInsightsModule.appInsightsName] = {\r\n downloadAndSetup: AppInsightsModule._download,\r\n // exposing it for unit tests only, not part of interface\r\n _defineLazyMethods: AppInsightsModule._defineLazyMethods\r\n };\r\n AppInsightsModule._defineLazyMethods();\r\n }\r\n return window[AppInsightsModule.appInsightsName];\r\n };\r\n AppInsightsModule.appInsightsInitialized = false;\r\n AppInsightsModule.appInsightsName = \"appInsights\";\r\n /**\r\n * Static constructor, attempt to ES5 get accessor\r\n */\r\n AppInsightsModule._staticInit = (function () {\r\n // Dynamically create get/set property accessors\r\n var defineProp = Object[\"defineProperty\"];\r\n try {\r\n defineProp && defineProp(AppInsightsModule.prototype, \"appInsightsInstance\", {\r\n get: AppInsightsModule.getAppInsightsInstance,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n })();\r\n return AppInsightsModule;\r\n }());\r\n exports.AppInsights = AppInsightsModule.getAppInsightsInstance();\r\n});\r\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","(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","!function(t){\"function\"==typeof define&&define.amd?define(t):t()}(function(){\"use strict\";\n/** @license\n * jsPDF - PDF Document creation from JavaScript\n * Version 1.5.3 Built on 2018-12-27T14:11:42.696Z\n * CommitID d93d28db14\n *\n * Copyright (c) 2010-2016 James Hall , https://github.com/MrRio/jsPDF\n * 2010 Aaron Spike, https://github.com/acspike\n * 2012 Willow Systems Corporation, willow-systems.com\n * 2012 Pablo Hess, https://github.com/pablohess\n * 2012 Florian Jenett, https://github.com/fjenett\n * 2013 Warren Weckesser, https://github.com/warrenweckesser\n * 2013 Youssef Beddad, https://github.com/lifof\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2013 Stefan Slonevskiy, https://github.com/stefslon\n * 2013 Jeremy Morel, https://github.com/jmorel\n * 2013 Christoph Hartmann, https://github.com/chris-rock\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Makes, https://github.com/dollaruw\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 Steven Spungin, https://github.com/Flamenco\n * 2014 Kenneth Glassey, https://github.com/Gavvers\n *\n * Licensed under the MIT License\n *\n * Contributor(s):\n * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,\n * kim3er, mfo, alnorth, Flamenco\n */function se(t){return(se=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}!function(t){if(\"object\"!==se(t.console)){t.console={};for(var e,n,r=t.console,i=function(){},o=[\"memory\"],a=\"assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn\".split(\",\");e=o.pop();)r[e]||(r[e]={});for(;n=a.pop();)r[n]||(r[n]=i)}var s,l,h,u,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";void 0===t.btoa&&(t.btoa=function(t){var e,n,r,i,o,a=0,s=0,l=\"\",h=[];if(!t)return t;for(;e=(o=t.charCodeAt(a++)<<16|t.charCodeAt(a++)<<8|t.charCodeAt(a++))>>18&63,n=o>>12&63,r=o>>6&63,i=63&o,h[s++]=c.charAt(e)+c.charAt(n)+c.charAt(r)+c.charAt(i),a>16&255,n=a>>8&255,r=255&a,h[l++]=64==i?String.fromCharCode(e):64==o?String.fromCharCode(e,n):String.fromCharCode(e,n,r),s>>0,r=new Array(n),i=1>>0,i=0;i>>0;if(\"function\"!=typeof t)throw new TypeError(\"predicate must be a function\");for(var r=arguments[1],i=0;i>16&255,r=l>>8&255,i=255&l}if(void 0===r||void 0===o&&n===r&&r===i)if(\"string\"==typeof n)e=n+\" \"+a[0];else switch(t.precision){case 2:e=Z(n/255)+\" \"+a[0];break;case 3:default:e=Q(n/255)+\" \"+a[0]}else if(void 0===o||\"object\"===se(o)){if(o&&!isNaN(o.a)&&0===o.a)return e=[\"1.000\",\"1.000\",\"1.000\",a[1]].join(\" \");if(\"string\"==typeof n)e=[n,r,i,a[1]].join(\" \");else switch(t.precision){case 2:e=[Z(n/255),Z(r/255),Z(i/255),a[1]].join(\" \");break;default:case 3:e=[Q(n/255),Q(r/255),Q(i/255),a[1]].join(\" \")}}else if(\"string\"==typeof n)e=[n,r,i,o,a[2]].join(\" \");else switch(t.precision){case 2:e=[Z(n/255),Z(r/255),Z(i/255),Z(o/255),a[2]].join(\" \");break;case 3:default:e=[Q(n/255),Q(r/255),Q(i/255),Q(o/255),a[2]].join(\" \")}return e},ct=l.__private__.getFilters=function(){return o},ft=l.__private__.putStream=function(t){var e=(t=t||{}).data||\"\",n=t.filters||ct(),r=t.alreadyAppliedFilters||[],i=t.addLength1||!1,o=e.length,a={};!0===n&&(n=[\"FlateEncode\"]);var s=t.additionalKeyValues||[],l=(a=void 0!==ae.API.processDataByFilters?ae.API.processDataByFilters(e,n):{data:e,reverseChain:[]}).reverseChain+(Array.isArray(r)?r.join(\" \"):r.toString());0!==a.data.length&&(s.push({key:\"Length\",value:a.data.length}),!0===i&&s.push({key:\"Length1\",value:o})),0!=l.length&&(l.split(\"/\").length-1==1?s.push({key:\"Filter\",value:l}):s.push({key:\"Filter\",value:\"[\"+l+\"]\"})),tt(\"<<\");for(var h=0;h>\"),0!==a.data.length&&(tt(\"stream\"),tt(a.data),tt(\"endstream\"))},pt=l.__private__.putPage=function(t){t.mediaBox;var e=t.number,n=t.data,r=t.objId,i=t.contentsObjId;ot(r,!0);V[x].mediaBox.topRightX,V[x].mediaBox.bottomLeftX,V[x].mediaBox.topRightY,V[x].mediaBox.bottomLeftY;tt(\"<>\"),tt(\"endobj\");var o=n.join(\"\\n\");return ot(i,!0),ft({data:o,filters:ct()}),tt(\"endobj\"),r},dt=l.__private__.putPages=function(){var t,e,n=[];for(t=1;t<=W;t++)V[t].objId=X(),V[t].contentsObjId=X();for(t=1;t<=W;t++)n.push(pt({number:t,data:I[t],objId:V[t].objId,contentsObjId:V[t].contentsObjId,mediaBox:V[t].mediaBox,cropBox:V[t].cropBox,bleedBox:V[t].bleedBox,trimBox:V[t].trimBox,artBox:V[t].artBox,userUnit:V[t].userUnit,rootDictionaryObjId:st,resourceDictionaryObjId:lt}));ot(st,!0),tt(\"<>\"),tt(\"endobj\"),it.publish(\"postPutPages\")},gt=function(){!function(){for(var t in rt)rt.hasOwnProperty(t)&&(!1===s||!0===s&&K.hasOwnProperty(t))&&(e=rt[t],it.publish(\"putFont\",{font:e,out:tt,newObject:J,putStream:ft}),!0!==e.isAlreadyPutted&&(e.objectNumber=J(),tt(\"<<\"),tt(\"/Type /Font\"),tt(\"/BaseFont /\"+e.postScriptName),tt(\"/Subtype /Type1\"),\"string\"==typeof e.encoding&&tt(\"/Encoding /\"+e.encoding),tt(\"/FirstChar 32\"),tt(\"/LastChar 255\"),tt(\">>\"),tt(\"endobj\")));var e}(),it.publish(\"putResources\"),ot(lt,!0),tt(\"<<\"),function(){for(var t in tt(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\"),tt(\"/Font <<\"),rt)rt.hasOwnProperty(t)&&(!1===s||!0===s&&K.hasOwnProperty(t))&&tt(\"/\"+t+\" \"+rt[t].objectNumber+\" 0 R\");tt(\">>\"),tt(\"/XObject <<\"),it.publish(\"putXobjectDict\"),tt(\">>\")}(),tt(\">>\"),tt(\"endobj\"),it.publish(\"postPutResources\")},mt=function(t,e,n){H.hasOwnProperty(e)||(H[e]={}),H[e][n]=t},yt=function(t,e,n,r,i){i=i||!1;var o=\"F\"+(Object.keys(rt).length+1).toString(10),a={id:o,postScriptName:t,fontName:e,fontStyle:n,encoding:r,isStandardFont:i,metadata:{}};return it.publish(\"addFont\",{font:a,instance:this}),void 0!==o&&(rt[o]=a,mt(o,e,n)),o},vt=l.__private__.pdfEscape=l.pdfEscape=function(t,e){return function(t,e){var n,r,i,o,a,s,l,h,u;if(i=(e=e||{}).sourceEncoding||\"Unicode\",a=e.outputEncoding,(e.autoencode||a)&&rt[$].metadata&&rt[$].metadata[i]&&rt[$].metadata[i].encoding&&(o=rt[$].metadata[i].encoding,!a&&rt[$].encoding&&(a=rt[$].encoding),!a&&o.codePages&&(a=o.codePages[0]),\"string\"==typeof a&&(a=o[a]),a)){for(l=!1,s=[],n=0,r=t.length;n>8&&(l=!0);t=s.join(\"\")}for(n=t.length;void 0===l&&0!==n;)t.charCodeAt(n-1)>>8&&(l=!0),n--;if(!l)return t;for(s=e.noBOM?[]:[254,255],n=0,r=t.length;n>8)>>8)throw new Error(\"Character at position \"+n+\" of string '\"+t+\"' exceeds 16bits. Cannot be encoded into UCS-2 BE\");s.push(u),s.push(h-(u<<8))}return String.fromCharCode.apply(void 0,s)}(t,e).replace(/\\\\/g,\"\\\\\\\\\").replace(/\\(/g,\"\\\\(\").replace(/\\)/g,\"\\\\)\")},wt=l.__private__.beginPage=function(t,e){var n,r=\"string\"==typeof e&&e.toLowerCase();if(\"string\"==typeof t&&(n=f(t.toLowerCase()))&&(t=n[0],e=n[1]),Array.isArray(t)&&(e=t[1],t=t[0]),(isNaN(t)||isNaN(e))&&(t=i[0],e=i[1]),r){switch(r.substr(0,1)){case\"l\":t>\"),tt(\"endobj\")},St=l.__private__.putCatalog=function(t){var e=(t=t||{}).rootDictionaryObjId||st;switch(J(),tt(\"<<\"),tt(\"/Type /Catalog\"),tt(\"/Pages \"+e+\" 0 R\"),L||(L=\"fullwidth\"),L){case\"fullwidth\":tt(\"/OpenAction [3 0 R /FitH null]\");break;case\"fullheight\":tt(\"/OpenAction [3 0 R /FitV null]\");break;case\"fullpage\":tt(\"/OpenAction [3 0 R /Fit]\");break;case\"original\":tt(\"/OpenAction [3 0 R /XYZ null null 1]\");break;default:var n=\"\"+L;\"%\"===n.substr(n.length-1)&&(L=parseInt(L)/100),\"number\"==typeof L&&tt(\"/OpenAction [3 0 R /XYZ null null \"+Z(L)+\"]\")}switch(S||(S=\"continuous\"),S){case\"continuous\":tt(\"/PageLayout /OneColumn\");break;case\"single\":tt(\"/PageLayout /SinglePage\");break;case\"two\":case\"twoleft\":tt(\"/PageLayout /TwoColumnLeft\");break;case\"tworight\":tt(\"/PageLayout /TwoColumnRight\")}A&&tt(\"/PageMode /\"+A),it.publish(\"putCatalog\"),tt(\">>\"),tt(\"endobj\")},_t=l.__private__.putTrailer=function(){tt(\"trailer\"),tt(\"<<\"),tt(\"/Size \"+(U+1)),tt(\"/Root \"+U+\" 0 R\"),tt(\"/Info \"+(U-1)+\" 0 R\"),tt(\"/ID [ <\"+d+\"> <\"+d+\"> ]\"),tt(\">>\")},Ft=l.__private__.putHeader=function(){tt(\"%PDF-\"+h),tt(\"%ºß¬à\")},Pt=l.__private__.putXRef=function(){var t=1,e=\"0000000000\";for(tt(\"xref\"),tt(\"0 \"+(U+1)),tt(\"0000000000 65535 f \"),t=1;t<=U;t++){\"function\"==typeof z[t]?tt((e+z[t]()).slice(-10)+\" 00000 n \"):void 0!==z[t]?tt((e+z[t]).slice(-10)+\" 00000 n \"):tt(\"0000000000 00000 n \")}},kt=l.__private__.buildDocument=function(){k=!1,B=U=0,C=[],z=[],G=[],st=X(),lt=X(),it.publish(\"buildDocument\"),Ft(),dt(),function(){it.publish(\"putAdditionalObjects\");for(var t=0;t',i=ie.open();if(null!==i&&i.document.write(r),i||\"undefined\"==typeof safari)return i;case\"datauri\":case\"dataurl\":return ie.document.location.href=\"data:application/pdf;filename=\"+e.filename+\";base64,\"+btoa(n);default:return null}}).foo=function(){try{return F.apply(this,arguments)}catch(t){var e=t.stack||\"\";~e.indexOf(\" at \")&&(e=e.split(\" at \")[1]);var n=\"Error in function \"+e.split(\"\\n\")[0].split(\"<\")[0]+\": \"+t.message;if(!ie.console)throw new Error(n);ie.console.error(n,t),ie.alert&&alert(n)}},(F.foo.bar=F).foo),Bt=function(t){return!0===Array.isArray(Y)&&-1\":\")\"),Y=1):(W=Wt(e),V=Vt(n),G=(l?\"<\":\"(\")+v[H]+(l?\">\":\")\")),void 0!==q&&void 0!==q[H]&&(J=q[H]+\" Tw\\n\"),0!==S.length&&0===H?t.push(J+S.join(\" \")+\" \"+W.toFixed(2)+\" \"+V.toFixed(2)+\" Tm\\n\"+G):1===Y||0===Y&&0===H?t.push(J+W.toFixed(2)+\" \"+V.toFixed(2)+\" Td\\n\"+G):t.push(J+G);t=0===Y?t.join(\" Tj\\nT* \"):t.join(\" Tj\\n\"),t+=\" Tj\\n\";var X=\"BT\\n/\"+$+\" \"+et+\" Tf\\n\"+(et*u).toFixed(2)+\" TL\\n\"+Kt+\"\\n\";return X+=h,X+=t,tt(X+=\"ET\"),K[$]=!0,c},l.__private__.lstext=l.lstext=function(t,e,n,r){return console.warn(\"jsPDF.lstext is deprecated\"),this.text(t,e,n,{charSpace:r})},l.__private__.clip=l.clip=function(t){tt(\"evenodd\"===t?\"W*\":\"W\"),tt(\"n\")},l.__private__.clip_fixed=l.clip_fixed=function(t){console.log(\"clip_fixed is deprecated\"),l.clip(t)};var Ot=l.__private__.isValidStyle=function(t){var e=!1;return-1!==[void 0,null,\"S\",\"F\",\"DF\",\"FD\",\"f\",\"f*\",\"B\",\"B*\"].indexOf(t)&&(e=!0),e},qt=l.__private__.getStyle=function(t){var e=\"S\";return\"F\"===t?e=\"f\":\"FD\"===t||\"DF\"===t?e=\"B\":\"f\"!==t&&\"f*\"!==t&&\"B\"!==t&&\"B*\"!==t||(e=t),e};l.__private__.line=l.line=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw new Error(\"Invalid arguments passed to jsPDF.line\");return this.lines([[n-t,r-e]],t,e)},l.__private__.lines=l.lines=function(t,e,n,r,i,o){var a,s,l,h,u,c,f,p,d,g,m,y;if(\"number\"==typeof t&&(y=n,n=e,e=t,t=y),r=r||[1,1],o=o||!1,isNaN(e)||isNaN(n)||!Array.isArray(t)||!Array.isArray(r)||!Ot(i)||\"boolean\"!=typeof o)throw new Error(\"Invalid arguments passed to jsPDF.lines\");for(tt(Q(Wt(e))+\" \"+Q(Vt(n))+\" m \"),a=r[0],s=r[1],h=t.length,g=e,m=n,l=0;l=o.length-1;if(b&&!x){m+=\" \";continue}if(b||x){if(x)d=w;else if(i.multiline&&a<(h+2)*(y+2)+2)continue t}else{if(!i.multiline)continue t;if(a<(h+2)*(y+2)+2)continue t;d=w}for(var N=\"\",L=p;L<=d;L++)N+=o[L]+\" \";switch(N=\" \"==N.substr(N.length-1)?N.substr(0,N.length-1):N,g=F(N,i,r).width,i.textAlign){case\"right\":c=s-g-2;break;case\"center\":c=(s-g)/2;break;case\"left\":default:c=2}t+=_(c)+\" \"+_(f)+\" Td\\n\",t+=\"(\"+S(N)+\") Tj\\n\",t+=-_(c)+\" 0 Td\\n\",f=-(r+2),g=0,p=d+1,y++,m=\"\"}else;break}return n.text=t,n.fontSize=r,n},F=function(t,e,n){var r=A.internal.getFont(e.fontName,e.fontStyle),i=A.getStringUnitWidth(t,{font:r,fontSize:parseFloat(n),charSpace:0})*parseFloat(n);return{height:A.getStringUnitWidth(\"3\",{font:r,fontSize:parseFloat(n),charSpace:0})*parseFloat(n)*1.5,width:i}},u={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null,isInitialized:!1},p=function(){A.internal.acroformPlugin.acroFormDictionaryRoot.objId=void 0;var t=A.internal.acroformPlugin.acroFormDictionaryRoot.Fields;for(var e in t)if(t.hasOwnProperty(e)){var n=t[e];n.objId=void 0,n.hasAnnotation&&d.call(A,n)}},d=function(t){var e={type:\"reference\",object:t};void 0===A.internal.getPageInfo(t.page).pageContext.annotations.find(function(t){return t.type===e.type&&t.object===e.object})&&A.internal.getPageInfo(t.page).pageContext.annotations.push(e)},g=function(){if(void 0===A.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error(\"putCatalogCallback: Root missing.\");A.internal.write(\"/AcroForm \"+A.internal.acroformPlugin.acroFormDictionaryRoot.objId+\" 0 R\")},m=function(){A.internal.events.unsubscribe(A.internal.acroformPlugin.acroFormDictionaryRoot._eventID),delete A.internal.acroformPlugin.acroFormDictionaryRoot._eventID,A.internal.acroformPlugin.printedOut=!0},L=function(t){var e=!t;t||(A.internal.newObjectDeferredBegin(A.internal.acroformPlugin.acroFormDictionaryRoot.objId,!0),A.internal.acroformPlugin.acroFormDictionaryRoot.putStream());t=t||A.internal.acroformPlugin.acroFormDictionaryRoot.Kids;for(var n in t)if(t.hasOwnProperty(n)){var r=t[n],i=[],o=r.Rect;if(r.Rect&&(r.Rect=c.call(this,r.Rect)),A.internal.newObjectDeferredBegin(r.objId,!0),r.DA=Y.createDefaultAppearanceStream(r),\"object\"===se(r)&&\"function\"==typeof r.getKeyValueListForStream&&(i=r.getKeyValueListForStream()),r.Rect=o,r.hasAppearanceStream&&!r.appearanceStreamContent){var a=f.call(this,r);i.push({key:\"AP\",value:\"<>\"}),A.internal.acroformPlugin.xForms.push(a)}if(r.appearanceStreamContent){var s=\"\";for(var l in r.appearanceStreamContent)if(r.appearanceStreamContent.hasOwnProperty(l)){var h=r.appearanceStreamContent[l];if(s+=\"/\"+l+\" \",s+=\"<<\",1<=Object.keys(h).length||Array.isArray(h))for(var n in h){var u;if(h.hasOwnProperty(n))\"function\"==typeof(u=h[n])&&(u=u.call(this,r)),s+=\"/\"+n+\" \"+u+\" \",0<=A.internal.acroformPlugin.xForms.indexOf(u)||A.internal.acroformPlugin.xForms.push(u)}else\"function\"==typeof(u=h)&&(u=u.call(this,r)),s+=\"/\"+n+\" \"+u,0<=A.internal.acroformPlugin.xForms.indexOf(u)||A.internal.acroformPlugin.xForms.push(u);s+=\">>\"}i.push({key:\"AP\",value:\"<<\\n\"+s+\">>\"})}A.internal.putStream({additionalKeyValues:i}),A.internal.out(\"endobj\")}e&&P.call(this,A.internal.acroformPlugin.xForms)},P=function(t){for(var e in t)if(t.hasOwnProperty(e)){var n=e,r=t[e];A.internal.newObjectDeferredBegin(r&&r.objId,!0),\"object\"===se(r)&&\"function\"==typeof r.putStream&&r.putStream(),delete t[n]}},k=function(){if(void 0!==this.internal&&(void 0===this.internal.acroformPlugin||!1===this.internal.acroformPlugin.isInitialized)){if(A=this,M.FieldNum=0,this.internal.acroformPlugin=JSON.parse(JSON.stringify(u)),this.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error(\"Exception while creating AcroformDictionary\");n=A.internal.scaleFactor,A.internal.acroformPlugin.acroFormDictionaryRoot=new E,A.internal.acroformPlugin.acroFormDictionaryRoot._eventID=A.internal.events.subscribe(\"postPutResources\",m),A.internal.events.subscribe(\"buildDocument\",p),A.internal.events.subscribe(\"putCatalog\",g),A.internal.events.subscribe(\"postPutPages\",L),A.internal.acroformPlugin.isInitialized=!0}},I=t.__acroform__.arrayToPdfArray=function(t){if(Array.isArray(t)){for(var e=\"[\",n=0;n>\"),e.join(\"\\n\")}},set:function(t){\"object\"===se(t)&&(n=t)}}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,get:function(){return n.CA||\"\"},set:function(t){\"string\"==typeof t&&(n.CA=t)}}),Object.defineProperty(this,\"AS\",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,\"appearanceState\",{enumerable:!0,configurable:!0,get:function(){return e.substr(1,e.length-1)},set:function(t){e=\"/\"+t}})};r(D,M);var U=function(){D.call(this),this.pushButton=!0};r(U,D);var z=function(){D.call(this),this.radio=!0,this.pushButton=!1;var e=[];Object.defineProperty(this,\"Kids\",{enumerable:!0,configurable:!1,get:function(){return e},set:function(t){e=void 0!==t?t:[]}})};r(z,D);var H=function(){var e,n;M.call(this),Object.defineProperty(this,\"Parent\",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,\"optionName\",{enumerable:!1,configurable:!0,get:function(){return n},set:function(t){n=t}});var r,i={};Object.defineProperty(this,\"MK\",{enumerable:!1,configurable:!1,get:function(){var t,e=[];for(t in e.push(\"<<\"),i)e.push(\"/\"+t+\" (\"+i[t]+\")\");return e.push(\">>\"),e.join(\"\\n\")},set:function(t){\"object\"===se(t)&&(i=t)}}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,get:function(){return i.CA||\"\"},set:function(t){\"string\"==typeof t&&(i.CA=t)}}),Object.defineProperty(this,\"AS\",{enumerable:!1,configurable:!1,get:function(){return r},set:function(t){r=t}}),Object.defineProperty(this,\"appearanceState\",{enumerable:!0,configurable:!0,get:function(){return r.substr(1,r.length-1)},set:function(t){r=\"/\"+t}}),this.optionName=name,this.caption=\"l\",this.appearanceState=\"Off\",this._AppearanceType=Y.RadioButton.Circle,this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(name)};r(H,M),z.prototype.setAppearance=function(t){if(!(\"createAppearanceStream\"in t&&\"getCA\"in t))throw new Error(\"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\");for(var e in this.Kids)if(this.Kids.hasOwnProperty(e)){var n=this.Kids[e];n.appearanceStreamContent=t.createAppearanceStream(n.optionName),n.caption=t.getCA()}},z.prototype.createOption=function(t){this.Kids.length;var e=new H;return e.Parent=this,e.optionName=t,this.Kids.push(e),J.call(this,e),e};var W=function(){D.call(this),this.fontName=\"zapfdingbats\",this.caption=\"3\",this.appearanceState=\"On\",this.value=\"On\",this.textAlign=\"center\",this.appearanceStreamContent=Y.CheckBox.createAppearanceStream()};r(W,D);var V=function(){M.call(this),this.FT=\"/Tx\",Object.defineProperty(this,\"multiline\",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,13))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,13):this.Ff=N(this.Ff,13)}}),Object.defineProperty(this,\"fileSelect\",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,21))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,21):this.Ff=N(this.Ff,21)}}),Object.defineProperty(this,\"doNotSpellCheck\",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,23))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,23):this.Ff=N(this.Ff,23)}}),Object.defineProperty(this,\"doNotScroll\",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,24))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,24):this.Ff=N(this.Ff,24)}}),Object.defineProperty(this,\"comb\",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,25))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,25):this.Ff=N(this.Ff,25)}}),Object.defineProperty(this,\"richText\",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,26))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,26):this.Ff=N(this.Ff,26)}});var e=null;Object.defineProperty(this,\"MaxLen\",{enumerable:!0,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,\"maxLength\",{enumerable:!0,configurable:!0,get:function(){return e},set:function(t){Number.isInteger(t)&&(e=t)}}),Object.defineProperty(this,\"hasAppearanceStream\",{enumerable:!0,configurable:!0,get:function(){return this.V||this.DV}})};r(V,M);var G=function(){V.call(this),Object.defineProperty(this,\"password\",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,14))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,14):this.Ff=N(this.Ff,14)}}),this.password=!0};r(G,V);var Y={CheckBox:{createAppearanceStream:function(){return{N:{On:Y.CheckBox.YesNormal},D:{On:Y.CheckBox.YesPushDown,Off:Y.CheckBox.OffPushDown}}},YesPushDown:function(t){var e=l(t),n=[],r=A.internal.getFont(t.fontName,t.fontStyle).id,i=A.__private__.encodeColorString(t.color),o=h(t,t.caption);return n.push(\"0.749023 g\"),n.push(\"0 0 \"+_(Y.internal.getWidth(t))+\" \"+_(Y.internal.getHeight(t))+\" re\"),n.push(\"f\"),n.push(\"BMC\"),n.push(\"q\"),n.push(\"0 0 1 rg\"),n.push(\"/\"+r+\" \"+_(o.fontSize)+\" Tf \"+i),n.push(\"BT\"),n.push(o.text),n.push(\"ET\"),n.push(\"Q\"),n.push(\"EMC\"),e.stream=n.join(\"\\n\"),e},YesNormal:function(t){var e=l(t),n=A.internal.getFont(t.fontName,t.fontStyle).id,r=A.__private__.encodeColorString(t.color),i=[],o=Y.internal.getHeight(t),a=Y.internal.getWidth(t),s=h(t,t.caption);return i.push(\"1 g\"),i.push(\"0 0 \"+_(a)+\" \"+_(o)+\" re\"),i.push(\"f\"),i.push(\"q\"),i.push(\"0 0 1 rg\"),i.push(\"0 0 \"+_(a-1)+\" \"+_(o-1)+\" re\"),i.push(\"W\"),i.push(\"n\"),i.push(\"0 g\"),i.push(\"BT\"),i.push(\"/\"+n+\" \"+_(s.fontSize)+\" Tf \"+r),i.push(s.text),i.push(\"ET\"),i.push(\"Q\"),e.stream=i.join(\"\\n\"),e},OffPushDown:function(t){var e=l(t),n=[];return n.push(\"0.749023 g\"),n.push(\"0 0 \"+_(Y.internal.getWidth(t))+\" \"+_(Y.internal.getHeight(t))+\" re\"),n.push(\"f\"),e.stream=n.join(\"\\n\"),e}},RadioButton:{Circle:{createAppearanceStream:function(t){var e={D:{Off:Y.RadioButton.Circle.OffPushDown},N:{}};return e.N[t]=Y.RadioButton.Circle.YesNormal,e.D[t]=Y.RadioButton.Circle.YesPushDown,e},getCA:function(){return\"l\"},YesNormal:function(t){var e=l(t),n=[],r=Y.internal.getWidth(t)<=Y.internal.getHeight(t)?Y.internal.getWidth(t)/4:Y.internal.getHeight(t)/4;r=Number((.9*r).toFixed(5));var i=Y.internal.Bezier_C,o=Number((r*i).toFixed(5));return n.push(\"q\"),n.push(\"1 0 0 1 \"+s(Y.internal.getWidth(t)/2)+\" \"+s(Y.internal.getHeight(t)/2)+\" cm\"),n.push(r+\" 0 m\"),n.push(r+\" \"+o+\" \"+o+\" \"+r+\" 0 \"+r+\" c\"),n.push(\"-\"+o+\" \"+r+\" -\"+r+\" \"+o+\" -\"+r+\" 0 c\"),n.push(\"-\"+r+\" -\"+o+\" -\"+o+\" -\"+r+\" 0 -\"+r+\" c\"),n.push(o+\" -\"+r+\" \"+r+\" -\"+o+\" \"+r+\" 0 c\"),n.push(\"f\"),n.push(\"Q\"),e.stream=n.join(\"\\n\"),e},YesPushDown:function(t){var e=l(t),n=[],r=Y.internal.getWidth(t)<=Y.internal.getHeight(t)?Y.internal.getWidth(t)/4:Y.internal.getHeight(t)/4,i=(r=Number((.9*r).toFixed(5)),Number((2*r).toFixed(5))),o=Number((i*Y.internal.Bezier_C).toFixed(5)),a=Number((r*Y.internal.Bezier_C).toFixed(5));return n.push(\"0.749023 g\"),n.push(\"q\"),n.push(\"1 0 0 1 \"+s(Y.internal.getWidth(t)/2)+\" \"+s(Y.internal.getHeight(t)/2)+\" cm\"),n.push(i+\" 0 m\"),n.push(i+\" \"+o+\" \"+o+\" \"+i+\" 0 \"+i+\" c\"),n.push(\"-\"+o+\" \"+i+\" -\"+i+\" \"+o+\" -\"+i+\" 0 c\"),n.push(\"-\"+i+\" -\"+o+\" -\"+o+\" -\"+i+\" 0 -\"+i+\" c\"),n.push(o+\" -\"+i+\" \"+i+\" -\"+o+\" \"+i+\" 0 c\"),n.push(\"f\"),n.push(\"Q\"),n.push(\"0 g\"),n.push(\"q\"),n.push(\"1 0 0 1 \"+s(Y.internal.getWidth(t)/2)+\" \"+s(Y.internal.getHeight(t)/2)+\" cm\"),n.push(r+\" 0 m\"),n.push(r+\" \"+a+\" \"+a+\" \"+r+\" 0 \"+r+\" c\"),n.push(\"-\"+a+\" \"+r+\" -\"+r+\" \"+a+\" -\"+r+\" 0 c\"),n.push(\"-\"+r+\" -\"+a+\" -\"+a+\" -\"+r+\" 0 -\"+r+\" c\"),n.push(a+\" -\"+r+\" \"+r+\" -\"+a+\" \"+r+\" 0 c\"),n.push(\"f\"),n.push(\"Q\"),e.stream=n.join(\"\\n\"),e},OffPushDown:function(t){var e=l(t),n=[],r=Y.internal.getWidth(t)<=Y.internal.getHeight(t)?Y.internal.getWidth(t)/4:Y.internal.getHeight(t)/4,i=(r=Number((.9*r).toFixed(5)),Number((2*r).toFixed(5))),o=Number((i*Y.internal.Bezier_C).toFixed(5));return n.push(\"0.749023 g\"),n.push(\"q\"),n.push(\"1 0 0 1 \"+s(Y.internal.getWidth(t)/2)+\" \"+s(Y.internal.getHeight(t)/2)+\" cm\"),n.push(i+\" 0 m\"),n.push(i+\" \"+o+\" \"+o+\" \"+i+\" 0 \"+i+\" c\"),n.push(\"-\"+o+\" \"+i+\" -\"+i+\" \"+o+\" -\"+i+\" 0 c\"),n.push(\"-\"+i+\" -\"+o+\" -\"+o+\" -\"+i+\" 0 -\"+i+\" c\"),n.push(o+\" -\"+i+\" \"+i+\" -\"+o+\" \"+i+\" 0 c\"),n.push(\"f\"),n.push(\"Q\"),e.stream=n.join(\"\\n\"),e}},Cross:{createAppearanceStream:function(t){var e={D:{Off:Y.RadioButton.Cross.OffPushDown},N:{}};return e.N[t]=Y.RadioButton.Cross.YesNormal,e.D[t]=Y.RadioButton.Cross.YesPushDown,e},getCA:function(){return\"8\"},YesNormal:function(t){var e=l(t),n=[],r=Y.internal.calculateCross(t);return n.push(\"q\"),n.push(\"1 1 \"+_(Y.internal.getWidth(t)-2)+\" \"+_(Y.internal.getHeight(t)-2)+\" re\"),n.push(\"W\"),n.push(\"n\"),n.push(_(r.x1.x)+\" \"+_(r.x1.y)+\" m\"),n.push(_(r.x2.x)+\" \"+_(r.x2.y)+\" l\"),n.push(_(r.x4.x)+\" \"+_(r.x4.y)+\" m\"),n.push(_(r.x3.x)+\" \"+_(r.x3.y)+\" l\"),n.push(\"s\"),n.push(\"Q\"),e.stream=n.join(\"\\n\"),e},YesPushDown:function(t){var e=l(t),n=Y.internal.calculateCross(t),r=[];return r.push(\"0.749023 g\"),r.push(\"0 0 \"+_(Y.internal.getWidth(t))+\" \"+_(Y.internal.getHeight(t))+\" re\"),r.push(\"f\"),r.push(\"q\"),r.push(\"1 1 \"+_(Y.internal.getWidth(t)-2)+\" \"+_(Y.internal.getHeight(t)-2)+\" re\"),r.push(\"W\"),r.push(\"n\"),r.push(_(n.x1.x)+\" \"+_(n.x1.y)+\" m\"),r.push(_(n.x2.x)+\" \"+_(n.x2.y)+\" l\"),r.push(_(n.x4.x)+\" \"+_(n.x4.y)+\" m\"),r.push(_(n.x3.x)+\" \"+_(n.x3.y)+\" l\"),r.push(\"s\"),r.push(\"Q\"),e.stream=r.join(\"\\n\"),e},OffPushDown:function(t){var e=l(t),n=[];return n.push(\"0.749023 g\"),n.push(\"0 0 \"+_(Y.internal.getWidth(t))+\" \"+_(Y.internal.getHeight(t))+\" re\"),n.push(\"f\"),e.stream=n.join(\"\\n\"),e}}},createDefaultAppearanceStream:function(t){var e=A.internal.getFont(t.fontName,t.fontStyle).id,n=A.__private__.encodeColorString(t.color);return\"/\"+e+\" \"+t.fontSize+\" Tf \"+n}};Y.internal={Bezier_C:.551915024494,calculateCross:function(t){var e=Y.internal.getWidth(t),n=Y.internal.getHeight(t),r=Math.min(e,n);return{x1:{x:(e-r)/2,y:(n-r)/2+r},x2:{x:(e-r)/2+r,y:(n-r)/2},x3:{x:(e-r)/2,y:(n-r)/2},x4:{x:(e-r)/2+r,y:(n-r)/2+r}}}},Y.internal.getWidth=function(t){var e=0;return\"object\"===se(t)&&(e=v(t.Rect[2])),e},Y.internal.getHeight=function(t){var e=0;return\"object\"===se(t)&&(e=v(t.Rect[3])),e};var J=t.addField=function(t){if(k.call(this),!(t instanceof M))throw new Error(\"Invalid argument passed to jsPDF.addField.\");return function(t){A.internal.acroformPlugin.printedOut&&(A.internal.acroformPlugin.printedOut=!1,A.internal.acroformPlugin.acroFormDictionaryRoot=null),A.internal.acroformPlugin.acroFormDictionaryRoot||k.call(A),A.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(t)}.call(this,t),t.page=A.internal.getCurrentPageInfo().pageNumber,this};t.addButton=function(t){if(t instanceof D==!1)throw new Error(\"Invalid argument passed to jsPDF.addButton.\");return J.call(this,t)},t.addTextField=function(t){if(t instanceof V==!1)throw new Error(\"Invalid argument passed to jsPDF.addTextField.\");return J.call(this,t)},t.addChoiceField=function(t){if(t instanceof O==!1)throw new Error(\"Invalid argument passed to jsPDF.addChoiceField.\");return J.call(this,t)};\"object\"==se(e)&&void 0===e.ChoiceField&&void 0===e.ListBox&&void 0===e.ComboBox&&void 0===e.EditBox&&void 0===e.Button&&void 0===e.PushButton&&void 0===e.RadioButton&&void 0===e.CheckBox&&void 0===e.TextField&&void 0===e.PasswordField?(e.ChoiceField=O,e.ListBox=q,e.ComboBox=T,e.EditBox=R,e.Button=D,e.PushButton=U,e.RadioButton=z,e.CheckBox=W,e.TextField=V,e.PasswordField=G,e.AcroForm={Appearance:Y}):console.warn(\"AcroForm-Classes are not populated into global-namespace, because the class-Names exist already.\"),t.AcroFormChoiceField=O,t.AcroFormListBox=q,t.AcroFormComboBox=T,t.AcroFormEditBox=R,t.AcroFormButton=D,t.AcroFormPushButton=U,t.AcroFormRadioButton=z,t.AcroFormCheckBox=W,t.AcroFormTextField=V,t.AcroFormPasswordField=G,t.AcroFormAppearance=Y,t.AcroForm={ChoiceField:O,ListBox:q,ComboBox:T,EditBox:R,Button:D,PushButton:U,RadioButton:z,CheckBox:W,TextField:V,PasswordField:G,Appearance:Y}})((window.tmp=lt).API,\"undefined\"!=typeof window&&window||\"undefined\"!=typeof global&&global),\n/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n * 2013 Chris Dowling, https://github.com/gingerchris\n * 2013 Trinh Ho, https://github.com/ineedfat\n * 2013 Edwin Alejandro Perez, https://github.com/eaparango\n * 2013 Norah Smith, https://github.com/burnburnrocket\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 James Robb, https://github.com/jamesbrobb\n *\n * \n */\nfunction(x){var N=\"addImage_\",l={PNG:[[137,80,78,71]],TIFF:[[77,77,0,42],[73,73,42,0]],JPEG:[[255,216,255,224,void 0,void 0,74,70,73,70,0],[255,216,255,225,void 0,void 0,69,120,105,102,0,0]],JPEG2000:[[0,0,0,12,106,80,32,32]],GIF87a:[[71,73,70,56,55,97]],GIF89a:[[71,73,70,56,57,97]],BMP:[[66,77],[66,65],[67,73],[67,80],[73,67],[80,84]]},h=x.getImageFileTypeByImageData=function(t,e){var n,r;e=e||\"UNKNOWN\";var i,o,a,s=\"UNKNOWN\";for(a in x.isArrayBufferView(t)&&(t=x.arrayBufferToBinaryString(t)),l)for(i=l[a],n=0;n>\"}),\"trns\"in e&&e.trns.constructor==Array){for(var s=\"\",l=0,h=e.trns.length;l>18]+r[(258048&e)>>12]+r[(4032&e)>>6]+r[63&e];return 1==a?n+=r[(252&(e=i[s]))>>2]+r[(3&e)<<4]+\"==\":2==a&&(n+=r[(64512&(e=i[s]<<8|i[s+1]))>>10]+r[(1008&e)>>4]+r[(15&e)<<2]+\"=\"),n},x.createImageInfo=function(t,e,n,r,i,o,a,s,l,h,u,c,f){var p={alias:s,w:e,h:n,cs:r,bpc:i,i:a,data:t};return o&&(p.f=o),l&&(p.dp=l),h&&(p.trns=h),u&&(p.pal=u),c&&(p.smask=c),f&&(p.p=f),p},x.addImage=function(t,e,n,r,i,o,a,s,l){var h=\"\";if(\"string\"!=typeof e){var u=o;o=i,i=r,r=n,n=e,e=u}if(\"object\"===se(t)&&!_(t)&&\"imageData\"in t){var c=t;t=c.imageData,e=c.format||e||\"UNKNOWN\",n=c.x||n||0,r=c.y||r||0,i=c.w||i,o=c.h||o,a=c.alias||a,s=c.compression||s,l=c.rotation||c.angle||l}var f=this.internal.getFilters();if(void 0===s&&-1!==f.indexOf(\"FlateEncode\")&&(s=\"SLOW\"),\"string\"==typeof t&&(t=unescape(t)),isNaN(n)||isNaN(r))throw console.error(\"jsPDF.addImage: Invalid coordinates\",arguments),new Error(\"Invalid coordinates passed to jsPDF.addImage\");var p,d,g,m,y,v,w,b=function(){var t=this.internal.collections[N+\"images\"];return t||(this.internal.collections[N+\"images\"]=t={},this.internal.events.subscribe(\"putResources\",L),this.internal.events.subscribe(\"putXobjectDict\",A)),t}.call(this);if(!((p=P(t,b))||(_(t)&&(t=F(t,e)),(null==(w=a)||0===w.length)&&(a=\"string\"==typeof(v=t)?x.sHashCode(v):x.isArrayBufferView(v)?x.sHashCode(x.arrayBufferToBinaryString(v)):null),p=P(a,b)))){if(this.isString(t)&&(\"\"!==(h=this.convertStringToImageData(t))?t=h:void 0!==(h=x.loadFile(t))&&(t=h)),e=this.getImageFileTypeByImageData(t,e),!S(e))throw new Error(\"addImage does not support files of type '\"+e+\"', please ensure that a plugin for '\"+e+\"' support is added.\");if(this.supportsArrayBuffer()&&(t instanceof Uint8Array||(d=t,t=this.binaryStringToUint8Array(t))),!(p=this[\"process\"+e.toUpperCase()](t,(y=0,(m=b)&&(y=Object.keys?Object.keys(m).length:function(t){var e=0;for(var n in t)t.hasOwnProperty(n)&&e++;return e}(m)),y),a,((g=s)&&\"string\"==typeof g&&(g=g.toUpperCase()),g in x.image_compression?g:x.image_compression.NONE),d)))throw new Error(\"An unknown error occurred whilst processing the image\")}return function(t,e,n,r,i,o,a,s){var l=function(t,e,n){return t||e||(e=t=-96),t<0&&(t=-1*n.w*72/t/this.internal.scaleFactor),e<0&&(e=-1*n.h*72/e/this.internal.scaleFactor),0===t&&(t=e*n.w/n.h),0===e&&(e=t*n.h/n.w),[t,e]}.call(this,n,r,i),h=this.internal.getCoordinateString,u=this.internal.getVerticalCoordinateString;if(n=l[0],r=l[1],a[o]=i,s){s*=Math.PI/180;var c=Math.cos(s),f=Math.sin(s),p=function(t){return t.toFixed(4)},d=[p(c),p(f),p(-1*f),p(c),0,0,\"cm\"]}this.internal.write(\"q\"),s?(this.internal.write([1,\"0\",\"0\",1,h(t),u(e+r),\"cm\"].join(\" \")),this.internal.write(d.join(\" \")),this.internal.write([h(n),\"0\",\"0\",h(r),\"0\",\"0\",\"cm\"].join(\" \"))):this.internal.write([h(n),\"0\",\"0\",h(r),h(t),u(e+r),\"cm\"].join(\" \")),this.internal.write(\"/I\"+i.i+\" Do\"),this.internal.write(\"Q\")}.call(this,n,r,i,o,p,p.i,b,l),this},x.convertStringToImageData=function(t){var e,n=\"\";if(this.isString(t)){var r;e=null!==(r=this.extractImageFromDataUrl(t))?r.data:t;try{n=atob(e)}catch(t){throw x.validateStringAsBase64(e)?new Error(\"atob-Error in jsPDF.convertStringToImageData \"+t.message):new Error(\"Supplied Data is not a valid base64-String jsPDF.convertStringToImageData \")}}return n};var u=function(t,e){return t.subarray(e,e+5)};x.processJPEG=function(t,e,n,r,i,o){var a,s=this.decode.DCT_DECODE;if(!this.isString(t)&&!this.isArrayBuffer(t)&&!this.isArrayBufferView(t))return null;if(this.isString(t)&&(a=function(t){var e;if(\"JPEG\"!==h(t))throw new Error(\"getJpegSize requires a binary string jpeg file\");for(var n=256*t.charCodeAt(4)+t.charCodeAt(5),r=4,i=t.length;r>\",h.content=m;var f=h.objId+\" 0 R\";m=\"<>\",u.content=m,this.internal.write(h.objId,\"0 R\",u.objId,\"0 R\");break;case\"freetext\":var p=\"/Rect [\"+a(l.bounds.x)+\" \"+s(l.bounds.y)+\" \"+a(l.bounds.x+l.bounds.w)+\" \"+s(l.bounds.y+l.bounds.h)+\"] \",d=l.color||\"#000000\";m=\"<>\",this.internal.write(m);break;case\"link\":if(l.options.name){var g=this.annotations._nameMap[l.options.name];l.options.pageNumber=g.page,l.options.top=g.y}else l.options.top||(l.options.top=0);p=\"/Rect [\"+a(l.x)+\" \"+s(l.y)+\" \"+a(l.x+l.w)+\" \"+s(l.y+l.h)+\"] \";var m=\"\";if(l.options.url)m=\"<>\";else if(l.options.pageNumber)switch(m=\"<>\",this.internal.write(m))}}this.internal.write(\"]\")}}]),t.createAnnotation=function(t){var e=this.internal.getCurrentPageInfo();switch(t.type){case\"link\":this.link(t.bounds.x,t.bounds.y,t.bounds.w,t.bounds.h,t);break;case\"text\":case\"freetext\":e.pageContext.annotations.push(t)}},t.link=function(t,e,n,r,i){this.internal.getCurrentPageInfo().pageContext.annotations.push({x:t,y:e,w:n,h:r,options:i,type:\"link\"})},t.textWithLink=function(t,e,n,r){var i=this.getTextWidth(t),o=this.internal.getLineHeight()/this.internal.scaleFactor;return this.text(t,e,n),n+=.2*o,this.link(e,n-o,i,o,r),i},t.getTextWidth=function(t){var e=this.internal.getFontSize();return this.getStringUnitWidth(t)*e/this.internal.scaleFactor},\n/**\n * @license\n * Copyright (c) 2017 Aras Abbasi \n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var h={1569:[65152],1570:[65153,65154],1571:[65155,65156],1572:[65157,65158],1573:[65159,65160],1574:[65161,65162,65163,65164],1575:[65165,65166],1576:[65167,65168,65169,65170],1577:[65171,65172],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194],1584:[65195,65196],1585:[65197,65198],1586:[65199,65200],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262],1609:[65263,65264,64488,64489],1610:[65265,65266,65267,65268],1649:[64336,64337],1655:[64477],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393],1676:[64388,64389],1677:[64386,64387],1678:[64390,64391],1681:[64396,64397],1688:[64394,64395],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421],1729:[64422,64423,64424,64425],1733:[64480,64481],1734:[64473,64474],1735:[64471,64472],1736:[64475,64476],1737:[64482,64483],1739:[64478,64479],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431],1747:[64432,64433]},a={65247:{65154:65269,65156:65271,65160:65273,65166:65275},65248:{65154:65270,65156:65272,65160:65274,65166:65276},65165:{65247:{65248:{65258:65010}}},1617:{1612:64606,1613:64607,1614:64608,1615:64609,1616:64610}},e={1612:64606,1613:64607,1614:64608,1615:64609,1616:64610},n=[1570,1571,1573,1575];t.__arabicParser__={};var r=t.__arabicParser__.isInArabicSubstitutionA=function(t){return void 0!==h[t.charCodeAt(0)]},u=t.__arabicParser__.isArabicLetter=function(t){return\"string\"==typeof t&&/^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(t)},i=t.__arabicParser__.isArabicEndLetter=function(t){return u(t)&&r(t)&&h[t.charCodeAt(0)].length<=2},o=t.__arabicParser__.isArabicAlfLetter=function(t){return u(t)&&0<=n.indexOf(t.charCodeAt(0))},s=(t.__arabicParser__.arabicLetterHasIsolatedForm=function(t){return u(t)&&r(t)&&1<=h[t.charCodeAt(0)].length},t.__arabicParser__.arabicLetterHasFinalForm=function(t){return u(t)&&r(t)&&2<=h[t.charCodeAt(0)].length}),l=(t.__arabicParser__.arabicLetterHasInitialForm=function(t){return u(t)&&r(t)&&3<=h[t.charCodeAt(0)].length},t.__arabicParser__.arabicLetterHasMedialForm=function(t){return u(t)&&r(t)&&4==h[t.charCodeAt(0)].length}),c=t.__arabicParser__.resolveLigatures=function(t){var e=0,n=a,r=0,i=\"\",o=0;for(e=0;e>\"),this.internal.out(\"endobj\")}),this.internal.events.subscribe(\"putCatalog\",function(){this.internal.out(\"/OpenAction \"+e+\" 0 R\")})}return this},\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\ne=lt.API,(n=function(){var e=void 0;Object.defineProperty(this,\"pdf\",{get:function(){return e},set:function(t){e=t}});var n=150;Object.defineProperty(this,\"width\",{get:function(){return n},set:function(t){n=isNaN(t)||!1===Number.isInteger(t)||t<0?150:t,this.getContext(\"2d\").pageWrapXEnabled&&(this.getContext(\"2d\").pageWrapX=n+1)}});var r=300;Object.defineProperty(this,\"height\",{get:function(){return r},set:function(t){r=isNaN(t)||!1===Number.isInteger(t)||t<0?300:t,this.getContext(\"2d\").pageWrapYEnabled&&(this.getContext(\"2d\").pageWrapY=r+1)}});var i=[];Object.defineProperty(this,\"childNodes\",{get:function(){return i},set:function(t){i=t}});var o={};Object.defineProperty(this,\"style\",{get:function(){return o},set:function(t){o=t}}),Object.defineProperty(this,\"parentNode\",{get:function(){return!1}})}).prototype.getContext=function(t,e){var n;if(\"2d\"!==(t=t||\"2d\"))return null;for(n in e)this.pdf.context2d.hasOwnProperty(n)&&(this.pdf.context2d[n]=e[n]);return(this.pdf.context2d._canvas=this).pdf.context2d},n.prototype.toDataURL=function(){throw new Error(\"toDataURL is not implemented.\")},e.events.push([\"initialized\",function(){this.canvas=new n,this.canvas.pdf=this}]),\n/** \n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Hall, james@parall.ax\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * \n * ====================================================================\n */\n_=lt.API,F={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0},P=1,p=function(t,e,n,r,i){F={x:t,y:e,w:n,h:r,ln:i}},d=function(){return F},k={left:0,top:0,bottom:0},_.setHeaderFunction=function(t){l=t},_.getTextDimensions=function(t,e){var n=this.table_font_size||this.internal.getFontSize(),r=(this.internal.getFont().fontStyle,(e=e||{}).scaleFactor||this.internal.scaleFactor),i=0,o=0,a=0;if(\"string\"==typeof t)0!=(i=this.getStringUnitWidth(t)*n)&&(o=1);else{if(\"[object Array]\"!==Object.prototype.toString.call(t))throw new Error(\"getTextDimensions expects text-parameter to be of type String or an Array of Strings.\");for(var s=0;s=this.internal.pageSize.getHeight()-h.bottom&&(this.cellAddPage(),l=!0,this.printHeaders&&this.tableHeaderRow&&this.printHeaderRow(o,!0)),e=d().y+d().h,l&&(e=23)}if(void 0!==i[0])if(this.printingHeaderRow?this.rect(t,e,n,r,\"FD\"):this.rect(t,e,n,r),\"right\"===a){i instanceof Array||(i=[i]);for(var u=0;u=2*Math.PI&&(r=0,i=2*Math.PI),this.path.push({type:\"arc\",x:t,y:e,radius:n,startAngle:r,endAngle:i,counterclockwise:o})},n.prototype.arcTo=function(t,e,n,r,i){throw new Error(\"arcTo not implemented.\")},n.prototype.rect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error(\"jsPDF.context2d.rect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");this.moveTo(t,e),this.lineTo(t+n,e),this.lineTo(t+n,e+r),this.lineTo(t,e+r),this.lineTo(t,e),this.lineTo(t+n,e),this.lineTo(t,e)},n.prototype.fillRect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error(\"jsPDF.context2d.fillRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");if(!N.call(this)){var i={};\"butt\"!==this.lineCap&&(i.lineCap=this.lineCap,this.lineCap=\"butt\"),\"miter\"!==this.lineJoin&&(i.lineJoin=this.lineJoin,this.lineJoin=\"miter\"),this.beginPath(),this.rect(t,e,n,r),this.fill(),i.hasOwnProperty(\"lineCap\")&&(this.lineCap=i.lineCap),i.hasOwnProperty(\"lineJoin\")&&(this.lineJoin=i.lineJoin)}},n.prototype.strokeRect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");L.call(this)||(this.beginPath(),this.rect(t,e,n,r),this.stroke())},n.prototype.clearRect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error(\"jsPDF.context2d.clearRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");this.ignoreClearRect||(this.fillStyle=\"#ffffff\",this.fillRect(t,e,n,r))},n.prototype.save=function(t){t=\"boolean\"!=typeof t||t;for(var e=this.pdf.internal.getCurrentPageInfo().pageNumber,n=0;n\"},s=function(t){var r,e,n,i,o,a=String,s=\"length\",l=\"charCodeAt\",h=\"slice\",u=\"replace\";for(t[h](-2),t=t[h](0,-2)[u](/\\s/g,\"\")[u](\"z\",\"!!!!!\"),n=[],i=0,o=(t+=r=\"uuuuu\"[h](t[s]%5||5))[s];i>24,255&e>>16,255&e>>8,255&e);return function(t,e){for(var n=r[s];0\"},u=function(t){var e=new RegExp(/^([0-9A-Fa-f]{2})+$/);if(-1!==(t=t.replace(/\\s/g,\"\")).indexOf(\">\")&&(t=t.substr(0,t.indexOf(\">\"))),t.length%2&&(t+=\"0\"),!1===e.test(t))return\"\";for(var n=\"\",r=0;r>8&255,n>>16&255,n>>24&255]),t.length+2),t=String.fromCharCode.apply(null,i)},a.processDataByFilters=function(t,e){var n=0,r=t||\"\",i=[];for(\"string\"==typeof(e=e||[])&&(e=[e]),n=0;n>\"),this.internal.out(\"endobj\"),w=this.internal.newObject(),this.internal.out(\"<<\"),this.internal.out(\"/S /JavaScript\"),this.internal.out(\"/JS (\"+b+\")\"),this.internal.out(\">>\"),this.internal.out(\"endobj\")}),this.internal.events.subscribe(\"putCatalog\",function(){void 0!==v&&void 0!==w&&this.internal.out(\"/Names <>\")}),this},(\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nx=lt.API).events.push([\"postPutResources\",function(){var t=this,e=/^(\\d+) 0 obj$/;if(0> endobj\")}var c=t.internal.newObject();for(t.internal.write(\"<< /Names [ \"),r=0;r>\",\"endobj\"),t.internal.newObject(),t.internal.write(\"<< /Dests \"+c+\" 0 R\"),t.internal.write(\">>\",\"endobj\")}}]),x.events.push([\"putCatalog\",function(){0> \\r\\nendobj\\r\\n\"},a.outline.count_r=function(t,e){for(var n=0;n>>24&255,f[c++]=s>>>16&255,f[c++]=s>>>8&255,f[c++]=255&s,I.arrayBufferToBinaryString(f)},N=function(t,e){var n=Math.LOG2E*Math.log(32768)-8<<4|8,r=n<<8;return r|=Math.min(3,(e-1&255)>>1)<<6,r|=0,[n,255&(r+=31-r%31)]},L=function(t,e){for(var n,r=1,i=0,o=t.length,a=0;0>>0},A=function(t,e,n,r){for(var i,o,a,s=t.length/e,l=new Uint8Array(t.length+s),h=T(),u=0;u>>1)&255;return o},O=function(t,e,n){var r,i,o,a,s=[],l=0,h=t.length;for(s[0]=4;l>>d&255,d+=o.bits;y[w]=x>>>d&255}if(16===o.bits){g=(_=new Uint32Array(o.decodePixels().buffer)).length,m=new Uint8Array(g*(32/o.pixelBitlength)*o.colors),y=new Uint8Array(g*(32/o.pixelBitlength));for(var x,N=1>>0&255,N&&(m[b++]=x>>>16&255,x=_[w++],m[b++]=x>>>0&255),y[L++]=x>>>16&255;p=8}r!==I.image_compression.NONE&&C()?(t=B(m,o.width*o.colors,o.colors,r),u=B(y,o.width,1,r)):(t=m,u=y,f=null)}if(3===o.colorType&&(c=this.color_spaces.INDEXED,h=o.palette,o.transparency.indexed)){var A=o.transparency.indexed,S=0;for(w=0,g=A.length;wr&&(i.push(t.slice(l,o)),s=0,l=o),s+=e[o],o++;return l!==o&&i.push(t.slice(l,o)),i},J=function(t,e,n){n||(n={});var r,i,o,a,s,l,h=[],u=[h],c=n.textIndent||0,f=0,p=0,d=t.split(\" \"),g=W.apply(this,[\" \",n])[0];if(l=-1===n.lineIndent?d[0].length+2:n.lineIndent||0){var m=Array(l).join(\" \"),y=[];d.map(function(t){1<(t=t.split(/\\s*\\n/)).length?y=y.concat(t.map(function(t,e){return(e&&t.length?\"\\n\":\"\")+t})):y.push(t[0])}),d=y,l=G.apply(this,[m,n])}for(o=0,a=d.length;o>\")}),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=n,this},\n/** ==================================================================== \n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n * \n * \n * ====================================================================\n */\nnt=lt.API,ot=it=rt=\"\",nt.addMetadata=function(t,e){return it=e||\"http://jspdf.default.namespaceuri/\",rt=t,this.internal.events.subscribe(\"postPutResources\",function(){if(rt){var t='',e=unescape(encodeURIComponent('')),n=unescape(encodeURIComponent(t)),r=unescape(encodeURIComponent(rt)),i=unescape(encodeURIComponent(\"\")),o=unescape(encodeURIComponent(\"\")),a=n.length+r.length+i.length+e.length+o.length;ot=this.internal.newObject(),this.internal.write(\"<< /Type /Metadata /Subtype /XML /Length \"+a+\" >>\"),this.internal.write(\"stream\"),this.internal.write(e+n+r+i+o),this.internal.write(\"endstream\"),this.internal.write(\"endobj\")}else ot=\"\"}),this.internal.events.subscribe(\"putCatalog\",function(){ot&&this.internal.write(\"/Metadata \"+ot+\" 0 R\")}),this},function(f,t){var e=f.API;var m=e.pdfEscape16=function(t,e){for(var n,r=e.metadata.Unicode.widths,i=[\"\",\"0\",\"00\",\"000\",\"0000\"],o=[\"\"],a=0,s=t.length;a> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange\",r=[],a=0,s=(n=Object.keys(t).sort(function(t,e){return t-e})).length;a<\"+i+\">\");return r.length&&(o+=\"\\n\"+r.length+\" beginbfchar\\n\"+r.join(\"\\n\")+\"\\nendbfchar\\n\"),o+=\"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\"};e.events.push([\"putFont\",function(t){!function(t,e,n,r){if(t.metadata instanceof f.API.TTFFont&&\"Identity-H\"===t.encoding){for(var i=t.metadata.Unicode.widths,o=t.metadata.subset.encode(t.metadata.glyIdsUsed,1),a=\"\",s=0;s>\"),e(\"endobj\");var c=n();e(\"<<\"),e(\"/Type /Font\"),e(\"/BaseFont /\"+t.fontName),e(\"/FontDescriptor \"+u+\" 0 R\"),e(\"/W \"+f.API.PDFObject.convert(i)),e(\"/CIDToGIDMap /Identity\"),e(\"/DW 1000\"),e(\"/Subtype /CIDFontType2\"),e(\"/CIDSystemInfo\"),e(\"<<\"),e(\"/Supplement 0\"),e(\"/Registry (Adobe)\"),e(\"/Ordering (\"+t.encoding+\")\"),e(\">>\"),e(\">>\"),e(\"endobj\"),t.objectNumber=n(),e(\"<<\"),e(\"/Type /Font\"),e(\"/Subtype /Type0\"),e(\"/ToUnicode \"+h+\" 0 R\"),e(\"/BaseFont /\"+t.fontName),e(\"/Encoding /\"+t.encoding),e(\"/DescendantFonts [\"+c+\" 0 R]\"),e(\">>\"),e(\"endobj\"),t.isAlreadyPutted=!0}}(t.font,t.out,t.newObject,t.putStream)}]);e.events.push([\"putFont\",function(t){!function(t,e,n,r){if(t.metadata instanceof f.API.TTFFont&&\"WinAnsiEncoding\"===t.encoding){t.metadata.Unicode.widths;for(var i=t.metadata.rawData,o=\"\",a=0;a>\"),e(\"endobj\"),t.objectNumber=n(),a=0;a>\"),e(\"endobj\"),t.isAlreadyPutted=!0}}(t.font,t.out,t.newObject,t.putStream)}]);var h=function(t){var e,n,r=t.text||\"\",i=t.x,o=t.y,a=t.options||{},s=t.mutex||{},l=s.pdfEscape,h=s.activeFontKey,u=s.fonts,c=(s.activeFontSize,\"\"),f=0,p=\"\",d=u[n=h].encoding;if(\"Identity-H\"!==u[n].encoding)return{text:r,x:i,y:o,options:a,mutex:s};for(p=r,n=h,\"[object Array]\"===Object.prototype.toString.call(r)&&(p=r[0]),f=0;fw-h.top-h.bottom&&s.pagesplit){var p=function(t,e,n,r,i){var o=document.createElement(\"canvas\");o.height=i,o.width=r;var a=o.getContext(\"2d\");return a.mozImageSmoothingEnabled=!1,a.webkitImageSmoothingEnabled=!1,a.msImageSmoothingEnabled=!1,a.imageSmoothingEnabled=!1,a.fillStyle=s.backgroundColor||\"#ffffff\",a.fillRect(0,0,r,i),a.drawImage(t,e,n,r,i,0,0,r,i),o},n=function(){for(var t,e,n=0,r=0,i={},o=!1;;){var a;if(r=0,i.top=0!==n?h.top:g,i.left=0!==n?h.left:d,o=(v-h.left-h.right)*y=l.width)break;this.addPage()}else s=[a=p(l,0,n,t,e),i.left,i.top,a.width/y,a.height/y,c,null,f],this.addImage.apply(this,s);if((n+=e)>=l.height)break;this.addPage()}m(u,n,null,s)}.bind(this);if(\"CANVAS\"===l.nodeName){var r=new Image;r.onload=n,r.src=l.toDataURL(\"image/png\"),l=r}else n()}else{var i=Math.random().toString(35),o=[l,d,g,u,e,c,i,f];this.addImage.apply(this,o),m(u,e,i,o)}}.bind(this),\"undefined\"!=typeof html2canvas&&!s.rstz)return html2canvas(t,s);if(\"undefined\"==typeof rasterizeHTML)return null;var n=\"drawDocument\";return\"string\"==typeof t&&(n=/^http/.test(t)?\"drawURL\":\"drawHTML\"),s.width=s.width||v*y,rasterizeHTML[n](t,void 0,s).then(function(t){s.onrendered(t.image)},function(t){m(null,t)})},\n/**\n * jsPDF fromHTML plugin. BETA stage. API subject to change. Needs browser\n * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 Daniel Husar, https://github.com/danielhusar\n * 2014 Wolfgang Gassler, https://github.com/woolfg\n * 2014 Steven Spungin, https://github.com/flamenco\n *\n * @license\n * \n * ====================================================================\n */\nfunction(t){var P,k,i,a,s,l,h,u,I,w,f,c,p,n,C,B,d,g,m,j;P=function(){return function(t){return e.prototype=t,new e};function e(){}}(),w=function(t){var e,n,r,i,o,a,s;for(n=0,r=t.length,e=void 0,a=i=!1;!i&&n!==r;)(e=t[n]=t[n].trimLeft())&&(i=!0),n++;for(n=r-1;r&&!a&&-1!==n;)(e=t[n]=t[n].trimRight())&&(a=!0),n--;for(o=/\\s+$/g,s=!0,n=0;n!==r;)\"\\u2028\"!=t[n]&&(e=t[n].replace(/\\s+/g,\" \"),s&&(e=e.trimLeft()),e&&(s=o.test(e)),t[n]=e),n++;return t},c=function(t){var e,n,r;for(e=void 0,n=(r=t.split(\",\")).shift();!e&&n;)e=i[n.trim().toLowerCase()],n=r.shift();return e},p=function(t){var e;return-1<(t=\"auto\"===t?\"0px\":t).indexOf(\"em\")&&!isNaN(Number(t.replace(\"em\",\"\")))&&(t=18.719*Number(t.replace(\"em\",\"\"))+\"px\"),-1i.pdf.margins_doc.top&&(i.pdf.addPage(),i.y=i.pdf.margins_doc.top,i.executeWatchFunctions(n));var b=I(n),x=i.x,N=12/i.pdf.internal.scaleFactor,L=(b[\"margin-left\"]+b[\"padding-left\"])*N,A=(b[\"margin-right\"]+b[\"padding-right\"])*N,S=(b[\"margin-top\"]+b[\"padding-top\"])*N,_=(b[\"margin-bottom\"]+b[\"padding-bottom\"])*N;void 0!==b.float&&\"right\"===b.float?x+=i.settings.width-n.width-A:x+=L,i.pdf.addImage(v,x,i.y+S,n.width,n.height),v=void 0,\"right\"===b.float||\"left\"===b.float?(i.watchFunctions.push(function(t,e,n,r){return i.y>=e?(i.x+=t,i.settings.width+=n,!0):!!(r&&1===r.nodeType&&!E[r.nodeName]&&i.x+r.width>i.pdf.margins_doc.left+i.pdf.margins_doc.width)&&(i.x+=t,i.y=e,i.settings.width+=n,!0)}.bind(this,\"left\"===b.float?-n.width-L-A:0,i.y+n.height+S+_,n.width)),i.watchFunctions.push(function(t,e,n){return!(i.y]*?>/gi,\"\"),h=\"jsPDFhtmlText\"+Date.now().toString()+(1e3*Math.random()).toFixed(0),(l=document.createElement(\"div\")).style.cssText=\"position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;\",l.innerHTML='